@cuemath/leap 3.3.5 → 3.3.7-aa0
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 +3 -1
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/assets/lottie/lottie.js +1 -0
- package/dist/assets/lottie/lottie.js.map +1 -1
- package/dist/constants/config.js +5 -0
- package/dist/constants/config.js.map +1 -0
- package/dist/features/auth/comps/otp-input/otp-input.js +19 -18
- package/dist/features/auth/comps/otp-input/otp-input.js.map +1 -1
- package/dist/features/auth/comps/pill-button/pill-button-styled.js +17 -17
- package/dist/features/auth/comps/pill-button/pill-button-styled.js.map +1 -1
- package/dist/features/auth/comps/pill-button/pill-button.js +35 -33
- package/dist/features/auth/comps/pill-button/pill-button.js.map +1 -1
- package/dist/features/auth/comps/user-list/user-item/user-item.js +32 -30
- package/dist/features/auth/comps/user-list/user-item/user-item.js.map +1 -1
- package/dist/features/auth/comps/user-list/user-list.js +20 -19
- package/dist/features/auth/comps/user-list/user-list.js.map +1 -1
- package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-constants.js +9 -9
- package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-constants.js.map +1 -1
- package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-styled.js +58 -29
- package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-styled.js.map +1 -1
- package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js +78 -41
- package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js.map +1 -1
- package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper-styled.js +37 -35
- package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper-styled.js.map +1 -1
- package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js +76 -71
- package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js.map +1 -1
- package/dist/features/auth/signup/custom-input-field/custom-input-field.js +55 -50
- package/dist/features/auth/signup/custom-input-field/custom-input-field.js.map +1 -1
- package/dist/features/auth/signup/custom-input-field/input-wrapper/input-wrapper.js +47 -25
- package/dist/features/auth/signup/custom-input-field/input-wrapper/input-wrapper.js.map +1 -1
- package/dist/features/milestone/constants.js +2 -1
- package/dist/features/milestone/constants.js.map +1 -1
- package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +6 -6
- package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features-constants.js +25 -0
- package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features-constants.js.map +1 -0
- package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features-styled.js +15 -0
- package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features-styled.js.map +1 -0
- package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features.js +90 -0
- package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features.js.map +1 -0
- package/dist/features/parent-dashboard/comps/math-practice/math-practice-constants.js +19 -0
- package/dist/features/parent-dashboard/comps/math-practice/math-practice-constants.js.map +1 -0
- package/dist/features/parent-dashboard/comps/math-practice/math-practice-styled.js +32 -0
- package/dist/features/parent-dashboard/comps/math-practice/math-practice-styled.js.map +1 -0
- package/dist/features/parent-dashboard/comps/math-practice/math-practice.js +67 -0
- package/dist/features/parent-dashboard/comps/math-practice/math-practice.js.map +1 -0
- package/dist/features/parent-dashboard/comps/parent-dashboard-faqs/parent-dashboard-faqs-constants.js +42 -0
- package/dist/features/parent-dashboard/comps/parent-dashboard-faqs/parent-dashboard-faqs-constants.js.map +1 -0
- package/dist/features/parent-dashboard/comps/parent-dashboard-faqs/parent-dashboard-faqs.js +20 -0
- package/dist/features/parent-dashboard/comps/parent-dashboard-faqs/parent-dashboard-faqs.js.map +1 -0
- package/dist/features/student-details/class-details/class-details-utils.js +6 -6
- package/dist/features/trial-session/comps/pla/next-steps/next-steps-constants.js +25 -0
- package/dist/features/trial-session/comps/pla/next-steps/next-steps-constants.js.map +1 -0
- package/dist/features/trial-session/comps/pla/next-steps/next-steps-styled.js +43 -0
- package/dist/features/trial-session/comps/pla/next-steps/next-steps-styled.js.map +1 -0
- package/dist/features/trial-session/comps/pla/next-steps/next-steps.js +49 -0
- package/dist/features/trial-session/comps/pla/next-steps/next-steps.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-countdown.js +29 -0
- package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-countdown.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-status-config.js +131 -0
- package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-status-config.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js +11 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js +19 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status-styled.js +17 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status-styled.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status.js +126 -0
- package/dist/features/trial-session/comps/pla/session-status/session-status.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js +52 -0
- package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-summary/session-summary.js +52 -0
- package/dist/features/trial-session/comps/pla/session-summary/session-summary.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card-styled.js +17 -0
- package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card-styled.js.map +1 -0
- package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js +56 -0
- package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js.map +1 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-constants.js +5 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-constants.js.map +1 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-styled.js +17 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-styled.js.map +1 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js +5 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js.map +1 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js +96 -0
- package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js.map +1 -0
- package/dist/features/trial-session/comps/session-report/report-information/report-card.js +31 -16
- package/dist/features/trial-session/comps/session-report/report-information/report-card.js.map +1 -1
- package/dist/features/trial-session/comps/session-report/report-information/report-information-styled.js +21 -13
- package/dist/features/trial-session/comps/session-report/report-information/report-information-styled.js.map +1 -1
- package/dist/features/trial-session/comps/session-report/report-information/report-information.js +166 -94
- package/dist/features/trial-session/comps/session-report/report-information/report-information.js.map +1 -1
- package/dist/features/trial-session/comps/student-profile/student-profile-highlights/student-profile-highlights.js +46 -31
- package/dist/features/trial-session/comps/student-profile/student-profile-highlights/student-profile-highlights.js.map +1 -1
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-helpers.js +12 -0
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-helpers.js.map +1 -0
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-styled.js +121 -42
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-styled.js.map +1 -1
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js +174 -56
- package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/ui/buttons/icon-button/icon-button.js +32 -29
- package/dist/features/ui/buttons/icon-button/icon-button.js.map +1 -1
- package/dist/features/ui/inputs/base-select-input/select-section/select-section.js +12 -11
- package/dist/features/ui/inputs/base-select-input/select-section/select-section.js.map +1 -1
- package/dist/features/ui/modals/modal.js +30 -28
- package/dist/features/ui/modals/modal.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +38 -38
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
- package/dist/index.d.ts +96 -10
- package/dist/index.js +388 -368
- package/dist/index.js.map +1 -1
- package/dist/node_modules/date-fns/_lib/getRoundingMethod.js +10 -0
- package/dist/node_modules/date-fns/_lib/getRoundingMethod.js.map +1 -0
- package/dist/node_modules/date-fns/differenceInMilliseconds.js +9 -0
- package/dist/node_modules/date-fns/differenceInMilliseconds.js.map +1 -0
- package/dist/node_modules/date-fns/differenceInSeconds.js +11 -0
- package/dist/node_modules/date-fns/differenceInSeconds.js.map +1 -0
- package/dist/node_modules/date-fns/fromUnixTime.js +9 -0
- package/dist/node_modules/date-fns/fromUnixTime.js.map +1 -0
- package/dist/static/{book-checked-green.c275dbd9.svg → book-checked-green.0436b91e.svg} +1 -1
- package/dist/static/community-bulb-yellow-2.f89c30f9.svg +1 -0
- package/dist/static/learning-puzzle-bot.6fe93cf6.svg +1 -0
- package/dist/static/username-responsive.787b5515.json +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trial-session-types.js","sources":["../../../src/features/trial-session/trial-session-types.ts"],"sourcesContent":["import type { TNodeTypes } from '../../types/models/worksheet';\nimport type { IInfoMessage } from '../circle-games/games/web-view/web-view-types';\nimport type {\n IMilestoneConfig,\n TCourseStream,\n TPreferenceCategory,\n} from '../milestone/create/milestone-create-types';\nimport type { IAvatarLayer } from '../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../ui/types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type {\n ITrialCircleConfig,\n ITrialCircleGameParams,\n} from './comps/trial-circle-game/trial-circle-game-types';\nimport type { TrialPageId } from './trial-session-constants';\nimport type { Dispatch, ReactElement, SetStateAction } from 'react';\n\nexport type { TSessionReportData as TSessionReport } from './comps/session-report/session-report-types';\n\nexport type TSlideId = TrialPageId;\n\nexport type TRegionData = {\n opportunity_country: string;\n};\n\nexport type TPreferenceSchema = {\n preference_code: string;\n preference_name: string;\n preference_category: TPreferenceCategory;\n};\n\nexport enum EClassTimeAlertLevel {\n FIVE_MIN = '5min',\n FIFTEEN_MIN = '15min',\n}\ninterface IButtonConfig {\n buttonLabel: string;\n pageId: string;\n}\n\nexport interface ISolution {\n media?: string;\n media_type?: 'image' | 'video';\n text?: string;\n}\n\nexport type TDegreeInformation = {
|
|
1
|
+
{"version":3,"file":"trial-session-types.js","sources":["../../../src/features/trial-session/trial-session-types.ts"],"sourcesContent":["import type { TNodeTypes } from '../../types/models/worksheet';\nimport type { IInfoMessage } from '../circle-games/games/web-view/web-view-types';\nimport type {\n IMilestoneConfig,\n TCourseStream,\n TPreferenceCategory,\n} from '../milestone/create/milestone-create-types';\nimport type { IAvatarLayer } from '../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../ui/types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type {\n ITrialCircleConfig,\n ITrialCircleGameParams,\n} from './comps/trial-circle-game/trial-circle-game-types';\nimport type { TrialPageId } from './trial-session-constants';\nimport type { Dispatch, ReactElement, SetStateAction } from 'react';\n\nexport type { TSessionReportData as TSessionReport } from './comps/session-report/session-report-types';\n\nexport type TSlideId = TrialPageId;\n\nexport type TRegionData = {\n opportunity_country: string;\n};\n\nexport type TPreferenceSchema = {\n preference_code: string;\n preference_name: string;\n preference_category: TPreferenceCategory;\n};\n\nexport enum EClassTimeAlertLevel {\n FIVE_MIN = '5min',\n FIFTEEN_MIN = '15min',\n}\ninterface IButtonConfig {\n buttonLabel: string;\n pageId: string;\n}\n\nexport interface ISolution {\n media?: string;\n media_type?: 'image' | 'video';\n text?: string;\n}\n\nexport type TDegreeInformation = {\n degree_name?: string;\n field_of_study?: string;\n degree_code?: string;\n};\n\nexport interface ITeacherProfileDetails {\n lower_grade: string;\n higher_grade: string;\n header_image: string;\n years_of_experience: number;\n number_of_students_taught: number;\n countries: string[];\n degree: TDegreeInformation;\n first_name: string;\n last_name: string;\n teacher_profile_url?: string;\n}\n\nexport interface ISlide {\n id: TrialPageId;\n renderAs: 'split' | 'full';\n renderAVIn: 'left' | 'right';\n header: string;\n subHeader?: string;\n prevPage?: IButtonConfig;\n nextPage?: IButtonConfig;\n cues?: string[];\n dos?: string[];\n donts?: string[];\n navigationLabel?: string;\n slideTag?: string;\n teacher_profile?: ITeacherProfileDetails;\n solutions?: ISolution[];\n enableSessionPerk?: boolean;\n showProfileHighlights?: boolean;\n}\n\nexport interface TGoals {\n goal_code?: string;\n milestone_date_ts?: number;\n goal_category?: string;\n milestone_name?: string;\n publish?: boolean;\n}\n\nexport interface ITrialSessionFormFields {\n id: string;\n name?: string;\n grade?: string;\n curriculum?: string;\n goals?: TGoals[];\n studentProfile?: {\n profileSummary?: string;\n dummyProfileImageIndex?: number;\n summaryFetched?: boolean;\n summaryFetchFailed?: boolean;\n };\n userNodeId?: string;\n nodeId?: string;\n nodeType?: TNodeTypes;\n attemptId?: string;\n preferences?: TPreference[];\n personalizedLevel?: string[];\n personalizedFocus?: string[];\n personalizedBehaviors?: string[];\n personalizedObjectives?: string[];\n isCircleGamePlayed?: boolean;\n isCirclePuzzleSolved?: boolean;\n isCircleSkillCompleted?: boolean;\n studentTimezone?: string;\n showCircleGameScreen?: boolean;\n accuracyStr?: string;\n totalTimeTaken?: number;\n chapterId?: string;\n matchmakingId?: string;\n numberInNameError?: boolean;\n}\n\nexport interface IButtonState {\n isDisabled: boolean;\n isLoading: boolean;\n}\n\nexport interface ITrialHomeData {\n pages: ISlide[];\n demo_info: {\n student_classroom_id: string;\n stream: TCourseStream;\n region_data: TRegionData;\n };\n parent: {\n name: string;\n };\n student: {\n grade: string;\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n };\n teacher: {\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n };\n circle_trial_game_config: ITrialCircleConfig;\n}\n\nexport interface IClassTimeAlertConfig {\n alertLevel: EClassTimeAlertLevel | null;\n isVisible: boolean;\n onComplete: () => void;\n}\n\nexport interface ITrialSessionProps {\n countryCode?: string;\n classStartedOn?: Date;\n height?: string | number;\n userType: TUserTypes;\n studentId: string;\n teacherId: string;\n teacherClassroomId: string;\n teacherPanel?: ReactElement;\n studentPanel?: ReactElement;\n formData?: ITrialSessionFormFields;\n onFormDataChange?: Dispatch<SetStateAction<ITrialSessionFormFields | undefined>>;\n worksheet?: ReactElement;\n worksheetNavigationPanel?: ReactElement;\n questionsRatingPanel?: ReactElement;\n studentAbsentInClass?: boolean;\n openEndClassModal?: () => void;\n trialGameUrl: string;\n handleInfoMessage: (message: IInfoMessage) => void;\n classTimeAlertConfig?: IClassTimeAlertConfig;\n classDuration?: number;\n}\n\nexport interface ITrialSessionContext\n extends Pick<\n ITrialSessionProps,\n | 'classStartedOn'\n | 'formData'\n | 'teacherPanel'\n | 'studentId'\n | 'teacherId'\n | 'studentPanel'\n | 'worksheet'\n | 'worksheetNavigationPanel'\n | 'questionsRatingPanel'\n | 'openEndClassModal'\n | 'studentAbsentInClass'\n | 'classDuration'\n | 'classTimeAlertConfig'\n > {\n buttonState: { left: IButtonState; right: IButtonState };\n isTeacher: boolean;\n milestoneConfig: IMilestoneConfig;\n slideConfig: ISlide;\n updateButtonState: (\n btnNavDir: 'left' | 'right' | 'both',\n currentState: IButtonState | { left: IButtonState; right: IButtonState },\n ) => void;\n updateSlideConfig: (config: Partial<ITrialSessionFormFields>) => void;\n trialHomeData: ITrialHomeData;\n onTrialInformationUpdate?: () => void;\n circleGames: ITrialCircleGameParams;\n trialGameUrl: string;\n handleInfoMessage: (message: IInfoMessage) => void;\n onRemoveOptionalSlides?: (grade?: string) => void;\n}\n\nexport interface ITrialSessionViewProps extends ITrialSessionProps {\n trialHomeData: ITrialHomeData;\n milestoneConfig: IMilestoneConfig;\n studentTimezone?: string;\n onStudentTimezoneUpdate?: () => void;\n onTrialInformationUpdate?: () => void;\n handleInfoMessage: (message: IInfoMessage) => void;\n onRemoveOptionalSlides?: (grade?: string) => void;\n}\n"],"names":["EClassTimeAlertLevel"],"mappings":"AA+BY,IAAAA,sBAAAA,OACVA,EAAA,WAAW,QACXA,EAAA,cAAc,SAFJA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -1,38 +1,41 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { memo as
|
|
3
|
-
import { useTheme as
|
|
4
|
-
import { ILLUSTRATIONS as
|
|
5
|
-
import
|
|
6
|
-
import { EDeviceType as
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { memo as L, useMemo as z, useCallback as B } from "react";
|
|
3
|
+
import { useTheme as T } from "styled-components";
|
|
4
|
+
import { ILLUSTRATIONS as $ } from "../../../../assets/illustrations/illustrations.js";
|
|
5
|
+
import k from "../../hooks/use-click-handler.js";
|
|
6
|
+
import { EDeviceType as m } from "../../theme/constants.js";
|
|
7
7
|
import { Loader as A } from "../button/button-styled.js";
|
|
8
|
-
import { IconButtonWrapper as
|
|
9
|
-
const
|
|
8
|
+
import { IconButtonWrapper as O, IconWrapper as h } from "./icon-button-styled.js";
|
|
9
|
+
const y = L((a) => {
|
|
10
10
|
const {
|
|
11
|
-
Icon:
|
|
12
|
-
size:
|
|
13
|
-
sizeOnMobile:
|
|
11
|
+
Icon: u,
|
|
12
|
+
size: e,
|
|
13
|
+
sizeOnMobile: i,
|
|
14
14
|
sizeOnTablet: r,
|
|
15
|
-
onClick:
|
|
16
|
-
renderAs:
|
|
17
|
-
disabled:
|
|
18
|
-
analyticsLabel:
|
|
19
|
-
analyticsProps:
|
|
20
|
-
customBgColor:
|
|
21
|
-
busy:
|
|
22
|
-
} =
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
onClick: d,
|
|
16
|
+
renderAs: s,
|
|
17
|
+
disabled: p,
|
|
18
|
+
analyticsLabel: f,
|
|
19
|
+
analyticsProps: b,
|
|
20
|
+
customBgColor: C,
|
|
21
|
+
busy: n
|
|
22
|
+
} = a, { handleClick: c } = k({ analyticsLabel: f, analyticsProps: b }, d), { device: t } = T(), l = z(() => t <= m.MOBILE ? i || r || e : t <= m.TABLET && r || e, [t, e, i, r]), I = B(() => {
|
|
23
|
+
if (n) return null;
|
|
24
|
+
c();
|
|
25
|
+
}, [n, c]);
|
|
26
|
+
return /* @__PURE__ */ o(
|
|
27
|
+
O,
|
|
25
28
|
{
|
|
26
|
-
disabled:
|
|
27
|
-
$size:
|
|
28
|
-
$buttonRenderAs:
|
|
29
|
-
onClick:
|
|
30
|
-
$customBgColor:
|
|
31
|
-
children:
|
|
29
|
+
disabled: p,
|
|
30
|
+
$size: e,
|
|
31
|
+
$buttonRenderAs: s,
|
|
32
|
+
onClick: I,
|
|
33
|
+
$customBgColor: C,
|
|
34
|
+
children: n ? /* @__PURE__ */ o(A, { src: $.LOADER, alt: "Loader", $size: l || "small" }) : /* @__PURE__ */ o(h, { $size: l, $buttonRenderAs: s, children: /* @__PURE__ */ o(u, {}) })
|
|
32
35
|
}
|
|
33
36
|
);
|
|
34
|
-
}),
|
|
37
|
+
}), W = y;
|
|
35
38
|
export {
|
|
36
|
-
|
|
39
|
+
W as default
|
|
37
40
|
};
|
|
38
41
|
//# sourceMappingURL=icon-button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-button.js","sources":["../../../../../src/features/ui/buttons/icon-button/icon-button.tsx"],"sourcesContent":["import type { IIconButtonProps } from './icon-button-types';\n\nimport { memo, useMemo, type FC } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport useClickHandler from '../../hooks/use-click-handler';\nimport { EDeviceType } from '../../theme/constants';\nimport { Loader } from '../button/button-styled';\nimport * as Styled from './icon-button-styled';\n\nconst IconButton: FC<IIconButtonProps> = memo(props => {\n const {\n Icon,\n size,\n sizeOnMobile,\n sizeOnTablet,\n onClick,\n renderAs,\n disabled,\n analyticsLabel,\n analyticsProps,\n customBgColor,\n busy,\n } = props;\n const { handleClick } = useClickHandler({ analyticsLabel, analyticsProps }, onClick);\n const { device } = useTheme();\n const renderSize = useMemo(() => {\n if (device <= EDeviceType.MOBILE) {\n return sizeOnMobile || sizeOnTablet || size;\n }\n\n if (device <= EDeviceType.TABLET) {\n return sizeOnTablet || size;\n }\n\n return size;\n }, [device, size, sizeOnMobile, sizeOnTablet]);\n\n return (\n <Styled.IconButtonWrapper\n disabled={disabled}\n $size={size}\n $buttonRenderAs={renderAs}\n onClick={
|
|
1
|
+
{"version":3,"file":"icon-button.js","sources":["../../../../../src/features/ui/buttons/icon-button/icon-button.tsx"],"sourcesContent":["import type { IIconButtonProps } from './icon-button-types';\n\nimport { memo, useCallback, useMemo, type FC } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport useClickHandler from '../../hooks/use-click-handler';\nimport { EDeviceType } from '../../theme/constants';\nimport { Loader } from '../button/button-styled';\nimport * as Styled from './icon-button-styled';\n\nconst IconButton: FC<IIconButtonProps> = memo(props => {\n const {\n Icon,\n size,\n sizeOnMobile,\n sizeOnTablet,\n onClick,\n renderAs,\n disabled,\n analyticsLabel,\n analyticsProps,\n customBgColor,\n busy,\n } = props;\n const { handleClick } = useClickHandler({ analyticsLabel, analyticsProps }, onClick);\n const { device } = useTheme();\n const renderSize = useMemo(() => {\n if (device <= EDeviceType.MOBILE) {\n return sizeOnMobile || sizeOnTablet || size;\n }\n\n if (device <= EDeviceType.TABLET) {\n return sizeOnTablet || size;\n }\n\n return size;\n }, [device, size, sizeOnMobile, sizeOnTablet]);\n\n const handleOnClick = useCallback(() => {\n if (busy) return null;\n\n handleClick();\n }, [busy, handleClick]);\n\n return (\n <Styled.IconButtonWrapper\n disabled={disabled}\n $size={size}\n $buttonRenderAs={renderAs}\n onClick={handleOnClick}\n $customBgColor={customBgColor}\n >\n {busy ? (\n <Loader src={ILLUSTRATIONS.LOADER} alt=\"Loader\" $size={renderSize || 'small'} />\n ) : (\n <Styled.IconWrapper $size={renderSize} $buttonRenderAs={renderAs}>\n <Icon />\n </Styled.IconWrapper>\n )}\n </Styled.IconButtonWrapper>\n );\n});\n\nexport default IconButton;\n"],"names":["IconButton","memo","props","Icon","size","sizeOnMobile","sizeOnTablet","onClick","renderAs","disabled","analyticsLabel","analyticsProps","customBgColor","busy","handleClick","useClickHandler","device","useTheme","renderSize","useMemo","EDeviceType","handleOnClick","useCallback","jsx","Styled.IconButtonWrapper","Loader","ILLUSTRATIONS","Styled.IconWrapper","IconButton$1"],"mappings":";;;;;;;;AAWA,MAAMA,IAAmCC,EAAK,CAASC,MAAA;AAC/C,QAAA;AAAA,IACJ,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,MAAAC;AAAA,EACE,IAAAX,GACE,EAAE,aAAAY,MAAgBC,EAAgB,EAAE,gBAAAL,GAAgB,gBAAAC,EAAA,GAAkBJ,CAAO,GAC7E,EAAE,QAAAS,MAAWC,KACbC,IAAaC,EAAQ,MACrBH,KAAUI,EAAY,SACjBf,KAAgBC,KAAgBF,IAGrCY,KAAUI,EAAY,UACjBd,KAAgBF,GAIxB,CAACY,GAAQZ,GAAMC,GAAcC,CAAY,CAAC,GAEvCe,IAAgBC,EAAY,MAAM;AACtC,QAAIT,EAAa,QAAA;AAEL,IAAAC;EAAA,GACX,CAACD,GAAMC,CAAW,CAAC;AAGpB,SAAA,gBAAAS;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,UAAAf;AAAA,MACA,OAAOL;AAAA,MACP,iBAAiBI;AAAA,MACjB,SAASa;AAAA,MACT,gBAAgBT;AAAA,MAEf,UAAAC,sBACEY,GAAO,EAAA,KAAKC,EAAc,QAAQ,KAAI,UAAS,OAAOR,KAAc,SAAS,IAE7E,gBAAAK,EAAAI,GAAA,EAAmB,OAAOT,GAAY,iBAAiBV,GACtD,UAAC,gBAAAe,EAAApB,GAAA,CAAA,CAAK,EACR,CAAA;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC,GAEDyB,IAAe5B;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { jsx as o, jsxs as
|
|
2
|
-
import { memo as
|
|
3
|
-
import
|
|
1
|
+
import { jsx as o, jsxs as u } from "react/jsx-runtime";
|
|
2
|
+
import { memo as b, useCallback as l } from "react";
|
|
3
|
+
import f from "../../../section-list/section-list.js";
|
|
4
4
|
import d from "../../../text/text.js";
|
|
5
|
-
import { SelectOptionHeader as
|
|
5
|
+
import { SelectOptionHeader as x, SelectOptionWrapper as A } from "./select-section-styled.js";
|
|
6
6
|
const S = ({
|
|
7
7
|
sectionOptions: a,
|
|
8
8
|
theme: m,
|
|
@@ -10,12 +10,12 @@ const S = ({
|
|
|
10
10
|
onChange: c
|
|
11
11
|
}) => {
|
|
12
12
|
const t = m === "dark", p = l(
|
|
13
|
-
(e) => /* @__PURE__ */ o(
|
|
13
|
+
(e) => /* @__PURE__ */ o(x, { $gutterX: 1, children: /* @__PURE__ */ o(d, { $renderAs: "ac4", $color: t ? "WHITE_T_38" : "BLACK_T_38", children: e.title }) }),
|
|
14
14
|
[t]
|
|
15
15
|
), T = l(
|
|
16
16
|
(e) => {
|
|
17
|
-
const { id: r, label: $, tag:
|
|
18
|
-
return /* @__PURE__ */
|
|
17
|
+
const { id: r, label: $, tag: i, textDecoration: h } = e, s = r === n;
|
|
18
|
+
return /* @__PURE__ */ u(
|
|
19
19
|
A,
|
|
20
20
|
{
|
|
21
21
|
className: "base-select-input-option",
|
|
@@ -29,12 +29,13 @@ const S = ({
|
|
|
29
29
|
/* @__PURE__ */ o(
|
|
30
30
|
d,
|
|
31
31
|
{
|
|
32
|
-
$renderAs: t ?
|
|
32
|
+
$renderAs: t ? s ? "ub2-bold" : "ub2" : s ? "body1Medium" : "body1",
|
|
33
33
|
$color: t ? "WHITE_T_87" : "BLACK",
|
|
34
|
+
$textDecoration: h,
|
|
34
35
|
children: $
|
|
35
36
|
}
|
|
36
37
|
),
|
|
37
|
-
|
|
38
|
+
i || null
|
|
38
39
|
]
|
|
39
40
|
}
|
|
40
41
|
);
|
|
@@ -42,7 +43,7 @@ const S = ({
|
|
|
42
43
|
[n, t, c]
|
|
43
44
|
);
|
|
44
45
|
return /* @__PURE__ */ o(
|
|
45
|
-
|
|
46
|
+
f,
|
|
46
47
|
{
|
|
47
48
|
data: a,
|
|
48
49
|
renderSectionHeader: p,
|
|
@@ -50,7 +51,7 @@ const S = ({
|
|
|
50
51
|
keyExtractor: ({ id: e }, r) => `${e}_${r}`
|
|
51
52
|
}
|
|
52
53
|
);
|
|
53
|
-
}, j =
|
|
54
|
+
}, j = b(S);
|
|
54
55
|
export {
|
|
55
56
|
j as default
|
|
56
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-section.js","sources":["../../../../../../src/features/ui/inputs/base-select-input/select-section/select-section.tsx"],"sourcesContent":["import type { ISectionOption } from '../../../section-list/section-list-types';\nimport type { ISelectOption } from '../base-select-input-types';\nimport type { ISelectSection } from './select-section-types';\nimport type { ReactElement } from 'react';\n\nimport { memo, useCallback } from 'react';\n\nimport SectionList from '../../../section-list/section-list';\nimport Text from '../../../text/text';\nimport * as Styled from './select-section-styled';\n\nconst SelectSectionComponent = <IDType extends string | number>({\n sectionOptions,\n theme,\n value,\n onChange,\n}: ISelectSection<IDType>): ReactElement => {\n const isDarkTheme = theme === 'dark';\n\n const renderSectionHeader = useCallback(\n (section: ISectionOption<ISelectOption<IDType>>) => {\n return (\n <Styled.SelectOptionHeader $gutterX={1}>\n <Text $renderAs=\"ac4\" $color={isDarkTheme ? 'WHITE_T_38' : 'BLACK_T_38'}>\n {section.title}\n </Text>\n </Styled.SelectOptionHeader>\n );\n },\n [isDarkTheme],\n );\n\n const renderItem = useCallback(\n (dataItem: ISelectOption<IDType>) => {\n const { id, label, tag } = dataItem;\n const selected = id === value;\n const lightThemeRenderAs = selected ? 'body1Medium' : 'body1';\n const darkThemeRenderAs = selected ? 'ub2-bold' : 'ub2';\n const Tag = tag ? (tag as ReactElement) : null;\n\n return (\n <Styled.SelectOptionWrapper\n className=\"base-select-input-option\"\n onClick={() => onChange(id, dataItem)}\n $width=\"100%\"\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $flexGapX={0.5}\n >\n <Text\n $renderAs={isDarkTheme ? darkThemeRenderAs : lightThemeRenderAs}\n $color={isDarkTheme ? 'WHITE_T_87' : 'BLACK'}\n >\n {label}\n </Text>\n\n {Tag}\n </Styled.SelectOptionWrapper>\n );\n },\n [value, isDarkTheme, onChange],\n );\n\n return (\n <SectionList<ISelectOption<IDType>>\n data={sectionOptions}\n renderSectionHeader={renderSectionHeader}\n renderItem={renderItem}\n keyExtractor={({ id }, idx) => `${id}_${idx}`}\n />\n );\n};\n\nconst SelectSection = memo(SelectSectionComponent) as <IDType extends string | number>(\n props: ISelectSection<IDType>,\n) => ReactElement;\n\nexport default SelectSection;\n"],"names":["SelectSectionComponent","sectionOptions","theme","value","onChange","isDarkTheme","renderSectionHeader","useCallback","section","Styled.SelectOptionHeader","jsx","Text","renderItem","dataItem","id","label","tag","selected","jsxs","Styled.SelectOptionWrapper","SectionList","idx","SelectSection","memo"],"mappings":";;;;;AAWA,MAAMA,IAAyB,CAAiC;AAAA,EAC9D,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AACF,MAA4C;AAC1C,QAAMC,IAAcH,MAAU,QAExBI,IAAsBC;AAAA,IAC1B,CAACC,wBAEIC,GAAA,EAA0B,UAAU,GACnC,UAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,OAAM,QAAQN,IAAc,eAAe,cACxD,UAAAG,EAAQ,OACX,EACF,CAAA;AAAA,IAGJ,CAACH,CAAW;AAAA,EAAA,GAGRO,IAAaL;AAAA,IACjB,CAACM,MAAoC;AACnC,YAAM,EAAE,IAAAC,GAAI,OAAAC,GAAO,KAAAC,
|
|
1
|
+
{"version":3,"file":"select-section.js","sources":["../../../../../../src/features/ui/inputs/base-select-input/select-section/select-section.tsx"],"sourcesContent":["import type { ISectionOption } from '../../../section-list/section-list-types';\nimport type { ISelectOption } from '../base-select-input-types';\nimport type { ISelectSection } from './select-section-types';\nimport type { ReactElement } from 'react';\n\nimport { memo, useCallback } from 'react';\n\nimport SectionList from '../../../section-list/section-list';\nimport Text from '../../../text/text';\nimport * as Styled from './select-section-styled';\n\nconst SelectSectionComponent = <IDType extends string | number>({\n sectionOptions,\n theme,\n value,\n onChange,\n}: ISelectSection<IDType>): ReactElement => {\n const isDarkTheme = theme === 'dark';\n\n const renderSectionHeader = useCallback(\n (section: ISectionOption<ISelectOption<IDType>>) => {\n return (\n <Styled.SelectOptionHeader $gutterX={1}>\n <Text $renderAs=\"ac4\" $color={isDarkTheme ? 'WHITE_T_38' : 'BLACK_T_38'}>\n {section.title}\n </Text>\n </Styled.SelectOptionHeader>\n );\n },\n [isDarkTheme],\n );\n\n const renderItem = useCallback(\n (dataItem: ISelectOption<IDType>) => {\n const { id, label, tag, textDecoration } = dataItem;\n const selected = id === value;\n const lightThemeRenderAs = selected ? 'body1Medium' : 'body1';\n const darkThemeRenderAs = selected ? 'ub2-bold' : 'ub2';\n const Tag = tag ? (tag as ReactElement) : null;\n\n return (\n <Styled.SelectOptionWrapper\n className=\"base-select-input-option\"\n onClick={() => onChange(id, dataItem)}\n $width=\"100%\"\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $flexGapX={0.5}\n >\n <Text\n $renderAs={isDarkTheme ? darkThemeRenderAs : lightThemeRenderAs}\n $color={isDarkTheme ? 'WHITE_T_87' : 'BLACK'}\n $textDecoration={textDecoration}\n >\n {label}\n </Text>\n\n {Tag}\n </Styled.SelectOptionWrapper>\n );\n },\n [value, isDarkTheme, onChange],\n );\n\n return (\n <SectionList<ISelectOption<IDType>>\n data={sectionOptions}\n renderSectionHeader={renderSectionHeader}\n renderItem={renderItem}\n keyExtractor={({ id }, idx) => `${id}_${idx}`}\n />\n );\n};\n\nconst SelectSection = memo(SelectSectionComponent) as <IDType extends string | number>(\n props: ISelectSection<IDType>,\n) => ReactElement;\n\nexport default SelectSection;\n"],"names":["SelectSectionComponent","sectionOptions","theme","value","onChange","isDarkTheme","renderSectionHeader","useCallback","section","Styled.SelectOptionHeader","jsx","Text","renderItem","dataItem","id","label","tag","textDecoration","selected","jsxs","Styled.SelectOptionWrapper","SectionList","idx","SelectSection","memo"],"mappings":";;;;;AAWA,MAAMA,IAAyB,CAAiC;AAAA,EAC9D,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AACF,MAA4C;AAC1C,QAAMC,IAAcH,MAAU,QAExBI,IAAsBC;AAAA,IAC1B,CAACC,wBAEIC,GAAA,EAA0B,UAAU,GACnC,UAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,OAAM,QAAQN,IAAc,eAAe,cACxD,UAAAG,EAAQ,OACX,EACF,CAAA;AAAA,IAGJ,CAACH,CAAW;AAAA,EAAA,GAGRO,IAAaL;AAAA,IACjB,CAACM,MAAoC;AACnC,YAAM,EAAE,IAAAC,GAAI,OAAAC,GAAO,KAAAC,GAAK,gBAAAC,MAAmBJ,GACrCK,IAAWJ,MAAOX;AAMtB,aAAA,gBAAAgB;AAAA,QAACC;AAAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAS,MAAMhB,EAASU,GAAID,CAAQ;AAAA,UACpC,QAAO;AAAA,UACP,gBAAe;AAAA,UACf,iBAAgB;AAAA,UAChB,aAAY;AAAA,UACZ,WAAW;AAAA,UAEX,UAAA;AAAA,YAAA,gBAAAH;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,WAAWN,IAdSa,IAAW,aAAa,QADvBA,IAAW,gBAAgB;AAAA,gBAgBhD,QAAQb,IAAc,eAAe;AAAA,gBACrC,iBAAiBY;AAAA,gBAEhB,UAAAF;AAAA,cAAA;AAAA,YACH;AAAA,YAlBQC,KAA8B;AAAA,UAoBrC;AAAA,QAAA;AAAA,MAAA;AAAA,IAGP;AAAA,IACA,CAACb,GAAOE,GAAaD,CAAQ;AAAA,EAAA;AAI7B,SAAA,gBAAAM;AAAA,IAACW;AAAA,IAAA;AAAA,MACC,MAAMpB;AAAA,MACN,qBAAAK;AAAA,MACA,YAAAM;AAAA,MACA,cAAc,CAAC,EAAE,IAAAE,KAAMQ,MAAQ,GAAGR,CAAE,IAAIQ,CAAG;AAAA,IAAA;AAAA,EAAA;AAGjD,GAEMC,IAAgBC,EAAKxB,CAAsB;"}
|
|
@@ -1,55 +1,57 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { captureException as
|
|
3
|
-
import { memo as
|
|
1
|
+
import { jsx as o, jsxs as f } from "react/jsx-runtime";
|
|
2
|
+
import { captureException as E } from "@sentry/browser";
|
|
3
|
+
import { memo as v, useCallback as b, Suspense as n } from "react";
|
|
4
4
|
import { ErrorBoundary as a } from "react-error-boundary";
|
|
5
|
-
import
|
|
5
|
+
import { useTheme as x } from "styled-components";
|
|
6
|
+
import B from "../../../assets/line-icons/icons/cross.js";
|
|
6
7
|
import h from "../error/error.js";
|
|
7
|
-
import
|
|
8
|
-
import
|
|
8
|
+
import S from "../buttons/clickable/clickable.js";
|
|
9
|
+
import W from "../layout/flex-view.js";
|
|
9
10
|
import c from "../loader/app-loader/app-loader.js";
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
import { EDeviceType as w } from "../theme/constants.js";
|
|
12
|
+
import { ModalContainer as d, BottomSheetModal as y, ModalLoaderWrapper as g, SpotlightModal as A, BaseModal as L, CloseButtonContainer as j, BaseModalContent as D } from "./modal-styled.js";
|
|
13
|
+
const N = v(({ modal: u, isClosing: r = !1, onClose: m }) => {
|
|
14
|
+
const { device: C } = x(), k = C <= w.MOBILE, { renderAs: s, element: e, modalWidth: i, isDismissable: p, renderOnMobileAs: M } = u, t = b((l) => {
|
|
15
|
+
E(l);
|
|
16
|
+
}, []), $ = b((l) => {
|
|
17
|
+
l.stopPropagation();
|
|
16
18
|
}, []);
|
|
17
|
-
return s === "bottom-sheet" ? /* @__PURE__ */
|
|
19
|
+
return s === "bottom-sheet" || k && M === "bottom-sheet" ? /* @__PURE__ */ o(d, { $isClosing: r, onClick: p ? m : () => null, children: /* @__PURE__ */ o(y, { $isClosing: r, onClick: $, children: /* @__PURE__ */ o(
|
|
18
20
|
a,
|
|
19
21
|
{
|
|
20
|
-
fallback: /* @__PURE__ */
|
|
21
|
-
onError:
|
|
22
|
-
children: /* @__PURE__ */
|
|
22
|
+
fallback: /* @__PURE__ */ o(W, { $gap: 24, children: /* @__PURE__ */ o(h, { height: "100%" }) }),
|
|
23
|
+
onError: t,
|
|
24
|
+
children: /* @__PURE__ */ o(n, { fallback: /* @__PURE__ */ o(c, { height: "50vh" }), children: e })
|
|
23
25
|
}
|
|
24
|
-
) }) }) : s === "spotlight" ? /* @__PURE__ */
|
|
26
|
+
) }) }) : s === "spotlight" ? /* @__PURE__ */ o(d, { $isClosing: r, children: /* @__PURE__ */ o(
|
|
25
27
|
a,
|
|
26
28
|
{
|
|
27
|
-
fallback: /* @__PURE__ */
|
|
28
|
-
onError:
|
|
29
|
+
fallback: /* @__PURE__ */ o(g, { children: /* @__PURE__ */ o(h, { height: "100vh" }) }),
|
|
30
|
+
onError: t,
|
|
29
31
|
children: /* @__PURE__ */ f(
|
|
30
32
|
n,
|
|
31
33
|
{
|
|
32
|
-
fallback: /* @__PURE__ */
|
|
34
|
+
fallback: /* @__PURE__ */ o(g, { children: /* @__PURE__ */ o(c, { height: "100vh" }) }),
|
|
33
35
|
children: [
|
|
34
|
-
/* @__PURE__ */
|
|
36
|
+
/* @__PURE__ */ o(A, { $isClosing: r }),
|
|
35
37
|
e
|
|
36
38
|
]
|
|
37
39
|
}
|
|
38
40
|
)
|
|
39
41
|
}
|
|
40
|
-
) }) : /* @__PURE__ */
|
|
41
|
-
p !== !1 && /* @__PURE__ */
|
|
42
|
-
/* @__PURE__ */
|
|
42
|
+
) }) : /* @__PURE__ */ o(d, { $isClosing: r, children: /* @__PURE__ */ f(L, { $isClosing: r, $width: i, children: [
|
|
43
|
+
p !== !1 && /* @__PURE__ */ o(j, { $modalWidth: i, children: /* @__PURE__ */ o(S, { label: "Close", onClick: m, children: /* @__PURE__ */ o(B, { width: 40, height: 40 }) }) }),
|
|
44
|
+
/* @__PURE__ */ o(D, { $modalWidth: i, children: /* @__PURE__ */ o(
|
|
43
45
|
a,
|
|
44
46
|
{
|
|
45
|
-
fallback: /* @__PURE__ */
|
|
46
|
-
onError:
|
|
47
|
-
children: /* @__PURE__ */
|
|
47
|
+
fallback: /* @__PURE__ */ o(h, { height: "50vh", size: "compact" }),
|
|
48
|
+
onError: t,
|
|
49
|
+
children: /* @__PURE__ */ o(n, { fallback: /* @__PURE__ */ o(c, { height: "50vh" }), children: e })
|
|
48
50
|
}
|
|
49
51
|
) })
|
|
50
52
|
] }) });
|
|
51
53
|
});
|
|
52
54
|
export {
|
|
53
|
-
|
|
55
|
+
N as default
|
|
54
56
|
};
|
|
55
57
|
//# sourceMappingURL=modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sources":["../../../../src/features/ui/modals/modal.tsx"],"sourcesContent":["import type { IModalProps } from './modal-types';\nimport type { FC } from 'react';\n\nimport { captureException } from '@sentry/browser';\nimport { memo, Suspense, useCallback } from 'react';\nimport { ErrorBoundary } from 'react-error-boundary';\n\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport Error from '../../ui/error/error';\nimport Clickable from '../buttons/clickable/clickable';\nimport FlexView from '../layout/flex-view';\nimport AppLoader from '../loader/app-loader/app-loader';\nimport * as Styled from './modal-styled';\n\n/**\n * Modal component that renders modal content with close button\n * Handles animation state for entry and exit transitions\n */\nconst Modal: FC<IModalProps> = memo(({ modal, isClosing = false, onClose }) => {\n const { renderAs, element, modalWidth, isDismissable } = modal;\n\n const sentryCaptureException = useCallback((error: Error) => {\n captureException(error);\n }, []);\n\n const handleStopPropagation = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n if (renderAs === 'bottom-sheet') {\n return (\n <Styled.ModalContainer $isClosing={isClosing} onClick={isDismissable ? onClose : () => null}>\n <Styled.BottomSheetModal $isClosing={isClosing} onClick={handleStopPropagation}>\n <ErrorBoundary\n fallback={\n <FlexView $gap={24}>\n <Error height=\"100%\" />\n </FlexView>\n }\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BottomSheetModal>\n </Styled.ModalContainer>\n );\n }\n\n if (renderAs === 'spotlight') {\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <ErrorBoundary\n fallback={\n <Styled.ModalLoaderWrapper>\n <Error height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n onError={sentryCaptureException}\n >\n <Suspense\n fallback={\n <Styled.ModalLoaderWrapper>\n <AppLoader height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n >\n <Styled.SpotlightModal $isClosing={isClosing} />\n {element}\n </Suspense>\n </ErrorBoundary>\n </Styled.ModalContainer>\n );\n }\n\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <Styled.BaseModal $isClosing={isClosing} $width={modalWidth}>\n {isDismissable !== false && (\n <Styled.CloseButtonContainer $modalWidth={modalWidth}>\n <Clickable label=\"Close\" onClick={onClose}>\n <CrossIcon width={40} height={40} />\n </Clickable>\n </Styled.CloseButtonContainer>\n )}\n <Styled.BaseModalContent $modalWidth={modalWidth}>\n <ErrorBoundary\n fallback={<Error height=\"50vh\" size=\"compact\" />}\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BaseModalContent>\n </Styled.BaseModal>\n </Styled.ModalContainer>\n );\n});\n\nexport default Modal;\n"],"names":["Modal","memo","modal","isClosing","onClose","renderAs","element","modalWidth","isDismissable","sentryCaptureException","useCallback","error","captureException","handleStopPropagation","e","Styled.ModalContainer","Styled.BottomSheetModal","jsx","ErrorBoundary","FlexView","Error","Suspense","AppLoader","Styled.ModalLoaderWrapper","jsxs","Styled.SpotlightModal","Styled.BaseModal","Styled.CloseButtonContainer","Clickable","CrossIcon","Styled.BaseModalContent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"modal.js","sources":["../../../../src/features/ui/modals/modal.tsx"],"sourcesContent":["import type { IModalProps } from './modal-types';\nimport type { FC } from 'react';\n\nimport { captureException } from '@sentry/browser';\nimport { memo, Suspense, useCallback } from 'react';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { useTheme } from 'styled-components';\n\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport Error from '../../ui/error/error';\nimport Clickable from '../buttons/clickable/clickable';\nimport FlexView from '../layout/flex-view';\nimport AppLoader from '../loader/app-loader/app-loader';\nimport { EDeviceType } from '../theme/constants';\nimport * as Styled from './modal-styled';\n\n/**\n * Modal component that renders modal content with close button\n * Handles animation state for entry and exit transitions\n */\nconst Modal: FC<IModalProps> = memo(({ modal, isClosing = false, onClose }) => {\n const { device } = useTheme();\n const isMobile = device <= EDeviceType.MOBILE;\n const { renderAs, element, modalWidth, isDismissable, renderOnMobileAs } = modal;\n\n const sentryCaptureException = useCallback((error: Error) => {\n captureException(error);\n }, []);\n\n const handleStopPropagation = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n if (renderAs === 'bottom-sheet' || (isMobile && renderOnMobileAs === 'bottom-sheet')) {\n return (\n <Styled.ModalContainer $isClosing={isClosing} onClick={isDismissable ? onClose : () => null}>\n <Styled.BottomSheetModal $isClosing={isClosing} onClick={handleStopPropagation}>\n <ErrorBoundary\n fallback={\n <FlexView $gap={24}>\n <Error height=\"100%\" />\n </FlexView>\n }\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BottomSheetModal>\n </Styled.ModalContainer>\n );\n }\n\n if (renderAs === 'spotlight') {\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <ErrorBoundary\n fallback={\n <Styled.ModalLoaderWrapper>\n <Error height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n onError={sentryCaptureException}\n >\n <Suspense\n fallback={\n <Styled.ModalLoaderWrapper>\n <AppLoader height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n >\n <Styled.SpotlightModal $isClosing={isClosing} />\n {element}\n </Suspense>\n </ErrorBoundary>\n </Styled.ModalContainer>\n );\n }\n\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <Styled.BaseModal $isClosing={isClosing} $width={modalWidth}>\n {isDismissable !== false && (\n <Styled.CloseButtonContainer $modalWidth={modalWidth}>\n <Clickable label=\"Close\" onClick={onClose}>\n <CrossIcon width={40} height={40} />\n </Clickable>\n </Styled.CloseButtonContainer>\n )}\n <Styled.BaseModalContent $modalWidth={modalWidth}>\n <ErrorBoundary\n fallback={<Error height=\"50vh\" size=\"compact\" />}\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BaseModalContent>\n </Styled.BaseModal>\n </Styled.ModalContainer>\n );\n});\n\nexport default Modal;\n"],"names":["Modal","memo","modal","isClosing","onClose","device","useTheme","isMobile","EDeviceType","renderAs","element","modalWidth","isDismissable","renderOnMobileAs","sentryCaptureException","useCallback","error","captureException","handleStopPropagation","e","Styled.ModalContainer","Styled.BottomSheetModal","jsx","ErrorBoundary","FlexView","Error","Suspense","AppLoader","Styled.ModalLoaderWrapper","jsxs","Styled.SpotlightModal","Styled.BaseModal","Styled.CloseButtonContainer","Clickable","CrossIcon","Styled.BaseModalContent"],"mappings":";;;;;;;;;;;;AAoBM,MAAAA,IAAyBC,EAAK,CAAC,EAAE,OAAAC,GAAO,WAAAC,IAAY,IAAO,SAAAC,QAAc;AACvE,QAAA,EAAE,QAAAC,MAAWC,KACbC,IAAWF,KAAUG,EAAY,QACjC,EAAE,UAAAC,GAAU,SAAAC,GAAS,YAAAC,GAAY,eAAAC,GAAe,kBAAAC,EAAqB,IAAAX,GAErEY,IAAyBC,EAAY,CAACC,MAAiB;AAC3D,IAAAC,EAAiBD,CAAK;AAAA,EACxB,GAAG,CAAE,CAAA,GAECE,IAAwBH,EAAY,CAACI,MAAwB;AACjE,IAAAA,EAAE,gBAAgB;AAAA,EACpB,GAAG,CAAE,CAAA;AAEL,SAAIV,MAAa,kBAAmBF,KAAYM,MAAqB,mCAEhEO,GAAA,EAAsB,YAAYjB,GAAW,SAASS,IAAgBR,IAAU,MAAM,MACrF,4BAACiB,GAAA,EAAwB,YAAYlB,GAAW,SAASe,GACvD,UAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,4BACGC,GAAS,EAAA,MAAM,IACd,UAAC,gBAAAF,EAAAG,GAAA,EAAM,QAAO,OAAA,CAAO,EACvB,CAAA;AAAA,MAEF,SAASX;AAAA,MAET,UAAA,gBAAAQ,EAACI,KAAS,UAAU,gBAAAJ,EAACK,KAAU,QAAO,OAAO,CAAA,GAAK,UAAQjB,EAAA,CAAA;AAAA,IAAA;AAAA,EAAA,EAE9D,CAAA,EACF,CAAA,IAIAD,MAAa,cAEZ,gBAAAa,EAAAF,GAAA,EAAsB,YAAYjB,GACjC,UAAA,gBAAAmB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,4BACGK,GAAA,EACC,UAAC,gBAAAN,EAAAG,GAAA,EAAM,QAAO,QAAQ,CAAA,GACxB;AAAA,MAEF,SAASX;AAAA,MAET,UAAA,gBAAAe;AAAA,QAACH;AAAA,QAAA;AAAA,UACC,4BACGE,GAAA,EACC,UAAC,gBAAAN,EAAAK,GAAA,EAAU,QAAO,QAAQ,CAAA,GAC5B;AAAA,UAGF,UAAA;AAAA,YAAA,gBAAAL,EAACQ,GAAA,EAAsB,YAAY3B,EAAW,CAAA;AAAA,YAC7CO;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAEJ,EAAA,CAAA,IAKD,gBAAAY,EAAAF,GAAA,EAAsB,YAAYjB,GACjC,UAAC,gBAAA0B,EAAAE,GAAA,EAAiB,YAAY5B,GAAW,QAAQQ,GAC9C,UAAA;AAAA,IAAkBC,MAAA,wBAChBoB,GAAA,EAA4B,aAAarB,GACxC,4BAACsB,GAAU,EAAA,OAAM,SAAQ,SAAS7B,GAChC,4BAAC8B,GAAU,EAAA,OAAO,IAAI,QAAQ,IAAI,GACpC,EACF,CAAA;AAAA,IAED,gBAAAZ,EAAAa,GAAA,EAAwB,aAAaxB,GACpC,UAAA,gBAAAW;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAW,gBAAAD,EAAAG,GAAA,EAAM,QAAO,QAAO,MAAK,WAAU;AAAA,QAC9C,SAASX;AAAA,QAET,UAAA,gBAAAQ,EAACI,KAAS,UAAU,gBAAAJ,EAACK,KAAU,QAAO,OAAO,CAAA,GAAK,UAAQjB,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA,GAE9D;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAC;"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { TRIAL_V3_NODE_TYPES as
|
|
1
|
+
import { TRIAL_V3_NODE_TYPES as m, ASSESSMENT_NODE_TYPES as T } from "../../sheets/utils/is-v3-worksheet.js";
|
|
2
2
|
const R = ({
|
|
3
3
|
nodeType: c,
|
|
4
|
-
inClass:
|
|
5
|
-
isLessonV3Enabled:
|
|
6
|
-
isDesmosEnabled:
|
|
4
|
+
inClass: A,
|
|
5
|
+
isLessonV3Enabled: E,
|
|
6
|
+
isDesmosEnabled: u = !1,
|
|
7
7
|
userType: t,
|
|
8
|
-
mode:
|
|
9
|
-
worksheetCompleted:
|
|
8
|
+
mode: n,
|
|
9
|
+
worksheetCompleted: e
|
|
10
10
|
}) => {
|
|
11
|
-
const r =
|
|
11
|
+
const r = m.includes(c), s = T.includes(c), i = n === "resume", a = {
|
|
12
12
|
hints: i,
|
|
13
13
|
navigationMode: "OPEN",
|
|
14
|
-
initialQuestion: i || t === "TEACHER" && !
|
|
14
|
+
initialQuestion: i || t === "TEACHER" && !e ? "CURRENT" : "FIRST",
|
|
15
15
|
maximumAttempts: s ? -1 : 99999,
|
|
16
16
|
minimumAccuracy: 100,
|
|
17
|
-
teacherValidationEnabled:
|
|
18
|
-
canTeacherValidate: !!
|
|
19
|
-
validation: t === "STUDENT" && s ? !!
|
|
17
|
+
teacherValidationEnabled: E || r,
|
|
18
|
+
canTeacherValidate: !!A && (E || r),
|
|
19
|
+
validation: t === "STUDENT" && s ? !!e : !0,
|
|
20
20
|
review: !1,
|
|
21
21
|
canAttempt: t === "STUDENT" ? i : !1,
|
|
22
22
|
canExceedAttempts: !0,
|
|
23
23
|
checkButtonLabel: "Check",
|
|
24
24
|
retryButtonLabel: "Retry",
|
|
25
25
|
canMarkForReview: !1,
|
|
26
|
-
canShowDesmosCalc:
|
|
27
|
-
canvasEnabled:
|
|
28
|
-
canScribble:
|
|
26
|
+
canShowDesmosCalc: u,
|
|
27
|
+
canvasEnabled: n !== "preview",
|
|
28
|
+
canScribble: n !== "preview",
|
|
29
29
|
solutionHidden: !1
|
|
30
30
|
};
|
|
31
31
|
switch (c) {
|
|
@@ -33,8 +33,8 @@ const R = ({
|
|
|
33
33
|
case "SAT_MATH_LEARNING":
|
|
34
34
|
case "SAT_ENGLISH_LEARNING":
|
|
35
35
|
return {
|
|
36
|
-
...
|
|
37
|
-
navigationMode:
|
|
36
|
+
...a,
|
|
37
|
+
navigationMode: E && i && !A ? "OPEN" : "LINEAR",
|
|
38
38
|
review: !0
|
|
39
39
|
};
|
|
40
40
|
case "GENERAL":
|
|
@@ -42,20 +42,20 @@ const R = ({
|
|
|
42
42
|
case "RECAP":
|
|
43
43
|
case "SAT_MATH_RECAP":
|
|
44
44
|
return {
|
|
45
|
-
...
|
|
45
|
+
...a,
|
|
46
46
|
maximumAttempts: 1,
|
|
47
|
-
navigationMode: "LINEAR",
|
|
47
|
+
navigationMode: e ? "OPEN" : "LINEAR",
|
|
48
48
|
review: !0
|
|
49
49
|
};
|
|
50
50
|
case "EXTRA_PRACTICE":
|
|
51
51
|
case "TARGET_PRACTICE":
|
|
52
52
|
case "PRACTICE":
|
|
53
|
-
return { ...
|
|
53
|
+
return { ...a, maximumAttempts: 1, review: !0 };
|
|
54
54
|
case "TURING_PRACTICE":
|
|
55
|
-
return { ...
|
|
55
|
+
return { ...a, maximumAttempts: 1 };
|
|
56
56
|
case "PUZZLE_CARD":
|
|
57
57
|
return {
|
|
58
|
-
...
|
|
58
|
+
...a,
|
|
59
59
|
navigationMode: "LINEAR",
|
|
60
60
|
maximumAttempts: -2,
|
|
61
61
|
solutionHidden: !0,
|
|
@@ -65,14 +65,14 @@ const R = ({
|
|
|
65
65
|
case "PUZZLE_EASY":
|
|
66
66
|
case "PUZZLE_MEDIUM":
|
|
67
67
|
case "PUZZLE_HARD":
|
|
68
|
-
return { ...
|
|
68
|
+
return { ...a, navigationMode: "LINEAR" };
|
|
69
69
|
case "TRIAL_DIAGNOSTIC":
|
|
70
|
-
return { ...
|
|
70
|
+
return { ...a, navigationMode: "ADAPTIVE", review: !0 };
|
|
71
71
|
case "TRIAL_BASIC":
|
|
72
72
|
case "TRIAL_INTERMEDIATE":
|
|
73
73
|
case "TRIAL_ADVANCED":
|
|
74
74
|
return {
|
|
75
|
-
...
|
|
75
|
+
...a,
|
|
76
76
|
navigationMode: "CURRENT",
|
|
77
77
|
review: !0
|
|
78
78
|
};
|
|
@@ -82,41 +82,41 @@ const R = ({
|
|
|
82
82
|
case "DYNAMIC":
|
|
83
83
|
case "TURING_ASSESSMENT":
|
|
84
84
|
return {
|
|
85
|
-
...
|
|
85
|
+
...a,
|
|
86
86
|
minimumAccuracy: 0
|
|
87
87
|
};
|
|
88
88
|
case "SAT_MATH_ASSESSMENT":
|
|
89
89
|
case "SAT_ENGLISH_ASSESSMENT":
|
|
90
90
|
return {
|
|
91
|
-
...
|
|
91
|
+
...a,
|
|
92
92
|
canMarkForReview: !0,
|
|
93
93
|
minimumAccuracy: 0,
|
|
94
94
|
canvasEnabled: !1
|
|
95
95
|
};
|
|
96
96
|
case "MASTERY":
|
|
97
97
|
return {
|
|
98
|
-
...
|
|
98
|
+
...a,
|
|
99
99
|
hintsTimer: 90,
|
|
100
|
-
navigationMode: "LINEAR",
|
|
100
|
+
navigationMode: e ? "OPEN" : "LINEAR",
|
|
101
101
|
skippable: !0,
|
|
102
102
|
skippableTime: 90,
|
|
103
|
-
solutionHidden: !
|
|
103
|
+
solutionHidden: !e,
|
|
104
104
|
minimumAccuracy: 0,
|
|
105
|
-
canScribble: t === "TEACHER" ?
|
|
105
|
+
canScribble: t === "TEACHER" ? e : !0
|
|
106
106
|
};
|
|
107
107
|
case "SUBJECTIVE":
|
|
108
108
|
case "TURING_SUBJECTIVE":
|
|
109
109
|
return {
|
|
110
|
-
...
|
|
110
|
+
...a,
|
|
111
111
|
maximumAttempts: 1,
|
|
112
112
|
minimumAccuracy: 0,
|
|
113
113
|
validation: !1,
|
|
114
|
-
solutionHidden: !
|
|
114
|
+
solutionHidden: !e
|
|
115
115
|
};
|
|
116
116
|
case "LEGACY":
|
|
117
117
|
case "REVISION":
|
|
118
118
|
return {
|
|
119
|
-
...
|
|
119
|
+
...a,
|
|
120
120
|
maximumAttempts: 2,
|
|
121
121
|
canExceedAttempts: !1,
|
|
122
122
|
minimumAccuracy: 0,
|
|
@@ -125,21 +125,21 @@ const R = ({
|
|
|
125
125
|
case "LEVEL2":
|
|
126
126
|
case "LEVEL3":
|
|
127
127
|
return {
|
|
128
|
-
...
|
|
128
|
+
...a,
|
|
129
129
|
maximumAttempts: 1,
|
|
130
130
|
canExceedAttempts: !1,
|
|
131
131
|
minimumAccuracy: 0,
|
|
132
132
|
review: !0,
|
|
133
|
-
navigationMode: "LINEAR"
|
|
133
|
+
navigationMode: e ? "OPEN" : "LINEAR"
|
|
134
134
|
};
|
|
135
135
|
default:
|
|
136
136
|
return {
|
|
137
|
-
...
|
|
137
|
+
...a,
|
|
138
138
|
maximumAttempts: 1,
|
|
139
|
-
navigationMode: "LINEAR"
|
|
139
|
+
navigationMode: e ? "OPEN" : "LINEAR"
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
|
-
return
|
|
142
|
+
return a;
|
|
143
143
|
};
|
|
144
144
|
export {
|
|
145
145
|
R as getWorksheetBehaviour
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet-behavior-helper.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-behavior-helper.ts"],"sourcesContent":["import type { TNodeTypes } from '../../../types/models/worksheet';\nimport type { TUserTypes } from '../../ui/types';\nimport type { IWorksheetBehavior } from './worksheet-types';\n\nimport { ASSESSMENT_NODE_TYPES, TRIAL_V3_NODE_TYPES } from '../../sheets/utils/is-v3-worksheet';\n\nexport const getWorksheetBehaviour = ({\n nodeType,\n inClass,\n isLessonV3Enabled,\n isDesmosEnabled = false,\n userType,\n mode,\n worksheetCompleted,\n}: {\n nodeType: TNodeTypes;\n inClass?: boolean;\n isLessonV3Enabled: boolean;\n isDesmosEnabled?: boolean;\n userType: TUserTypes;\n mode: 'resume' | 'review' | 'preview';\n worksheetCompleted?: boolean;\n}): IWorksheetBehavior => {\n const isTrialV3 = TRIAL_V3_NODE_TYPES.includes(nodeType);\n const isAssessment = ASSESSMENT_NODE_TYPES.includes(nodeType);\n const canAttempt = mode === 'resume';\n\n const baseBehavior: IWorksheetBehavior = {\n hints: canAttempt,\n navigationMode: 'OPEN',\n initialQuestion:\n canAttempt || (userType === 'TEACHER' && !worksheetCompleted) ? 'CURRENT' : 'FIRST',\n maximumAttempts: isAssessment ? -1 : 99999,\n minimumAccuracy: 100,\n teacherValidationEnabled: isLessonV3Enabled || isTrialV3,\n canTeacherValidate: !!inClass && (isLessonV3Enabled || isTrialV3),\n validation: userType === 'STUDENT' && isAssessment ? !!worksheetCompleted : true,\n review: false,\n canAttempt: userType === 'STUDENT' ? canAttempt : false,\n canExceedAttempts: true,\n checkButtonLabel: 'Check',\n retryButtonLabel: 'Retry',\n canMarkForReview: false,\n canShowDesmosCalc: isDesmosEnabled,\n canvasEnabled: mode !== 'preview',\n canScribble: mode !== 'preview',\n solutionHidden: false,\n };\n\n switch (nodeType) {\n // LEARNING SHEETS\n case 'LEARNING':\n case 'SAT_MATH_LEARNING':\n case 'SAT_ENGLISH_LEARNING':\n return {\n ...baseBehavior,\n navigationMode: isLessonV3Enabled && canAttempt && !inClass ? 'OPEN' : 'LINEAR',\n review: true,\n };\n\n // RECAP SHEETS\n case 'GENERAL':\n case 'REMEDIAL':\n case 'RECAP':\n case 'SAT_MATH_RECAP':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: 'LINEAR',\n review: true,\n };\n\n // PRACTICE SHEETS\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'PRACTICE':\n return { ...baseBehavior, maximumAttempts: 1, review: true };\n\n case 'TURING_PRACTICE':\n return { ...baseBehavior, maximumAttempts: 1 };\n\n //PUZZLE SHEETS\n case 'PUZZLE_CARD':\n return {\n ...baseBehavior,\n navigationMode: 'LINEAR',\n maximumAttempts: -2,\n solutionHidden: true,\n validation: false,\n minimumAccuracy: 0,\n };\n\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return { ...baseBehavior, navigationMode: 'LINEAR' };\n\n // TRIAL SHEETS\n case 'TRIAL_DIAGNOSTIC':\n return { ...baseBehavior, navigationMode: 'ADAPTIVE', review: true };\n\n case 'TRIAL_BASIC':\n case 'TRIAL_INTERMEDIATE':\n case 'TRIAL_ADVANCED':\n return {\n ...baseBehavior,\n navigationMode: 'CURRENT',\n review: true,\n };\n\n // ASSESSMENT SHEETS\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n case 'DIAGNOSTIC':\n case 'DYNAMIC':\n case 'TURING_ASSESSMENT':\n return {\n ...baseBehavior,\n minimumAccuracy: 0,\n };\n\n case 'SAT_MATH_ASSESSMENT':\n case 'SAT_ENGLISH_ASSESSMENT':\n return {\n ...baseBehavior,\n canMarkForReview: true,\n minimumAccuracy: 0,\n canvasEnabled: false,\n };\n\n case 'MASTERY':\n return {\n ...baseBehavior,\n hintsTimer: 90,\n navigationMode: 'LINEAR',\n skippable: true,\n skippableTime: 90,\n solutionHidden: !worksheetCompleted,\n minimumAccuracy: 0,\n canScribble: userType === 'TEACHER' ? worksheetCompleted : true,\n };\n\n // SUBJECTIVE SHEETS\n case 'SUBJECTIVE':\n case 'TURING_SUBJECTIVE':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n minimumAccuracy: 0,\n validation: false,\n solutionHidden: !worksheetCompleted,\n };\n\n // REVISION SHEETS\n case 'LEGACY':\n case 'REVISION':\n return {\n ...baseBehavior,\n maximumAttempts: 2,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n };\n\n case 'LEVEL2':\n case 'LEVEL3':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n navigationMode: 'LINEAR',\n };\n\n default:\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: 'LINEAR',\n };\n }\n\n return baseBehavior;\n};\n"],"names":["getWorksheetBehaviour","nodeType","inClass","isLessonV3Enabled","isDesmosEnabled","userType","mode","worksheetCompleted","isTrialV3","TRIAL_V3_NODE_TYPES","isAssessment","ASSESSMENT_NODE_TYPES","canAttempt","baseBehavior"],"mappings":";AAMO,MAAMA,IAAwB,CAAC;AAAA,EACpC,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,oBAAAC;AACF,MAQ0B;AAClB,QAAAC,IAAYC,EAAoB,SAASR,CAAQ,GACjDS,IAAeC,EAAsB,SAASV,CAAQ,GACtDW,IAAaN,MAAS,UAEtBO,IAAmC;AAAA,IACvC,OAAOD;AAAA,IACP,gBAAgB;AAAA,IAChB,iBACEA,KAAeP,MAAa,aAAa,CAACE,IAAsB,YAAY;AAAA,IAC9E,iBAAiBG,IAAe,KAAK;AAAA,IACrC,iBAAiB;AAAA,IACjB,0BAA0BP,KAAqBK;AAAA,IAC/C,oBAAoB,CAAC,CAACN,MAAYC,KAAqBK;AAAA,IACvD,YAAYH,MAAa,aAAaK,IAAe,CAAC,CAACH,IAAqB;AAAA,IAC5E,QAAQ;AAAA,IACR,YAAYF,MAAa,YAAYO,IAAa;AAAA,IAClD,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,mBAAmBR;AAAA,IACnB,eAAeE,MAAS;AAAA,IACxB,aAAaA,MAAS;AAAA,IACtB,gBAAgB;AAAA,EAAA;AAGlB,UAAQL,GAAU;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGY;AAAA,QACH,gBAAgBV,KAAqBS,KAAc,CAACV,IAAU,SAAS;AAAA,QACvE,QAAQ;AAAA,MAAA;AAAA,IAIZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGW;AAAA,QACH,iBAAiB;AAAA,QACjB,
|
|
1
|
+
{"version":3,"file":"worksheet-behavior-helper.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-behavior-helper.ts"],"sourcesContent":["import type { TNodeTypes } from '../../../types/models/worksheet';\nimport type { TUserTypes } from '../../ui/types';\nimport type { IWorksheetBehavior } from './worksheet-types';\n\nimport { ASSESSMENT_NODE_TYPES, TRIAL_V3_NODE_TYPES } from '../../sheets/utils/is-v3-worksheet';\n\nexport const getWorksheetBehaviour = ({\n nodeType,\n inClass,\n isLessonV3Enabled,\n isDesmosEnabled = false,\n userType,\n mode,\n worksheetCompleted,\n}: {\n nodeType: TNodeTypes;\n inClass?: boolean;\n isLessonV3Enabled: boolean;\n isDesmosEnabled?: boolean;\n userType: TUserTypes;\n mode: 'resume' | 'review' | 'preview';\n worksheetCompleted?: boolean;\n}): IWorksheetBehavior => {\n const isTrialV3 = TRIAL_V3_NODE_TYPES.includes(nodeType);\n const isAssessment = ASSESSMENT_NODE_TYPES.includes(nodeType);\n const canAttempt = mode === 'resume';\n\n const baseBehavior: IWorksheetBehavior = {\n hints: canAttempt,\n navigationMode: 'OPEN',\n initialQuestion:\n canAttempt || (userType === 'TEACHER' && !worksheetCompleted) ? 'CURRENT' : 'FIRST',\n maximumAttempts: isAssessment ? -1 : 99999,\n minimumAccuracy: 100,\n teacherValidationEnabled: isLessonV3Enabled || isTrialV3,\n canTeacherValidate: !!inClass && (isLessonV3Enabled || isTrialV3),\n validation: userType === 'STUDENT' && isAssessment ? !!worksheetCompleted : true,\n review: false,\n canAttempt: userType === 'STUDENT' ? canAttempt : false,\n canExceedAttempts: true,\n checkButtonLabel: 'Check',\n retryButtonLabel: 'Retry',\n canMarkForReview: false,\n canShowDesmosCalc: isDesmosEnabled,\n canvasEnabled: mode !== 'preview',\n canScribble: mode !== 'preview',\n solutionHidden: false,\n };\n\n switch (nodeType) {\n // LEARNING SHEETS\n case 'LEARNING':\n case 'SAT_MATH_LEARNING':\n case 'SAT_ENGLISH_LEARNING':\n return {\n ...baseBehavior,\n navigationMode: isLessonV3Enabled && canAttempt && !inClass ? 'OPEN' : 'LINEAR',\n review: true,\n };\n\n // RECAP SHEETS\n case 'GENERAL':\n case 'REMEDIAL':\n case 'RECAP':\n case 'SAT_MATH_RECAP':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n review: true,\n };\n\n // PRACTICE SHEETS\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'PRACTICE':\n return { ...baseBehavior, maximumAttempts: 1, review: true };\n\n case 'TURING_PRACTICE':\n return { ...baseBehavior, maximumAttempts: 1 };\n\n //PUZZLE SHEETS\n case 'PUZZLE_CARD':\n return {\n ...baseBehavior,\n navigationMode: 'LINEAR',\n maximumAttempts: -2,\n solutionHidden: true,\n validation: false,\n minimumAccuracy: 0,\n };\n\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return { ...baseBehavior, navigationMode: 'LINEAR' };\n\n // TRIAL SHEETS\n case 'TRIAL_DIAGNOSTIC':\n return { ...baseBehavior, navigationMode: 'ADAPTIVE', review: true };\n\n case 'TRIAL_BASIC':\n case 'TRIAL_INTERMEDIATE':\n case 'TRIAL_ADVANCED':\n return {\n ...baseBehavior,\n navigationMode: 'CURRENT',\n review: true,\n };\n\n // ASSESSMENT SHEETS\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n case 'DIAGNOSTIC':\n case 'DYNAMIC':\n case 'TURING_ASSESSMENT':\n return {\n ...baseBehavior,\n minimumAccuracy: 0,\n };\n\n case 'SAT_MATH_ASSESSMENT':\n case 'SAT_ENGLISH_ASSESSMENT':\n return {\n ...baseBehavior,\n canMarkForReview: true,\n minimumAccuracy: 0,\n canvasEnabled: false,\n };\n\n case 'MASTERY':\n return {\n ...baseBehavior,\n hintsTimer: 90,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n skippable: true,\n skippableTime: 90,\n solutionHidden: !worksheetCompleted,\n minimumAccuracy: 0,\n canScribble: userType === 'TEACHER' ? worksheetCompleted : true,\n };\n\n // SUBJECTIVE SHEETS\n case 'SUBJECTIVE':\n case 'TURING_SUBJECTIVE':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n minimumAccuracy: 0,\n validation: false,\n solutionHidden: !worksheetCompleted,\n };\n\n // REVISION SHEETS\n case 'LEGACY':\n case 'REVISION':\n return {\n ...baseBehavior,\n maximumAttempts: 2,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n };\n\n case 'LEVEL2':\n case 'LEVEL3':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n };\n\n default:\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n };\n }\n\n return baseBehavior;\n};\n"],"names":["getWorksheetBehaviour","nodeType","inClass","isLessonV3Enabled","isDesmosEnabled","userType","mode","worksheetCompleted","isTrialV3","TRIAL_V3_NODE_TYPES","isAssessment","ASSESSMENT_NODE_TYPES","canAttempt","baseBehavior"],"mappings":";AAMO,MAAMA,IAAwB,CAAC;AAAA,EACpC,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,oBAAAC;AACF,MAQ0B;AAClB,QAAAC,IAAYC,EAAoB,SAASR,CAAQ,GACjDS,IAAeC,EAAsB,SAASV,CAAQ,GACtDW,IAAaN,MAAS,UAEtBO,IAAmC;AAAA,IACvC,OAAOD;AAAA,IACP,gBAAgB;AAAA,IAChB,iBACEA,KAAeP,MAAa,aAAa,CAACE,IAAsB,YAAY;AAAA,IAC9E,iBAAiBG,IAAe,KAAK;AAAA,IACrC,iBAAiB;AAAA,IACjB,0BAA0BP,KAAqBK;AAAA,IAC/C,oBAAoB,CAAC,CAACN,MAAYC,KAAqBK;AAAA,IACvD,YAAYH,MAAa,aAAaK,IAAe,CAAC,CAACH,IAAqB;AAAA,IAC5E,QAAQ;AAAA,IACR,YAAYF,MAAa,YAAYO,IAAa;AAAA,IAClD,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,mBAAmBR;AAAA,IACnB,eAAeE,MAAS;AAAA,IACxB,aAAaA,MAAS;AAAA,IACtB,gBAAgB;AAAA,EAAA;AAGlB,UAAQL,GAAU;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGY;AAAA,QACH,gBAAgBV,KAAqBS,KAAc,CAACV,IAAU,SAAS;AAAA,QACvE,QAAQ;AAAA,MAAA;AAAA,IAIZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGW;AAAA,QACH,iBAAiB;AAAA,QACjB,gBAAiBN,IAAgC,SAAX;AAAA,QACtC,QAAQ;AAAA,MAAA;AAAA,IAIZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,GAAGM,GAAc,iBAAiB,GAAG,QAAQ;IAExD,KAAK;AACH,aAAO,EAAE,GAAGA,GAAc,iBAAiB,EAAE;AAAA,IAG/C,KAAK;AACI,aAAA;AAAA,QACL,GAAGA;AAAA,QACH,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,IAGrB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,GAAGA,GAAc,gBAAgB,SAAS;AAAA,IAGrD,KAAK;AACH,aAAO,EAAE,GAAGA,GAAc,gBAAgB,YAAY,QAAQ;IAEhE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGA;AAAA,QACH,gBAAgB;AAAA,QAChB,QAAQ;AAAA,MAAA;AAAA,IAIZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGA;AAAA,QACH,iBAAiB;AAAA,MAAA;AAAA,IAGrB,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGA;AAAA,QACH,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,eAAe;AAAA,MAAA;AAAA,IAGnB,KAAK;AACI,aAAA;AAAA,QACL,GAAGA;AAAA,QACH,YAAY;AAAA,QACZ,gBAAiBN,IAAgC,SAAX;AAAA,QACtC,WAAW;AAAA,QACX,eAAe;AAAA,QACf,gBAAgB,CAACA;AAAA,QACjB,iBAAiB;AAAA,QACjB,aAAaF,MAAa,YAAYE,IAAqB;AAAA,MAAA;AAAA,IAI/D,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGM;AAAA,QACH,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,YAAY;AAAA,QACZ,gBAAgB,CAACN;AAAA,MAAA;AAAA,IAIrB,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGM;AAAA,QACH,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,QAAQ;AAAA,MAAA;AAAA,IAGZ,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,QACL,GAAGA;AAAA,QACH,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,QAAQ;AAAA,QACR,gBAAiBN,IAAgC,SAAX;AAAA,MAAW;AAAA,IAGrD;AACS,aAAA;AAAA,QACL,GAAGM;AAAA,QACH,iBAAiB;AAAA,QACjB,gBAAiBN,IAAgC,SAAX;AAAA,MAAW;AAAA,EAEvD;AAEO,SAAAM;AACT;"}
|