{"version":3,"file":"static/chunks/pages/[form]/your-donation-448154bd7d05575b.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Loader/styles.js","webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Loader/index.js","webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Select/styles.js","webpack://_N_E/./node_modules/@cruk/cruk-react-components/lib/es/src/components/Select/index.js","webpack://_N_E/./components/ButtonGroup.tsx","webpack://_N_E/./components/ErrorBox.tsx","webpack://_N_E/./components/FieldErrorMessage.tsx","webpack://_N_E/./components/FocusError.tsx","webpack://_N_E/./components/FormFields.tsx","webpack://_N_E/./components/FormGroup.tsx","webpack://_N_E/./components/GetSelectOptions/index.tsx","webpack://_N_E/./components/GetSelectOptions/GetSelectOptions.tsx","webpack://_N_E/./data/researchAreas.ts","webpack://_N_E/./helpers/useOptimizelyTrack.ts","webpack://_N_E/./components/OptimizelyExperiment.tsx","webpack://_N_E/./data/donationFrequencies.ts","webpack://_N_E/./components/single-donation/AmountSelection.tsx","webpack://_N_E/./components/single-donation/DonationType.tsx","webpack://_N_E/./data/motivations.ts","webpack://_N_E/./components/single-donation/DonationMotivation.tsx","webpack://_N_E/./components/single-donation/DonationDestination.tsx","webpack://_N_E/./components/OptimizelyLoader.tsx","webpack://_N_E/./components/single-donation/forms/DonationForm.tsx","webpack://_N_E/./pages/[form]/your-donation.tsx","webpack://_N_E/?9b22","webpack://_N_E/./node_modules/next/router.js"],"sourcesContent":["import{__makeTemplateObject as n}from\"../../../node_modules/tslib/tslib.es6.js\";import o,{keyframes as t}from\"styled-components\";var i,a,e,r=t(i||(i=n([\"\\n 0%,\\n 80%,\\n 100% {\\n transform: scale(0)\\n }\\n 40% {\\n transform: scale(1)\\n }\\n\"],[\"\\n 0%,\\n 80%,\\n 100% {\\n transform: scale(0)\\n }\\n 40% {\\n transform: scale(1)\\n }\\n\"]))),l=o.p(a||(a=n([\"\\n position: absolute;\\n left: -10000px;\\n top: auto;\\n width: 1px;\\n height: 1px;\\n overflow: hidden;\\n\"],[\"\\n position: absolute;\\n left: -10000px;\\n top: auto;\\n width: 1px;\\n height: 1px;\\n overflow: hidden;\\n\"]))),s=o.div(e||(e=n([\"\\n width: 100%;\\n text-align: center;\\n margin-top: \",\";\\n\\n span {\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n margin: 0 2px;\\n background-color: \",\";\\n border-radius: 100%;\\n animation: \",\" 1.2s infinite ease-in-out both;\\n }\\n\\n span:nth-child(1) {\\n animation-delay: -0.32s;\\n -webkit-animation-delay: -0.32s;\\n }\\n\\n span:nth-child(2) {\\n background-color: \",\";\\n animation-delay: -0.16s;\\n }\\n\\n span:nth-child(3) {\\n background-color: \",\";\\n }\\n\"],[\"\\n width: 100%;\\n text-align: center;\\n margin-top: \",\";\\n\\n span {\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n margin: 0 2px;\\n background-color: \",\";\\n border-radius: 100%;\\n animation: \",\" 1.2s infinite ease-in-out both;\\n }\\n\\n span:nth-child(1) {\\n animation-delay: -0.32s;\\n -webkit-animation-delay: -0.32s;\\n }\\n\\n span:nth-child(2) {\\n background-color: \",\";\\n animation-delay: -0.16s;\\n }\\n\\n span:nth-child(3) {\\n background-color: \",\";\\n }\\n\"])),(function(n){return n.theme.spacing.s}),(function(n){return n.theme.colors.loaderColor1}),r,(function(n){return n.theme.colors.loaderColor2}),(function(n){return n.theme.colors.loaderColor3}));export{l as ScreenReaderOnly,s as Spinner};\n//# sourceMappingURL=styles.js.map\n","import{__assign as e}from\"../../../node_modules/tslib/tslib.es6.js\";import t from\"react\";import{useTheme as r,ThemeProvider as l}from\"styled-components\";import n from\"../../themes/cruk.js\";import{ScreenReaderOnly as m,Spinner as a}from\"./styles.js\";var o=function(){var o=r(),s=e(e({},n),o);return t.createElement(l,{theme:s},t.createElement(t.Fragment,null,t.createElement(m,{role:\"alert\"},\"Loading\"),t.createElement(a,null,t.createElement(\"span\",null),t.createElement(\"span\",null),t.createElement(\"span\",null))))};export{o as default};\n//# sourceMappingURL=index.js.map\n","import{__makeTemplateObject as n}from\"../../../node_modules/tslib/tslib.es6.js\";import o,{css as r}from\"styled-components\";var e,t,c=o.select(t||(t=n([\"\\n appearance: none;\\n background: linear-gradient(\\n 45deg,\\n \",\" 50%,\\n \",\" 50%\\n ),\\n linear-gradient(\\n 135deg,\\n \",\" 50%,\\n \",\" 50%\\n );\\n background-color: \",\";\\n background-position: calc(100% - 16px) 50%, calc(100% - 10px) 50%;\\n background-size: 6px 6px;\\n background-repeat: no-repeat;\\n border: \",\";\\n color: \",\";\\n display: block;\\n font-size: \",\";\\n min-height: \",\";\\n padding: \",\";\\n width: 100%;\\n transition: border-color 150ms linear;\\n &:disabled {\\n border-color: \",\";\\n color: \",\";\\n }\\n\\n \",\";\\n\"],[\"\\n appearance: none;\\n background: linear-gradient(\\n 45deg,\\n \",\" 50%,\\n \",\" 50%\\n ),\\n linear-gradient(\\n 135deg,\\n \",\" 50%,\\n \",\" 50%\\n );\\n background-color: \",\";\\n background-position: calc(100% - 16px) 50%, calc(100% - 10px) 50%;\\n background-size: 6px 6px;\\n background-repeat: no-repeat;\\n border: \",\";\\n color: \",\";\\n display: block;\\n font-size: \",\";\\n min-height: \",\";\\n padding: \",\";\\n width: 100%;\\n transition: border-color 150ms linear;\\n &:disabled {\\n border-color: \",\";\\n color: \",\";\\n }\\n\\n \",\";\\n\"])),(function(n){return n.theme.colors.backgroundLight}),(function(n){return n.theme.colors.selectBackground}),(function(n){return n.theme.colors.selectBackground}),(function(n){return n.theme.colors.backgroundLight}),(function(n){return n.theme.colors.backgroundLight}),(function(n){var o=n.theme,r=n.hasError,e=n.errorMessage;return\"solid \".concat(o.utilities.inputBorderWidth,\" \").concat(r||e?o.colors.textError:o.colors.textInputBorder)}),(function(n){return n.theme.colors.textDark}),(function(n){return n.theme.fontSizes.m}),\"3rem\",(function(n){var o=n.theme;return\"calc( (\".concat(\"3rem\",\" - ( \").concat(o.utilities.inputBorderWidth,\" * 2) - \").concat(o.typography.lineHeight,\" ) / 2) \").concat(o.spacing.m,\" calc( (\").concat(\"3rem\",\" - ( \").concat(o.utilities.inputBorderWidth,\" * 2) - \").concat(o.typography.lineHeight,\" ) / 2) \").concat(o.spacing.xs)}),(function(n){return n.theme.colors.disabled}),(function(n){return n.theme.colors.disabled}),(function(o){var t=o.theme;return t.utilities.useDefaultFocusRect?null:r(e||(e=n([\"\\n &:focus {\\n outline: 0;\\n border-color: \",\";\\n }\\n \"],[\"\\n &:focus {\\n outline: 0;\\n border-color: \",\";\\n }\\n \"])),t.colors.tertiary)}));export{c as StyledSelect,c as default};\n//# sourceMappingURL=styles.js.map\n","import{__rest as r,__assign as e}from\"../../../node_modules/tslib/tslib.es6.js\";import i,{forwardRef as t}from\"react\";import{useTheme as o}from\"styled-components\";import a from\"../../themes/cruk.js\";import{LabelWrapper as d}from\"../LabelWrapper/index.js\";import s from\"../ErrorText/index.js\";import m from\"./styles.js\";var n=t((function(t,n){var l=t.errorMessage,c=t.hasError,p=t.required,u=t.label,b=t.hintText,f=t.hideRequiredInLabel,h=r(t,[\"errorMessage\",\"hasError\",\"required\",\"label\",\"hintText\",\"hideRequiredInLabel\"]),x=o(),E=e(e({},a),x);return i.createElement(d,{label:u,hintText:b,required:!f&&p||!1},i.createElement(m,e({},h,{ref:n,theme:E,required:p,\"aria-invalid\":c||!!l||!1,\"aria-describedby\":h.id&&l?\"\".concat(h.id,\"-error\"):void 0,hasError:c||!!l||!1})),!!l&&i.createElement(s,{marginTop:\"xxs\",id:h.id?\"\".concat(h.id,\"-error\"):void 0},l))}));export{n as default};\n//# sourceMappingURL=index.js.map\n","import React, { PropsWithChildren, ReactNode, ReactElement } from \"react\";\nimport styled from \"styled-components\";\n\nconst ButtonGroupStyled = styled.div`\n > * {\n display: block !important;\n margin: 0 auto;\n margin-bottom: ${({ theme }) => theme.spacing.xs};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n display: inline-block !important;\n margin-bottom: 0;\n margin-right: ${({ theme }) => theme.spacing.s};\n }\n }\n`;\n\nconst ButtonGroup = ({\n children,\n}: PropsWithChildren<{ children?: ReactNode }>): ReactElement => (\n {children}\n);\n\nexport default ButtonGroup;\n","import { Box } from \"@cruk/cruk-react-components\";\nimport styled from \"styled-components\";\n\nconst ErrorBox = styled(Box)`\n border: 4px solid ${({ theme }) => theme.tokenColors.red};\n padding: 0 ${({ theme }) => theme.spacing.s};\n font-weight: bold;\n a {\n text-decoration: none;\n &:hover {\n text-decoration: underline;\n }\n }\n`;\n\nexport default ErrorBox;\n","import React, { PropsWithChildren, ReactElement, ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\nconst Error = styled.p`\n display: block;\n width: 100%;\n color: ${({ theme }) => theme.colors.textError};\n margin: ${({ theme }) => theme.spacing.xxs} 0 0;\n font-weight: bold;\n\n &:empty {\n margin: 0;\n }\n`;\n\nconst FieldErrorMessage = ({\n children,\n}: PropsWithChildren<{ children?: ReactNode }>): ReactElement => (\n {children}\n);\n\nexport default FieldErrorMessage;\n","import { useEffect, ReactElement } from \"react\";\nimport { datadogRum } from \"@datadog/browser-rum\";\nimport useDataLayer from \"../helpers/useDataLayer\";\nimport { FormPropsType } from \"../helpers/types/shared\";\n\nconst FocusError = ({\n errors,\n touched,\n isSubmitting,\n isValidating,\n}: FormPropsType): ReactElement | null => {\n const { pushError } = useDataLayer();\n\n useEffect(() => {\n const sendError = (fieldName: string, fieldError: string) => {\n pushError(\"\", \"validation\", `${fieldName}: ${fieldError}`);\n };\n\n const errorFields = Object.keys(errors);\n errorFields.forEach((field) => {\n if (typeof errors[field] !== \"object\" && touched[field]) {\n sendError(field, errors[field]);\n }\n });\n }, [errors, touched]);\n\n useEffect(() => {\n if (isSubmitting && !isValidating) {\n const keys = Object.keys(errors);\n if (keys.length > 0 && isSubmitting && !isValidating) {\n pushError(\"\", \"navigation\", JSON.stringify(errors));\n datadogRum.addError(\"Navigation error\", { errors });\n\n const focusElements = keys\n .map((key) => ({\n fieldset: document.querySelector(\n `fieldset[aria-describedby=\"${key}-error\"]`\n ),\n key,\n }))\n .map(({ fieldset, key }) =>\n fieldset !== null\n ? fieldset\n : document.querySelector(`[name=\"${key}\"]`)\n )\n .filter(\n (element) =>\n element !== null &&\n element.offsetWidth > 0 &&\n element.offsetHeight > 0\n )\n .map((element) => ({\n errorElement: element,\n labelElement: document.querySelector(\n `label[for=\"${element.id}\"]`\n ),\n }))\n .map(({ errorElement, labelElement }) =>\n labelElement !== null &&\n labelElement.offsetWidth > 0 &&\n labelElement.offsetHeight > 0\n ? { element: labelElement, isField: false }\n : { element: errorElement, isField: true }\n );\n\n if (focusElements.length > 0) {\n const firstError = focusElements[0];\n if (firstError.isField) {\n firstError.element.focus({ preventScroll: true });\n }\n firstError.element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }\n }\n }\n }, [errors, isSubmitting, isValidating]);\n\n return null;\n};\n\nexport default FocusError;\n","import React, { PropsWithChildren, ReactNode, ReactElement } from \"react\";\nimport styled from \"styled-components\";\n\nconst FormFieldsStyled = styled.div`\n margin: 0 auto;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n width: 70%;\n }\n`;\n\nconst FormFields = ({\n children,\n}: PropsWithChildren<{ children?: ReactNode }>): ReactElement => (\n {children}\n);\n\nexport default FormFields;\n","import React, { FormHTMLAttributes, ReactElement } from \"react\";\nimport styled from \"styled-components\";\nimport { ThemeType } from \"@cruk/cruk-react-components\";\n\ntype FormGroupTypes = FormHTMLAttributes> & {\n topborder?: boolean;\n noborder?: boolean;\n children: ReactElement;\n};\n\ntype FormGroupBorderTypes = FormGroupTypes & {\n theme: ThemeType;\n};\n\nconst FormGroupStyled = styled.div`\n max-width: ${({ theme }) => theme.utilities.contentMaxWidth};\n margin: 0 auto;\n padding: ${({ theme }) => theme.spacing.m} 0;\n border-bottom: 0;\n border-bottom: ${({ noborder, theme }: FormGroupBorderTypes) =>\n `${noborder ? \"0\" : \"1px\"} solid ${theme.tokenColors.grey_900} `};\n border-top: ${({ topborder, theme }: FormGroupBorderTypes) =>\n `${topborder ? \"1px\" : \"0\"} solid ${theme.tokenColors.grey_900} `};\n`;\n\nconst FormGroup = ({\n noborder,\n topborder,\n children,\n}: FormGroupTypes): ReactElement => (\n \n {children}\n \n);\n\nexport default FormGroup;\n","import GetSelectOptions from \"./GetSelectOptions\";\n\nexport default GetSelectOptions;\n","import { SelectOptionsType } from \"../../helpers/types/shared\";\n\ninterface SelectOptionsProps {\n options: Array;\n defaultSelectOption?: string;\n}\n\nconst GetSelectOptions = ({\n options,\n defaultSelectOption,\n}: SelectOptionsProps): React.ReactElement =>\n options ? (\n <>\n \n {options.map((option: SelectOptionsType) => (\n \n {option.label}\n \n ))}\n \n ) : null;\n\nexport default GetSelectOptions;\n","const researchAreas = [\n {\n label: \"Bowel cancer\",\n value: \"RES005\",\n },\n {\n label: \"Brain tumours\",\n value: \"RES038\",\n },\n {\n label: \"Breast cancer\",\n value: \"RES003\",\n },\n {\n label: \"Children's cancers\",\n value: \"RES814\",\n },\n {\n label: \"Developing better treatments\",\n value: \"RES828\",\n },\n {\n label: \"Diagnosing cancer early\",\n value: \"RES769\",\n },\n {\n label: \"Leukaemia\",\n value: \"RES009\",\n },\n {\n label: \"Lung cancer\",\n value: \"RES004\",\n },\n {\n label: \"Lymphoma\",\n value: \"RES010\",\n },\n {\n label: \"Oesophageal cancer\",\n value: \"RES085\",\n },\n {\n label: \"Ovarian cancer\",\n value: \"RES008\",\n },\n {\n label: \"Pancreatic cancer\",\n value: \"RES011\",\n },\n {\n label: \"Preventing cancer\",\n value: \"RES813\",\n },\n {\n label: \"Prostate cancer\",\n value: \"RES006\",\n },\n {\n label: \"Rare cancers\",\n value: \"RES829\",\n },\n {\n label: \"Skin cancer\",\n value: \"RES490\",\n },\n {\n label: \"The cancer type or area of research isn't listed\",\n value: \"Unlisted\",\n },\n] as const;\n\nexport type RestrictionCode = Exclude<\n typeof researchAreas[number][\"value\"],\n \"Unlisted\"\n>;\n\nexport default [...researchAreas];\n","import type { Client, OptimizelyUserContext } from \"@optimizely/optimizely-sdk\";\nimport { useEffect, useState } from \"react\";\n\ntype Props = {\n client: Client;\n user: OptimizelyUserContext;\n event: string;\n donationAmount?: string;\n calculateRevenue?: (amount: number) => number;\n};\n\nconst useOptimizelyTrack = ({\n client,\n user,\n event,\n donationAmount,\n calculateRevenue,\n}: Props) => {\n const [hasTracked, setHasTracked] = useState(false);\n\n const optimizelyTracking = () => {\n if (\n typeof calculateRevenue !== \"undefined\" &&\n typeof donationAmount !== \"undefined\"\n ) {\n user?.trackEvent(event, {\n revenue: calculateRevenue(Number(donationAmount)),\n });\n }\n user?.trackEvent(event);\n };\n\n useEffect(() => {\n if (client && !hasTracked) {\n optimizelyTracking();\n setHasTracked(true);\n }\n }, [client]);\n};\n\nexport default useOptimizelyTrack;\n","import { useContext, useState, useEffect } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { datadogRum } from \"@datadog/browser-rum\";\nimport type { OptimizelyDecision } from \"@optimizely/optimizely-sdk\";\nimport { OptimizelyContext } from \"../contexts/OptimizelyContext\";\nimport type { Option } from \"../helpers/types/shared\";\n\ntype OptimizelyExperimentProps = {\n experiment: string;\n children: (variation: string) => ReactNode;\n defaultComponent: ReactNode;\n render: ReactNode;\n childrenPositionOnVariant: {\n [variant: string]: \"start\" | \"end\";\n };\n};\n\nconst OptimizelyExperiment = ({\n experiment,\n children,\n defaultComponent,\n render,\n childrenPositionOnVariant,\n}: OptimizelyExperimentProps) => {\n const [optimizelyContext] = useContext(OptimizelyContext);\n const { optimizelyUserContext: user, optimizelyAudience } = optimizelyContext;\n const [decision, setDecision] = useState>(null);\n const enabled = decision?.enabled;\n const [variation, setVariation] = useState(\"\");\n const childrenPosition = childrenPositionOnVariant[variation];\n\n useEffect(() => {\n if (user) {\n const expDecision = user.decide(experiment);\n setDecision(expDecision);\n\n // TODO This is a hack that needs to be reworked properly in useOptimizelyTrack\n if (experiment === \"your_donation_condensed_amount_view_2\") {\n user.trackEvent(\"start_regular_donation\");\n }\n }\n }, [!!user, optimizelyAudience !== user?.getAttributes().audience]);\n\n useEffect(() => {\n if (decision && enabled) {\n setVariation(decision.variationKey);\n\n type Experiment = {\n experiment: string;\n variation: string;\n };\n\n const newExperiment: Experiment = {\n experiment,\n variation: decision.variationKey,\n };\n const experiments =\n (datadogRum.getUser().experiments as Array) ?? [];\n const maybeDuplicateIndex = experiments.findIndex(\n (exp) => exp.experiment === newExperiment.experiment\n );\n\n if (maybeDuplicateIndex >= 0) {\n experiments[maybeDuplicateIndex].variation = newExperiment.variation;\n } else {\n experiments.push(newExperiment);\n }\n\n datadogRum.setUserProperty(\"experiments\", experiments);\n } else {\n setVariation(\"default\");\n }\n }, [decision]);\n\n return (\n <>\n {childrenPosition === \"start\" &&\n (enabled ? children(variation) : defaultComponent)}\n {render}\n {childrenPosition === \"end\" &&\n (enabled ? children(variation) : defaultComponent)}\n \n );\n};\n\nexport default OptimizelyExperiment;\n","const donationFrequencies = [\"Monthly\", \"Quarterly\", \"Annually\"];\n\nexport default donationFrequencies;\n","import React, {\n HTMLAttributes,\n useContext,\n useEffect,\n useState,\n ReactElement,\n} from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { Field, FieldProps } from \"formik\";\nimport {\n Box,\n Button,\n Link,\n Heading,\n ThemeType,\n TextField,\n} from \"@cruk/cruk-react-components\";\n// CONTEXT\nimport FormNameContext from \"../../contexts/FormNameContext\";\nimport DonationContext from \"../../contexts/DonationContext\";\nimport ThemeNameContext from \"../../contexts/ThemeNameContext\";\nimport VersionsContext from \"../../contexts/VersionsContext\";\nimport { OptimizelyContext } from \"../../contexts/OptimizelyContext\";\n// CONFIG\nimport { getFormAdmin, getFormComponents } from \"../../configs/single-donation\";\n// HELPERS\nimport { FormPropsType } from \"../../helpers/types/shared\";\nimport useDataLayer from \"../../helpers/useDataLayer\";\nimport { getValidFormVersions } from \"../../helpers/functions/single-donation\";\n// COMPONENTS\nimport FormGroup from \"../FormGroup\";\nimport FormFields from \"../FormFields\";\nimport FieldErrorMessage from \"../FieldErrorMessage\";\nimport OptimizelyExperiment from \"../OptimizelyExperiment\";\n// DATA\nimport donationFrequencies from \"../../data/donationFrequencies\";\n// STYLES\nimport { RequiredParagraph } from \"../styles\";\nimport { formatNumberToCurrencyString } from \"../../helpers/functions/shared\";\n\ntype AmountLabelProps = HTMLAttributes & {\n formTheme: string;\n theme?: ThemeType;\n};\n\nconst Fields = styled.div`\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n display: flex;\n padding-top: 0.5rem;\n }\n`;\n\nconst RadioButtonGroup = styled.div`\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n display: flex;\n flex-grow: 1;\n }\n\n > div {\n position: relative;\n display: block;\n padding: 0 0 ${({ theme }) => theme.spacing.s};\n margin: 0;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n flex-grow: 1;\n display: inline-block;\n margin: 0 ${({ theme }) => theme.spacing.s} 0 0;\n padding: 0;\n }\n }\n\n label {\n display: block;\n cursor: pointer;\n height: 48px;\n font-family: ${({ theme }) => theme.typography.fontFamilyBase};\n font-size: 1.125rem;\n color: ${({ theme }) => theme.colors.primary};\n font-weight: normal;\n text-align: center;\n padding: 0.5rem 2rem;\n margin: 0;\n border-style: solid;\n border-width: ${({ theme }) => theme.button.buttonBorderThickness};\n border-color: ${({ theme }) => theme.colors.buttonPrimaryBorder};\n\n ${({ theme, formTheme }: AmountLabelProps) =>\n (formTheme === \"SU2C\" &&\n css`\n border-radius: ${theme.button.borderRadius};\n border-color: ${theme.colors.primary};\n font-weight: bold;\n `) ||\n css`\n border-color: ${theme.tokenColors.grey_200};\n background-color: ${theme.tokenColors.grey_200};\n `}\n }\n\n input {\n position: absolute;\n cursor: pointer;\n left: 0;\n top: 0;\n width: 100%;\n margin: 0;\n zoom: 1;\n opacity: 0;\n z-index: 1;\n\n &:focus,\n &:hover,\n &:checked {\n + label {\n background-color: ${({ theme }) => theme.colors.primary};\n border-color: ${({ theme }) => theme.colors.primary};\n color: ${({ theme }) => theme.colors.textLight};\n }\n }\n }\n`;\n\nconst OtherAmountDiv = styled.div<{ extraTopSpacing: boolean }>`\n position: relative;\n margin-top: ${({ theme, extraTopSpacing }) =>\n extraTopSpacing ? theme.spacing.m : theme.spacing.s};\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n margin-top: ${({ theme, extraTopSpacing }) =>\n extraTopSpacing ? theme.spacing.xs : theme.spacing.none};\n }\n\n label {\n > span:first-of-type {\n position: absolute;\n top: -${({ theme }) => theme.spacing.s};\n margin-bottom: ${({ theme }) => theme.spacing.none};\n }\n }\n\n .textField__icon {\n position: absolute;\n bottom: 12px;\n left: 15px;\n z-index: 3;\n font-weight: ${({ theme }) => theme.typography.fontWeightHeavy};\n }\n`;\n\nconst TextFieldWrapper = styled.span`\n position: relative;\n display: block;\n`;\n\n// Optimizely experiment styles\nconst CondensedAmountSection = styled.div`\n margin: 0 auto;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n width: 70%;\n }\n`;\n\nconst CondensedViewIcons = styled.div`\n display: flex;\n justify-content: space-between;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n line-height: 1.75em;\n }\n`;\n\nconst CondensedViewContainer = styled.div`\n border: 2px solid ${({ theme }) => theme.colors.secondary};\n padding: ${({ theme }) => theme.spacing.xs};\n`;\n\nconst CondensedViewButton = styled(Button)`\n font-family: ${({ theme }) => theme.typography.fontFamilyBase};\n font-weight: bold;\n text-decoration: underline;\n min-height: 0;\n`;\n\nconst CondensedViewLink = styled(Link)`\n text-decoration: underline;\n\n &:hover,\n &:focus {\n text-decoration: underline;\n }\n\n svg {\n display: none;\n }\n`;\n\nconst CalendarIcon = styled.img`\n width: 24px;\n vertical-align: middle;\n margin-right: 0.5rem;\n margin-top: -4px;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n margin-top: -7px;\n width: 30px;\n }\n`;\n\nconst DDLogo = styled.img`\n width: 74px;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n width: 86px;\n }\n`;\n\nconst updateCheckedAmount = (\n nudges: Array,\n radioAmount: string | number,\n handler: () => void\n) => {\n const amount =\n typeof radioAmount === \"string\" ? parseInt(radioAmount, 10) : radioAmount;\n\n if (!Number.isNaN(amount) && !nudges?.includes(amount)) {\n handler();\n }\n};\nconst validateAmount = (amount: string, frequency: string) => {\n let max = 0;\n if (frequency === \"monthly\") {\n max = 850;\n } else if (frequency === \"quarterly\") {\n max = 2500;\n } else if (frequency === \"annually\") {\n max = 10000;\n } else {\n max = 100000;\n }\n const isAmountValid = !!(Number(amount) >= 2 && Number(amount) <= max);\n return isAmountValid;\n};\n\ntype AmountSelectionProps = FormPropsType & {\n canExperiment?: boolean;\n};\n\nconst AmountSelection = ({\n values,\n errors,\n handleBlur,\n handleChange,\n touched,\n setFieldValue,\n canExperiment = false,\n}: AmountSelectionProps): ReactElement => {\n const { donationData, setDonationData } = useContext(DonationContext);\n const { formVersion } = useContext(VersionsContext);\n const formName = useContext(FormNameContext);\n const formTheme = useContext(ThemeNameContext);\n const [checkedAmount, setCheckedAmount] = useState(\n values.donationAmount.amountRadioGroup\n ? values.donationAmount.amountRadioGroup\n : \"\"\n );\n const [checkedfrequency, setCheckedfrequency] = useState(\n values.frequency ? values.frequency : \"\"\n );\n const { pushError } = useDataLayer();\n const formAdmin = getFormAdmin(formName);\n const formComponents = getFormComponents(formName);\n const nudges =\n formVersion === \"regular\"\n ? formComponents.donationAmount.regularNudges\n : formComponents.donationAmount.nudges;\n const [showButton, setShowButton] = useState(false);\n const [optimizelyContext, setOptimizelyContext] =\n useContext(OptimizelyContext);\n const { optimizelyUserContext: user, isTestAudience } = optimizelyContext;\n\n const buttonText = formVersion === \"regular\" ? \"one-off\" : \"regular\";\n const searchParams = new URLSearchParams(window.location.search);\n const urlAmount = searchParams.get(\"amount\");\n const frequencyQueryString = searchParams.get(\"frequency\");\n const buttonQueryString = searchParams;\n buttonQueryString.set(\n \"type\",\n formVersion === \"regular\" ? \"single\" : \"regular\"\n );\n if (formVersion === \"regular\" && buttonQueryString.has(\"frequency\")) {\n buttonQueryString.delete(\"frequency\");\n }\n if (buttonQueryString.has(\"amount\")) buttonQueryString.delete(\"amount\");\n const buttonUrl = buttonQueryString.toString();\n\n // Optimizely experiment variables\n const validFrequencies = [\"monthly\", \"quarterly\", \"annually\"]; // TODO Check codebase for duplicate\n const frequencyString = frequencyQueryString || \"one-off\";\n const lowercaseFrequency = frequencyString.toLowerCase();\n\n const areUrlValuesValid =\n validFrequencies.includes(lowercaseFrequency) || formVersion === \"single\"\n ? validateAmount(urlAmount, lowercaseFrequency)\n : false;\n const canShowCondensedAmountView = canExperiment && areUrlValuesValid;\n const [showCondensed, setShowCondensed] = useState(\n canShowCondensedAmountView\n );\n\n const formatAmount = formatNumberToCurrencyString(Number(urlAmount), true);\n // END\n useEffect(() => {\n if (canShowCondensedAmountView && !isTestAudience) {\n setOptimizelyContext({\n ...optimizelyContext,\n optimizelyAudience: \"condensed-amount-view-bucket\",\n });\n }\n }, []);\n useEffect(() => {\n const urlAmountNum = Number(urlAmount);\n const donationDataVals = values;\n if (urlAmountNum > 0) {\n if (!nudges || !nudges.includes(urlAmountNum)) {\n donationDataVals.donationAmount.otherAmount = urlAmountNum.toFixed(2);\n donationDataVals.donationAmount.amountRadioGroup = \"\";\n } else {\n donationDataVals.donationAmount.amountRadioGroup =\n urlAmountNum.toString(10);\n donationDataVals.donationAmount.otherAmount = \"\";\n }\n }\n setDonationData(donationDataVals);\n if (typeof window !== \"undefined\") {\n sessionStorage.setItem(\n `formData-${formName}`,\n JSON.stringify(donationDataVals)\n );\n }\n }, []);\n\n useEffect(() => {\n const donationDataVals = values;\n const validFormVersions = getValidFormVersions(formAdmin);\n const isValidFrequency = donationFrequencies.filter((frequency) =>\n frequency.toLowerCase().includes(frequencyQueryString?.toLowerCase())\n );\n const hasButton =\n !!(formVersion === \"regular\" && validFormVersions.includes(\"single\")) ||\n !!(formVersion === \"single\" && validFormVersions.includes(\"regular\"));\n setShowButton(hasButton);\n\n if (isValidFrequency.length > 0) {\n const lowerCasefrequencyQueryString = frequencyQueryString.toLowerCase();\n const formattedFrequency =\n lowerCasefrequencyQueryString.charAt(0).toUpperCase() +\n lowerCasefrequencyQueryString.slice(1);\n setFieldValue(\"frequency\", formattedFrequency);\n donationDataVals.frequency = formattedFrequency;\n }\n if (formVersion === \"single\") {\n setFieldValue(\"frequency\", \"\");\n donationDataVals.frequency = \"\";\n }\n updateCheckedAmount(\n nudges,\n donationDataVals.donationAmount.amountRadioGroup,\n () => {\n setFieldValue(\"donationAmount.amountRadioGroup\", \"\");\n donationDataVals.donationAmount.amountRadioGroup = \"\";\n }\n );\n setDonationData(donationDataVals);\n if (typeof window !== \"undefined\") {\n sessionStorage.setItem(\n `formData-${formName}`,\n JSON.stringify(donationDataVals)\n );\n }\n }, [formVersion]);\n\n useEffect(() => {\n setCheckedAmount(values.donationAmount.amountRadioGroup);\n }, [values.donationAmount.amountRadioGroup]);\n\n useEffect(() => {\n setCheckedfrequency(values.frequency);\n }, [values.frequency]);\n\n useEffect(() => {\n const errorDelay = setTimeout(() => {\n if (\n !!touched.donationAmount &&\n errors.donationAmount &&\n errors.donationAmount.otherAmount\n ) {\n const otherAmountError = errors.donationAmount.otherAmount as string;\n pushError(\"\", \"validation\", `donationAmount: ${otherAmountError}`);\n }\n }, 1000);\n return (): void => clearTimeout(errorDelay);\n }, [errors.donationAmount, touched.donationAmount]);\n\n if (canShowCondensedAmountView) {\n return (\n \n \n \n \n Donation amount\n \n Please {nudges ? \"choose\" : \"enter\"} an amount for your{\" \"}\n {formVersion === \"regular\" ? \"regular\" : \"\"} donation.{\" \"}\n (required)\n \n \n \n {nudges && nudges.length > 0 ? (\n \n {nudges.map((nudge: number) => {\n const amount = nudge.toString(10);\n\n return (\n
\n \n {({ field, form }: FieldProps): ReactElement => (\n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n form.setFieldValue(\n \"donationAmount.otherAmount\",\n \"\"\n );\n handleChange(e);\n setDonationData(donationData);\n }}\n />\n )}\n \n \n
\n );\n })}\n \n ) : (\n \"\"\n )}\n \n \n {({ field, form }: FieldProps): ReactElement => (\n \n {\n if (\n values.donationAmount.otherAmount &&\n values.donationAmount.otherAmount > 0\n ) {\n form.setFieldValue(\n field.name,\n parseFloat(\n values.donationAmount.otherAmount\n ).toFixed(2)\n );\n form.setFieldTouched(field.name, true, false);\n } else {\n handleBlur(e);\n }\n }}\n onChange={(e): void => {\n if (e.target.value.length > 0) {\n const roundedValue =\n /^-?\\d+(?:\\.\\d{0,2})?/.exec(e.target.value)\n ? /^-?\\d+(?:\\.\\d{0,2})?/.exec(\n e.target.value\n )[0]\n : e.target.value;\n roundedValue\n ? form.setFieldValue(field.name, roundedValue)\n : form.setFieldValue(\n field.name,\n e.target.value\n );\n\n nudges?.includes(Number(e.target.value))\n ? form.setFieldValue(\n \"donationAmount.amountRadioGroup\",\n parseInt(e.target.value, 10).toString(10)\n )\n : form.setFieldValue(\n \"donationAmount.amountRadioGroup\",\n \"\"\n );\n } else {\n handleChange(e);\n }\n }}\n />\n \n £\n \n \n )}\n \n \n
\n {touched.donationAmount && errors.donationAmount ? (\n
\n \n {errors.donationAmount.amountRadioGroup ? (\n errors.donationAmount.amountRadioGroup\n ) : (\n \n {errors.donationAmount.otherAmount}\n \n )}\n \n
\n ) : (\n \"\"\n )}\n \n {formVersion === \"regular\" ? (\n \n \n \n Tell us how often you’d like to donate{\" \"}\n (required)\n \n \n \n {donationFrequencies.map((frequency: string) => (\n
\n \n {({ field }: FieldProps): ReactElement => (\n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n handleChange(e);\n setDonationData(donationData);\n }}\n />\n )}\n \n \n
\n ))}\n \n {touched.frequency && errors.frequency && (\n
\n {errors.frequency}\n
\n )}\n \n ) : (\n \"\"\n )}\n {showButton ? (\n \n {\n e.preventDefault();\n const href = `?${buttonUrl}`;\n\n const optimizelyEvent =\n formVersion === \"single\"\n ? \"switch_from_single_to_regular\"\n : \"switch_from_regular_to_single\";\n user?.trackEvent(optimizelyEvent);\n\n window.location.href = href;\n }}\n href={`?${buttonUrl}`}\n appearance=\"primary\"\n >\n Make a {buttonText} donation instead\n \n \n ) : (\n \"\"\n )}\n
\n \n }\n >\n {(variation) =>\n variation === \"condensed_view\" && showCondensed ? (\n \n \n Your regular donation\n \n \n \n \n \n {lowercaseFrequency[0].toUpperCase() +\n lowercaseFrequency.slice(1)}\n \n \n \n \n \n £{formatAmount}\n \n {\n e.preventDefault();\n user?.trackEvent(\n \"condensed_amount_view_edit_button_click\"\n );\n setShowCondensed(false);\n }}\n appearance=\"tertiary\"\n >\n {lowercaseFrequency === \"one-off\"\n ? \"Edit amount\"\n : \"Edit amount or frequency\"}\n \n \n {showButton ? (\n \n Or{\" \"}\n {\n const href = `?${buttonUrl}`;\n\n const optimizelyEvent =\n formVersion === \"single\"\n ? \"switch_from_single_to_regular\"\n : \"switch_from_regular_to_single\";\n user?.trackEvent(optimizelyEvent);\n\n window.location.href = href;\n }}\n href={`?${buttonUrl}`}\n appearance=\"primary\"\n >\n make a {buttonText} donation instead\n \n \n ) : (\n \"\"\n )}\n \n \n ) : (\n \n \n \n \n Donation amount\n \n Please {nudges ? \"choose\" : \"enter\"} an amount for your{\" \"}\n {formVersion === \"regular\" ? \"regular\" : \"\"} donation.{\" \"}\n (required)\n \n \n \n {nudges && nudges.length > 0 ? (\n \n {nudges.map((nudge: number) => {\n const amount = nudge.toString(10);\n\n return (\n
\n \n {({\n field,\n form,\n }: FieldProps): ReactElement => (\n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n form.setFieldValue(\n \"donationAmount.otherAmount\",\n \"\"\n );\n handleChange(e);\n setDonationData(donationData);\n }}\n />\n )}\n \n \n
\n );\n })}\n \n ) : (\n \"\"\n )}\n \n \n {({ field, form }: FieldProps): ReactElement => (\n \n {\n if (\n values.donationAmount.otherAmount &&\n values.donationAmount.otherAmount > 0\n ) {\n form.setFieldValue(\n field.name,\n parseFloat(\n values.donationAmount.otherAmount\n ).toFixed(2)\n );\n form.setFieldTouched(field.name, true, false);\n } else {\n handleBlur(e);\n }\n }}\n onChange={(e): void => {\n if (e.target.value.length > 0) {\n const roundedValue =\n /^-?\\d+(?:\\.\\d{0,2})?/.exec(e.target.value)\n ? /^-?\\d+(?:\\.\\d{0,2})?/.exec(\n e.target.value\n )[0]\n : e.target.value;\n roundedValue\n ? form.setFieldValue(\n field.name,\n roundedValue\n )\n : form.setFieldValue(\n field.name,\n e.target.value\n );\n\n nudges?.includes(Number(e.target.value))\n ? form.setFieldValue(\n \"donationAmount.amountRadioGroup\",\n parseInt(e.target.value, 10).toString(\n 10\n )\n )\n : form.setFieldValue(\n \"donationAmount.amountRadioGroup\",\n \"\"\n );\n } else {\n handleChange(e);\n }\n }}\n />\n \n £\n \n \n )}\n \n \n
\n {touched.donationAmount && errors.donationAmount ? (\n
\n \n {errors.donationAmount.amountRadioGroup ? (\n errors.donationAmount.amountRadioGroup\n ) : (\n \n {errors.donationAmount.otherAmount}\n \n )}\n \n
\n ) : (\n \"\"\n )}\n \n {formVersion === \"regular\" ? (\n \n \n \n Tell us how often you’d like to donate{\" \"}\n (required)\n \n \n \n {donationFrequencies.map((frequency: string) => (\n
\n \n {({ field }: FieldProps): ReactElement => (\n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n handleChange(e);\n setDonationData(donationData);\n }}\n />\n )}\n \n \n
\n ))}\n \n {touched.frequency && errors.frequency && (\n
\n \n {errors.frequency}\n \n
\n )}\n \n ) : (\n \"\"\n )}\n {showButton ? (\n \n {\n e.preventDefault();\n const href = `?${buttonUrl}`;\n\n const optimizelyEvent =\n formVersion === \"single\"\n ? \"switch_from_single_to_regular\"\n : \"switch_from_regular_to_single\";\n user?.trackEvent(optimizelyEvent);\n\n window.location.href = href;\n }}\n href={`?${buttonUrl}`}\n appearance=\"primary\"\n >\n Make a {buttonText} donation instead\n \n \n ) : (\n \"\"\n )}\n
\n
\n )\n }\n \n );\n }\n\n return (\n \n \n \n \n Donation amount\n \n Please {nudges ? \"choose\" : \"enter\"} an amount for your{\" \"}\n {formVersion === \"regular\" ? \"regular\" : \"\"} donation.{\" \"}\n (required)\n \n \n \n {nudges && nudges.length > 0 ? (\n \n {nudges.map((nudge: number) => {\n const amount = nudge.toString(10);\n\n return (\n
\n \n {({ field, form }: FieldProps): ReactElement => (\n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n form.setFieldValue(\n \"donationAmount.otherAmount\",\n \"\"\n );\n handleChange(e);\n setDonationData(donationData);\n }}\n />\n )}\n \n \n
\n );\n })}\n \n ) : (\n \"\"\n )}\n \n \n {({ field, form }: FieldProps): ReactElement => (\n \n {\n if (\n values.donationAmount.otherAmount &&\n values.donationAmount.otherAmount > 0\n ) {\n form.setFieldValue(\n field.name,\n parseFloat(\n values.donationAmount.otherAmount\n ).toFixed(2)\n );\n form.setFieldTouched(field.name, true, false);\n } else {\n handleBlur(e);\n }\n }}\n onChange={(e): void => {\n if (e.target.value.length > 0) {\n const roundedValue = /^-?\\d+(?:\\.\\d{0,2})?/.exec(\n e.target.value\n )\n ? /^-?\\d+(?:\\.\\d{0,2})?/.exec(e.target.value)[0]\n : e.target.value;\n roundedValue\n ? form.setFieldValue(field.name, roundedValue)\n : form.setFieldValue(field.name, e.target.value);\n\n nudges?.includes(Number(e.target.value))\n ? form.setFieldValue(\n \"donationAmount.amountRadioGroup\",\n parseInt(e.target.value, 10).toString(10)\n )\n : form.setFieldValue(\n \"donationAmount.amountRadioGroup\",\n \"\"\n );\n } else {\n handleChange(e);\n }\n }}\n />\n \n £\n \n \n )}\n \n \n
\n {touched.donationAmount && errors.donationAmount ? (\n
\n \n {errors.donationAmount.amountRadioGroup ? (\n errors.donationAmount.amountRadioGroup\n ) : (\n \n {errors.donationAmount.otherAmount}\n \n )}\n \n
\n ) : (\n \"\"\n )}\n \n {formVersion === \"regular\" ? (\n \n \n \n Tell us how often you’d like to donate{\" \"}\n (required)\n \n \n \n {donationFrequencies.map((frequency: string) => (\n
\n \n {({ field }: FieldProps): ReactElement => (\n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n handleChange(e);\n setDonationData(donationData);\n }}\n />\n )}\n \n \n
\n ))}\n \n {touched.frequency && errors.frequency && (\n
\n {errors.frequency}\n
\n )}\n \n ) : (\n \"\"\n )}\n {showButton ? (\n \n {\n e.preventDefault();\n const href = `?${buttonUrl}`;\n\n const optimizelyEvent =\n formVersion === \"single\"\n ? \"switch_from_single_to_regular\"\n : \"switch_from_regular_to_single\";\n user?.trackEvent(optimizelyEvent);\n\n window.location.href = href;\n }}\n href={`?${buttonUrl}`}\n appearance=\"primary\"\n >\n Make a {buttonText} donation instead\n \n \n ) : (\n \"\"\n )}\n
\n
\n );\n};\n\nexport default AmountSelection;\n","// EXTERNAL\nimport React, { useState, useContext, useEffect, ReactElement } from \"react\";\nimport styled from \"styled-components\";\nimport { Heading, Radio, Box } from \"@cruk/cruk-react-components\";\nimport { Field, FieldProps } from \"formik\";\n\n// HELPERS\nimport useDataLayer from \"../../helpers/useDataLayer\";\nimport { FormPropsType } from \"../../helpers/types/shared\";\nimport { objectHasVal } from \"../../helpers/functions/shared\";\n\n// CONTEXT\nimport FormNameContext from \"../../contexts/FormNameContext\";\nimport DonationContext from \"../../contexts/DonationContext\";\n\n// COMPONENTS\nimport FormGroup from \"../FormGroup\";\nimport FormFields from \"../FormFields\";\nimport FieldErrorMessage from \"../FieldErrorMessage\";\n\n// STYLES\nimport { RequiredParagraph } from \"../styles\";\n\nconst RadioButtonGroup = styled.div`\n width: 100%;\n padding-top: 10px;\n`;\n\nconst StyledError = styled.div`\n p {\n display: inline-block;\n }\n`;\n\nconst DonationType = ({\n values,\n errors,\n handleChange,\n setFieldValue,\n touched,\n}: FormPropsType): ReactElement => {\n const [checked, setChecked] = useState(\n values.typeRadioGroup ? values.typeRadioGroup : \"\"\n );\n const { pushInteraction } = useDataLayer();\n const formName = useContext(FormNameContext);\n const { setDonationData } = useContext(DonationContext);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const urlDonationType = searchParams.get(\"personal\");\n const validUrlDonationType = objectHasVal(types, \"value\", urlDonationType);\n const donationValues = values;\n if (validUrlDonationType) {\n donationValues.typeRadioGroup = urlDonationType;\n setChecked(urlDonationType);\n }\n setDonationData(donationValues);\n if (typeof window !== \"undefined\") {\n sessionStorage.setItem(\n `formData-${formName}`,\n JSON.stringify(donationValues)\n );\n }\n }, []);\n\n useEffect(() => {\n setChecked(values.typeRadioGroup);\n }, [values.typeRadioGroup]);\n\n const types = [\n {\n value: \"yes\",\n label: \"I am donating my own money\",\n },\n {\n value: \"no\",\n label: \"I am paying in money from fundraising or a collection\",\n },\n ];\n\n return (\n \n \n \n \n Donation type\n \n Please choose your donation type. (required)\n \n \n \n {types.map((type, index) => (\n \n {({ field }: FieldProps): ReactElement => {\n const hasError: boolean = errors[field.name] !== undefined;\n const fieldTouched = touched[field.name];\n return (\n \n {\n setFieldValue(\"giftAid\", false);\n pushInteraction(\n \"Donation type\",\n type.value === \"yes\" ? \"personal\" : \"offline\"\n );\n handleChange(e);\n }}\n >\n {type.label}\n \n \n );\n }}\n \n ))}\n \n {errors.typeRadioGroup && touched.typeRadioGroup && (\n \n {errors.typeRadioGroup}\n \n )}\n\n

