@cuemath/leap 3.2.19-beta-0.1 → 3.2.19-link.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/illustrations/illustrations.js +6 -6
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/assets/line-icons/icons/star3.js +32 -0
- package/dist/assets/line-icons/icons/star3.js.map +1 -0
- package/dist/assets/lottie/lottie.js +0 -5
- package/dist/assets/lottie/lottie.js.map +1 -1
- package/dist/features/analytics-events/platform-events-student.js +1 -2
- package/dist/features/analytics-events/platform-events-student.js.map +1 -1
- package/dist/features/analytics-events/platform-events-teacher.js +4 -6
- package/dist/features/analytics-events/platform-events-teacher.js.map +1 -1
- package/dist/features/analytics-events/whitelist-events.js +8 -10
- package/dist/features/analytics-events/whitelist-events.js.map +1 -1
- package/dist/features/chapters-v2/utils/node-card-utils.js +2 -2
- package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -1
- package/dist/features/communication/pub-sub/constants.js +4 -7
- package/dist/features/communication/pub-sub/constants.js.map +1 -1
- package/dist/features/homework/homework-card-view.js +97 -85
- package/dist/features/homework/homework-card-view.js.map +1 -1
- package/dist/features/homework/homework-card.js +42 -44
- package/dist/features/homework/homework-card.js.map +1 -1
- package/dist/features/homework/hw-card-list/hw-card-list-view.js +29 -31
- package/dist/features/homework/hw-card-list/hw-card-list-view.js.map +1 -1
- package/dist/features/homework/hw-card-list/hw-card-list.js +48 -54
- package/dist/features/homework/hw-card-list/hw-card-list.js.map +1 -1
- package/dist/features/homework/utils.js +27 -33
- package/dist/features/homework/utils.js.map +1 -1
- package/dist/features/journey/hooks/use-home-page-journey/tooltip-item.js +11 -17
- package/dist/features/journey/hooks/use-home-page-journey/tooltip-item.js.map +1 -1
- package/dist/features/journey/journey-id/journey-id-student.js +1 -1
- package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
- package/dist/features/journey/journey-id/journey-id-teacher.js +2 -2
- package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
- package/dist/features/puzzles/app/puzzle-app-styled.js +6 -10
- package/dist/features/puzzles/app/puzzle-app-styled.js.map +1 -1
- package/dist/features/puzzles/comps/puzzle-card-styled.js +69 -24
- package/dist/features/puzzles/comps/puzzle-card-styled.js.map +1 -1
- package/dist/features/puzzles/comps/puzzle-card.js +30 -79
- package/dist/features/puzzles/comps/puzzle-card.js.map +1 -1
- package/dist/features/puzzles/puzzle-container/puzzle-container-styled.js +25 -55
- package/dist/features/puzzles/puzzle-container/puzzle-container-styled.js.map +1 -1
- package/dist/features/puzzles/puzzle-container/puzzle-container.js +107 -100
- package/dist/features/puzzles/puzzle-container/puzzle-container.js.map +1 -1
- package/dist/features/puzzles/puzzle-feedback-celebration/puzzle-feedback-celebration.js +1 -1
- package/dist/features/puzzles/puzzle-feedback-celebration/puzzle-feedback-celebration.js.map +1 -1
- package/dist/features/puzzles/utils/puzzle-pattern.js +13 -28
- package/dist/features/puzzles/utils/puzzle-pattern.js.map +1 -1
- package/dist/features/trial-session/comps/student-profile/student-profile.js +1 -1
- package/dist/features/trial-session/comps/teacher-intro/teacher-intro-styled.js +7 -50
- package/dist/features/trial-session/comps/teacher-intro/teacher-intro-styled.js.map +1 -1
- package/dist/features/trial-session/comps/teacher-intro/teacher-intro.js +15 -69
- package/dist/features/trial-session/comps/teacher-intro/teacher-intro.js.map +1 -1
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-styled.js +49 -0
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-styled.js.map +1 -0
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js +64 -0
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js.map +1 -0
- package/dist/features/ui/accordion/accordion-items/accordion-items-styled.js +28 -0
- package/dist/features/ui/accordion/accordion-items/accordion-items-styled.js.map +1 -0
- package/dist/features/ui/accordion/accordion-items/accordion-items.js +83 -0
- package/dist/features/ui/accordion/accordion-items/accordion-items.js.map +1 -0
- package/dist/features/ui/accordion/accordion.js +62 -0
- package/dist/features/ui/accordion/accordion.js.map +1 -0
- package/dist/features/ui/inputs/base-input/base-input.js +11 -11
- package/dist/features/ui/inputs/base-input/base-input.js.map +1 -1
- package/dist/features/ui/inputs/text-input/text-input.js +19 -18
- package/dist/features/ui/inputs/text-input/text-input.js.map +1 -1
- package/dist/features/ui/modals/modal-styled.js +42 -8
- package/dist/features/ui/modals/modal-styled.js.map +1 -1
- package/dist/features/ui/modals/modal.js +37 -27
- package/dist/features/ui/modals/modal.js.map +1 -1
- package/dist/features/ui/text/text.js +31 -29
- package/dist/features/ui/text/text.js.map +1 -1
- package/dist/features/ui/theme/clrs.js +2 -0
- package/dist/features/ui/theme/clrs.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-helpers.js +19 -20
- package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +12 -16
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +47 -101
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +146 -149
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +207 -242
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-styled.js +37 -37
- package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +313 -307
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +35 -44
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
- package/dist/index.d.ts +71 -89
- package/dist/index.js +626 -626
- package/dist/static/puzzle-pattern-blue.f4bea1ee.svg +1 -0
- package/dist/static/puzzle-pattern-green.c9f84bbc.svg +1 -0
- package/dist/static/puzzle-pattern-orange.3da09665.svg +1 -0
- package/dist/static/puzzle-pattern-purple.5fb5a319.svg +1 -0
- package/dist/static/puzzle-pattern-yellow.aadbf457.svg +1 -0
- package/dist/static/stripe-blurple.6abf422f.svg +1 -0
- package/package.json +1 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-assigned.js +0 -72
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-assigned.js.map +0 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-attempt-journey.js +0 -59
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-attempt-journey.js.map +0 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-dashboard-journey.js +0 -63
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-dashboard-journey.js.map +0 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-intro-journey.js +0 -67
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-intro-journey.js.map +0 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-progress-journey.js +0 -70
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-progress-journey.js.map +0 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-review-journey.js +0 -59
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-review-journey.js.map +0 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-unassign-journey.js +0 -59
- package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-unassign-journey.js.map +0 -1
- package/dist/features/journey/hooks/use-puzzles-journey/use-teacher-puzzle-assigned-journey.js +0 -70
- package/dist/features/journey/hooks/use-puzzles-journey/use-teacher-puzzle-assigned-journey.js.map +0 -1
- package/dist/features/puzzles/api/puzzle-dashboard.js +0 -10
- package/dist/features/puzzles/api/puzzle-dashboard.js.map +0 -1
- package/dist/features/puzzles/constants/puzzle-container.js +0 -8
- package/dist/features/puzzles/constants/puzzle-container.js.map +0 -1
- package/dist/features/puzzles/puzzle-analytics-events.js +0 -11
- package/dist/features/puzzles/puzzle-analytics-events.js.map +0 -1
- package/dist/features/puzzles/puzzle-container/puzzle-container-view.js +0 -55
- package/dist/features/puzzles/puzzle-container/puzzle-container-view.js.map +0 -1
- package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard-styled.js +0 -37
- package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard-styled.js.map +0 -1
- package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard.js +0 -110
- package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard.js.map +0 -1
- package/dist/features/worksheet/worksheet/hooks/use-worksheet-journey.js +0 -28
- package/dist/features/worksheet/worksheet/hooks/use-worksheet-journey.js.map +0 -1
- package/dist/static/puzzle-blue-lottie.7017e2e8.json +0 -1
- package/dist/static/puzzle-blue-lottie.bf64ebc5.json +0 -12760
- package/dist/static/puzzle-dashboard-banner.b7956519.svg +0 -1
- package/dist/static/puzzle-green-lottie.1da90698.json +0 -1
- package/dist/static/puzzle-orange-lottie.cfcf3724.json +0 -1
- package/dist/static/puzzle-pattern-blue.abff0164.svg +0 -1
- package/dist/static/puzzle-pattern-green.b8ba1840.svg +0 -1
- package/dist/static/puzzle-pattern-orange.3f5a17ff.svg +0 -1
- package/dist/static/puzzle-pattern-purple.14b09759.svg +0 -1
- package/dist/static/puzzle-pattern-yellow.50917fab.svg +0 -1
- package/dist/static/puzzle-purple-lottie.e70de110.json +0 -9860
- package/dist/static/puzzle-yellow-lottie.275b5cf4.json +0 -1
@@ -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, maximumAttempts } = behavior;\n const {\n containerStyle,\n containerWidth,\n minQuestionHeight,\n minSummaryHeight,\n questionsScrollable,\n navigationBar,\n topOffset,\n renderSideBar,\n showUserPointer = true,\n } = layout;\n\n const isPuzzleCard = maximumAttempts === -2;\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 $background=\"WHITE_1\" $width={containerWidth}>\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 $isPuzzleCard={isPuzzleCard}\n >\n {maximumAttempts !== -2 && (\n <QuestionTips\n width={questionsContainerWidth - 32}\n question={questions[activeQuestionIndex]}\n learnosity={learnosity}\n userType={userType}\n />\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 $isPuzzleCard={isPuzzleCard}\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","maximumAttempts","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","isPuzzleCard","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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"}
|
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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"}
|
@@ -25,7 +25,7 @@ const h = ({
|
|
25
25
|
() => ({
|
26
26
|
containerStyle: r ? "none" : "card",
|
27
27
|
//* The width of the container is set based on the user type and whether it is a SAT assessment
|
28
|
-
//* For Puzzle sheets, on student side we are showing a header with
|
28
|
+
//* For Puzzle sheets, on student side we are showing a header with 824px fixed width.
|
29
29
|
containerWidth: r ? "1024px" : a === "TEACHER" ? "960px" : "824px",
|
30
30
|
actionBar: "bottom",
|
31
31
|
topOffset: A,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-worksheet-layout.js","sources":["../../../../../src/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.ts"],"sourcesContent":["import type { IResumeWorksheetModel } from '../../../../types/models/worksheet';\nimport type { THueNames, TUserTypes } from '../../../ui/types';\nimport type { IWorksheetProps } from '../../worksheet/worksheet-types';\n\nimport { useMemo } from 'react';\n\nimport {\n QUESTIONS_GAP,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from '../../worksheet/constants';\n\ninterface IUseWorksheetLayout {\n (options: {\n userType: TUserTypes;\n nodeType: IResumeWorksheetModel['node_type'];\n isSATAssessment: boolean;\n showNudgeBanner?: boolean;\n topOffset: number;\n imageHue?: THueNames;\n }): IWorksheetProps['layout'];\n}\n\nconst useWorksheetLayout: IUseWorksheetLayout = ({\n userType,\n nodeType,\n isSATAssessment,\n showNudgeBanner,\n topOffset,\n imageHue,\n}) => {\n const isPuzzleSheet = nodeType === 'PUZZLE_CARD';\n\n const navigationBar = useMemo<IWorksheetProps['layout']['navigationBar']>(() => {\n if (isSATAssessment) return 'bottom';\n\n switch (nodeType) {\n case 'PUZZLE_CARD':\n case 'TRIAL_DIAGNOSTIC':\n case 'TRIAL_BASIC':\n case 'TRIAL_INTERMEDIATE':\n case 'TRIAL_ADVANCED':\n return 'none';\n default:\n return 'top';\n }\n }, [isSATAssessment, nodeType]);\n const navHeight = navigationBar === 'top' ? TOP_NAVIGATION_HEIGHT : 0;\n const minQuestionHeight = `calc(100vh - ${topOffset + navHeight + QUESTIONS_GAP * 2}px)`;\n const minSummaryHeight = `calc(100vh - ${topOffset + navHeight + QUESTIONS_GAP}px)`;\n const tOffset = showNudgeBanner ? topOffset + WORKSHEET_NUDGE_BANNER_HEIGHT : topOffset;\n\n return useMemo<IWorksheetProps['layout']>(\n () => ({\n containerStyle: isSATAssessment ? 'none' : 'card',\n //* The width of the container is set based on the user type and whether it is a SAT assessment\n //* For Puzzle sheets, on student side we are showing a header with
|
1
|
+
{"version":3,"file":"use-worksheet-layout.js","sources":["../../../../../src/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.ts"],"sourcesContent":["import type { IResumeWorksheetModel } from '../../../../types/models/worksheet';\nimport type { THueNames, TUserTypes } from '../../../ui/types';\nimport type { IWorksheetProps } from '../../worksheet/worksheet-types';\n\nimport { useMemo } from 'react';\n\nimport {\n QUESTIONS_GAP,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from '../../worksheet/constants';\n\ninterface IUseWorksheetLayout {\n (options: {\n userType: TUserTypes;\n nodeType: IResumeWorksheetModel['node_type'];\n isSATAssessment: boolean;\n showNudgeBanner?: boolean;\n topOffset: number;\n imageHue?: THueNames;\n }): IWorksheetProps['layout'];\n}\n\nconst useWorksheetLayout: IUseWorksheetLayout = ({\n userType,\n nodeType,\n isSATAssessment,\n showNudgeBanner,\n topOffset,\n imageHue,\n}) => {\n const isPuzzleSheet = nodeType === 'PUZZLE_CARD';\n\n const navigationBar = useMemo<IWorksheetProps['layout']['navigationBar']>(() => {\n if (isSATAssessment) return 'bottom';\n\n switch (nodeType) {\n case 'PUZZLE_CARD':\n case 'TRIAL_DIAGNOSTIC':\n case 'TRIAL_BASIC':\n case 'TRIAL_INTERMEDIATE':\n case 'TRIAL_ADVANCED':\n return 'none';\n default:\n return 'top';\n }\n }, [isSATAssessment, nodeType]);\n const navHeight = navigationBar === 'top' ? TOP_NAVIGATION_HEIGHT : 0;\n const minQuestionHeight = `calc(100vh - ${topOffset + navHeight + QUESTIONS_GAP * 2}px)`;\n const minSummaryHeight = `calc(100vh - ${topOffset + navHeight + QUESTIONS_GAP}px)`;\n const tOffset = showNudgeBanner ? topOffset + WORKSHEET_NUDGE_BANNER_HEIGHT : topOffset;\n\n return useMemo<IWorksheetProps['layout']>(\n () => ({\n containerStyle: isSATAssessment ? 'none' : 'card',\n //* The width of the container is set based on the user type and whether it is a SAT assessment\n //* For Puzzle sheets, on student side we are showing a header with 824px fixed width.\n containerWidth: isSATAssessment ? '1024px' : userType === 'TEACHER' ? '960px' : '824px',\n actionBar: 'bottom',\n topOffset: tOffset,\n navigationBar,\n questionsScrollable: !(\n isSATAssessment ||\n nodeType === 'TRIAL_DIAGNOSTIC' ||\n nodeType === 'TRIAL_BASIC' ||\n nodeType === 'TRIAL_INTERMEDIATE' ||\n nodeType === 'TRIAL_ADVANCED'\n ),\n minQuestionHeight,\n minSummaryHeight,\n renderSideBar: userType === 'TEACHER' && !isSATAssessment,\n renderQuestionHeader: !isPuzzleSheet,\n imageHue,\n }),\n [\n isSATAssessment,\n isPuzzleSheet,\n userType,\n tOffset,\n navigationBar,\n nodeType,\n minQuestionHeight,\n minSummaryHeight,\n imageHue,\n ],\n );\n};\n\nexport default useWorksheetLayout;\n"],"names":["useWorksheetLayout","userType","nodeType","isSATAssessment","showNudgeBanner","topOffset","imageHue","isPuzzleSheet","navigationBar","useMemo","navHeight","TOP_NAVIGATION_HEIGHT","minQuestionHeight","QUESTIONS_GAP","minSummaryHeight","tOffset","WORKSHEET_NUDGE_BANNER_HEIGHT","useWorksheetLayout$1"],"mappings":";;AAuBA,MAAMA,IAA0C,CAAC;AAAA,EAC/C,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAgBL,MAAa,eAE7BM,IAAgBC,EAAoD,MAAM;AAC9E,QAAIN,EAAwB,QAAA;AAE5B,YAAQD,GAAU;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACI,eAAA;AAAA,MACT;AACS,eAAA;AAAA,IACX;AAAA,EAAA,GACC,CAACC,GAAiBD,CAAQ,CAAC,GACxBQ,IAAYF,MAAkB,QAAQG,IAAwB,GAC9DC,IAAoB,gBAAgBP,IAAYK,IAAYG,IAAgB,CAAC,OAC7EC,IAAmB,gBAAgBT,IAAYK,IAAYG,CAAa,OACxEE,IAAUX,IAAkBC,IAAYW,IAAgCX;AAEvE,SAAAI;AAAA,IACL,OAAO;AAAA,MACL,gBAAgBN,IAAkB,SAAS;AAAA;AAAA;AAAA,MAG3C,gBAAgBA,IAAkB,WAAWF,MAAa,YAAY,UAAU;AAAA,MAChF,WAAW;AAAA,MACX,WAAWc;AAAA,MACX,eAAAP;AAAA,MACA,qBAAqB,EACnBL,KACAD,MAAa,sBACbA,MAAa,iBACbA,MAAa,wBACbA,MAAa;AAAA,MAEf,mBAAAU;AAAA,MACA,kBAAAE;AAAA,MACA,eAAeb,MAAa,aAAa,CAACE;AAAA,MAC1C,sBAAsB,CAACI;AAAA,MACvB,UAAAD;AAAA,IAAA;AAAA,IAEF;AAAA,MACEH;AAAA,MACAI;AAAA,MACAN;AAAA,MACAc;AAAA,MACAP;AAAA,MACAN;AAAA,MACAU;AAAA,MACAE;AAAA,MACAR;AAAA,IACF;AAAA,EAAA;AAEJ,GAEAW,IAAejB;"}
|
@@ -1,88 +1,79 @@
|
|
1
|
-
import { jsx as n, jsxs as
|
2
|
-
import { memo as
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import Z from "../../ui/error/error.js";
|
6
|
-
import _ from "../../ui/loader/app-loader/app-loader.js";
|
1
|
+
import { jsx as n, jsxs as C, Fragment as _ } from "react/jsx-runtime";
|
2
|
+
import { memo as D, useMemo as A, useState as R, useCallback as c, useEffect as N } from "react";
|
3
|
+
import x from "../../ui/error/error.js";
|
4
|
+
import p from "../../ui/loader/app-loader/app-loader.js";
|
7
5
|
import { usePreviewWorksheetGet as V } from "./api/get-preview-worksheet.js";
|
8
|
-
import
|
9
|
-
const
|
6
|
+
import B from "./worksheet-preview-view.js";
|
7
|
+
const M = D((h) => {
|
10
8
|
const {
|
11
|
-
activityReference:
|
9
|
+
activityReference: d,
|
12
10
|
nodeType: e,
|
13
11
|
action: t,
|
14
12
|
isLessonV3Enabled: o,
|
15
|
-
items:
|
16
|
-
scribblingEnabled:
|
13
|
+
items: m,
|
14
|
+
scribblingEnabled: u,
|
17
15
|
onWorksheetLoaded: s,
|
18
|
-
userType:
|
19
|
-
} = h,
|
16
|
+
userType: T
|
17
|
+
} = h, E = A(() => {
|
20
18
|
switch (e) {
|
21
19
|
case "TRIAL_BASIC":
|
22
20
|
case "TRIAL_INTERMEDIATE":
|
23
21
|
case "TRIAL_ADVANCED":
|
24
22
|
return !0;
|
25
23
|
}
|
26
|
-
}, [e]), i = e === "PUZZLE_CARD",
|
27
|
-
T.PUZZLE_UNASSIGN_JOURNEY
|
28
|
-
]), [I, R] = p(), [L, N] = p(!1), { isProcessing: v, get: k, data: r, error: W } = V(), A = g(() => r && {
|
24
|
+
}, [e]), i = e === "PUZZLE_CARD", f = T === "TEACHER", [v, l] = R(), [W, w] = R(!1), { isProcessing: L, get: k, data: r, error: y } = V(), g = A(() => r && {
|
29
25
|
...r,
|
30
26
|
player_config: {
|
31
27
|
...r.player_config,
|
32
28
|
retryButtonLabel: "Retry",
|
33
29
|
checkButtonLabel: "Check",
|
34
30
|
...t === "review" && {
|
35
|
-
navigationMode:
|
31
|
+
navigationMode: E || i ? "CURRENT" : o ? "LINEAR" : "OPEN",
|
36
32
|
initialQuestion: "FIRST"
|
37
33
|
},
|
38
34
|
...o && {
|
39
35
|
teacherValidationEnabled: o
|
40
36
|
},
|
41
|
-
...
|
37
|
+
...f && i && u && {
|
42
38
|
maximumAttempts: -2,
|
43
|
-
|
44
|
-
canUnAssign: d,
|
45
|
-
canStartJourney: f.includes(
|
46
|
-
T.PUZZLE_UNASSIGN_JOURNEY
|
47
|
-
)
|
39
|
+
canUnAssign: !0
|
48
40
|
}
|
49
41
|
}
|
50
42
|
}, [
|
51
|
-
r,
|
52
43
|
t,
|
53
|
-
|
54
|
-
i,
|
44
|
+
E,
|
55
45
|
o,
|
56
|
-
|
57
|
-
|
58
|
-
|
46
|
+
i,
|
47
|
+
f,
|
48
|
+
u,
|
49
|
+
r
|
59
50
|
]), a = c(() => {
|
60
|
-
|
51
|
+
l(void 0), k(d, {
|
61
52
|
action: t,
|
62
53
|
node_type: e,
|
63
|
-
items:
|
54
|
+
items: m
|
64
55
|
});
|
65
|
-
}, [t,
|
66
|
-
|
67
|
-
}, [s]),
|
68
|
-
|
56
|
+
}, [t, d, k, e, m]), b = c(() => {
|
57
|
+
w(!0), s == null || s(!0);
|
58
|
+
}, [s]), I = c((P) => {
|
59
|
+
l(P.message);
|
69
60
|
}, []);
|
70
|
-
return
|
61
|
+
return N(() => {
|
71
62
|
a();
|
72
|
-
}, [a]),
|
73
|
-
!
|
74
|
-
|
75
|
-
|
63
|
+
}, [a]), v || y ? /* @__PURE__ */ n(x, { height: "100vh", onTryAgain: a }) : L ? /* @__PURE__ */ n(p, { height: "100vh" }) : /* @__PURE__ */ C(_, { children: [
|
64
|
+
!W && /* @__PURE__ */ n(p, { height: "100vh" }),
|
65
|
+
g && /* @__PURE__ */ n(
|
66
|
+
B,
|
76
67
|
{
|
77
68
|
...h,
|
78
|
-
worksheet:
|
69
|
+
worksheet: g,
|
79
70
|
onWorksheetLoaded: b,
|
80
|
-
onWorksheetErrored:
|
71
|
+
onWorksheetErrored: I
|
81
72
|
}
|
82
73
|
)
|
83
74
|
] });
|
84
|
-
}),
|
75
|
+
}), G = M;
|
85
76
|
export {
|
86
|
-
|
77
|
+
G as default
|
87
78
|
};
|
88
79
|
//# sourceMappingURL=worksheet-preview.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"worksheet-preview.js","sources":["../../../../src/features/worksheet/worksheet-preview/worksheet-preview.tsx"],"sourcesContent":["import type { IPreviewWorksheetProps } from './worksheet-preview-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport
|
1
|
+
{"version":3,"file":"worksheet-preview.js","sources":["../../../../src/features/worksheet/worksheet-preview/worksheet-preview.tsx"],"sourcesContent":["import type { IPreviewWorksheetProps } from './worksheet-preview-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport Error from '../../ui/error/error';\nimport AppLoader from '../../ui/loader/app-loader/app-loader';\nimport { usePreviewWorksheetGet } from './api/get-preview-worksheet';\nimport PreviewWorksheetView from './worksheet-preview-view';\n\nconst PreviewWorksheet: FC<IPreviewWorksheetProps> = memo(props => {\n const {\n activityReference,\n nodeType,\n action,\n isLessonV3Enabled,\n items,\n scribblingEnabled,\n onWorksheetLoaded,\n userType,\n } = props;\n const isDiagnosticWorksheet = useMemo(() => {\n switch (nodeType) {\n case 'TRIAL_BASIC':\n case 'TRIAL_INTERMEDIATE':\n case 'TRIAL_ADVANCED':\n return true;\n }\n }, [nodeType]);\n const isPuzzleWorksheet = nodeType === 'PUZZLE_CARD';\n const isTeacher = userType === 'TEACHER';\n\n const [error, setError] = useState<string>();\n const [worksheetRendered, setWorksheetRendered] = useState<boolean>(false);\n const { isProcessing, get, data: worksheetData, error: fetchError } = usePreviewWorksheetGet();\n\n const worksheet = useMemo<typeof worksheetData>(() => {\n if (worksheetData) {\n return {\n ...worksheetData,\n player_config: {\n ...worksheetData.player_config,\n retryButtonLabel: 'Retry',\n checkButtonLabel: 'Check',\n ...(action === 'review' && {\n navigationMode:\n isDiagnosticWorksheet || isPuzzleWorksheet\n ? 'CURRENT'\n : isLessonV3Enabled\n ? 'LINEAR'\n : 'OPEN',\n initialQuestion: 'FIRST',\n }),\n ...(isLessonV3Enabled && {\n teacherValidationEnabled: isLessonV3Enabled,\n }),\n ...(isTeacher &&\n isPuzzleWorksheet &&\n scribblingEnabled && {\n maximumAttempts: -2,\n canUnAssign: true,\n }),\n },\n };\n }\n\n return worksheetData;\n }, [\n action,\n isDiagnosticWorksheet,\n isLessonV3Enabled,\n isPuzzleWorksheet,\n isTeacher,\n scribblingEnabled,\n worksheetData,\n ]);\n\n const fetchWorksheet = useCallback(() => {\n setError(undefined);\n get(activityReference, {\n action,\n node_type: nodeType,\n items,\n });\n }, [action, activityReference, get, nodeType, items]);\n\n const handleWorksheetLoaded = useCallback(() => {\n setWorksheetRendered(true);\n\n onWorksheetLoaded?.(true);\n }, [onWorksheetLoaded]);\n\n const handleWorksheetErrored = useCallback((err: { code?: number; message: string }) => {\n setError(err.message);\n }, []);\n\n useEffect(() => {\n fetchWorksheet();\n }, [fetchWorksheet]);\n\n if (error || fetchError) {\n return <Error height=\"100vh\" onTryAgain={fetchWorksheet} />;\n }\n\n if (isProcessing) {\n return <AppLoader height=\"100vh\" />;\n }\n\n return (\n <>\n {!worksheetRendered && <AppLoader height=\"100vh\" />}\n {worksheet && (\n <PreviewWorksheetView\n {...props}\n worksheet={worksheet}\n onWorksheetLoaded={handleWorksheetLoaded}\n onWorksheetErrored={handleWorksheetErrored}\n />\n )}\n </>\n );\n});\n\nexport default PreviewWorksheet;\n"],"names":["PreviewWorksheet","memo","props","activityReference","nodeType","action","isLessonV3Enabled","items","scribblingEnabled","onWorksheetLoaded","userType","isDiagnosticWorksheet","useMemo","isPuzzleWorksheet","isTeacher","error","setError","useState","worksheetRendered","setWorksheetRendered","isProcessing","get","worksheetData","fetchError","usePreviewWorksheetGet","worksheet","fetchWorksheet","useCallback","handleWorksheetLoaded","handleWorksheetErrored","err","useEffect","jsx","Error","AppLoader","jsxs","Fragment","PreviewWorksheetView","PreviewWorksheet$1"],"mappings":";;;;;;AAUA,MAAMA,IAA+CC,EAAK,CAASC,MAAA;AAC3D,QAAA;AAAA,IACJ,mBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,UAAAC;AAAA,EACE,IAAAR,GACES,IAAwBC,EAAQ,MAAM;AAC1C,YAAQR,GAAU;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACI,eAAA;AAAA,IACX;AAAA,EAAA,GACC,CAACA,CAAQ,CAAC,GACPS,IAAoBT,MAAa,eACjCU,IAAYJ,MAAa,WAEzB,CAACK,GAAOC,CAAQ,IAAIC,EAAiB,GACrC,CAACC,GAAmBC,CAAoB,IAAIF,EAAkB,EAAK,GACnE,EAAE,cAAAG,GAAc,KAAAC,GAAK,MAAMC,GAAe,OAAOC,MAAeC,KAEhEC,IAAYb,EAA8B,MAC1CU,KACK;AAAA,IACL,GAAGA;AAAA,IACH,eAAe;AAAA,MACb,GAAGA,EAAc;AAAA,MACjB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,GAAIjB,MAAW,YAAY;AAAA,QACzB,gBACEM,KAAyBE,IACrB,YACAP,IACE,WACA;AAAA,QACR,iBAAiB;AAAA,MACnB;AAAA,MACA,GAAIA,KAAqB;AAAA,QACvB,0BAA0BA;AAAA,MAC5B;AAAA,MACA,GAAIQ,KACFD,KACAL,KAAqB;AAAA,QACnB,iBAAiB;AAAA,QACjB,aAAa;AAAA,MACf;AAAA,IACJ;AAAA,EAAA,GAKH;AAAA,IACDH;AAAA,IACAM;AAAA,IACAL;AAAA,IACAO;AAAA,IACAC;AAAA,IACAN;AAAA,IACAc;AAAA,EAAA,CACD,GAEKI,IAAiBC,EAAY,MAAM;AACvC,IAAAX,EAAS,MAAS,GAClBK,EAAIlB,GAAmB;AAAA,MACrB,QAAAE;AAAA,MACA,WAAWD;AAAA,MACX,OAAAG;AAAA,IAAA,CACD;AAAA,EAAA,GACA,CAACF,GAAQF,GAAmBkB,GAAKjB,GAAUG,CAAK,CAAC,GAE9CqB,IAAwBD,EAAY,MAAM;AAC9C,IAAAR,EAAqB,EAAI,GAEzBV,KAAA,QAAAA,EAAoB;AAAA,EAAI,GACvB,CAACA,CAAiB,CAAC,GAEhBoB,IAAyBF,EAAY,CAACG,MAA4C;AACtF,IAAAd,EAASc,EAAI,OAAO;AAAA,EACtB,GAAG,CAAE,CAAA;AAML,SAJAC,EAAU,MAAM;AACC,IAAAL;EAAA,GACd,CAACA,CAAc,CAAC,GAEfX,KAASQ,IACH,gBAAAS,EAAAC,GAAA,EAAM,QAAO,SAAQ,YAAYP,EAAgB,CAAA,IAGvDN,IACK,gBAAAY,EAACE,GAAU,EAAA,QAAO,QAAQ,CAAA,IAK9B,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,CAAClB,KAAqB,gBAAAc,EAACE,GAAU,EAAA,QAAO,QAAQ,CAAA;AAAA,IAChDT,KACC,gBAAAO;AAAA,MAACK;AAAA,MAAA;AAAA,QACE,GAAGnC;AAAA,QACJ,WAAAuB;AAAA,QACA,mBAAmBG;AAAA,QACnB,oBAAoBC;AAAA,MAAA;AAAA,IACtB;AAAA,EAEJ,EAAA,CAAA;AAEJ,CAAC,GAEDS,IAAetC;"}
|