@cuemath/leap 3.5.71 → 3.5.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/features/homework/homework-card.js +222 -206
  2. package/dist/features/homework/homework-card.js.map +1 -1
  3. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
  4. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
  5. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +41 -40
  6. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  7. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
  8. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
  9. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +14 -12
  10. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
  11. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
  12. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
  13. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
  14. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
  15. package/dist/features/milestone/create/comps/body-layout/body-layout.js +23 -22
  16. package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
  17. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +78 -75
  18. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  19. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +52 -48
  20. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
  21. package/dist/features/milestone/create/milestone-create-styled.js +10 -8
  22. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  23. package/dist/features/milestone/create/milestone-create.js +53 -49
  24. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  25. package/dist/features/milestone/edit/goal-draft-edit-sync.js +25 -0
  26. package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
  27. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +70 -62
  28. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
  29. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
  30. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
  31. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
  32. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
  33. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +111 -107
  34. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  35. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +14 -14
  36. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  37. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +9 -9
  38. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  39. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +22 -17
  40. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
  41. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +102 -96
  42. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  43. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +130 -114
  44. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  45. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +111 -107
  46. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  47. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
  48. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
  49. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +91 -81
  50. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
  51. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -24
  52. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
  53. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +47 -34
  54. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
  55. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-store.js +7 -0
  56. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-store.js.map +1 -0
  57. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +68 -0
  58. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
  59. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +17 -0
  60. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
  61. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +45 -49
  62. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
  63. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +211 -162
  64. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
  65. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +150 -0
  66. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
  67. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +70 -68
  68. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  69. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +62 -60
  70. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  71. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +36 -34
  72. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
  73. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-store.js +7 -0
  74. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-store.js.map +1 -0
  75. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +65 -0
  76. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
  77. package/dist/features/milestone/milestone-tests/tests-creation/store/tests-creation-store.js +63 -0
  78. package/dist/features/milestone/milestone-tests/tests-creation/store/tests-creation-store.js.map +1 -0
  79. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +50 -42
  80. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
  81. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +67 -63
  82. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
  83. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +7 -5
  84. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
  85. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
  86. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  87. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +17 -0
  88. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
  89. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
  90. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
  91. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +138 -89
  92. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
  93. package/dist/features/sheet-v2/resource-list/resource-list.js +28 -26
  94. package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
  95. package/dist/features/trial-session/comps/learning-plan/index.js +303 -91
  96. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  97. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
  98. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
  99. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
  100. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
  101. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +113 -116
  102. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  103. package/dist/features/trial-session/trial-session-types.js +3 -2
  104. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  105. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +90 -74
  106. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  107. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  108. package/dist/features/worksheet/worksheet/worksheet.js +39 -28
  109. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  110. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +27 -27
  111. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
  112. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +27 -24
  113. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  114. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +41 -37
  115. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  116. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
  117. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  118. package/dist/index.d.ts +69 -4
  119. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  120. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  121. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  122. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  123. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  124. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  125. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  126. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  127. package/package.json +1 -1
  128. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
  129. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
  130. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  131. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  132. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  133. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chapters-selection-step.js","sources":["../../../../../../src/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.tsx"],"sourcesContent":["import { memo, useCallback, useContext, useMemo, type FC } from 'react';\n\nimport Bin2Icon from '../../../../../assets/line-icons/icons/bin2';\nimport PlusIcon from '../../../../../assets/line-icons/icons/plus';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../../ui/buttons/button/button';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport { useUIContext } from '../../../../ui/context/context';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { WARNING_MESSAGES } from '../../../constants';\nimport { GOAL_EDIT_FLOWS } from '../../milestone-create-constants';\nimport MilestoneCreateContext from '../../milestone-create-context';\nimport type { IFormStepProps } from '../../milestone-create-types';\nimport BodyLayout from '../body-layout/body-layout';\nimport ClassDetailsStep from '../class-details-step/class-details-step';\nimport ChapterSelection from './chapter-selection-step-v2/chapter-selection';\nimport * as Styled from './chapters-selection-step-styled';\nimport { useChapterListUpdate } from './use-chapter-list-update';\nimport { computeChangeDetection } from './utils';\n\nconst ChaptersSelectionStep: FC<IFormStepProps> = memo(function ChaptersSelectionStep(props) {\n const {\n currentStep,\n onFormDataChange,\n onChapterExitWarning,\n formData,\n studentName,\n studentId,\n config,\n isGoalCreation,\n onPreSubmit,\n courseStream,\n classRatio,\n enrollmentType,\n canDeleteGoal,\n onDeleteGoal,\n isTeacherTrainingAccount,\n } = props;\n const { flow } = useContext(MilestoneCreateContext);\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n action_plan: {\n green: { share_message_template: submitBaseMessage },\n },\n } = config;\n const { buttonLabel, name, title } = currentStep;\n const analyticsProps = {\n step: name,\n };\n const { testType, primaryChaptersList, board, major, region, chapterGoalCategory } = formData;\n\n const { primaryGoalCategory } = chapterGoalCategory || {};\n\n const goalEditFlow = canDeleteGoal && (flow === 'DRAFT_EDIT' || flow === 'EDIT');\n\n //* Hook that handles making api call for cue_chapters updating primaryChapterList.\n const { isProcessing, isProcessed } = useChapterListUpdate({\n formData,\n onFormDataChange,\n studentId,\n });\n\n const isAtleastOneChapterAdded = useMemo(() => {\n if (primaryChaptersList) {\n return primaryChaptersList.some(chapter => chapter.added);\n }\n\n return false;\n }, [primaryChaptersList]);\n\n const handleNext = useCallback(() => {\n const selectedChaptersList = primaryChaptersList?.filter(chapter => {\n return Boolean(chapter.added);\n });\n\n const searchedAndAddedChapterLength =\n primaryChaptersList?.filter(\n chapter => chapter.program_id !== primaryGoalCategory?.program_code && chapter.added,\n ).length ?? 0;\n\n const suggestedChaptersLength =\n primaryChaptersList?.filter(chapter => chapter.program_id === primaryGoalCategory?.program_id)\n .length ?? 0;\n\n trackEvent('CHAPTER_DETAILS_ADDED', {\n total_chapter_added: selectedChaptersList?.length ?? 0,\n searched_chapter_added: searchedAndAddedChapterLength,\n suggested_chapter_added: suggestedChaptersLength,\n });\n\n if (isGoalCreation) {\n onFormDataChange({\n primaryChaptersList: primaryChaptersList,\n selectedChaptersList: selectedChaptersList,\n searchedChaptersList: [],\n chapterSubStages: 'date-selection',\n committed: {\n selectedChaptersList: true,\n chapterSubStages: true,\n grade: true,\n board: !!board,\n major: !!major,\n region: !!region,\n },\n });\n } else if (flow) {\n onPreSubmit?.({ isDraftPlan: false, flow, submitBaseMessage });\n }\n }, [\n primaryChaptersList,\n board,\n major,\n region,\n trackEvent,\n onFormDataChange,\n onPreSubmit,\n flow,\n isGoalCreation,\n submitBaseMessage,\n primaryGoalCategory,\n ]);\n\n const handleOnAddCustomChapter = useCallback(() => {\n onFormDataChange({\n chapterSubStages: 'custom-chapters',\n selectedChaptersList: undefined,\n committed: {\n chapterSubStages: true,\n selectedChaptersList: false,\n },\n });\n }, [onFormDataChange]);\n\n const handleOnBackButtonClick = useCallback(\n (handleBack: () => void) => {\n if (!flow) return null;\n\n const isChangeDetected = computeChangeDetection(primaryChaptersList, primaryGoalCategory);\n\n if (GOAL_EDIT_FLOWS.includes(flow) || !primaryChaptersList?.length || !isChangeDetected) {\n handleBack();\n } else {\n onChapterExitWarning?.({\n onSuccess: handleBack,\n description: WARNING_MESSAGES.CHAPTER_EXIT_WARNING,\n });\n }\n },\n [onChapterExitWarning, flow, primaryChaptersList, primaryGoalCategory],\n );\n\n return (\n <BodyLayout\n stepName={name}\n headerElement={\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={1} $width=\"100%\">\n <Text $renderAs=\"ab2\">{isGoalCreation ? title : 'Chapters'}</Text>\n\n {isGoalCreation && flow === 'CREATE' && (\n <ClassDetailsStep\n studentName={studentName}\n studentId={studentId}\n currentStep={currentStep}\n config={config}\n formData={formData}\n courseStream={courseStream}\n classRatio={classRatio}\n onFormDataChange={onFormDataChange}\n onChapterExitWarning={onChapterExitWarning}\n enrollmentType={enrollmentType}\n isTeacherTrainingAccount={isTeacherTrainingAccount}\n />\n )}\n\n {isGoalCreation && goalEditFlow && (\n <Styled.BinIconWrapper>\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem=\"Delete goal\"\n zIndex={10}\n widthX={6}\n >\n <IconButton\n size=\"xsmall\"\n renderAs=\"tertiary\"\n Icon={Bin2Icon}\n analyticsLabel=\"delete_goal_plan\"\n onClick={onDeleteGoal}\n />\n </ArrowTooltip>\n </Styled.BinIconWrapper>\n )}\n </FlexView>\n }\n bodyHeight=\"100%\"\n onBackButtonClick={handleOnBackButtonClick}\n bodyElement={\n <ChapterSelection\n config={config}\n classRatio={classRatio}\n isGoalCreation={isGoalCreation}\n formData={formData}\n studentName={studentName}\n isProcessed={isProcessed}\n isProcessing={isProcessing}\n courseStream={courseStream}\n onFormDataChange={onFormDataChange}\n onChapterExitWarning={onChapterExitWarning}\n enrollmentType={enrollmentType}\n isTeacherTrainingAccount={isTeacherTrainingAccount}\n />\n }\n footerElement={\n <FlexView $flexDirection=\"row\" $flexGap={12} $alignItems=\"center\">\n {(!isGoalCreation || testType === 'no-test') && (\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"top\"\n widthX={6.5}\n zIndex={20}\n tooltipItem=\"Add a chapter\"\n >\n <Styled.ButtonWrapper $borderRadius={50}>\n <IconButton\n renderAs=\"secondary\"\n analyticsLabel=\"Add custom chapters\"\n Icon={PlusIcon}\n disabled={isProcessing}\n onClick={handleOnAddCustomChapter}\n />\n </Styled.ButtonWrapper>\n </ArrowTooltip>\n )}\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"top\"\n widthX={11}\n zIndex={20}\n tooltipItem=\"Please select atleast one chapter\"\n hidden={isAtleastOneChapterAdded}\n >\n <Styled.ButtonWrapper>\n <Button\n renderAs=\"primary\"\n size=\"small\"\n shape=\"square\"\n widthX={9}\n label={buttonLabel}\n onClick={handleNext}\n iconPosition=\"right\"\n busy={isProcessing}\n disabled={!isAtleastOneChapterAdded}\n analyticsProps={analyticsProps}\n />\n </Styled.ButtonWrapper>\n </ArrowTooltip>\n </FlexView>\n }\n />\n );\n});\n\nexport default ChaptersSelectionStep;\n"],"names":["ChaptersSelectionStep","memo","props","currentStep","onFormDataChange","onChapterExitWarning","formData","studentName","studentId","config","isGoalCreation","onPreSubmit","courseStream","classRatio","enrollmentType","canDeleteGoal","onDeleteGoal","isTeacherTrainingAccount","flow","useContext","MilestoneCreateContext","trackEvent","useUIContext","submitBaseMessage","buttonLabel","name","title","analyticsProps","testType","primaryChaptersList","board","major","region","chapterGoalCategory","primaryGoalCategory","goalEditFlow","isProcessing","isProcessed","useChapterListUpdate","isAtleastOneChapterAdded","useMemo","chapter","handleNext","useCallback","selectedChaptersList","searchedAndAddedChapterLength","suggestedChaptersLength","handleOnAddCustomChapter","handleOnBackButtonClick","handleBack","isChangeDetected","computeChangeDetection","GOAL_EDIT_FLOWS","WARNING_MESSAGES","jsx","BodyLayout","jsxs","FlexView","Text","ClassDetailsStep","Styled.BinIconWrapper","ArrowTooltip","IconButton","Bin2Icon","ChapterSelection","Styled.ButtonWrapper","PlusIcon","Button"],"mappings":"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"}
