{"version":3,"file":"static/js/5210.33e5006d.chunk.js","mappings":"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","sources":["components/AriaLetter.tsx","components/BadgeWithIcon.tsx","components/SvgIcons/ContinueWithoutLoggingInIcon.tsx","components/CoverageSelector/CoverageSelectorAlert.tsx","components/CoverageSelector/components/PlanTypeDescription.tsx","components/CoverageSelector/components/PlanTypeStep.tsx","components/CoverageSelector/components/PlanTypeStepActions.tsx","components/CoverageSelector/components/ZipcodeAndCoverageYearStep.tsx","components/CoverageSelector/components/ZipcodeAndCoverageYearStepActions.tsx","components/CoverageSelector/CoverageSelectorV2.tsx","components/CoverageSelector/components/MedigapHelpDrawerContents.tsx","components/CoverageSelector/components/PlanTypeSubHeader.tsx","components/CoverageSelector/constants.ts","components/HelpDrawers/PlanTypeHelpDrawer.tsx","components/MedicareGovAnchor.tsx","components/TooltipWithClose.tsx","helpers/coverageSelectorHelpers.ts","helpers/query-hooks/useCounties.ts"],"sourcesContent":["import type { FC } from \"react\";\n\nconst ariaLetterMap: Record<string, string | undefined> = {\n c: \"Cee\",\n d: \"Dee\",\n};\n\ninterface AriaLetterProps {\n children: string;\n className?: string;\n}\n\n/** C and D have an unfortunate tendency to be mispronounced by aria.\n * This is a quick wrapper which allows screen readers to correctly read those letters.\n * @warning this may not be needed. Confirm with accessibility if this is still required.\n * If not, please deprecate this component. */\nexport const AriaLetter: FC<AriaLetterProps> = ({ children, className }) => {\n const ariaLabel = ariaLetterMap[children.toLowerCase()];\n return ariaLabel ? (\n <span aria-label={ariaLabel} className={className}>\n {children}\n </span>\n ) : (\n <>{children}</>\n );\n};\n","import { Badge as OriginalBadge } from \"@cmsgov/ds-medicare-gov\";\nimport classNames from \"classnames\";\nimport uniqueId from \"lodash.uniqueid\";\nimport {\n cloneElement,\n type FC,\n type ComponentPropsWithoutRef,\n type ReactElement,\n} from \"react\";\n\nexport const baseBadgeClassName = \"mct-c-badge\";\nenum IconPlacements {\n left = \"left\",\n right = \"right\",\n}\n\ninterface ExtendedBadgeProps {\n iconPlacement?: keyof typeof IconPlacements;\n /**\n * `theme` prop overrides `variation`, similar to `weight` prop for an `Alert`\n * @see https://design.cms.gov/components/alert/\n */\n theme?: \"white\" | \"primary-alt-lightest\";\n /**\n * BadgeWithIcon will create a unique `id` for the `svgIcon`, or the `SvgIcon`\n * component from the DS will assign one.\n * If you intend to have more than one badge on a page, ensure that `id`s on\n * any of the generated SVG's children elements will also be unique for each instance.\n * Recommend, e.g., using `lodash.uniqueId`\n */\n svgIcon: ReactElement;\n}\n\ninterface BadgeProps\n extends ComponentPropsWithoutRef<typeof OriginalBadge>,\n ExtendedBadgeProps {}\n\nconst ChildrenWithIcon = ({\n svgIcon,\n children,\n iconPlacement,\n idSuffix,\n}: ExtendedBadgeProps &\n Pick<BadgeProps, \"children\"> & { idSuffix?: string }) => {\n const iconClassName = `${baseBadgeClassName}__icon`;\n const className = classNames(\n `${iconClassName} ${iconClassName}--${iconPlacement}`\n );\n const iconRight = iconPlacement === IconPlacements.right;\n const newId = svgIcon.props.id\n ? `${svgIcon.props.id}-${idSuffix}`\n : undefined;\n const icon = cloneElement(svgIcon, {\n className,\n \"aria-hidden\": true, // Badge provides content, icon is decoration\n width: \"18px\",\n height: \"18px\",\n id: newId,\n });\n return (\n <>\n {!iconRight && icon}\n <span className=\"mct-c-badge__content\">{children}</span>\n {iconRight && icon}\n </>\n );\n};\n\n/**\n * `BadeWithIcon` extends the CMSDS / MGov DS `Badge` Component\n * - Takes an optional `SvgIcon` Component as a prop\n * - `SvgIcon` wraps any valid SVG inner content to ensure an accessible SVG is output\n * - Can position the icon on either side of `Badge` content\n * - Adds an optional `theme` prop, modeled on that available on the `Alert` component,\n * to render a badge with custom background and content color (relies on CSS)\n * - Badge `id` will also get a unique suffix and pass to the `svgIcon`\n * @see https://github.cms.gov/pages/MedicareGov/mgov-design-system/components/badge\n * @see https://design.cms.gov/components/icon\n */\nexport const BadgeWithIcon: FC<BadgeProps> = ({\n svgIcon,\n iconPlacement = IconPlacements.left,\n children,\n className,\n variation,\n theme,\n id,\n ...props\n}: BadgeProps) => {\n const combinedClassNames = classNames(className, \"mct-c-badge\", {\n [`ds-c-badge--${variation} mct-c-badge--${variation}`]: !!variation,\n [`mct-c-badge--${theme}`]: !!theme,\n });\n const idSuffix = uniqueId();\n const newId = id ? `${id}-${idSuffix}` : undefined;\n return (\n <OriginalBadge\n className={combinedClassNames}\n data-testid={baseBadgeClassName}\n id={newId}\n {...props}\n >\n <ChildrenWithIcon {...{ svgIcon, iconPlacement, idSuffix }}>\n {children}\n </ChildrenWithIcon>\n </OriginalBadge>\n );\n};\n","import { SvgIcon } from \"@cmsgov/ds-medicare-gov\";\n\nexport const ContinueWithoutLoggingInIcon = (\n <SvgIcon title=\"Icons/Find plans\" viewBox=\"0 0 16 18\" id=\"Icons/Find-plans\">\n <path d=\"M12.1785714,5.625 L12.1785714,4.5 C12.1785714,2.01867187 10.1919074,0 7.75,0 C5.30805804,0 3.32142857,2.01867187 3.32142857,4.5 L3.32142857,5.625 L0,5.625 L0,15.1875 C0,16.7408086 1.23920424,18 2.76785714,18 L12.7321429,18 C14.2607958,18 15.5,16.7408086 15.5,15.1875 L15.5,5.625 L12.1785714,5.625 Z M5.53571429,4.5 C5.53571429,3.25933594 6.52902902,2.25 7.75,2.25 C8.97097098,2.25 9.96428571,3.25933594 9.96428571,4.5 L9.96428571,5.625 L5.53571429,5.625 L5.53571429,4.5 Z M11.0714286,8.71875 C10.6128292,8.71875 10.2410714,8.34099609 10.2410714,7.875 C10.2410714,7.40900391 10.6128292,7.03125 11.0714286,7.03125 C11.5300279,7.03125 11.9017857,7.40900391 11.9017857,7.875 C11.9017857,8.34099609 11.5300279,8.71875 11.0714286,8.71875 Z M4.42857143,8.71875 C3.9699721,8.71875 3.59821429,8.34099609 3.59821429,7.875 C3.59821429,7.40900391 3.9699721,7.03125 4.42857143,7.03125 C4.88717076,7.03125 5.25892857,7.40900391 5.25892857,7.875 C5.25892857,8.34099609 4.88717076,8.71875 4.42857143,8.71875 Z\"></path>\n </SvgIcon>\n);\n","import { Alert } from \"@cmsgov/ds-medicare-gov\";\nimport { useTranslate } from \"../../helpers/intlHooks\";\nimport type { CoverageSelectorErrorState } from \"../../@types\";\nimport type { FC } from \"react\";\n\nexport const CoverageSelectorAlert: FC<{\n errorState: {\n zipcode?: CoverageSelectorErrorState;\n planType?: CoverageSelectorErrorState;\n counties?: CoverageSelectorErrorState;\n };\n}> = ({ errorState }) => {\n const t = useTranslate();\n return (\n <>\n {(errorState.planType || errorState.zipcode || errorState.counties) && (\n <div data-testid=\"alert\" className=\"ds-u-margin-bottom--2\">\n <Alert\n heading={t(\"coverage_selector.alert.heading\")}\n variation=\"error\"\n className=\"mct-c-coverage-selector-v2__alert\"\n >\n <span>{t(\"coverage_selector.alert.message\")}</span>\n </Alert>\n </div>\n )}\n </>\n );\n};\n","import type { FC, PropsWithChildren } from \"react\";\nimport { planTypePhraseMap } from \"../constants\";\nimport { FormattedMessage } from \"react-intl\";\nimport { sendTooltipEvent } from \"../../../helpers/analyticsHelpers\";\nimport { TooltipWithClose } from \"../../TooltipWithClose\";\nimport {\n HelpDrawerToggle,\n InfoCircleOutlineIcon,\n} from \"@cmsgov/ds-medicare-gov\";\nimport type { CoverageSelectorCoverageType } from \"../../../@types\";\nimport { sendHelpDrawerOpenAnalyticsEvent } from \"../../../app/contexts/Analytics/events\";\nimport {\n type TranslationKey,\n useTypedTranslate,\n} from \"../../../helpers/intlHooks\";\n\ntype PlanTypeDescriptionProps = PropsWithChildren<{\n coverageType: CoverageSelectorCoverageType;\n newToMedicare?: boolean;\n showDrawer?: () => void;\n helpDrawerOpen?: boolean;\n setActiveTooltip: (coverageType: CoverageSelectorCoverageType) => void;\n}>;\n\n/** These phrase keys are in use here. Logged here for easy searching:\n * coverage_selector.help_drawer.medigap.body\n * coverage_selector.help_drawer.part_c.body\n * coverage_selector.help_drawer.part_d.body\n * coverage_selector.new_to_medicare.medigap.body\n * coverage_selector.new_to_medicare.medigap.warning\n * coverage_selector.new_to_medicare.part_c.body\n * coverage_selector.new_to_medicare.part_c.warning\n * coverage_selector.new_to_medicare.part_d.body\n * coverage_selector.new_to_medicare.part_d.warning\n */\n\n/** description of plans to use with PlanTypeStep */\nexport const PlanTypeDescription: FC<PlanTypeDescriptionProps> = ({\n coverageType,\n newToMedicare,\n showDrawer,\n helpDrawerOpen,\n setActiveTooltip,\n}) => {\n const t = useTypedTranslate();\n const phraseSelector2 = newToMedicare ? \"new_to_medicare\" : \"help_drawer\";\n const phraseSelector3: \"part_c\" | \"part_d\" | \"medigap\" =\n planTypePhraseMap[coverageType as keyof typeof planTypePhraseMap];\n const initialPhraseDescriptionKey =\n `coverage_selector.${phraseSelector2}.${phraseSelector3}.body` as TranslationKey;\n const phraseWarningKey = `coverage_selector.new_to_medicare.${phraseSelector3}.warning`;\n\n const phraseDescriptionKey = (() => {\n switch (initialPhraseDescriptionKey) {\n // These strings have been updated for 2024\n case \"coverage_selector.help_drawer.medigap.body\":\n case \"coverage_selector.help_drawer.part_c.body\":\n case \"coverage_selector.new_to_medicare.part_c.body\":\n case \"coverage_selector.new_to_medicare.part_d.body\":\n case \"coverage_selector.new_to_medicare.medigap.body\":\n return `${initialPhraseDescriptionKey}.2024` as TranslationKey;\n default:\n return initialPhraseDescriptionKey;\n }\n })();\n\n const toggleTextKey = \"coverage_selector.new_to_medicare.medigap.when\";\n\n function showHelpDrawer() {\n sendHelpDrawerOpenAnalyticsEvent({\n text: t(toggleTextKey),\n heading: t(toggleTextKey),\n });\n if (showDrawer) showDrawer();\n }\n\n /** sets parent z-index to 1 so as to have proper tooltips, without overlap. */\n function activateTooltip() {\n setActiveTooltip(coverageType);\n sendTooltipEvent({\n text: t(\"cw.info.om\"),\n });\n }\n\n return (\n <>\n <div className=\"ds-u-margin-top--0 mct-c-coverage-selector-v2__plantype_description\">\n <FormattedMessage\n id={phraseDescriptionKey}\n values={{\n originalMedicare: (\n <TooltipWithClose\n title={t(\"ntm.original_medicare.tooltip\")}\n onOpen={activateTooltip}\n className=\"ds-c-tooltip__trigger-link\"\n component=\"a\"\n >\n {t(\"cw.info.om\")}\n </TooltipWithClose>\n ),\n when: (\n <HelpDrawerToggle\n showDrawer={showHelpDrawer}\n helpDrawerOpen={!!helpDrawerOpen}\n >\n <span className=\"ds-u-margin-right--1\">{t(toggleTextKey)}</span>\n <InfoCircleOutlineIcon />\n </HelpDrawerToggle>\n ),\n }}\n />\n </div>\n\n {newToMedicare && (\n <div className=\"ds-u-font-weight--bold ds-u-margin-top--1 ds-u-margin-bottom--2\">\n <FormattedMessage\n id={phraseWarningKey}\n values={{\n and: (\n // This is <strong> because we have a stray CSS rule that takes away font-weight for spans.\n // The --bold class will keep the font-weight consistent.\n <strong className=\"ds-u-text-decoration--underline ds-u-font-weight--bold\">\n {t(\"and\")}\n </strong>\n ),\n or: (\n <strong className=\"ds-u-text-decoration--underline ds-u-font-weight--bold\">\n {t(\"or\")}\n </strong>\n ),\n }}\n />\n </div>\n )}\n </>\n );\n};\n","import { ChoiceList } from \"@cmsgov/ds-medicare-gov\";\nimport { type FC, type SyntheticEvent, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { Link } from \"react-router-dom\";\nimport { AnalyticsActionType } from \"../../../app/contexts/Analytics/types\";\nimport { routes } from \"../../../app/routes\";\nimport { useTranslate } from \"../../../helpers/intlHooks\";\nimport { MctHelpDrawer } from \"../../HelpDrawerWrapper\";\nimport { choiceIdMap } from \"../constants\";\nimport { PlanTypeSubHeader } from \"./PlanTypeSubHeader\";\nimport { AriaLetter } from \"../../AriaLetter\";\nimport { PlanTypeDescription } from \"./PlanTypeDescription\";\nimport { MedigapHelpDrawerContents } from \"./MedigapHelpDrawerContents\";\nimport {\n CoverageSelectorCoverageType,\n type CoverageSelectorErrorState,\n type SharedCoverageSelectorProps,\n} from \"../../../@types\";\nimport { PlanTypeHelpDrawer } from \"../../HelpDrawers/PlanTypeHelpDrawer\";\nimport { useAppContext } from \"../../../helpers/context-hooks/useAppContext\";\n\ninterface PlanTypeStepProps extends SharedCoverageSelectorProps {\n planTypeErrorState?: CoverageSelectorErrorState;\n onPlanTypeChange: (value: CoverageSelectorCoverageType) => void;\n /** if `true`, will provide more prominent headers. */\n isSinglePage?: boolean;\n selectedPlanType?: CoverageSelectorCoverageType;\n}\n\nexport const PlanTypeStep: FC<PlanTypeStepProps> = ({\n showDescription,\n planTypeErrorState,\n onPlanTypeChange,\n newToMedicare,\n isSinglePage,\n selectedPlanType,\n}) => {\n const t = useTranslate();\n const { dispatch } = useAppContext();\n\n const needHelpText = newToMedicare\n ? t(\"coverage_selector.ntm.help_link_text\")\n : t(\"coverage_selector.help_drawer.help_link_text\");\n const needHelpLinkUrl = routes.coverageWizard.options;\n const [showFindPlansNowHelpDrawer, setShowFindPlansNowHelpDrawer] =\n useState(false);\n\n const [activeTooltip, setActiveTooltip] =\n useState<CoverageSelectorCoverageType>();\n\n // * Constants\n\n /**\n * on single page, we will scroll up to the top, so we don't need to show the error on bottom.\n * when there is no description, we also do not need to show the error on bottom, because there is less screen real estate used.\n */\n const showErrorOnTop = isSinglePage || !showDescription;\n\n // * Functions\n\n function toggleFindPlansNowHelpDrawer() {\n setShowFindPlansNowHelpDrawer(x => !x);\n }\n\n /** adds an 'active' class that is triggered by the tooltip opening.\n * This prevents weird overlapping issues by adding in a z-index where we need it.\n */\n function getChoiceContainerClassName(\n coverageType: CoverageSelectorCoverageType\n ) {\n if (coverageType === activeTooltip) {\n return \"mct-c-coverage-selector-v2__plan-type-choice-container mct-c-coverage-selector-v2__plan-type-choice-container--active\";\n }\n return \"mct-c-coverage-selector-v2__plan-type-choice-container\";\n }\n\n return (\n <div\n className=\"mct-c-coverage-selector-v2__plantype\"\n data-testid=\"plan-type-section\"\n >\n <ChoiceList\n className=\"ds-u-margin-top--0\"\n choices={[\n // * Medicare Advantage Plan (Part C)\n {\n className: getChoiceContainerClassName(\n CoverageSelectorCoverageType.MAPD\n ),\n label: (\n <span\n data-testid={choiceIdMap[CoverageSelectorCoverageType.MAPD]}\n >\n <PlanTypeSubHeader\n showDescription={showDescription}\n isSinglePage={isSinglePage}\n >\n <FormattedMessage\n id=\"coverage_selector.plan_types.part_c.heading\"\n values={{\n message: (\n <AriaLetter className=\"mct-c-coverage-selector-v2__plan-type-sub-heading-aria\">\n C\n </AriaLetter>\n ),\n }}\n />\n </PlanTypeSubHeader>\n {showDescription && (\n <PlanTypeDescription\n coverageType={CoverageSelectorCoverageType.MAPD}\n newToMedicare={newToMedicare}\n setActiveTooltip={setActiveTooltip}\n />\n )}\n </span>\n ),\n value: CoverageSelectorCoverageType.MAPD,\n id: choiceIdMap[CoverageSelectorCoverageType.MAPD],\n checked: selectedPlanType === CoverageSelectorCoverageType.MAPD,\n },\n // * Medicare drug plan (Part D)\n {\n className: getChoiceContainerClassName(\n CoverageSelectorCoverageType.PDP\n ),\n label: (\n <span data-testid={choiceIdMap[CoverageSelectorCoverageType.PDP]}>\n <PlanTypeSubHeader\n showDescription={showDescription}\n isSinglePage={isSinglePage}\n >\n <FormattedMessage\n id=\"coverage_selector.plan_types.part_d.heading\"\n values={{\n message: (\n <AriaLetter className=\"mct-c-coverage-selector-v2__plan-type-sub-heading-aria\">\n D\n </AriaLetter>\n ),\n }}\n />\n </PlanTypeSubHeader>\n {showDescription && (\n <PlanTypeDescription\n coverageType={CoverageSelectorCoverageType.PDP}\n newToMedicare={newToMedicare}\n setActiveTooltip={setActiveTooltip}\n />\n )}\n </span>\n ),\n value: CoverageSelectorCoverageType.PDP,\n id: choiceIdMap[CoverageSelectorCoverageType.PDP],\n checked: selectedPlanType === CoverageSelectorCoverageType.PDP,\n },\n // * Medigap policy\n {\n className: getChoiceContainerClassName(\n CoverageSelectorCoverageType.MedigapPolicy\n ),\n label: (\n <span\n data-testid={\n choiceIdMap[CoverageSelectorCoverageType.MedigapPolicy]\n }\n >\n <PlanTypeSubHeader\n showDescription={showDescription}\n isSinglePage={isSinglePage}\n >\n {t(\"coverage_selector.plan_types.medigap.heading\")}\n </PlanTypeSubHeader>\n {showDescription && (\n <PlanTypeDescription\n coverageType={CoverageSelectorCoverageType.MedigapPolicy}\n newToMedicare={newToMedicare}\n helpDrawerOpen={showFindPlansNowHelpDrawer}\n showDrawer={toggleFindPlansNowHelpDrawer}\n setActiveTooltip={setActiveTooltip}\n />\n )}\n </span>\n ),\n value: CoverageSelectorCoverageType.MedigapPolicy,\n id: choiceIdMap[CoverageSelectorCoverageType.MedigapPolicy],\n checked:\n selectedPlanType === CoverageSelectorCoverageType.MedigapPolicy,\n },\n ]}\n errorMessage={planTypeErrorState?.message}\n errorMessageClassName=\"mct-c-coverage-selector-v2__plantype-error-message\"\n errorPlacement={showErrorOnTop ? \"top\" : \"bottom\"}\n label={\n // * Next, select the type of plan you want:\n isSinglePage ? (\n <h2 className=\"ds-h3 ds-u-margin-top--5\">\n {t(\"coverage_selector.plan_type.heading\")}\n </h2>\n ) : (\n <h2 className=\"ds-text-heading--md ds-u-measure--narrow ds-u-margin-bottom--2\">\n {t(\"coverage_selector.plan_type.heading\")}\n </h2>\n )\n }\n name=\"coverage-selector-select-plan-type\"\n onChange={(e: SyntheticEvent<HTMLInputElement>) => {\n onPlanTypeChange(\n e.currentTarget.value as CoverageSelectorCoverageType\n );\n }}\n type=\"radio\"\n />\n {showDescription ? (\n <Link\n className=\"ds-u-margin-y--1 ds-u-display--block\"\n to={needHelpLinkUrl}\n onClick={() => {\n dispatch({\n type: AnalyticsActionType.SEND_INTERNAL_LINK_CLICKED_EVENT,\n settings: {\n linkText: needHelpText,\n linkUrl: needHelpLinkUrl,\n },\n });\n }}\n >\n {needHelpText}\n </Link>\n ) : (\n <span\n className=\"ds-text-body--md ds-u-margin-y--1 ds-u-display--block\"\n data-testid=\"need-help-text\"\n >\n <PlanTypeHelpDrawer newToMedicare={newToMedicare} />\n </span>\n )}\n {showFindPlansNowHelpDrawer && (\n <MctHelpDrawer\n closeDrawer={toggleFindPlansNowHelpDrawer}\n large\n drawerTitle={t(\"coverage_selector.new_to_medicare.medigap.when\")}\n >\n <MedigapHelpDrawerContents />\n </MctHelpDrawer>\n )}\n </div>\n );\n};\n","import { Button } from \"@cmsgov/ds-medicare-gov\";\nimport {\n AnalyticsActionType,\n AnalyticsButtonStyle,\n AnalyticsButtonType,\n} from \"../../../app/contexts/Analytics/types\";\nimport { useTranslate } from \"../../../helpers/intlHooks\";\nimport { useAppContext } from \"../../../helpers/context-hooks/useAppContext\";\nimport type { FC } from \"react\";\n\ninterface PlanTypePageActionsProps {\n findPlansButtonText: string;\n handleGoBack?: () => void;\n}\n\nexport const PlanTypeStepActions: FC<PlanTypePageActionsProps> = ({\n findPlansButtonText,\n handleGoBack,\n}) => {\n const { dispatch } = useAppContext();\n const t = useTranslate();\n const goBackText = t(\"coverage_selector.go_back\");\n return (\n <>\n <Button\n variation=\"solid\"\n className=\"mct-c-coverage-selector-v2__start-button\"\n data-testid=\"start-button\"\n type=\"submit\"\n >\n {findPlansButtonText}\n </Button>\n {handleGoBack && (\n <Button\n variation=\"ghost\"\n className=\"mct-c-coverage-selector-v2__go-back-button\"\n type=\"button\"\n onClick={() => {\n handleGoBack();\n dispatch({\n type: AnalyticsActionType.SEND_BUTTON_ENGAGEMENT_EVENT,\n settings: {\n button: {\n buttonStyle: AnalyticsButtonStyle.TRANSPARENT,\n buttonType: AnalyticsButtonType.BUTTON,\n text: goBackText,\n },\n },\n });\n }}\n >\n {goBackText}\n </Button>\n )}\n </>\n );\n};\n","import { Choice, InlineError, TextField } from \"@cmsgov/ds-medicare-gov\";\nimport classNames from \"classnames\";\nimport type { ChangeEvent, FC } from \"react\";\nimport type { CoverageSelectorErrorState } from \"../../../@types\";\nimport { useCounties } from \"../../../helpers/query-hooks/useCounties\";\nimport { useTranslate } from \"../../../helpers/intlHooks\";\nimport {\n useCurrentPlanYear,\n useYearPart,\n} from \"../../../helpers/yearFlagHelpers\";\n\nexport type ZipcodeAndCoverageYearStepProps = {\n countiesErrorState?: CoverageSelectorErrorState;\n currentFips: string | undefined;\n initialFips: string | undefined;\n onCountyChange: (county: string) => void;\n onCoverageYearChange: (selectedYear: string) => void;\n onZipcodeChange: (zipcodeInput: string) => void;\n selectedCoverageYear?: number;\n selectedZipcode?: string;\n zipcode?: string;\n zipcodeErrorState?: CoverageSelectorErrorState;\n /** if `true`, will provide more prominent headers. */\n isSinglePage?: boolean;\n};\n\nexport const ZipcodeAndCoverageYearStep: FC<\n ZipcodeAndCoverageYearStepProps\n> = ({\n countiesErrorState,\n currentFips,\n initialFips,\n isSinglePage,\n onCountyChange,\n onCoverageYearChange,\n onZipcodeChange,\n selectedCoverageYear,\n zipcode,\n zipcodeErrorState,\n}) => {\n // * Hooks\n const t = useTranslate();\n const mctCurrentPlanYear = useCurrentPlanYear();\n const { isOpenEnrollmentNextYearOnly, isPublicPreview, isOpenEnrollment } =\n useYearPart();\n\n // * Queries\n const { counties, isFetching } = useCounties(zipcode);\n\n // * Constants\n const nextPlanYear = mctCurrentPlanYear + 1;\n const showCoverageYearSelector =\n isPublicPreview || isOpenEnrollment || isOpenEnrollmentNextYearOnly;\n\n return (\n <div>\n {showCoverageYearSelector && (\n <div\n data-testid=\"coverage-year-section\"\n className=\"ds-u-margin-bottom--2\"\n >\n {isSinglePage ? (\n <h2 className=\"ds-h3 ds-u-margin-bottom--2\">\n {t(\"coverage_selector.oe.ntm.zipcode.heading\")}\n </h2>\n ) : (\n <h2 className=\"ds-text-heading--md ds-u-measure--narrow ds-u-leading--lead\">\n {t(\"coverage_selector.oe.zipcode.heading\")}\n </h2>\n )}\n <fieldset className=\"ds-c-fieldset ds-u-margin-top--0\">\n <legend className=\"ds-c-label\">\n <span className=\"ds-u-text-transform--uppercase\">\n {t(\"coverage_selector.coverage_for\")}\n </span>\n </legend>\n <div className=\"mct-c-coverage-selector-v2__coverage-years\">\n <Choice\n type=\"radio\"\n name=\"coverage-year\"\n className=\"mct-c-coverage-selector-v2__coverage-year-choice--next-year\"\n id={\"coverage-year-next-year\"}\n value={nextPlanYear}\n data-testid={`coverage-selector-coverage-year-${nextPlanYear}`}\n data-cy={\"coverage-year-next-year\"}\n checked={selectedCoverageYear === nextPlanYear}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n onCoverageYearChange(e.target.value)\n }\n label={nextPlanYear}\n />\n\n {!isOpenEnrollmentNextYearOnly && (\n <Choice\n type=\"radio\"\n className=\"mct-c-coverage-selector-v2__coverage-year-choice--current-year\"\n name=\"coverage-year\"\n id={\"coverage-year-current-year\"}\n value={mctCurrentPlanYear}\n data-testid={`coverage-selector-coverage-year-${mctCurrentPlanYear}`}\n data-cy={\"coverage-year-current-year\"}\n checked={selectedCoverageYear === mctCurrentPlanYear}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n onCoverageYearChange(e.target.value)\n }\n label={mctCurrentPlanYear}\n />\n )}\n </div>\n </fieldset>\n </div>\n )}\n {!showCoverageYearSelector &&\n (isSinglePage ? (\n <h2 className=\"ds-h3 ds-u-margin-bottom--2\">\n {t(\"coverage_selector.ooe.ntm.zipcode.heading\")}\n </h2>\n ) : (\n <h2 className=\"ds-text-heading--md mct-c-coverage-selector-v2__step-heading\">\n {t(\"coverage_selector.ooe.zipcode.heading\")}\n </h2>\n ))}\n <div className=\"mct-c-coverage-selector-v2__zipcode-container\">\n <TextField\n label={t(\"coverage_selector.zip_code\")}\n labelClassName=\"ds-h6\"\n name=\"zipcode\"\n data-testid=\"coverage-selector-zipcode\"\n className={classNames(\"mct-c-coverage-selector-v2__zipcode\", {\n \"mct-c-coverage-selector-v2__text-field--error\":\n zipcodeErrorState?.error,\n })}\n onChange={e => onZipcodeChange(e.target.value)}\n defaultValue={zipcode}\n aria-required=\"true\"\n aria-invalid={!!zipcodeErrorState?.error}\n {...(zipcodeErrorState?.error\n ? { \"aria-describedby\": \"zipcode-container-error\" }\n : {})}\n />\n </div>\n {zipcodeErrorState?.message && (\n <div\n className=\" ds-u-padding-top--1\"\n data-testid=\"zipcodePlanTypeError\"\n >\n <InlineError id=\"zipcode-container-error\">\n {t(zipcodeErrorState.message || \"\")}\n </InlineError>\n </div>\n )}\n {isFetching && <p>{t(\"app.loading\")}...</p>}\n <>\n {counties.length > 1 && (\n <fieldset className=\"ds-c-fieldset ds-u-margin-top--2\">\n <legend className=\"ds-c-label ds-u-margin-bottom--1\">\n <span data-testid=\"select-your-county\">\n {t(\"coverage_selector.select_your_county\")}\n </span>\n </legend>\n <div className=\"mct-c-coverage-selector-v2__zip-counties\">\n {counties.map(county => (\n <Choice\n className=\"mct-c-coverage-selector-v2__county-choice\"\n data-testid={`coverage-selector-fips-${county.fips}`}\n defaultChecked={\n county.fips === initialFips || county.fips === currentFips\n }\n id={county.fips}\n key={county.fips}\n label={`${county.name}, ${county.state}`}\n name=\"county\"\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n onCountyChange(e.target.value);\n }}\n type=\"radio\"\n value={JSON.stringify(county)}\n />\n ))}\n </div>\n </fieldset>\n )}\n {countiesErrorState?.error && (\n <div className=\"ds-u-margin-y--1\">\n <InlineError>{t(countiesErrorState.message || \"\")}</InlineError>\n </div>\n )}\n </>\n </div>\n );\n};\n","import { Button } from \"@cmsgov/ds-medicare-gov\";\nimport {\n AnalyticsActionType,\n AnalyticsButtonStyle,\n AnalyticsButtonType,\n} from \"../../../app/contexts/Analytics/types\";\nimport { useTranslate } from \"../../../helpers/intlHooks\";\nimport { useAppContext } from \"../../../helpers/context-hooks/useAppContext\";\nimport type { FC } from \"react\";\n\ninterface ZipcodeAndCoverageYearStepActionsProps {\n onClickContinue: () => void;\n isInModal?: boolean;\n handleCancel?: () => void;\n}\nexport const ZipcodeAndCoverageYearStepActions: FC<\n ZipcodeAndCoverageYearStepActionsProps\n> = ({ handleCancel, isInModal, onClickContinue }) => {\n const { dispatch } = useAppContext();\n const t = useTranslate();\n const continueButtonText = t(\"coverage_selector.continue\");\n const cancelButtonText = t(\"coverage_selector.cancel\");\n return (\n <>\n <Button\n variation=\"solid\"\n className=\"mct-c-coverage-selector-v2__start-button\"\n data-testid=\"continue-button\"\n type=\"button\"\n onClick={() => {\n onClickContinue();\n dispatch({\n type: AnalyticsActionType.SEND_BUTTON_ENGAGEMENT_EVENT,\n settings: {\n button: {\n buttonStyle: AnalyticsButtonStyle.PRIMARY,\n buttonType: AnalyticsButtonType.BUTTON,\n text: continueButtonText,\n },\n },\n });\n }}\n >\n {continueButtonText}\n </Button>\n {isInModal && handleCancel && (\n <Button\n variation=\"ghost\"\n className=\"mct-c-coverage-selector-v2__go-back-button\"\n type=\"button\"\n data-testid={\"coverage-selector-cancel\"}\n onClick={() => {\n handleCancel();\n dispatch({\n type: AnalyticsActionType.SEND_BUTTON_ENGAGEMENT_EVENT,\n settings: {\n button: {\n buttonStyle: AnalyticsButtonStyle.TRANSPARENT,\n buttonType: AnalyticsButtonType.BUTTON,\n text: cancelButtonText,\n },\n },\n });\n }}\n >\n {cancelButtonText}\n </Button>\n )}\n </>\n );\n};\n","import {\n useState,\n type FormEvent,\n useRef,\n useCallback,\n useMemo,\n useEffect,\n type FC,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { useFlags } from \"launchdarkly-react-client-sdk\";\nimport {\n type CoverageSelectorFormValues,\n type CoverageSelectorCoverageType,\n CoverageSelectorErrorType,\n isCoverageSelectorSelectedValues,\n ActionType,\n type SharedCoverageSelectorProps,\n type SharedCoverageSelectorAnalyticsValues,\n} from \"../../@types\";\nimport { useTranslate } from \"../../helpers/intlHooks\";\nimport { isValidZipcode } from \"../../helpers/zipcodeHelpers\";\nimport {\n getYearPartInfo,\n useCurrentPlanYear,\n} from \"../../helpers/yearFlagHelpers\";\nimport {\n AnalyticsButtonStyle,\n AnalyticsButtonType,\n} from \"../../app/contexts/Analytics/types\";\nimport { BadgeWithIcon } from \"../BadgeWithIcon\";\nimport { ContinueWithoutLoggingInIcon } from \"../SvgIcons/ContinueWithoutLoggingInIcon\";\nimport { useHistory } from \"react-router-dom\";\nimport { useAppContext } from \"../../helpers/context-hooks/useAppContext\";\nimport { CoverageSelectorAlert } from \"./CoverageSelectorAlert\";\nimport {\n sendCoverageSelectorAnalytics,\n updateStates,\n useCoverageSelectorDestinationMap,\n useDefaultCounty,\n useInitialFormValues,\n} from \"../../helpers/coverageSelectorHelpers\";\nimport { PlanTypeStep } from \"./components/PlanTypeStep\";\nimport { PlanTypeStepActions } from \"./components/PlanTypeStepActions\";\nimport { ZipcodeAndCoverageYearStep } from \"./components/ZipcodeAndCoverageYearStep\";\nimport { ZipcodeAndCoverageYearStepActions } from \"./components/ZipcodeAndCoverageYearStepActions\";\n\nenum ActiveStep {\n ZIPCODE,\n PLAN_TYPE,\n}\n\ninterface CoverageSelectorV2Props\n extends SharedCoverageSelectorProps,\n SharedCoverageSelectorAnalyticsValues {\n isInModal?: boolean;\n handleCancel?: () => void;\n /** set to `true` if you do not want there to be multiple steps. */\n isSinglePage?: boolean;\n /** set to `true` to show an alert that warns the user that they are continuing without logging in. */\n showContinueWithoutLoggingIn?: boolean;\n /** custom logic to run when the user clicks to \"Find Plans\" */\n onFindPlans?: () => void;\n /** skip straight to coverage type if we already have zipcode */\n skipZipcode?: boolean;\n /** allows the component to have pre-selected choices. */\n defaultFormValues?: Partial<CoverageSelectorFormValues>;\n}\n\nexport const CoverageSelectorV2: FC<CoverageSelectorV2Props> = ({\n isInModal = false,\n handleCancel,\n isSinglePage,\n showDescription,\n newToMedicare,\n showContinueWithoutLoggingIn,\n onFindPlans,\n analyticsEventAction,\n skipZipcode,\n defaultFormValues,\n}) => {\n // * Hooks\n const t = useTranslate();\n const history = useHistory();\n const { initialFormValues } = useInitialFormValues();\n const destinationMap = useCoverageSelectorDestinationMap();\n const { dispatch } = useAppContext();\n\n // * Flags\n const flags = useFlags();\n const { isPublicPreview, isOpenEnrollment, isOpenEnrollmentNextYearOnly } =\n getYearPartInfo(flags);\n const mctCurrentPlanYear = useCurrentPlanYear();\n const showCoverageYearSelector =\n isPublicPreview || isOpenEnrollment || isOpenEnrollmentNextYearOnly;\n\n // * States\n const [showZipcodeErrors, setShowZipcodeErrors] = useState(false);\n const [showCoverageTypeErrors, setShowCoverageTypeErrors] = useState(false);\n const [currentFormValues, setCurrentFormValues] =\n useState<CoverageSelectorFormValues>({\n coverageYear: showCoverageYearSelector\n ? mctCurrentPlanYear + 1\n : mctCurrentPlanYear,\n zipcode: initialFormValues?.zipcode,\n ...defaultFormValues,\n });\n const [activeStep, setActiveStep] = useState<ActiveStep>(\n skipZipcode && initialFormValues?.zipcode && initialFormValues?.fips\n ? ActiveStep.PLAN_TYPE\n : ActiveStep.ZIPCODE\n );\n\n // * Refs\n const topOfPageRef = useRef<HTMLDivElement>(null);\n\n // * Constants\n const url = window.location.href.split(\"/?\")[0];\n const destination =\n currentFormValues.coverageType &&\n destinationMap[currentFormValues.coverageType];\n const linkUrl = `${url}${destination}${location.search}`;\n const findPlansButtonText = newToMedicare\n ? t(\"next\")\n : t(\"coverage_selector.find_plans\");\n const analyticsButton = useMemo(\n () => ({\n text: findPlansButtonText,\n buttonStyle: AnalyticsButtonStyle.PRIMARY,\n buttonType: AnalyticsButtonType.SUBMIT,\n }),\n [findPlansButtonText]\n );\n const hasCounty = !!currentFormValues.county;\n const hasCoverageType = !!currentFormValues.coverageType;\n const initialFips = initialFormValues?.fips;\n\n // * Queries\n const { county: defaultCounty, errorFetchingCounties } = useDefaultCounty({\n fips: initialFips,\n zipcode: currentFormValues.zipcode,\n });\n\n // * Memos\n const zipcodeErrorState = useMemo(() => {\n if (errorFetchingCounties)\n // we always show an API error, even if `showZipcodeErrors` is false.\n return {\n error: CoverageSelectorErrorType.API,\n message: t(\"coverage_selector.error.zip_code_not_found\"),\n };\n if (!showZipcodeErrors) return;\n if (!isValidZipcode(currentFormValues.zipcode)) {\n return {\n error:\n currentFormValues.zipcode?.length === 0\n ? CoverageSelectorErrorType.MISSING\n : CoverageSelectorErrorType.INVALID,\n message: t(\"coverage_selector.error.zip_code\"),\n };\n }\n return;\n }, [currentFormValues.zipcode, errorFetchingCounties, showZipcodeErrors, t]);\n\n const countiesErrorState = useMemo(() => {\n if (!showZipcodeErrors || zipcodeErrorState || currentFormValues.county)\n return;\n return {\n error: CoverageSelectorErrorType.MISSING,\n message: t(\"coverage_selector.error.missing_county\"),\n };\n }, [currentFormValues.county, t, zipcodeErrorState, showZipcodeErrors]);\n\n const planTypeErrorState = useMemo(() => {\n if (!showCoverageTypeErrors || currentFormValues.coverageType) return;\n return {\n error: CoverageSelectorErrorType.MISSING,\n message: t(\"coverage_selector.error.plan_type\"),\n };\n }, [showCoverageTypeErrors, currentFormValues.coverageType, t]);\n\n const errorState = useMemo(\n () => ({\n zipcode: zipcodeErrorState,\n planType: planTypeErrorState,\n counties: countiesErrorState,\n }),\n [countiesErrorState, planTypeErrorState, zipcodeErrorState]\n );\n\n // * Functions\n const triggerErrors = useCallback(() => {\n if (activeStep === ActiveStep.ZIPCODE || isSinglePage) {\n setShowZipcodeErrors(true);\n }\n if (activeStep === ActiveStep.PLAN_TYPE || isSinglePage) {\n setShowCoverageTypeErrors(true);\n }\n }, [activeStep, isSinglePage]);\n\n const onZipcodeChange = useCallback(\n (zipcodeInput: string) => {\n setShowZipcodeErrors(false);\n setCurrentFormValues(currentFormValues => ({\n ...currentFormValues,\n zipcode: zipcodeInput,\n county: undefined,\n }));\n if (isValidZipcode(zipcodeInput)) {\n dispatch({\n type: ActionType.UPDATE_ZIPCODE,\n payload: zipcodeInput,\n });\n }\n },\n [dispatch]\n );\n\n const onClickContinue = useCallback(\n (e?: FormEvent<HTMLFormElement>): void => {\n e?.preventDefault();\n triggerErrors();\n if (currentFormValues.county) {\n dispatch({\n type: ActionType.UPDATE_FIPS,\n payload: currentFormValues.county?.fips,\n });\n setActiveStep(ActiveStep.PLAN_TYPE);\n }\n },\n [currentFormValues.county, dispatch, triggerErrors]\n );\n\n const navigateToPlans = useCallback(() => {\n if (destination) {\n history.push(destination);\n }\n }, [destination, history]);\n\n const handleFindPlans = useCallback(() => {\n // * Run any custom logic for this instance\n if (onFindPlans) {\n onFindPlans();\n }\n // * Update AppContext with selected values\n if (isCoverageSelectorSelectedValues(currentFormValues)) {\n updateStates(currentFormValues, dispatch);\n }\n if (currentFormValues.coverageType) {\n sendCoverageSelectorAnalytics({\n analyticsButton,\n analyticsEventAction,\n currentFormValues,\n dispatch,\n linkUrl,\n });\n navigateToPlans();\n }\n }, [\n onFindPlans,\n currentFormValues,\n dispatch,\n analyticsButton,\n analyticsEventAction,\n linkUrl,\n navigateToPlans,\n ]);\n\n const onClickStart = (e: FormEvent<HTMLFormElement>): void => {\n /** adding 16px to the top to keep the page looking a bit nice after the scroll. */\n const buffer = 16;\n e.preventDefault();\n triggerErrors();\n if (isSinglePage) {\n if (hasCounty && hasCoverageType) {\n handleFindPlans();\n } else {\n if (topOfPageRef.current) {\n window.scrollTo({\n top: topOfPageRef.current.offsetTop - buffer,\n left: 0,\n behavior: \"smooth\",\n });\n }\n }\n return;\n }\n if (activeStep === ActiveStep.PLAN_TYPE) {\n if (hasCoverageType) {\n handleFindPlans();\n }\n } else {\n onClickContinue();\n }\n };\n\n const goBackToZipCode = isSinglePage\n ? undefined\n : () => {\n setActiveStep(ActiveStep.ZIPCODE);\n setShowCoverageTypeErrors(false);\n setCurrentFormValues(currentFormValues => ({\n ...currentFormValues,\n coverageType: undefined,\n }));\n };\n\n const onPlanTypeChange = (planType: CoverageSelectorCoverageType) => {\n setCurrentFormValues(currentFormValues => ({\n ...currentFormValues,\n coverageType: planType,\n }));\n };\n\n // * Effects\n\n useEffect(() => {\n // if `defaultCounty` changes, assign it to `currentFormValues`.\n setCurrentFormValues(currentFormValues => ({\n ...currentFormValues,\n county: defaultCounty,\n }));\n }, [defaultCounty]);\n\n return (\n <>\n {activeStep === ActiveStep.ZIPCODE && showContinueWithoutLoggingIn && (\n <BadgeWithIcon\n svgIcon={ContinueWithoutLoggingInIcon}\n theme=\"primary-alt-lightest\"\n className=\"ds-u-margin-bottom--2\"\n >\n {t(\"landing_page.badge.continue_without_logging_in\")}\n </BadgeWithIcon>\n )}\n <div\n className={classNames(\"mct-c-coverage-selector-v2\", {\n \"mct-c-coverage-selector-v2--in-modal\": isInModal,\n })}\n data-testid=\"mct-c-coverage-selector-v2\"\n ref={topOfPageRef}\n >\n <form onSubmit={onClickStart}>\n <CoverageSelectorAlert errorState={errorState} />\n <div className=\"mct-c-coverage-selector-v2__step\">\n {(activeStep === ActiveStep.ZIPCODE || isSinglePage) && (\n <ZipcodeAndCoverageYearStep\n isSinglePage={isSinglePage}\n countiesErrorState={countiesErrorState}\n zipcodeErrorState={zipcodeErrorState}\n currentFips={currentFormValues.county?.fips}\n initialFips={initialFips}\n onCountyChange={county => {\n setCurrentFormValues(currentFormValues => ({\n ...currentFormValues,\n county: JSON.parse(county),\n }));\n }}\n onCoverageYearChange={coverageYear => {\n setCurrentFormValues(currentFormValues => ({\n ...currentFormValues,\n coverageYear: +coverageYear,\n }));\n }}\n onZipcodeChange={onZipcodeChange}\n selectedCoverageYear={currentFormValues.coverageYear}\n selectedZipcode={currentFormValues.zipcode}\n zipcode={currentFormValues.zipcode}\n />\n )}\n {(activeStep === ActiveStep.PLAN_TYPE || isSinglePage) && (\n <PlanTypeStep\n showDescription={showDescription}\n planTypeErrorState={errorState.planType}\n onPlanTypeChange={onPlanTypeChange}\n newToMedicare={newToMedicare}\n isSinglePage={isSinglePage}\n selectedPlanType={currentFormValues.coverageType}\n />\n )}\n </div>\n {isSinglePage && <div className=\"mct-c-divider\" />}\n <div className={isSinglePage ? \"\" : \"ds-u-padding-top--2\"}>\n {activeStep === ActiveStep.ZIPCODE && !isSinglePage ? (\n <ZipcodeAndCoverageYearStepActions\n onClickContinue={onClickContinue}\n isInModal={isInModal}\n handleCancel={handleCancel}\n />\n ) : (\n <PlanTypeStepActions\n findPlansButtonText={findPlansButtonText}\n handleGoBack={goBackToZipCode}\n />\n )}\n </div>\n </form>\n </div>\n </>\n );\n};\n","import { FormattedMessage } from \"react-intl\";\nimport { useTranslate } from \"../../../helpers/intlHooks\";\nimport { linkToSHIPHelp } from \"../../../helpers/CONSTANTS\";\nimport { MedicareGovAnchor } from \"../../MedicareGovAnchor\";\n\n/** Help drawer with \"When should I buy Medigap?\" information? */\nexport const MedigapHelpDrawerContents = () => {\n const t = useTranslate();\n\n return (\n <>\n <p>\n <strong>{t(\"ntm.find_plans_now.help_drawer.best_time\")}</strong>{\" \"}\n <FormattedMessage\n id={\"ntm.find_plans_now.help_drawer.six_month\"}\n values={{\n and: <span>{t(\"and\")}</span>,\n }}\n />\n </p>\n <ul>\n <li>\n <strong>\n {t(\"ntm.find_plans_now.help_drawer.bullet.65_up_intro\")}\n </strong>{\" \"}\n {t(\"ntm.find_plans_now.help_drawer.bullet.65_up_cont\")}\n </li>\n <li>\n <strong>\n {t(\"ntm.find_plans_now.help_drawer.bullet.64_down_intro\")}{\" \"}\n </strong>\n <FormattedMessage\n id={\"ntm.find_plans_now.help_drawer.bullet.64_down_cont\"}\n values={{\n ship: (\n <a href={linkToSHIPHelp} target=\"_blank\" rel=\"noreferrer\">\n {t(\"ntm.find_plans_now.help_drawer.ship\")}\n </a>\n ),\n }}\n />\n </li>\n </ul>\n <MedicareGovAnchor urlKey=\"medigap\">\n {t(\"ntm.find_plans_now.help_drawer.learn_more_medigap\")}\n </MedicareGovAnchor>\n </>\n );\n};\n","import classNames from \"classnames\";\nimport type { FC, PropsWithChildren } from \"react\";\ntype PlanTypeSubHeaderProps = PropsWithChildren<{\n isSinglePage?: boolean;\n showDescription?: boolean;\n}>;\n\n/** subheader to use with PlanTypeStep */\nexport const PlanTypeSubHeader: FC<PlanTypeSubHeaderProps> = ({\n isSinglePage,\n showDescription,\n children,\n}) => {\n if (!showDescription) {\n return <span>{children}</span>;\n }\n\n return (\n <strong\n className={classNames({\n // makes it bold\n \".mct-c-coverage-selector-v2__plan-type-sub-heading-aria\":\n showDescription,\n \"ds-text-heading--lg\": isSinglePage,\n })}\n >\n {children}\n </strong>\n );\n};\n","import { CoverageSelectorCoverageType } from \"../../@types\";\nimport { MctPlanTypeCoverageSelector } from \"../../app/contexts/Analytics/types\";\n\nexport const choiceIdMap: Record<CoverageSelectorCoverageType, string> = {\n [CoverageSelectorCoverageType.MAPD]: \"what-coverage-mapd\",\n [CoverageSelectorCoverageType.PDP]: \"what-coverage-pdp\",\n [CoverageSelectorCoverageType.MedigapPolicy]: \"what-coverage-medigap\",\n [CoverageSelectorCoverageType.learnMore]: \"learn-more\",\n};\n\nexport const planTypeGa4EventMap: Record<\n CoverageSelectorCoverageType,\n MctPlanTypeCoverageSelector\n> = {\n [CoverageSelectorCoverageType.MAPD]: MctPlanTypeCoverageSelector.MAPD,\n [CoverageSelectorCoverageType.PDP]: MctPlanTypeCoverageSelector.PDP,\n [CoverageSelectorCoverageType.MedigapPolicy]:\n MctPlanTypeCoverageSelector.MedigapPolicy,\n [CoverageSelectorCoverageType.learnMore]:\n MctPlanTypeCoverageSelector.learnMore,\n};\n\n/**\n * in Phrase, these keys are used to differentiate plan types for description text.\n */\nexport const planTypePhraseMap = {\n [CoverageSelectorCoverageType.MAPD]: \"part_c\",\n [CoverageSelectorCoverageType.PDP]: \"part_d\",\n [CoverageSelectorCoverageType.MedigapPolicy]: \"medigap\",\n} as const;\n","import { Link } from \"react-router-dom\";\nimport { InfoCircleOutlineIcon } from \"@cmsgov/ds-medicare-gov\";\nimport { useTypedTranslate } from \"../../helpers/intlHooks\";\nimport { HelpDrawerWrapper } from \"../../components/HelpDrawerWrapper\";\nimport { AnalyticsActionType } from \"../../app/contexts/Analytics/types\";\nimport { routes } from \"../../app/routes\";\nimport { createSimpleHelpDrawerAnalytics } from \"../../helpers/simpleHelpDrawerAnalytics\";\nimport { useAppContext } from \"../../helpers/context-hooks/useAppContext\";\nimport type { FC } from \"react\";\n\nexport interface PlanTypeHelpDrawerProps {\n newToMedicare?: boolean;\n}\nexport const PlanTypeHelpDrawer: FC<PlanTypeHelpDrawerProps> = ({\n newToMedicare,\n}) => {\n const t = useTypedTranslate();\n const { dispatch } = useAppContext();\n const helpDrawerToggleText = t(\"coverage_selector.help_drawer.toggle\");\n const helpDrawerTitle = t(\"coverage_selector.help_drawer.title\");\n const needHelpText = newToMedicare\n ? t(\"coverage_selector.ntm.help_link_text\")\n : t(\"coverage_selector.help_drawer.help_link_text\");\n const needHelpLinkUrl = routes.coverageWizard.options;\n const helperDrawerAnalytics = createSimpleHelpDrawerAnalytics({\n toggleText: helpDrawerToggleText,\n heading: helpDrawerTitle,\n });\n return (\n <HelpDrawerWrapper\n toggleText={\n <>\n <span className=\"ds-u-margin-right--1\">{helpDrawerToggleText}</span>\n <InfoCircleOutlineIcon />\n </>\n }\n toggleClassName=\"mct-c-coverage-selector-v2__help-drawer-toggle\"\n mctAnalytics={helperDrawerAnalytics}\n drawerTitle={helpDrawerTitle}\n >\n <div>\n {/** // * Medicare Advantage Plan (Part C) */}\n <h4 className=\"ds-u-margin-bottom--0\">\n {t(\"coverage_selector.help_drawer.part_c.sub_heading\")}\n </h4>\n <p className=\"ds-u-margin-top--1\">\n {t(\"coverage_selector.help_drawer.part_c.body.2024\")}\n </p>\n {/** // * Medicare drug plan (Part D) */}\n <h4 className=\"ds-u-margin-bottom--0\">\n {t(\"coverage_selector.help_drawer.part_d.sub_heading\")}\n </h4>\n <p className=\"ds-u-margin-top--1\">\n {t(\"coverage_selector.help_drawer.part_d.body\")}\n </p>\n {/** // * Medigap policy */}\n <h4 className=\"ds-u-margin-bottom--0\">\n {t(\"coverage_selector.help_drawer.medigap.sub_heading\")}\n </h4>\n <p className=\"ds-u-margin-top--1\">\n {t(\"coverage_selector.help_drawer.medigap.body.2024\")}\n </p>\n <Link\n to={needHelpLinkUrl}\n onClick={() => {\n dispatch({\n type: AnalyticsActionType.SEND_INTERNAL_LINK_CLICKED_EVENT,\n settings: {\n linkText: needHelpText,\n linkUrl: needHelpLinkUrl,\n },\n });\n }}\n >\n {needHelpText}\n </Link>\n </div>\n </HelpDrawerWrapper>\n );\n};\n","import type { HTMLProps, FC } from \"react\";\nimport { getLinkWithLanguage } from \"../helpers/urlHelpers\";\nimport { useAppContext } from \"../helpers/context-hooks/useAppContext\";\nimport { mGovUrls } from \"../helpers/constants/medicareGovUrls\";\n\ntype MedicareGovAnchorProps = Omit<\n HTMLProps<HTMLAnchorElement>,\n \"href\" | \"target\" | \"rel\"\n> & {\n urlKey: keyof typeof mGovUrls;\n sameTab?: boolean;\n};\n\n/** anchor tag which can tag keys from `mGovUrls` and properly route them\n * @prop sameTab - set to `true` to open in the same tab, instead of a new tab.\n * @prop urlKey - a key for a path defined in `mGovUrls`\n * @see /src/helpers/CONSTANTS.ts\n * @example <MedicareGovAnchor urlKey=\"medigap\">\n {t(\"ntm.find_plans_now.help_drawer.learn_more_medigap\")}\n </MedicareGovAnchor> \n */\nexport const MedicareGovAnchor: FC<MedicareGovAnchorProps> = ({\n urlKey,\n sameTab,\n children,\n ...props\n}) => {\n const {\n state: { language },\n } = useAppContext();\n\n const target = sameTab ? undefined : \"_blank\";\n const rel = sameTab ? undefined : \"noopener noreferrer\";\n\n return (\n <a\n href={getLinkWithLanguage(mGovUrls[urlKey], language)}\n target={target}\n rel={rel}\n {...props}\n >\n {children}\n </a>\n );\n};\n","import { type ReactNode, useContext } from \"react\";\nimport { Tooltip } from \"@cmsgov/ds-medicare-gov\";\nimport type { TooltipProps } from \"@cmsgov/design-system/dist/react-components/types/Tooltip/Tooltip\";\nimport classNames from \"classnames\";\nimport { IntlContext } from \"../helpers/intlHooks\";\nimport messages from \"../translations/en-US.json\";\n\ninterface TooltipWithCloseProps extends TooltipProps {\n /**\n * `title` is the tooltip's content.\n * `headerText` is an optional heading for the tooltip's content. The required\n * `children` prop is used for the tooltip's trigger content (by default) and\n * also the tooltip heading, unless `headerText` is also set.\n * If `headerText` is passed an empty string, no header will be displayed\n */\n headerText?: ReactNode;\n}\n\n/**\n * Customized tooltip to match previous MPF implementation but leverage core DS\n * component functionality.\n * existing implementation\n * - Uses as a prefix for the tooltip trigger `aria-label`, in this order:\n * - the optional `ariaLabel` prop, which is a string\n * - the optional `headerText` prop, if it's a string\n * - `children`, if it's a string\n * - NB: The `title` prop is for dialog **content**\n *\n * For additional prop and usage documentation:\n * @see https://github.cms.gov/pages/MedicareGov/mgov-design-system/components/tooltip/\n * @see https://design.cms.gov/components/tooltip/\n */\nexport const TooltipWithClose = ({\n title,\n ariaLabel,\n headerText,\n children,\n className,\n activeClassName,\n maxWidth = \"400px\",\n ...remainingProps\n}: TooltipWithCloseProps) => {\n const fm = useContext(IntlContext).formatMessage;\n\n //Get a string prefix to describe the tooltip trigger to screen readers\n let ariaLabelPrefix = \"\";\n if (ariaLabel) {\n // ariaLabel` is optional and a `string`\n ariaLabelPrefix = `${ariaLabel}: `;\n } else if (headerText && typeof headerText === \"string\") {\n // `headerText` is optional and a `ReactNode`\n ariaLabelPrefix = `${headerText}: `;\n } else if (typeof children === \"string\") {\n // `children` is required and a `ReactNode`\n ariaLabelPrefix = `${children}: `;\n }\n\n const ariaLabelContent = fm\n ? `${ariaLabelPrefix}${fm({\n id: \"tooltip_trigger_aria_label\",\n })}`\n : `${ariaLabelPrefix}${messages.tooltip_trigger_aria_label}`;\n\n const toggleButtonClasses = \"ds-c-button ds-c-button--ghost\";\n\n return (\n <div\n className={classNames(\"Tooltip Tooltip--with-close\", {\n \"Tooltip--inline\": className?.includes(\"ds-c-tooltip__trigger-link\"),\n })}\n >\n <Tooltip\n title={\n <div className=\"Tooltip__body\" data-testid=\"Tooltip__body\">\n {title}\n </div>\n }\n contentHeading={\n headerText === \"\" ? (\n <span></span>\n ) : (\n <h2 className=\"ds-text-heading--lg ds-u-margin-bottom--0\">\n {headerText || children}\n </h2>\n )\n }\n closeButtonLabel={fm ? fm({ id: \"close\" }) : \"close\"}\n showCloseButton={true}\n dialog={true}\n className={classNames(\n className,\n toggleButtonClasses,\n \"Tooltip__trigger\"\n )}\n activeClassName={classNames(\n activeClassName,\n toggleButtonClasses,\n \"Tooltip__trigger--open\"\n )}\n ariaLabel={ariaLabelContent}\n placement=\"top-start\"\n maxWidth={maxWidth}\n {...remainingProps}\n >\n {children}\n </Tooltip>\n </div>\n );\n};\n","import { type Dispatch, useMemo } from \"react\";\nimport { useLoggedIn } from \"./loginHelpers\";\nimport {\n type Action,\n ActionType,\n type AppState,\n type County,\n CoverageSelectorCoverageType,\n type CoverageSelectorFormValues,\n type CoverageSelectorSelectedValues,\n type Pharmacy,\n type PharmacyType,\n PlanType,\n type PrescriptionDrug,\n type SharedCoverageSelectorAnalyticsValues,\n} from \"../@types\";\nimport { routes } from \"../app/routes\";\nimport { hasMailOrderPharmacy } from \"../app/store/appStoreHelpers\";\nimport { useAppContext } from \"./context-hooks/useAppContext\";\nimport {\n AnalyticsActionType,\n type AnalyticsActions,\n type AnalyticsButtonStyle,\n type AnalyticsButtonType,\n Ga4Event,\n Ga4EventType,\n} from \"../app/contexts/Analytics/types\";\nimport { planTypeGa4EventMap } from \"../components/CoverageSelector/constants\";\nimport { useIsBEDAPDown } from \"./beneficiaryInfoHelpers\";\nimport { useCounties } from \"./query-hooks/useCounties\";\n\nexport interface LiCoverageSelectorRoutingParams {\n pharmacies: Pharmacy[];\n prescriptions: PrescriptionDrug[];\n pharmacyType: PharmacyType;\n isBEDAPDown: boolean;\n}\n\nexport interface CoverageSelectorRoutingParams {\n isBEDAPDown: boolean;\n isLoggedIn: boolean;\n pharmacies: Pharmacy[];\n prescriptions: PrescriptionDrug[];\n pharmacyType: PharmacyType;\n zipcode?: string;\n}\n\n/**\n * Determines some of the possible next routes from the coverage selector,\n * based on whether they're LI or anonymous, the status of BEDAP, and the current\n * status of the bene's pharmacies and prescription drugs\n */\nexport const getNextRouteFromCoverageSelector = ({\n isBEDAPDown,\n isLoggedIn,\n pharmacies,\n prescriptions,\n pharmacyType,\n}: CoverageSelectorRoutingParams) => {\n const hasMailOrderPharmacies = hasMailOrderPharmacy({\n pharmacyType,\n } as AppState);\n const pharmacyCount = pharmacies.length + (hasMailOrderPharmacies ? 1 : 0);\n const drugsCount = prescriptions.length;\n const isMissingPharmsOrDrugs = pharmacyCount === 0 || drugsCount === 0;\n const baseRoutes = isLoggedIn ? routes.summary : routes;\n if (!isLoggedIn || isBEDAPDown) {\n return baseRoutes.lisQuestions;\n } else {\n return isMissingPharmsOrDrugs\n ? baseRoutes.drugSearchPreferences\n : baseRoutes.searchResults;\n }\n};\n\n/**\n * Provides a map of destination routes for a bene based on chosen coverage type\n */\nexport const getCoverageSelectorDestinationMap = ({\n isBEDAPDown,\n isLoggedIn,\n pharmacies,\n prescriptions,\n pharmacyType,\n zipcode,\n}: CoverageSelectorRoutingParams): Record<\n CoverageSelectorCoverageType,\n string | undefined\n> => {\n const nextRouteForMaOrPdp = getNextRouteFromCoverageSelector({\n isBEDAPDown,\n isLoggedIn,\n pharmacies,\n prescriptions,\n pharmacyType,\n });\n\n return {\n [CoverageSelectorCoverageType.MAPD]: nextRouteForMaOrPdp,\n [CoverageSelectorCoverageType.PDP]: nextRouteForMaOrPdp,\n [CoverageSelectorCoverageType.MedigapPolicy]: zipcode\n ? routes.medigap.plans\n : undefined,\n [CoverageSelectorCoverageType.learnMore]: routes.coverageWizard.options,\n };\n};\n\n/**\n * Hook that provides a map of destination routes for a bene based on chosen\n * coverage type\n */\nexport const useCoverageSelectorDestinationMap = () => {\n const {\n state: { pharmacies, pharmacyType, prescriptions, zipcode },\n } = useAppContext();\n\n const isBEDAPDown = useIsBEDAPDown();\n const isLoggedIn = useLoggedIn();\n const destinationMap = useMemo(\n () =>\n getCoverageSelectorDestinationMap({\n isBEDAPDown,\n isLoggedIn,\n pharmacies,\n pharmacyType,\n prescriptions,\n zipcode,\n }),\n [isBEDAPDown, isLoggedIn, pharmacies, pharmacyType, prescriptions, zipcode]\n );\n return destinationMap;\n};\n\n/**\n * Populate initial coverage selector form values\n */\nexport const getInitialFormValues = ({\n beneficiary,\n county,\n zipcode,\n}: {\n beneficiary: AppState[\"beneficiary\"];\n county: AppState[\"county\"];\n zipcode: AppState[\"zipcode\"];\n}) => ({\n zipcode: zipcode || beneficiary?.mailing_address.zipcode,\n fips: county?.fips || beneficiary?.mailing_address.fips_state_county || \"\",\n});\n\n/**\n * an easy way to grab initial values from state\n * either from a top level attribute or falling back to beneficiary for logged in users.\n */\nexport function useInitialFormValues() {\n const {\n state: { beneficiary, county, zipcode },\n } = useAppContext();\n const initialFormValues = getInitialFormValues({\n beneficiary,\n county,\n zipcode,\n });\n\n return {\n initialFormValues,\n };\n}\n\n/**\n * A wrapper around the `useCounties` query hook.\n *\n * Derives a `County` from `zipcode` and optionally `fips`\n * These values can be derived from `AppState` or passed in as part of the optional\n * parameter object\n *\n * Returns an object that also includes the error state from `useCounties`, if an\n * error occurred during the query (e.g., if no `zipcode` is found)\n */\nexport const useDefaultCounty = ({\n fips: fipsParam,\n zipcode: zipcodeParam,\n}: {\n fips?: string;\n zipcode?: string;\n} = {}): {\n county: County | undefined;\n errorFetchingCounties: boolean;\n} => {\n const {\n state: { fips, zipcode },\n } = useAppContext();\n const initialFips = fipsParam || fips;\n const initialZip = zipcodeParam || zipcode;\n const { counties, isError } = useCounties(initialZip);\n\n const defaultCounty = useMemo(() => {\n // returns a matching county if we have a fips in state.\n if (initialFips) {\n const foundCounty = counties.find(county => county.fips === initialFips);\n if (foundCounty) {\n return foundCounty;\n }\n }\n if (counties.length === 1) {\n // returns the only county if there is no other option\n return counties[0];\n }\n return;\n }, [counties, initialFips]);\n\n return useMemo(\n () => ({ county: defaultCounty, errorFetchingCounties: isError }),\n [defaultCounty, isError]\n );\n};\n\nconst planTypeMap: Record<CoverageSelectorCoverageType, PlanType | undefined> =\n {\n [CoverageSelectorCoverageType.MAPD]: PlanType.MAPD,\n [CoverageSelectorCoverageType.PDP]: PlanType.PDP,\n [CoverageSelectorCoverageType.MedigapPolicy]: undefined,\n [CoverageSelectorCoverageType.learnMore]: undefined,\n };\n\nexport const updateStates = (\n coverageSelectorValues: CoverageSelectorSelectedValues,\n dispatch: Dispatch<Action>\n): void => {\n dispatch({\n type: ActionType.UPDATE_YEAR,\n payload: coverageSelectorValues.coverageYear.toString(),\n });\n dispatch({\n type: ActionType.UPDATE_COUNTY,\n payload: coverageSelectorValues.county,\n });\n dispatch({\n type: ActionType.UPDATE_FIPS,\n payload: coverageSelectorValues.county?.fips,\n });\n dispatch({\n type: ActionType.UPDATE_ZIPCODE,\n payload: coverageSelectorValues.zipcode,\n });\n\n if (coverageSelectorValues.coverageType) {\n const planType = planTypeMap[coverageSelectorValues.coverageType];\n if (planType) {\n dispatch({\n type: ActionType.UPDATE_PLAN_TYPE,\n payload: planType,\n });\n }\n }\n};\n\ninterface SendCoverageSelectorAnalyticsArgs\n extends SharedCoverageSelectorAnalyticsValues {\n analyticsButton: {\n text: string;\n buttonStyle: AnalyticsButtonStyle;\n buttonType: AnalyticsButtonType;\n };\n currentFormValues: CoverageSelectorFormValues;\n dispatch: Dispatch<Action | AnalyticsActions>;\n linkUrl: string;\n}\n\nexport const sendCoverageSelectorAnalytics = ({\n analyticsButton,\n analyticsEventAction,\n currentFormValues,\n dispatch,\n linkUrl,\n}: SendCoverageSelectorAnalyticsArgs) => {\n if (currentFormValues.coverageType) {\n dispatch({\n type: AnalyticsActionType.SEND_BUTTON_ENGAGEMENT_EVENT,\n settings: {\n button: analyticsButton,\n linkUrl,\n },\n });\n dispatch({\n type: AnalyticsActionType.SEND_GA4_EVENT,\n settings: {\n event_name: Ga4Event.PLAN_FINDER_STARTED,\n event_type: Ga4EventType.UI_INTERACTION,\n link_text: analyticsButton.text,\n link_url: linkUrl,\n mct_plan_type: planTypeGa4EventMap[currentFormValues.coverageType],\n mct_plan_year: currentFormValues.coverageYear,\n text: analyticsButton.text,\n },\n });\n dispatch({\n type: AnalyticsActionType.SEND_TEALIUM_EVENT,\n settings: {\n event_action: analyticsEventAction || \"Coverage Selector - Plan Search\",\n event_label: planTypeGa4EventMap[currentFormValues.coverageType],\n },\n });\n }\n};\n","import { getCounties } from \"../../api\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { QueryKey, StaleTime } from \"./types\";\nimport { isValidZipcode } from \"../zipcodeHelpers\";\nimport { useMemo } from \"react\";\n\n/**\n * a hook to access counties based off of zipcode\n */\nexport const useCounties = (zipcode?: string) => {\n // * Constants\n const validZipcode = isValidZipcode(zipcode) ? zipcode : undefined;\n\n // * Queries\n const { isFetching, isError, data } = useQuery({\n queryKey: [QueryKey.Counties, validZipcode],\n queryFn: () => getCounties(validZipcode as string),\n enabled: !!validZipcode,\n staleTime: StaleTime.Infinite,\n // because an error is a \"valid\" response if a zip code does not exist, we do not retry on failures\n retry: 0,\n });\n\n const counties = useMemo(() => data || [], [data]);\n\n return {\n /** an array of counties, based off of a zipcode */\n counties,\n /** if we are fetching data from the query */\n isFetching,\n /** if we hit an error from the query (likely a 404 for non-existent zipcode) */\n isError,\n };\n};\n"],"names":["ariaLetterMap","c","d","AriaLetter","_ref","children","className","ariaLabel","toLowerCase","_jsx","_Fragment","baseBadgeClassName","IconPlacements","ChildrenWithIcon","svgIcon","iconPlacement","idSuffix","iconClassName","classNames","iconRight","right","newId","props","id","undefined","icon","cloneElement","width","height","_jsxs","BadgeWithIcon","_ref2","left","variation","theme","combinedClassNames","uniqueId","OriginalBadge","ContinueWithoutLoggingInIcon","SvgIcon","title","viewBox","CoverageSelectorAlert","errorState","t","useTranslate","planType","zipcode","counties","Alert","heading","PlanTypeDescription","coverageType","newToMedicare","showDrawer","helpDrawerOpen","setActiveTooltip","useTypedTranslate","phraseSelector2","phraseSelector3","planTypePhraseMap","initialPhraseDescriptionKey","phraseWarningKey","phraseDescriptionKey","toggleTextKey","FormattedMessage","values","originalMedicare","TooltipWithClose","onOpen","sendTooltipEvent","text","component","when","HelpDrawerToggle","sendHelpDrawerOpenAnalyticsEvent","InfoCircleOutlineIcon","and","or","PlanTypeStep","showDescription","planTypeErrorState","onPlanTypeChange","isSinglePage","selectedPlanType","dispatch","useAppContext","needHelpText","needHelpLinkUrl","routes","coverageWizard","options","showFindPlansNowHelpDrawer","setShowFindPlansNowHelpDrawer","useState","activeTooltip","showErrorOnTop","toggleFindPlansNowHelpDrawer","x","getChoiceContainerClassName","ChoiceList","choices","CoverageSelectorCoverageType","MAPD","label","choiceIdMap","PlanTypeSubHeader","message","value","checked","PDP","MedigapPolicy","errorMessage","errorMessageClassName","errorPlacement","name","onChange","e","currentTarget","type","Link","to","onClick","AnalyticsActionType","SEND_INTERNAL_LINK_CLICKED_EVENT","settings","linkText","linkUrl","PlanTypeHelpDrawer","MctHelpDrawer","closeDrawer","large","drawerTitle","MedigapHelpDrawerContents","PlanTypeStepActions","findPlansButtonText","handleGoBack","goBackText","Button","SEND_BUTTON_ENGAGEMENT_EVENT","button","buttonStyle","AnalyticsButtonStyle","TRANSPARENT","buttonType","AnalyticsButtonType","BUTTON","ZipcodeAndCoverageYearStep","countiesErrorState","currentFips","initialFips","onCountyChange","onCoverageYearChange","onZipcodeChange","selectedCoverageYear","zipcodeErrorState","mctCurrentPlanYear","useCurrentPlanYear","isOpenEnrollmentNextYearOnly","isPublicPreview","isOpenEnrollment","useYearPart","isFetching","useCounties","nextPlanYear","showCoverageYearSelector","Choice","target","TextField","labelClassName","error","defaultValue","InlineError","length","map","county","fips","defaultChecked","state","JSON","stringify","ZipcodeAndCoverageYearStepActions","handleCancel","isInModal","onClickContinue","continueButtonText","cancelButtonText","PRIMARY","ActiveStep","CoverageSelectorV2","_currentFormValues$co2","showContinueWithoutLoggingIn","onFindPlans","analyticsEventAction","skipZipcode","defaultFormValues","history","useHistory","initialFormValues","useInitialFormValues","destinationMap","useCoverageSelectorDestinationMap","flags","useFlags","getYearPartInfo","showZipcodeErrors","setShowZipcodeErrors","showCoverageTypeErrors","setShowCoverageTypeErrors","currentFormValues","setCurrentFormValues","coverageYear","activeStep","setActiveStep","PLAN_TYPE","ZIPCODE","topOfPageRef","useRef","url","window","location","href","split","destination","search","analyticsButton","useMemo","SUBMIT","hasCounty","hasCoverageType","defaultCounty","errorFetchingCounties","useDefaultCounty","CoverageSelectorErrorType","API","_currentFormValues$zi","isValidZipcode","MISSING","INVALID","triggerErrors","useCallback","zipcodeInput","ActionType","UPDATE_ZIPCODE","payload","_currentFormValues$co","preventDefault","UPDATE_FIPS","navigateToPlans","push","handleFindPlans","isCoverageSelectorSelectedValues","updateStates","sendCoverageSelectorAnalytics","goBackToZipCode","useEffect","ref","onSubmit","current","scrollTo","top","offsetTop","behavior","parse","selectedZipcode","ship","linkToSHIPHelp","rel","MedicareGovAnchor","urlKey","learnMore","planTypeGa4EventMap","MctPlanTypeCoverageSelector","helpDrawerToggleText","helpDrawerTitle","helperDrawerAnalytics","createSimpleHelpDrawerAnalytics","toggleText","HelpDrawerWrapper","toggleClassName","mctAnalytics","sameTab","language","getLinkWithLanguage","mGovUrls","headerText","activeClassName","maxWidth","remainingProps","fm","useContext","IntlContext","formatMessage","ariaLabelPrefix","ariaLabelContent","messages","toggleButtonClasses","includes","Tooltip","contentHeading","closeButtonLabel","showCloseButton","dialog","placement","getCoverageSelectorDestinationMap","isBEDAPDown","isLoggedIn","pharmacies","prescriptions","pharmacyType","nextRouteForMaOrPdp","hasMailOrderPharmacies","hasMailOrderPharmacy","pharmacyCount","drugsCount","isMissingPharmsOrDrugs","baseRoutes","summary","lisQuestions","drugSearchPreferences","searchResults","getNextRouteFromCoverageSelector","medigap","plans","useIsBEDAPDown","useLoggedIn","beneficiary","_ref3","mailing_address","fips_state_county","getInitialFormValues","fipsParam","zipcodeParam","arguments","initialZip","isError","foundCounty","find","planTypeMap","PlanType","coverageSelectorValues","_coverageSelectorValu","UPDATE_YEAR","toString","UPDATE_COUNTY","UPDATE_PLAN_TYPE","_ref4","SEND_GA4_EVENT","event_name","Ga4Event","PLAN_FINDER_STARTED","event_type","Ga4EventType","UI_INTERACTION","link_text","link_url","mct_plan_type","mct_plan_year","SEND_TEALIUM_EVENT","event_action","event_label","validZipcode","data","useQuery","queryKey","QueryKey","Counties","queryFn","getCounties","enabled","staleTime","StaleTime","Infinite","retry"],"sourceRoot":""}