@cuemath/leap 3.4.9-m → 3.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/features/journey/use-journey/constants.js +7 -5
  2. package/dist/features/journey/use-journey/constants.js.map +1 -1
  3. package/dist/features/journey/use-journey/journey-context-provider.js +84 -72
  4. package/dist/features/journey/use-journey/journey-context-provider.js.map +1 -1
  5. package/dist/features/stickers/hooks/use-handle-sticker-send.js +44 -0
  6. package/dist/features/stickers/hooks/use-handle-sticker-send.js.map +1 -0
  7. package/dist/features/stickers/hooks/use-stickers-error-logger.js +17 -0
  8. package/dist/features/stickers/hooks/use-stickers-error-logger.js.map +1 -0
  9. package/dist/features/stickers/{sticker-selector/hooks → hooks}/use-stickers-journey/use-stickers-journey.js +7 -7
  10. package/dist/features/stickers/hooks/use-stickers-journey/use-stickers-journey.js.map +1 -0
  11. package/dist/features/stickers/sticker-selector/comps/sticker/sticker.js +27 -26
  12. package/dist/features/stickers/sticker-selector/comps/sticker/sticker.js.map +1 -1
  13. package/dist/features/stickers/sticker-selector/sticker-selector.js +67 -66
  14. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -1
  15. package/dist/features/stickers/stickers-analytics-events.js +8 -0
  16. package/dist/features/stickers/stickers-analytics-events.js.map +1 -0
  17. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js +52 -119
  18. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +1 -1
  19. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js +17 -21
  20. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +1 -1
  21. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js +27 -33
  22. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js.map +1 -1
  23. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  24. package/dist/features/worksheet/worksheet/worksheet.js +247 -251
  25. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  26. package/dist/index.d.ts +15 -15
  27. package/dist/index.js +2 -2
  28. package/package.json +1 -1
  29. package/dist/features/stickers/sticker-selector/hooks/use-handle-sticker-send.js +0 -33
  30. package/dist/features/stickers/sticker-selector/hooks/use-handle-sticker-send.js.map +0 -1
  31. package/dist/features/stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\n// import { 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';\n// import 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 type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\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';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\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 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 onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n studentId,\n subjectiveProps,\n canShowActionBar = true,\n actionBarRightElement,\n featuresConfig,\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 questionPadding,\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 $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 >\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={\n containerStyle === 'card' || maximumAttempts === -2\n ? questionsContainerWidth - 32\n : '100%'\n }\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 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 actionBarRightElement={actionBarRightElement}\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 $questionPadding={questionPadding}\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 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 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 studentClassroomId={featuresConfig?.stickers?.studentClassroomId}\n enableStickers={featuresConfig?.stickers?.enableStickers}\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","learnosityItems","learnosityResponses","layout","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","studentId","subjectiveProps","canShowActionBar","actionBarRightElement","featuresConfig","initialQuestion","navigationMode","teacherValidationEnabled","maximumAttempts","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","questionPadding","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","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","_b","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 { ForwardRefRenderFunction } from 'react';\n// import { 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';\n// import 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 type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\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';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\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 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 onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n studentId,\n subjectiveProps,\n canShowActionBar = true,\n actionBarRightElement,\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 questionPadding,\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 $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 >\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={\n containerStyle === 'card' || maximumAttempts === -2\n ? questionsContainerWidth - 32\n : '100%'\n }\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 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 actionBarRightElement={actionBarRightElement}\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 $questionPadding={questionPadding}\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 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 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","learnosityItems","learnosityResponses","layout","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","studentId","subjectiveProps","canShowActionBar","actionBarRightElement","initialQuestion","navigationMode","teacherValidationEnabled","maximumAttempts","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","questionPadding","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","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","_b","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -636,10 +636,6 @@ export declare const Eye2Icon: FC<SVGProps<SVGSVGElement>>;
636
636
 
637
637
  export declare const EyeIcon: FC<SVGProps<SVGSVGElement>>;
638
638
 
639
- declare interface FeatureConfigs {
640
- stickers?: StickerFeatureConfig;
641
- }
642
-
643
639
  export declare const FlexView: IStyledComponent<"web", Substitute<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, FlexViewProps>>;
644
640
 