1
+ {"version":3,"file":"chapters-selection-step.js","sources":["../../../../../../src/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.tsx"],"sourcesContent":["import { memo, useCallback, useContext, useMemo, type FC } from 'react';\n\nimport Bin2Icon from '../../../../../assets/line-icons/icons/bin2';\nimport PlusIcon from '../../../../../assets/line-icons/icons/plus';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../../ui/buttons/button/button';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport { useUIContext } from '../../../../ui/context/context';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { WARNING_MESSAGES } from '../../../constants';\nimport { GOAL_EDIT_FLOWS } from '../../milestone-create-constants';\nimport MilestoneCreateContext from '../../milestone-create-context';\nimport type { IFormStepProps } from '../../milestone-create-types';\nimport BodyLayout from '../body-layout/body-layout';\nimport ClassDetailsStep from '../class-details-step/class-details-step';\nimport ChapterSelection from './chapter-selection-step-v2/chapter-selection';\nimport * as Styled from './chapters-selection-step-styled';\nimport { useChapterListUpdate } from './use-chapter-list-update';\nimport { computeChangeDetection } from './utils';\n\nconst ChaptersSelectionStep: FC<IFormStepProps> = memo(function ChaptersSelectionStep(props) {\n const {\n currentStep,\n onFormDataChange,\n onChapterExitWarning,\n formData,\n studentName,\n studentId,\n config,\n isGoalCreation,\n onPreSubmit,\n courseStream,\n classRatio,\n enrollmentType,\n canDeleteGoal,\n onDeleteGoal,\n isTeacherTrainingAccount,\n userType,\n useAbsoluteFooter,\n } = props;\n const { flow } = useContext(MilestoneCreateContext);\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n action_plan: {\n green: { share_message_template: submitBaseMessage },\n },\n } = config;\n const { buttonLabel, name, title } = currentStep;\n const analyticsProps = {\n step: name,\n };\n const { testType, primaryChaptersList, board, major, region, chapterGoalCategory } = formData;\n\n const { primaryGoalCategory } = chapterGoalCategory || {};\n\n const goalEditFlow = canDeleteGoal && (flow === 'DRAFT_EDIT' || flow === 'EDIT');\n const showDeleteButton = !!(isGoalCreation && goalEditFlow && onDeleteGoal);\n\n //* Hook that handles making api call for cue_chapters updating primaryChapterList.\n const { isProcessing, isProcessed } = useChapterListUpdate({\n formData,\n onFormDataChange,\n studentId,\n });\n\n const isAtleastOneChapterAdded = useMemo(() => {\n if (primaryChaptersList) {\n return primaryChaptersList.some(chapter => chapter.added);\n }\n\n return false;\n }, [primaryChaptersList]);\n\n const handleNext = useCallback(() => {\n const selectedChaptersList = primaryChaptersList?.filter(chapter => {\n return Boolean(chapter.added);\n });\n\n const searchedAndAddedChapterLength =\n primaryChaptersList?.filter(\n chapter => chapter.program_id !== primaryGoalCategory?.program_code && chapter.added,\n ).length ?? 0;\n\n const suggestedChaptersLength =\n primaryChaptersList?.filter(chapter => chapter.program_id === primaryGoalCategory?.program_id)\n .length ?? 0;\n\n trackEvent('CHAPTER_DETAILS_ADDED', {\n total_chapter_added: selectedChaptersList?.length ?? 0,\n searched_chapter_added: searchedAndAddedChapterLength,\n suggested_chapter_added: suggestedChaptersLength,\n });\n\n if (isGoalCreation) {\n onFormDataChange({\n primaryChaptersList: primaryChaptersList,\n selectedChaptersList: selectedChaptersList,\n searchedChaptersList: [],\n chapterSubStages: 'date-selection',\n committed: {\n selectedChaptersList: true,\n chapterSubStages: true,\n grade: true,\n board: !!board,\n major: !!major,\n region: !!region,\n },\n });\n } else if (flow) {\n onPreSubmit?.({ isDraftPlan: false, flow, submitBaseMessage });\n }\n }, [\n primaryChaptersList,\n board,\n major,\n region,\n trackEvent,\n onFormDataChange,\n onPreSubmit,\n flow,\n isGoalCreation,\n submitBaseMessage,\n primaryGoalCategory,\n ]);\n\n const handleOnAddCustomChapter = useCallback(() => {\n onFormDataChange({\n chapterSubStages: 'custom-chapters',\n selectedChaptersList: undefined,\n committed: {\n chapterSubStages: true,\n selectedChaptersList: false,\n },\n });\n }, [onFormDataChange]);\n\n const handleOnBackButtonClick = useCallback(\n (handleBack: () => void) => {\n if (!flow) return null;\n\n const isChangeDetected = computeChangeDetection(primaryChaptersList, primaryGoalCategory);\n\n if (GOAL_EDIT_FLOWS.includes(flow) || !primaryChaptersList?.length || !isChangeDetected) {\n handleBack();\n } else {\n onChapterExitWarning?.({\n onSuccess: handleBack,\n description: WARNING_MESSAGES.CHAPTER_EXIT_WARNING,\n });\n }\n },\n [onChapterExitWarning, flow, primaryChaptersList, primaryGoalCategory],\n );\n\n return (\n <BodyLayout\n stepName={name}\n useAbsoluteFooter={useAbsoluteFooter}\n headerElement={\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={1} $width=\"100%\">\n <Text $renderAs=\"ab2\">{isGoalCreation ? title : 'Chapters'}</Text>\n\n {isGoalCreation && flow === 'CREATE' && (\n <ClassDetailsStep\n studentName={studentName}\n studentId={studentId}\n currentStep={currentStep}\n config={config}\n formData={formData}\n courseStream={courseStream}\n classRatio={classRatio}\n onFormDataChange={onFormDataChange}\n onChapterExitWarning={onChapterExitWarning}\n enrollmentType={enrollmentType}\n isTeacherTrainingAccount={isTeacherTrainingAccount}\n />\n )}\n\n {showDeleteButton && (\n <Styled.BinIconWrapper>\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem=\"Delete goal\"\n zIndex={10}\n widthX={6}\n >\n <IconButton\n size=\"xsmall\"\n renderAs=\"tertiary\"\n Icon={Bin2Icon}\n analyticsLabel=\"delete_goal_plan\"\n onClick={onDeleteGoal}\n />\n </ArrowTooltip>\n </Styled.BinIconWrapper>\n )}\n </FlexView>\n }\n bodyHeight=\"100%\"\n onBackButtonClick={handleOnBackButtonClick}\n bodyElement={\n <ChapterSelection\n config={config}\n classRatio={classRatio}\n isGoalCreation={isGoalCreation}\n formData={formData}\n studentName={studentName}\n isProcessed={isProcessed}\n isProcessing={isProcessing}\n courseStream={courseStream}\n onFormDataChange={onFormDataChange}\n onChapterExitWarning={onChapterExitWarning}\n enrollmentType={enrollmentType}\n isTeacherTrainingAccount={isTeacherTrainingAccount}\n />\n }\n footerElement={\n userType === 'STUDENT' ? undefined : (\n <FlexView $flexDirection=\"row\" $flexGap={12} $alignItems=\"center\">\n {(!isGoalCreation || testType === 'no-test') && (\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"top\"\n widthX={6.5}\n zIndex={20}\n tooltipItem=\"Add a chapter\"\n >\n <Styled.ButtonWrapper $borderRadius={50}>\n <IconButton\n renderAs=\"secondary\"\n analyticsLabel=\"Add custom chapters\"\n Icon={PlusIcon}\n disabled={isProcessing}\n onClick={handleOnAddCustomChapter}\n />\n </Styled.ButtonWrapper>\n </ArrowTooltip>\n )}\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"top\"\n widthX={11}\n zIndex={20}\n tooltipItem=\"Please select atleast one chapter\"\n hidden={isAtleastOneChapterAdded}\n >\n <Styled.ButtonWrapper>\n <Button\n renderAs=\"primary\"\n size=\"small\"\n shape=\"square\"\n widthX={9}\n label={buttonLabel}\n onClick={handleNext}\n iconPosition=\"right\"\n busy={isProcessing}\n disabled={!isAtleastOneChapterAdded}\n analyticsProps={analyticsProps}\n />\n </Styled.ButtonWrapper>\n </ArrowTooltip>\n </FlexView>\n )\n }\n />\n );\n});\n\nexport default ChaptersSelectionStep;\n"],"names":["ChaptersSelectionStep","memo","props","currentStep","onFormDataChange","onChapterExitWarning","formData","studentName","studentId","config","isGoalCreation","onPreSubmit","courseStream","classRatio","enrollmentType","canDeleteGoal","onDeleteGoal","isTeacherTrainingAccount","userType","useAbsoluteFooter","flow","useContext","MilestoneCreateContext","trackEvent","useUIContext","submitBaseMessage","buttonLabel","name","title","analyticsProps","testType","primaryChaptersList","board","major","region","chapterGoalCategory","primaryGoalCategory","showDeleteButton","isProcessing","isProcessed","useChapterListUpdate","isAtleastOneChapterAdded","useMemo","chapter","handleNext","useCallback","selectedChaptersList","searchedAndAddedChapterLength","suggestedChaptersLength","handleOnAddCustomChapter","handleOnBackButtonClick","handleBack","isChangeDetected","computeChangeDetection","GOAL_EDIT_FLOWS","WARNING_MESSAGES","jsx","BodyLayout","jsxs","FlexView","Text","ClassDetailsStep","Styled.BinIconWrapper","ArrowTooltip","IconButton","Bin2Icon","ChapterSelection","Styled.ButtonWrapper","PlusIcon","Button"],"mappings":"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"}
@@ -1,39 +1,42 @@
1
- import { jsx as s, jsxs as Y } from "react/jsx-runtime";
2
- import { memo as q, useState as C, useCallback as l, useMemo as z, useEffect as H } from "react";
3
- import P from "../../../../../assets/line-icons/icons/draft.js";
4
- import U from "../../../../ui/buttons/button/button.js";
5
- import J from "../../../../ui/buttons/icon-button/icon-button.js";
1
+ import { jsx as s, jsxs as z } from "react/jsx-runtime";
2
+ import { memo as H, useState as C, useCallback as l, useMemo as P, useEffect as J } from "react";
3
+ import K from "../../../../../assets/line-icons/icons/draft.js";
4
+ import Q from "../../../../ui/buttons/button/button.js";
5
+ import Z from "../../../../ui/buttons/icon-button/icon-button.js";
6
6
  import y from "../../../../ui/layout/flex-view.js";
