@cuemath/leap 3.2.17-mb → 3.2.17-node-beta-0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/line-icons/icons/cue-board-filled.js +33 -0
- package/dist/assets/line-icons/icons/cue-board-filled.js.map +1 -0
- package/dist/assets/line-icons/icons/cue-board.js +23 -0
- package/dist/assets/line-icons/icons/cue-board.js.map +1 -0
- package/dist/assets/line-icons/icons/hint-fill.js +35 -0
- package/dist/assets/line-icons/icons/hint-fill.js.map +1 -0
- package/dist/assets/line-icons/icons/screen-grab-filled.js +35 -0
- package/dist/assets/line-icons/icons/screen-grab-filled.js.map +1 -0
- package/dist/assets/line-icons/icons/screen-grab.js +23 -0
- package/dist/assets/line-icons/icons/screen-grab.js.map +1 -0
- package/dist/assets/line-icons/icons/sticker-filled.js +64 -0
- package/dist/assets/line-icons/icons/sticker-filled.js.map +1 -0
- package/dist/assets/line-icons/icons/sticker.js +46 -0
- package/dist/assets/line-icons/icons/sticker.js.map +1 -0
- package/dist/assets/lottie/lottie.js +1 -1
- package/dist/assets/lottie/lottie.js.map +1 -1
- package/dist/features/auth/account-selector/account-selector.js +26 -25
- package/dist/features/auth/account-selector/account-selector.js.map +1 -1
- package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js +15 -14
- package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js.map +1 -1
- package/dist/features/auth/comps/user-list/user-item/user-item.js +30 -31
- package/dist/features/auth/comps/user-list/user-item/user-item.js.map +1 -1
- package/dist/features/auth/comps/user-list/user-list.js +35 -34
- package/dist/features/auth/comps/user-list/user-list.js.map +1 -1
- package/dist/features/auth/forgot-password/forgot-password-styled.js +14 -15
- package/dist/features/auth/forgot-password/forgot-password-styled.js.map +1 -1
- package/dist/features/auth/login/identifier-otp-form/identifier-otp-form-styled.js +6 -7
- package/dist/features/auth/login/identifier-otp-form/identifier-otp-form-styled.js.map +1 -1
- package/dist/features/auth/login/login-styled.js +8 -9
- package/dist/features/auth/login/login-styled.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/node-card-tags.js +19 -12
- package/dist/features/chapters-v2/comps/node-card/node-card-tags.js.map +1 -1
- package/dist/features/chapters-v2/constants/block-constants.js +3 -2
- package/dist/features/chapters-v2/constants/block-constants.js.map +1 -1
- package/dist/features/chapters-v2/utils/index.js +6 -4
- package/dist/features/chapters-v2/utils/index.js.map +1 -1
- package/dist/features/chapters-v2/utils/node-card-utils.js +11 -7
- package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -1
- package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card-styled.js +4 -4
- package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card-styled.js.map +1 -1
- package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js +85 -85
- package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js.map +1 -1
- package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js +121 -98
- package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js.map +1 -1
- package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey.js +29 -28
- package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey.js.map +1 -1
- package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js +43 -42
- package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js.map +1 -1
- package/dist/features/circle-games/games/tutorial/tutorial.js +43 -35
- package/dist/features/circle-games/games/tutorial/tutorial.js.map +1 -1
- package/dist/features/circle-games/sign-up/comp/grade-input/grade-input-styled.js +2 -2
- package/dist/features/circle-games/sign-up/comp/grade-input/grade-input-styled.js.map +1 -1
- package/dist/features/circle-games/sign-up/comp/grade-input/grade-input.js +1 -1
- package/dist/features/circle-games/sign-up/comp/grade-input/grade-input.js.map +1 -1
- package/dist/features/circle-games/sign-up/comp/username-input/username-input.js +26 -24
- package/dist/features/circle-games/sign-up/comp/username-input/username-input.js.map +1 -1
- package/dist/features/circle-games/sign-up/constants.js +3 -1
- package/dist/features/circle-games/sign-up/constants.js.map +1 -1
- package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js +42 -42
- package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js.map +1 -1
- package/dist/features/journey/comps/coachmark/coachmark.js +29 -27
- package/dist/features/journey/comps/coachmark/coachmark.js.map +1 -1
- package/dist/features/journey/journey-id/journey-id-student.js +2 -2
- package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
- package/dist/features/journey/use-journey/journey-context-provider.js +73 -72
- package/dist/features/journey/use-journey/journey-context-provider.js.map +1 -1
- package/dist/features/journey/use-journey/journey-styled.js +6 -4
- package/dist/features/journey/use-journey/journey-styled.js.map +1 -1
- package/dist/features/puzzles/app/puzzle-app-styled.js +81 -0
- package/dist/features/puzzles/app/puzzle-app-styled.js.map +1 -0
- package/dist/features/puzzles/app/puzzle-app-view.js +120 -0
- package/dist/features/puzzles/app/puzzle-app-view.js.map +1 -0
- package/dist/features/puzzles/app/puzzle-app.js +62 -0
- package/dist/features/puzzles/app/puzzle-app.js.map +1 -0
- package/dist/features/sheets/constants/sheet.js +2 -1
- package/dist/features/sheets/constants/sheet.js.map +1 -1
- package/dist/features/ui/arrow-tooltip/arrow-tooltip-constants.js +6 -0
- package/dist/features/ui/arrow-tooltip/arrow-tooltip-constants.js.map +1 -0
- package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js +12 -60
- package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js.map +1 -1
- package/dist/features/ui/arrow-tooltip/arrow-tooltip.js +72 -77
- package/dist/features/ui/arrow-tooltip/arrow-tooltip.js.map +1 -1
- package/dist/features/ui/arrow-tooltip/comps/tooltip-body-styled.js +63 -0
- package/dist/features/ui/arrow-tooltip/comps/tooltip-body-styled.js.map +1 -0
- package/dist/features/ui/arrow-tooltip/comps/tooltip-body.js +21 -0
- package/dist/features/ui/arrow-tooltip/comps/tooltip-body.js.map +1 -0
- package/dist/features/ui/error/error.js +65 -27
- package/dist/features/ui/error/error.js.map +1 -1
- package/dist/features/ui/lottie-animation/lottie-animation.js +25 -29
- package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
- package/dist/features/ui/modals/modal-styled.js +34 -58
- package/dist/features/ui/modals/modal-styled.js.map +1 -1
- package/dist/features/ui/modals/modal.js +40 -14
- package/dist/features/ui/modals/modal.js.map +1 -1
- package/dist/features/ui/nudge/nudge-styled.js +14 -7
- package/dist/features/ui/nudge/nudge-styled.js.map +1 -1
- package/dist/features/ui/nudge/nudge.js +13 -12
- package/dist/features/ui/nudge/nudge.js.map +1 -1
- package/dist/features/{stickers/sticker-selector/sticker-selector-styles.js → ui/sticker-grid/sticker-grid-styles.js} +3 -4
- package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +1 -0
- package/dist/features/ui/sticker-grid/sticker-grid.js +24 -0
- package/dist/features/ui/sticker-grid/sticker-grid.js.map +1 -0
- package/dist/features/ui/sticker-grid/sticker.js +57 -0
- package/dist/features/ui/sticker-grid/sticker.js.map +1 -0
- package/dist/features/ui/stickers/constants.js +6 -0
- package/dist/features/ui/stickers/constants.js.map +1 -0
- package/dist/features/{stickers/stickers-effects/effects.js → ui/stickers/stickers-effects.js} +6 -6
- package/dist/features/ui/stickers/stickers-effects.js.map +1 -0
- package/dist/features/{stickers/stickers-effects/stickers-effects-styled.js → ui/stickers/stickers-styled.js} +2 -2
- package/dist/features/ui/stickers/stickers-styled.js.map +1 -0
- package/dist/features/{stickers/stickers-effects/stickers-effects-utils.js → ui/stickers/stickers-utils.js} +6 -6
- package/dist/features/ui/stickers/stickers-utils.js.map +1 -0
- package/dist/features/ui/stickers/stickers.js +40 -0
- package/dist/features/ui/stickers/stickers.js.map +1 -0
- package/dist/features/ui/streak-icon/streak-icon-styled.js +13 -13
- package/dist/features/ui/streak-icon/streak-icon-styled.js.map +1 -1
- package/dist/features/ui/streak-icon/streak-icon.js +17 -15
- package/dist/features/ui/streak-icon/streak-icon.js.map +1 -1
- package/dist/features/ui/text/text.js +40 -36
- package/dist/features/ui/text/text.js.map +1 -1
- package/dist/features/ui/theme/constants.js +4 -2
- package/dist/features/ui/theme/constants.js.map +1 -1
- package/dist/features/ui/theme/get-device.js +3 -3
- package/dist/features/ui/theme/get-device.js.map +1 -1
- package/dist/features/worksheet/worksheet/constants.js +12 -13
- package/dist/features/worksheet/worksheet/constants.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +24 -24
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +246 -260
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-styled.js +37 -28
- package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +166 -164
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/index.d.ts +68 -53
- package/dist/index.js +547 -533
- package/dist/index.js.map +1 -1
- package/dist/static/nudge-tap.0591aef4.json +1 -0
- package/package.json +1 -1
- package/dist/features/hooks/use-viewport/use-viewport.js +0 -22
- package/dist/features/hooks/use-viewport/use-viewport.js.map +0 -1
- package/dist/features/stickers/sticker-data.js +0 -234
- package/dist/features/stickers/sticker-data.js.map +0 -1
- package/dist/features/stickers/sticker-selector/sticker-selector-styles.js.map +0 -1
- package/dist/features/stickers/sticker-selector/sticker-selector.js +0 -25
- package/dist/features/stickers/sticker-selector/sticker-selector.js.map +0 -1
- package/dist/features/stickers/sticker-selector/sticker.js +0 -57
- package/dist/features/stickers/sticker-selector/sticker.js.map +0 -1
- package/dist/features/stickers/stickers-effects/effects.js.map +0 -1
- package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +0 -1
- package/dist/features/stickers/stickers-effects/stickers-effects-utils.js.map +0 -1
- package/dist/features/stickers/stickers-effects/stickers-effects.js +0 -39
- package/dist/features/stickers/stickers-effects/stickers-effects.js.map +0 -1
- 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:
|
65
|
+
export declare const ArrowTooltip: NamedExoticComponent<IArrowTooltipProps>;
|
66
66
|
|
67
67
|
export declare const AUTH_TABS: IAuthTab[];
|
68
68
|
|
@@ -130,7 +130,8 @@ declare enum BLOCK_TYPE {
|
|
130
130
|
PUZZLE_CARDS = "PUZZLE_CARDS",
|
131
131
|
SAT_MOCK_TEST = "SAT_MOCK_TEST",
|
132
132
|
STEP_UP = "STEP_UP",
|
133
|
-
CHALLENGE_ARENA = "CHALLENGE_ARENA"
|
133
|
+
CHALLENGE_ARENA = "CHALLENGE_ARENA",
|
134
|
+
DOWNLOADS = "DOWNLOADS"
|
134
135
|
}
|
135
136
|
|
136
137
|
declare const BLOCK_TYPE_2: {
|
@@ -311,6 +312,10 @@ declare const COURSE_STREAMS: {
|
|
311
312
|
|
312
313
|
export declare const CrossIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
313
314
|
|
315
|
+
export declare const CueBoardFilledIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
316
|
+
|
317
|
+
export declare const CueBoardIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
318
|
+
|
314
319
|
export declare const CueCanvas: React_2.FC<ICueCanvas>;
|
315
320
|
|
316
321
|
export declare const CueCanvasController: React_2.FC<IToolbarProps>;
|
@@ -351,6 +356,15 @@ export declare enum EClassTimeAlertLevel {
|
|
351
356
|
FIFTEEN_MIN = "15min"
|
352
357
|
}
|
353
358
|
|
359
|
+
export declare enum EDeviceType {
|
360
|
+
MOBILE = 0,
|
361
|
+
TABLET = 1,
|
362
|
+
SMALL_DESKTOP = 2,
|
363
|
+
DESKTOP = 3,
|
364
|
+
LARGE_DEVICE = 4,
|
365
|
+
XLARGE_DEVICE = 5
|
366
|
+
}
|
367
|
+
|
354
368
|
export declare const Edit2Icon: React.FC<React.SVGProps<SVGSVGElement>>;
|
355
369
|
|
356
370
|
export declare const EditIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
@@ -517,7 +531,7 @@ declare const getCheckboxConfig: IGetCheckboxConfig;
|
|
517
531
|
|
518
532
|
declare function getColors(): TColorsMap;
|
519
533
|
|
520
|
-
declare const getDevice: (width: number) =>
|
534
|
+
declare const getDevice: (width: number) => EDeviceType;
|
521
535
|
|
522
536
|
declare const getInputConfig: IGetInputConfig;
|
523
537
|
|
@@ -564,6 +578,8 @@ export declare const HelpIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
|
|
564
578
|
|
565
579
|
export declare const HighlighterIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
566
580
|
|
581
|
+
export declare const HintFillIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
582
|
+
|
567
583
|
export declare const HomeIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
|
568
584
|
|
569
585
|
export declare const HomeworkCardList: React_2.NamedExoticComponent<HWCardListProps>;
|
@@ -662,6 +678,7 @@ export declare interface IArrowTooltipProps {
|
|
662
678
|
widthX?: number;
|
663
679
|
zIndex?: number;
|
664
680
|
parentWidth?: number | string;
|
681
|
+
isBlocking?: boolean;
|
665
682
|
}
|
666
683
|
|
667
684
|
declare interface IAttempt {
|
@@ -1367,6 +1384,7 @@ declare interface IErrorProps {
|
|
1367
1384
|
theme?: 'light' | 'dark';
|
1368
1385
|
title?: string;
|
1369
1386
|
description?: string;
|
1387
|
+
size?: 'compact' | 'full';
|
1370
1388
|
}
|
1371
1389
|
|
1372
1390
|
declare interface IExpandableHeaderProps {
|
@@ -1669,8 +1687,9 @@ export declare interface IJourneyContext {
|
|
1669
1687
|
* @param scrollableContainerRef - Optional ref to a journey which has a scrollable container, it will make the entire page
|
1670
1688
|
* uninteractable by adding an overlay - Required since we cannot determine the height of the scrollable container because
|
1671
1689
|
* provider is at root level and from there we cannot access the scrollable container's height.
|
1690
|
+
* @param isBlocking - If `true`, the journey will block user interaction with the page until completed. True by default.
|
1672
1691
|
*/
|
1673
|
-
setJourney: (id: TJourneyId, coachmark: TCoachmarkJourneyProps[], scrollableContainerRef?: RefObject<HTMLDivElement | null
|
1692
|
+
setJourney: (id: TJourneyId, coachmark: TCoachmarkJourneyProps[], scrollableContainerRef?: RefObject<HTMLDivElement | null>, isBlocking?: boolean) => void;
|
1674
1693
|
/**
|
1675
1694
|
* Clears the current journey, removing all coachmarks.
|
1676
1695
|
* Should be called inside useEffect to ensure cleanup.
|
@@ -2441,7 +2460,7 @@ export declare interface IModal {
|
|
2441
2460
|
/** Content to display inside the modal */
|
2442
2461
|
element: ReactElement;
|
2443
2462
|
/** Rendering style of the modal */
|
2444
|
-
renderAs?: 'modal' | 'fullscreen' | 'spotlight'
|
2463
|
+
renderAs?: 'modal' | 'fullscreen' | 'spotlight';
|
2445
2464
|
/** Whether the modal can be dismissed by clicking outside or ESC key (default: true) */
|
2446
2465
|
isDismissable?: boolean;
|
2447
2466
|
/** Whether the modal requires authentication to view (default: true) */
|
@@ -2826,6 +2845,14 @@ declare interface IPuzzle extends IBaseProject {
|
|
2826
2845
|
solved: boolean;
|
2827
2846
|
}
|
2828
2847
|
|
2848
|
+
declare interface IPuzzleAppProps {
|
2849
|
+
itemRef: string;
|
2850
|
+
title: string;
|
2851
|
+
imageHue: THueNames;
|
2852
|
+
feedbackComments?: string;
|
2853
|
+
tip?: string;
|
2854
|
+
}
|
2855
|
+
|
2829
2856
|
export declare interface IPuzzleCard {
|
2830
2857
|
sheetData: TLPARSheetData;
|
2831
2858
|
blockStatus?: TPuzzleCardBlockStatus | null;
|
@@ -2995,6 +3022,7 @@ export declare interface IReviewWorksheetModel {
|
|
2995
3022
|
title?: string;
|
2996
3023
|
worksheet_id?: string;
|
2997
3024
|
node_type: TNodeTypes;
|
3025
|
+
items?: TWorksheetItems[];
|
2998
3026
|
}
|
2999
3027
|
|
3000
3028
|
declare interface ISATSheetItemCallbacks {
|
@@ -3234,22 +3262,14 @@ declare interface IStepperProps {
|
|
3234
3262
|
currentStep: number;
|
3235
3263
|
}
|
3236
3264
|
|
3237
|
-
|
3265
|
+
declare interface IStickerData {
|
3238
3266
|
id: string;
|
3239
3267
|
emoji: string;
|
3240
3268
|
lottieUrl?: string;
|
3241
|
-
name
|
3242
|
-
}
|
3243
|
-
|
3244
|
-
export declare interface IStickerProps {
|
3245
|
-
emoji: string;
|
3246
|
-
lottieUrl?: string;
|
3247
|
-
size?: number | string;
|
3248
|
-
onClick?: () => void;
|
3249
|
-
disabled?: boolean;
|
3269
|
+
name?: string;
|
3250
3270
|
}
|
3251
3271
|
|
3252
|
-
|
3272
|
+
declare interface IStickerGridProps {
|
3253
3273
|
stickers: IStickerData[];
|
3254
3274
|
columns?: number;
|
3255
3275
|
gap?: number;
|
@@ -3257,16 +3277,10 @@ export declare interface IStickerSelectorProps {
|
|
3257
3277
|
onStickerClick?: (sticker: IStickerData) => void;
|
3258
3278
|
}
|
3259
3279
|
|
3260
|
-
export declare interface IStickersProps {
|
3261
|
-
stickers: string[];
|
3262
|
-
effect: TStickerEffects;
|
3263
|
-
count: number;
|
3264
|
-
duration: number;
|
3265
|
-
}
|
3266
|
-
|
3267
3280
|
declare interface IStreakIconProps extends React.HTMLProps<HTMLDivElement> {
|
3268
3281
|
value: number;
|
3269
3282
|
blink?: boolean;
|
3283
|
+
isInteractive?: boolean;
|
3270
3284
|
}
|
3271
3285
|
|
3272
3286
|
export declare interface IStreakLeaderboardDetails extends IBaseLeaderboardDetails {
|
@@ -3819,12 +3833,6 @@ declare interface IUseTrialSessionMessageBroker {
|
|
3819
3833
|
};
|
3820
3834
|
}
|
3821
3835
|
|
3822
|
-
declare interface IUseViewportReturn {
|
3823
|
-
isCompact: boolean;
|
3824
|
-
isMobile: boolean;
|
3825
|
-
isDesktop: boolean;
|
3826
|
-
}
|
3827
|
-
|
3828
3836
|
declare interface IUseWorksheetLayout {
|
3829
3837
|
(options: {
|
3830
3838
|
userType: TUserTypes;
|
@@ -4182,7 +4190,6 @@ export declare enum JOURNEY_ID_STUDENT {
|
|
4182
4190
|
CIRCLE_TABLES_INTRO_JOURNEY = "CIRCLE_TABLES_INTRO_JOURNEY",
|
4183
4191
|
CIRCLE_TABLES_INFINTE_JOURNEY = "CIRCLE_TABLES_INFINITE_JOURNEY",
|
4184
4192
|
CIRCLE_LESSONS_K_1_INTRO_JOURNEY = "CIRCLE_LESSONS_K_1_INTRO_JOURNEY",
|
4185
|
-
CIRCLE_STREAK_REDUCTION_JOURNEY = "CIRCLE_STREAK_REDUCTION_JOURNEY",
|
4186
4193
|
HOMEPAGE_JOURNEY = "HOMEPAGE_JOURNEY",
|
4187
4194
|
CHAPTER_PAGE_JOURNEY = "CHAPTER_PAGE_JOURNEY",
|
4188
4195
|
CHALLENGE_ARENA_JOURNEY = "CHALLENGE_ARENA_JOURNEY"
|
@@ -4470,6 +4477,7 @@ export declare const NODE_TYPE: {
|
|
4470
4477
|
readonly TARGET_PRACTICE: "TARGET_PRACTICE";
|
4471
4478
|
readonly MASTERY: "MASTERY";
|
4472
4479
|
readonly TRIAL_DIAGNOSTIC: "TRIAL_DIAGNOSTIC";
|
4480
|
+
readonly PDF: "PDF";
|
4473
4481
|
};
|
4474
4482
|
|
4475
4483
|
export declare enum NODE_TYPES {
|
@@ -4503,7 +4511,7 @@ export declare enum NODE_TYPES {
|
|
4503
4511
|
'PUZZLE_CARD' = "PUZZLE_CARD"
|
4504
4512
|
}
|
4505
4513
|
|
4506
|
-
export declare const Nudge: React_2.
|
4514
|
+
export declare const Nudge: React_2.NamedExoticComponent<INudgeProps>;
|
4507
4515
|
|
4508
4516
|
export declare const NumRangeInput: React.FC<NumRangeInputProps>;
|
4509
4517
|
|
@@ -4636,6 +4644,8 @@ declare const PUZZLE_CARD_STATE: {
|
|
4636
4644
|
|
4637
4645
|
declare const PUZZLE_CARDS: "puzzle_cards";
|
4638
4646
|
|
4647
|
+
export declare const PuzzleApp: NamedExoticComponent<IPuzzleAppProps>;
|
4648
|
+
|
4639
4649
|
export declare const PuzzleCard: FC<IPuzzleCardContainerProps>;
|
4640
4650
|
|
4641
4651
|
export declare const PuzzleFeedbackCelebration: FC;
|
@@ -4699,6 +4709,10 @@ declare const SAT_NODE_TYPE: {
|
|
4699
4709
|
|
4700
4710
|
export declare const SATSheetSummary: FC<ISATSheetSummary>;
|
4701
4711
|
|
4712
|
+
export declare const ScreenGrabFilledIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
4713
|
+
|
4714
|
+
export declare const ScreenGrabIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
4715
|
+
|
4702
4716
|
export declare const SearchableSelectInput: <IDType extends string | number>(props: ISearchableSelectInputProps<IDType>) => ReactElement;
|
4703
4717
|
|
4704
4718
|
export declare const SearchIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
@@ -4827,11 +4841,22 @@ declare const STICKER_BADGE: {
|
|
4827
4841
|
AWESOME: string;
|
4828
4842
|
};
|
4829
4843
|
|
4830
|
-
|
4844
|
+
declare type StickerEffect = 'burst_from_edges' | 'pop_expand' | 'float_up' | 'fall_down';
|
4831
4845
|
|
4832
|
-
export declare const
|
4846
|
+
export declare const StickerFilledIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
4833
4847
|
|
4834
|
-
export declare const
|
4848
|
+
export declare const StickerIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
4849
|
+
|
4850
|
+
export declare const Stickers: React_2.NamedExoticComponent<StickersProps>;
|
4851
|
+
|
4852
|
+
declare interface StickersProps {
|
4853
|
+
stickers: string[];
|
4854
|
+
effect: StickerEffect;
|
4855
|
+
count: number;
|
4856
|
+
duration: number;
|
4857
|
+
}
|
4858
|
+
|
4859
|
+
export declare const StickersSelector: React_2.NamedExoticComponent<IStickerGridProps>;
|
4835
4860
|
|
4836
4861
|
export declare const StreakIcon: React_2.FC<IStreakIconProps>;
|
4837
4862
|
|
@@ -5071,8 +5096,6 @@ declare type TCueProgramData = {
|
|
5071
5096
|
|
5072
5097
|
declare type TDefaultSection = Record<string, unknown>;
|
5073
5098
|
|
5074
|
-
export declare type TDeviceType = 'mobile' | 'tablet' | 'small-desktop' | 'desktop' | 'large-device' | 'xlarge-device';
|
5075
|
-
|
5076
5099
|
declare type TDrawingData = ITile | IStroke | undefined;
|
5077
5100
|
|
5078
5101
|
declare type TEnglishSectionSummary = {
|
@@ -5084,7 +5107,7 @@ declare type TEnrollmentTypes = (typeof ENROLLMENT_TYPES)[keyof typeof ENROLLMEN
|
|
5084
5107
|
export declare const TestsCreation: FC<ITestsCreationProps>;
|
5085
5108
|
|
5086
5109
|
/**
|
5087
|
-
* @param $renderAs - The text variant to render as (ah1-ah4, ab1-ab3, ac1-ac4, ub1-ub3), anything else is deprecated
|
5110
|
+
* @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
|
5088
5111
|
*/
|
5089
5112
|
declare const Text_2: IStyledComponent<"web", Substitute<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, TextProps>>;
|
5090
5113
|
export { Text_2 as Text }
|
@@ -5106,6 +5129,8 @@ declare interface TextProps {
|
|
5106
5129
|
$inline?: boolean;
|
5107
5130
|
$textDecoration?: string;
|
5108
5131
|
$whiteSpace?: 'pre-line' | 'normal' | 'pre-wrap' | 'no-wrap' | 'pre' | 'break-spaces';
|
5132
|
+
$renderOnMobileAs?: TTextVariants;
|
5133
|
+
$renderOnTabletAs?: TTextVariants;
|
5109
5134
|
}
|
5110
5135
|
|
5111
5136
|
export declare type TFontFamilyNames = `${'Athletics'}-${'Light' | 'Regular' | 'Medium' | 'Bold' | 'Black'}` | `${'UntitledSans'}-${'Regular' | 'Medium'}`;
|
@@ -5749,7 +5774,7 @@ declare type TRenderAs_2 = 'canvas' | 'whiteboard';
|
|
5749
5774
|
declare type TRewardHomeData = {
|
5750
5775
|
user_badges: TBadgeData[] | [];
|
5751
5776
|
user_rewards: TRewardsData[] | [];
|
5752
|
-
user_stickers:
|
5777
|
+
user_stickers: TStickerData[] | [];
|
5753
5778
|
};
|
5754
5779
|
|
5755
5780
|
declare type TRewardsData = {
|
@@ -5877,17 +5902,7 @@ export declare type TSkillStatus = 'pending' | 'completed';
|
|
5877
5902
|
|
5878
5903
|
export declare type TSocialAuthProvider = 'google' | 'apple';
|
5879
5904
|
|
5880
|
-
|
5881
|
-
id: number;
|
5882
|
-
sticker: string;
|
5883
|
-
x: number;
|
5884
|
-
y: number;
|
5885
|
-
size: number;
|
5886
|
-
fromX?: string;
|
5887
|
-
fromY?: string;
|
5888
|
-
};
|
5889
|
-
|
5890
|
-
declare type TStickerData_2 = {
|
5905
|
+
declare type TStickerData = {
|
5891
5906
|
actor_id: string;
|
5892
5907
|
badge_id: string;
|
5893
5908
|
badge_type: string;
|
@@ -5900,8 +5915,6 @@ declare type TStickerData_2 = {
|
|
5900
5915
|
user_type: string;
|
5901
5916
|
};
|
5902
5917
|
|
5903
|
-
export declare type TStickerEffects = 'burst-from-edges' | 'pop-expand' | 'float-up' | 'fall-down';
|
5904
|
-
|
5905
5918
|
export declare type TStreakStatus = 'pending' | 'completed';
|
5906
5919
|
|
5907
5920
|
declare type TStyleAttrubutes = NonNullable<HTMLAttributes<HTMLDivElement>['style']>;
|
@@ -5990,6 +6003,10 @@ export declare const Tutorial: ({ src, title, onCross, showProgress, onTutorialP
|
|
5990
6003
|
|
5991
6004
|
export declare const TutoringIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
|
5992
6005
|
|
6006
|
+
declare type TWorksheetItems = {
|
6007
|
+
ref: string;
|
6008
|
+
};
|
6009
|
+
|
5993
6010
|
declare type TWORKSHHET_QUESTION_MEDIA_TYPE = 'SIMULATION' | 'VIDEO' | 'AUDIO';
|
5994
6011
|
|
5995
6012
|
export declare type TZIndexMap = Record<keyof typeof ZINDEX, number>;
|
@@ -6217,8 +6234,6 @@ export declare const useTrialSessionMessageBroker: IUseTrialSessionMessageBroker
|
|
6217
6234
|
|
6218
6235
|
export declare const useUIContext: () => UIContextProps;
|
6219
6236
|
|
6220
|
-
export declare const useViewport: () => IUseViewportReturn;
|
6221
|
-
|
6222
6237
|
export declare const useWorksheetLayout: IUseWorksheetLayout;
|
6223
6238
|
|
6224
6239
|
export declare const useZoomDisable: () => void;
|