{"version":3,"file":"static/chunks/883-31b01eb77aef476c.js","mappings":"8GAWAA,CAAAA,EAAAC,CAAA,CAJc,OAAC,CAAEC,OAAAA,CAAM,CAAEC,SAAAA,CAAQ,CAAc,CAAAC,QAC7C,GAAAC,EAAAC,GAAA,EAACC,IAAAA,CAAEC,KAAM,UAA6BC,MAAA,CAAnBP,GAAUC,YAAaA,+NCkB5C,IAAMO,EAAcC,EAAAA,EAAMA,CAACC,GAAG,CAAAC,UAAA,mEAEX,OAAC,CAAEC,MAAAA,CAAK,CAAwB,CAAAV,SAAKU,EAAMC,OAAO,CAACC,EAAE,GA0CxE,IAAAC,EAvCuB,QAgBDC,KAhBE,CACtBC,WAAAA,CAAU,CACVC,SAAAA,CAAQ,CACRF,OAAAA,CAAM,CACc,CAAAd,EACd,CAAEiB,gBAAAA,CAAe,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IAE5B,MACE,GAAAC,EAAAC,IAAA,EAACC,EAAAA,CAAGA,CAAAA,WACF,GAAAF,EAAAjB,GAAA,EAACI,EAAAA,UACC,GAAAa,EAAAjB,GAAA,EAACoB,MAAAA,CAAIC,IAAI,uCAAuCC,IAAI,mBAEtD,GAAAL,EAAAjB,GAAA,EAACuB,EAAAA,CAAOA,CAAAA,CAACC,GAAE,YAAC,+BAEZ,GAAAP,EAAAC,IAAA,EAACO,EAAAA,CAAQA,CAAAA,CACPC,SAAU,CAAC,CAACd,EAAOe,OAAO,CAC1BC,aAAY,OAAEhB,CAAAA,EAAAA,EAAOe,OAAO,GAAdf,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAgBiB,OAAO,CACpC,GAAGf,EAAS,UAAW,CACtBgB,SAAU,IACRf,EAAgB,WAAYgB,EAAEC,MAAM,CAACC,OAAO,CAAG,MAAQ,KACzD,CACF,EAAE,WACH,uEACsE,IACpEpB,EAAa,aAAe,MAG/B,GAAAI,EAAAjB,GAAA,EAACkC,IAAAA,UAAE,mZAUT,YC5DA,IAAMC,EAAQ9B,EAAAA,EAAMA,CAAC6B,CAAC,CAAA3B,UAAA,0HAGX,OAAC,CAAEC,MAAAA,CAAK,CAAwB,CAAAV,SAAKU,EAAM4B,MAAM,CAACC,SAAS,EAC1D,OAAC,CAAE7B,MAAAA,CAAK,CAAwB,CAAAV,SAAKU,EAAMC,OAAO,CAAC6B,GAAG,GAclE,IAAAC,EAN0B,OAAC,CACzB1C,SAAAA,CAAQ,CACoC,CAAAC,QAC5C,GAAAmB,EAAAjB,GAAA,EAACmC,EAAAA,UAAOtC,KCvBH,IAAM2C,EAAgB,CAC3B,cACA,gBACA,UACA,UACA,iBACA,UACA,SACA,WACA,aACA,sBACA,YACA,UACA,QACA,YACA,UACA,aACA,UACA,UACA,aACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,UACA,gCACA,yBACA,WACA,gBACA,SACA,iCACA,yBACA,oBACA,WACA,eACA,UACA,WACA,WACA,SACA,aACA,iBACA,2BACA,OACA,QACA,QACA,mBACA,gBACA,WACA,UACA,QACA,eACA,aACA,gBACA,UACA,OACA,UACA,SACA,iBACA,+BACA,UACA,WACA,WACA,qBACA,UACA,QACA,cACA,oBACA,UACA,UACA,WACA,mBACA,gBACA,iCACA,OACA,UACA,SACA,gBACA,mBACA,8BACA,QACA,SACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,aACA,OACA,YACA,WACA,SACA,gBACA,SACA,QACA,gCACA,WACA,WACA,YACA,UACA,UACA,QACA,YACA,OACA,OACA,UACA,cACA,SACA,QACA,UACA,QACA,SACA,SACA,aACA,QACA,WACA,YACA,oBACA,SACA,aACA,UACA,SACA,UACA,UACA,UACA,QACA,gBACA,YACA,aACA,QACA,YACA,aACA,SACA,WACA,WACA,OACA,QACA,mBACA,aACA,aACA,YACA,UACA,SACA,UACA,SACA,WACA,aACA,aACA,UACA,aACA,UACA,UACA,QACA,QACA,cACA,gBACA,cACA,YACA,QACA,UACA,OACA,iBACA,2BACA,SACA,OACA,WACA,QACA,iCACA,SACA,mBACA,WACA,OACA,cACA,WACA,SACA,WACA,cACA,QACA,UACA,UACA,qBACA,SACA,mBACA,iCACA,wBACA,cACA,eACA,4BACA,gCACA,QACA,aACA,wBACA,eACA,UACA,SACA,aACA,eACA,YACA,eACA,WACA,WACA,kBACA,UACA,eACA,+BACA,cA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","sources":["webpack://_N_E/./components/Email.tsx","webpack://_N_E/./components/GiftAidConsent.tsx","webpack://_N_E/./components/FieldErrorMessage.tsx","webpack://_N_E/./data/countries.ts","webpack://_N_E/./components/AddressLookup.tsx","webpack://_N_E/./components/FormGroup.tsx","webpack://_N_E/./components/FormFields.tsx","webpack://_N_E/./components/OptIn.tsx","webpack://_N_E/./components/ErrorBox.tsx","webpack://_N_E/./components/GetSelectOptions.tsx","webpack://_N_E/./data/titles.ts","webpack://_N_E/./helpers/yupMethods.ts","webpack://_N_E/./schema/giftaid.ts","webpack://_N_E/./components/GiftAidForm.tsx","webpack://_N_E/./components/PhoneNumber.tsx","webpack://_N_E/./contexts/GiftAidFormContext.tsx","webpack://_N_E/./data/giftaidConfig.ts","webpack://_N_E/./helpers/functions.tsx","webpack://_N_E/./helpers/regexp.ts","webpack://_N_E/./helpers/useDataLayer.ts","webpack://_N_E/./styles/styles.ts","webpack://_N_E/"],"sourcesContent":["import { type ReactElement } from \"react\";\n\ntype EmailProps = {\n mailto?: string;\n children: string;\n};\n\nconst Email = ({ mailto, children }: EmailProps): ReactElement => (\n {children}\n);\n\nexport default Email;\n","\"use client\";\n\n// DEPENDENCIES\nimport { type FieldErrors, type UseFormRegister } from \"react-hook-form\";\nimport styled from \"styled-components\";\n\n// COMPONENTS\nimport {\n Box,\n Checkbox,\n Heading,\n type ThemeType,\n} from \"@cruk/cruk-react-components\";\n\n// HELPERS\nimport useDataLayer from \"../helpers/useDataLayer\";\n\n// TYPES\nimport { type GiftaidInputs } from \"../types/types\";\n\ntype GiftAidConsentTypes = {\n isRequired?: boolean;\n register: UseFormRegister;\n errors: FieldErrors;\n};\n\nconst GiftAidLogo = styled.div`\n width: 200px;\n margin-bottom: ${({ theme }: { theme: ThemeType }) => theme.spacing.xs};\n`;\n\nconst GiftAidConsent = ({\n isRequired,\n register,\n errors,\n}: GiftAidConsentTypes) => {\n const { pushInteraction } = useDataLayer();\n\n return (\n \n \n \"giftaid\n \n Boost your donation by 25%\n\n {\n pushInteraction(\"Gift aid\", e.target.checked ? \"yes\" : \"no\");\n },\n })}\n >\n Yes I would like Cancer Research UK to claim Gift Aid on my donation{\" \"}\n {isRequired ? \"(required)\" : \"\"}\n \n\n

\n I want to Gift Aid my donation and any donations I make in the future or\n have made in the past 4 years, to Cancer Research UK. I am a UK taxpayer\n and understand that if I pay less Income Tax and/or Capital Gains Tax\n than the amount of Gift Aid claimed on all of my donations in that tax\n year it is my responsibility to pay any difference. Cancer Research UK\n will claim 25p on every £1 donated.\n

\n
\n );\n};\n\nexport default GiftAidConsent;\n","import React, {\n type PropsWithChildren,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { type ThemeType } from \"@cruk/cruk-react-components\";\n\nconst Error = styled.p`\n display: block;\n width: 100%;\n color: ${({ theme }: { theme: ThemeType }) => theme.colors.textError};\n margin: ${({ theme }: { theme: ThemeType }) => 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","export const countriesList = [\n \"Afghanistan\",\n \"Aland Islands\",\n \"Albania\",\n \"Algeria\",\n \"American Samoa\",\n \"Andorra\",\n \"Angola\",\n \"Anguilla\",\n \"Antarctica\",\n \"Antigua and Barbuda\",\n \"Argentina\",\n \"Armenia\",\n \"Aruba\",\n \"Australia\",\n \"Austria\",\n \"Azerbaijan\",\n \"Bahamas\",\n \"Bahrain\",\n \"Bangladesh\",\n \"Barbados\",\n \"Belarus\",\n \"Belgium\",\n \"Belize\",\n \"Benin\",\n \"Bermuda\",\n \"Bhutan\",\n \"Bolivia\",\n \"Bonaire St Eustatius and Saba\",\n \"Bosnia and Herzegovina\",\n \"Botswana\",\n \"Bouvet Island\",\n \"Brazil\",\n \"British Indian Ocean Territory\",\n \"British Virgin Islands\",\n \"Brunei Darussalam\",\n \"Bulgaria\",\n \"Burkina Faso\",\n \"Burundi\",\n \"Cambodia\",\n \"Cameroon\",\n \"Canada\",\n \"Cape Verde\",\n \"Cayman Islands\",\n \"Central African Republic\",\n \"Chad\",\n \"Chile\",\n \"China\",\n \"Christmas Island\",\n \"Cocos Islands\",\n \"Colombia\",\n \"Comoros\",\n \"Congo\",\n \"Cook Islands\",\n \"Costa Rica\",\n \"Cote D Ivoire\",\n \"Croatia\",\n \"Cuba\",\n \"Curacao\",\n \"Cyprus\",\n \"Czech Republic\",\n \"Democratic Republic of Congo\",\n \"Denmark\",\n \"Djibouti\",\n \"Dominica\",\n \"Dominican Republic\",\n \"Ecuador\",\n \"Egypt\",\n \"El Salvador\",\n \"Equatorial Guinea\",\n \"Eritrea\",\n \"Estonia\",\n \"Ethiopia\",\n \"Falkland Islands\",\n \"Faroe Islands\",\n \"Federated States of Micronesia\",\n \"Fiji\",\n \"Finland\",\n \"France\",\n \"French Guiana\",\n \"French Polynesia\",\n \"French Southern Territories\",\n \"Gabon\",\n \"Gambia\",\n \"Georgia\",\n \"Germany\",\n \"Ghana\",\n \"Gibraltar\",\n \"Greece\",\n \"Greenland\",\n \"Grenada\",\n \"Guadeloupe\",\n \"Guam\",\n \"Guatemala\",\n \"Guernsey\",\n \"Guinea\",\n \"Guinea-Bissau\",\n \"Guyana\",\n \"Haiti\",\n \"Heard Island McDonald islands\",\n \"Holy See\",\n \"Honduras\",\n \"Hong Kong\",\n \"Hungary\",\n \"Iceland\",\n \"India\",\n \"Indonesia\",\n \"Iran\",\n \"Iraq\",\n \"Ireland\",\n \"Isle of Man\",\n \"Israel\",\n \"Italy\",\n \"Jamaica\",\n \"Japan\",\n \"Jersey\",\n \"Jordan\",\n \"Kazakhstan\",\n \"Kenya\",\n \"Kiribati\",\n \"Korea DPR\",\n \"Korea Republic of\",\n \"Kuwait\",\n \"Kyrgyzstan\",\n \"Lao PDR\",\n \"Latvia\",\n \"Lebanon\",\n \"Lesotho\",\n \"Liberia\",\n \"Libya\",\n \"Liechtenstein\",\n \"Lithuania\",\n \"Luxembourg\",\n \"Macao\",\n \"Macedonia\",\n \"Madagascar\",\n \"Malawi\",\n \"Malaysia\",\n \"Maldives\",\n \"Mali\",\n \"Malta\",\n \"Marshall Islands\",\n \"Martinique\",\n \"Mauritania\",\n \"Mauritius\",\n \"Mayotte\",\n \"Mexico\",\n \"Moldova\",\n \"Monaco\",\n \"Mongolia\",\n \"Montenegro\",\n \"Montserrat\",\n \"Morocco\",\n \"Mozambique\",\n \"Myanmar\",\n \"Namibia\",\n \"Nauru\",\n \"Nepal\",\n \"Netherlands\",\n \"New Caledonia\",\n \"New Zealand\",\n \"Nicaragua\",\n \"Niger\",\n \"Nigeria\",\n \"Niue\",\n \"Norfolk Island\",\n \"Northern Mariana Islands\",\n \"Norway\",\n \"Oman\",\n \"Pakistan\",\n \"Palau\",\n \"Palestinian Territory Occupied\",\n \"Panama\",\n \"Papua New Guinea\",\n \"Paraguay\",\n \"Peru\",\n \"Philippines\",\n \"Pitcairn\",\n \"Poland\",\n \"Portugal\",\n \"Puerto Rico\",\n \"Qatar\",\n \"Reunion\",\n \"Romania\",\n \"Russian Federation\",\n \"Rwanda\",\n \"Saint Barthelemy\",\n \"St Helena Ascension Tristan DC\",\n \"Saint Kitts and Nevis\",\n \"Saint Lucia\",\n \"Saint Martin\",\n \"Saint Pierre and Miquelon\",\n \"St Vincent and the Grenadines\",\n \"Samoa\",\n \"San Marino\",\n \"Sao Tome and Principe\",\n \"Saudi Arabia\",\n \"Senegal\",\n \"Serbia\",\n \"Seychelles\",\n \"Sierra Leone\",\n \"Singapore\",\n \"Sint Maarten\",\n \"Slovakia\",\n \"Slovenia\",\n \"Solomon Islands\",\n \"Somalia\",\n \"South Africa\",\n \"S Georgia S Sandwich Islands\",\n \"South Sudan\",\n \"Spain\",\n \"Sri Lanka\",\n \"Sudan\",\n \"Suriname\",\n \"Svalbard and Jan Mayen\",\n \"Swaziland\",\n \"Sweden\",\n \"Switzerland\",\n \"Syrian Arab Republic\",\n \"Taiwan\",\n \"Tajikistan\",\n \"Tanzania\",\n \"Thailand\",\n \"Timor-Leste\",\n \"Togo\",\n \"Tokelau\",\n \"Tonga\",\n \"Trinidad and Tobago\",\n \"Tunisia\",\n \"Turkey\",\n \"Turkmenistan\",\n \"Turks and Caicos Islands\",\n \"Tuvalu\",\n \"Uganda\",\n \"Ukraine\",\n \"United Arab Emirates\",\n \"United Kingdom\",\n \"United States\",\n \"US Minor Outlying Islands\",\n \"Uruguay\",\n \"US Virgin Islands\",\n \"Uzbekistan\",\n \"Vanuatu\",\n \"Venezuela\",\n \"Vietnam\",\n \"Wallis and Futuna\",\n \"Western Sahara\",\n \"Yemen\",\n \"Zambia\",\n \"Zimbabwe\",\n];\n","\"use client\";\n\n// DEPENDENCIES\nimport { type ReactElement, useEffect, useRef, useState } from \"react\";\nimport {\n type UseFormRegister,\n type FieldErrors,\n type UseFormGetValues,\n type UseFormSetValue,\n type UseFormTrigger,\n type UseFormResetField,\n} from \"react-hook-form\";\nimport styled from \"styled-components\";\n\n// COMPONENTS\nimport {\n Button,\n ErrorText,\n TextField,\n Select,\n Box,\n} from \"@cruk/cruk-react-components\";\nimport FieldErrorMessage from \"./FieldErrorMessage\";\n\n// DATA\nimport { countriesList as countries } from \"../data/countries\";\n\n// HELPERS\nimport useDataLayer from \"../helpers/useDataLayer\";\nimport { getOptions, isNonMainlandPostcode } from \"../helpers/functions\";\n\n// STYLES\nimport { ButtonLink, InputsLayoutWrapper } from \"../styles/styles\";\n\n// TYPES\nimport { type GiftaidInputs } from \"../types/types\";\n\ninterface AddressLookupType {\n isUKOnly?: boolean;\n addressLookupErrorText?: string;\n updateAddressLookupErrorText?: (text: string) => void;\n touchedFields: GiftaidInputs;\n dirtyFields: GiftaidInputs;\n getValues: UseFormGetValues;\n resetField: UseFormResetField;\n setValue: UseFormSetValue;\n register: UseFormRegister;\n errors: FieldErrors;\n trigger: UseFormTrigger;\n}\n\ntype CountriesType = {\n name: string;\n code: string;\n}[];\n\ntype AddressItemType = {\n Description: string;\n Highlight: string;\n Type: string;\n Id: string;\n Text: string;\n};\n\ntype AddressesArrayType = {\n value: string;\n label: string;\n data: string;\n}[];\n\ntype AddressSearchType = {\n Description: string;\n Highlight: string;\n Id: string;\n Text: string;\n Type: string;\n Error?: string;\n};\n\ntype AddressRetrieveType = {\n Id: string;\n DomesticId: string;\n Language: string;\n LanguageAlternatives: string;\n Department: string;\n Company: string;\n SubBuilding: string;\n BuildingNumber: string;\n BuildingName: string;\n SecondaryStreet: string;\n Street: string;\n Block: string;\n Neighbourhood: string;\n District: string;\n City: string;\n Line1: string;\n Line2: string;\n Line3: string;\n Line4: string;\n Line5: string;\n AdminAreaName: string;\n AdminAreaCode: string;\n Province: string;\n ProvinceName: string;\n ProvinceCode: string;\n PostalCode: string;\n CountryName: string;\n CountryIso2: string;\n CountryIso3: string;\n CountryIsoNumber: boolean;\n SortingNumber1: string;\n SortingNumber2: string;\n Barcode: string;\n POBoxNumber: string;\n Label: string;\n Type: string;\n DataLevel: string;\n Field1: string;\n Field2: string;\n Field3: string;\n Field4: string;\n Field5: string;\n Field6: string;\n Field7: string;\n Field8: string;\n Field9: string;\n Field10: string;\n Field11: string;\n Field12: string;\n Field13: string;\n Field14: string;\n Field15: string;\n Field16: string;\n Field17: string;\n Field18: string;\n Field19: string;\n Field20: string;\n};\n\nconst ScreenReaderOnly = styled.div`\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\ntype InputTypes = {\n value:\n | \"addressLine1\"\n | \"addressLine2\"\n | \"addressLine3\"\n | \"city\"\n | \"postalCode\";\n label: string;\n required?: boolean;\n}[];\n\nconst inputs: InputTypes = [\n {\n value: \"addressLine1\",\n label: \"Address line 1\",\n required: true,\n },\n {\n value: \"addressLine2\",\n label: \"Address line 2\",\n },\n {\n value: \"addressLine3\",\n label: \"Address line 3\",\n },\n {\n value: \"city\",\n label: \"Town/City\",\n required: true,\n },\n];\n\nconst postcodeInput: InputTypes = [\n {\n value: \"postalCode\",\n label: \"Postcode\",\n required: true,\n },\n];\n\nconst AddressLookup = ({\n isUKOnly,\n addressLookupErrorText,\n updateAddressLookupErrorText,\n touchedFields,\n errors,\n getValues,\n register,\n resetField,\n setValue,\n trigger,\n}: AddressLookupType): ReactElement => {\n const postcodeValue = \"postalCode\";\n const postcodeLabel = \"Postcode\";\n const inputSet = \"home\";\n const hintText = \"Please enter a valid UK postcode to find address\";\n const addressSelectField = \"addressSelection\";\n const FIND_URL =\n \"https://api.addressy.com/Capture/Interactive/Find/v1.1/json3.ws\";\n const RETRIEVE_URL =\n \"https://api.addressy.com/Capture/Interactive/Retrieve/v1/json3.ws\";\n const apiKey = process.env.LOQATE_KEY || process.env.LOQATE_KEY;\n const [addressOptions, setAddressOptions] = useState(\n [] as AddressesArrayType,\n );\n const [activeOption, setActiveOption] = useState(\"\");\n const [addressFieldsVisible, setAddressFieldsVisible] = useState(false);\n const [manualFieldsVisible, setManualFieldsVisible] = useState(false);\n const [addressSearchStatus, setAddressSearchStatus] = useState(\"\"); // \"\" | \"manual\" | \"retrieve\" | \"search\"\n const { pushInteraction, pushError } = useDataLayer();\n const loqateCountries: CountriesType = [\n {\n name: \"United Kingdom\",\n code: \"GBR\",\n },\n {\n name: \"Jersey\",\n code: \"JEY\",\n },\n {\n name: \"Guernsey\",\n code: \"GGY\",\n },\n {\n name: \"Isle of Man\",\n code: \"IMN\",\n },\n ];\n const countriesList = isUKOnly\n ? \"GBR\"\n : Object.keys(loqateCountries)\n .map(\n (i) =>\n // @ts-expect-error\n loqateCountries[i].code as string,\n )\n .join(\",\");\n const fieldSet = manualFieldsVisible ? [...inputs, ...postcodeInput] : inputs;\n const buttonRef = useRef(null);\n\n useEffect(() => {\n setValue(\"addressSearchStatus\", addressSearchStatus);\n /* if (inputSet === \"home\") {\n setValue(\"addressSearchStatus\", addressSearchStatus);\n } else {\n setValue(\"billingAddressSearchStatus\", addressSearchStatus);\n } */\n\n addressSearchStatus === \"retrieve\"\n ? setAddressFieldsVisible(true)\n : setAddressFieldsVisible(false);\n addressSearchStatus === \"manual\"\n ? setManualFieldsVisible(true)\n : setManualFieldsVisible(false);\n }, [addressSearchStatus]);\n\n useEffect(() => {\n if (!activeOption) return;\n retrieve(activeOption);\n }, [activeOption]);\n\n const clearOptions = () => {\n setActiveOption(\"\");\n setAddressOptions([]);\n };\n\n // check if first two characters of a string parameter is 'IM', 'JE' or 'GG'\n const isChannelIslands = (address: string) => isNonMainlandPostcode(address);\n\n const search = (query: string, countryCode: string, id = \"\") => {\n if (query?.length === 0) return setAddressOptions([]);\n fetch(\n `${FIND_URL}?Key=${apiKey}&Text=${query}&Container=${id}&Countries=${countryCode}`,\n )\n .then((res: Response) => {\n if (!res.ok) {\n console.error(\"Error\", \"Something went wrong please try again\");\n }\n return res.json();\n })\n .then((data: { Items: AddressSearchType[] }) => {\n if (isUKOnly) {\n // isUKOnly is used for Gift Aid forms - allow lookup for mainland only\n if (data.Items[0].Type === \"Postcode\") {\n const addressesArray = data.Items.map(\n (item: AddressItemType) => item.Text,\n );\n if (isChannelIslands(addressesArray[0])) {\n if (updateAddressLookupErrorText)\n updateAddressLookupErrorText(\n \"Please provide a UK mainland address\",\n );\n return clearOptions();\n }\n } else {\n const addressArray = data.Items[0].Description.split(\",\");\n const postcodeString = addressArray[addressArray.length - 1].trim();\n if (!isChannelIslands(postcodeString)) {\n if (updateAddressLookupErrorText)\n updateAddressLookupErrorText(\"\");\n } else {\n if (updateAddressLookupErrorText)\n updateAddressLookupErrorText(\n \"Please provide a UK mainland address\",\n );\n return clearOptions();\n }\n }\n }\n\n setAddressSearchStatus(\"search\");\n\n if (data.Items[0]?.Error) {\n return console.error(data.Items[0]);\n }\n\n if (data.Items[0].Type === \"Postcode\") {\n search(getValues(\"postalCode\"), countriesList, data.Items[0].Id);\n } else {\n const addressesArray = [] as AddressesArrayType;\n for (const item of data.Items) {\n const keyValueObject = {\n value: \"\",\n label: \"\",\n data: \"\",\n };\n keyValueObject.value = item.Id;\n keyValueObject.data = item.Type;\n const itemText = item.Text;\n const itemDesc = item.Description;\n if ((itemText + itemDesc).length < 90) {\n keyValueObject.label = `${item.Text}, ${item.Description}`; // eslint-disable-line @typescript-eslint/restrict-template-expressions\n } else {\n keyValueObject.label = item.Text;\n }\n addressesArray.push(keyValueObject);\n }\n\n setAddressOptions(addressesArray);\n setActiveOption(\"\");\n }\n })\n .catch((err) => console.error(err));\n };\n\n const retrieve = (id: string) => {\n fetch(`${RETRIEVE_URL}?Key=${apiKey}&Id=${id}`)\n .then((res: Response) => {\n if (!res.ok) {\n console.error(\"Error\", \"Something went wrong please try again\");\n }\n return res.json();\n })\n .then((data: { Items: AddressRetrieveType[] }) => {\n setAddressSearchStatus(\"retrieve\");\n let field3 = data.Items[0].Line3;\n if (data.Items[0].Line4) field3 += `, ${data.Items[0].Line4}`; // eslint-disable-line @typescript-eslint/restrict-template-expressions\n if (data.Items[0].Line5) field3 += `, ${data.Items[0].Line5}`; // eslint-disable-line @typescript-eslint/restrict-template-expressions\n clearOptions();\n data.Items[0].Company\n ? setValue(\n \"addressLine1\",\n `${data.Items[0].Company}, ${data.Items[0].Line1}`,\n {\n shouldTouch: true,\n shouldValidate: true,\n }, // eslint-disable-line @typescript-eslint/restrict-template-expressions\n )\n : setValue(\"addressLine1\", data.Items[0].Line1, {\n shouldTouch: true,\n shouldValidate: true,\n });\n setValue(\"addressLine2\", data.Items[0].Line2, {\n shouldTouch: true,\n shouldValidate: true,\n });\n setValue(\"addressLine3\", field3, {\n shouldTouch: true,\n shouldValidate: true,\n });\n setValue(\"city\", data.Items[0].City, {\n shouldTouch: true,\n shouldValidate: true,\n });\n setValue(\"postalCode\", data.Items[0].PostalCode, {\n shouldTouch: true,\n shouldValidate: true,\n });\n if (countries.includes(data.Items[0].CountryName)) {\n setValue(\"country\", data.Items[0].CountryName, {\n shouldTouch: true,\n shouldValidate: true,\n });\n }\n setValue(\"validationStatus\", \"VB\");\n })\n .catch((err) => console.error(err));\n };\n\n return (\n <>\n {!manualFieldsVisible ? (\n <>\n \n {\n if (e.code === \"Enter\") {\n e.preventDefault();\n buttonRef.current?.click();\n }\n return true;\n }}\n {...register(postcodeValue, {\n onChange: () => {\n if (\n addressSearchStatus === \"retrieve\" ||\n addressSearchStatus === \"search\"\n ) {\n setAddressSearchStatus(\"\");\n setAddressOptions([]);\n fieldSet.forEach((fieldName) =>\n resetField(fieldName.value),\n );\n setValue(addressSelectField, \"\");\n }\n if (inputSet === \"home\") setValue(\"validationStatus\", \"NV\");\n },\n })}\n />\n \n {!!addressOptions.length &&\n `We have found ${addressOptions.length} result${\n addressOptions.length !== 1 && \"s\"\n } matching your search. Use the select dropdown to choose your address.`}\n {addressSearchStatus === \"retrieve\" &&\n `Your address selection has been applied.`}\n \n \n \n {\n setValue(addressSelectField, \"\");\n if (!errors[postcodeValue]) {\n search(getValues(postcodeValue), countriesList, \"\");\n fieldSet.forEach((field) => resetField(field.value));\n }\n /* const setPostcodeTouched =\n inputSet === \"home\"\n ? setFieldTouched(\"postalCode\")\n : setFieldTouched(\"billingPostalCode\");\n setPostcodeTouched.catch((error: any) => console.error(error)); */\n pushInteraction(\n `Find ${\n inputSet === \"home\" ? \"address\" : \"billing address\"\n } button`,\n \"clicked\",\n );\n }}\n >\n Find address\n \n \n {addressLookupErrorText ? (\n
\n \n {addressLookupErrorText}\n \n
\n ) : (\n \"\"\n )}\n {addressOptions.length > 0 ||\n // @ts-expect-error\n getValues([\n inputSet === \"home\"\n ? \"addressSearchStatus\"\n : \"billingAddressSearchStatus\",\n ]) === \"search\" ? (\n \n \n {\n if (errors[addressSelectField]) {\n pushError(\n \"\",\n \"validation\",\n `${addressSelectField}: ${errors[addressSelectField]?.message}`,\n );\n }\n },\n onChange: (e: React.ChangeEvent) => {\n const target = e.target as HTMLSelectElement;\n pushInteraction(\n `${\n inputSet === \"home\" ? \"Address\" : \"Billing address\"\n } selection`,\n \"selected\",\n );\n if (\n target.options[\n target.selectedIndex\n ].dataset.option?.toLowerCase() !== \"address\"\n ) {\n search(\n getValues(\"postalCode\"),\n countriesList,\n target.value,\n );\n setValue(addressSelectField, \"\");\n } else {\n setActiveOption(target.value);\n }\n },\n })}\n >\n {getOptions(addressOptions, \"Select address\")}\n \n \n \n ) : (\n \"\"\n )}\n \n ) : (\n \"\"\n )}\n\n {!addressFieldsVisible && !manualFieldsVisible ? (\n <>\n

\n To enter address manually{\" \"}\n {!isUKOnly ? \"or to enter an address outside the UK, \" : \"\"}\n use the link below\n

\n {\n if (updateAddressLookupErrorText)\n updateAddressLookupErrorText(\"\");\n setAddressFieldsVisible(true);\n setManualFieldsVisible(true);\n setAddressSearchStatus(\"manual\");\n pushInteraction(\n `Enter ${\n inputSet === \"home\" ? \"address\" : \"billing address\"\n } manually`,\n \"clicked\",\n );\n }}\n >\n Enter address manually\n \n \n ) : (\n \"\"\n )}\n\n {addressFieldsVisible || manualFieldsVisible ? (\n <>\n {fieldSet.map((input, index) => {\n const fieldError = errors[input.value];\n\n return (\n \n \n {\n if (input.value === \"city\") {\n inputs\n .filter(({ value }) => value !== \"city\")\n .forEach(({ value }) => {\n if (getValues(value) !== \"\")\n trigger(value).catch((err) =>\n console.error(err),\n );\n });\n }\n\n if (fieldError) {\n pushError(\n \"\",\n \"validation\",\n `${input.value}: ${fieldError?.message}`,\n );\n }\n },\n onChange: () => {\n if (inputSet === \"home\") {\n setValue(\"validationStatus\", \"NV\");\n }\n },\n })}\n />\n \n \n );\n })}\n \n \n {isUKOnly ? (\n \n ) : (\n countries.map((country: string) => (\n \n ))\n )}\n \n \n \n ) : (\n \"\"\n )}\n \n );\n};\n\nexport default AddressLookup;\n","import React, { type FormHTMLAttributes, type ReactElement } from \"react\";\nimport styled from \"styled-components\";\nimport { type 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: ThemeType }) =>\n theme.utilities.contentMaxWidth};\n margin: 0 auto;\n padding: ${({ theme }: { theme: ThemeType }) => 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 React, {\n type PropsWithChildren,\n type ReactNode,\n type ReactElement,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { type ThemeType } from \"@cruk/cruk-react-components\";\n\nconst FormFieldsStyled = styled.div`\n margin: 0 auto;\n\n @media (min-width: ${({ theme }: { theme: ThemeType }) =>\n 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","// DEPENDENCIES\nimport { type ChangeEvent } from \"react\";\nimport styled from \"styled-components\";\nimport {\n type UseFormRegister,\n type UseFormWatch,\n type UseFormSetValue,\n} from \"react-hook-form\";\n\n// COMPONENTS\nimport {\n Heading,\n RadioConsent,\n Text,\n Box,\n Collapse,\n type ThemeType,\n} from \"@cruk/cruk-react-components\";\nimport Email from \"./Email\";\nimport PhoneNumber from \"./PhoneNumber\";\nimport FormGroup from \"./FormGroup\";\nimport FormFields from \"./FormFields\";\nimport { useGiftAidFormData } from \"../contexts/GiftAidFormContext\";\n\n// HELPERS\nimport useDataLayer from \"../helpers/useDataLayer\";\n\n// TYPES\nimport { type GiftaidInputs } from \"../types/types\";\n\ntype OptInTypes = {\n register: UseFormRegister;\n watch: UseFormWatch;\n setValue: UseFormSetValue;\n};\n\nconst StyledCollapse = styled.div`\n button {\n min-height: 0;\n }\n`;\n\nconst RadioButtonGroup = styled.div`\n width: 100%;\n`;\n\nconst JoinUsText = styled.div`\n font-weight: bold;\n margin-bottom: 1.5rem;\n`;\n\nconst HiddenText = styled.span`\n position: absolute !important;\n height: 1px;\n width: 1px;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n white-space: nowrap;\n`;\n\nconst OptInFlex = styled.div`\n @media (min-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.tablet}) {\n max-width: 70%;\n }\n\n @media (max-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.tablet}) {\n label {\n margin-left: ${({ theme }: { theme: ThemeType }) => theme.spacing.xs};\n }\n }\n\n legend {\n font-weight: bold;\n display: inline-block;\n margin-right: ${({ theme }: { theme: ThemeType }) => theme.spacing.xs};\n width: 3rem;\n padding-top: 0.8rem;\n }\n\n fieldset {\n margin-top: 0;\n }\n\n > div {\n display: inline-block;\n margin-right: ${({ theme }: { theme: ThemeType }) => theme.spacing.xs};\n width: auto;\n &:last-child {\n margin-right: 0;\n margin-bottom: 1.5rem;\n }\n }\n\n @media (max-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.mobile}) {\n label {\n padding: ${({ theme }: { theme: ThemeType }) => theme.spacing.xxs}\n ${({ theme }: { theme: ThemeType }) => theme.spacing.xs}\n ${({ theme }: { theme: ThemeType }) => theme.spacing.xxs}\n ${({ theme }: { theme: ThemeType }) => theme.spacing.xl};\n }\n }\n`;\n\nconst OptIn = ({ register, watch, setValue }: OptInTypes) => {\n const { form } = useGiftAidFormData();\n const { pushInteraction } = useDataLayer();\n const watchEmailOptIn = watch(\"emailOptIn\", form.emailOptIn);\n const watchPostOptIn = watch(\"postOptIn\", form.postOptIn);\n const watchTextOptIn = watch(\"textOptIn\", form.textOptIn);\n const watchPhoneOptIn = watch(\"phoneOptIn\", form.phoneOptIn);\n\n return (\n \n \n Staying in touch with us\n

\n Help us bring forward the day when all cancers are cured. Hear about\n our latest breakthroughs, campaigns and how you can support our life\n saving work.\n

\n

\n We may contact you by post or phone unless you select ‘No’\n below.\n

\n \n
\n \n Would you like to hear from us by \n \n \n ) => {\n // @ts-expect-error\n setValue(\"emailOptIn\", e.target.value);\n pushInteraction(`Opt in: email`, e.target.value);\n },\n })}\n legend=\"Email\"\n attributes={[\n {\n option: \"Yes\",\n value: \"yes\",\n },\n {\n option: \"No\",\n value: \"no\",\n },\n ]}\n selectedValue={watchEmailOptIn}\n />\n ) => {\n // @ts-expect-error\n setValue(\"textOptIn\", e.target.value);\n pushInteraction(`Opt in: text`, e.target.value);\n },\n })}\n legend=\"Text\"\n attributes={[\n {\n option: \"Yes\",\n value: \"yes\",\n },\n {\n option: \"No\",\n value: \"no\",\n },\n ]}\n selectedValue={watchTextOptIn}\n />\n ) => {\n // @ts-expect-error\n setValue(\"phoneOptIn\", e.target.value);\n pushInteraction(`Opt in: phone`, e.target.value);\n },\n })}\n legend=\"Phone\"\n attributes={[\n {\n option: \"Yes\",\n value: \"yes\",\n },\n {\n option: \"No\",\n value: \"no\",\n },\n ]}\n selectedValue={watchPhoneOptIn}\n />\n ) => {\n // @ts-expect-error\n setValue(\"postOptIn\", e.target.value);\n pushInteraction(`Opt in: post`, e.target.value);\n },\n })}\n legend=\"Post\"\n attributes={[\n {\n option: \"Yes\",\n value: \"yes\",\n },\n {\n option: \"No\",\n value: \"no\",\n },\n ]}\n selectedValue={watchPostOptIn}\n />\n \n
\n
\n Change your mind at any time\n

\n Contact us on 0300 123 3379 or{\" \"}\n preferences@cancer.org.uk or via{\" \"}\n \n this form\n \n .\n

\n\n

\n Your details are safe with us. Check out our{\" \"}\n \n Privacy Policy\n {\" \"}\n for more details.\n

\n\n

\n To make our fundraising efforts effective, we may research you using\n publicly available sources.\n

\n \n {\n pushInteraction(\n \"Accordion: Publicly available sources\",\n isOpen ? \"Open\" : \"Close\",\n );\n }}\n >\n \n \n Examples of publicly available sources we may use include public\n registers, corporate websites, the news or social media.\n \n \n This information is stored securely and protected from\n unauthorised access or disclosure. Find out more in our{\" \"}\n \n privacy policy\n \n . If you don’t want us to do this research in relation to\n you, you can tell us anytime by contacting{\" \"}\n 0300 123 3379 or{\" \"}\n preferences@cancer.org.uk.\n \n \n \n \n\n

\n We may try to obtain up-to-date contact details for you using external\n sources if you move house, so that we can stay in touch.\n

\n\n \n {\n pushInteraction(\n \"Accordion: Up-to-date contact details\",\n isOpen ? \"Open\" : \"Close\",\n );\n }}\n >\n \n \n We may try to obtain up-to-date contact details for you using\n external sources such as 3rd party organisations (if you\n previously provided consent to share your data), or the post\n office national change of address database. This means that we\n can ensure we have an accurate record of our supporters and\n ensure that we continue to communicate with you in accordance\n with your wishes.\n \n \n If you don’t want us to do this research in relation to\n you, you can tell us anytime by contacting{\" \"}\n 0300 123 3379 or{\" \"}\n preferences@cancer.org.uk.\n \n \n \n \n
\n
\n );\n};\nexport default OptIn;\n","import { Box, type ThemeType } from \"@cruk/cruk-react-components\";\nimport styled from \"styled-components\";\n\nconst ErrorBox = styled(Box)`\n border: 4px solid\n ${({ theme }: { theme: ThemeType }) => theme.tokenColors.red};\n padding: 0 ${({ theme }: { theme: ThemeType }) => 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","type SelectOptionsType = {\n value: string;\n label: string;\n data?: string;\n};\ninterface SelectOptionsProps {\n options: SelectOptionsType[];\n defaultSelectOption?: string;\n}\n\nconst GetSelectOptions = ({\n options,\n defaultSelectOption,\n}: SelectOptionsProps): React.ReactNode =>\n options ? (\n <>\n \n {options.map((option: SelectOptionsType) => (\n \n {option.label}\n \n ))}\n \n ) : null;\n\nexport default GetSelectOptions;\n","const titles = [\n {\n value: \"dr\",\n label: \"Dr\",\n },\n {\n value: \"mr\",\n label: \"Mr\",\n },\n {\n value: \"mrs\",\n label: \"Mrs\",\n },\n {\n value: \"miss\",\n label: \"Miss\",\n },\n {\n value: \"ms\",\n label: \"Ms\",\n },\n {\n value: \"mx\",\n label: \"Mx\",\n },\n {\n value: \"null\",\n label: \"Other\",\n },\n];\n\nexport default titles;\n","import * as yup from \"yup\";\n\nexport const minMax = yup.addMethod(\n yup.string,\n \"minMax\",\n function (message: string, min: number, max: number) {\n return this.test(\"minMax\", message, (value): boolean => {\n if (value) {\n return value.length >= min && value.length <= max;\n }\n return true;\n });\n },\n);\n\nexport const negativeMatch = yup.addMethod(\n yup.string,\n \"negativeMatch\",\n function (message: string, regex: RegExp) {\n return this.test(\"negativeMatch\", message, (value): boolean => {\n if (value) {\n return !regex.test(value);\n }\n return false;\n });\n },\n);\n\nexport const notOnlyNum = yup.addMethod(\n yup.string,\n \"notOnlyNum\",\n function (message: string) {\n return this.test(\n \"notOnlyNum\",\n message,\n (value): boolean => !value || Number.isNaN(Number(value)),\n );\n },\n);\n\nexport const addressFieldEdgeCase = yup.addMethod(\n yup.string,\n \"addressFieldEdgeCase\",\n function (message: string, regex: RegExp, field: string, field2: string) {\n // address line 1 matches address line 2\n return this.test(\n \"addressFieldEdgeCase\",\n message,\n (value: string | undefined): boolean => {\n const addressField = document.getElementsByName(\n field,\n )[0] as HTMLInputElement;\n const addressField2 = document.getElementsByName(\n field2,\n )[0] as HTMLInputElement;\n if (\n value &&\n regex.test(value) &&\n addressField?.value === \"\" &&\n addressField2?.value === \"\"\n ) {\n return false;\n }\n return true;\n },\n );\n },\n);\n\nexport const equalsOtherField = yup.addMethod(\n yup.string,\n \"equalsOtherField\",\n function (message: string, field: string) {\n return this.test(\n \"equalsOtherField\",\n message,\n (value: string | undefined): boolean => {\n const comparisonField = document.getElementsByName(\n field,\n )[0] as HTMLInputElement;\n if (comparisonField && value) {\n return (\n comparisonField.value.trim().toLowerCase() !==\n value.trim().toLowerCase()\n );\n }\n return true;\n },\n );\n },\n);\n\nexport const firstDigitCheck = yup.addMethod(\n yup.string,\n \"firstDigitCheck\",\n function (message: string) {\n return this.test(\n \"firstDigitCheck\",\n message,\n (value: string | undefined): boolean => {\n if (value) {\n const firstTwoNumbers = value.substring(0, 2);\n return message.includes(\"mobile\")\n ? firstTwoNumbers === \"07\"\n : firstTwoNumbers === \"01\" ||\n firstTwoNumbers === \"02\" ||\n firstTwoNumbers === \"07\";\n }\n return true;\n },\n );\n },\n);\n\nexport const ukOnlyMobileNumber = yup.addMethod(\n yup.string,\n \"ukOnlyMobileNumber\",\n function (message: string) {\n const disallowedPrefixes = [\n \"07797\",\n \"07624\",\n \"07524\",\n \"07924\",\n \"07781\",\n \"07839\",\n \"07911\",\n \"07509\",\n \"07937\",\n \"07700\",\n \"07829\",\n ];\n return this.test(\n \"ukOnlyMobileNumber\",\n message,\n (value: string | undefined): boolean => {\n if (value) {\n const trimmedVal = value.trim().replace(/\\s/g, \"\");\n if (trimmedVal.startsWith(\"07\")) {\n const firstFiveNumbers = trimmedVal.substring(0, 5);\n if (disallowedPrefixes.includes(firstFiveNumbers)) {\n return false;\n }\n return true;\n }\n return false;\n }\n return true;\n },\n );\n },\n);\n","import * as yup from \"yup\";\nimport { isUkCountry, isNonMainlandPostcode } from \"../helpers/functions\";\nimport {\n addressLine1RegExp,\n addressLine23RegExp,\n andRegExp,\n cityRegExp,\n extraEmailRegExp,\n nameRegExp,\n nameExcludedRegExp,\n phoneRegExp,\n postcodeIntlRegExp,\n postcodeUkRegExp,\n singleCharRegExp,\n} from \"../helpers/regexp\";\nimport \"../helpers/yupMethods\";\n\nexport const GiftAidFormSchema = yup.object().shape({\n giftAid: yup\n .boolean()\n .oneOf(\n [true],\n \"Please tick the Gift Aid box if you would like us to be able to claim.\",\n ),\n title: yup.string(),\n forename: yup\n .string()\n .trim()\n .required(\"Please enter your first name.\")\n .max(\n 50,\n \"Please enter your first name, over 50 characters is not accepted.\",\n )\n .matches(nameRegExp, {\n message: \"Please only use letters and hyphens.\",\n })\n // @ts-expect-error\n .negativeMatch(\n \"Please enter your first name, this cannot contain the word 'and'.\",\n andRegExp,\n )\n .negativeMatch(\"Please enter a valid first name.\", nameExcludedRegExp),\n surname: yup\n .string()\n .trim()\n .required(\"Please enter your last name.\")\n .matches(nameRegExp, {\n message: \"Please only use letters and hyphens.\",\n })\n // @ts-expect-error\n .minMax(\"Please enter your last name between 2 - 50 characters.\", 2, 50)\n .negativeMatch(\n \"Please enter your last name, this cannot contain the word 'and'.\",\n andRegExp,\n )\n .negativeMatch(\"Please enter a valid last name.\", nameExcludedRegExp),\n emailAddress: yup\n .string()\n .trim()\n .email(\"Please enter a valid email address.\")\n .required(\"Please enter a valid email address.\")\n // @ts-expect-error\n .negativeMatch(\"Please enter a valid email address.\", extraEmailRegExp)\n .max(\n 100,\n \"Please enter your email address. Over 100 characters is not accepted.\",\n ),\n phoneNumber: yup\n .string()\n .trim()\n .required(\n \"Please enter the valid mobile phone number used to make your donation so we can identify your payment.\",\n )\n .matches(phoneRegExp, {\n message:\n \"Please enter the valid mobile phone number used to make your donation so we can identify your payment.\",\n excludeEmptyString: true,\n })\n // @ts-expect-error\n .minMax(\"Please enter your mobile number between 8 and 12 digits.\", 8, 12)\n .ukOnlyMobileNumber(\"Please enter a UK mainland mobile number.\"),\n addressLine1: yup\n .string()\n .trim()\n .required(\"Please complete address line 1.\")\n .matches(addressLine1RegExp, {\n message: \"Please only use letters, numbers and the following: - ' / . ,\",\n })\n .test(\n \"mimax\",\n \"Please enter address line 1 between 2 - 200 characters.\",\n (userInput) =>\n !userInput ||\n (!(userInput.replace(/[, ]/g, \"\").length < 2) &&\n !(userInput.replace(/[, ]/g, \"\").length > 200)),\n )\n // @ts-expect-error\n .notOnlyNum(\n \"Please complete address line 1 including your house number and street name.\",\n )\n .equalsOtherField(\"Town name should not appear in address line 1.\", \"city\")\n .addressFieldEdgeCase(\n \"Please enter address line 1 between 2 - 200 characters.\",\n singleCharRegExp,\n \"addressLine2\",\n \"addressLine3\",\n ),\n addressSelection: yup.string().when(\"addressSearchStatus\", {\n is: (value: string) => value === \"search\",\n then: (schema) => schema.required(\"Please select an address.\"),\n otherwise: (schema) => schema,\n }),\n addressSearchStatus: yup.string(),\n addressLine2: yup\n .string()\n .trim()\n .matches(addressLine23RegExp, {\n message: \"Please only use letters, numbers and the following: - ' / . ,\",\n excludeEmptyString: true,\n })\n .max(\n 100,\n \"Please enter address line 2. Over 100 characters is not accepted.\",\n )\n // @ts-expect-error\n .equalsOtherField(\"Town name should not appear in address line 2.\", \"city\"),\n addressLine3: yup\n .string()\n .trim()\n .matches(addressLine23RegExp, {\n message: \"Please only use letters, numbers and the following: - ' / . ,\",\n excludeEmptyString: true,\n })\n .max(\n 100,\n \"Please enter address line 3. Over 100 characters is not accepted.\",\n )\n // @ts-expect-error\n .equalsOtherField(\"Town name should not appear in address line 3.\", \"city\"),\n city: yup\n .string()\n .trim()\n .required(\"Please enter your town or city.\")\n .matches(cityRegExp, {\n message: \"Please only use letters and the following: - ' / .\",\n })\n .max(\n 50,\n \"Please enter your town or city. Over 50 characters is not accepted.\",\n ),\n postalCode: yup\n .string()\n .trim()\n .required(\"Please enter a valid postcode.\")\n // @ts-expect-error\n .minMax(\"Please enter a postcode between 2 - 8 characters.\", 2, 8)\n .test(\n \"isNonMainlandPostcode\",\n \"Please enter a UK mainland postcode.\",\n (userInput: string) => !userInput || !isNonMainlandPostcode(userInput),\n )\n .when(\"country\", {\n is: (country: string) => isUkCountry(country),\n // @ts-expect-error\n then: (schema) =>\n schema.trim().matches(postcodeUkRegExp, {\n message: \"Please enter a valid postcode.\",\n }),\n // @ts-expect-error\n otherwise: (schema) =>\n schema.trim().matches(postcodeIntlRegExp, {\n message: \"Please enter a valid postcode.\",\n }),\n }),\n country: yup.string().required(),\n validationStatus: yup.string().required(),\n emailOptIn: yup.string(),\n postOptIn: yup.string(),\n textOptIn: yup.string(),\n phoneOptIn: yup.string(),\n});\n\nexport const initialGiftAidFormValues = {\n title: \"\",\n forename: \"\",\n surname: \"\",\n emailAddress: \"\",\n phoneNumber: \"07\",\n addressLine1: \"\",\n addressSelection: \"\",\n addressSearchStatus: \"\",\n addressLine2: \"\",\n addressLine3: \"\",\n city: \"\",\n postalCode: \"\",\n country: \"United Kingdom\",\n validationStatus: \"NV\",\n emailOptIn: \"\",\n postOptIn: \"yes\",\n textOptIn: \"\",\n phoneOptIn: \"yes\",\n giftAid: false,\n};\n\nexport type GiftAidFormType = yup.InferType;\n","\"use client\";\n\n// DEPENDENCIES\nimport { type ReactNode, useState } from \"react\";\nimport { datadogRum } from \"@datadog/browser-rum\";\nimport styled from \"styled-components\";\nimport { useRouter } from \"next/navigation\";\nimport { useForm, type SubmitHandler } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { customAlphabet } from \"nanoid\";\n\n// COMPONENTS\nimport {\n Box,\n Button,\n Heading,\n TextField,\n Select,\n type ThemeType,\n} from \"@cruk/cruk-react-components\";\nimport { useGiftAidFormData } from \"../contexts/GiftAidFormContext\";\nimport GiftAidConsent from \"./GiftAidConsent\";\nimport AddressLookup from \"./AddressLookup\";\nimport OptIn from \"./OptIn\";\nimport ErrorBox from \"./ErrorBox\";\nimport PhoneNumber from \"./PhoneNumber\";\nimport GetSelectOptions from \"./GetSelectOptions\";\n\n// DATA\nimport titles from \"../data/titles\";\n\n// HELPERS\nimport useDataLayer from \"../helpers/useDataLayer\";\nimport { encrypt } from \"../helpers/functions\";\n\n// SCHEMA\nimport { GiftAidFormSchema } from \"../schema/giftaid\";\n\n// TYPES\nimport { type FormProps, type GiftaidInputs } from \"../types/types\";\nimport { InputsLayoutWrapper } from \"../styles/styles\";\nimport FormGroup from \"./FormGroup\";\nimport FormFields from \"./FormFields\";\n\nconst GiftAidBannerStyled = styled.div`\n margin-top: ${({ theme }: { theme: ThemeType }) => theme.spacing.s};\n padding: ${({ theme }: { theme: ThemeType }) =>\n `${theme.spacing.s} ${theme.spacing.s} ${theme.spacing.xs}`};\n background-color: ${({ theme }: { theme: ThemeType }) =>\n theme.tokenColors.grey_200};\n`;\n\nconst GiftAidBannerContainer = styled.div`\n max-width: ${({ theme }: { theme: ThemeType }) =>\n theme.utilities.contentMaxWidth};\n margin: 0 auto;\n padding: 0;\n`;\n\nconst GiftAidBannerContent = styled.div`\n @media (min-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.tablet}) {\n margin: 0 auto;\n width: 70%;\n }\n`;\n\nconst ResponseOutput = styled(ErrorBox)`\n padding: ${({ theme }: { theme: ThemeType }) => theme.spacing.xs}\n ${({ theme }: { theme: ThemeType }) => theme.spacing.s};\n`;\n\nconst Form = (props: FormProps) => {\n const { formName, config } = props;\n const { form, setForm } = useGiftAidFormData();\n const [responseOutput, setResponseOutput] = useState();\n const [addressLookupErrorText, setAddressLookupErrorText] = useState(\"\");\n const {\n getValues,\n setValue,\n handleSubmit,\n register,\n resetField,\n formState,\n watch,\n trigger,\n } = useForm({\n defaultValues: form,\n mode: \"onTouched\",\n // @ts-expect-error\n resolver: yupResolver(GiftAidFormSchema),\n });\n const { touchedFields, dirtyFields, isSubmitting, errors } = formState;\n const { sourceCode, letterCode, emailType } = config.admin;\n const [isRouting, setIsRouting] = useState(false);\n const { pushError } = useDataLayer();\n const router = useRouter();\n const nanoid = customAlphabet(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\", 12);\n const correlationId = nanoid();\n const genericErrorMessage = (\n \n Sorry, we couldn’t submit your details right now. Please try again\n later or call us on 0300 123 1022.\n \n );\n\n const updateAddressLookupErrorText = (text: string) => {\n setAddressLookupErrorText(text);\n };\n\n const onSubmit: SubmitHandler = async (data) => {\n sessionStorage.setItem(`name-${formName}`, getValues(\"forename\"));\n sessionStorage.setItem(`formData-${formName}`, JSON.stringify(data));\n setForm({ ...form, ...data });\n datadogRum.setUserProperty(\n \"name\",\n getValues(\"forename\") + \" \" + getValues(\"surname\"),\n );\n await submitTransaction(data).catch((err) => {\n setIsRouting(false);\n console.error(\"Error\", err);\n setResponseOutput(genericErrorMessage);\n datadogRum.addError(\"Giftaid form submission failure\", {\n errorType: \"payment\",\n error: err,\n });\n pushError(\"\", \"error\", \"Regular donation transaction failed\");\n });\n };\n\n const submitTransaction = async (values: GiftaidInputs) => {\n const signatureKey = process.env.GIFTAID_KEY || \"\";\n await fetch(`${process.env.API_GATEWAY_URL}smsgiftaidtransaction`, {\n body: JSON.stringify({\n correlationId,\n metadata: {\n ...values,\n admin: {\n source: sourceCode,\n letterCode,\n emailType,\n theme: config.themeName,\n },\n },\n signature: encrypt(signatureKey, correlationId, correlationId),\n }),\n method: \"POST\",\n })\n .then((res: Response) => {\n if (!res.ok) {\n setResponseOutput(genericErrorMessage);\n console.error(\"Error\", \"Something went wrong, please try again\");\n }\n return res.json();\n })\n .then((data) => {\n if (data.error) {\n setIsRouting(false);\n setResponseOutput(genericErrorMessage);\n datadogRum.addError(\"Giftaid API response error\", {\n errorType: \"API\",\n error: data.error,\n });\n pushError(\"\", \"error\", \"Giftaid API response error\");\n } else {\n datadogRum.setUserProperty(\"correlationId\", correlationId);\n setIsRouting(true);\n router.push(`/giftaid/${formName}/thanks`);\n }\n })\n .catch((err) => {\n setIsRouting(false);\n console.error(\"Error\", err);\n setResponseOutput(genericErrorMessage);\n datadogRum.addError(\"Giftaid form submission failure\", {\n errorType: \"payment\",\n error: err,\n });\n pushError(\"\", \"error\", \"Regular donation transaction failed\");\n });\n };\n\n return (\n <>\n \n \n \n \n Are you a UK taxpayer?\n \n

\n By completing the following form you will enable us to claim tax\n back on your donation. This will increase the value of your\n donation by 25p for every £1, helping bring forward the day when\n all cancers are cured.\n

\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n \n \n
\n \n \n Your details\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
\n
\n
\n \n \n \n {responseOutput ? (\n \n {responseOutput}\n \n ) : (\n \"\"\n )}\n\n {\n if (\n !!getValues(\"postalCode\") &&\n !errors.postalCode &&\n !getValues(\"addressLine1\") &&\n getValues(\"addressSearchStatus\") === \"\"\n ) {\n setAddressLookupErrorText(\"Please search for your address.\");\n document.querySelector(\"[name=postalCode]\")?.scrollIntoView();\n }\n }}\n >\n {isSubmitting || isRouting ? \"Submitting...\" : \"Submit\"}\n \n \n \n \n \n );\n};\n\nexport default Form;\n","import { type ReactElement } from \"react\";\nimport styled from \"styled-components\";\nimport { type ThemeType } from \"@cruk/cruk-react-components\";\nimport {\n internationalizePhoneNumber,\n removeMiddleSpaces,\n} from \"../helpers/functions\";\n\nconst PhoneNumberMobile = styled.a`\n @media (min-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.tablet}) {\n display: none;\n }\n`;\n\nconst PhoneNumberDesktop = styled.span`\n display: none;\n\n @media (min-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.tablet}) {\n display: inline;\n }\n`;\n\ntype PhoneNumberProps = {\n countryCallingCode?: string;\n children: string;\n};\n\nconst PhoneNumber = ({\n children,\n countryCallingCode,\n}: PhoneNumberProps): ReactElement => (\n <>\n \n {children}\n \n {children}\n \n);\n\nexport default PhoneNumber;\n","\"use client\";\n\nimport {\n type ReactNode,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport {\n type GiftaidInputs,\n type InitialGiftAidFormType,\n} from \"../types/types\";\n\nconst useGiftAidFormState = (value: GiftaidInputs) =>\n useState(value);\n\nexport const initialGiftAidFormValues: GiftaidInputs = {\n title: \"\",\n forename: \"\",\n surname: \"\",\n emailAddress: \"\",\n phoneNumber: \"07\",\n addressLine1: \"\",\n addressSelection: \"\",\n addressSearchStatus: \"\",\n addressLine2: \"\",\n addressLine3: \"\",\n city: \"\",\n postalCode: \"\",\n country: \"United Kingdom\",\n validationStatus: \"NV\",\n emailOptIn: \"\",\n postOptIn: \"yes\",\n textOptIn: \"\",\n phoneOptIn: \"yes\",\n giftAid: false,\n};\n\nexport const initialGiftaidContextValues: InitialGiftAidFormType = {\n form: initialGiftAidFormValues,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setForm() {},\n};\n\nexport const GiftAidFormContext = createContext(initialGiftaidContextValues);\n\nexport const useGiftAidFormData = () => {\n const { form, setForm } = useContext(GiftAidFormContext);\n if (!form) {\n throw new Error(\"useForm must be used within a FormProvider\");\n }\n return { form, setForm };\n};\n\nexport const GiftAidFormProvider = ({\n form: initialForm,\n children,\n}: {\n form: GiftaidInputs;\n children: ReactNode;\n}) => {\n const [form, setForm] = useGiftAidFormState(initialForm);\n const formFieldsMemoized = useMemo(() => ({ form, setForm }), [form]);\n return (\n \n {children}\n \n );\n};\n","import {\n su2cTheme,\n crukTheme,\n type ThemeType,\n} from \"@cruk/cruk-react-components\";\n\nenum Email {\n CRUK = \"cruk_sms_gift_aid_donation_confirmation\",\n SU2C = \"cruk_su2c_sms_gift_aid_donation_confirmation\",\n}\n\nexport type AdminType = {\n title: string;\n sourceCode: string;\n letterCode: string;\n emailType: Email;\n};\n\ntype FormNames =\n | \"cancer-research\"\n | \"cancer-research-ivr\"\n | \"stand-up-to-cancer\";\n\nexport type FormInfo = {\n admin: AdminType;\n themeName: string;\n theme: ThemeType;\n};\n\ntype FormConfigType = Record;\n\nexport const formConfig: FormConfigType = {\n \"cancer-research\": {\n admin: {\n title: \"Cancer Research UK\",\n sourceCode: \"GCRSMSGA\",\n letterCode: \"CA-CR-HM1-GA\",\n emailType: Email.CRUK,\n },\n themeName: \"CRUK\",\n theme: crukTheme,\n },\n \"cancer-research-ivr\": {\n admin: {\n title: \"Cancer Research UK\",\n sourceCode: \"GENDON\",\n letterCode: \"UNSDON\",\n emailType: Email.CRUK,\n },\n themeName: \"CRUK\",\n theme: crukTheme,\n },\n \"stand-up-to-cancer\": {\n admin: {\n title: \"Stand Up To Cancer\",\n sourceCode: \"SCZSUDNSMS\",\n letterCode: \"CA-SU-HM1-GA\",\n emailType: Email.SU2C,\n },\n themeName: \"SU2C\",\n theme: su2cTheme,\n },\n};\n","import { createCipheriv } from \"crypto\";\nimport { datadogRum } from \"@datadog/browser-rum\";\nimport { type OptionsType, type SelectOptionsType } from \"../types/types\";\nimport { whiteSpaceRegExp } from \"./regexp\";\nimport useDataLayer from \"../helpers/useDataLayer\";\nimport { type Brand, type CheckoutProductsType } from \"../types/types\";\n\nexport const encrypt = (key: string, message: string, id: string): string => {\n const iv = Buffer.from(id, \"utf8\").toString(\"hex\").slice(0, 16);\n const cypher = createCipheriv(\"aes-256-cbc\", key, iv);\n\n const encryptedMsg =\n cypher.update(message, \"utf8\", \"hex\") + cypher.final(\"hex\");\n\n return encryptedMsg;\n};\n\nexport const getOptions = (\n options: OptionsType[],\n defaultSelectOption?: string,\n) => (\n <>\n \n {options.map((option: SelectOptionsType) => (\n \n {option.label}\n \n ))}\n \n);\n\nexport const internationalizePhoneNumber = (\n phoneNumber: string,\n countryCallingCode = \"+44\",\n): string => `${countryCallingCode}${phoneNumber.substring(1)}`;\n\nexport const isNonMainlandPostcode = (postcode: string): boolean => {\n const firstTwoChars = postcode.substring(0, 2);\n const ukNonMainlandPostcodes = [\"GY\", \"JE\", \"IM\"];\n return ukNonMainlandPostcodes.includes(firstTwoChars.toUpperCase());\n};\n\nexport const removeMiddleSpaces = (str: string): string =>\n str.replace(whiteSpaceRegExp, \"\");\n\nexport const isUkCountry = (country: string): boolean =>\n [\"United Kingdom\", \"Jersey\", \"Guernsey\", \"Isle of Man\"].includes(country);\n\nconst brandArray = [\"CRUK\", \"SU2C\", \"RFL\", \"BMF\"];\nconst isBrand = (brand: string): brand is Brand => brandArray.includes(brand);\n\nexport const toBrand = (brand?: string): Brand | undefined =>\n brand ? (isBrand(brand) ? brand : undefined) : undefined;\n\nexport const getThemeAndBrand = (\n brand?: Brand,\n): { theme: string; brand: string } =>\n brand\n ? {\n theme: brand === \"SU2C\" ? \"SU2C\" : \"CRUK\",\n brand: brand as string,\n }\n : {\n theme: \"CRUK\",\n brand: \"CRUK\",\n };\n\nexport const setCookieAccepted = (\n brand: string,\n page: string,\n amount?: number,\n amountWithGA?: number,\n checkoutStep?: number,\n dataLayerObj?: CheckoutProductsType[],\n transactionId?: string,\n paymentMethod?: string,\n productSource?: string,\n restriction?: string,\n): void => {\n const { pushDataLayerPopulated, pushCheckoutStep, pushPaymentSuccess } =\n useDataLayer();\n const { theme, brand: brandName } = getThemeAndBrand(toBrand(brand));\n\n // @ts-expect-error\n window.OptanonWrapper = () => {\n pushDataLayerPopulated(brandName, page);\n if (checkoutStep) {\n if (checkoutStep < 4) {\n dataLayerObj ? pushCheckoutStep(checkoutStep, dataLayerObj) : \"\";\n }\n if (\n checkoutStep === 4 &&\n transactionId &&\n amount &&\n amountWithGA &&\n checkoutStep &&\n dataLayerObj &&\n transactionId &&\n paymentMethod &&\n productSource &&\n restriction\n ) {\n pushPaymentSuccess(\n amount,\n amountWithGA,\n transactionId,\n paymentMethod,\n theme,\n productSource,\n restriction,\n dataLayerObj,\n \"\",\n );\n }\n }\n };\n};\n\nexport const setDatadog = (): void | null => {\n if (process.env.DATADOG_ENV === \"local\") {\n return null;\n }\n datadogRum.init({\n applicationId: \"8b7d3fdd-36c0-46c1-96d1-6b25a8d38104\",\n clientToken: \"pubd7412ed216c2892f3400704135fd2256\",\n site: \"datadoghq.eu\",\n service: \"PWS\",\n env: process.env.DATADOG_ENV,\n version: \"1.2.5\",\n sessionSampleRate: 100,\n sessionReplaySampleRate: process.env.DATADOG_ENV === \"production\" ? 10 : 0,\n trackUserInteractions: true,\n trackResources: true,\n trackLongTasks: true,\n defaultPrivacyLevel: \"mask-user-input\",\n silentMultipleInit: true,\n });\n datadogRum.startSessionReplayRecording();\n};\n\nexport const testables = {\n isBrand,\n};\n","export const addressLine1RegExp = /^[a-zA-Z0-9-/.,' &]+$/;\nexport const addressLine23RegExp = /^[a-zA-Z0-9-/.,' ]+$/;\nexport const amountRegExp = /^[0-9]\\d*(\\.\\d+)?$/;\nexport const andRegExp = /(^and | and | and$|& | &|\\+ | \\+)/;\nexport const cityRegExp = /^[a-zA-Z-/.' ]+$/;\nexport const extraEmailRegExp = /[’',;*<>~¿£!¡€]+/;\nexport const nameRegExp =\n /^[a-zA-Z ’'\\-ƼƽÁáÀàȦȧÂâÄäǍǎĂăĀāÃãÅåĄąȺǠǡǺǻǞǟȀȁȂȃɐɑɒÆæǼǽǢǣƀɃƁɓƂƃƄƅĆćĊċĈĉČčÇçȻȼƇƈƆɔɕĎďĐđƋƌƊɗÐðƍȸDZDzdzDŽDždžƉɖȡÉéÈèĖėÊêËëĚěĔĕĒēĘęȨȩɆɇȄȅȆȇƐɛƎǝƏəɚɘɜɝɞȜȝƑƒǴǵĠġĜĝǦǧĞğĢģǤǥƓƔĤĥȞȟĦħƕǶıÍíÌìİÎîÏïǏǐĬĭĪīĨĩĮįƗȈȉȊȋƖIJijȷĴĵǰɈɉɟĸǨǩĶķƘƙĹĺĿŀĽľĻļƚȽŁłƛLJLjljȴƜŃńǸǹŇňÑñŅņƝʼnƞȠNJNjnjȵŊŋÓóÒòȮȯÔôÖöǑǒŎŏŌōÕõǪǫŐőƟØøȰȱȪȫǾǿȬȭǬǭȌȍȎȏƠơƢƣŒœȢȣƤƥɊɋȹƦŔŕŘřŖŗɌɍȐȑȒȓŚśŜŝŠšŞşȘșȿƩƧƨƪßſŤťŢţƬƭƫƮȚțȾȶÞþŦŧÚúÙùÛûÜüǓǔŬŭŪūŨũŮůŲųŰűɄǗǘǛǜǙǚǕǖȔȕȖȗƯưƱƲɅŴŵƿǷÝýŶŷÿŸȲȳɎɏƳƴŹźŻżŽžƵƶȤȥɀƷǮǯƸƹƺƾɁɂ]*$/;\nexport const nameExcludedRegExp =\n /(^|\\W)(test|unknown|none|anon|anonymous|undefined)($|\\W)/i;\nexport const postcodeIntlRegExp = /^[a-zA-Z0-9 ]+$/;\nexport const postcodeUkRegExp =\n /^ *(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2})) *$/i;\nexport const singleCharRegExp = /^[a-zA-Z0-9-/.'&],$/;\nexport const whiteSpaceRegExp = /\\s/g;\nexport const phoneRegExp =\n /^((\\+?[0-9]{10,15})|(01[0-9]{3}\\s?[0-9]{5,6})|(011[0-9]\\s?[0-9]{3}\\s?[0-9]{4})|(01[0-9]1\\s[0-9]{3}\\s[0-9]{4})|((013873|015242|01539[456]|01697[34]|01768[347]|019467)\\s?[0-9]{5})|(016977\\s[0-9]{4,5})|(02[0-9]\\s?[0-9]{4}\\s?[0-9]{4})|(02[0-9]{2}\\s?[0-9]{3}\\s?[0-9]{4})|(07[0-9]{3}\\s?[0-9]{6}))$/;\nexport const mobileRegExp = /^(07\\d{8,12})$/;\nexport const numbersOnlyRegExp = /^[0-9]*$/;\nexport const sortCodeRegExp = /^[0-9- ]*$/;\nexport const bracketSelectorRegExp = /([[\\]])/g;\n","type DataLayerEvent =\n | {\n event: \"dataLayerPopulated\";\n brand: string;\n pagePath: string;\n pageTitle: string;\n }\n | {\n event: \"eec.checkout\";\n ecommerce: {\n checkout: {\n actionField: {\n step: number;\n };\n products: CheckoutProductsType[];\n };\n };\n }\n | {\n event: \"interaction\";\n action: string;\n label: string;\n }\n | {\n event: \"ab_test\";\n eventCategory: \"ab test\";\n eventAction: string;\n eventLabel: string;\n }\n | {\n event: \"error\";\n errorCode: string;\n errorType: string;\n errorMessage: string | Record;\n }\n | {\n event: \"eec.purchase\";\n ecommerce: {\n currencyCode: string;\n purchase: {\n actionField: {\n id: string;\n affiliation: string;\n revenue: number;\n tax: number;\n shipping: number;\n coupon: string;\n payment_type: string;\n source_code: string;\n restriction_code: string;\n revenue_excl_giftaid: number;\n };\n products: CheckoutProductsType[];\n };\n };\n }\n | {\n event: \"Optimizely\";\n experiment: string;\n enabled: boolean;\n variation: string;\n };\n\nexport type CheckoutProductsType = {\n id: string;\n name: string;\n category: PaymentCategoryTypes;\n variant?: string;\n brand: string;\n price?: number;\n quantity?: number;\n donation_event_code?: string;\n};\n\nexport type PaymentCategoryTypes =\n | \"fundraising donation\"\n | \"donation\"\n | \"event registration\"\n | \"CRUKECommerce\";\n\ntype Product = {\n type?: string;\n paymentName?: string;\n paymentCategory: PaymentCategoryTypes;\n};\n\ntype AccountType = {\n journey: \"donation\" | \"product\";\n dataLayer?: Product;\n};\n\nconst merchantAccounts = new Map();\n\nmerchantAccounts.set(\"CRUKECommerce\", {\n journey: \"product\",\n dataLayer: {\n type: \"CRUKECommerce\",\n paymentCategory: \"CRUKECommerce\",\n },\n});\n\nmerchantAccounts.set(\"CRUKEWSSupled\", {\n journey: \"product\",\n dataLayer: {\n type: \"events\",\n paymentCategory: \"event registration\",\n },\n});\n\nmerchantAccounts.set(\"CRUKEWSEvents\", {\n journey: \"product\",\n dataLayer: {\n type: \"events\",\n paymentCategory: \"event registration\",\n },\n});\n\nmerchantAccounts.set(\"CRUKOFDonation\", {\n journey: \"product\",\n dataLayer: {\n type: \"fundraising\",\n paymentName: \"fundraising donation\",\n paymentCategory: \"donation\",\n },\n});\n\nmerchantAccounts.set(\"SU2CSingleDonation\", {\n journey: \"donation\",\n dataLayer: { paymentCategory: \"donation\" },\n});\n\nmerchantAccounts.set(\"CRUKSingleDonation\", {\n journey: \"donation\",\n dataLayer: { paymentCategory: \"donation\" },\n});\n\nexport const fetchMerchantAccounts = (): Map =>\n merchantAccounts;\n\nexport const fetchProduct = (merchantAccount: string): Product | undefined =>\n fetchMerchantAccounts().get(merchantAccount)?.dataLayer;\n\ndeclare global {\n interface Window {\n dataLayer: DataLayerEvent[];\n }\n}\n\nif (typeof window !== \"undefined\" && !window.dataLayer) window.dataLayer = [];\n\nconst useDataLayer = () => {\n const push = (event: DataLayerEvent) => {\n window.dataLayer.push(event);\n };\n\n return {\n pushDataLayerPopulated(brand: string, title: string) {\n push({\n event: \"dataLayerPopulated\",\n brand,\n pagePath: window.location.pathname,\n pageTitle: title,\n });\n },\n pushCheckoutStep(step: number, products: CheckoutProductsType[]) {\n push({\n event: \"eec.checkout\",\n ecommerce: {\n checkout: {\n actionField: {\n step,\n },\n products,\n },\n },\n });\n },\n pushInteraction(name: string, value: string) {\n push({\n event: \"interaction\",\n action: name,\n label: value,\n });\n },\n pushDonatePageInteraction(name: string, value: string) {\n push({\n event: \"ab_test\",\n eventCategory: \"ab test\",\n eventAction: name,\n eventLabel: value,\n });\n },\n pushError(errorCode: string, errorType: string, errorMessage: string) {\n push({\n event: \"error\",\n errorCode,\n errorType,\n errorMessage,\n });\n },\n pushPaymentSuccess(\n amount: number,\n revenue: number,\n transactionID: string,\n paymentMethod: string,\n affiliation: string,\n productSource: string,\n restriction: string | undefined,\n products: CheckoutProductsType[],\n discount: string,\n ) {\n push({\n event: \"eec.purchase\",\n ecommerce: {\n currencyCode: \"GBP\",\n purchase: {\n actionField: {\n id: transactionID,\n affiliation,\n revenue,\n tax: 0,\n shipping: 0,\n coupon: discount,\n payment_type: paymentMethod,\n source_code: productSource,\n restriction_code: restriction || \"nocode\",\n revenue_excl_giftaid: amount,\n },\n products,\n },\n },\n });\n },\n pushOptimizelyExperiment(\n experiment: string,\n enabled: boolean,\n variation: string,\n ) {\n push({\n event: \"Optimizely\",\n experiment,\n enabled,\n variation,\n });\n },\n };\n};\n\nexport default useDataLayer;\n","import styled, { css } from \"styled-components\";\nimport { Box, type ThemeType } from \"@cruk/cruk-react-components\";\n\nexport const ButtonLink = styled.button`\n background: none;\n padding: 0;\n margin: -${({ theme }: { theme: ThemeType }) => theme.spacing.xxs} 0\n ${({ theme }: { theme: ThemeType }) => theme.spacing.xs};\n border: 0;\n color: ${({ theme }: { theme: ThemeType }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n\n &:hover,\n &:focus {\n text-decoration: none;\n color: ${({ theme }: { theme: ThemeType }) => theme.colors.linkColorHover};\n }\n`;\n\nexport const widthTabletStyles = css`\n @media (min-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.tablet}) {\n width: 70%;\n }\n`;\n\nexport const ExtendedBoxWrapper = styled(Box)`\n ${widthTabletStyles};\n`;\n\nexport const InputsLayoutWrapper = styled.div`\n @media (min-width: ${({ theme }: { theme: ThemeType }) =>\n theme.breakpoint.mobile}) {\n width: 70%;\n }\n`;\n\nexport const MaxWidth = styled.div`\n margin: 0 auto;\n max-width: ${({ theme }: { theme: ThemeType }) =>\n theme.utilities.contentMaxWidth};\n`;\n\nexport const PageContainer = styled.div`\n padding: ${({ theme }: { theme: ThemeType }) => theme.spacing.m}\n ${({ theme }: { theme: ThemeType }) => theme.spacing.s};\n`;\n\nexport const SiteContainer = styled.div`\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n`;\n"],"names":["__webpack_exports__","Z","mailto","children","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","a","href","concat","GiftAidLogo","styled","div","withConfig","theme","spacing","xs","components_GiftAidConsent","errors","isRequired","register","pushInteraction","useDataLayer","jsx_runtime","jsxs","Box","img","src","alt","Heading","h2","Checkbox","hasError","giftAid","errorMessage","message","onChange","e","target","checked","p","Error","colors","textError","xxs","components_FieldErrorMessage","countriesList","ScreenReaderOnly","inputs","value","label","required","postcodeInput","components_AddressLookup","isUKOnly","addressLookupErrorText","updateAddressLookupErrorText","touchedFields","getValues","resetField","setValue","trigger","postcodeValue","addressSelectField","apiKey","process","addressOptions","setAddressOptions","useState","activeOption","setActiveOption","addressFieldsVisible","setAddressFieldsVisible","manualFieldsVisible","setManualFieldsVisible","addressSearchStatus","setAddressSearchStatus","pushError","loqateCountries","name","code","Object","keys","map","i","join","fieldSet","buttonRef","useRef","useEffect","retrieve","clearOptions","isChannelIslands","isNonMainlandPostcode","address","search","query","countryCode","id","length","fetch","then","res","ok","console","error","json","data","Items","Type","addressesArray","item","Text","addressArray","Description","split","trim","Id","keyValueObject","itemText","push","catch","err","field3","Line3","Line4","Line5","Company","Line1","shouldTouch","shouldValidate","Line2","City","PostalCode","countries","includes","CountryName","Fragment","InputsLayoutWrapper","TextField","hintText","autoComplete","onKeyDown","preventDefault","current","click","forEach","fieldName","role","aria-live","marginBottom","Button","type","appearance","ref","onClick","field","FieldErrorMessage","ErrorText","marginTop","Select","onBlur","options","selectedIndex","dataset","option","toLowerCase","getOptions","ButtonLink","input","index","fieldError","filter","disabled","country","FormGroupStyled","utilities","contentMaxWidth","m","noborder","tokenColors","grey_900","topborder","components_FormGroup","FormFieldsStyled","breakpoint","tablet","components_FormFields","StyledCollapse","RadioButtonGroup","JoinUsText","HiddenText","span","OptInFlex","mobile","xl","components_OptIn","watch","form","useGiftAidFormData","watchEmailOptIn","emailOptIn","watchPostOptIn","postOptIn","watchTextOptIn","textOptIn","watchPhoneOptIn","phoneOptIn","FormGroup","FormFields","fieldset","legend","RadioConsent","attributes","selectedValue","aria-hidden","PhoneNumber","Email","rel","Collapse","headerTitleText","onOpenChange","isOpen","paddingVertical","ErrorBox","red","s","components_GetSelectOptions","defaultSelectOption","data-option","data_titles","yup","min","max","test","regex","Number","isNaN","field2","addressField","document","getElementsByName","addressField2","comparisonField","firstTwoNumbers","substring","disallowedPrefixes","trimmedVal","replace","startsWith","firstFiveNumbers","GiftAidFormSchema","shape","oneOf","title","forename","matches","nameRegExp","negativeMatch","andRegExp","nameExcludedRegExp","surname","minMax","emailAddress","email","extraEmailRegExp","phoneNumber","phoneRegExp","excludeEmptyString","ukOnlyMobileNumber","addressLine1","addressLine1RegExp","userInput","notOnlyNum","equalsOtherField","addressFieldEdgeCase","singleCharRegExp","addressSelection","when","is","schema","otherwise","addressLine2","addressLine23RegExp","addressLine3","city","cityRegExp","postalCode","isUkCountry","postcodeUkRegExp","postcodeIntlRegExp","validationStatus","GiftAidBannerStyled","grey_200","GiftAidBannerContainer","GiftAidBannerContent","ResponseOutput","GiftAidForm","formName","config","props","setForm","responseOutput","setResponseOutput","setAddressLookupErrorText","handleSubmit","formState","useForm","defaultValues","mode","resolver","yupResolver","dirtyFields","isSubmitting","sourceCode","letterCode","emailType","admin","isRouting","setIsRouting","router","useRouter","correlationId","nanoid","customAlphabet","genericErrorMessage","onSubmit","sessionStorage","setItem","JSON","stringify","datadogRum","setUserProperty","submitTransaction","addError","errorType","values","body","metadata","source","themeName","signature","encrypt","method","textSize","noValidate","className","GiftAidConsent","data-testid","undefined","GetSelectOptions","titles","AddressLookup","text","OptIn","querySelector","scrollIntoView","PhoneNumberMobile","PhoneNumberDesktop","countryCallingCode","internationalizePhoneNumber","removeMiddleSpaces","useGiftAidFormState","initialGiftAidFormValues","initialGiftaidContextValues","GiftAidFormContext","createContext","useContext","GiftAidFormProvider","initialForm","formFieldsMemoized","useMemo","Provider","formConfig","crukTheme","su2cTheme","key","iv","Buffer","from","toString","slice","cypher","createCipheriv","update","final","ukNonMainlandPostcodes","firstTwoChars","toUpperCase","str","whiteSpaceRegExp","brandArray","isBrand","brand","toBrand","getThemeAndBrand","setCookieAccepted","page","amount","amountWithGA","checkoutStep","dataLayerObj","transactionId","paymentMethod","productSource","restriction","pushDataLayerPopulated","pushCheckoutStep","pushPaymentSuccess","brandName","window","OptanonWrapper","setDatadog","init","applicationId","clientToken","site","service","env","version","sessionSampleRate","sessionReplaySampleRate","trackUserInteractions","trackResources","trackLongTasks","defaultPrivacyLevel","silentMultipleInit","startSessionReplayRecording","merchantAccounts","Map","set","journey","dataLayer","paymentCategory","paymentName","ZP","event","pagePath","location","pathname","pageTitle","step","products","ecommerce","checkout","actionField","action","pushDonatePageInteraction","eventCategory","eventAction","eventLabel","errorCode","revenue","transactionID","affiliation","discount","currencyCode","purchase","tax","shipping","coupon","payment_type","source_code","restriction_code","revenue_excl_giftaid","pushOptimizelyExperiment","experiment","enabled","variation","button","primary","linkColorHover","widthTabletStyles","css","ExtendedBoxWrapper","MaxWidth","PageContainer"],"sourceRoot":""}