7
- import K from "../../../../ui/text/text.js";
8
- import { ONE_YEAR_TIMESTAMP_IN_MILLISECONDS as Q } from "../../../constants.js";
9
- import Z from "../../../hooks/use-submit-goal-creation.js";
10
- import { useMilestoneContext as F } from "../../milestone-create-context.js";
11
- import ee from "../body-layout/body-layout.js";
7
+ import F from "../../../../ui/text/text.js";
8
+ import { ONE_YEAR_TIMESTAMP_IN_MILLISECONDS as ee } from "../../../constants.js";
9
+ import te from "../../../hooks/use-submit-goal-creation.js";
10
+ import { useMilestoneContext as oe } from "../../milestone-create-context.js";
11
+ import se from "../body-layout/body-layout.js";
12
12
  import { ButtonWrapper as $ } from "./goal-completion-date-selector-styled.js";
13
- import te from "./goal-completion-date-selector-view.js";
13
+ import ae from "./goal-completion-date-selector-view.js";
14
14
  import { lastDayOfMonth as v } from "../../../../../node_modules/date-fns/lastDayOfMonth.js";
15
- import { addDays as oe } from "../../../../../node_modules/date-fns/addDays.js";
16
- import { eachMonthOfInterval as se } from "../../../../../node_modules/date-fns/eachMonthOfInterval.js";
17
- import { addMonths as ae } from "../../../../../node_modules/date-fns/addMonths.js";
15
+ import { addDays as ne } from "../../../../../node_modules/date-fns/addDays.js";
16
+ import { eachMonthOfInterval as re } from "../../../../../node_modules/date-fns/eachMonthOfInterval.js";
17
+ import { addMonths as ie } from "../../../../../node_modules/date-fns/addMonths.js";
18
18
  import { formatDate as c } from "../../../../../node_modules/date-fns/format.js";
