@cuemath/leap 3.3.31 → 3.3.32-j2

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 (76) hide show
  1. package/dist/features/auth/pla-signup/pla-analytics-events.js +7 -1
  2. package/dist/features/auth/pla-signup/pla-analytics-events.js.map +1 -1
  3. package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js.map +1 -1
  4. package/dist/features/auth/signup/custom-input-field/custom-input-field.js +8 -8
  5. package/dist/features/auth/signup/custom-input-field/custom-input-field.js.map +1 -1
  6. package/dist/features/milestone/create/milestone-create-helpers.js +13 -7
  7. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  8. package/dist/features/student-username/add/add-student-username-constants.js +6 -0
  9. package/dist/features/student-username/add/add-student-username-constants.js.map +1 -0
  10. package/dist/features/student-username/add/add-student-username-helpers.js +6 -0
  11. package/dist/features/student-username/add/add-student-username-helpers.js.map +1 -0
  12. package/dist/features/student-username/add/add-student-username-styled.js +10 -0
  13. package/dist/features/student-username/add/add-student-username-styled.js.map +1 -0
  14. package/dist/features/student-username/add/add-student-username.js +78 -0
  15. package/dist/features/student-username/add/add-student-username.js.map +1 -0
  16. package/dist/features/student-username/add/api/update-username.js +9 -0
  17. package/dist/features/student-username/add/api/update-username.js.map +1 -0
  18. package/dist/features/student-username/add/api/username-availability.js +10 -0
  19. package/dist/features/student-username/add/api/username-availability.js.map +1 -0
  20. package/dist/features/student-username/add/hooks/use-check-username-availability.js +41 -0
  21. package/dist/features/student-username/add/hooks/use-check-username-availability.js.map +1 -0
  22. package/dist/features/trial-session/api/teacher-availability.js +9 -0
  23. package/dist/features/trial-session/api/teacher-availability.js.map +1 -0
  24. package/dist/features/trial-session/comps/class-preference/class-preference.js +61 -49
  25. package/dist/features/trial-session/comps/class-preference/class-preference.js.map +1 -1
  26. package/dist/features/trial-session/comps/class-preference/helpers.js +28 -0
  27. package/dist/features/trial-session/comps/class-preference/helpers.js.map +1 -0
  28. package/dist/features/trial-session/comps/navigation-bar/index.js +25 -25
  29. package/dist/features/trial-session/comps/navigation-bar/index.js.map +1 -1
  30. package/dist/features/trial-session/comps/school-goals/school-goals.js +55 -53
  31. package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
  32. package/dist/features/trial-session/comps/session-report/session-report.js +15 -15
  33. package/dist/features/trial-session/comps/session-report/session-report.js.map +1 -1
  34. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js +44 -43
  35. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js.map +1 -1
  36. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js +5 -0
  37. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js.map +1 -1
  38. package/dist/features/trial-session/comps/student-feedback/student-feedback.js +96 -51
  39. package/dist/features/trial-session/comps/student-feedback/student-feedback.js.map +1 -1
  40. package/dist/features/trial-session/comps/student-profile/student-profile.js +70 -63
  41. package/dist/features/trial-session/comps/student-profile/student-profile.js.map +1 -1
  42. package/dist/features/trial-session/comps/test-prep/test-prep.js +40 -39
  43. package/dist/features/trial-session/comps/test-prep/test-prep.js.map +1 -1
  44. package/dist/features/trial-session/helper.js +69 -53
  45. package/dist/features/trial-session/helper.js.map +1 -1
  46. package/dist/features/trial-session/hooks/use-slide-config-update.js +49 -0
  47. package/dist/features/trial-session/hooks/use-slide-config-update.js.map +1 -0
  48. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +150 -130
  49. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  50. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  51. package/dist/features/trial-session/trial-session-view.js +103 -112
  52. package/dist/features/trial-session/trial-session-view.js.map +1 -1
  53. package/dist/features/ui/accordion/accordion-items/accordion-items.js +13 -13
  54. package/dist/features/ui/accordion/accordion-items/accordion-items.js.map +1 -1
  55. package/dist/features/utils/utils.js +1 -1
  56. package/dist/features/utils/utils.js.map +1 -1
  57. package/dist/index.d.ts +20 -4
  58. package/dist/index.js +32 -30
  59. package/dist/index.js.map +1 -1
  60. package/dist/node_modules/decode-uri-component/index.js.map +1 -0
  61. package/dist/node_modules/query-string/base.js +1 -1
  62. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  63. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  64. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  65. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  66. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  67. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  68. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  69. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  70. package/package.json +3 -2
  71. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
  72. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  73. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  74. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  75. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
  76. /package/dist/node_modules/{query-string/node_modules/decode-uri-component → decode-uri-component}/index.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"test-prep.js","sources":["../../../../../src/features/trial-session/comps/test-prep/test-prep.tsx"],"sourcesContent":["import type { ISelectOption } from '../../../ui/inputs/base-select-input/base-select-input-types';\n\nimport { memo, useCallback, useMemo } from 'react';\n\nimport { GIF } from '../../../../assets/gif/gif';\nimport { GOAL_CATEGORY } from '../../../milestone/constants';\nimport { getGoalsFromConfig } from '../../../milestone/create/milestone-create-helpers';\nimport Image from '../../../ui/image/image';\nimport SearchableSelectInput from '../../../ui/inputs/searchable-select-input/searchable-select-input';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { epochTimestampAfterOneYear } from '../../../utils/utils';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { updateGoalInFormData } from '../../helper';\nimport SlideHeader from '../slide-header';\nimport * as Styled from './test-prep-styled';\n\nconst TestPrep = memo(() => {\n const { milestoneConfig, formData, updateSlideConfig, trialHomeData } = useTrialSessionContext();\n\n const { demo_info: demoInfo } = trialHomeData;\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n const { grade, goals } = formData || {};\n\n const goalsList = useMemo(\n () =>\n getGoalsFromConfig(milestoneConfig, {\n countryCode,\n grade: grade ?? '',\n goalCategory: GOAL_CATEGORY.TEST_PREP,\n courseStream: stream,\n enrollmentType: 'ONLINE',\n }),\n [countryCode, grade, milestoneConfig, stream],\n );\n\n const { goal_code: selectedGoal } =\n goals?.find(goal => goal.goal_category === GOAL_CATEGORY.TEST_PREP) ?? {};\n\n const handleGoalChange = useCallback(\n (value: string, option: ISelectOption<string | number>) => {\n if (!value) {\n const goalsWithoutTestPrep = goals?.filter(\n goal => goal.goal_category !== GOAL_CATEGORY.TEST_PREP,\n );\n\n updateSlideConfig({ goals: goalsWithoutTestPrep });\n\n return;\n }\n\n const { label } = option;\n\n const updatedGoals = updateGoalInFormData(goals, GOAL_CATEGORY.TEST_PREP, {\n goal_code: value,\n milestone_name: label,\n milestone_date_ts: epochTimestampAfterOneYear(),\n });\n\n updateSlideConfig({ goals: updatedGoals });\n },\n [goals, updateSlideConfig],\n );\n\n return (\n <Styled.Container>\n <Separator height={60} />\n <SlideHeader />\n <Styled.ContentWrapper $flexDirection=\"row\" $justifyContent=\"center\">\n <Styled.ImageWrapper>\n <Image withLoader height={402} width={302} src={GIF.TEST_PREP} className=\"image\" />\n </Styled.ImageWrapper>\n <Styled.InputContainer\n $flexGap={40}\n $justifyContent=\"center\"\n $background=\"BLUE_1\"\n $borderColor=\"BLACK_1\"\n $gapX={2.5}\n $gutterX={2.5}\n >\n <SearchableSelectInput\n renderAs=\"primary\"\n label=\"Select a Test\"\n value={selectedGoal}\n options={goalsList}\n shape=\"borderLess\"\n theme=\"dark\"\n onChange={handleGoalChange}\n isTransparent\n />\n </Styled.InputContainer>\n </Styled.ContentWrapper>\n <Separator heightX={1} />\n <Text $renderAs=\"ub3\" $align=\"center\">\n This is optional and can be skipped.\n </Text>\n </Styled.Container>\n );\n});\n\nexport default TestPrep;\n"],"names":["TestPrep","memo","milestoneConfig","formData","updateSlideConfig","trialHomeData","useTrialSessionContext","demoInfo","stream","regionData","countryCode","grade","goals","goalsList","useMemo","getGoalsFromConfig","GOAL_CATEGORY","selectedGoal","goal","handleGoalChange","useCallback","value","option","goalsWithoutTestPrep","label","updatedGoals","updateGoalInFormData","epochTimestampAfterOneYear","jsxs","Styled.Container","jsx","Separator","SlideHeader","Styled.ContentWrapper","Styled.ImageWrapper","Image","GIF","Styled.InputContainer","SearchableSelectInput","Text"],"mappings":";;;;;;;;;;;;;;AAiBM,MAAAA,IAAWC,EAAK,MAAM;AAC1B,QAAM,EAAE,iBAAAC,GAAiB,UAAAC,GAAU,mBAAAC,GAAmB,eAAAC,EAAA,IAAkBC,KAElE,EAAE,WAAWC,EAAa,IAAAF,GAC1B,EAAE,QAAAG,GAAQ,aAAaC,EAAW,IAAIF,KAAY,CAAA,GAClD,EAAE,qBAAqBG,IAAc,KAAK,IAAID,KAAc,CAAA,GAC5D,EAAE,OAAAE,GAAO,OAAAC,MAAUT,KAAY,CAAA,GAE/BU,IAAYC;AAAA,IAChB,MACEC,EAAmBb,GAAiB;AAAA,MAClC,aAAAQ;AAAA,MACA,OAAOC,KAAS;AAAA,MAChB,cAAcK,EAAc;AAAA,MAC5B,cAAcR;AAAA,MACd,gBAAgB;AAAA,IAAA,CACjB;AAAA,IACH,CAACE,GAAaC,GAAOT,GAAiBM,CAAM;AAAA,EAAA,GAGxC,EAAE,WAAWS,OACjBL,KAAA,gBAAAA,EAAO,KAAK,CAAQM,MAAAA,EAAK,kBAAkBF,EAAc,eAAc,CAAA,GAEnEG,IAAmBC;AAAA,IACvB,CAACC,GAAeC,MAA2C;AACzD,UAAI,CAACD,GAAO;AACV,cAAME,IAAuBX,KAAA,gBAAAA,EAAO;AAAA,UAClC,CAAAM,MAAQA,EAAK,kBAAkBF,EAAc;AAAA;AAG7B,QAAAZ,EAAA,EAAE,OAAOmB,EAAA,CAAsB;AAEjD;AAAA,MACF;AAEM,YAAA,EAAE,OAAAC,EAAU,IAAAF,GAEZG,IAAeC,EAAqBd,GAAOI,EAAc,WAAW;AAAA,QACxE,WAAWK;AAAA,QACX,gBAAgBG;AAAA,QAChB,mBAAmBG,EAA2B;AAAA,MAAA,CAC/C;AAEiB,MAAAvB,EAAA,EAAE,OAAOqB,EAAA,CAAc;AAAA,IAC3C;AAAA,IACA,CAACb,GAAOR,CAAiB;AAAA,EAAA;AAIzB,SAAA,gBAAAwB,EAACC,GAAA,EACC,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAU,QAAQ,GAAI,CAAA;AAAA,sBACtBC,GAAY,EAAA;AAAA,sBACZC,GAAA,EAAsB,gBAAe,OAAM,iBAAgB,UAC1D,UAAA;AAAA,MAAA,gBAAAH,EAACI,GAAA,EACC,UAAC,gBAAAJ,EAAAK,GAAA,EAAM,YAAU,IAAC,QAAQ,KAAK,OAAO,KAAK,KAAKC,EAAI,WAAW,WAAU,QAAQ,CAAA,GACnF;AAAA,MACA,gBAAAN;AAAA,QAACO;AAAAA,QAAA;AAAA,UACC,UAAU;AAAA,UACV,iBAAgB;AAAA,UAChB,aAAY;AAAA,UACZ,cAAa;AAAA,UACb,OAAO;AAAA,UACP,UAAU;AAAA,UAEV,UAAA,gBAAAP;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,OAAM;AAAA,cACN,OAAOrB;AAAA,cACP,SAASJ;AAAA,cACT,OAAM;AAAA,cACN,OAAM;AAAA,cACN,UAAUM;AAAA,cACV,eAAa;AAAA,YAAA;AAAA,UACf;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GACF;AAAA,IACA,gBAAAW,EAACC,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,sBACtBQ,GAAK,EAAA,WAAU,OAAM,QAAO,UAAS,UAEtC,wCAAA;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"test-prep.js","sources":["../../../../../src/features/trial-session/comps/test-prep/test-prep.tsx"],"sourcesContent":["import type { ISelectOption } from '../../../ui/inputs/base-select-input/base-select-input-types';\n\nimport { memo, useCallback, useMemo } from 'react';\n\nimport { GIF } from '../../../../assets/gif/gif';\nimport { GOAL_CATEGORY } from '../../../milestone/constants';\nimport { getGoalsFromConfig } from '../../../milestone/create/milestone-create-helpers';\nimport Image from '../../../ui/image/image';\nimport SearchableSelectInput from '../../../ui/inputs/searchable-select-input/searchable-select-input';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { epochTimestampAfterOneYear } from '../../../utils/utils';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport { updateGoalInFormData } from '../../helper';\nimport SlideHeader from '../slide-header';\nimport * as Styled from './test-prep-styled';\n\nconst TestPrep = memo(() => {\n const { milestoneConfig, formData, updateSlideConfig, trialHomeData } = useTrialSessionContext();\n\n const { demo_info: demoInfo, intel_student: intelStudent } = trialHomeData;\n const { source } = intelStudent || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n const { grade, goals } = formData || {};\n const isPLASource = source === 'PLA';\n\n const goalsList = useMemo(\n () =>\n getGoalsFromConfig(milestoneConfig, {\n countryCode,\n grade: grade ?? '',\n goalCategory: GOAL_CATEGORY.TEST_PREP,\n courseStream: stream,\n enrollmentType: 'ONLINE',\n }),\n [countryCode, grade, milestoneConfig, stream],\n );\n\n const { goal_code: selectedGoal } =\n goals?.find(goal => goal.goal_category === GOAL_CATEGORY.TEST_PREP) ?? {};\n\n const handleGoalChange = useCallback(\n (value: string, option: ISelectOption<string | number>) => {\n if (!value) {\n const goalsWithoutTestPrep = goals?.filter(\n goal => goal.goal_category !== GOAL_CATEGORY.TEST_PREP,\n );\n\n updateSlideConfig({ goals: goalsWithoutTestPrep });\n\n return;\n }\n\n const { label } = option;\n\n const updatedGoals = updateGoalInFormData(goals, GOAL_CATEGORY.TEST_PREP, {\n goal_code: value,\n milestone_name: label,\n milestone_date_ts: epochTimestampAfterOneYear(),\n publish: isPLASource,\n });\n\n updateSlideConfig({ goals: updatedGoals });\n },\n [goals, isPLASource, updateSlideConfig],\n );\n\n return (\n <Styled.Container>\n <Separator height={60} />\n <SlideHeader />\n <Styled.ContentWrapper $flexDirection=\"row\" $justifyContent=\"center\">\n <Styled.ImageWrapper>\n <Image withLoader height={402} width={302} src={GIF.TEST_PREP} className=\"image\" />\n </Styled.ImageWrapper>\n <Styled.InputContainer\n $flexGap={40}\n $justifyContent=\"center\"\n $background=\"BLUE_1\"\n $borderColor=\"BLACK_1\"\n $gapX={2.5}\n $gutterX={2.5}\n >\n <SearchableSelectInput\n renderAs=\"primary\"\n label=\"Select a Test\"\n value={selectedGoal}\n options={goalsList}\n shape=\"borderLess\"\n theme=\"dark\"\n onChange={handleGoalChange}\n isTransparent\n />\n </Styled.InputContainer>\n </Styled.ContentWrapper>\n <Separator heightX={1} />\n <Text $renderAs=\"ub3\" $align=\"center\">\n This is optional and can be skipped.\n </Text>\n </Styled.Container>\n );\n});\n\nexport default TestPrep;\n"],"names":["TestPrep","memo","milestoneConfig","formData","updateSlideConfig","trialHomeData","useTrialSessionContext","demoInfo","intelStudent","source","stream","regionData","countryCode","grade","goals","isPLASource","goalsList","useMemo","getGoalsFromConfig","GOAL_CATEGORY","selectedGoal","goal","handleGoalChange","useCallback","value","option","goalsWithoutTestPrep","label","updatedGoals","updateGoalInFormData","epochTimestampAfterOneYear","jsxs","Styled.Container","jsx","Separator","SlideHeader","Styled.ContentWrapper","Styled.ImageWrapper","Image","GIF","Styled.InputContainer","SearchableSelectInput","Text"],"mappings":";;;;;;;;;;;;;;AAiBM,MAAAA,KAAWC,EAAK,MAAM;AAC1B,QAAM,EAAE,iBAAAC,GAAiB,UAAAC,GAAU,mBAAAC,GAAmB,eAAAC,EAAA,IAAkBC,KAElE,EAAE,WAAWC,GAAU,eAAeC,MAAiBH,GACvD,EAAE,QAAAI,EAAA,IAAWD,KAAgB,IAC7B,EAAE,QAAAE,GAAQ,aAAaC,EAAW,IAAIJ,KAAY,CAAA,GAClD,EAAE,qBAAqBK,IAAc,KAAK,IAAID,KAAc,CAAA,GAC5D,EAAE,OAAAE,GAAO,OAAAC,MAAUX,KAAY,CAAA,GAC/BY,IAAcN,MAAW,OAEzBO,IAAYC;AAAA,IAChB,MACEC,EAAmBhB,GAAiB;AAAA,MAClC,aAAAU;AAAA,MACA,OAAOC,KAAS;AAAA,MAChB,cAAcM,EAAc;AAAA,MAC5B,cAAcT;AAAA,MACd,gBAAgB;AAAA,IAAA,CACjB;AAAA,IACH,CAACE,GAAaC,GAAOX,GAAiBQ,CAAM;AAAA,EAAA,GAGxC,EAAE,WAAWU,OACjBN,KAAA,gBAAAA,EAAO,KAAK,CAAQO,MAAAA,EAAK,kBAAkBF,EAAc,eAAc,CAAA,GAEnEG,IAAmBC;AAAA,IACvB,CAACC,GAAeC,MAA2C;AACzD,UAAI,CAACD,GAAO;AACV,cAAME,IAAuBZ,KAAA,gBAAAA,EAAO;AAAA,UAClC,CAAAO,MAAQA,EAAK,kBAAkBF,EAAc;AAAA;AAG7B,QAAAf,EAAA,EAAE,OAAOsB,EAAA,CAAsB;AAEjD;AAAA,MACF;AAEM,YAAA,EAAE,OAAAC,EAAU,IAAAF,GAEZG,IAAeC,EAAqBf,GAAOK,EAAc,WAAW;AAAA,QACxE,WAAWK;AAAA,QACX,gBAAgBG;AAAA,QAChB,mBAAmBG,EAA2B;AAAA,QAC9C,SAASf;AAAA,MAAA,CACV;AAEiB,MAAAX,EAAA,EAAE,OAAOwB,EAAA,CAAc;AAAA,IAC3C;AAAA,IACA,CAACd,GAAOC,GAAaX,CAAiB;AAAA,EAAA;AAItC,SAAA,gBAAA2B,EAACC,GAAA,EACC,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAU,QAAQ,GAAI,CAAA;AAAA,sBACtBC,GAAY,EAAA;AAAA,sBACZC,GAAA,EAAsB,gBAAe,OAAM,iBAAgB,UAC1D,UAAA;AAAA,MAAA,gBAAAH,EAACI,GAAA,EACC,UAAC,gBAAAJ,EAAAK,GAAA,EAAM,YAAU,IAAC,QAAQ,KAAK,OAAO,KAAK,KAAKC,EAAI,WAAW,WAAU,QAAQ,CAAA,GACnF;AAAA,MACA,gBAAAN;AAAA,QAACO;AAAAA,QAAA;AAAA,UACC,UAAU;AAAA,UACV,iBAAgB;AAAA,UAChB,aAAY;AAAA,UACZ,cAAa;AAAA,UACb,OAAO;AAAA,UACP,UAAU;AAAA,UAEV,UAAA,gBAAAP;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,OAAM;AAAA,cACN,OAAOrB;AAAA,cACP,SAASJ;AAAA,cACT,OAAM;AAAA,cACN,OAAM;AAAA,cACN,UAAUM;AAAA,cACV,eAAa;AAAA,YAAA;AAAA,UACf;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GACF;AAAA,IACA,gBAAAW,EAACC,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,sBACtBQ,GAAK,EAAA,WAAU,OAAM,QAAO,UAAS,UAEtC,wCAAA;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;"}
@@ -1,80 +1,96 @@
1
- import { DAYS as N } from "../../constants/date-time.js";
2
- import { getOffsetBetweenTimezone as y, convertEpochToDateTime as O, getTimeUnits as x, convertToMilliseconds as D } from "../../helpers/date-time.js";
1
+ import { DAYS as y } from "../../constants/date-time.js";
2
+ import { getOffsetBetweenTimezone as N, convertEpochToDateTime as D, getTimeUnits as O, convertToMilliseconds as R } from "../../helpers/date-time.js";
3
3
  import { GOAL_CATEGORY as h } from "../milestone/constants.js";
4
- import { getGoalsFromConfig as R } from "../milestone/create/milestone-create-helpers.js";
5
- import { TrialPageId as a, TEACHER_TIMEZONE as L } from "./trial-session-constants.js";
6
- const U = (c, t, r) => {
7
- const e = c ? [...c] : [], s = e == null ? void 0 : e.findIndex((d) => d.goal_category === t);
8
- if (s === -1) {
9
- const d = {
10
- ...r,
11
- goal_category: t,
12
- publish: !1
4
+ import { getGoalsFromConfig as x } from "../milestone/create/milestone-create-helpers.js";
5
+ import { TrialPageId as c, TEACHER_TIMEZONE as C } from "./trial-session-constants.js";
6
+ const $ = (r, t, n) => {
7
+ const e = r ? [...r] : [], o = e == null ? void 0 : e.findIndex((s) => s.goal_category === t);
8
+ if (o === -1) {
9
+ const s = {
10
+ ...n,
11
+ goal_category: t
13
12
  };
14
- e.push(d);
13
+ e.push(s);
15
14
  } else
16
- e[s] = {
17
- ...e[s],
18
- ...r
15
+ e[o] = {
16
+ ...e[o],
17
+ ...n
19
18
  };
20
19
  return e;
21
- }, $ = (c, t) => {
20
+ }, v = (r, t) => {
22
21
  if (!t) return [];
23
- const r = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = y(L, t), s = r + e, { day: d = "" } = O(s, t), m = N.indexOf(d);
24
- return c.length > 0 ? c.filter((f) => f.selectedDay && f.selectedTime).map((f) => {
25
- const { selectedDay: P, selectedTime: u } = f, { hours: i, minutes: o, period: g } = x(u), T = (N.indexOf(P) - m + 7) % 7;
22
+ const n = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = N(C, t), o = n + e, { day: s = "" } = D(o, t), u = y.indexOf(s);
23
+ return r.length > 0 ? r.filter((i) => i.selectedDay && i.selectedTime).map((i) => {
24
+ const { selectedDay: S, selectedTime: T } = i, { hours: g, minutes: d, period: m } = O(T), f = (y.indexOf(S) - u + 7) % 7;
26
25
  return {
27
- id: r + e + D({ days: T, hours: i, minutes: o }),
28
- value: `${P}, ${u} - ${i + 1}:${o < 10 ? "0" : ""}${o} ${g}`
26
+ id: n + e + R({ days: f, hours: g, minutes: d }),
27
+ value: `${S}, ${T} - ${g + 1}:${d < 10 ? "0" : ""}${d} ${m}`
29
28
  // Formatted the value string as required
30
29
  };
31
30
  }) : [];
32
- }, b = ({
33
- milestoneConfigData: c,
31
+ }, U = (r) => r.filter((t) => typeof t.id == "number" && !isNaN(t.id)).map((t) => {
32
+ const n = new Date(t.id), e = y[n.getDay()], o = e ? e.toLowerCase() : "unknown", s = n.getHours(), u = n.getMinutes(), i = `${s.toString().padStart(2, "0")}:${u.toString().padStart(2, "0")}:00`;
33
+ return { weekday: o, start_time: i };
34
+ }), b = ({
35
+ milestoneConfigData: r,
34
36
  trialHomeData: t,
35
- grade: r
37
+ grade: n
36
38
  }) => {
37
39
  var I;
38
- const { student: e, demo_info: s } = t, { grade: d } = e || {}, { stream: m, region_data: f } = s || {}, { opportunity_country: P = "US" } = f || {}, u = (l) => R(c, {
39
- countryCode: P,
40
- grade: r || d || "",
40
+ const { student: e, demo_info: o } = t, { grade: s } = e || {}, { stream: u, region_data: i } = o || {}, { opportunity_country: S = "US" } = i || {}, T = (l) => x(r, {
41
+ countryCode: S,
42
+ grade: n || s || "",
41
43
  goalCategory: l,
42
- courseStream: m,
44
+ courseStream: u,
43
45
  enrollmentType: "ONLINE"
44
- }), i = u(h.TEST_PREP), o = u(h.ENRICHMENT);
45
- if ((i == null ? void 0 : i.length) > 0 && (o == null ? void 0 : o.length) > 0)
46
+ }), g = T(h.TEST_PREP), d = T(h.ENRICHMENT);
47
+ if ((g == null ? void 0 : g.length) > 0 && (d == null ? void 0 : d.length) > 0)
46
48
  return t;
47
- const g = { ...t }, p = Object.fromEntries(g.pages.map((l) => [l.id, l])), T = (() => {
48
- var l, _, n, E;
49
- return ((_ = (l = p[a.SCHOOL_GOALS]) == null ? void 0 : l.nextPage) == null ? void 0 : _.pageId) === a.TEST_PREP && i.length === 0 ? a.SCHOOL_GOALS : i.length > 0 && ((E = (n = p[a.TEST_PREP]) == null ? void 0 : n.nextPage) == null ? void 0 : E.pageId) === a.STUDENT_ENRICHMENT && o.length === 0 ? a.TEST_PREP : null;
50
- })(), S = T ? (I = p[(o == null ? void 0 : o.length) === 0 ? a.STUDENT_ENRICHMENT : a.TEST_PREP]) == null ? void 0 : I.nextPage : null;
51
- if (S && T) {
52
- const l = (n) => i.length === 0 && n === a.TEST_PREP || o.length === 0 && n === a.STUDENT_ENRICHMENT, _ = g.pages.filter((n) => !l(n.id));
53
- g.pages = _.map((n) => {
49
+ const m = { ...t }, p = Object.fromEntries(m.pages.map((l) => [l.id, l])), f = (() => {
50
+ var l, _, a, E;
51
+ return ((_ = (l = p[c.SCHOOL_GOALS]) == null ? void 0 : l.nextPage) == null ? void 0 : _.pageId) === c.TEST_PREP && g.length === 0 ? c.SCHOOL_GOALS : g.length > 0 && ((E = (a = p[c.TEST_PREP]) == null ? void 0 : a.nextPage) == null ? void 0 : E.pageId) === c.STUDENT_ENRICHMENT && d.length === 0 ? c.TEST_PREP : null;
52
+ })(), P = f ? (I = p[(d == null ? void 0 : d.length) === 0 ? c.STUDENT_ENRICHMENT : c.TEST_PREP]) == null ? void 0 : I.nextPage : null;
53
+ if (P && f) {
54
+ const l = (a) => g.length === 0 && a === c.TEST_PREP || d.length === 0 && a === c.STUDENT_ENRICHMENT, _ = m.pages.filter((a) => !l(a.id));
55
+ m.pages = _.map((a) => {
54
56
  var E;
55
- return n.id === T ? { ...n, nextPage: S } : n.id === S.pageId ? {
56
- ...n,
57
+ return a.id === f ? { ...a, nextPage: P } : a.id === P.pageId ? {
58
+ ...a,
57
59
  prevPage: {
58
- buttonLabel: ((E = p[T]) == null ? void 0 : E.navigationLabel) ?? "",
59
- pageId: T
60
+ buttonLabel: ((E = p[f]) == null ? void 0 : E.navigationLabel) ?? "",
61
+ pageId: f
60
62
  }
61
- } : n;
63
+ } : a;
62
64
  });
63
65
  }
64
- return g;
65
- }, F = (c, t) => {
66
+ return m;
67
+ }, k = (r, t) => {
66
68
  var e;
67
- const { preference_config: r } = c;
68
- return t.length > 0 ? ((e = r == null ? void 0 : r.filter((s) => t.includes(s.preference_code))) == null ? void 0 : e.map(({ preference_code: s, preference_name: d, preference_category: m }) => ({
69
- preference_code: s,
70
- preference_name: d,
71
- preference_category: m
72
- }))) || [] : [];
69
+ const { preference_config: n } = r;
70
+ return t.length > 0 ? ((e = n == null ? void 0 : n.filter((o) => t.includes(o.preference_code))) == null ? void 0 : e.map(
71
+ ({ preference_code: o, preference_name: s, preference_category: u, preference_description: i }) => ({
72
+ preference_code: o,
73
+ preference_name: s,
74
+ preference_category: u,
75
+ preference_description: i
76
+ })
77
+ )) || [] : [];
78
+ }, F = (r, t, n = !1) => {
79
+ const e = [];
80
+ if (!r || r.length === 0) return [];
81
+ for (let o = 0; o < r.length; o++) {
82
+ const s = r[o];
83
+ if (s && s.preference_category === t && (e.push(s.preference_code), n))
84
+ break;
85
+ }
86
+ return n ? e[0] ? [e[0]] : [] : e;
73
87
  };
74
88
  export {
75
89
  b as filterAndUpdateSlideNavigation,
76
- $ as getFormattedPreferences,
77
- F as getFormattedStudentPersonalizedPreference,
78
- U as updateGoalInFormData
90
+ v as getFormattedPreferences,
91
+ k as getFormattedStudentPersonalizedPreference,
92
+ F as getPreferenceCodesByCategory,
93
+ U as getWeekdayAndStartTimeFromPreference,
94
+ $ as updateGoalInFormData
79
95
  };
80
96
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sources":["../../../src/features/trial-session/helper.ts"],"sourcesContent":["import type { IMilestoneConfig } from '../milestone/create/milestone-create-types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type { ITrialHomeData, TGoals } from './trial-session-types';\n\nimport { DAYS } from '../../constants/date-time';\nimport {\n convertEpochToDateTime,\n convertToMilliseconds,\n getOffsetBetweenTimezone,\n getTimeUnits,\n} from '../../helpers/date-time';\nimport { GOAL_CATEGORY } from '../milestone/constants';\nimport { getGoalsFromConfig } from '../milestone/create/milestone-create-helpers';\nimport { TEACHER_TIMEZONE, TrialPageId } from './trial-session-constants';\n\nconst updateGoalInFormData = (goals: TGoals[] | undefined, goalCategory: string, data: TGoals) => {\n const updateGoals = goals ? [...goals] : [];\n const goalIndex = updateGoals?.findIndex(goal => goal.goal_category === goalCategory);\n\n if (goalIndex === -1) {\n const schoolSuccessGoal = {\n ...data,\n goal_category: goalCategory,\n publish: false,\n };\n\n updateGoals.push(schoolSuccessGoal);\n } else {\n updateGoals[goalIndex] = {\n ...updateGoals[goalIndex],\n ...data,\n };\n }\n\n return updateGoals;\n};\n\nconst getFormattedPreferences = (preferences: TPreference[], studentTimezone?: string) => {\n if (!studentTimezone) return [];\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0); // Set the current date to midnight.\n const timestampOffset = getOffsetBetweenTimezone(TEACHER_TIMEZONE, studentTimezone); // Offset between the teacher's and student's timezone.\n const studentTimestamp = todayTimestamp + timestampOffset; // Adjusting the current date to the student's timezone.\n const { day: today = '' } = convertEpochToDateTime(studentTimestamp, studentTimezone); // Current day at student's timezone.\n const currentDayIndex = DAYS.indexOf(today); // Current day index.\n\n return preferences.length > 0\n ? preferences\n .filter(preference => preference.selectedDay && preference.selectedTime)\n .map(preference => {\n const { selectedDay, selectedTime } = preference;\n // Extracting hours, minutes, and period from the selected time.\n const { hours, minutes, period } = getTimeUnits(selectedTime);\n\n // Calculating the index of the selected day in the DAYS array.\n const selectedDayIndex = DAYS.indexOf(selectedDay);\n const dayDifference = (selectedDayIndex - currentDayIndex + 7) % 7;\n\n // Calculate the epoch timestamp for the selected day and time in the student's timezone.\n const epochTimestamp =\n todayTimestamp +\n timestampOffset +\n convertToMilliseconds({ days: dayDifference, hours, minutes });\n\n return {\n id: epochTimestamp,\n value: `${selectedDay}, ${selectedTime} - ${hours + 1}:${\n minutes < 10 ? '0' : ''\n }${minutes} ${period}`, // Formatted the value string as required\n };\n })\n : [];\n};\n\nconst filterAndUpdateSlideNavigation = ({\n milestoneConfigData,\n trialHomeData,\n grade,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode,\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: 'ONLINE',\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n\n if (testPrepGoals?.length > 0 && enrichmentGoals?.length > 0) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(({ preference_code, preference_name, preference_category }) => ({\n preference_code,\n preference_name,\n preference_category,\n })) || []\n );\n }\n\n return [];\n};\n\nexport {\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getFormattedStudentPersonalizedPreference,\n};\n"],"names":["updateGoalInFormData","goals","goalCategory","data","updateGoals","goalIndex","goal","schoolSuccessGoal","getFormattedPreferences","preferences","studentTimezone","todayTimestamp","timestampOffset","getOffsetBetweenTimezone","TEACHER_TIMEZONE","studentTimestamp","today","convertEpochToDateTime","currentDayIndex","DAYS","preference","selectedDay","selectedTime","hours","minutes","period","getTimeUnits","dayDifference","convertToMilliseconds","filterAndUpdateSlideNavigation","milestoneConfigData","trialHomeData","grade","student","demoInfo","studentGrade","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","pref","preference_code","preference_name","preference_category"],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","sources":["../../../src/features/trial-session/helper.ts"],"sourcesContent":["import type { IMilestoneConfig } from '../milestone/create/milestone-create-types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type { ITrialHomeData, TGoals, TPreferenceSchema } from './trial-session-types';\n\nimport { DAYS } from '../../constants/date-time';\nimport {\n convertEpochToDateTime,\n convertToMilliseconds,\n getOffsetBetweenTimezone,\n getTimeUnits,\n} from '../../helpers/date-time';\nimport { GOAL_CATEGORY } from '../milestone/constants';\nimport { getGoalsFromConfig } from '../milestone/create/milestone-create-helpers';\nimport { TEACHER_TIMEZONE, TrialPageId } from './trial-session-constants';\n\nconst updateGoalInFormData = (goals: TGoals[] | undefined, goalCategory: string, data: TGoals) => {\n const updateGoals = goals ? [...goals] : [];\n const goalIndex = updateGoals?.findIndex(goal => goal.goal_category === goalCategory);\n\n if (goalIndex === -1) {\n const schoolSuccessGoal = {\n ...data,\n goal_category: goalCategory,\n };\n\n updateGoals.push(schoolSuccessGoal);\n } else {\n updateGoals[goalIndex] = {\n ...updateGoals[goalIndex],\n ...data,\n };\n }\n\n return updateGoals;\n};\n\nconst getFormattedPreferences = (preferences: TPreference[], studentTimezone?: string) => {\n if (!studentTimezone) return [];\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0); // Set the current date to midnight.\n const timestampOffset = getOffsetBetweenTimezone(TEACHER_TIMEZONE, studentTimezone); // Offset between the teacher's and student's timezone.\n const studentTimestamp = todayTimestamp + timestampOffset; // Adjusting the current date to the student's timezone.\n const { day: today = '' } = convertEpochToDateTime(studentTimestamp, studentTimezone); // Current day at student's timezone.\n const currentDayIndex = DAYS.indexOf(today); // Current day index.\n\n return preferences.length > 0\n ? preferences\n .filter(preference => preference.selectedDay && preference.selectedTime)\n .map(preference => {\n const { selectedDay, selectedTime } = preference;\n // Extracting hours, minutes, and period from the selected time.\n const { hours, minutes, period } = getTimeUnits(selectedTime);\n\n // Calculating the index of the selected day in the DAYS array.\n const selectedDayIndex = DAYS.indexOf(selectedDay);\n const dayDifference = (selectedDayIndex - currentDayIndex + 7) % 7;\n\n // Calculate the epoch timestamp for the selected day and time in the student's timezone.\n const epochTimestamp =\n todayTimestamp +\n timestampOffset +\n convertToMilliseconds({ days: dayDifference, hours, minutes });\n\n return {\n id: epochTimestamp,\n value: `${selectedDay}, ${selectedTime} - ${hours + 1}:${\n minutes < 10 ? '0' : ''\n }${minutes} ${period}`, // Formatted the value string as required\n };\n })\n : [];\n};\n\n/**\n * Converts a list of epoch timestamps to normalized weekday and start_time.\n * @param epochs Array of epoch timestamps (number)\n * @returns Array of { weekday, start_time }\n */\nconst getWeekdayAndStartTimeFromPreference = (\n preference: Array<{ id: number; value: string }>,\n): Array<{ weekday: string; start_time: string }> => {\n return preference\n .filter(pref => typeof pref.id === 'number' && !isNaN(pref.id))\n .map(pref => {\n const date = new Date(pref.id);\n // Get weekday in lowercase\n const weekdayRaw = DAYS[date.getDay()];\n const weekday = weekdayRaw ? weekdayRaw.toLowerCase() : 'unknown';\n // Get time in HH:MM:SS format\n const hour = date.getHours();\n const minute = date.getMinutes();\n const start_time = `${hour.toString().padStart(2, '0')}:${minute\n .toString()\n .padStart(2, '0')}:00`;\n\n return { weekday, start_time };\n });\n};\n\nconst filterAndUpdateSlideNavigation = ({\n milestoneConfigData,\n trialHomeData,\n grade,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode,\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: 'ONLINE',\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n\n if (testPrepGoals?.length > 0 && enrichmentGoals?.length > 0) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(\n ({ preference_code, preference_name, preference_category, preference_description }) => ({\n preference_code,\n preference_name,\n preference_category,\n preference_description,\n }),\n ) || []\n );\n }\n\n return [];\n};\n\nconst getPreferenceCodesByCategory = (\n preferences: TPreferenceSchema[],\n category: string,\n returnFirstOnly: boolean = false,\n): string[] => {\n const filteredCodes = [];\n\n if (!preferences || preferences.length === 0) return [];\n\n for (let i = 0; i < preferences.length; i++) {\n const pref = preferences[i];\n\n if (pref && pref.preference_category === category) {\n filteredCodes.push(pref.preference_code);\n if (returnFirstOnly) break;\n }\n }\n\n return returnFirstOnly ? (filteredCodes[0] ? [filteredCodes[0]] : []) : filteredCodes;\n};\n\nexport {\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getWeekdayAndStartTimeFromPreference,\n getFormattedStudentPersonalizedPreference,\n getPreferenceCodesByCategory,\n};\n"],"names":["updateGoalInFormData","goals","goalCategory","data","updateGoals","goalIndex","goal","schoolSuccessGoal","getFormattedPreferences","preferences","studentTimezone","todayTimestamp","timestampOffset","getOffsetBetweenTimezone","TEACHER_TIMEZONE","studentTimestamp","today","convertEpochToDateTime","currentDayIndex","DAYS","preference","selectedDay","selectedTime","hours","minutes","period","getTimeUnits","dayDifference","convertToMilliseconds","getWeekdayAndStartTimeFromPreference","pref","date","weekdayRaw","weekday","hour","minute","start_time","filterAndUpdateSlideNavigation","milestoneConfigData","trialHomeData","grade","student","demoInfo","studentGrade","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","preference_code","preference_name","preference_category","preference_description","getPreferenceCodesByCategory","category","returnFirstOnly","filteredCodes","i"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { useState as h, useCallback as O } from "react";
2
+ import { PREFERENCE_CATEGORY as p } from "../../milestone/constants.js";
3
+ import { getGradesFromConfig as T } from "../../milestone/create/milestone-create-helpers.js";
4
+ import { PREFERENCE_CODE_MAP as v } from "../comps/student-feedback/student-feedback-constants.js";
5
+ import { getPreferenceCodesByCategory as u } from "../helper.js";
6
+ const F = ({
7
+ teacherClassroomId: g,
8
+ milestoneConfig: n,
9
+ studentTimezone: o,
10
+ updateSlideConfig: s
11
+ }) => {
12
+ const t = `trialSessionConfigCache_${g}`, [r, C] = h(() => {
13
+ try {
14
+ return sessionStorage.getItem(t) === "true";
15
+ } catch {
16
+ return !1;
17
+ }
18
+ });
19
+ return { onRenderUpdateSlideConfig: O(
20
+ (E) => {
21
+ if (r)
22
+ return;
23
+ const { student: m, intel_student: S } = E, { student_preference: I } = S || {}, { preferences: i = [] } = I || {}, { name: P, grade: c } = m || {}, R = !!T(n).find(
24
+ (_) => _.id === c
25
+ ), a = u(i, p.OBJECTIVES), e = u(
26
+ i,
27
+ p.POSITION,
28
+ !0
29
+ ), d = a.length > 0 ? a : null, l = e.length > 0 ? e : null, f = e.length > 0 && e[0] ? [v[e[0]]] : null, U = {
30
+ studentTimezone: o,
31
+ name: P,
32
+ grade: R ? c : "",
33
+ ...d && { personalizedObjectives: d },
34
+ ...l && { personalizedPosition: l },
35
+ ...f && { personalizedLevel: f }
36
+ };
37
+ try {
38
+ sessionStorage.setItem(t, "true"), C(!0);
39
+ } catch {
40
+ }
41
+ s(U);
42
+ },
43
+ [r, n, o, s, t]
44
+ ) };
45
+ };
46
+ export {
47
+ F as useSlideConfigUpdate
48
+ };
49
+ //# sourceMappingURL=use-slide-config-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-slide-config-update.js","sources":["../../../../src/features/trial-session/hooks/use-slide-config-update.ts"],"sourcesContent":["import type { IMilestoneConfig } from '../../milestone/create/milestone-create-types';\nimport type { ITrialHomeData, ITrialSessionFormFields } from '../trial-session-types';\n\nimport { useCallback, useState } from 'react';\n\nimport { PREFERENCE_CATEGORY } from '../../milestone/constants';\nimport { getGradesFromConfig } from '../../milestone/create/milestone-create-helpers';\nimport { PREFERENCE_CODE_MAP } from '../comps/student-feedback/student-feedback-constants';\nimport { getPreferenceCodesByCategory } from '../helper';\n\ninterface UseSlideConfigUpdateProps {\n teacherClassroomId: string;\n milestoneConfig: IMilestoneConfig;\n studentTimezone?: string;\n updateSlideConfig: (config: Partial<ITrialSessionFormFields>) => void;\n}\n\nexport const useSlideConfigUpdate = ({\n teacherClassroomId,\n milestoneConfig,\n studentTimezone,\n updateSlideConfig,\n}: UseSlideConfigUpdateProps) => {\n const CACHE_KEY = `trialSessionConfigCache_${teacherClassroomId}`;\n\n // Check if config was already set for this student in this session\n const [isConfigSet, setIsConfigSet] = useState<boolean>(() => {\n try {\n return sessionStorage.getItem(CACHE_KEY) === 'true';\n } catch {\n return false;\n }\n });\n\n const onRenderUpdateSlideConfig = useCallback(\n (homeData: ITrialHomeData) => {\n // If config was already set for this student in this session, skip update\n if (isConfigSet) {\n return;\n }\n\n const { student, intel_student: intelStudent } = homeData;\n const { student_preference: studentPreference } = intelStudent || {};\n const { preferences = [] } = studentPreference || {};\n const { name: studentName, grade: studentGrade } = student || {};\n\n const IsGradeExistInMilestoneConfig = !!getGradesFromConfig(milestoneConfig).find(\n element => element.id === studentGrade,\n );\n\n const objectives = getPreferenceCodesByCategory(preferences, PREFERENCE_CATEGORY.OBJECTIVES);\n const position = getPreferenceCodesByCategory(\n preferences,\n PREFERENCE_CATEGORY.POSITION,\n true,\n );\n\n const objectivesToUpdate = objectives.length > 0 ? objectives : null;\n const positionToUpdate = position.length > 0 ? position : null;\n const levelToUpdate =\n position.length > 0 && position[0]\n ? [PREFERENCE_CODE_MAP[position[0] as keyof typeof PREFERENCE_CODE_MAP]]\n : null;\n\n const configToUpdate: Partial<ITrialSessionFormFields> = {\n studentTimezone,\n name: studentName,\n grade: IsGradeExistInMilestoneConfig ? studentGrade : '',\n ...(objectivesToUpdate && { personalizedObjectives: objectivesToUpdate }),\n ...(positionToUpdate && { personalizedPosition: positionToUpdate }),\n ...(levelToUpdate && { personalizedLevel: levelToUpdate }),\n };\n\n // Mark config as set in sessionStorage and state\n try {\n sessionStorage.setItem(CACHE_KEY, 'true');\n setIsConfigSet(true);\n } catch {} // Silent catch\n\n updateSlideConfig(configToUpdate);\n },\n [isConfigSet, milestoneConfig, studentTimezone, updateSlideConfig, CACHE_KEY],\n );\n\n return { onRenderUpdateSlideConfig };\n};\n"],"names":["useSlideConfigUpdate","teacherClassroomId","milestoneConfig","studentTimezone","updateSlideConfig","CACHE_KEY","isConfigSet","setIsConfigSet","useState","useCallback","homeData","student","intelStudent","studentPreference","preferences","studentName","studentGrade","IsGradeExistInMilestoneConfig","getGradesFromConfig","element","objectives","getPreferenceCodesByCategory","PREFERENCE_CATEGORY","position","objectivesToUpdate","positionToUpdate","levelToUpdate","PREFERENCE_CODE_MAP","configToUpdate"],"mappings":";;;;;AAiBO,MAAMA,IAAuB,CAAC;AAAA,EACnC,oBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,mBAAAC;AACF,MAAiC;AACzB,QAAAC,IAAY,2BAA2BJ,CAAkB,IAGzD,CAACK,GAAaC,CAAc,IAAIC,EAAkB,MAAM;AACxD,QAAA;AACK,aAAA,eAAe,QAAQH,CAAS,MAAM;AAAA,IAAA,QACvC;AACC,aAAA;AAAA,IACT;AAAA,EAAA,CACD;AAoDD,SAAO,EAAE,2BAlDyBI;AAAA,IAChC,CAACC,MAA6B;AAE5B,UAAIJ;AACF;AAGF,YAAM,EAAE,SAAAK,GAAS,eAAeC,EAAA,IAAiBF,GAC3C,EAAE,oBAAoBG,MAAsBD,KAAgB,CAAA,GAC5D,EAAE,aAAAE,IAAc,CAAA,MAAOD,KAAqB,CAAA,GAC5C,EAAE,MAAME,GAAa,OAAOC,EAAa,IAAIL,KAAW,IAExDM,IAAgC,CAAC,CAACC,EAAoBhB,CAAe,EAAE;AAAA,QAC3E,CAAAiB,MAAWA,EAAQ,OAAOH;AAAA,MAAA,GAGtBI,IAAaC,EAA6BP,GAAaQ,EAAoB,UAAU,GACrFC,IAAWF;AAAA,QACfP;AAAA,QACAQ,EAAoB;AAAA,QACpB;AAAA,MAAA,GAGIE,IAAqBJ,EAAW,SAAS,IAAIA,IAAa,MAC1DK,IAAmBF,EAAS,SAAS,IAAIA,IAAW,MACpDG,IACJH,EAAS,SAAS,KAAKA,EAAS,CAAC,IAC7B,CAACI,EAAoBJ,EAAS,CAAC,CAAqC,CAAC,IACrE,MAEAK,IAAmD;AAAA,QACvD,iBAAAzB;AAAA,QACA,MAAMY;AAAA,QACN,OAAOE,IAAgCD,IAAe;AAAA,QACtD,GAAIQ,KAAsB,EAAE,wBAAwBA,EAAmB;AAAA,QACvE,GAAIC,KAAoB,EAAE,sBAAsBA,EAAiB;AAAA,QACjE,GAAIC,KAAiB,EAAE,mBAAmBA,EAAc;AAAA,MAAA;AAItD,UAAA;AACa,uBAAA,QAAQrB,GAAW,MAAM,GACxCE,EAAe,EAAI;AAAA,MAAA,QACb;AAAA,MAAC;AAET,MAAAH,EAAkBwB,CAAc;AAAA,IAClC;AAAA,IACA,CAACtB,GAAaJ,GAAiBC,GAAiBC,GAAmBC,CAAS;AAAA,EAAA,EAG3C;AACrC;"}