We can only claim Gift Aid on donations of your own money.

\n

\n Your donation is not eligible for Gift Aid if you received anything\n in return for it or raised it from your own fundraising.\n

\n \n
\n
\n );\n};\n\nexport default DonationType;\n","const motivations = [\n {\n value: \"In memory of someone\",\n label: \"In memory of someone\",\n },\n {\n value: \"I or loved one beaten cancer\",\n label: \"I or a loved one has beaten cancer\",\n },\n {\n value: \"I or a loved one has cancer\",\n label: \"I or a loved one has cancer\",\n },\n {\n value: \"Different reason\",\n label: \"Different reason\",\n },\n];\n\nexport default motivations;\n","// EXTERNAL\nimport React, {\n ReactElement,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { Field, FieldProps } from \"formik\";\nimport {\n Box,\n Collapse,\n Text,\n Heading,\n Select,\n TextField,\n Radio,\n} from \"@cruk/cruk-react-components\";\nimport styled from \"styled-components\";\n// UTILITIES\nimport useDataLayer from \"../../helpers/useDataLayer\";\nimport { FormPropsType } from \"../../helpers/types/shared\";\n// CONTEXT\nimport FormNameContext from \"../../contexts/FormNameContext\";\nimport DonationContext from \"../../contexts/DonationContext\";\nimport { OptimizelyContext } from \"../../contexts/OptimizelyContext\";\n// COMPONENTS\nimport FormGroup from \"../FormGroup\";\nimport FormFields from \"../FormFields\";\nimport GetSelectOptions from \"../GetSelectOptions\";\n// STYLES\nimport { InputsLayoutWrapper, StyledCollapse } from \"../styles\";\n// DATA\nimport motivations from \"../../data/motivations\";\n// CONFIG\nimport { getFormComponents } from \"../../configs/single-donation\";\n\n// Optimizely experiment styles\nconst MotivationRadioGroup = styled.div`\n & > span {\n font-weight: 700;\n }\n\n & > div:first-of-type {\n display: flex;\n gap: 1rem;\n width: 70%;\n padding: 1rem 0;\n }\n\n & > div:last-of-type {\n margin-bottom: 0.5rem;\n }\n\n .hide {\n display: none;\n }\n\n .show {\n display: block;\n }\n`;\n\nconst ScreenReaderOnly = styled.legend`\n border: 0px;\n clip: rect(0px, 0px, 0px, 0px);\n height: 1px;\n margin-bottom: -1px;\n margin-right: -1px;\n overflow: hidden;\n padding: 0px;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n`;\n\nconst ReducedPaddingFormGroup = styled.div`\n max-width: ${({ theme }) => theme.utilities.contentMaxWidth};\n margin: 0 auto;\n padding: 0 0 ${({ theme }) => theme.spacing.m} 0;\n border-bottom: 1px solid ${({ theme }) => theme.tokenColors.grey_900};\n border-top: 4px solid white;\n margin-top: -2px;\n`;\n\nconst MotivationRadio = ({\n label,\n motivation,\n resetMotivation,\n children,\n}: {\n label: string;\n motivation: string;\n resetMotivation: () => void;\n children: ReactNode;\n}): ReactElement => {\n const [option, setOption] = useState<\"yes\" | \"no\">(\n motivation === \"\" ? \"no\" : \"yes\"\n );\n\n const [optimizelyContext] = useContext(OptimizelyContext);\n const { optimizelyUserContext: user } = optimizelyContext;\n\n useEffect(() => {\n setOption(motivation === \"\" ? \"no\" : \"yes\");\n }, [motivation]);\n\n useEffect(() => {\n if (option === \"yes\") {\n user?.trackEvent(\"shortened_motivation_field_yes_click\");\n }\n }, [option]);\n\n return (\n \n {label}\n
\n {\n setOption(\"no\");\n resetMotivation();\n }}\n >\n No\n \n setOption(\"yes\")}\n >\n Yes\n \n
\n
{children}
\n
\n );\n};\n\ntype DonationMotivationProps = FormPropsType & {\n canExperiment?: boolean;\n};\n\nconst DonationMotivation = ({\n values,\n errors,\n handleBlur,\n handleChange,\n canExperiment,\n}: DonationMotivationProps): ReactElement => {\n const [motivationSelection, setMotivationSelection] = useState(\n values.motivation ? values.motivation : \"\"\n );\n const { pushInteraction } = useDataLayer();\n const { setDonationData } = useContext(DonationContext);\n const formName = useContext(FormNameContext);\n const formComponents = getFormComponents(formName);\n\n type MotivationSelectionObjectType = {\n inputLabel: string;\n fieldName: string;\n };\n\n interface MotivationSelectionDetailsType {\n [key: string]: MotivationSelectionObjectType;\n }\n\n const motivationSelectionSelectDetails: MotivationSelectionDetailsType = {\n \"In memory of someone\": {\n inputLabel:\n \"If you’d like to dedicate your donation in memory of someone, please enter their name\",\n fieldName: \"inMemoryName\",\n },\n \"Different reason\": {\n inputLabel: \"If you'd like to, please enter your reason for donating\",\n fieldName: \"otherDonationMotivation\",\n },\n };\n\n const showMotivationSelectionTextField = [\n \"Different reason\",\n \"In memory of someone\",\n ].includes(motivationSelection);\n const motivationSelectionFieldName =\n motivationSelectionSelectDetails?.[motivationSelection]?.fieldName;\n const motivationSelectioninputLabel =\n motivationSelectionSelectDetails?.[motivationSelection]?.inputLabel;\n const motivationSelectionLabel =\n \"Would you like to tell us why you’re making a donation?\";\n\n useEffect(() => {\n if (formComponents.donationMotivation === true) {\n const searchParams = new URLSearchParams(window.location.search);\n const urlMotivation = searchParams.get(\"inmemory\");\n const donationValues = values;\n if (urlMotivation === \"true\") {\n donationValues.motivation = \"In memory of someone\";\n setMotivationSelection(\"In memory of someone\");\n }\n setDonationData(donationValues);\n if (typeof window !== \"undefined\") {\n sessionStorage.setItem(\n `formData-${formName}`,\n JSON.stringify(donationValues)\n );\n }\n }\n }, []);\n\n if (canExperiment) {\n return (\n \n \n
\n \n

Your motivation

\n
\n\n \n {({ field, form }: FieldProps): ReactElement => {\n const fieldError = errors[field.name] as string;\n\n return (\n {\n form.setFieldValue(field.name, \"\");\n form.setFieldValue(\"inMemoryName\", \"\");\n form.setFieldValue(\"otherDonationMotivation\", \"\");\n setMotivationSelection(\"\");\n }}\n >\n \n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n pushInteraction(\n \"Donation motivation\",\n e.target.value\n );\n form.setFieldValue(field.name, e.target.value);\n form.setFieldValue(\"inMemoryName\", \"\");\n form.setFieldValue(\"otherDonationMotivation\", \"\");\n setMotivationSelection(e.target.value);\n }}\n >\n \n \n \n \n );\n }}\n \n\n \n {\n pushInteraction(\n \"Accordion: Donation motivation\",\n isOpen ? \"Open\" : \"Close\"\n );\n }}\n >\n \n \n We may use this information to tailor messages, or to send\n you information which may be helpful to you. We will keep\n this information confidential, but you do not need to\n provide a response if you’re not comfortable.\n \n \n \n \n\n {showMotivationSelectionTextField && (\n \n \n {({ field }: FieldProps): ReactElement => {\n const fieldName = field.name;\n const fieldError = errors[fieldName] as string;\n const hasError = fieldError !== undefined;\n const fieldValueEmpty = values[fieldName].length === 0;\n return (\n \n {\n handleChange(e);\n }}\n isValidVisible={!fieldValueEmpty && !hasError}\n onBlur={(e) => {\n handleBlur(e);\n }}\n />\n \n );\n }}\n \n \n )}\n
\n
\n
\n );\n }\n\n return (\n \n \n
\n \n Your motivation\n \n\n \n {({ field, form }: FieldProps): ReactElement => {\n const fieldError = errors[field.name] as string;\n\n return (\n \n {\n handleBlur(e);\n }}\n onChange={(e): void => {\n pushInteraction(\"Donation motivation\", e.target.value);\n form.setFieldValue(field.name, e.target.value);\n form.setFieldValue(\"inMemoryName\", \"\");\n form.setFieldValue(\"otherDonationMotivation\", \"\");\n setMotivationSelection(e.target.value);\n }}\n >\n \n \n \n );\n }}\n \n\n \n {\n pushInteraction(\n \"Accordion: Donation motivation\",\n isOpen ? \"Open\" : \"Close\"\n );\n }}\n >\n \n \n We may use this information to tailor messages, or to send you\n information which may be helpful to you. We will keep this\n information confidential, but you do not need to provide a\n response if you’re not comfortable.\n \n \n \n \n\n {showMotivationSelectionTextField && (\n \n \n {({ field }: FieldProps): ReactElement => {\n const fieldName = field.name;\n const fieldError = errors[fieldName] as string;\n const hasError = fieldError !== undefined;\n const fieldValueEmpty = values[fieldName].length === 0;\n return (\n \n {\n handleChange(e);\n }}\n isValidVisible={!fieldValueEmpty && !hasError}\n onBlur={(e) => {\n handleBlur(e);\n }}\n />\n \n );\n }}\n \n \n )}\n
\n
\n
\n );\n};\n\nexport default DonationMotivation;\n","// EXTERNAL\nimport React, { useState, useContext, useEffect, ReactElement } from \"react\";\nimport styled from \"styled-components\";\nimport { Field, FieldProps } from \"formik\";\nimport { Heading, Box, Radio, Select } from \"@cruk/cruk-react-components\";\n// UTILITIES\nimport useDataLayer from \"../../helpers/useDataLayer\";\nimport { FormPropsType } from \"../../helpers/types/shared\";\n// CONTEXT\nimport FormNameContext from \"../../contexts/FormNameContext\";\nimport DonationContext from \"../../contexts/DonationContext\";\n// HELPERS\nimport { objectHasVal } from \"../../helpers/functions/shared\";\n// COMPONENTS\nimport FormGroup from \"../FormGroup\";\nimport FormFields from \"../FormFields\";\nimport GetSelectOptions from \"../GetSelectOptions\";\nimport ErrorBox from \"../ErrorBox\";\nimport PhoneNumber from \"../PhoneNumber\";\n// STYLES\nimport { RequiredParagraph, ExtendedBoxWrapper } from \"../styles\";\n// DATA\nimport researchAreas from \"../../data/researchAreas\";\n// CONFIG\nimport { getFormComponents } from \"../../configs/single-donation\";\n\nconst RadioButtonGroup = styled.div`\n width: 100%;\n`;\n\nconst types = [\n {\n value: \"greatest\",\n label: \"Where the need is greatest\",\n },\n {\n value: \"choose\",\n label: \"Choose a cancer type or an area of research\",\n },\n];\n\nconst DonationDestination = ({\n values,\n errors,\n handleBlur,\n handleChange,\n touched,\n}: FormPropsType): ReactElement => {\n const [checked, setChecked] = useState(\n values.destinationRadioGroup ? values.destinationRadioGroup : \"\"\n );\n const [areaSelection, setAreaSelection] = useState(\n values.restriction ? values.restriction : \"\"\n );\n const { pushInteraction, pushError } = useDataLayer();\n const areaSelectionLabel = \"Select a cancer type or research area\";\n const { setDonationData } = useContext(DonationContext);\n const formName = useContext(FormNameContext);\n const formComponents = getFormComponents(formName);\n\n useEffect(() => {\n if (formComponents.donationDestination === true) {\n const searchParams = new URLSearchParams(window.location.search);\n const urlRestriction = searchParams.get(\"restriction\");\n const donationValues = values;\n const validUrlRestriction = objectHasVal(\n researchAreas,\n \"value\",\n urlRestriction\n );\n\n if (\n validUrlRestriction &&\n urlRestriction &&\n urlRestriction !== \"Unlisted\" &&\n !formComponents.restriction // Do not override restriction from config if it exists\n ) {\n // & urlRestriction contains\n donationValues.destinationRadioGroup = \"choose\";\n donationValues.restriction = urlRestriction;\n setAreaSelection(urlRestriction);\n }\n setDonationData(donationValues);\n if (typeof window !== \"undefined\") {\n sessionStorage.setItem(\n `formData-${formName}`,\n JSON.stringify(donationValues)\n );\n }\n }\n }, []);\n\n useEffect(() => {\n setChecked(values.destinationRadioGroup);\n }, [values.destinationRadioGroup]);\n\n return (\n \n \n \n \n Where your donation goes\n \n\n \n Choose how you would like your donation to fund our work.\n \n\n \n {types.map((type, index) => (\n \n {({ field, form }: FieldProps): ReactElement => (\n \n {\n pushInteraction(\"Donation destination\", type.value);\n handleChange(e);\n form.setFieldValue(\"restriction\", \"\");\n setAreaSelection(\"\");\n }}\n >\n {type.label}\n \n \n )}\n \n ))}\n \n\n {checked === \"choose\" ? (\n \n {({ field, form }: FieldProps): ReactElement => {\n const fieldError = errors[field.name] as string;\n\n return (\n \n {\n handleBlur(e);\n if (errors[field.name])\n pushError(\n \"\",\n \"validation\",\n `${field.name}: ${fieldError}`\n );\n }}\n onChange={(e): void => {\n if (e.target.value === \"Unlisted\") {\n form.setFieldValue(\n \"destinationRadioGroup\",\n \"greatest\"\n );\n form.setFieldValue(\"restriction\", \"\");\n } else {\n handleChange(e);\n }\n pushInteraction(\"Donation destination\", e.target.value);\n setAreaSelection(e.target.value);\n }}\n >\n \n \n \n );\n }}\n \n ) : (\n \"\"\n )}\n {areaSelection === \"Unlisted\" ? (\n \n

\n We’re not able to list all areas of research here, if you\n can’t find what you’re looking for please call us on{\" \"}\n 0300 123 1022 to complete your\n donation.\n

\n
\n ) : (\n \"\"\n )}\n \n
\n
\n );\n};\n\nexport default DonationDestination;\n","import { useContext } from \"react\";\nimport { Loader } from \"@cruk/cruk-react-components\";\nimport { OptimizelyContext } from \"../contexts/OptimizelyContext\";\n\ntype OptimizelyLoaderProps = {\n children?: JSX.Element;\n loaderComponent?: JSX.Element;\n};\n\nconst OptimizelyLoader = ({\n children = null,\n loaderComponent = ,\n}: OptimizelyLoaderProps) => {\n const [optimizelyContext] = useContext(OptimizelyContext);\n const { loadingState } = optimizelyContext;\n\n return loadingState === \"loading\" ? loaderComponent : children;\n};\n\nexport default OptimizelyLoader;\n","// DEPENDENCIES\nimport { Form, Formik, validateYupSchema, yupToFormErrors } from \"formik\";\nimport React, { ReactElement, FC, useContext, useEffect } from \"react\";\nimport { useRouter } from \"next/router\";\n\n// CONFIG\nimport { Button } from \"@cruk/cruk-react-components\";\nimport { getFormComponents, hasNudges } from \"../../../configs/single-donation\";\n\n// SCHEMA\nimport { DonationAmountFormSchema } from \"../../../schema/single-donation\";\n\n// CONTEXTS\nimport FormNameContext from \"../../../contexts/FormNameContext\";\nimport DonationContext from \"../../../contexts/DonationContext\";\nimport VersionsContext from \"../../../contexts/VersionsContext\";\nimport { OptimizelyContext } from \"../../../contexts/OptimizelyContext\";\n\n// HELPERS\nimport useOptimizelyTrack from \"../../../helpers/useOptimizelyTrack\";\n\n// COMPONENTS\nimport AmountSelection from \"../AmountSelection\";\nimport DonationType from \"../DonationType\";\nimport DonationMotivation from \"../DonationMotivation\";\nimport DonationDestination from \"../DonationDestination\";\nimport FocusError from \"../../FocusError\";\nimport FormGroup from \"../../FormGroup\";\nimport FormFields from \"../../FormFields\";\nimport ButtonGroup from \"../../ButtonGroup\";\nimport OptimizelyLoader from \"../../OptimizelyLoader\";\nimport OptimizelyExperiment from \"../../OptimizelyExperiment\";\n\ntype DonationPageSearchParams = {\n [key: string]: string;\n};\n\nconst onNavigationSearchQueryHandler = (\n params: Partial\n) => {\n const searchParams = new URLSearchParams(window.location.search);\n\n for (const key of searchParams.keys()) {\n !(key in params) && searchParams.delete(key);\n key in params && searchParams.set(key, params[key]);\n }\n\n const stringified = searchParams.toString();\n\n const updatedHistoryState = {\n ...window.history.state,\n as: `${window.location.pathname}?${stringified}`,\n };\n\n window.history.replaceState(updatedHistoryState, \"\", `?${stringified}`);\n};\n\nconst DonationForm: FC = (): ReactElement => {\n const { donationData, setDonationData } = useContext(DonationContext);\n const router = useRouter();\n const formName = useContext(FormNameContext);\n const formComponents = getFormComponents(formName);\n const { formVersion } = useContext(VersionsContext);\n const [optimizelyContext] = useContext(OptimizelyContext);\n const { optimizely, optimizelyUserContext } = optimizelyContext;\n\n useOptimizelyTrack({\n event:\n formVersion === \"single\"\n ? \"start_single_donation\"\n : \"start_regular_donation\",\n client: optimizely,\n user: optimizelyUserContext,\n });\n\n useEffect(() => {\n if (!formVersion) return null;\n }, [formVersion]);\n\n return (\n => {\n setDonationData(values);\n if (typeof window !== \"undefined\") {\n sessionStorage.setItem(\n `formData-${formName}`,\n JSON.stringify(values)\n );\n }\n\n onNavigationSearchQueryHandler({\n amount: values.donationAmount.amountRadioGroup\n ? values.donationAmount.amountRadioGroup\n : values.donationAmount.otherAmount,\n frequency: values.frequency,\n restriction: values.restriction,\n inmemory:\n values.motivation === \"In memory of someone\" ? \"true\" : null,\n personal: values.typeRadioGroup,\n });\n\n await router.push(`/${formName}/details`);\n }}\n validate={async (values) => {\n try {\n await validateYupSchema(values, DonationAmountFormSchema, true, {\n formVersion,\n hasNudges: hasNudges(formComponents, formVersion),\n });\n } catch (err) {\n return yupToFormErrors(err);\n }\n return {};\n }}\n >\n {({\n values,\n errors,\n handleBlur,\n handleChange,\n isSubmitting,\n isValidating,\n setFieldValue,\n touched,\n }): ReactElement => (\n
\n {/* TODO Shortened Motivation Section */}\n {formName === \"support-us\" ? (\n <>\n \n \n\n {/* TODO Shortened Motivation Section */}\n {formVersion === \"single\" ? (\n \n \n \n \n }\n childrenPositionOnVariant={{\n shortened_view: \"start\",\n original_view: \"end\",\n default: \"end\",\n }}\n defaultComponent={\n formComponents.donationMotivation && (\n \n )\n }\n >\n {(variation) =>\n formComponents.donationMotivation && (\n \n )\n }\n \n ) : (\n formComponents.donationMotivation && (\n \n )\n )}\n\n {formComponents.donationDestination ? (\n \n ) : (\n \"\"\n )}\n\n \n \n \n \n \n \n \n \n ) : (\n <>\n \n \n {formVersion === \"single\" ? (\n \n ) : (\n \"\"\n )}\n\n {formComponents.donationMotivation ? (\n \n ) : (\n \"\"\n )}\n\n {formComponents.donationDestination ? (\n \n ) : (\n \"\"\n )}\n\n \n \n \n \n \n \n \n \n )}\n \n )}\n \n );\n};\n\nexport default DonationForm;\n","// DEPENDENCIES\nimport React, { ReactElement } from \"react\";\n\n// CONFIG\nimport { config, getFormComponents } from \"../../configs/single-donation\";\n\n// SCHEMA\nimport { initialFormValues } from \"../../schema/single-donation\";\n\n// CONTEXTS\nimport FormNameContext from \"../../contexts/FormNameContext\";\n\n// HELPERS\nimport { getTransactionID } from \"../../helpers/functions/shared\";\n\n// COMPONENTS\nimport DonationForm from \"../../components/single-donation/forms/DonationForm\";\nimport DonationFormWrapper from \"../../components/single-donation/DonationFormWrapper\";\n\n// TYPES\nimport { PagePropTypes } from \"../../helpers/types/shared\";\n\nconst DonationPage = ({ params, page }: PagePropTypes): ReactElement => {\n const formName = params.form;\n\n if (typeof window !== \"undefined\") {\n if (!JSON.parse(sessionStorage.getItem(`formData-${formName}`))) {\n let initialDonationFormValues = initialFormValues;\n const formComponents = getFormComponents(formName);\n if (formComponents.restriction) {\n initialDonationFormValues = {\n ...initialFormValues,\n destinationRadioGroup: \"choose\",\n restriction: formComponents.restriction,\n };\n }\n\n sessionStorage.setItem(\n `formData-${formName}`,\n JSON.stringify(initialDonationFormValues)\n );\n }\n }\n const hasTransactionID = getTransactionID(formName) !== null;\n if (hasTransactionID) {\n sessionStorage.removeItem(`transactionId-${formName}`);\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport async function getStaticPaths() {\n const paths = [];\n for (const [key] of Object.entries(config)) {\n paths.push({ params: { form: key } });\n }\n\n return { paths, fallback: false };\n}\n\nexport async function getStaticProps({ params }: any) {\n return {\n props: {\n params,\n config: config[params.form],\n page: \"Your donation\",\n },\n };\n}\n\nexport default DonationPage;\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/[form]/your-donation\",\n function () {\n return require(\"private-next-pages/[form]/your-donation.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/[form]/your-donation\"])\n });\n }\n ","module.exports = require('./dist/client/router')\n"],"names":["i","a","e","r","l","n","theme","spacing","s","colors","loaderColor1","loaderColor2","loaderColor3","o","role","t","backgroundLight","selectBackground","hasError","errorMessage","concat","utilities","inputBorderWidth","textError","textInputBorder","textDark","fontSizes","m","typography","lineHeight","xs","disabled","useDefaultFocusRect","tertiary","c","p","required","u","label","b","hintText","f","hideRequiredInLabel","h","x","E","ref","id","marginTop","ButtonGroupStyled","styled","breakpoint","tablet","children","ErrorBox","Box","tokenColors","red","Error","xxs","errors","touched","isSubmitting","isValidating","pushError","useDataLayer","useEffect","Object","keys","forEach","field","fieldName","fieldError","length","JSON","stringify","datadogRum","focusElements","map","key","fieldset","document","querySelector","filter","element","offsetWidth","offsetHeight","errorElement","labelElement","isField","firstError","focus","preventScroll","scrollIntoView","behavior","block","FormFieldsStyled","FormGroupStyled","contentMaxWidth","noborder","grey_900","topborder","options","defaultSelectOption","value","option","data","client","user","event","donationAmount","calculateRevenue","useState","hasTracked","setHasTracked","trackEvent","revenue","Number","experiment","defaultComponent","render","childrenPositionOnVariant","optimizelyContext","useContext","OptimizelyContext","optimizelyUserContext","optimizelyAudience","decision","setDecision","enabled","variation","setVariation","childrenPosition","expDecision","decide","getAttributes","audience","variationKey","newExperiment","experiments","maybeDuplicateIndex","findIndex","exp","push","Fields","RadioButtonGroup","fontFamilyBase","primary","button","buttonBorderThickness","buttonPrimaryBorder","formTheme","css","borderRadius","grey_200","textLight","OtherAmountDiv","extraTopSpacing","none","fontWeightHeavy","TextFieldWrapper","CondensedAmountSection","CondensedViewIcons","CondensedViewContainer","secondary","CondensedViewButton","Button","CondensedViewLink","Link","CalendarIcon","DDLogo","values","handleBlur","handleChange","setFieldValue","canExperiment","DonationContext","donationData","setDonationData","formVersion","VersionsContext","formName","FormNameContext","ThemeNameContext","amountRadioGroup","checkedAmount","setCheckedAmount","frequency","checkedfrequency","setCheckedfrequency","formAdmin","getFormAdmin","formComponents","getFormComponents","nudges","regularNudges","showButton","setShowButton","setOptimizelyContext","isTestAudience","buttonText","searchParams","URLSearchParams","window","location","search","urlAmount","get","frequencyQueryString","buttonQueryString","set","has","buttonUrl","toString","lowercaseFrequency","toLowerCase","areUrlValuesValid","includes","amount","max","validateAmount","canShowCondensedAmountView","showCondensed","setShowCondensed","formatAmount","formatNumberToCurrencyString","urlAmountNum","donationDataVals","otherAmount","toFixed","sessionStorage","setItem","validFormVersions","getValidFormVersions","isValidFrequency","donationFrequencies","hasButton","lowerCasefrequencyQueryString","formattedFrequency","charAt","toUpperCase","slice","radioAmount","handler","parseInt","isNaN","updateCheckedAmount","errorDelay","setTimeout","otherAmountError","clearTimeout","condensed_view","original_view","default","FormGroup","FormFields","tabIndex","Heading","h2","nudge","name","form","type","checked","onBlur","onChange","htmlFor","TextField","extraLeft","parseFloat","setFieldTouched","target","roundedValue","exec","className","FieldErrorMessage","donationfrequency","onClick","preventDefault","href","optimizelyEvent","appearance","h3","as","marginBottom","src","alt","StyledError","typeRadioGroup","setChecked","pushInteraction","urlDonationType","validUrlDonationType","objectHasVal","types","donationValues","index","undefined","fieldTouched","Radio","MotivationRadioGroup","ScreenReaderOnly","ReducedPaddingFormGroup","MotivationRadio","motivation","resetMotivation","setOption","motivationSelection","setMotivationSelection","motivationSelectionSelectDetails","inputLabel","showMotivationSelectionTextField","motivationSelectionFieldName","motivationSelectioninputLabel","motivationSelectionLabel","donationMotivation","urlMotivation","Select","GetSelectOptions","motivations","Collapse","headerTitleText","onOpenChange","isOpen","paddingVertical","Text","paddingTop","fieldValueEmpty","isValidVisible","destinationRadioGroup","restriction","areaSelection","setAreaSelection","donationDestination","urlRestriction","researchAreas","PhoneNumber","loaderComponent","Loader","loadingState","onNavigationSearchQueryHandler","params","stringified","updatedHistoryState","history","state","pathname","replaceState","router","useRouter","optimizely","useOptimizelyTrack","enableReinitialize","validateOnChange","initialValues","onSubmit","inmemory","personal","validate","validateYupSchema","DonationAmountFormSchema","hasNudges","yupToFormErrors","FocusError","shortened_view","ButtonGroup","page","parse","getItem","initialDonationFormValues","initialFormValues","getTransactionID","removeItem","DonationFormWrapper","__NEXT_P","module","exports"],"sourceRoot":""}