19
- const xe = q(function({
19
+ const ve = H(function({
20
20
  formData: D,
21
- config: _,
22
- studentId: S,
21
+ config: S,
22
+ studentId: _,
23
23
  milestoneId: A = "",
24
24
  currentStep: G,
25
25
  onFormDataChange: n,
26
26
  onPreSubmit: m,
27
- courseStream: O
27
+ courseStream: O,
28
+ useAbsoluteFooter: B,
29
+ userType: L,
30
+ disablePublish: N
28
31
  }) {
29
- const [f, d] = C(""), [h, B] = C(!1), { flow: a } = F(), {
32
+ const [f, d] = C(""), [h, j] = C(!1), { flow: a } = oe(), {
30
33
  share_message: {
31
34
  default: {
32
35
  create_message_template: E,
33
36
  update_message_template: M
34
37
  }
35
38
  }
36
- } = _, u = l(
39
+ } = S, u = l(
37
40
  (e) => {
38
41
  if (a) {
39
42
  const o = a === "EDIT" ? M : E;
@@ -45,19 +48,19 @@ const xe = q(function({
45
48
  }
46
49
  },
47
50
  [a, E, M, m]
48
- ), { isProcessing: g, onSubmit: I } = Z({
51
+ ), { isProcessing: g, onSubmit: I } = te({
49
52
  formData: D,
50
- studentId: S,
53
+ studentId: _,
51
54
  onSubmit: u,
52
55
  setError: d,
53
56
  milestoneId: A,
54
57
  flow: a ?? "CREATE",
55
58
  courseStream: O
56
- }), { testType: L, milestoneEndDate: t, committed: N } = D, { milestoneEndDate: w } = N, { title: j } = G, k = a === "EDIT" ? "Update goal" : "Create goal", T = /* @__PURE__ */ new Date(), r = c(T.setDate(T.getDate() + 1), "yyyy-MM-dd"), i = c(Date.now() + Q, "yyyy-MM-dd"), R = z(() => {
57
- const e = /* @__PURE__ */ new Date(), o = v(e) ? oe(e, 1) : e;
58
- return se({
59
+ }), { testType: k, milestoneEndDate: t, committed: R } = D, { milestoneEndDate: T } = R, { title: W } = G, U = a === "EDIT" ? "Update goal" : "Create goal", w = /* @__PURE__ */ new Date(), r = c(w.setDate(w.getDate() + 1), "yyyy-MM-dd"), i = c(Date.now() + ee, "yyyy-MM-dd"), V = P(() => {
60
+ const e = /* @__PURE__ */ new Date(), o = v(e) ? ne(e, 1) : e;
61
+ return re({
59
62
  start: o,
60
- end: ae(o, 11)
63
+ end: ie(o, 11)
61
64
  }).map((b) => {
62
65
  const x = v(b);
63
66
  return {
@@ -66,7 +69,7 @@ const xe = q(function({
66
69
  value: x
67
70
  };
68
71
  });
69
- }, []), W = l(
72
+ }, []), X = l(
70
73
  (e) => {
71
74
  n({
72
75
  milestoneEndDate: e,
@@ -74,7 +77,7 @@ const xe = q(function({
74
77
  });
75
78
  },
76
79
  [n]
77
- ), V = l(
80
+ ), Y = l(
78
81
  (e) => {
79
82
  const o = e.target.value;
80
83
  if (o) {
@@ -97,52 +100,53 @@ const xe = q(function({
97
100
  milestoneEndDate: !0,
98
101
  milestoneEndDateIsTentative: !0
99
102
  }
100
- }), B(!0));
103
+ }), j(!0));
101
104
  },
102
105
  [t, r, i, n, I]
103
- ), X = l(() => {
106
+ ), q = l(() => {
104
107
  p(!0);
105
108
  }, [p]);
106
- return H(() => {
107
- w && h && u(!0);
108
- }, [w, h, u]), /* @__PURE__ */ s(
109
- ee,
109
+ return J(() => {
110
+ T && h && u(!0);
111
+ }, [T, h, u]), /* @__PURE__ */ s(
112
+ se,
110
113
  {
111
- headerElement: /* @__PURE__ */ s(y, { $flexDirection: "row", $alignItems: "center", $flexGapX: 1, children: /* @__PURE__ */ s(K, { $renderAs: "ab2", children: j }) }),
114
+ useAbsoluteFooter: B,
115
+ headerElement: /* @__PURE__ */ s(y, { $flexDirection: "row", $alignItems: "center", $flexGapX: 1, children: /* @__PURE__ */ s(F, { $renderAs: "ab2", children: W }) }),
112
116
  bodyHeight: "100%",
113
117
  bodyElement: /* @__PURE__ */ s(y, { $width: "100%", $height: "100%", $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ s(
114
- te,
118
+ ae,
115
119
  {
116
- testType: L,
120
+ testType: k,
117
121
  tomorrowsDate: r,
118
122
  oneYearFutureDate: i,
119
123
  errorMessage: f,
120
- durationOptions: R,
124
+ durationOptions: V,
121
125
  milestoneEndDate: t,
122
- handleDateChange: V,
123
- handleDurationChange: W
126
+ handleDateChange: Y,
127
+ handleDurationChange: X
124
128
  }
125
129
  ) }),
126
- footerElement: /* @__PURE__ */ Y(y, { $flexDirection: "row", $flexGap: 12, $alignItems: "center", children: [
130
+ footerElement: L === "STUDENT" ? void 0 : /* @__PURE__ */ z(y, { $flexDirection: "row", $flexGap: 12, $alignItems: "center", children: [
127
131
  a !== "EDIT" && /* @__PURE__ */ s($, { $borderRadius: 50, children: /* @__PURE__ */ s(
128
- J,
132
+ Z,
129
133
  {
130
134
  renderAs: "secondary",
131
135
  analyticsLabel: "Save as draft",
132
- Icon: P,
136
+ Icon: K,
133
137
  disabled: !t || g,
134
- onClick: X
138
+ onClick: q
135
139
  }
136
140
  ) }),
137
141
  /* @__PURE__ */ s($, { children: /* @__PURE__ */ s(
138
- U,
142
+ Q,
139
143
  {
140
144
  renderAs: "primary",
141
145
  size: "small",
142
146
  shape: "square",
143
147
  widthX: 9,
144
- label: k,
145
- disabled: !t || g,
148
+ label: U,
149
+ disabled: !t || g || !!N,
146
150
  onClick: p
147
151
  }
148
152
  ) })
@@ -151,6 +155,6 @@ const xe = q(function({
151
155
  );
152
156
  });
153
157
  export {
154
- xe as default
158
+ ve as default
155
159
  };
156
160
  //# sourceMappingURL=goal-completion-date-selector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"goal-completion-date-selector.js","sources":["../../../../../../src/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.tsx"],"sourcesContent":["import { addDays, addMonths, eachMonthOfInterval, format, lastDayOfMonth } from 'date-fns';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport DraftIcon from '../../../../../assets/line-icons/icons/draft';\nimport Button from '../../../../ui/buttons/button/button';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { ONE_YEAR_TIMESTAMP_IN_MILLISECONDS } from '../../../constants';\nimport useSubmitGoalCreation from '../../../hooks/use-submit-goal-creation';\nimport { useMilestoneContext } from '../../milestone-create-context';\nimport type { IFormStepProps } from '../../milestone-create-types';\nimport BodyLayout from '../body-layout/body-layout';\nimport * as Styled from './goal-completion-date-selector-styled';\nimport GoalCompletionDateSelectorView from './goal-completion-date-selector-view';\n\nconst GoalCompletionDateSelector: FC<IFormStepProps> = memo(function GoalCompletionDateSelector({\n formData,\n config,\n studentId,\n milestoneId = '',\n currentStep,\n onFormDataChange,\n onPreSubmit,\n courseStream,\n}) {\n const [errorMessage, setErrorMessage] = useState('');\n const [proceedingWithChanges, setProceedingWithChanges] = useState(false);\n\n const { flow } = useMilestoneContext();\n\n const {\n share_message: {\n default: {\n create_message_template: createMessageTemplate,\n update_message_template: updateMessageTemplate,\n },\n },\n } = config;\n\n const handleGoalCreationSubmission = useCallback(\n (isGoalCreation?: boolean) => {\n if (flow) {\n const submitBaseMessage = flow === 'EDIT' ? updateMessageTemplate : createMessageTemplate;\n\n onPreSubmit?.({\n isDraftPlan: !isGoalCreation,\n flow: flow,\n submitBaseMessage,\n });\n }\n },\n [flow, createMessageTemplate, updateMessageTemplate, onPreSubmit],\n );\n\n const { isProcessing, onSubmit } = useSubmitGoalCreation({\n formData,\n studentId,\n onSubmit: handleGoalCreationSubmission,\n setError: setErrorMessage,\n milestoneId,\n flow: flow ?? 'CREATE',\n courseStream,\n });\n\n const { testType, milestoneEndDate, committed } = formData;\n const { milestoneEndDate: committedMilestoneEndDate } = committed;\n const { title } = currentStep;\n const buttonLabel = flow === 'EDIT' ? 'Update goal' : 'Create goal';\n\n const newDate = new Date();\n const tomorrowsDate = format(newDate.setDate(newDate.getDate() + 1), 'yyyy-MM-dd');\n\n const oneYearFutureDate = format(Date.now() + ONE_YEAR_TIMESTAMP_IN_MILLISECONDS, 'yyyy-MM-dd');\n\n const durationOptions = useMemo(() => {\n const today = new Date();\n const startDay = lastDayOfMonth(today) ? addDays(today, 1) : today;\n const months = eachMonthOfInterval({\n start: startDay,\n end: addMonths(startDay, 11),\n });\n\n return months.map(date => {\n const lastDay = lastDayOfMonth(date);\n\n return {\n id: format(lastDay, 'yyyy-MM-dd'),\n label: format(date, 'MMMM yyyy'),\n value: lastDay,\n };\n });\n }, []);\n\n const handleDurationChange = useCallback(\n (date: string) => {\n onFormDataChange({\n milestoneEndDate: date,\n milestoneEndDateIsTentative: true,\n });\n },\n [onFormDataChange],\n );\n\n const handleDateChange = useCallback<\n NonNullable<React.InputHTMLAttributes<HTMLInputElement>['onChange']>\n >(\n event => {\n const value = event.target.value;\n\n if (!value) return;\n\n if (errorMessage && value >= tomorrowsDate && value < oneYearFutureDate) {\n setErrorMessage('');\n\n return;\n }\n\n onFormDataChange({\n milestoneEndDate: value,\n milestoneEndDateIsTentative: true,\n });\n },\n [tomorrowsDate, errorMessage, onFormDataChange, oneYearFutureDate],\n );\n\n const handleNext = useCallback(\n (isDraft?: boolean) => {\n if (\n milestoneEndDate &&\n (milestoneEndDate < tomorrowsDate || milestoneEndDate > oneYearFutureDate)\n ) {\n if (milestoneEndDate < tomorrowsDate) {\n setErrorMessage('Please enter a future date');\n } else {\n setErrorMessage('Please select a date within the next year');\n }\n } else if (isDraft) {\n onSubmit(true);\n } else {\n onFormDataChange({\n milestoneEndDate,\n committed: {\n milestoneEndDate: true,\n milestoneEndDateIsTentative: true,\n },\n });\n setProceedingWithChanges(true);\n }\n },\n [milestoneEndDate, tomorrowsDate, oneYearFutureDate, onFormDataChange, onSubmit],\n );\n\n const handleOnSaveAsDraft = useCallback(() => {\n handleNext(true);\n }, [handleNext]);\n\n useEffect(() => {\n if (committedMilestoneEndDate && proceedingWithChanges) {\n handleGoalCreationSubmission(true);\n }\n }, [committedMilestoneEndDate, proceedingWithChanges, handleGoalCreationSubmission]);\n\n return (\n <BodyLayout\n headerElement={\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={1}>\n <Text $renderAs=\"ab2\">{title}</Text>\n </FlexView>\n }\n bodyHeight=\"100%\"\n bodyElement={\n <FlexView $width=\"100%\" $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <GoalCompletionDateSelectorView\n testType={testType}\n tomorrowsDate={tomorrowsDate}\n oneYearFutureDate={oneYearFutureDate}\n errorMessage={errorMessage}\n durationOptions={durationOptions}\n milestoneEndDate={milestoneEndDate}\n handleDateChange={handleDateChange}\n handleDurationChange={handleDurationChange}\n />\n </FlexView>\n }\n footerElement={\n <FlexView $flexDirection=\"row\" $flexGap={12} $alignItems=\"center\">\n {flow !== 'EDIT' && (\n <Styled.ButtonWrapper $borderRadius={50}>\n <IconButton\n renderAs=\"secondary\"\n analyticsLabel=\"Save as draft\"\n Icon={DraftIcon}\n disabled={!milestoneEndDate || isProcessing}\n onClick={handleOnSaveAsDraft}\n />\n </Styled.ButtonWrapper>\n )}\n\n <Styled.ButtonWrapper>\n <Button\n renderAs=\"primary\"\n size=\"small\"\n shape=\"square\"\n widthX={9}\n label={buttonLabel}\n disabled={!milestoneEndDate || isProcessing}\n onClick={handleNext}\n />\n </Styled.ButtonWrapper>\n </FlexView>\n }\n />\n );\n});\n\nexport default GoalCompletionDateSelector;\n"],"names":["GoalCompletionDateSelector","memo","formData","config","studentId","milestoneId","currentStep","onFormDataChange","onPreSubmit","courseStream","errorMessage","setErrorMessage","useState","proceedingWithChanges","setProceedingWithChanges","flow","useMilestoneContext","createMessageTemplate","updateMessageTemplate","handleGoalCreationSubmission","useCallback","isGoalCreation","submitBaseMessage","isProcessing","onSubmit","useSubmitGoalCreation","testType","milestoneEndDate","committed","committedMilestoneEndDate","title","buttonLabel","newDate","tomorrowsDate","format","oneYearFutureDate","ONE_YEAR_TIMESTAMP_IN_MILLISECONDS","durationOptions","useMemo","today","startDay","lastDayOfMonth","addDays","eachMonthOfInterval","addMonths","date","lastDay","handleDurationChange","handleDateChange","event","value","handleNext","isDraft","handleOnSaveAsDraft","useEffect","jsx","BodyLayout","FlexView","Text","GoalCompletionDateSelectorView","Styled.ButtonWrapper","IconButton","DraftIcon","Button"],"mappings":"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"}
1
+ {"version":3,"file":"goal-completion-date-selector.js","sources":["../../../../../../src/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.tsx"],"sourcesContent":["import { addDays, addMonths, eachMonthOfInterval, format, lastDayOfMonth } from 'date-fns';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport DraftIcon from '../../../../../assets/line-icons/icons/draft';\nimport Button from '../../../../ui/buttons/button/button';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { ONE_YEAR_TIMESTAMP_IN_MILLISECONDS } from '../../../constants';\nimport useSubmitGoalCreation from '../../../hooks/use-submit-goal-creation';\nimport { useMilestoneContext } from '../../milestone-create-context';\nimport type { IFormStepProps } from '../../milestone-create-types';\nimport BodyLayout from '../body-layout/body-layout';\nimport * as Styled from './goal-completion-date-selector-styled';\nimport GoalCompletionDateSelectorView from './goal-completion-date-selector-view';\n\nconst GoalCompletionDateSelector: FC<IFormStepProps> = memo(function GoalCompletionDateSelector({\n formData,\n config,\n studentId,\n milestoneId = '',\n currentStep,\n onFormDataChange,\n onPreSubmit,\n courseStream,\n useAbsoluteFooter,\n userType,\n disablePublish,\n}) {\n const [errorMessage, setErrorMessage] = useState('');\n const [proceedingWithChanges, setProceedingWithChanges] = useState(false);\n\n const { flow } = useMilestoneContext();\n\n const {\n share_message: {\n default: {\n create_message_template: createMessageTemplate,\n update_message_template: updateMessageTemplate,\n },\n },\n } = config;\n\n const handleGoalCreationSubmission = useCallback(\n (isGoalCreation?: boolean) => {\n if (flow) {\n const submitBaseMessage = flow === 'EDIT' ? updateMessageTemplate : createMessageTemplate;\n\n onPreSubmit?.({\n isDraftPlan: !isGoalCreation,\n flow: flow,\n submitBaseMessage,\n });\n }\n },\n [flow, createMessageTemplate, updateMessageTemplate, onPreSubmit],\n );\n\n const { isProcessing, onSubmit } = useSubmitGoalCreation({\n formData,\n studentId,\n onSubmit: handleGoalCreationSubmission,\n setError: setErrorMessage,\n milestoneId,\n flow: flow ?? 'CREATE',\n courseStream,\n });\n\n const { testType, milestoneEndDate, committed } = formData;\n const { milestoneEndDate: committedMilestoneEndDate } = committed;\n const { title } = currentStep;\n const buttonLabel = flow === 'EDIT' ? 'Update goal' : 'Create goal';\n\n const newDate = new Date();\n const tomorrowsDate = format(newDate.setDate(newDate.getDate() + 1), 'yyyy-MM-dd');\n\n const oneYearFutureDate = format(Date.now() + ONE_YEAR_TIMESTAMP_IN_MILLISECONDS, 'yyyy-MM-dd');\n\n const durationOptions = useMemo(() => {\n const today = new Date();\n const startDay = lastDayOfMonth(today) ? addDays(today, 1) : today;\n const months = eachMonthOfInterval({\n start: startDay,\n end: addMonths(startDay, 11),\n });\n\n return months.map(date => {\n const lastDay = lastDayOfMonth(date);\n\n return {\n id: format(lastDay, 'yyyy-MM-dd'),\n label: format(date, 'MMMM yyyy'),\n value: lastDay,\n };\n });\n }, []);\n\n const handleDurationChange = useCallback(\n (date: string) => {\n onFormDataChange({\n milestoneEndDate: date,\n milestoneEndDateIsTentative: true,\n });\n },\n [onFormDataChange],\n );\n\n const handleDateChange = useCallback<\n NonNullable<React.InputHTMLAttributes<HTMLInputElement>['onChange']>\n >(\n event => {\n const value = event.target.value;\n\n if (!value) return;\n\n if (errorMessage && value >= tomorrowsDate && value < oneYearFutureDate) {\n setErrorMessage('');\n\n return;\n }\n\n onFormDataChange({\n milestoneEndDate: value,\n milestoneEndDateIsTentative: true,\n });\n },\n [tomorrowsDate, errorMessage, onFormDataChange, oneYearFutureDate],\n );\n\n const handleNext = useCallback(\n (isDraft?: boolean) => {\n if (\n milestoneEndDate &&\n (milestoneEndDate < tomorrowsDate || milestoneEndDate > oneYearFutureDate)\n ) {\n if (milestoneEndDate < tomorrowsDate) {\n setErrorMessage('Please enter a future date');\n } else {\n setErrorMessage('Please select a date within the next year');\n }\n } else if (isDraft) {\n onSubmit(true);\n } else {\n onFormDataChange({\n milestoneEndDate,\n committed: {\n milestoneEndDate: true,\n milestoneEndDateIsTentative: true,\n },\n });\n setProceedingWithChanges(true);\n }\n },\n [milestoneEndDate, tomorrowsDate, oneYearFutureDate, onFormDataChange, onSubmit],\n );\n\n const handleOnSaveAsDraft = useCallback(() => {\n handleNext(true);\n }, [handleNext]);\n\n useEffect(() => {\n if (committedMilestoneEndDate && proceedingWithChanges) {\n handleGoalCreationSubmission(true);\n }\n }, [committedMilestoneEndDate, proceedingWithChanges, handleGoalCreationSubmission]);\n\n return (\n <BodyLayout\n useAbsoluteFooter={useAbsoluteFooter}\n headerElement={\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={1}>\n <Text $renderAs=\"ab2\">{title}</Text>\n </FlexView>\n }\n bodyHeight=\"100%\"\n bodyElement={\n <FlexView $width=\"100%\" $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <GoalCompletionDateSelectorView\n testType={testType}\n tomorrowsDate={tomorrowsDate}\n oneYearFutureDate={oneYearFutureDate}\n errorMessage={errorMessage}\n durationOptions={durationOptions}\n milestoneEndDate={milestoneEndDate}\n handleDateChange={handleDateChange}\n handleDurationChange={handleDurationChange}\n />\n </FlexView>\n }\n footerElement={\n userType === 'STUDENT' ? undefined : (\n <FlexView $flexDirection=\"row\" $flexGap={12} $alignItems=\"center\">\n {flow !== 'EDIT' && (\n <Styled.ButtonWrapper $borderRadius={50}>\n <IconButton\n renderAs=\"secondary\"\n analyticsLabel=\"Save as draft\"\n Icon={DraftIcon}\n disabled={!milestoneEndDate || isProcessing}\n onClick={handleOnSaveAsDraft}\n />\n </Styled.ButtonWrapper>\n )}\n\n <Styled.ButtonWrapper>\n <Button\n renderAs=\"primary\"\n size=\"small\"\n shape=\"square\"\n widthX={9}\n label={buttonLabel}\n disabled={!milestoneEndDate || isProcessing || !!disablePublish}\n onClick={handleNext}\n />\n </Styled.ButtonWrapper>\n </FlexView>\n )\n }\n />\n );\n});\n\nexport default GoalCompletionDateSelector;\n"],"names":["GoalCompletionDateSelector","memo","formData","config","studentId","milestoneId","currentStep","onFormDataChange","onPreSubmit","courseStream","useAbsoluteFooter","userType","disablePublish","errorMessage","setErrorMessage","useState","proceedingWithChanges","setProceedingWithChanges","flow","useMilestoneContext","createMessageTemplate","updateMessageTemplate","handleGoalCreationSubmission","useCallback","isGoalCreation","submitBaseMessage","isProcessing","onSubmit","useSubmitGoalCreation","testType","milestoneEndDate","committed","committedMilestoneEndDate","title","buttonLabel","newDate","tomorrowsDate","format","oneYearFutureDate","ONE_YEAR_TIMESTAMP_IN_MILLISECONDS","durationOptions","useMemo","today","startDay","lastDayOfMonth","addDays","eachMonthOfInterval","addMonths","date","lastDay","handleDurationChange","handleDateChange","event","value","handleNext","isDraft","handleOnSaveAsDraft","useEffect","jsx","BodyLayout","FlexView","Text","GoalCompletionDateSelectorView","jsxs","Styled.ButtonWrapper","IconButton","DraftIcon","Button"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import r from "styled-components";
2
2
  import n from "../../ui/layout/flex-view.js";
3
- const d = r.div(
3
+ const l = r.div(
4
4
  ({ $height: o, $viewMode: e, $minHeight: t }) => `
5
5
  display: flex;
6
6
  flex-direction: column;
@@ -16,7 +16,7 @@ const d = r.div(
16
16
  }
17
17
  ` : ""}
18
18
  `
19
- ), l = r.div(
19
+ ), d = r.div(
20
20
  ({ theme: o, $viewMode: e }) => `
21
21
  position: relative;
22
22
  display: flex;
@@ -41,9 +41,11 @@ const d = r.div(
41
41
  border-bottom: 1px solid ${o.colors.WHITE_5};
42
42
  border-top-left-radius: ${o.layout.gutter * 0.75}px;
43
43
  border-top-right-radius: ${o.layout.gutter * 0.75}px;
44
- `), x = r(n)(() => `
44
+ `), x = r(n)(({
45
+ $useAbsoluteFooter: o
46
+ }) => `
45
47
  align-self: flex-end;
46
- position: fixed;
48
+ position: ${o ? "absolute" : "fixed"};
47
49
  bottom: 0px;
48
50
  right: 24px;
49
51
  `), c = r.img(({ theme: o, $backgroundColor: e }) => {
@@ -69,19 +71,19 @@ const d = r.div(
69
71
  opacity: 0.85;
70
72
  ` : ""}
71
73
  `;
72
- }), y = r.div`
74
+ }), $ = r.div`
73
75
  position: absolute;
74
76
  left: 50%;
75
77
  transform: translateX(-50%);
76
78
  `;
77
79
  export {
78
- l as BodyContainer,
79
- d as Container,
80
+ d as BodyContainer,
81
+ l as Container,
80
82
  a as ContentContainer,
81
83
  x as FooterWrapper,
82
84
  u as HeaderContainer,
83
85
  f as HeaderWrapper,
84
86
  c as RadioCardIcon,
85
- y as StepperWrapper
87
+ $ as StepperWrapper
86
88
  };
87
89
  //# sourceMappingURL=milestone-create-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-create-styled.js","sources":["../../../../src/features/milestone/create/milestone-create-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport type { TColorNames } from '../../ui/types';\n\ninterface ContainerProps {\n $height?: string | number;\n $minHeight?: string;\n $viewMode: boolean;\n}\n\nconst Container = styled.div<ContainerProps>(\n ({ $height, $viewMode, $minHeight }) => `\n display: flex;\n flex-direction: column;\n height: ${$height ? (typeof $height === 'number' ? `${$height}px` : `${$height}`) : 'auto'};\n min-height: ${$minHeight ? $minHeight : 'auto'};\n ${\n $viewMode\n ? `\n cursor: not-allowed;\n border: 2px solid black;\n border-radius: 8px;\n transform: scale3d(.9943, .9900, 1);\n & ${ContentContainer} {\n pointer-events: auto;\n }\n `\n : ``\n }\n`,\n);\n\nconst BodyContainer = styled.div<{ $viewMode?: boolean }>(\n ({ theme, $viewMode }) => `\n position: relative;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n margin-bottom: ${theme.layout.gutter * 0.5}px;\n border-radius: ${theme.layout.gutter * 0.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n // opacity: 0.85;\n `\n : ``\n }\n`,\n);\n\ninterface IContentContainer {\n $overflowHidden?: boolean;\n}\n\nconst ContentContainer = styled.div<IContentContainer>(({ $overflowHidden }) => {\n return `\n flex-grow: 1;\n overflow-y: auto;\n\n ${$overflowHidden && 'overflow: hidden'};\n `;\n});\n\nconst HeaderContainer = styled(FlexView)(({ theme }) => {\n return `\n position: sticky;\n top: 0;\n z-index: 2;\n border-bottom: 1px solid ${theme.colors.WHITE_5};\n border-top-left-radius: ${theme.layout.gutter * 0.75}px;\n border-top-right-radius: ${theme.layout.gutter * 0.75}px;\n `;\n});\n\nconst FooterWrapper = styled(FlexView)(() => {\n return `\n align-self: flex-end;\n position: fixed;\n bottom: 0px;\n right: 24px;\n `;\n});\n\ninterface IRadioCardIconProps {\n $backgroundColor: TColorNames;\n}\n\nconst RadioCardIcon = styled.img<IRadioCardIconProps>(({ theme, $backgroundColor }) => {\n const {\n layout: { gutter },\n colors,\n } = theme;\n\n return `\n width: ${gutter * 6}px;\n height: ${gutter * 6}px;\n background: ${colors[$backgroundColor]};\n border-radius: ${gutter * 0.5}px;\n `;\n});\n\nconst HeaderWrapper = styled(FlexView)<{ $viewMode?: boolean }>(({ theme, $viewMode }) => {\n const {\n layout: { gutter },\n } = theme;\n\n return `\n position:relative;\n min-height:${gutter * 2.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n opacity: 0.85;\n `\n : ``\n }\n`;\n});\n\nconst StepperWrapper = styled.div`\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n`;\n\nexport {\n Container,\n BodyContainer,\n ContentContainer,\n HeaderContainer,\n FooterWrapper,\n RadioCardIcon,\n StepperWrapper,\n HeaderWrapper,\n};\n"],"names":["Container","styled","$height","$viewMode","$minHeight","ContentContainer","BodyContainer","theme","$overflowHidden","HeaderContainer","FlexView","FooterWrapper","RadioCardIcon","$backgroundColor","gutter","colors","HeaderWrapper","StepperWrapper"],"mappings":";;AAWA,MAAMA,IAAYC,EAAO;AAAA,EACvB,CAAC,EAAE,SAAAC,GAAS,WAAAC,GAAW,YAAAC,EAAiB,MAAA;AAAA;AAAA;AAAA,YAG9BF,IAAW,OAAOA,KAAY,WAAW,GAAGA,CAAO,OAAO,GAAGA,CAAO,KAAM,MAAM;AAAA,gBAC5EE,KAA0B,MAAM;AAAA,IAE5CD,IACI;AAAA;AAAA;AAAA;AAAA;AAAA,YAKIE,CAAgB;AAAA;AAAA;AAAA,UAIpB,EACN;AAAA;AAEF,GAEMC,IAAgBL,EAAO;AAAA,EAC3B,CAAC,EAAE,OAAAM,GAAO,WAAAJ,EAAA,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKTI,EAAM,OAAO,SAAS,GAAG;AAAA,mBACzBA,EAAM,OAAO,SAAS,IAAI;AAAA,IAEzCJ,IACI;AAAA;AAAA;AAAA,UAIA,EACN;AAAA;AAEF,GAMME,IAAmBJ,EAAO,IAAuB,CAAC,EAAE,iBAAAO,QACjD;AAAA;AAAA;AAAA;AAAA,MAIHA,KAAmB,kBAAkB;AAAA,GAE1C,GAEKC,IAAkBR,EAAOS,CAAQ,EAAE,CAAC,EAAE,OAAAH,QACnC;AAAA;AAAA;AAAA;AAAA,+BAIsBA,EAAM,OAAO,OAAO;AAAA,8BACrBA,EAAM,OAAO,SAAS,IAAI;AAAA,+BACzBA,EAAM,OAAO,SAAS,IAAI;AAAA,GAExD,GAEKI,IAAgBV,EAAOS,CAAQ,EAAE,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,KAMR,GAMKE,IAAgBX,EAAO,IAAyB,CAAC,EAAE,OAAAM,GAAO,kBAAAM,QAAuB;AAC/E,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAC,EAAO;AAAA,IACjB,QAAAC;AAAA,EACE,IAAAR;AAEG,SAAA;AAAA,aACIO,IAAS,CAAC;AAAA,cACTA,IAAS,CAAC;AAAA,kBACNC,EAAOF,CAAgB,CAAC;AAAA,qBACrBC,IAAS,GAAG;AAAA;AAEjC,CAAC,GAEKE,IAAgBf,EAAOS,CAAQ,EAA2B,CAAC,EAAE,OAAAH,GAAO,WAAAJ,QAAgB;AAClF,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAW,EAAO;AAAA,EACf,IAAAP;AAEG,SAAA;AAAA;AAAA,iBAEQO,IAAS,IAAI;AAAA,MAExBX,IACI;AAAA;AAAA;AAAA,YAIA,EACN;AAAA;AAEJ,CAAC,GAEKc,IAAiBhB,EAAO;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"milestone-create-styled.js","sources":["../../../../src/features/milestone/create/milestone-create-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport type { TColorNames } from '../../ui/types';\n\ninterface ContainerProps {\n $height?: string | number;\n $minHeight?: string;\n $viewMode: boolean;\n}\n\nconst Container = styled.div<ContainerProps>(\n ({ $height, $viewMode, $minHeight }) => `\n display: flex;\n flex-direction: column;\n height: ${$height ? (typeof $height === 'number' ? `${$height}px` : `${$height}`) : 'auto'};\n min-height: ${$minHeight ? $minHeight : 'auto'};\n ${\n $viewMode\n ? `\n cursor: not-allowed;\n border: 2px solid black;\n border-radius: 8px;\n transform: scale3d(.9943, .9900, 1);\n & ${ContentContainer} {\n pointer-events: auto;\n }\n `\n : ``\n }\n`,\n);\n\nconst BodyContainer = styled.div<{ $viewMode?: boolean }>(\n ({ theme, $viewMode }) => `\n position: relative;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n margin-bottom: ${theme.layout.gutter * 0.5}px;\n border-radius: ${theme.layout.gutter * 0.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n // opacity: 0.85;\n `\n : ``\n }\n`,\n);\n\ninterface IContentContainer {\n $overflowHidden?: boolean;\n}\n\nconst ContentContainer = styled.div<IContentContainer>(({ $overflowHidden }) => {\n return `\n flex-grow: 1;\n overflow-y: auto;\n\n ${$overflowHidden && 'overflow: hidden'};\n `;\n});\n\nconst HeaderContainer = styled(FlexView)(({ theme }) => {\n return `\n position: sticky;\n top: 0;\n z-index: 2;\n border-bottom: 1px solid ${theme.colors.WHITE_5};\n border-top-left-radius: ${theme.layout.gutter * 0.75}px;\n border-top-right-radius: ${theme.layout.gutter * 0.75}px;\n `;\n});\n\nconst FooterWrapper = styled(FlexView)<{ $useAbsoluteFooter?: boolean }>(({\n $useAbsoluteFooter,\n}) => {\n return `\n align-self: flex-end;\n position: ${$useAbsoluteFooter ? 'absolute' : 'fixed'};\n bottom: 0px;\n right: 24px;\n `;\n});\n\ninterface IRadioCardIconProps {\n $backgroundColor: TColorNames;\n}\n\nconst RadioCardIcon = styled.img<IRadioCardIconProps>(({ theme, $backgroundColor }) => {\n const {\n layout: { gutter },\n colors,\n } = theme;\n\n return `\n width: ${gutter * 6}px;\n height: ${gutter * 6}px;\n background: ${colors[$backgroundColor]};\n border-radius: ${gutter * 0.5}px;\n `;\n});\n\nconst HeaderWrapper = styled(FlexView)<{ $viewMode?: boolean }>(({ theme, $viewMode }) => {\n const {\n layout: { gutter },\n } = theme;\n\n return `\n position:relative;\n min-height:${gutter * 2.75}px;\n ${\n $viewMode\n ? `\n pointer-events: none;\n opacity: 0.85;\n `\n : ``\n }\n`;\n});\n\nconst StepperWrapper = styled.div`\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n`;\n\nexport {\n Container,\n BodyContainer,\n ContentContainer,\n HeaderContainer,\n FooterWrapper,\n RadioCardIcon,\n StepperWrapper,\n HeaderWrapper,\n};\n"],"names":["Container","styled","$height","$viewMode","$minHeight","ContentContainer","BodyContainer","theme","$overflowHidden","HeaderContainer","FlexView","FooterWrapper","$useAbsoluteFooter","RadioCardIcon","$backgroundColor","gutter","colors","HeaderWrapper","StepperWrapper"],"mappings":";;AAWA,MAAMA,IAAYC,EAAO;AAAA,EACvB,CAAC,EAAE,SAAAC,GAAS,WAAAC,GAAW,YAAAC,EAAiB,MAAA;AAAA;AAAA;AAAA,YAG9BF,IAAW,OAAOA,KAAY,WAAW,GAAGA,CAAO,OAAO,GAAGA,CAAO,KAAM,MAAM;AAAA,gBAC5EE,KAA0B,MAAM;AAAA,IAE5CD,IACI;AAAA;AAAA;AAAA;AAAA;AAAA,YAKIE,CAAgB;AAAA;AAAA;AAAA,UAIpB,EACN;AAAA;AAEF,GAEMC,IAAgBL,EAAO;AAAA,EAC3B,CAAC,EAAE,OAAAM,GAAO,WAAAJ,EAAA,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKTI,EAAM,OAAO,SAAS,GAAG;AAAA,mBACzBA,EAAM,OAAO,SAAS,IAAI;AAAA,IAEzCJ,IACI;AAAA;AAAA;AAAA,UAIA,EACN;AAAA;AAEF,GAMME,IAAmBJ,EAAO,IAAuB,CAAC,EAAE,iBAAAO,QACjD;AAAA;AAAA;AAAA;AAAA,MAIHA,KAAmB,kBAAkB;AAAA,GAE1C,GAEKC,IAAkBR,EAAOS,CAAQ,EAAE,CAAC,EAAE,OAAAH,QACnC;AAAA;AAAA;AAAA;AAAA,+BAIsBA,EAAM,OAAO,OAAO;AAAA,8BACrBA,EAAM,OAAO,SAAS,IAAI;AAAA,+BACzBA,EAAM,OAAO,SAAS,IAAI;AAAA,GAExD,GAEKI,IAAgBV,EAAOS,CAAQ,EAAoC,CAAC;AAAA,EACxE,oBAAAE;AACF,MACS;AAAA;AAAA,kBAESA,IAAqB,aAAa,OAAO;AAAA;AAAA;AAAA,KAI1D,GAMKC,IAAgBZ,EAAO,IAAyB,CAAC,EAAE,OAAAM,GAAO,kBAAAO,QAAuB;AAC/E,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAC,EAAO;AAAA,IACjB,QAAAC;AAAA,EACE,IAAAT;AAEG,SAAA;AAAA,aACIQ,IAAS,CAAC;AAAA,cACTA,IAAS,CAAC;AAAA,kBACNC,EAAOF,CAAgB,CAAC;AAAA,qBACrBC,IAAS,GAAG;AAAA;AAEjC,CAAC,GAEKE,IAAgBhB,EAAOS,CAAQ,EAA2B,CAAC,EAAE,OAAAH,GAAO,WAAAJ,QAAgB;AAClF,QAAA;AAAA,IACJ,QAAQ,EAAE,QAAAY,EAAO;AAAA,EACf,IAAAR;AAEG,SAAA;AAAA;AAAA,iBAEQQ,IAAS,IAAI;AAAA,MAExBZ,IACI;AAAA;AAAA;AAAA,YAIA,EACN;AAAA;AAEJ,CAAC,GAEKe,IAAiBjB,EAAO;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,80 +1,84 @@
1
- import { jsx as i } from "react/jsx-runtime";
2
- import { memo as z, useMemo as A, useCallback as I, useEffect as J } from "react";
3
- import K from "./milestone-create-components-map.js";
4
- import L from "./milestone-create-context.js";
5
- import { useFormDataPrefiller as N, useMilestoneFormTree as Q, useFormTreeTraversal as U } from "./milestone-create-hooks.js";
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { memo as I, useMemo as J, useEffect as K } from "react";
3
+ import L from "./milestone-create-components-map.js";
4
+ import N from "./milestone-create-context.js";
5
+ import { useFormDataPrefiller as O, useMilestoneFormTree as Q, useFormTreeTraversal as U } from "./milestone-create-hooks.js";
6
6
  import { Container as W, BodyContainer as X } from "./milestone-create-styled.js";
7
- const te = z(function({
8
- studentName: h,
7
+ const oe = I(function({
8
+ studentName: M,
9
9
  studentId: l,
10
10
  height: x,
11
- minHeight: C,
12
- formData: c,
11
+ minHeight: S,
12
+ formData: s,
13
13
  config: a,
14
- onChapterExitWarning: S,
14
+ onChapterExitWarning: h,
15
15
  onFormDataChange: e,
16
- onPreSubmit: $,
17
- onExit: b,
16
+ onPreSubmit: C,
17
+ onExit: $,
18
18
  board: F,
19
19
  schoolData: P,
20
20
  grade: T,
21
21
  flow: t,
22
- milestoneId: k,
22
+ milestoneId: b,
23
23
  currentCountryCode: B,
24
- isGoalCreation: d,
25
- courseStream: E,
26
- classRatio: V,
27
- enrollmentType: u,
28
- canDeleteGoal: j,
29
- isTeacherTrainingAccount: w,
30
- onDeleteGoal: r
24
+ isGoalCreation: c,
25
+ courseStream: D,
26
+ classRatio: E,
27
+ enrollmentType: d,
28
+ canDeleteGoal: V,
29
+ isTeacherTrainingAccount: j,
30
+ onDeleteGoal: k,
31
+ userType: w,
32
+ useAbsoluteFooter: H,
33
+ disablePublish: R
31
34
  }) {
32
- const { formDataState: s, setFormData: H } = N(c, {
35
+ const { formDataState: i, setFormData: q } = O(s, {
33
36
  schoolData: P,
34
37
  board: F,
35
38
  grade: T,
36
39
  config: a,
37
40
  flow: t,
38
41
  currentCountryCode: B
39
- }), O = Q({
42
+ }), y = Q({
40
43
  flow: t,
41
- formDataState: s,
42
- isGoalCreation: d
43
- }), o = e ? s : c, m = e ? "edit" : "view", p = m === "view", { currentStep: n, updateFormData: R, handleBack: f } = U({
44
+ formDataState: i,
45
+ isGoalCreation: c
46
+ }), o = e ? i : s, n = e ? "edit" : "view", u = n === "view", { currentStep: m, updateFormData: z, handleBack: p } = U({
44
47
  flow: t,
45
- updatedFormTree: O,
48
+ updatedFormTree: y,
46
49
  formData: o,
47
- formDataState: s,
48
- setFormData: H,
49
- handleExit: b
50
- }), { name: v } = n || {}, M = v ? K[v] : void 0, q = A(() => ({ handleBack: f, mode: m, flow: t }), [f, m, t]), y = I(() => {
51
- r == null || r();
52
- }, [r]);
53
- return J(() => {
50
+ formDataState: i,
51
+ setFormData: q,
52
+ handleExit: $
53
+ }), { name: f } = m || {}, v = f ? L[f] : void 0, A = J(() => ({ handleBack: p, mode: n, flow: t }), [p, n, t]);
54
+ return K(() => {
54
55
  e && e(o);
55
- }, [o, e]), /* @__PURE__ */ i(L.Provider, { value: q, children: /* @__PURE__ */ i(W, { $height: x, $minHeight: C, $viewMode: p, children: /* @__PURE__ */ i(X, { $viewMode: p, children: M && n && u ? /* @__PURE__ */ i(
56
- M,
56
+ }, [o, e]), /* @__PURE__ */ r(N.Provider, { value: A, children: /* @__PURE__ */ r(W, { $height: x, $minHeight: S, $viewMode: u, children: /* @__PURE__ */ r(X, { $viewMode: u, children: v && m && d ? /* @__PURE__ */ r(
57
+ v,
57
58
  {
58
- studentName: h,
59
- currentStep: n,
60
- isGoalCreation: d,
59
+ studentName: M,
60
+ currentStep: m,
61
+ isGoalCreation: c,
61
62
  config: a,
62
63
  formData: o,
63
- onFormDataChange: R,
64
- onChapterExitWarning: S,
64
+ onFormDataChange: z,
65
+ onChapterExitWarning: h,
65
66
  studentId: l,
66
- onPreSubmit: $,
67
- milestoneId: k,
68
- courseStream: E,
69
- classRatio: V || 0,
70
- enrollmentType: u,
71
- isTeacherTrainingAccount: w,
72
- canDeleteGoal: j,
73
- onDeleteGoal: y
67
+ onPreSubmit: C,
68
+ milestoneId: b,
69
+ courseStream: D,
70
+ classRatio: E || 0,
71
+ enrollmentType: d,
72
+ isTeacherTrainingAccount: j,
73
+ canDeleteGoal: V,
74
+ onDeleteGoal: k,
75
+ userType: w,
76
+ useAbsoluteFooter: H,
77
+ disablePublish: R
74
78
  }
75
79
  ) : void 0 }) }) });
76
80
  });
77
81
  export {
78
- te as default
82
+ oe as default
79
83
  };
80
84
  //# sourceMappingURL=milestone-create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-create.js","sources":["../../../../src/features/milestone/create/milestone-create.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, type FC } from 'react';\n\nimport ComponentsMap from './milestone-create-components-map';\nimport MilestoneCreateContext, { type MileStoneJourneyMode } from './milestone-create-context';\nimport {\n useFormDataPrefiller,\n useFormTreeTraversal,\n useMilestoneFormTree,\n} from './milestone-create-hooks';\nimport { BodyContainer, Container } from './milestone-create-styled';\nimport type { IMileStoneCreateProps, IMilestoneFormData } from './milestone-create-types';\n\nconst MilestoneCreate: FC<IMileStoneCreateProps> = memo(function MilestoneCreate({\n studentName,\n studentId,\n height,\n minHeight,\n formData: formDataProp,\n config,\n onChapterExitWarning,\n onFormDataChange,\n onPreSubmit: handlePreSubmit,\n onExit: handleExit,\n board,\n schoolData,\n grade,\n flow,\n milestoneId,\n currentCountryCode,\n isGoalCreation,\n courseStream,\n classRatio,\n enrollmentType,\n canDeleteGoal,\n isTeacherTrainingAccount,\n onDeleteGoal,\n}) {\n const { formDataState, setFormData } = useFormDataPrefiller(formDataProp, {\n schoolData,\n board,\n grade,\n config,\n flow,\n currentCountryCode,\n });\n\n const updatedFormTree = useMilestoneFormTree({\n flow,\n formDataState,\n isGoalCreation,\n });\n\n const formData = (onFormDataChange ? formDataState : formDataProp) as IMilestoneFormData; //TODO: make better\n\n const mode: MileStoneJourneyMode = onFormDataChange ? 'edit' : 'view';\n const isViewMode = mode === 'view';\n\n const { currentStep, updateFormData, handleBack } = useFormTreeTraversal({\n flow,\n updatedFormTree,\n formData,\n formDataState,\n setFormData,\n handleExit,\n });\n\n const { name } = currentStep || {};\n const StepComponent = name ? ComponentsMap[name] : undefined;\n\n const contextValue = useMemo(() => ({ handleBack, mode, flow }), [handleBack, mode, flow]);\n\n const handleOnDeleteGoal = useCallback(() => {\n onDeleteGoal?.();\n }, [onDeleteGoal]);\n\n useEffect(() => {\n if (onFormDataChange) {\n onFormDataChange(formData);\n }\n }, [formData, onFormDataChange]);\n\n return (\n <MilestoneCreateContext.Provider value={contextValue}>\n <Container $height={height} $minHeight={minHeight} $viewMode={isViewMode}>\n <BodyContainer $viewMode={isViewMode}>\n {StepComponent && currentStep && enrollmentType ? (\n <StepComponent\n studentName={studentName}\n currentStep={currentStep}\n isGoalCreation={isGoalCreation}\n config={config}\n formData={formData}\n onFormDataChange={updateFormData}\n onChapterExitWarning={onChapterExitWarning}\n studentId={studentId}\n onPreSubmit={handlePreSubmit}\n milestoneId={milestoneId}\n courseStream={courseStream}\n classRatio={classRatio || 0}\n enrollmentType={enrollmentType}\n isTeacherTrainingAccount={isTeacherTrainingAccount}\n canDeleteGoal={canDeleteGoal}\n onDeleteGoal={handleOnDeleteGoal}\n />\n ) : undefined}\n </BodyContainer>\n </Container>\n </MilestoneCreateContext.Provider>\n );\n});\n\nexport default MilestoneCreate;\n"],"names":["MilestoneCreate","memo","studentName","studentId","height","minHeight","formDataProp","config","onChapterExitWarning","onFormDataChange","handlePreSubmit","handleExit","board","schoolData","grade","flow","milestoneId","currentCountryCode","isGoalCreation","courseStream","classRatio","enrollmentType","canDeleteGoal","isTeacherTrainingAccount","onDeleteGoal","formDataState","setFormData","useFormDataPrefiller","updatedFormTree","useMilestoneFormTree","formData","mode","isViewMode","currentStep","updateFormData","handleBack","useFormTreeTraversal","name","StepComponent","ComponentsMap","contextValue","useMemo","handleOnDeleteGoal","useCallback","useEffect","jsx","MilestoneCreateContext","Container","BodyContainer"],"mappings":";;;;;;AAYM,MAAAA,KAA6CC,EAAK,SAAyB;AAAA,EAC/E,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAUC;AAAA,EACV,QAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAaC;AAAA,EACb,QAAQC;AAAA,EACR,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,cAAAC;AACF,GAAG;AACD,QAAM,EAAE,eAAAC,GAAe,aAAAC,MAAgBC,EAAqBrB,GAAc;AAAA,IACxE,YAAAO;AAAA,IACA,OAAAD;AAAA,IACA,OAAAE;AAAA,IACA,QAAAP;AAAA,IACA,MAAAQ;AAAA,IACA,oBAAAE;AAAA,EAAA,CACD,GAEKW,IAAkBC,EAAqB;AAAA,IAC3C,MAAAd;AAAA,IACA,eAAAU;AAAA,IACA,gBAAAP;AAAA,EAAA,CACD,GAEKY,IAAYrB,IAAmBgB,IAAgBnB,GAE/CyB,IAA6BtB,IAAmB,SAAS,QACzDuB,IAAaD,MAAS,QAEtB,EAAE,aAAAE,GAAa,gBAAAC,GAAgB,YAAAC,EAAA,IAAeC,EAAqB;AAAA,IACvE,MAAArB;AAAA,IACA,iBAAAa;AAAA,IACA,UAAAE;AAAA,IACA,eAAAL;AAAA,IACA,aAAAC;AAAA,IACA,YAAAf;AAAA,EAAA,CACD,GAEK,EAAE,MAAA0B,EAAA,IAASJ,KAAe,IAC1BK,IAAgBD,IAAOE,EAAcF,CAAI,IAAI,QAE7CG,IAAeC,EAAQ,OAAO,EAAE,YAAAN,GAAY,MAAAJ,GAAM,MAAAhB,EAAK,IAAI,CAACoB,GAAYJ,GAAMhB,CAAI,CAAC,GAEnF2B,IAAqBC,EAAY,MAAM;AAC5B,IAAAnB,KAAA,QAAAA;AAAA,EAAA,GACd,CAACA,CAAY,CAAC;AAEjB,SAAAoB,EAAU,MAAM;AACd,IAAInC,KACFA,EAAiBqB,CAAQ;AAAA,EAC3B,GACC,CAACA,GAAUrB,CAAgB,CAAC,GAG7B,gBAAAoC,EAACC,EAAuB,UAAvB,EAAgC,OAAON,GACtC,UAAA,gBAAAK,EAACE,KAAU,SAAS3C,GAAQ,YAAYC,GAAW,WAAW2B,GAC5D,UAAC,gBAAAa,EAAAG,GAAA,EAAc,WAAWhB,GACvB,UAAAM,KAAiBL,KAAeZ,IAC/B,gBAAAwB;AAAA,IAACP;AAAA,IAAA;AAAA,MACC,aAAApC;AAAA,MACA,aAAA+B;AAAA,MACA,gBAAAf;AAAA,MACA,QAAAX;AAAA,MACA,UAAAuB;AAAA,MACA,kBAAkBI;AAAA,MAClB,sBAAA1B;AAAA,MACA,WAAAL;AAAA,MACA,aAAaO;AAAA,MACb,aAAAM;AAAA,MACA,cAAAG;AAAA,MACA,YAAYC,KAAc;AAAA,MAC1B,gBAAAC;AAAA,MACA,0BAAAE;AAAA,MACA,eAAAD;AAAA,MACA,cAAcoB;AAAA,IAAA;AAAA,EAChB,IACE,OACN,CAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"milestone-create.js","sources":["../../../../src/features/milestone/create/milestone-create.tsx"],"sourcesContent":["import { memo, useEffect, useMemo, type FC } from 'react';\n\nimport ComponentsMap from './milestone-create-components-map';\nimport MilestoneCreateContext, { type MileStoneJourneyMode } from './milestone-create-context';\nimport {\n useFormDataPrefiller,\n useFormTreeTraversal,\n useMilestoneFormTree,\n} from './milestone-create-hooks';\nimport { BodyContainer, Container } from './milestone-create-styled';\nimport type { IMileStoneCreateProps, IMilestoneFormData } from './milestone-create-types';\n\nconst MilestoneCreate: FC<IMileStoneCreateProps> = memo(function MilestoneCreate({\n studentName,\n studentId,\n height,\n minHeight,\n formData: formDataProp,\n config,\n onChapterExitWarning,\n onFormDataChange,\n onPreSubmit: handlePreSubmit,\n onExit: handleExit,\n board,\n schoolData,\n grade,\n flow,\n milestoneId,\n currentCountryCode,\n isGoalCreation,\n courseStream,\n classRatio,\n enrollmentType,\n canDeleteGoal,\n isTeacherTrainingAccount,\n onDeleteGoal,\n userType,\n useAbsoluteFooter,\n disablePublish,\n}) {\n const { formDataState, setFormData } = useFormDataPrefiller(formDataProp, {\n schoolData,\n board,\n grade,\n config,\n flow,\n currentCountryCode,\n });\n\n const updatedFormTree = useMilestoneFormTree({\n flow,\n formDataState,\n isGoalCreation,\n });\n\n const formData = (onFormDataChange ? formDataState : formDataProp) as IMilestoneFormData; //TODO: make better\n\n const mode: MileStoneJourneyMode = onFormDataChange ? 'edit' : 'view';\n const isViewMode = mode === 'view';\n\n const { currentStep, updateFormData, handleBack } = useFormTreeTraversal({\n flow,\n updatedFormTree,\n formData,\n formDataState,\n setFormData,\n handleExit,\n });\n\n const { name } = currentStep || {};\n const StepComponent = name ? ComponentsMap[name] : undefined;\n\n const contextValue = useMemo(() => ({ handleBack, mode, flow }), [handleBack, mode, flow]);\n\n useEffect(() => {\n if (onFormDataChange) {\n onFormDataChange(formData);\n }\n }, [formData, onFormDataChange]);\n\n return (\n <MilestoneCreateContext.Provider value={contextValue}>\n <Container $height={height} $minHeight={minHeight} $viewMode={isViewMode}>\n <BodyContainer $viewMode={isViewMode}>\n {StepComponent && currentStep && enrollmentType ? (\n <StepComponent\n studentName={studentName}\n currentStep={currentStep}\n isGoalCreation={isGoalCreation}\n config={config}\n formData={formData}\n onFormDataChange={updateFormData}\n onChapterExitWarning={onChapterExitWarning}\n studentId={studentId}\n onPreSubmit={handlePreSubmit}\n milestoneId={milestoneId}\n courseStream={courseStream}\n classRatio={classRatio || 0}\n enrollmentType={enrollmentType}\n isTeacherTrainingAccount={isTeacherTrainingAccount}\n canDeleteGoal={canDeleteGoal}\n onDeleteGoal={onDeleteGoal}\n userType={userType}\n useAbsoluteFooter={useAbsoluteFooter}\n disablePublish={disablePublish}\n />\n ) : undefined}\n </BodyContainer>\n </Container>\n </MilestoneCreateContext.Provider>\n );\n});\n\nexport default MilestoneCreate;\n"],"names":["MilestoneCreate","memo","studentName","studentId","height","minHeight","formDataProp","config","onChapterExitWarning","onFormDataChange","handlePreSubmit","handleExit","board","schoolData","grade","flow","milestoneId","currentCountryCode","isGoalCreation","courseStream","classRatio","enrollmentType","canDeleteGoal","isTeacherTrainingAccount","onDeleteGoal","userType","useAbsoluteFooter","disablePublish","formDataState","setFormData","useFormDataPrefiller","updatedFormTree","useMilestoneFormTree","formData","mode","isViewMode","currentStep","updateFormData","handleBack","useFormTreeTraversal","name","StepComponent","ComponentsMap","contextValue","useMemo","useEffect","jsx","MilestoneCreateContext","Container","BodyContainer"],"mappings":";;;;;;AAYM,MAAAA,KAA6CC,EAAK,SAAyB;AAAA,EAC/E,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAUC;AAAA,EACV,QAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAaC;AAAA,EACb,QAAQC;AAAA,EACR,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,gBAAAC;AACF,GAAG;AACD,QAAM,EAAE,eAAAC,GAAe,aAAAC,MAAgBC,EAAqBxB,GAAc;AAAA,IACxE,YAAAO;AAAA,IACA,OAAAD;AAAA,IACA,OAAAE;AAAA,IACA,QAAAP;AAAA,IACA,MAAAQ;AAAA,IACA,oBAAAE;AAAA,EAAA,CACD,GAEKc,IAAkBC,EAAqB;AAAA,IAC3C,MAAAjB;AAAA,IACA,eAAAa;AAAA,IACA,gBAAAV;AAAA,EAAA,CACD,GAEKe,IAAYxB,IAAmBmB,IAAgBtB,GAE/C4B,IAA6BzB,IAAmB,SAAS,QACzD0B,IAAaD,MAAS,QAEtB,EAAE,aAAAE,GAAa,gBAAAC,GAAgB,YAAAC,EAAA,IAAeC,EAAqB;AAAA,IACvE,MAAAxB;AAAA,IACA,iBAAAgB;AAAA,IACA,UAAAE;AAAA,IACA,eAAAL;AAAA,IACA,aAAAC;AAAA,IACA,YAAAlB;AAAA,EAAA,CACD,GAEK,EAAE,MAAA6B,EAAA,IAASJ,KAAe,IAC1BK,IAAgBD,IAAOE,EAAcF,CAAI,IAAI,QAE7CG,IAAeC,EAAQ,OAAO,EAAE,YAAAN,GAAY,MAAAJ,GAAM,MAAAnB,EAAK,IAAI,CAACuB,GAAYJ,GAAMnB,CAAI,CAAC;AAEzF,SAAA8B,EAAU,MAAM;AACd,IAAIpC,KACFA,EAAiBwB,CAAQ;AAAA,EAC3B,GACC,CAACA,GAAUxB,CAAgB,CAAC,GAG7B,gBAAAqC,EAACC,EAAuB,UAAvB,EAAgC,OAAOJ,GACtC,UAAA,gBAAAG,EAACE,KAAU,SAAS5C,GAAQ,YAAYC,GAAW,WAAW8B,GAC5D,UAAC,gBAAAW,EAAAG,GAAA,EAAc,WAAWd,GACvB,UAAAM,KAAiBL,KAAef,IAC/B,gBAAAyB;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,aAAAvC;AAAA,MACA,aAAAkC;AAAA,MACA,gBAAAlB;AAAA,MACA,QAAAX;AAAA,MACA,UAAA0B;AAAA,MACA,kBAAkBI;AAAA,MAClB,sBAAA7B;AAAA,MACA,WAAAL;AAAA,MACA,aAAaO;AAAA,MACb,aAAAM;AAAA,MACA,cAAAG;AAAA,MACA,YAAYC,KAAc;AAAA,MAC1B,gBAAAC;AAAA,MACA,0BAAAE;AAAA,MACA,eAAAD;AAAA,MACA,cAAAE;AAAA,MACA,UAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,gBAAAC;AAAA,IAAA;AAAA,EACF,IACE,OACN,CAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAC;"}
@@ -0,0 +1,25 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { memo as f, useEffect as i } from "react";
3
+ import { useMilestoneEditSync as d } from "./hooks/use-milestone-edit-sync.js";
4
+ import l from "./goal-drafts/goal-draft-edit-container.js";
5
+ const h = f(function(a) {
6
+ const { channelId: e, userType: t, ...n } = a, o = t === "TEACHER", { syncedFormData: s, setSyncFormData: c, closeChannel: r } = d({
7
+ channelId: e,
8
+ isTeacher: o
9
+ });
10
+ return i(() => () => {
11
+ r();
12
+ }, [r]), /* @__PURE__ */ m(
13
+ l,
14
+ {
15
+ ...n,
16
+ userType: t,
17
+ formData: s,
18
+ onFormDataChange: o ? c : void 0
19
+ }
20
+ );
21
+ });
22
+ export {
23
+ h as default
24
+ };
25
+ //# sourceMappingURL=goal-draft-edit-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-draft-edit-sync.js","sources":["../../../../src/features/milestone/edit/goal-draft-edit-sync.tsx"],"sourcesContent":["import { memo, useEffect, type FC } from 'react';\n\nimport type { IMilestoneFormData } from '../create/milestone-create-types';\nimport { useMilestoneEditSync } from './hooks/use-milestone-edit-sync';\nimport GoalDraftEdit from './goal-drafts/goal-draft-edit-container';\nimport type { IGoalDraftEditSync } from './milestone-edit-types';\n\nconst GoalDraftEditSync: FC<IGoalDraftEditSync> = memo(function GoalDraftEditSync(props) {\n const { channelId, userType, ...goalDraftEditProps } = props;\n\n const isTeacher = userType === 'TEACHER';\n\n const { syncedFormData, setSyncFormData, closeChannel } = useMilestoneEditSync({\n channelId,\n isTeacher,\n });\n\n useEffect(() => {\n return () => {\n closeChannel();\n };\n }, [closeChannel]);\n\n return (\n <GoalDraftEdit\n {...goalDraftEditProps}\n userType={userType}\n formData={syncedFormData as IMilestoneFormData}\n onFormDataChange={isTeacher ? setSyncFormData : undefined}\n />\n );\n});\n\nexport default GoalDraftEditSync;\n"],"names":["GoalDraftEditSync","memo","props","channelId","userType","goalDraftEditProps","isTeacher","syncedFormData","setSyncFormData","closeChannel","useMilestoneEditSync","useEffect","jsx","GoalDraftEdit"],"mappings":";;;;AAOA,MAAMA,IAA4CC,EAAK,SAA2BC,GAAO;AACvF,QAAM,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,MAAuBH,GAEjDI,IAAYF,MAAa,WAEzB,EAAE,gBAAAG,GAAgB,iBAAAC,GAAiB,cAAAC,EAAA,IAAiBC,EAAqB;AAAA,IAC7E,WAAAP;AAAA,IACA,WAAAG;AAAA,EAAA,CACD;AAED,SAAAK,EAAU,MACD,MAAM;AACE,IAAAF;EAAA,GAEd,CAACA,CAAY,CAAC,GAGf,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,UAAAD;AAAA,MACA,UAAUG;AAAA,MACV,kBAAkBD,IAAYE,IAAkB;AAAA,IAAA;AAAA,EAAA;AAGtD,CAAC;"}