@cuemath/leap 3.0.31-link.0 → 3.0.31
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 +0 -1
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +38 -36
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js +24 -22
- package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js +23 -22
- package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/utils.js +49 -47
- package/dist/features/milestone/create/comps/chapters-selection-step/utils.js.map +1 -1
- package/dist/features/milestone/create/comps/class-details-step/class-details-step.js +94 -87
- package/dist/features/milestone/create/comps/class-details-step/class-details-step.js.map +1 -1
- package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js +13 -12
- package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js.map +1 -1
- package/dist/features/milestone/create/comps/test-type-step/test-type-step.js +23 -21
- package/dist/features/milestone/create/comps/test-type-step/test-type-step.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-helpers.js +165 -162
- package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
- package/dist/features/trial-session/comps/pricing/pricing.js +35 -36
- package/dist/features/trial-session/comps/pricing/pricing.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/features/trial-session/comps/pricing/india-pricing/index.js +0 -96
- package/dist/features/trial-session/comps/pricing/india-pricing/index.js.map +0 -1
- package/dist/features/trial-session/comps/pricing/india-pricing/india-pricing-styled.js +0 -59
- package/dist/features/trial-session/comps/pricing/india-pricing/india-pricing-styled.js.map +0 -1
- package/dist/static/ellipse-clip.dfb25608.svg +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"milestone-create-helpers.js","sources":["../../../../src/features/milestone/create/milestone-create-helpers.ts"],"sourcesContent":["import type IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\nimport type {\n ICurriculumStandards,\n IFormStep,\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n IPreferencesCurriculumMap,\n TCourseStream,\n TCurriculumStandardOption,\n TEnrollmentTypes,\n TFormStepNames,\n TGoalCategory,\n TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\nimport { COUNTRY_MAP } from '../../../constants/country';\nimport {\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n} from './comps/chapters-selection-step/utils';\nimport {\n checkEnrollmentAvailable,\n getTestTypeBasedCategory,\n} from './comps/test-type-step/test-type-utils';\nimport { GOAL_EDIT_FLOWS } from './milestone-create-constants';\n\ninterface IGetCurrenStep {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n flow: TMilestoneFormFlow,\n ): IFormStep | undefined;\n}\n\ninterface IClearNextFields {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n currentStepName: TFormStepNames | undefined,\n shouldStartClearing: boolean,\n fieldsToClear: (keyof IMileStoneFormFields)[],\n ): IMilestoneFormData | undefined;\n}\n\n/**\n * Impure method that Removes specified fields from an object.\n *\n * @param obj The object from which fields are to be removed.\n * @param fieldsList An array of field names to be removed.\n */\nconst clearFields = (obj: Record<string, unknown>, fieldsList: string[]) => {\n fieldsList.forEach(field => {\n obj[field] = undefined;\n });\n};\n\nconst clearNextFields: IClearNextFields = (\n formStep,\n milestoneFormData,\n currentStepName,\n startClearing,\n fieldsToClear = [],\n) => {\n const { isLeafNode, next, reset } = formStep;\n const updatedFormData = { ...milestoneFormData };\n\n if (isLeafNode) {\n clearFields(updatedFormData, [...reset, ...fieldsToClear]);\n\n return updatedFormData;\n }\n\n if (next) {\n let shouldStartClearing = startClearing;\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n let conditionFulfilled = false;\n\n if (step.when !== undefined) {\n conditionFulfilled = step.when.every(([field, value]) => updatedFormData[field] === value);\n } else conditionFulfilled = true;\n\n if (conditionFulfilled) {\n if (shouldStartClearing) {\n step?.reset?.forEach(field => {\n fieldsToClear.push(field);\n });\n } else if (currentStepName === step?.name) {\n shouldStartClearing = true;\n }\n\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n if (nextStep) {\n return clearNextFields(\n nextStep,\n updatedFormData,\n currentStepName,\n shouldStartClearing,\n fieldsToClear,\n );\n }\n }\n\n return undefined;\n};\n\nconst getCurrenStep: IGetCurrenStep = (formStep, milestoneFormData, flow) => {\n const { isLeafNode, required, next } = formStep;\n\n if (isLeafNode) {\n return formStep;\n }\n\n const requiredFieldsFilled = required.every(field => milestoneFormData[field] !== undefined);\n\n if (GOAL_EDIT_FLOWS.includes(flow)) {\n const requiredFieldsReviewed = required.every(\n field => milestoneFormData.reviewed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsReviewed) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n } else {\n const requiredFieldsCommitted = required.every(\n field => milestoneFormData.committed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsCommitted) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n }\n\n if (next) {\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n if (step.when === undefined) {\n nextStep = step;\n\n return false;\n }\n\n const conditionFulfilled = step.when.every(\n ([field, value]) => milestoneFormData[field] === value,\n );\n\n if (conditionFulfilled) {\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n\n if (nextStep) {\n return getCurrenStep(nextStep, milestoneFormData, flow);\n }\n }\n\n return undefined;\n};\n\ntype TOptions = {\n id: string;\n label: string;\n description?: string;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TOptions[]>((acc, event) => {\n const { id, event_name: eventName, event_type: eventType } = event;\n\n if (eventType === 'SCHOOL_TEST') {\n acc.push({\n id,\n label: eventName,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetCountriesFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n}) => {\n const { currentGoalData, enrollmentType, currentCountryCode, grade, selectedCategory } = props;\n\n const {\n blocked_countries: blockedCountries,\n available_countries: availableCountries,\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = currentGoalData;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n const isStudentRegionBlocked = blockedCountries.some(\n blockedCountry => blockedCountry === currentCountryCode,\n );\n const isStudentRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(availableCountry => availableCountry === currentCountryCode)\n : true;\n\n const isCurrentGradeAvailable = availableGrades.some(gradeInfo => gradeInfo === grade);\n const isGoalCategoryAvailable = selectedCategory === goalCategory;\n\n return (\n isStudentEnrollmentTypeSupported &&\n !isStudentRegionBlocked &&\n isStudentRegionAvailable &&\n isCurrentGradeAvailable &&\n isGoalCategoryAvailable\n );\n};\n\ninterface IGetCurriculumStandardsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n classRatio?: number;\n },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n { grade, countryCode, goalCategory, courseStream, classRatio, enrollmentType },\n) => {\n const { goal_curriculum_map: goals, curriculum_standards: curriculumStandards } = config;\n // check if atleast one goal present for the curriculum standard\n\n const filteredGoalCurriculumMap = goals.filter(item => item.course_stream === courseStream);\n\n const hasGoalForCurriculumStandards = (standard: ICurriculumStandards) =>\n filteredGoalCurriculumMap.some(goal => {\n // check goal category\n if (goal.goal_category !== goalCategory) return false;\n\n if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n return false;\n\n // check goal curriculum standard\n // if goal_curriculum_standard is undefined then it's available for all standard\n if (goal.goal_curriculum_standard && goal.goal_curriculum_standard !== standard.code)\n return false;\n\n if (goalCategory === 'SCHOOL_SUCCESS' && !goal.goal_curriculum_standard) return false;\n\n // check country availability\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n // check grade availability\n if (!goal.available_grades.includes(grade)) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n });\n\n return curriculumStandards\n .filter(hasGoalForCurriculumStandards)\n .map(\n ({\n code,\n name,\n default_in_countries: defaultInCountries,\n recommended_in_countries: recommendedInCountries,\n }) => ({\n id: code,\n label: name,\n isDefault: defaultInCountries.includes(countryCode),\n isRecommended: recommendedInCountries.includes(countryCode),\n }),\n )\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\ninterface IGetGoalsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n curriculumStandard?: string;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n },\n ): TOptions[];\n}\n\nconst getGoalsFromConfig: IGetGoalsFromConfig = (config, options) => {\n const { goal_curriculum_map: goals } = config;\n const { grade, countryCode, goalCategory, curriculumStandard, courseStream, enrollmentType } =\n options;\n const filteredGoalCurriculumMap = goals.filter(item => item.course_stream === courseStream);\n\n const isEligibleGoal = (goal: IGoalCurriculumMap) => {\n if (goal.goal_category !== goalCategory) return false;\n\n if (curriculumStandard && goal.goal_curriculum_standard !== curriculumStandard) return false;\n\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n if (!goal.available_grades.includes(grade)) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n };\n\n return filteredGoalCurriculumMap\n ?.filter(isEligibleGoal)\n .map(({ goal_code: id, goal_name: label }) => ({\n id,\n label,\n }))\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\nconst getGradesFromConfig: IGetCountriesFromConfig = config => {\n return config.grades.reduce<TOptions[]>((acc, grade) => {\n if (grade === '-1' || grade === '0') {\n acc.push({\n id: grade,\n label: grade === '-1' ? `Pre-K` : `KG`,\n });\n } else {\n acc.push({\n id: grade,\n label: `Grade ${grade}`,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetPreferencesFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n preferenceCategory: TPreferenceCategory;\n courseStream: TCourseStream;\n },\n ): TOptions[];\n}\n\nconst getPreferencesFromConfig: IGetPreferencesFromConfig = (config, options) => {\n const { preference_config: preferenceConfig } = config;\n\n const isEligiblePreferences = (preference: IPreferencesCurriculumMap) => {\n const { grade, courseStream, preferenceCategory } = options;\n\n if (preference.course_stream !== courseStream) return false;\n\n if (preference.preference_category !== preferenceCategory) return false;\n\n if (preference.preference_grades.length > 0 && !preference.preference_grades.includes(grade))\n return false;\n\n if (!preference.is_live) return false;\n\n return true;\n };\n\n return preferenceConfig\n ?.filter(isEligiblePreferences)\n .map(\n ({ preference_code: id, preference_name: label, preference_description: description }) => ({\n id,\n label,\n description,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): TOptions[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TOptions) => {\n return goals\n .filter(item => item.course_stream === courseStream)\n .some((goalData: IGoalCurriculumMap) => {\n const {\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n // check enrollment type availability\n if (\n availableEnrollmentTypes.length > 0 &&\n !availableEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n if (\n availableEnrollmentTypes.length === 0 &&\n blockedEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n //* Check for grade availability only for selected goal category\n return goalCategory === selectedGoalCategory && availableGrades.includes(id);\n });\n };\n\n return grades.filter(gradeAvailableGoals);\n};\n\ninterface IGetMajorsFromConfigBasedOnBoardAndGrade {\n (\n config: IMilestoneConfig,\n boardCode: string,\n grade: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): TOptions[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\n) => {\n //* We have US courses for grade 7 & above\n if (grade === 'KG' || Number(grade) < 7) return [];\n\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const filterOnCourseStreamAndEnrollmentType = (goalData: IGoalCurriculumMap) => {\n if (goalData.course_stream !== courseStream) return false;\n\n return checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TOptions[]>((acc, goalData) => {\n const {\n available_grades: availableGrades,\n goal_curriculum_standard: goalCurriculumStandard,\n program_name: programName,\n program_code: programCode,\n } = goalData;\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isBoardAvailable = goalCurriculumStandard === boardCode;\n\n if (isGradeAvailable && isBoardAvailable) {\n acc.push({\n id: programCode,\n label: programName,\n });\n }\n\n return acc;\n }, []);\n\n return majorsWithLabelId;\n};\n\nconst getRegionCodeBasedOnCountryCode = (countryCode: string) => {\n const regionCode = COUNTRY_MAP.find(countryInfo => countryInfo.country_code === countryCode)\n ?.region_code;\n\n return regionCode;\n};\n\nconst generateFormStateWithPrefilledSchoolData = (\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n currentCountryCode: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n region: countryCode,\n board: board ?? undefined,\n };\n }\n\n const regionCode = currentCountryCode\n ? getRegionCodeBasedOnCountryCode(currentCountryCode)\n : undefined;\n\n if (grade) {\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n region: regionCode,\n board: board ?? undefined,\n };\n }\n\n return {\n committed: {},\n reviewed: {},\n };\n};\n\nconst appendSchoolDataToFormState = (\n formData: IMilestoneFormData,\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n ...formData,\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n board: formData.board ?? board ?? undefined,\n };\n }\n\n return formData;\n};\n\nconst appendPrimaryGoalCategoryToFormState = (\n config: IMilestoneConfig,\n testType: TTestType,\n grade: string | undefined,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n board?: string | undefined,\n country?: string | undefined,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const isSchoolSuccessCategory = testType === 'no-test';\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n //TODO: This needs to compensate the course selection for US curriculum grade 8 & above\n const primaryGoalCurriculum = goalCurriculumMap.find(goalInfo => {\n const isCurrentGoalAvailable = computeCanIncludeCurrentGoal({\n currentGoalData: goalInfo,\n grade,\n currentCountryCode: country,\n selectedCategory: selectedGoalCategory,\n enrollmentType,\n });\n const { goal_curriculum_standard: goalCurriculumStandard } = goalInfo;\n\n const currentBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n\n const isSameCourse = goalInfo.course_stream === courseStream;\n\n if (isSchoolSuccessCategory) {\n return isSameCourse && isCurrentGoalAvailable && currentBoardAvailable;\n }\n\n return isSameCourse && isCurrentGoalAvailable;\n });\n\n return primaryGoalCurriculum;\n};\n\nconst getDefaultBoard = (data: ISectionOption<TCurriculumStandardOption>[]) => {\n let recommendedBoards: TCurriculumStandardOption[] = [];\n let otherBoards: TCurriculumStandardOption[] = [];\n\n // Iterate through the data categories\n for (const category of data) {\n if (category.title === 'recommended') {\n recommendedBoards = category.data;\n } else if (category.title === 'others') {\n otherBoards = category.data;\n }\n }\n\n // 1. Check if any recommended board has isDefault: true\n const defaultBoard = recommendedBoards.find(board => board.isDefault && board.isRecommended);\n\n if (defaultBoard) {\n return defaultBoard.id;\n }\n\n // 2. If no default, return the first recommended board\n if (recommendedBoards.length > 0) {\n return recommendedBoards[0]?.id;\n }\n\n // 3. If no recommended, return the first board from others\n if (otherBoards.length > 0) {\n return otherBoards[0]?.id;\n }\n\n // 4. Return null if no boards are found\n return undefined;\n};\n\nexport {\n appendSchoolDataToFormState,\n appendPrimaryGoalCategoryToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n getGradesFromConfig,\n getCurriculumStandardsFromConfig,\n getGoalsFromConfig,\n getGradesBasedOnGoalAvailability,\n getMajorsFromConfigBasedOnBoardAndGrade,\n getSchoolTestsFromConfig,\n getRegionCodeBasedOnCountryCode,\n getDefaultBoard,\n getPreferencesFromConfig,\n};\n"],"names":["clearFields","obj","fieldsList","field","clearNextFields","formStep","milestoneFormData","currentStepName","startClearing","fieldsToClear","isLeafNode","next","reset","updatedFormData","shouldStartClearing","nextStep","step","conditionFulfilled","value","_a","getCurrenStep","flow","required","requiredFieldsFilled","GOAL_EDIT_FLOWS","requiredFieldsReviewed","requiredFieldsCommitted","getSchoolTestsFromConfig","config","acc","event","id","eventName","eventType","computeCanIncludeCurrentGoal","props","currentGoalData","enrollmentType","currentCountryCode","grade","selectedCategory","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","getCurriculumStandardsFromConfig","countryCode","courseStream","classRatio","goals","curriculumStandards","filteredGoalCurriculumMap","item","hasGoalForCurriculumStandards","standard","goal","checkEnrollmentAvailable","code","name","defaultInCountries","recommendedInCountries","a","b","getGoalsFromConfig","options","curriculumStandard","isEligibleGoal","label","getGradesFromConfig","getPreferencesFromConfig","preferenceConfig","isEligiblePreferences","preference","preferenceCategory","description","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","getMajorsFromConfigBasedOnBoardAndGrade","boardCode","goalCurriculumMap","filterOnCourseStreamAndEnrollmentType","goalCurriculumStandard","programName","programCode","availableGrade","getRegionCodeBasedOnCountryCode","COUNTRY_MAP","countryInfo","generateFormStateWithPrefilledSchoolData","schoolData","board","placeId","regionCode","appendSchoolDataToFormState","formData","appendPrimaryGoalCategoryToFormState","testType","country","isSchoolSuccessCategory","getTestTypeBasedCategory","goalInfo","isCurrentGoalAvailable","currentBoardAvailable","getIfGoalCurriculumStandardIsAccessible","isSameCourse","getDefaultBoard","data","recommendedBoards","otherBoards","category","defaultBoard","_b"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"milestone-create-helpers.js","sources":["../../../../src/features/milestone/create/milestone-create-helpers.ts"],"sourcesContent":["import type IStudentSchool from '../../../types/models/school';\nimport type { ISectionOption } from '../../ui/section-list/section-list-types';\nimport type { TTestType } from '../types';\nimport type {\n ICurriculumStandards,\n IFormStep,\n IGoalCurriculumMap,\n IMileStoneFormFields,\n IMilestoneConfig,\n IMilestoneFormData,\n IPreferencesCurriculumMap,\n TCourseStream,\n TCurriculumStandardOption,\n TEnrollmentTypes,\n TFormStepNames,\n TGoalCategory,\n TMilestoneFormFlow,\n TPreferenceCategory,\n} from './milestone-create-types';\n\nimport { COUNTRY_MAP } from '../../../constants/country';\nimport {\n getIfGoalCurriculumStandardIsAccessible,\n getStudentEnrollmentSupported,\n} from './comps/chapters-selection-step/utils';\nimport {\n checkEnrollmentAvailable,\n getTestTypeBasedCategory,\n} from './comps/test-type-step/test-type-utils';\nimport { GOAL_EDIT_FLOWS } from './milestone-create-constants';\n\ninterface IGetCurrenStep {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n flow: TMilestoneFormFlow,\n ): IFormStep | undefined;\n}\n\ninterface IClearNextFields {\n (\n formStep: IFormStep,\n milestoneFormData: IMilestoneFormData,\n currentStepName: TFormStepNames | undefined,\n shouldStartClearing: boolean,\n fieldsToClear: (keyof IMileStoneFormFields)[],\n ): IMilestoneFormData | undefined;\n}\n\n/**\n * Impure method that Removes specified fields from an object.\n *\n * @param obj The object from which fields are to be removed.\n * @param fieldsList An array of field names to be removed.\n */\nconst clearFields = (obj: Record<string, unknown>, fieldsList: string[]) => {\n fieldsList.forEach(field => {\n obj[field] = undefined;\n });\n};\n\nconst clearNextFields: IClearNextFields = (\n formStep,\n milestoneFormData,\n currentStepName,\n startClearing,\n fieldsToClear = [],\n) => {\n const { isLeafNode, next, reset } = formStep;\n const updatedFormData = { ...milestoneFormData };\n\n if (isLeafNode) {\n clearFields(updatedFormData, [...reset, ...fieldsToClear]);\n\n return updatedFormData;\n }\n\n if (next) {\n let shouldStartClearing = startClearing;\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n let conditionFulfilled = false;\n\n if (step.when !== undefined) {\n conditionFulfilled = step.when.every(([field, value]) => updatedFormData[field] === value);\n } else conditionFulfilled = true;\n\n if (conditionFulfilled) {\n if (shouldStartClearing) {\n step?.reset?.forEach(field => {\n fieldsToClear.push(field);\n });\n } else if (currentStepName === step?.name) {\n shouldStartClearing = true;\n }\n\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n if (nextStep) {\n return clearNextFields(\n nextStep,\n updatedFormData,\n currentStepName,\n shouldStartClearing,\n fieldsToClear,\n );\n }\n }\n\n return undefined;\n};\n\nconst getCurrenStep: IGetCurrenStep = (formStep, milestoneFormData, flow) => {\n const { isLeafNode, required, next } = formStep;\n\n if (isLeafNode) {\n return formStep;\n }\n\n const requiredFieldsFilled = required.every(field => milestoneFormData[field] !== undefined);\n\n if (GOAL_EDIT_FLOWS.includes(flow)) {\n const requiredFieldsReviewed = required.every(\n field => milestoneFormData.reviewed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsReviewed) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n } else {\n const requiredFieldsCommitted = required.every(\n field => milestoneFormData.committed[field] === true,\n );\n\n if (!requiredFieldsFilled || !requiredFieldsCommitted) {\n return {\n ...formStep,\n next: undefined,\n };\n }\n }\n\n if (next) {\n let nextStep: IFormStep | undefined;\n\n next.every(step => {\n if (step.when === undefined) {\n nextStep = step;\n\n return false;\n }\n\n const conditionFulfilled = step.when.every(\n ([field, value]) => milestoneFormData[field] === value,\n );\n\n if (conditionFulfilled) {\n nextStep = step;\n\n return false;\n }\n\n return true;\n });\n\n if (nextStep) {\n return getCurrenStep(nextStep, milestoneFormData, flow);\n }\n }\n\n return undefined;\n};\n\ntype TOptions = {\n id: string;\n label: string;\n description?: string;\n};\n\ninterface IGetSchoolTestsFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst getSchoolTestsFromConfig: IGetSchoolTestsFromConfig = config => {\n return config.academic_events.reduce<TOptions[]>((acc, event) => {\n const { id, event_name: eventName, event_type: eventType } = event;\n\n if (eventType === 'SCHOOL_TEST') {\n acc.push({\n id,\n label: eventName,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetCountriesFromConfig {\n (config: IMilestoneConfig): TOptions[];\n}\n\nconst computeCanIncludeCurrentGoal = (props: {\n currentGoalData: IGoalCurriculumMap;\n enrollmentType: TEnrollmentTypes;\n currentCountryCode?: string;\n grade?: string;\n selectedCategory?: string;\n}) => {\n const { currentGoalData, enrollmentType, currentCountryCode, grade, selectedCategory } = props;\n\n const {\n blocked_countries: blockedCountries,\n available_countries: availableCountries,\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = currentGoalData;\n\n const isStudentEnrollmentTypeSupported = getStudentEnrollmentSupported(\n blockedEnrollmentTypes,\n availableEnrollmentTypes,\n enrollmentType,\n );\n const isStudentRegionBlocked = blockedCountries.some(\n blockedCountry => blockedCountry === currentCountryCode,\n );\n const isStudentRegionAvailable =\n availableCountries.length > 0\n ? availableCountries.some(availableCountry => availableCountry === currentCountryCode)\n : true;\n\n const isCurrentGradeAvailable = availableGrades.some(gradeInfo => gradeInfo === grade);\n const isGoalCategoryAvailable = selectedCategory === goalCategory;\n\n return (\n isStudentEnrollmentTypeSupported &&\n !isStudentRegionBlocked &&\n isStudentRegionAvailable &&\n isCurrentGradeAvailable &&\n isGoalCategoryAvailable\n );\n};\n\ninterface IGetCurriculumStandardsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n classRatio?: number;\n flow?: TMilestoneFormFlow | null;\n },\n ): TCurriculumStandardOption[];\n}\n\nconst getCurriculumStandardsFromConfig: IGetCurriculumStandardsFromConfig = (\n config,\n { grade, countryCode, goalCategory, courseStream, classRatio, enrollmentType, flow },\n) => {\n const { goal_curriculum_map: goals, curriculum_standards: curriculumStandards } = config;\n // check if atleast one goal present for the curriculum standard\n\n const filteredGoalCurriculumMap = goals.filter(item => {\n const isSameCourseStream = item.course_stream === courseStream;\n\n if (flow === 'CREATE') {\n return isSameCourseStream && item.is_live;\n }\n\n return isSameCourseStream;\n });\n\n const hasGoalForCurriculumStandards = (standard: ICurriculumStandards) =>\n filteredGoalCurriculumMap.some(goal => {\n // check goal category\n if (goal.goal_category !== goalCategory) return false;\n\n if (\n classRatio &&\n goal.available_class_ratios.length > 0 &&\n !goal.available_class_ratios.includes(classRatio)\n )\n return false;\n\n // check goal curriculum standard\n // if goal_curriculum_standard is undefined then it's available for all standard\n if (goal.goal_curriculum_standard && goal.goal_curriculum_standard !== standard.code)\n return false;\n\n if (goalCategory === 'SCHOOL_SUCCESS' && !goal.goal_curriculum_standard) return false;\n\n // check country availability\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n // check grade availability\n if (!goal.available_grades.includes(grade)) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n });\n\n return curriculumStandards\n .filter(hasGoalForCurriculumStandards)\n .map(\n ({\n code,\n name,\n default_in_countries: defaultInCountries,\n recommended_in_countries: recommendedInCountries,\n }) => ({\n id: code,\n label: name,\n isDefault: defaultInCountries.includes(countryCode),\n isRecommended: recommendedInCountries.includes(countryCode),\n }),\n )\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\ninterface IGetGoalsFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n countryCode: string;\n goalCategory: TGoalCategory;\n curriculumStandard?: string;\n courseStream: TCourseStream;\n enrollmentType: TEnrollmentTypes;\n },\n ): TOptions[];\n}\n\nconst getGoalsFromConfig: IGetGoalsFromConfig = (config, options) => {\n const { goal_curriculum_map: goals } = config;\n const { grade, countryCode, goalCategory, curriculumStandard, courseStream, enrollmentType } =\n options;\n const filteredGoalCurriculumMap = goals.filter(item => item.course_stream === courseStream);\n\n const isEligibleGoal = (goal: IGoalCurriculumMap) => {\n if (goal.goal_category !== goalCategory) return false;\n\n if (curriculumStandard && goal.goal_curriculum_standard !== curriculumStandard) return false;\n\n if (goal.available_countries.length > 0 && !goal.available_countries.includes(countryCode))\n return false;\n\n if (goal.available_countries.length === 0 && goal.blocked_countries.includes(countryCode))\n return false;\n\n if (!goal.available_grades.includes(grade)) return false;\n\n return checkEnrollmentAvailable(goal, enrollmentType);\n };\n\n return filteredGoalCurriculumMap\n ?.filter(isEligibleGoal)\n .map(({ goal_code: id, goal_name: label }) => ({\n id,\n label,\n }))\n .sort((a, b) => (a.label.toUpperCase() > b.label.toUpperCase() ? 1 : -1));\n};\n\nconst getGradesFromConfig: IGetCountriesFromConfig = config => {\n return config.grades.reduce<TOptions[]>((acc, grade) => {\n if (grade === '-1' || grade === '0') {\n acc.push({\n id: grade,\n label: grade === '-1' ? `Pre-K` : `KG`,\n });\n } else {\n acc.push({\n id: grade,\n label: `Grade ${grade}`,\n });\n }\n\n return acc;\n }, []);\n};\n\ninterface IGetPreferencesFromConfig {\n (\n config: IMilestoneConfig,\n options: {\n grade: string;\n preferenceCategory: TPreferenceCategory;\n courseStream: TCourseStream;\n },\n ): TOptions[];\n}\n\nconst getPreferencesFromConfig: IGetPreferencesFromConfig = (config, options) => {\n const { preference_config: preferenceConfig } = config;\n\n const isEligiblePreferences = (preference: IPreferencesCurriculumMap) => {\n const { grade, courseStream, preferenceCategory } = options;\n\n if (preference.course_stream !== courseStream) return false;\n\n if (preference.preference_category !== preferenceCategory) return false;\n\n if (preference.preference_grades.length > 0 && !preference.preference_grades.includes(grade))\n return false;\n\n if (!preference.is_live) return false;\n\n return true;\n };\n\n return preferenceConfig\n ?.filter(isEligiblePreferences)\n .map(\n ({ preference_code: id, preference_name: label, preference_description: description }) => ({\n id,\n label,\n description,\n }),\n );\n};\n\ninterface IGetGradeBasedOnGoalAvailability {\n (\n config: IMilestoneConfig,\n selectedGoalCategory: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): TOptions[];\n}\n\n//* Grades where goals are available for selected goal category.\nconst getGradesBasedOnGoalAvailability: IGetGradeBasedOnGoalAvailability = (\n config,\n selectedGoalCategory,\n courseStream,\n enrollmentType,\n) => {\n const { goal_curriculum_map: goals } = config;\n\n const grades = getGradesFromConfig(config);\n\n const gradeAvailableGoals = ({ id }: TOptions) => {\n return goals\n .filter(item => item.course_stream === courseStream)\n .some((goalData: IGoalCurriculumMap) => {\n const {\n available_grades: availableGrades,\n goal_category: goalCategory,\n available_enrollment_types: availableEnrollmentTypes,\n blocked_enrollment_types: blockedEnrollmentTypes,\n } = goalData;\n\n // check enrollment type availability\n if (\n availableEnrollmentTypes.length > 0 &&\n !availableEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n if (\n availableEnrollmentTypes.length === 0 &&\n blockedEnrollmentTypes.includes(enrollmentType)\n )\n return false;\n\n //* Check for grade availability only for selected goal category\n return goalCategory === selectedGoalCategory && availableGrades.includes(id);\n });\n };\n\n return grades.filter(gradeAvailableGoals);\n};\n\ninterface IGetMajorsFromConfigBasedOnBoardAndGrade {\n (\n config: IMilestoneConfig,\n boardCode: string,\n grade: string,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n ): TOptions[];\n}\n\nconst getMajorsFromConfigBasedOnBoardAndGrade: IGetMajorsFromConfigBasedOnBoardAndGrade = (\n config,\n boardCode,\n grade,\n courseStream,\n enrollmentType,\n) => {\n //* We have US courses for grade 7 & above\n if (grade === 'KG' || Number(grade) < 7) return [];\n\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const filterOnCourseStreamAndEnrollmentType = (goalData: IGoalCurriculumMap) => {\n if (goalData.course_stream !== courseStream) return false;\n\n return checkEnrollmentAvailable(goalData, enrollmentType);\n };\n\n const majorsWithLabelId = goalCurriculumMap\n .filter(filterOnCourseStreamAndEnrollmentType)\n .reduce<TOptions[]>((acc, goalData) => {\n const {\n available_grades: availableGrades,\n goal_curriculum_standard: goalCurriculumStandard,\n program_name: programName,\n program_code: programCode,\n } = goalData;\n\n const isGradeAvailable = availableGrades.some(availableGrade => availableGrade === grade);\n const isBoardAvailable = goalCurriculumStandard === boardCode;\n\n if (isGradeAvailable && isBoardAvailable) {\n acc.push({\n id: programCode,\n label: programName,\n });\n }\n\n return acc;\n }, []);\n\n return majorsWithLabelId;\n};\n\nconst getRegionCodeBasedOnCountryCode = (countryCode: string) => {\n const regionCode = COUNTRY_MAP.find(countryInfo => countryInfo.country_code === countryCode)\n ?.region_code;\n\n return regionCode;\n};\n\nconst generateFormStateWithPrefilledSchoolData = (\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n currentCountryCode: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n region: countryCode,\n board: board ?? undefined,\n };\n }\n\n const regionCode = currentCountryCode\n ? getRegionCodeBasedOnCountryCode(currentCountryCode)\n : undefined;\n\n if (grade) {\n return {\n committed: {},\n reviewed: {},\n grade: grade,\n region: regionCode,\n board: board ?? undefined,\n };\n }\n\n return {\n committed: {},\n reviewed: {},\n };\n};\n\nconst appendSchoolDataToFormState = (\n formData: IMilestoneFormData,\n schoolData: IStudentSchool | undefined,\n board: string | undefined,\n grade: string | undefined,\n): IMilestoneFormData => {\n if (schoolData && grade) {\n const { country_code: countryCode, place_id: placeId } = schoolData;\n\n return {\n ...formData,\n grade: grade,\n schoolInfo: {\n countryCode: countryCode,\n stateCode: '',\n id: placeId,\n },\n board: formData.board ?? board ?? undefined,\n };\n }\n\n return formData;\n};\n\nconst appendPrimaryGoalCategoryToFormState = (\n config: IMilestoneConfig,\n testType: TTestType,\n grade: string | undefined,\n courseStream: TCourseStream,\n enrollmentType: TEnrollmentTypes,\n board?: string | undefined,\n country?: string | undefined,\n flow?: TMilestoneFormFlow | null,\n) => {\n const { goal_curriculum_map: goalCurriculumMap } = config;\n const isSchoolSuccessCategory = testType === 'no-test';\n const selectedGoalCategory = getTestTypeBasedCategory(testType);\n\n //TODO: This needs to compensate the course selection for US curriculum grade 8 & above\n const primaryGoalCurriculum = goalCurriculumMap.find(goalInfo => {\n const isCurrentGoalAvailable = computeCanIncludeCurrentGoal({\n currentGoalData: goalInfo,\n grade,\n currentCountryCode: country,\n selectedCategory: selectedGoalCategory,\n enrollmentType,\n });\n const { goal_curriculum_standard: goalCurriculumStandard, is_live: isLive } = goalInfo;\n\n const currentBoardAvailable = getIfGoalCurriculumStandardIsAccessible({\n goalCurriculumStandard,\n referenceStandard: board,\n });\n\n const isSameCourse = goalInfo.course_stream === courseStream;\n const canIncludeCurrentGoal = flow === 'CREATE' ? isLive : true;\n\n if (isSchoolSuccessCategory) {\n return (\n isSameCourse && isCurrentGoalAvailable && currentBoardAvailable && canIncludeCurrentGoal\n );\n }\n\n return isSameCourse && isCurrentGoalAvailable && canIncludeCurrentGoal;\n });\n\n return primaryGoalCurriculum;\n};\n\nconst getDefaultBoard = (data: ISectionOption<TCurriculumStandardOption>[]) => {\n let recommendedBoards: TCurriculumStandardOption[] = [];\n let otherBoards: TCurriculumStandardOption[] = [];\n\n // Iterate through the data categories\n for (const category of data) {\n if (category.title === 'recommended') {\n recommendedBoards = category.data;\n } else if (category.title === 'others') {\n otherBoards = category.data;\n }\n }\n\n // 1. Check if any recommended board has isDefault: true\n const defaultBoard = recommendedBoards.find(board => board.isDefault && board.isRecommended);\n\n if (defaultBoard) {\n return defaultBoard.id;\n }\n\n // 2. If no default, return the first recommended board\n if (recommendedBoards.length > 0) {\n return recommendedBoards[0]?.id;\n }\n\n // 3. If no recommended, return the first board from others\n if (otherBoards.length > 0) {\n return otherBoards[0]?.id;\n }\n\n // 4. Return null if no boards are found\n return undefined;\n};\n\nexport {\n appendSchoolDataToFormState,\n appendPrimaryGoalCategoryToFormState,\n clearNextFields,\n generateFormStateWithPrefilledSchoolData,\n getCurrenStep,\n getGradesFromConfig,\n getCurriculumStandardsFromConfig,\n getGoalsFromConfig,\n getGradesBasedOnGoalAvailability,\n getMajorsFromConfigBasedOnBoardAndGrade,\n getSchoolTestsFromConfig,\n getRegionCodeBasedOnCountryCode,\n getDefaultBoard,\n getPreferencesFromConfig,\n};\n"],"names":["clearFields","obj","fieldsList","field","clearNextFields","formStep","milestoneFormData","currentStepName","startClearing","fieldsToClear","isLeafNode","next","reset","updatedFormData","shouldStartClearing","nextStep","step","conditionFulfilled","value","_a","getCurrenStep","flow","required","requiredFieldsFilled","GOAL_EDIT_FLOWS","requiredFieldsReviewed","requiredFieldsCommitted","getSchoolTestsFromConfig","config","acc","event","id","eventName","eventType","computeCanIncludeCurrentGoal","props","currentGoalData","enrollmentType","currentCountryCode","grade","selectedCategory","blockedCountries","availableCountries","availableGrades","goalCategory","availableEnrollmentTypes","blockedEnrollmentTypes","isStudentEnrollmentTypeSupported","getStudentEnrollmentSupported","isStudentRegionBlocked","blockedCountry","isStudentRegionAvailable","availableCountry","isCurrentGradeAvailable","gradeInfo","getCurriculumStandardsFromConfig","countryCode","courseStream","classRatio","goals","curriculumStandards","filteredGoalCurriculumMap","item","isSameCourseStream","hasGoalForCurriculumStandards","standard","goal","checkEnrollmentAvailable","code","name","defaultInCountries","recommendedInCountries","a","b","getGoalsFromConfig","options","curriculumStandard","isEligibleGoal","label","getGradesFromConfig","getPreferencesFromConfig","preferenceConfig","isEligiblePreferences","preference","preferenceCategory","description","getGradesBasedOnGoalAvailability","selectedGoalCategory","grades","gradeAvailableGoals","goalData","getMajorsFromConfigBasedOnBoardAndGrade","boardCode","goalCurriculumMap","filterOnCourseStreamAndEnrollmentType","goalCurriculumStandard","programName","programCode","availableGrade","getRegionCodeBasedOnCountryCode","COUNTRY_MAP","countryInfo","generateFormStateWithPrefilledSchoolData","schoolData","board","placeId","regionCode","appendSchoolDataToFormState","formData","appendPrimaryGoalCategoryToFormState","testType","country","isSchoolSuccessCategory","getTestTypeBasedCategory","goalInfo","isCurrentGoalAvailable","isLive","currentBoardAvailable","getIfGoalCurriculumStandardIsAccessible","isSameCourse","canIncludeCurrentGoal","getDefaultBoard","data","recommendedBoards","otherBoards","category","defaultBoard","_b"],"mappings":"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"}
|
@@ -1,38 +1,37 @@
|
|
1
1
|
import { jsx as r, jsxs as a } from "react/jsx-runtime";
|
2
|
-
import { memo as
|
2
|
+
import { memo as P, useCallback as x, useEffect as m } from "react";
|
3
3
|
import { ILLUSTRATIONS as T } from "../../../../assets/illustrations/illustrations.js";
|
4
|
-
import
|
5
|
-
import
|
4
|
+
import v from "../../../ui/error/error.js";
|
5
|
+
import y from "../../../ui/image/image.js";
|
6
6
|
import C from "../../../ui/layout/flex-view.js";
|
7
|
-
import
|
7
|
+
import I from "../../../ui/loader/app-loader/app-loader.js";
|
8
8
|
import d from "../../../ui/separator/separator.js";
|
9
|
-
import
|
10
|
-
import { useGetTrialPricing as
|
11
|
-
import { useTrialSessionContext as
|
12
|
-
import
|
13
|
-
import
|
14
|
-
import D from "./pricing-
|
15
|
-
|
16
|
-
const
|
17
|
-
const { isTeacher: f, studentId: i, updateButtonState: s } = w(), {
|
9
|
+
import L from "../../../ui/text/text.js";
|
10
|
+
import { useGetTrialPricing as S } from "../../api/trial-pricing.js";
|
11
|
+
import { useTrialSessionContext as $ } from "../../context/use-trial-session-context.js";
|
12
|
+
import w from "../slide-header/index.js";
|
13
|
+
import A from "./pricing-cards.js";
|
14
|
+
import { Container as b, PricingWrapper as D, PolicyWrapper as E, RefundImageWrapper as W } from "./pricing-styled.js";
|
15
|
+
const z = P(() => {
|
16
|
+
const { isTeacher: f, studentId: i, updateButtonState: s } = $(), {
|
18
17
|
data: g,
|
19
18
|
get: p,
|
20
|
-
isProcessed:
|
21
|
-
isProcessing:
|
19
|
+
isProcessed: e,
|
20
|
+
isProcessing: t,
|
22
21
|
isProcessingFailed: h
|
23
|
-
} =
|
22
|
+
} = S("trial-v3-pricing", {
|
24
23
|
student_id: i
|
25
|
-
}), { plans:
|
26
|
-
i && !
|
27
|
-
}, [p,
|
28
|
-
return
|
24
|
+
}), { plans: o, intent_level: c } = g || {}, n = x(() => {
|
25
|
+
i && !e && p("trial-v3-pricing", { student_id: i });
|
26
|
+
}, [p, e, i]);
|
27
|
+
return m(() => {
|
29
28
|
n();
|
30
|
-
}, [n]),
|
31
|
-
s("right", { isDisabled:
|
32
|
-
}, [
|
29
|
+
}, [n]), m(() => {
|
30
|
+
s("right", { isDisabled: t, isLoading: !1 });
|
31
|
+
}, [t, f, s]), t ? /* @__PURE__ */ r(I, { height: "100vh" }) : h ? /* @__PURE__ */ r(v, { height: "100vh", onTryAgain: n }) : e ? /* @__PURE__ */ a(b, { children: [
|
33
32
|
/* @__PURE__ */ r(d, { height: 60 }),
|
34
|
-
/* @__PURE__ */ r(
|
35
|
-
/* @__PURE__ */ a(
|
33
|
+
/* @__PURE__ */ r(w, { marginBottom: 38 }),
|
34
|
+
/* @__PURE__ */ a(D, { children: [
|
36
35
|
/* @__PURE__ */ r(
|
37
36
|
C,
|
38
37
|
{
|
@@ -41,22 +40,22 @@ const M = x(() => {
|
|
41
40
|
$justifyContent: "space-between",
|
42
41
|
$flexGap: 20,
|
43
42
|
$flexWrap: !0,
|
44
|
-
children:
|
45
|
-
|
43
|
+
children: c && o && Array.isArray(o) && o.map((u, l) => /* @__PURE__ */ r(
|
44
|
+
A,
|
46
45
|
{
|
47
|
-
colorIndex:
|
46
|
+
colorIndex: l,
|
48
47
|
intentType: c,
|
49
|
-
pricingConfig:
|
48
|
+
pricingConfig: u
|
50
49
|
},
|
51
|
-
|
52
|
-
))
|
50
|
+
l
|
51
|
+
))
|
53
52
|
}
|
54
53
|
),
|
55
54
|
/* @__PURE__ */ r(d, { height: 50 }),
|
56
|
-
/* @__PURE__ */ a(
|
57
|
-
/* @__PURE__ */ r(
|
58
|
-
/* @__PURE__ */ r(
|
59
|
-
|
55
|
+
/* @__PURE__ */ a(E, { children: [
|
56
|
+
/* @__PURE__ */ r(L, { $renderAs: "ab1-bold", $color: "GREEN_6", children: "We have a no-questions-asked refund policy" }),
|
57
|
+
/* @__PURE__ */ r(W, { children: /* @__PURE__ */ r(
|
58
|
+
y,
|
60
59
|
{
|
61
60
|
src: T.REFUND_POLICY,
|
62
61
|
width: 168,
|
@@ -69,6 +68,6 @@ const M = x(() => {
|
|
69
68
|
] }) : null;
|
70
69
|
});
|
71
70
|
export {
|
72
|
-
|
71
|
+
z as default
|
73
72
|
};
|
74
73
|
//# sourceMappingURL=pricing.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pricing.js","sources":["../../../../../src/features/trial-session/comps/pricing/pricing.tsx"],"sourcesContent":["import { memo, useCallback, useEffect } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Error from '../../../ui/error/error';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { useGetTrialPricing } from '../../api/trial-pricing';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport SlideHeader from '../slide-header';\nimport
|
1
|
+
{"version":3,"file":"pricing.js","sources":["../../../../../src/features/trial-session/comps/pricing/pricing.tsx"],"sourcesContent":["import { memo, useCallback, useEffect } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Error from '../../../ui/error/error';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { useGetTrialPricing } from '../../api/trial-pricing';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport SlideHeader from '../slide-header';\nimport PricingCards from './pricing-cards';\nimport * as Styled from './pricing-styled';\n\nconst SessionPricing = memo(() => {\n const { isTeacher, studentId, updateButtonState } = useTrialSessionContext();\n\n const {\n data: pricingData,\n get: getTrialPricing,\n isProcessed,\n isProcessing,\n isProcessingFailed,\n } = useGetTrialPricing('trial-v3-pricing', {\n student_id: studentId,\n });\n\n const { plans: pricingPlans, intent_level: intentLevel } = pricingData || {};\n const fetchData = useCallback(() => {\n if (studentId && !isProcessed) {\n getTrialPricing('trial-v3-pricing', { student_id: studentId });\n }\n }, [getTrialPricing, isProcessed, studentId]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n useEffect(() => {\n updateButtonState('right', { isDisabled: isProcessing, isLoading: false });\n }, [isProcessing, isTeacher, updateButtonState]);\n\n if (isProcessing) {\n return <AppLoader height=\"100vh\" />;\n }\n\n if (isProcessingFailed) {\n return <Error height=\"100vh\" onTryAgain={fetchData} />;\n }\n\n if (isProcessed) {\n return (\n <Styled.Container>\n <Separator height={60} />\n <SlideHeader marginBottom={38} />\n <Styled.PricingWrapper>\n <FlexView\n $width=\"100%\"\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $flexGap={20}\n $flexWrap\n >\n {intentLevel &&\n pricingPlans &&\n Array.isArray(pricingPlans) &&\n pricingPlans.map((pricing, index) => {\n return (\n <PricingCards\n key={index}\n colorIndex={index}\n intentType={intentLevel}\n pricingConfig={pricing}\n />\n );\n })}\n </FlexView>\n <Separator height={50} />\n <Styled.PolicyWrapper>\n <Text $renderAs=\"ab1-bold\" $color=\"GREEN_6\">\n We have a no-questions-asked refund policy\n </Text>\n <Styled.RefundImageWrapper>\n <Image\n src={ILLUSTRATIONS.REFUND_POLICY}\n width={168}\n height={100}\n withLoader={false}\n />\n </Styled.RefundImageWrapper>\n </Styled.PolicyWrapper>\n </Styled.PricingWrapper>\n </Styled.Container>\n );\n }\n\n return null;\n});\n\nexport default SessionPricing;\n"],"names":["SessionPricing","memo","isTeacher","studentId","updateButtonState","useTrialSessionContext","pricingData","getTrialPricing","isProcessed","isProcessing","isProcessingFailed","useGetTrialPricing","pricingPlans","intentLevel","fetchData","useCallback","useEffect","jsx","AppLoader","Error","jsxs","Styled.Container","Separator","SlideHeader","Styled.PricingWrapper","FlexView","pricing","index","PricingCards","Styled.PolicyWrapper","Text","Styled.RefundImageWrapper","Image","ILLUSTRATIONS"],"mappings":";;;;;;;;;;;;;;AAeM,MAAAA,IAAiBC,EAAK,MAAM;AAChC,QAAM,EAAE,WAAAC,GAAW,WAAAC,GAAW,mBAAAC,MAAsBC,EAAuB,GAErE;AAAA,IACJ,MAAMC;AAAA,IACN,KAAKC;AAAA,IACL,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,IACEC,EAAmB,oBAAoB;AAAA,IACzC,YAAYR;AAAA,EAAA,CACb,GAEK,EAAE,OAAOS,GAAc,cAAcC,EAAY,IAAIP,KAAe,IACpEQ,IAAYC,EAAY,MAAM;AAC9B,IAAAZ,KAAa,CAACK,KAChBD,EAAgB,oBAAoB,EAAE,YAAYJ,EAAW,CAAA;AAAA,EAE9D,GAAA,CAACI,GAAiBC,GAAaL,CAAS,CAAC;AAU5C,SARAa,EAAU,MAAM;AACJ,IAAAF;EAAA,GACT,CAACA,CAAS,CAAC,GAEdE,EAAU,MAAM;AACd,IAAAZ,EAAkB,SAAS,EAAE,YAAYK,GAAc,WAAW,IAAO;AAAA,EACxE,GAAA,CAACA,GAAcP,GAAWE,CAAiB,CAAC,GAE3CK,IACK,gBAAAQ,EAACC,GAAU,EAAA,QAAO,QAAQ,CAAA,IAG/BR,IACM,gBAAAO,EAAAE,GAAA,EAAM,QAAO,SAAQ,YAAYL,EAAW,CAAA,IAGlDN,IAEA,gBAAAY,EAACC,GAAA,EACC,UAAA;AAAA,IAAC,gBAAAJ,EAAAK,GAAA,EAAU,QAAQ,GAAI,CAAA;AAAA,IACvB,gBAAAL,EAACM,GAAY,EAAA,cAAc,GAAI,CAAA;AAAA,IAC/B,gBAAAH,EAACI,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAP;AAAA,QAACQ;AAAA,QAAA;AAAA,UACC,QAAO;AAAA,UACP,gBAAe;AAAA,UACf,iBAAgB;AAAA,UAChB,UAAU;AAAA,UACV,WAAS;AAAA,UAER,UAAAZ,KACCD,KACA,MAAM,QAAQA,CAAY,KAC1BA,EAAa,IAAI,CAACc,GAASC,MAEvB,gBAAAV;AAAA,YAACW;AAAA,YAAA;AAAA,cAEC,YAAYD;AAAA,cACZ,YAAYd;AAAA,cACZ,eAAea;AAAA,YAAA;AAAA,YAHVC;AAAA,UAAA,CAMV;AAAA,QAAA;AAAA,MACL;AAAA,MACA,gBAAAV,EAACK,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,MACvB,gBAAAF,EAACS,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAZ,EAACa,GAAK,EAAA,WAAU,YAAW,QAAO,WAAU,UAE5C,8CAAA;AAAA,QACA,gBAAAb,EAACc,GAAA,EACC,UAAA,gBAAAd;AAAA,UAACe;AAAA,UAAA;AAAA,YACC,KAAKC,EAAc;AAAA,YACnB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,YAAY;AAAA,UAAA;AAAA,QAAA,GAEhB;AAAA,MAAA,GACF;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA,IAIG;AACT,CAAC;"}
|
package/dist/index.d.ts
CHANGED
@@ -1451,6 +1451,7 @@ declare interface IGoalCurriculumMap {
|
|
1451
1451
|
program_code: string;
|
1452
1452
|
program_name: string;
|
1453
1453
|
program_id: string;
|
1454
|
+
is_live: boolean;
|
1454
1455
|
}
|
1455
1456
|
|
1456
1457
|
declare interface IGooglePlaceOption extends google.maps.places.AutocompletePrediction, ISelectOption<string> {
|
@@ -1908,7 +1909,6 @@ export declare const ILLUSTRATIONS: {
|
|
1908
1909
|
DURATION_60MIN_GRAY: string;
|
1909
1910
|
DURATION_90MIN_GRAY: string;
|
1910
1911
|
EARTH_GREEN: string;
|
1911
|
-
ELLIPSE_CLIP: string;
|
1912
1912
|
FEMALE_AVATAR: string;
|
1913
1913
|
GAME_PLAY: string;
|
1914
1914
|
GLOBE_WITH_BLUE_FILL: string;
|
package/package.json
CHANGED
@@ -1,96 +0,0 @@
|
|
1
|
-
import { jsx as n, Fragment as A, jsxs as r } from "react/jsx-runtime";
|
2
|
-
import { useMemo as x } from "react";
|
3
|
-
import { ILLUSTRATIONS as I } from "../../../../../assets/illustrations/illustrations.js";
|
4
|
-
import c from "../../../../ui/layout/flex-view.js";
|
5
|
-
import s from "../../../../ui/separator/separator.js";
|
6
|
-
import i from "../../../../ui/text/text.js";
|
7
|
-
import { CardContainer as L, CardBoard as P, ClipImage as T, BoardHole as w, CardBoardContent as D, DiscountTag as M } from "./india-pricing-styled.js";
|
8
|
-
const $ = (o) => "duration" in o && "class_ratio" in o, O = (o, a) => a === 1 ? `YELLOW_${o + 1}` : `GREEN_${o + 1}`, k = (o) => {
|
9
|
-
const { plans: a } = o, { oneVsOnePlan: f, oneVsTowPlan: m } = x(
|
10
|
-
() => ({
|
11
|
-
oneVsOnePlan: a.filter(
|
12
|
-
(e) => $(e) && e.class_ratio === 1
|
13
|
-
).sort((e, t) => e.duration - t.duration),
|
14
|
-
oneVsTowPlan: a.filter(
|
15
|
-
(e) => $(e) && e.class_ratio === 2
|
16
|
-
).sort((e, t) => e.duration - t.duration)
|
17
|
-
}),
|
18
|
-
[a]
|
19
|
-
);
|
20
|
-
return /* @__PURE__ */ n(A, { children: [f, m].map((e, t) => /* @__PURE__ */ r(L, { children: [
|
21
|
-
/* @__PURE__ */ n(s, { height: 12 }),
|
22
|
-
/* @__PURE__ */ r(P, { children: [
|
23
|
-
/* @__PURE__ */ n(T, { src: I.ELLIPSE_CLIP }),
|
24
|
-
/* @__PURE__ */ n(
|
25
|
-
w,
|
26
|
-
{
|
27
|
-
$height: 10,
|
28
|
-
$width: 10,
|
29
|
-
$borderRadius: 5,
|
30
|
-
$background: "BLACK_1",
|
31
|
-
$position: "absolute"
|
32
|
-
}
|
33
|
-
)
|
34
|
-
] }),
|
35
|
-
/* @__PURE__ */ r(D, { children: [
|
36
|
-
/* @__PURE__ */ n(s, { height: 10 }),
|
37
|
-
/* @__PURE__ */ r(i, { $renderAs: "ac1", $align: "center", children: [
|
38
|
-
"1:",
|
39
|
-
t + 1
|
40
|
-
] }),
|
41
|
-
/* @__PURE__ */ n(s, { height: 5 }),
|
42
|
-
e.map((g, p) => {
|
43
|
-
const {
|
44
|
-
amount: l,
|
45
|
-
duration: u,
|
46
|
-
class_ratio: _,
|
47
|
-
no_of_classes: b,
|
48
|
-
currency_symbol: d,
|
49
|
-
amount_after_coupon: h,
|
50
|
-
fee_per_class_after_discount: C
|
51
|
-
} = g;
|
52
|
-
return /* @__PURE__ */ r(
|
53
|
-
c,
|
54
|
-
{
|
55
|
-
$gap: 14,
|
56
|
-
$gutter: 40,
|
57
|
-
$background: O(p, _),
|
58
|
-
children: [
|
59
|
-
/* @__PURE__ */ r(c, { $flexDirection: "row", $flexGap: 12, $alignItems: "center", children: [
|
60
|
-
/* @__PURE__ */ r(i, { $renderAs: "ac3-black", children: [
|
61
|
-
u,
|
62
|
-
" MONTHS"
|
63
|
-
] }),
|
64
|
-
/* @__PURE__ */ r(M, { $renderAs: "ub3-bold", children: [
|
65
|
-
Math.round((l - h) / l * 100),
|
66
|
-
"% off"
|
67
|
-
] })
|
68
|
-
] }),
|
69
|
-
/* @__PURE__ */ n(s, { height: 4 }),
|
70
|
-
/* @__PURE__ */ r(c, { $flexDirection: "row", $flexGap: 12, $alignItems: "center", children: [
|
71
|
-
/* @__PURE__ */ n(i, { $renderAs: "ab2", $color: "BLACK_T_60", $textDecoration: "line-through", children: d + Math.round(l) }),
|
72
|
-
/* @__PURE__ */ n(i, { $renderAs: "ab1-bold", children: d + Math.round(h) })
|
73
|
-
] }),
|
74
|
-
/* @__PURE__ */ r(c, { $flexDirection: "row", $flexGap: 2, $alignItems: "center", children: [
|
75
|
-
/* @__PURE__ */ r(i, { $renderAs: "ub2", children: [
|
76
|
-
b,
|
77
|
-
" classes @"
|
78
|
-
] }),
|
79
|
-
/* @__PURE__ */ r(i, { $renderAs: "ub2-bold", children: [
|
80
|
-
d + Math.round(C),
|
81
|
-
"/class"
|
82
|
-
] })
|
83
|
-
] }),
|
84
|
-
/* @__PURE__ */ n(s, { height: 4 })
|
85
|
-
]
|
86
|
-
},
|
87
|
-
`ind-pricing-${u}`
|
88
|
-
);
|
89
|
-
})
|
90
|
-
] })
|
91
|
-
] }, `plan-${t}`)) });
|
92
|
-
};
|
93
|
-
export {
|
94
|
-
k as default
|
95
|
-
};
|
96
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/features/trial-session/comps/pricing/india-pricing/index.tsx"],"sourcesContent":["import type { TColorNames } from '../../../../ui/types';\nimport type {\n IPricingIndiaProps,\n TPricingDetails,\n TLowIntentPricingDetails,\n} from '../pricing-typed';\n\nimport React, { useMemo } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Separator from '../../../../ui/separator/separator';\nimport Text from '../../../../ui/text/text';\nimport * as Styled from './india-pricing-styled';\n\nconst isPricingDetails = (\n plan: TPricingDetails | TLowIntentPricingDetails,\n): plan is TPricingDetails => {\n return 'duration' in plan && 'class_ratio' in plan;\n};\n\nconst getColorIndex = (index: number, ratio?: 1 | 2): TColorNames => {\n if (ratio === 1) return `YELLOW_${(index + 1) as 1 | 2 | 3 | 4 | 5 | 6}`;\n\n return `GREEN_${(index + 1) as 1 | 2 | 3 | 4 | 5 | 6}`;\n};\n\nconst PricingIndia: React.FC<IPricingIndiaProps> = props => {\n const { plans } = props;\n const { oneVsOnePlan, oneVsTowPlan } = useMemo(\n () => ({\n oneVsOnePlan: plans\n .filter(\n (element): element is TPricingDetails =>\n isPricingDetails(element) && element.class_ratio === 1,\n )\n .sort((a, b) => a.duration - b.duration),\n oneVsTowPlan: plans\n .filter(\n (element): element is TPricingDetails =>\n isPricingDetails(element) && element.class_ratio === 2,\n )\n .sort((a, b) => a.duration - b.duration),\n }),\n [plans],\n );\n\n return (\n <>\n {[oneVsOnePlan, oneVsTowPlan].map((plan, planIndex) => (\n <Styled.CardContainer key={`plan-${planIndex}`}>\n <Separator height={12} />\n <Styled.CardBoard>\n <Styled.ClipImage src={ILLUSTRATIONS.ELLIPSE_CLIP} />\n <Styled.BoardHole\n $height={10}\n $width={10}\n $borderRadius={5}\n $background=\"BLACK_1\"\n $position=\"absolute\"\n />\n </Styled.CardBoard>\n <Styled.CardBoardContent>\n <Separator height={10} />\n <Text $renderAs=\"ac1\" $align=\"center\">\n 1:{planIndex + 1}\n </Text>\n <Separator height={5} />\n {plan.map((planConfig, index) => {\n const {\n amount,\n duration,\n class_ratio: classRatio,\n no_of_classes: noOfClasses,\n currency_symbol: currencySymbol,\n amount_after_coupon: amountAfterCoupon,\n fee_per_class_after_discount: feePerClassAfterDiscount,\n } = planConfig;\n\n return (\n <FlexView\n key={`ind-pricing-${duration}`}\n $gap={14}\n $gutter={40}\n $background={getColorIndex(index, classRatio)}\n >\n <FlexView $flexDirection=\"row\" $flexGap={12} $alignItems=\"center\">\n <Text $renderAs=\"ac3-black\">{duration} MONTHS</Text>\n <Styled.DiscountTag $renderAs=\"ub3-bold\">\n {Math.round(((amount - amountAfterCoupon) / amount) * 100)}% off\n </Styled.DiscountTag>\n </FlexView>\n <Separator height={4} />\n <FlexView $flexDirection=\"row\" $flexGap={12} $alignItems=\"center\">\n <Text $renderAs=\"ab2\" $color=\"BLACK_T_60\" $textDecoration=\"line-through\">\n {currencySymbol + Math.round(amount)}\n </Text>\n <Text $renderAs=\"ab1-bold\">\n {currencySymbol + Math.round(amountAfterCoupon)}\n </Text>\n </FlexView>\n <FlexView $flexDirection=\"row\" $flexGap={2} $alignItems=\"center\">\n <Text $renderAs=\"ub2\">{noOfClasses} classes @</Text>\n <Text $renderAs=\"ub2-bold\">\n {currencySymbol + Math.round(feePerClassAfterDiscount)}/class\n </Text>\n </FlexView>\n <Separator height={4} />\n </FlexView>\n );\n })}\n </Styled.CardBoardContent>\n </Styled.CardContainer>\n ))}\n </>\n );\n};\n\nexport default PricingIndia;\n"],"names":["isPricingDetails","plan","getColorIndex","index","ratio","PricingIndia","props","plans","oneVsOnePlan","oneVsTowPlan","useMemo","element","a","b","jsx","Fragment","planIndex","jsxs","Styled.CardContainer","Separator","Styled.CardBoard","Styled.ClipImage","ILLUSTRATIONS","Styled.BoardHole","Styled.CardBoardContent","Text","planConfig","amount","duration","classRatio","noOfClasses","currencySymbol","amountAfterCoupon","feePerClassAfterDiscount","FlexView","Styled.DiscountTag"],"mappings":"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"}
|
@@ -1,59 +0,0 @@
|
|
1
|
-
import t from "styled-components";
|
2
|
-
import r from "../../../../ui/layout/flex-view.js";
|
3
|
-
import i from "../../../../ui/text/text.js";
|
4
|
-
const n = t.div`
|
5
|
-
max-width: 290px;
|
6
|
-
`, s = t.div(
|
7
|
-
({ theme: o }) => `
|
8
|
-
width: 0;
|
9
|
-
height: 0;
|
10
|
-
border-left: 145px solid transparent;
|
11
|
-
border-right: 145px solid transparent;
|
12
|
-
border-bottom: 30px solid ${o.colors.BLACK_1};
|
13
|
-
position: relative;
|
14
|
-
&::after {
|
15
|
-
content: '';
|
16
|
-
position: absolute;
|
17
|
-
top: 1px;
|
18
|
-
left: -145px;
|
19
|
-
width: 0;
|
20
|
-
height: 0;
|
21
|
-
border-left: 145px solid transparent;
|
22
|
-
border-right: 145px solid transparent;
|
23
|
-
border-bottom: 30px solid ${o.colors.WHITE_1};
|
24
|
-
}
|
25
|
-
`
|
26
|
-
), a = t.div(
|
27
|
-
({ theme: o }) => `
|
28
|
-
border: 1px solid ${o.colors.BLACK_1};
|
29
|
-
background: ${o.colors.WHITE_1};
|
30
|
-
border-top: none;
|
31
|
-
`
|
32
|
-
), l = t(i)(
|
33
|
-
({ theme: o }) => `
|
34
|
-
background-color: ${o.colors.WHITE_T_60};
|
35
|
-
padding: 2px 4px;
|
36
|
-
`
|
37
|
-
), x = t.img`
|
38
|
-
position: absolute;
|
39
|
-
z-index: 1;
|
40
|
-
top: -10px;
|
41
|
-
left: 50%;
|
42
|
-
transform: translateX(-50%);
|
43
|
-
overflow: auto;
|
44
|
-
height: 34px;
|
45
|
-
width: 16.381px;
|
46
|
-
`, c = t(r)`
|
47
|
-
z-index: 2;
|
48
|
-
top: 15px;
|
49
|
-
left: -5px;
|
50
|
-
`;
|
51
|
-
export {
|
52
|
-
c as BoardHole,
|
53
|
-
s as CardBoard,
|
54
|
-
a as CardBoardContent,
|
55
|
-
n as CardContainer,
|
56
|
-
x as ClipImage,
|
57
|
-
l as DiscountTag
|
58
|
-
};
|
59
|
-
//# sourceMappingURL=india-pricing-styled.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"india-pricing-styled.js","sources":["../../../../../../src/features/trial-session/comps/pricing/india-pricing/india-pricing-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\n\nconst CardContainer = styled.div`\n max-width: 290px;\n`;\n\nconst CardBoard = styled.div(\n ({ theme }) => `\n width: 0;\n height: 0;\n border-left: 145px solid transparent;\n border-right: 145px solid transparent;\n border-bottom: 30px solid ${theme.colors.BLACK_1};\n position: relative;\n &::after {\n content: '';\n position: absolute;\n top: 1px;\n left: -145px;\n width: 0;\n height: 0;\n border-left: 145px solid transparent;\n border-right: 145px solid transparent;\n border-bottom: 30px solid ${theme.colors.WHITE_1};\n }\n `,\n);\n\nconst CardBoardContent = styled.div(\n ({ theme }) => `\n border: 1px solid ${theme.colors.BLACK_1};\n background: ${theme.colors.WHITE_1};\n border-top: none;\n `,\n);\n\nconst DiscountTag = styled(Text)(\n ({ theme }) => `\n background-color: ${theme.colors.WHITE_T_60};\n padding: 2px 4px;\n`,\n);\n\nconst ClipImage = styled.img`\n position: absolute;\n z-index: 1;\n top: -10px;\n left: 50%;\n transform: translateX(-50%);\n overflow: auto;\n height: 34px;\n width: 16.381px;\n`;\n\nconst BoardHole = styled(FlexView)`\n z-index: 2;\n top: 15px;\n left: -5px;\n`;\n\nexport { CardContainer, CardBoard, CardBoardContent, DiscountTag, ClipImage, BoardHole };\n"],"names":["CardContainer","styled","CardBoard","theme","CardBoardContent","DiscountTag","Text","ClipImage","BoardHole","FlexView"],"mappings":";;;AAKA,MAAMA,IAAgBC,EAAO;AAAA;AAAA,GAIvBC,IAAYD,EAAO;AAAA,EACvB,CAAC,EAAE,OAAAE,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA,gCAKeA,EAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAWpBA,EAAM,OAAO,OAAO;AAAA;AAAA;AAGpD,GAEMC,IAAmBH,EAAO;AAAA,EAC9B,CAAC,EAAE,OAAAE,EAAA,MAAY;AAAA,uBACMA,EAAM,OAAO,OAAO;AAAA,kBACzBA,EAAM,OAAO,OAAO;AAAA;AAAA;AAGtC,GAEME,IAAcJ,EAAOK,CAAI;AAAA,EAC7B,CAAC,EAAE,OAAAH,EAAA,MAAY;AAAA,wBACOA,EAAM,OAAO,UAAU;AAAA;AAAA;AAG/C,GAEMI,IAAYN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWnBO,IAAYP,EAAOQ,CAAQ;AAAA;AAAA;AAAA;AAAA;"}
|
@@ -1 +0,0 @@
|
|
1
|
-
<svg width="18" height="36" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.62641 6.32896C3.98628 3.38256 6.10968 1 8.88071 1C11.6517 1 13.7751 3.38256 15.135 6.32896C16.5425 9.3785 17.3807 13.5061 17.3807 18C17.3807 22.4939 16.5425 26.6215 15.135 29.671C13.7751 32.6174 11.6517 35 8.88071 35V32.5714C10.1335 32.5714 11.6529 31.4202 12.93 28.6533C14.1594 25.9896 14.9521 22.2243 14.9521 18C14.9521 13.7757 14.1594 10.0104 12.93 7.34667C11.6529 4.57976 10.1335 3.42857 8.88071 3.42857C7.62794 3.42857 6.10849 4.57976 4.83145 7.34667C4.45504 8.16222 4.11957 9.08102 3.83525 10.0846C3.79647 10.2215 3.75864 10.36 3.72178 10.5L3.5 11L1 11.5C1.38463 9.57358 1.93728 7.82206 2.62641 6.32896Z" fill="black" fill-opacity="0.6" stroke="#0D0D0D"/></svg>
|