645
641
  declare interface FlexViewProps {
@@ -2024,7 +2020,12 @@ export declare interface IJourneyContext {
2024
2020
  * This data is set only the component is mounted.
2025
2021
  * And thereafter it is updated when the user completes a journey, through the `endJourney` method.
2026
2022
  */
2027
- userCompletedJourneyIds: TJourneyId[] | null;
2023
+ userCompletedJourneyIds: (TJourneyId | TTrackingId)[] | null;
2024
+ /**
2025
+ * Function to track views.
2026
+ * @param trackingId - The ID of the view to track.
2027
+ */
2028
+ trackView: (trackingId: TTrackingId) => void;
2028
2029
  }
2029
2030
 
2030
2031
  declare interface IJourneyProviderProps {
@@ -4665,7 +4666,7 @@ declare interface IWorksheetCallbackProps {
4665
4666
  loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>;
4666
4667
  }
4667
4668
 
4668
- declare interface IWorksheetContainerProps<TExtraFeatures extends Record<string, unknown> = Record<string, never>> extends Omit<IBaseWorksheetProps, 'behavior'>, IWorksheetCallbackProps, ICueCanvasProps, ICueCanvasCallbackProps, IPointerSyncCallbackProps {
4669
+ declare interface IWorksheetContainerProps extends Omit<IBaseWorksheetProps, 'behavior'>, IWorksheetCallbackProps, ICueCanvasProps, ICueCanvasCallbackProps, IPointerSyncCallbackProps {
4669
4670
  studentId: string;
4670
4671
  attemptId?: string;
4671
4672
  itemsSignedRequest: string;
@@ -4685,7 +4686,6 @@ declare interface IWorksheetContainerProps<TExtraFeatures extends Record<string,
4685
4686
  isDesmosEnabled?: boolean;
4686
4687
  nodeType: TNodeTypes;
4687
4688
  mode: 'resume' | 'review' | 'preview';
4688
- featuresConfig?: FeatureConfigs & TExtraFeatures;
4689
4689
  }
4690
4690
 
4691
4691
  declare interface IWorksheetLayout {
@@ -4737,7 +4737,7 @@ declare interface IWorksheetPermissionV2 {
4737
4737
  reason: string;
4738
4738
  }
4739
4739
 
4740
- export declare interface IWorksheetProps<TExtraFeatures extends Record<string, unknown> = Record<string, never>> extends IBaseWorksheetProps, IWorksheetCallbackProps, ICueCanvasProps, ICueCanvasCallbackProps, IPointerSyncCallbackProps {
4740
+ export declare interface IWorksheetProps extends IBaseWorksheetProps, IWorksheetCallbackProps, ICueCanvasProps, ICueCanvasCallbackProps, IPointerSyncCallbackProps {
4741
4741
  learnosityActivityRef?: string;
4742
4742
  learnosityItems: ILearnosityItem[];
4743
4743
  learnosityResponses?: Record<string, IWorksheetResponse>;
@@ -4750,7 +4750,6 @@ export declare interface IWorksheetProps<TExtraFeatures extends Record<string, u
4750
4750
  studentId: string;
4751
4751
  attemptId?: string;
4752
4752
  subjectiveProps?: ISubjectiveSheetProps;
4753
- featuresConfig?: FeatureConfigs & TExtraFeatures;
4754
4753
  }
4755
4754
 
4756
4755
  export declare interface IWorksheetQuestion extends ILearnosityQuestion {
@@ -5627,11 +5626,6 @@ declare interface StickerElement {
5627
5626
  name?: string;
5628
5627
  }
5629
5628
 
5630
- declare interface StickerFeatureConfig {
5631
- studentClassroomId: string;
5632
- enableStickers: boolean;
5633
- }
5634
-
5635
5629
  export declare const StickerFilledIcon: FC<SVGProps<SVGSVGElement>>;
5636
5630
 
5637
5631
  export declare const StickerIcon: FC<SVGProps<SVGSVGElement>>;
@@ -6623,6 +6617,10 @@ declare type TQuestionByQuestionOverviewList = {
6623
6617
  user_node_id: string;
6624
6618
  }[];
6625
6619
 
6620
+ declare enum TRACKING_ID_STUDENT {
6621
+ INFO_ABOUT_GAME_ACTIVITIES = "INFO_ABOUT_GAME_ACTIVITIES"
6622
+ }
6623
+
6626
6624
  declare type TRecommendedChaptersFilter = TRecommendedChaptersQuery & {
6627
6625
  chapter_codes?: string[];
6628
6626
  };
@@ -6857,6 +6855,8 @@ export declare type TTrackCTA = (params: {
6857
6855
 
6858
6856
  export declare type TTrackEvent = (eventType: string, props: Record<string, unknown>, overrides?: Record<string, unknown>) => void;
6859
6857
 
6858
+ declare type TTrackingId = TRACKING_ID_STUDENT;
6859
+
6860
6860
  export declare type TTrackInput = (params: {
6861
6861
  label: string;
6862
6862
  value: string | boolean | number;
@@ -7303,7 +7303,7 @@ declare type WithSrc = {
7303
7303
  src: string;
7304
7304
  };
7305
7305
 
7306
- export declare const Worksheet: NamedExoticComponent<IWorksheetContainerProps<Record<string, never>> & RefAttributes<IWorksheetRef>>;
7306
+ export declare const Worksheet: NamedExoticComponent<IWorksheetContainerProps & RefAttributes<IWorksheetRef>>;
7307
7307
 
7308
7308
  export declare const WORKSHEET_ACTION_BAR_HEIGHT = 56;
7309
7309
 
package/dist/index.js CHANGED
@@ -320,8 +320,8 @@ import { default as Id } from "./features/stickers/stickers-effects/stickers-eff
320
320
  import { default as Td } from "./features/stickers/sticker-selector/sticker-selector.js";
321
321
  import { StickersProvider as Cd } from "./features/stickers/stickers-effects/context/sticker-provider.js";
322
322
  import { useStickers as Ad } from "./features/stickers/stickers-effects/hooks/use-stickers.js";
323
- import { useHandleStickerSend as hd } from "./features/stickers/sticker-selector/hooks/use-handle-sticker-send.js";
324
- import { useStickersJourney as Rd } from "./features/stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js";
323
+ import { useHandleStickerSend as hd } from "./features/stickers/hooks/use-handle-sticker-send.js";
324
+ import { useStickersJourney as Rd } from "./features/stickers/hooks/use-stickers-journey/use-stickers-journey.js";
325
325
  import { default as kd } from "./features/student-details/student-details.js";
326
326
  import { default as Nd } from "./features/utils/load-script.js";
327
327
  import { default as gd } from "./features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.4.9-m",
3
+ "version": "3.4.9",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -1,33 +0,0 @@
1
- import { useCallback as n } from "react";
2
- import c from "../../../communication/hooks/use-inclass-message-broker/use-inclass-message-broker.js";
3
- import { useStickers as d } from "../../stickers-effects/hooks/use-stickers.js";
4
- const l = (r) => {
5
- const { publish: e } = c({
6
- studentClassroomId: r
7
- }), { showSticker: t } = d();
8
- return n(
9
- (s, a) => {
10
- const o = {
11
- message: {
12
- data: {
13
- selectedSticker: {
14
- id: s.id,
15
- name: s.name
16
- },
17
- effectId: a
18
- }
19
- },
20
- type: "STICKERS"
21
- };
22
- t(o), e == null || e({
23
- eventName: "STICKERS",
24
- eventPayload: o
25
- });
26
- },
27
- [e, t]
28
- );
29
- };
30
- export {
31
- l as useHandleStickerSend
32
- };
33
- //# sourceMappingURL=use-handle-sticker-send.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-handle-sticker-send.js","sources":["../../../../../src/features/stickers/sticker-selector/hooks/use-handle-sticker-send.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nimport useInClassMessageBroker from '../../../communication/hooks/use-inclass-message-broker/use-inclass-message-broker';\nimport { useStickers } from '../../stickers-effects/hooks/use-stickers';\nimport type {\n IStickerData,\n TStickerAnimationEffects,\n TStickersPayload,\n} from '../../stickers-types';\n\nexport const useHandleStickerSend = (studentClassroomId?: string) => {\n const { publish } = useInClassMessageBroker({\n studentClassroomId,\n });\n\n const { showSticker } = useStickers();\n\n const sendSticker = useCallback(\n (sticker: IStickerData, effect: TStickerAnimationEffects) => {\n const payload: TStickersPayload = {\n message: {\n data: {\n selectedSticker: {\n id: sticker.id,\n name: sticker.name,\n },\n effectId: effect,\n },\n },\n type: 'STICKERS',\n };\n\n showSticker(payload);\n\n publish?.({\n eventName: 'STICKERS',\n eventPayload: payload,\n });\n },\n [publish, showSticker],\n );\n\n return sendSticker;\n};\n"],"names":["useHandleStickerSend","studentClassroomId","publish","useInClassMessageBroker","showSticker","useStickers","useCallback","sticker","effect","payload"],"mappings":";;;AAUa,MAAAA,IAAuB,CAACC,MAAgC;AAC7D,QAAA,EAAE,SAAAC,EAAQ,IAAIC,EAAwB;AAAA,IAC1C,oBAAAF;AAAA,EAAA,CACD,GAEK,EAAE,aAAAG,MAAgBC;AA2BjB,SAzBaC;AAAA,IAClB,CAACC,GAAuBC,MAAqC;AAC3D,YAAMC,IAA4B;AAAA,QAChC,SAAS;AAAA,UACP,MAAM;AAAA,YACJ,iBAAiB;AAAA,cACf,IAAIF,EAAQ;AAAA,cACZ,MAAMA,EAAQ;AAAA,YAChB;AAAA,YACA,UAAUC;AAAA,UACZ;AAAA,QACF;AAAA,QACA,MAAM;AAAA,MAAA;AAGR,MAAAJ,EAAYK,CAAO,GAETP,KAAA,QAAAA,EAAA;AAAA,QACR,WAAW;AAAA,QACX,cAAcO;AAAA,MAAA;AAAA,IAElB;AAAA,IACA,CAACP,GAASE,CAAW;AAAA,EAAA;AAIzB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-stickers-journey.js","sources":["../../../../../../src/features/stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { JOURNEY_ID_TEACHER } from '../../../../journey/journey-id/journey-id-teacher';\nimport { IndicatorType } from '../../../../journey/use-journey/constants';\nimport { useJourney } from '../../../../journey/use-journey/use-journey';\nimport type { IArrowTooltipProps } from '../../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport Button from '../../../../ui/buttons/button/button';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Separator from '../../../../ui/separator/separator';\nimport Text from '../../../../ui/text/text';\nimport type { IUseTeacherStickersJourneyProps } from './use-stickers-journey-types';\n\nexport const useStickersJourney = ({\n triggerRef,\n triggerElement,\n tooltipConfig,\n}: IUseTeacherStickersJourneyProps) => {\n const { setJourney, nextCoachmark, endJourney } = useJourney();\n\n const endTeacherStickersOnboarding = useCallback(() => {\n endJourney(JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY);\n }, [endJourney]);\n\n const startTeacherStickersJourney = useCallback(() => {\n if (!triggerRef.current) return;\n\n const indicatorPayload = {\n position: tooltipConfig.position,\n tooltipXCoOrdinates: tooltipConfig.tooltipXCoOrdinates,\n tooltipYCoOrdinates: tooltipConfig.tooltipYCoOrdinates,\n arrowXCoOrdinates: tooltipConfig.arrowXCoOrdinates,\n arrowYCoOrdinates: tooltipConfig.arrowYCoOrdinates,\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n backgroundColor: 'PURPLE_4',\n tooltipItem: (\n <FlexView>\n <FlexView>\n <Text\n $renderOnMobileAs=\"ab3\"\n $renderAs=\"ab3\"\n as=\"span\"\n $inline={true}\n $whiteSpace=\"normal\"\n >\n <Text $renderAs=\"ab3-bold\" as=\"span\" $inline={true}>\n New Stickers\n </Text>{' '}\n - Use them to celebrate little moments of joy!\n </Text>\n </FlexView>\n <Separator height={10} />\n <Button\n renderAs=\"secondary\"\n label=\"Got It\"\n size=\"xsmall\"\n width=\"50%\"\n onClick={endTeacherStickersOnboarding}\n />\n </FlexView>\n ),\n } as IArrowTooltipProps;\n\n setJourney(\n JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY,\n [\n {\n originalElementToHighlightRef: triggerRef,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: triggerElement,\n indicator: indicatorPayload,\n },\n ],\n undefined,\n false,\n );\n\n nextCoachmark(JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY);\n }, [\n triggerRef,\n triggerElement,\n tooltipConfig.position,\n tooltipConfig.tooltipXCoOrdinates,\n tooltipConfig.tooltipYCoOrdinates,\n tooltipConfig.arrowXCoOrdinates,\n tooltipConfig.arrowYCoOrdinates,\n endTeacherStickersOnboarding,\n setJourney,\n nextCoachmark,\n ]);\n\n const stickerJourney = useMemo(\n () => ({\n startTeacherStickersJourney,\n }),\n [startTeacherStickersJourney],\n );\n\n return stickerJourney;\n};\n"],"names":["useStickersJourney","triggerRef","triggerElement","tooltipConfig","setJourney","nextCoachmark","endJourney","useJourney","endTeacherStickersOnboarding","useCallback","JOURNEY_ID_TEACHER","startTeacherStickersJourney","indicatorPayload","FlexView","jsx","jsxs","Text","Separator","Button","IndicatorType","useMemo"],"mappings":";;;;;;;;;AAYO,MAAMA,IAAqB,CAAC;AAAA,EACjC,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AACF,MAAuC;AACrC,QAAM,EAAE,YAAAC,GAAY,eAAAC,GAAe,YAAAC,MAAeC,EAAW,GAEvDC,IAA+BC,EAAY,MAAM;AACrD,IAAAH,EAAWI,EAAmB,sBAAsB;AAAA,EAAA,GACnD,CAACJ,CAAU,CAAC,GAETK,IAA8BF,EAAY,MAAM;AAChD,QAAA,CAACR,EAAW,QAAS;AAEzB,UAAMW,IAAmB;AAAA,MACvB,UAAUT,EAAc;AAAA,MACxB,qBAAqBA,EAAc;AAAA,MACnC,qBAAqBA,EAAc;AAAA,MACnC,mBAAmBA,EAAc;AAAA,MACjC,mBAAmBA,EAAc;AAAA,MACjC,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,+BACGU,GACC,EAAA,UAAA;AAAA,QAAA,gBAAAC,EAACD,GACC,EAAA,UAAA,gBAAAE;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,mBAAkB;AAAA,YAClB,WAAU;AAAA,YACV,IAAG;AAAA,YACH,SAAS;AAAA,YACT,aAAY;AAAA,YAEZ,UAAA;AAAA,cAAA,gBAAAF,EAACE,KAAK,WAAU,YAAW,IAAG,QAAO,SAAS,IAAM,UAEpD,eAAA,CAAA;AAAA,cAAQ;AAAA,cAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAGhB;AAAA,QACA,gBAAAF,EAACG,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,QACvB,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,OAAM;AAAA,YACN,MAAK;AAAA,YACL,OAAM;AAAA,YACN,SAASV;AAAA,UAAA;AAAA,QACX;AAAA,MAAA,GACF;AAAA,IAAA;AAIJ,IAAAJ;AAAA,MACEM,EAAmB;AAAA,MACnB;AAAA,QACE;AAAA,UACE,+BAA+BT;AAAA,UAC/B,MAAMkB,EAAc;AAAA,UACpB,oBAAoBjB;AAAA,UACpB,WAAWU;AAAA,QACb;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GAGFP,EAAcK,EAAmB,sBAAsB;AAAA,EAAA,GACtD;AAAA,IACDT;AAAA,IACAC;AAAA,IACAC,EAAc;AAAA,IACdA,EAAc;AAAA,IACdA,EAAc;AAAA,IACdA,EAAc;AAAA,IACdA,EAAc;AAAA,IACdK;AAAA,IACAJ;AAAA,IACAC;AAAA,EAAA,CACD;AASM,SAPgBe;AAAA,IACrB,OAAO;AAAA,MACL,6BAAAT;AAAA,IAAA;AAAA,IAEF,CAACA,CAA2B;AAAA,EAAA;AAIhC;"}