{"version":3,"file":"static/chunks/201-b8cbfe469c766083.js","mappings":"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","sources":["webpack://_N_E/./components/Footer.tsx","webpack://_N_E/./components/FormHead.tsx","webpack://_N_E/./components/OptimizelySetup.tsx","webpack://_N_E/./components/PhoneNumber.tsx","webpack://_N_E/./components/styles.ts","webpack://_N_E/./configs/headers.ts","webpack://_N_E/./configs/single-donation.ts","webpack://_N_E/./contexts/OptimizelyContext.tsx","webpack://_N_E/./contexts/ThemeNameContext.tsx","webpack://_N_E/./contexts/VersionsContext.tsx","webpack://_N_E/./globalStyle.tsx","webpack://_N_E/./helpers/functions/shared.tsx","webpack://_N_E/./helpers/regexp.ts","webpack://_N_E/./helpers/useDataLayer.ts"],"sourcesContent":["import React, { ReactElement, HTMLAttributes } from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { ThemeType } from \"@cruk/cruk-react-components\";\n\ntype FooterProps = HTMLAttributes & {\n formTheme: string;\n};\n\ntype FooterStyleProps = {\n formTheme: string;\n theme?: ThemeType;\n};\n\nconst StyledFooter = styled.footer`\n flex-shrink: 0;\n background-color: ${({ theme }) => theme.tokenColors.grey_200};\n padding: 0 ${({ theme }) => theme.spacing.s};\n \n ${({ theme, formTheme }: FooterStyleProps) =>\n formTheme === \"SU2C\" &&\n css`\n border-top: 1px solid ${theme.tokenColors.grey_200};\n background-color: ${theme.tokenColors.white};\n `}\n}\n`;\n\nconst FooterContainer = styled.div`\n max-width: ${({ theme }) => theme.utilities.contentMaxWidth};\n margin: 0 auto;\n padding: ${({ theme }) => theme.spacing.m} 0;\n`;\n\nconst FooterLinks = styled.ul`\n padding: 0;\n list-style: none;\n\n ${({ formTheme }: FooterStyleProps) =>\n formTheme === \"CRUK\" &&\n css`\n li {\n display: inline-block;\n\n &:not(:last-child) {\n &::after {\n content: \"|\";\n margin: 0 1rem;\n }\n }\n }\n `}\n\n ${({ theme, formTheme }: FooterStyleProps) =>\n formTheme === \"SU2C\" &&\n css`\n display: flex;\n flex-wrap: wrap;\n\n li {\n width: calc(50% - 1rem);\n margin-right: 1rem;\n\n a {\n font-weight: bold;\n text-decoration: none;\n font-size: ${theme.fontSizes.s};\n\n &:hover,\n &:focus {\n text-decoration: underline;\n }\n }\n\n @media (min-width: ${theme.breakpoint.tablet}) {\n width: calc(25% - 1rem);\n border-right: 1px solid ${theme.tokenColors.grey_200};\n\n &:nth-child(4n) {\n border-right: 0;\n }\n }\n }\n `}\n`;\n\nconst FooterText = styled.p`\n ${({ theme, formTheme }: FooterStyleProps) =>\n formTheme === \"SU2C\" &&\n css`\n color: ${theme.tokenColors.grey_500};\n font-size: ${theme.fontSizes.xs};\n `}\n`;\n\nconst FooterLogo = styled.div`\n display: block;\n\n img {\n width: 165px;\n height: 52px;\n }\n\n ${({ theme, formTheme }: FooterStyleProps) =>\n formTheme === \"SU2C\" &&\n css`\n @media (min-width: ${theme.breakpoint.tablet}) {\n float: right;\n margin-left: 1rem;\n }\n `}\n`;\n\nconst Footer = ({ formTheme }: FooterProps): ReactElement => (\n \n \n \n {formTheme === \"SU2C\" ? (\n <>\n
  • \n \n Terms and Conditions\n \n
  • \n
  • \n \n Privacy Policy\n \n
  • \n
  • \n \n Cookies\n \n
  • \n
  • \n \n Safety\n \n
  • \n
  • \n \n Accessibility\n \n
  • \n
  • \n \n Cancer Research UK\n \n
  • \n
  • \n \n Press Enquiries\n \n
  • \n
  • \n \n Funding for researchers\n \n
  • \n
  • \n \n Share your story\n \n
  • \n
  • \n \n Partners\n \n
  • \n \n ) : (\n <>\n
  • \n \n About our information\n \n
  • \n
  • \n \n Terms and conditions\n \n
  • \n
  • \n \n Privacy\n \n
  • \n
  • \n \n Modern Slavery Statement\n \n
  • \n
  • \n \n Cookies\n \n
  • \n
  • \n \n Accessibility\n \n
  • \n
  • \n \n Sitemap\n \n
  • \n \n )}\n
    \n \n \n \"Fundraising\n \n \n \n {formTheme === \"SU2C\"\n ? \"Stand Up To Cancer and Stand Up To Cancer Brand Marks are registered trademarks of the Entertainment Industry Foundation. Cancer Research UK is a registered charity in England and Wales (1089464), Scotland (SC041666), the Isle of Man (1103) and Jersey (247). A company limited by guarantee. Registered company in England and Wales (4325234) and the Isle of Man (5713F). Registered address: 2 Redman Place, London, E20 1JQ. Donations will be made to Cancer Research UK in support of the Stand Up To Cancer campaign.\"\n : \"Cancer Research UK is a registered charity in England and Wales (1089464), Scotland (SC041666), the Isle of Man (1103) and Jersey (247). A company limited by guarantee. Registered company in England and Wales (4325234) and the Isle of Man (5713F). Registered address: 2 Redman Place, London, E20 1JQ.\"}\n \n
    \n
    \n);\n\nexport default Footer;\n","import React, { useContext, ReactElement } from \"react\";\nimport Head from \"next/head\";\nimport Script from \"next/script\";\nimport VersionsContext from \"../contexts/VersionsContext\";\n\ntype FormHeadProps = {\n page: string;\n title: string;\n optimizelyId: string;\n};\n\nconst FormHead = ({\n page,\n title,\n optimizelyId,\n}: FormHeadProps): ReactElement => {\n const { formVersion } = useContext(VersionsContext);\n return (\n <>\n \n {page === \"Payment\" && formVersion !== \"regular\" ? (\n \n ) : (\n \"\"\n )}\n\n \n \n {title}\n \n {page !== \"Donate\" ? : \"\"}\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\nexport default FormHead;\n","import { useContext, useEffect, useState } from \"react\";\nimport { createInstance, setLogLevel } from \"@optimizely/optimizely-sdk\";\nimport {\n getOptimizelyUserId,\n optimizelyNotificationListeners,\n checkOptimizelyVariation,\n getOptimizelyAudience,\n fetchOptimizelyDatafile,\n} from \"../helpers/functions/shared\";\nimport type { FetchOptimizelyDatafileResponse } from \"../helpers/functions/shared\";\nimport { OptimizelyContext } from \"../contexts/OptimizelyContext\";\n\nconst OptimizelySetup = () => {\n // OPTIMIZELY SET UP\n const OPTIMIZELY_TIMEOUT_IN_MS = 5000;\n\n const [datafileResponse, setDatafileResponse] =\n useState(null);\n\n const [optimizelyContext, setOptimizelyContext] =\n useContext(OptimizelyContext);\n\n const optimizelyUserId = getOptimizelyUserId();\n const { optimizelyAudience, isTestAudience } = optimizelyContext;\n\n useEffect(() => {\n if (!optimizelyContext.optimizely) {\n fetchOptimizelyDatafile(\n process.env.OPTIMIZELY_SDK_KEY || \"R9E9JzGFDYYRudsUa9aP9\",\n OPTIMIZELY_TIMEOUT_IN_MS\n )\n .then((data) => {\n setDatafileResponse(data);\n })\n .catch(console.error);\n }\n }, [!!optimizelyContext.optimizely]);\n\n useEffect(() => {\n if (datafileResponse) {\n const optimizelyClient = createInstance({\n sdkKey: process.env.OPTIMIZELY_SDK_KEY || \"R9E9JzGFDYYRudsUa9aP9\",\n datafile: datafileResponse?.datafile,\n eventBatchSize: 100,\n eventFlushInterval: 3000,\n });\n\n optimizelyClient\n .onReady({ timeout: OPTIMIZELY_TIMEOUT_IN_MS })\n .then(({ success }) => {\n optimizelyNotificationListeners(optimizelyClient);\n const optimizelyUser = optimizelyClient.createUserContext(\n optimizelyUserId,\n {\n testAudience: isTestAudience,\n audience: optimizelyAudience,\n $opt_user_agent: window.navigator.userAgent,\n }\n );\n checkOptimizelyVariation({ user: optimizelyUser });\n setOptimizelyContext({\n ...optimizelyContext,\n optimizely: optimizelyClient,\n optimizelyUserContext: optimizelyUser,\n optimizelyAudience: getOptimizelyAudience(),\n loadingState: success ? \"ready\" : \"failed\",\n });\n })\n .catch((e) => {\n console.error(\"[OPTIMIZELY] Failure to set up Optimizely client.\", e);\n });\n setLogLevel(null);\n }\n }, [datafileResponse]);\n\n return <>; // eslint-disable-line react/jsx-no-useless-fragment\n};\n\nexport default OptimizelySetup;\n","import { ReactElement } from \"react\";\nimport styled from \"styled-components\";\nimport {\n internationalizePhoneNumber,\n removeMiddleSpaces,\n} from \"../helpers/functions/shared\";\n\nconst PhoneNumberMobile = styled.a`\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n display: none;\n }\n`;\n\nconst PhoneNumberDesktop = styled.span`\n display: none;\n\n @media (min-width: ${({ theme }) => 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","import styled, { css, keyframes } from \"styled-components\";\nimport { Box } from \"@cruk/cruk-react-components\";\n\nexport const RequiredParagraph = styled.p`\n font-weight: ${({ theme }) => theme.typography.fontWeightHeavy};\n span {\n font-weight: ${({ theme }) => theme.typography.fontWeightMedium};\n }\n`;\n\nexport const widthTabletStyles = css`\n @media (min-width: ${({ theme }) => theme.breakpoint.tablet}) {\n width: 70%;\n }\n`;\n\nexport const ExtendedBoxWrapper = styled(Box)`\n ${widthTabletStyles};\n`;\n\nexport const ButtonLink = styled.button`\n background: none;\n padding: 0;\n margin: -${({ theme }) => theme.spacing.xxs} 0 ${({ theme }) => theme.spacing.xs};\n border: 0;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n\n &:hover,\n &:focus {\n text-decoration: none;\n color: ${({ theme }) => theme.colors.primaryHover};\n }\n`;\n\nexport const InputsLayoutWrapper = styled.div`\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n width: 70%;\n }\n`;\n\nconst Rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport const Spinner = styled.span`\n border: 3px solid ${({ theme }) => theme.tokenColors.grey_200};\n border-top: 3px solid ${({ theme }) => theme.tokenColors.grey_300};\n border-radius: 50%;\n width: 30px;\n height: 30px;\n animation: ${Rotate} 1s linear infinite;\n position: relative;\n text-align: center;\n margin: auto;\n top: 5px;\n display: block;\n`;\n\nexport const PageContainer = styled.div`\n padding: ${({ theme }) => theme.spacing.m} ${({ theme }) => theme.spacing.s};\n`;\n\nexport const MaxWidth = styled.div`\n margin: 0 auto;\n max-width: ${({ theme }) => theme.utilities.contentMaxWidth};\n`;\n\nexport const StyledCollapse = styled.div`\n button {\n min-height: 0;\n }\n`;\n","type HeaderConfigType = {\n [name: string]: {\n logoAlt: string;\n logoSrc: string;\n logoTitle: string;\n logoUrl: string;\n siteSlogan?: string;\n };\n};\n\nconst headerConfig: HeaderConfigType = {\n SU2C: {\n logoAlt: \"Stand Up To Cancer logo\",\n logoSrc: \"/assets/su2c-logo.png\",\n logoTitle: \"Stand Up To Cancer\",\n logoUrl: \"https://www.standuptocancer.org.uk/\",\n },\n CRUK: {\n logoAlt: \"Cancer Research UK logo\",\n logoSrc: \"/assets/cruk-logo.png\",\n logoTitle: \"Cancer Research UK\",\n logoUrl: \"https://www.cancerresearchuk.org/\",\n siteSlogan: \"Together we will beat cancer\",\n },\n NEW_CRUK: {\n logoAlt: \"Cancer Research UK logo\",\n logoSrc: \"/assets/new-cruk-logo.png\",\n logoTitle: \"Cancer Research UK\",\n logoUrl: \"https://www.cancerresearchuk.org/\",\n siteSlogan: \"Together we are beating cancer\",\n },\n BMF: {\n logoAlt: \"Bobby Moore Fund and Cancer Research UK logos\",\n logoSrc: \"/assets/bmf-logo.png\",\n logoTitle: \"Bobby Moore Fund and Cancer Research UK\",\n logoUrl: \"https://www.cancerresearchuk.org/get-involved/bobby-moore-fund\",\n siteSlogan: \"\",\n },\n RFL: {\n logoAlt: \"Race for Life logo\",\n logoSrc: \"/assets/rfl-logo.png\",\n logoTitle: \"Race for Life\",\n logoUrl: \"https://raceforlife.cancerresearchuk.org/\",\n siteSlogan: \"\",\n },\n};\n\nexport default headerConfig;\n","import { su2cTheme, crukTheme, ThemeType } from \"@cruk/cruk-react-components\";\nimport { RestrictionCode } from \"../data/researchAreas\";\nimport type { Option } from \"../helpers/types/shared\";\nimport headerConfig from \"./headers\";\n\nexport type IntroBannerType = {\n header?: string;\n copy?: string | false;\n giftaid?: boolean;\n};\n\nexport type FormComponentsType = {\n donationAmount: {\n nudges?: Array;\n regularNudges?: Array;\n };\n donationMotivation?: boolean;\n donationDestination?: boolean;\n restriction?: RestrictionCode;\n header: {\n siteSlogan?: string;\n logoUrl: string;\n logoAlt: string;\n logoTitle: string;\n logoSrc: string;\n };\n introBanner?: IntroBannerType;\n};\n\nexport type AdminType = {\n title: string;\n formID: string;\n product: {\n single?: string;\n collection?: string;\n regular?: string;\n };\n source: {\n single?: string;\n collection?: string;\n regular?: string;\n };\n merchantId?: \"SU2CSingleDonation\" | \"CRUKSingleDonation\";\n emailType: EmailType;\n};\n\nenum Email {\n CRUK = \"cruk_pws_single_donation\",\n CRUK_REGULAR = \"cruk_pws_regular_donation\",\n SU2C = \"su2c_pws_single_donation\",\n BMF = \"bmf_pws_single_donation\",\n RFL = \"rfl_pws_single_donation\",\n}\n\n// TODO Is there a way to make use of conditional types to ensure\n// single/regular email type is only required when single/regular is supported\ntype EmailType = {\n single?: Email;\n regular?: Email;\n};\n\ntype FormConfigType = {\n [name: string]: {\n admin: AdminType;\n brand: string;\n themeName: string;\n theme: ThemeType;\n components: FormComponentsType;\n };\n};\n\nexport type PaymentConfigType = {\n [name: string]: {\n admin: AdminType;\n themeName: string;\n components: FormComponentsType;\n };\n};\n\nexport const config: FormConfigType = {\n \"bank-old-chums\": {\n admin: {\n title: \"Bank Old Chums | Cancer Research UK\",\n formID: \"ONDON000026\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"18M1P1001\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [6, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n copy: \"Thank you for being part of Bank Old Chums network and donating to Cancer Research UK.\",\n },\n },\n },\n \"bobby-moore-fund\": {\n admin: {\n title: \"Bobby Moore Fund | Cancer Research UK\",\n formID: \"ONDON000009\",\n product: {\n single: \"BMFDON\",\n collection: \"BMFDON\",\n },\n source: {\n single: \"N25P1I\",\n collection: \"N25P1I\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.BMF,\n },\n },\n brand: \"BMF\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [20, 50, 100],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.BMF,\n },\n },\n \"business-beats-cancer-guernsey\": {\n admin: {\n title: \"Business Beats Cancer Guernsey | Cancer Research UK\",\n formID: \"ONDON000058\",\n product: {\n single: \"GOFDON\",\n collection: \"GOFDON\",\n },\n source: {\n single: \"BBCRES066\",\n collection: \"BBCRES066\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {},\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n copy: \"The Business Beats Cancer Guernsey board aim to bring the business community of Guernsey together to beat cancer sooner, by supporting Cancer Research UK Guernsey Branch and the Guernsey Society for Cancer Relief. Cancer Research UK are the largest single funder of cancer research globally and thanks to generous supporters, the charity has helped double cancer survival in the last 40 years. Businesses can play a significant role in supporting such worthy causes and the organising Board, would like to thank you for your contribution which is restricted to research in Southampton where many islands will go for local treatment, with cost support provided by the Guernsey Society for Cancer Relief. Together we will beat cancer.\",\n },\n },\n },\n \"donate-in-memory\": {\n admin: {\n title: \"Donate in memory | Cancer Research UK\",\n formID: \"ONDON000006\",\n product: {\n single: \"DIMONL\",\n collection: \"DIMONL\",\n },\n source: {\n single: \"SCZODDIM01\",\n collection: \"UKIM002\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [20, 80, 150],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"make-your-donation\": {\n admin: {\n title: \"Make your donation | Cancer Research UK\",\n formID: \"ONDON000033\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MDDB008\",\n collection: \"UKSF003\",\n regular: \"24MDDB005\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [3, 5, 10],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"make-your-donation-today\": {\n admin: {\n title: \"Make your donation today | Cancer Research UK\",\n formID: \"ONDON000034\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MDDB009\",\n collection: \"UKSF003\",\n regular: \"24MDDB006\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [3, 5, 10],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"more-research-less-cancer\": {\n admin: {\n title: \"More Research, Less Cancer | Cancer Research UK\",\n formID: \"ONDON000046\",\n product: {\n single: \"LGIDON\",\n collection: \"LGIDON\",\n },\n source: {\n single: \"SCZMGAPUNSTI\",\n collection: \"SCZMGAPUNSTI\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [400, 700, 1900],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"More Research, Less Cancer\",\n copy: \"We stand on the brink of discoveries that will transform how we understand and overcome cancer and other diseases. But we need to go further, faster.\",\n },\n },\n },\n \"donate-today\": {\n admin: {\n title: \"Donate today | Cancer Research UK\",\n formID: \"ONDON000027\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MOW9004\",\n collection: \"UKSF003\",\n regular: \"24MOW9003\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {},\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"donating-monthly\": {\n admin: {\n title: \"Donating monthly | Cancer Research UK\",\n formID: \"ONDON000057\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"23MDDB005\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [4, 6, 10],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Your donation will drive life-saving research.\",\n },\n },\n },\n \"donating-today\": {\n admin: {\n title: \"Donating today | Cancer Research UK\",\n formID: \"ONDON000066\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MDDC007\",\n collection: \"UKSF003\",\n regular: \"24MDDC005\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [3, 5, 10],\n nudges: [10, 20, 30],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Your donation will drive life-saving research.\",\n },\n },\n },\n donating: {\n admin: {\n title: \"Donating | Cancer Research UK\",\n formID: \"ONDON000067\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MDDC006\",\n collection: \"UKSF003\",\n regular: \"24MDDC004\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [3, 5, 10],\n nudges: [10, 20, 30],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Your donation will drive life-saving research.\",\n },\n },\n },\n donate: {\n admin: {\n title: \"Donate | Cancer Research UK\",\n formID: \"ONDON000068\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MDDB010\",\n collection: \"UKSF003\",\n regular: \"24MDDB007\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [3, 5, 10],\n nudges: [10, 20, 30],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Your donation will drive life-saving research.\",\n },\n },\n },\n \"festive-gift\": {\n admin: {\n title: \"Festive gift | Cancer Research UK\",\n formID: \"ONDON000050\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24DJD7002\",\n collection: \"UKSF003\",\n regular: \"24DJD7001\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {},\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Your donation will drive life-saving research.\",\n },\n },\n },\n \"festive-season\": {\n admin: {\n title: \"Festive season | Cancer Research UK\",\n formID: \"ONDON000055\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24DJS9002\",\n collection: \"UKSF003\",\n regular: \"24DJS9001\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [5, 10, 20],\n regularNudges: [6, 15, 30],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Your donation will drive life-saving research.\",\n },\n },\n },\n \"francis-crick-institute\": {\n admin: {\n title: \"Francis Crick Institute | Cancer Research UK\",\n formID: \"ONDON000010\",\n product: {\n single: \"LGIDON\",\n collection: \"LGIDON\",\n },\n source: {\n single: \"SCZMGAPCRICK\",\n collection: \"SCZMGAPCRICK\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [50, 100, 200],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header:\n \"Your donation to Cancer Research UK will support the Francis Crick Institute’s pioneering work.\",\n copy: \"Cancer Research UK works in partnership with the Crick to attract and secure philanthropic support for the Crick’s pioneering work. The Crick is one of the funding priorities of Cancer Research UK’s global ‘More Research, Less Cancer’ campaign. For this arrangement to be possible, Cancer Research UK and the Crick operate as joint controllers of personal data. This involves jointly determining the purpose and means of processing information about donors and prospective donors, including sharing the information with each other and undertaking due diligence checks. For more information, see Cancer Research UK’s Privacy Policy at [https://www.cancerresearchuk.org/privacy-statement].\",\n },\n },\n },\n \"free-site-fundraiser-1\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000075\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1101\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"free-site-fundraiser-2\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000076\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1102\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"free-site-fundraiser-3\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000077\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1103\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"free-site-fundraiser-4\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000078\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1104\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"free-site-fundraiser-5\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000079\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1105\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-1\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000012\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1001\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-2\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000013\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1002\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-3\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000014\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1003\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-4\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000015\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1004\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-5\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000016\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1005\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-6\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000017\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1006\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-7\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000018\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1007\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-8\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000019\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1008\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-9\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000020\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1009\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-10\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000021\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1010\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-11\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000022\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1011\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-12\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000023\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1012\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-13\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000025\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1013\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-14\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000035\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1014\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-15\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000036\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1015\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-16\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000040\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1016\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-17\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000041\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1017\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-18\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000042\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1018\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-19\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000051\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1019\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-20\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000052\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1020\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-21\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000053\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1021\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-22\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000054\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1022\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-23\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000062\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1023\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-24\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000063\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1024\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"fundraiser-25\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000064\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25DFP1025\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n donation: {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000043\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"24MVF1029\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Your donation will drive life-saving research.\",\n },\n },\n },\n \"fund-research-today\": {\n admin: {\n title: \"Fund research today | Cancer Research UK\",\n formID: \"ONDON000038\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"23MSPA002\",\n collection: \"UKSF003\",\n regular: \"23MSPA003\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [3, 5, 10],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"get-started\": {\n admin: {\n title: \"Get started | Cancer Research UK\",\n formID: \"ONDON000049\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24DJD7004\",\n collection: \"UKSF003\",\n regular: \"24DJD7003\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {},\n donationMotivation: false,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Thank you again for your support of Cancer Research UK's life-saving work.\",\n },\n },\n },\n \"give-today\": {\n admin: {\n title: \"Give today | Cancer Research UK\",\n formID: \"ONDON000028\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MTI9002\",\n collection: \"UKSF003\",\n regular: \"24MTI9001\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [6, 15, 30],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"race-for-life\": {\n admin: {\n title: \"Race for Life | Cancer Research UK\",\n formID: \"ONDON000024\",\n product: {\n single: \"R4LDON\",\n collection: \"R4LDON\",\n },\n source: {\n single: \"N25L00\",\n collection: \"N25L00\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.RFL,\n },\n },\n brand: \"RFL\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [20, 80, 150],\n },\n donationMotivation: false,\n donationDestination: true,\n header: headerConfig.RFL,\n introBanner: {\n header: \"Donate right now to Race for Life to help beat cancer\",\n copy: \"Cancer Research UK is working every day to find new and improved ways to prevent, diagnose and treat cancer. Our ambition is to accelerate progress so that 3 in 4 people survive cancer by 2034. We promise to spend your donations wisely.\",\n },\n },\n },\n \"make-a-donation\": {\n admin: {\n title: \"Make a donation | Cancer Research UK\",\n formID: \"ONDON000032\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"23MDDA004\",\n collection: \"UKSF003\",\n regular: \"23MDDA003\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [3, 5, 10],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"my-donation\": {\n admin: {\n title: \"My donation | Cancer Research UK\",\n formID: \"ONDON000030\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MOW9006\",\n collection: \"UKSF003\",\n regular: \"24MOW9005\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {},\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"ngl-donations\": {\n admin: {\n title: \"NGL donations | Cancer Research UK\",\n formID: \"ONDON000008\",\n product: {\n single: \"GOFDON\",\n collection: \"GOFDON\",\n },\n source: {\n single: \"UKSF001\",\n collection: \"UKSF001\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {},\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"CRUK Charity Golf Day 2024\",\n copy: \"Thank you for supporting this year’s CRUK Charity Golf Day. Please complete your donation and enter your details in the space below. If you have any questions, please do not hesitate to contact Joanne at Cancer Research UK on [0203 469 6292] or [joanne.wood@cancer.org.uk].\",\n },\n },\n },\n restart: {\n admin: {\n title: \"Restart | Cancer Research UK\",\n formID: \"ONDON000039\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"00MOL0200\",\n collection: \"UKSF003\",\n regular: \"00MOL0201\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [2, 5, 8],\n },\n donationMotivation: false,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Thank you again for your support of Cancer Research UK's life-saving work.\",\n },\n },\n },\n \"restart-now\": {\n admin: {\n title: \"Restart now | Cancer Research UK\",\n formID: \"ONDON000048\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"00MOL0204\",\n collection: \"UKSF003\",\n regular: \"00MOL0205\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [2, 5, 8],\n },\n donationMotivation: false,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Thank you again for your support of Cancer Research UK's life-saving work.\",\n },\n },\n },\n \"restart-today\": {\n admin: {\n title: \"Restart today | Cancer Research UK\",\n formID: \"ONDON000047\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"00MOL0202\",\n collection: \"UKSF003\",\n regular: \"00MOL0203\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [2, 5, 8],\n },\n donationMotivation: false,\n donationDestination: true,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"You are doing something amazing.\",\n copy: \"Thank you again for your support of Cancer Research UK's life-saving work.\",\n },\n },\n },\n \"scottish-power-partnership\": {\n admin: {\n title: \"Scottish Power partnership | Cancer Research UK\",\n formID: \"ONDON000007\",\n product: {\n single: \"CP0DON\",\n collection: \"CP0DON\",\n },\n source: {\n single: \"UKCP012\",\n collection: \"UKCP012\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [20, 80, 150],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n },\n },\n \"stand-up-to-cancer\": {\n admin: {\n title: \"Stand Up To Cancer\",\n formID: \"ONDON000002\",\n product: {\n single: \"SUODON\",\n collection: \"SUOONL\",\n },\n source: {\n single: \"SCZSUDNWB\",\n collection: \"N25U4O\",\n },\n merchantId: \"SU2CSingleDonation\",\n emailType: {\n single: Email.SU2C,\n },\n },\n brand: \"SU2C\",\n themeName: \"SU2C\",\n theme: su2cTheme,\n components: {\n donationAmount: {\n nudges: [25, 50, 100],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.SU2C,\n },\n },\n \"stand-up-to-cancer-channel-4\": {\n admin: {\n title: \"Stand Up To Cancer Channel 4\",\n formID: \"ONDON000003\",\n product: {\n single: \"SUODON\",\n collection: \"SUOONL\",\n },\n source: {\n single: \"SCZSUDNWB\",\n collection: \"N25U4O\",\n },\n merchantId: \"SU2CSingleDonation\",\n emailType: {\n single: Email.SU2C,\n },\n },\n brand: \"SU2C\",\n themeName: \"SU2C\",\n theme: su2cTheme,\n components: {\n donationAmount: {},\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.SU2C,\n },\n },\n \"stand-up-to-cancer-text\": {\n admin: {\n title: \"Stand Up To Cancer\",\n formID: \"ONDON000004\",\n product: {\n single: \"SUODON\",\n collection: \"SUOONL\",\n },\n source: {\n single: \"SCZSUDNWB\",\n collection: \"N25U4O\",\n },\n merchantId: \"SU2CSingleDonation\",\n emailType: {\n single: Email.SU2C,\n },\n },\n brand: \"SU2C\",\n themeName: \"SU2C\",\n theme: su2cTheme,\n components: {\n donationAmount: {},\n donationMotivation: true,\n donationDestination: false,\n header: headerConfig.SU2C,\n },\n },\n \"street-fundraiser-1\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000070\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25MSD1001\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"street-fundraiser-2\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000071\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25MSD1002\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"street-fundraiser-3\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000072\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25MSD1003\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"street-fundraiser-4\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000073\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25MSD1004\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"street-fundraiser-5\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000074\",\n product: {\n regular: \"CRDD\",\n },\n source: {\n regular: \"25MSD1005\",\n },\n emailType: {\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n regularNudges: [8, 15, 30],\n },\n donationMotivation: false,\n donationDestination: false,\n header: headerConfig.CRUK,\n introBanner: {\n header: \"Your donation will drive life saving research\",\n copy: \"The person you are speaking with is a paid fundraiser working directly for Cancer Research UK. Fundraising in this way is effective for us and enables us to commit to long-term programmes of world class research. Thank you once again for your support.\",\n },\n },\n },\n \"support-today\": {\n admin: {\n title: \"Support today | Cancer Research UK\",\n formID: \"ONDON000029\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"24MOW9002\",\n collection: \"UKSF003\",\n regular: \"24MOW9001\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {},\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n \"support-us\": {\n admin: {\n title: \"Support us | Cancer Research UK\",\n formID: \"ONDON000001\",\n product: {\n single: \"ONLDON\",\n collection: \"FUNDON\",\n regular: \"CRDD\",\n },\n source: {\n single: \"25MNT1103\",\n collection: \"UKSF003\",\n regular: \"25MNT1003\",\n },\n merchantId: \"CRUKSingleDonation\",\n emailType: {\n single: Email.CRUK,\n regular: Email.CRUK_REGULAR,\n },\n },\n brand: \"CRUK\",\n themeName: \"CRUK\",\n theme: crukTheme,\n components: {\n donationAmount: {\n nudges: [10, 20, 30],\n regularNudges: [6, 15, 30],\n },\n donationMotivation: true,\n donationDestination: true,\n header: headerConfig.CRUK,\n },\n },\n};\n\nexport const getFormName = (): string => {\n if (typeof window !== \"undefined\" && window.location.pathname === \"/\") {\n return \"support-us\";\n }\n return typeof window !== \"undefined\"\n ? config[window.location.pathname.split(\"/\")[1]]\n ? window.location.pathname.split(\"/\")[1]\n : \"\"\n : \"\";\n};\n\nexport const getFormArchetype = (\n formName: Option\n): \"public\" | \"face_to_face\" =>\n formName?.startsWith(\"fundraiser-\") ? \"face_to_face\" : \"public\";\n\nexport const getFormAdmin = (formName: string): AdminType =>\n config[formName] ? config[formName].admin : config[\"support-us\"].admin;\nexport const getFormThemeName = (formName: string): string =>\n config[formName]\n ? config[formName].themeName\n : config[\"support-us\"].themeName;\nexport const getFormTheme = (formName: string): ThemeType =>\n config[formName] ? config[formName].theme : config[\"support-us\"].theme;\nexport const getFormBrand = (formName: string): string =>\n config[formName] ? config[formName].brand : config[\"support-us\"].brand;\nexport const getFormComponents = (formName: string): FormComponentsType =>\n config[formName]\n ? config[formName].components\n : config[\"support-us\"].components;\nexport const hasNudges = (\n formComponents: FormComponentsType,\n formVersion: string\n): boolean => {\n const nudges =\n formVersion === \"regular\"\n ? formComponents.donationAmount.regularNudges\n : formComponents.donationAmount.nudges;\n return nudges !== undefined && nudges !== null;\n};\n","import {\n useState,\n createContext,\n ReactElement,\n Dispatch,\n SetStateAction,\n useEffect,\n} from \"react\";\nimport { Client, OptimizelyUserContext } from \"@optimizely/optimizely-sdk\";\nimport {\n getOptimizelyAudience,\n setOptimizelyAudience,\n} from \"../helpers/functions/shared\";\nimport type { Audience } from \"../helpers/functions/shared\";\n\ntype OptimizelyContextType = {\n optimizely: Client | null;\n optimizelyUserContext: OptimizelyUserContext | null;\n optimizelyAudience: Audience;\n isTestAudience: boolean;\n loadingState: \"loading\" | \"ready\" | \"failed\";\n};\n\nexport type OptimizelyContextProviderType = [\n OptimizelyContextType,\n Dispatch>\n];\n\ntype OptimizelyProviderPropTypes = {\n children?: ReactElement | ReactElement[];\n};\n\nconst defaultState = (): OptimizelyContextType => ({\n optimizely: null,\n optimizelyUserContext: null,\n optimizelyAudience: getOptimizelyAudience(),\n get isTestAudience() {\n return this.optimizelyAudience === \"test\";\n },\n loadingState: \"loading\",\n});\n\nexport const OptimizelyContext = createContext([\n defaultState(),\n () => {},\n]);\n\nexport const OptimizelyContextProvider = ({\n children,\n}: OptimizelyProviderPropTypes): ReactElement => {\n const [state, setState] = useState(defaultState());\n\n useEffect(() => {\n setOptimizelyAudience(state.optimizelyAudience);\n\n if (state.optimizelyUserContext) {\n state.optimizelyUserContext.setAttribute(\n \"audience\",\n state.optimizelyAudience\n );\n state.optimizelyUserContext.setAttribute(\n \"testAudience\",\n state.isTestAudience\n );\n }\n }, [!!state.optimizelyUserContext, state.optimizelyAudience]);\n\n return (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n \n {children}\n \n );\n};\n","import { createContext } from \"react\";\n\nconst ThemeNameContext = createContext(\"\");\n\nexport default ThemeNameContext;\n","import { createContext, Dispatch, SetStateAction } from \"react\";\n\nconst initialValue: {\n formVersion: string;\n setFormVersion: Dispatch>;\n} = {\n formVersion: \"\",\n setFormVersion() {},\n};\n\nconst VersionsContext = createContext(initialValue);\n\nexport default VersionsContext;\n","import { createGlobalStyle } from \"styled-components\";\nimport { crukTheme, ThemeType } from \"@cruk/cruk-react-components\";\n\ntype GlobalStyleProps = {\n theme: ThemeType;\n formTheme: string;\n};\n\ntype FontsTypes = {\n [name: string]: {\n family: string;\n url: string;\n };\n};\n\nconst checkBase64 =\n \"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\";\n\nconst GlobalStyle = createGlobalStyle`\n${(props: GlobalStyleProps) => {\n const theme = {\n ...crukTheme,\n ...props.theme,\n };\n const { formTheme } = props;\n\n const fonts: FontsTypes = {\n SU2C: {\n family: \"itc_avant_garde_pro_mdbold\",\n url: \"/assets/fonts/itc_-_itcavantgardepro-bold-webfont\",\n },\n CRUK: {\n family: \"MuseoSans-500\",\n url: \"/assets/fonts/MuseoSansRounded-500\",\n },\n NEW_CRUK: {\n family: \"Progress-Regular\",\n url: \"/assets/fonts/Progress-Regular\",\n },\n };\n\n return `\n @font-face {\n font-family: ${fonts[formTheme].family};\n src: url(${fonts[formTheme].url}.woff2) format('woff2'),\n url(${fonts[formTheme].url}.woff) format('woff');\n font-weight: normal;\n font-style: normal;\n font-display: swap;\n }\n\n @font-face {\n font-family: 'poppinsregular';\n src: url('/assets/fonts/poppins-regular-webfont.woff2') format('woff2'),\n url('/assets/fonts/poppins-regular-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n font-display: swap;\n }\n \n *, *::after, *::before {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n \n @media (prefers-reduced-motion: reduce) {\n *, *::after, *::before {\n animation-play-state: paused !important;\n animation-direction: reverse !important;\n transition: none !important;\n scroll-behavior: auto !important;\n }\n }\n\n html {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n }\n\n body {\n margin: 0;\n padding: 0;\n background-color: ${theme.tokenColors.white};\n color: ${theme.colors.textDark};\n font-family: ${theme.typography.fontFamilyBase};\n font-size: 100%;\n line-height: 1.5;\n }\n\n main {\n display: block;\n flex: 1 0 auto;\n }\n\n table, td, th {\n border-spacing: 0;\n border: 1px solid #ccc;\n padding: 10px;\n }\n \n .no-focus-outline a:focus,\n .no-focus-outline button:focus {\n outline: none;\n }\n\n img {\n border-style: none;\n width: 100%;\n height: auto;\n }\n\n section {\n width: 100%;\n }\n\n form {\n padding: ${theme.spacing.s};\n }\n \n fieldset {\n padding: 0;\n border: 0;\n }\n\n legend {\n display: block;\n box-sizing: border-box; \n color: inherit;\n max-width: 100%; \n padding: 0;\n white-space: normal;\n -webkit-margin-collapse: separate\n }\n\n button {\n font-size: 1em;\n }\n\n button, input, select {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n }\n\n label {\n font-weight: bold;\n display: block;\n margin-bottom: ${theme.spacing.xxs}\n }\n\n input {\n position: relative; \n min-height: 48px;\n width: 100%;\n max-width: 100%;\n margin: 0;\n }\n\n //BRAINTREE\n .braintree-hosted-fields-valid {\n span {\n content: \"\";\n background-repeat: no-repeat;\n background-position: calc( 100% - ${theme.spacing.xxs}) 50%;\n background-image: url('data:image/png;base64,${checkBase64}');\n width: 32px;\n bottom: 0;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1;\n }\n }\n //BRAINTREE END\n\n h1 {\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\n a {\n text-decoration: underline;\n color: ${theme.colors.linkColor};\n\n &:hover,\n &:focus {\n text-decoration: none;\n color: ${theme.colors.linkColorHover};\n }\n\n &.learn-more-about-gift-aid {\n color: ${theme.colors.secondary};\n }\n }\n\n .cardLogoList.active {\n li {\n opacity: 0.2;\n\n &.activeType { \n opacity: 100;\n }\n }\n }\n\n .truncate-text {\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n } \n `;\n}}`;\n\nexport default GlobalStyle;\n","import { v4 as uuidv4 } from \"uuid\";\nimport { enums } from \"@optimizely/optimizely-sdk\";\nimport type { Client, OptimizelyUserContext } from \"@optimizely/optimizely-sdk\";\nimport { datadogRum } from \"@datadog/browser-rum\";\nimport useDataLayer, {\n CheckoutProductsType,\n fetchMerchantAccounts,\n} from \"../useDataLayer\";\nimport {\n bracketSelectorRegExp,\n phoneRegExp,\n emailRegExp,\n whiteSpaceRegExp,\n urlRegExp,\n} from \"../regexp\";\nimport type { AdminType } from \"../../configs/single-donation\";\nimport { getFormArchetype } from \"../../configs/single-donation\";\nimport type { Brand, Option } from \"../types/shared\";\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 isProductJourney = (merchantAccount: string): boolean =>\n fetchMerchantAccounts().get(merchantAccount)?.journey === \"product\";\n\nexport const isDonationJourney = (merchantAccount: string): boolean =>\n fetchMerchantAccounts().get(merchantAccount)?.journey === \"donation\";\n\nexport type TransactionAttemptCache = Partial<{\n sellerReference: string;\n redirectUrl: string;\n timestamp: number; // can be used to say \"last attempted at: time\"\n}>;\n\nexport const setTransactionAttemptRedirectUrl = (redirectUrl: string) => {\n const stored = localStorage.getItem(\"transaction-attempt\");\n const existingData = stored && JSON.parse(stored);\n const data = {\n ...existingData,\n redirectUrl,\n } as TransactionAttemptCache;\n localStorage.setItem(\"transaction-attempt\", JSON.stringify(data));\n};\n\nexport const setTransactionAttemptSellerReference = (\n sellerReference: string\n) => {\n const stored = localStorage.getItem(\"transaction-attempt\");\n const existingData = stored && JSON.parse(stored);\n const data = {\n ...existingData,\n sellerReference,\n timestamp: new Date().getTime(),\n } as TransactionAttemptCache;\n localStorage.setItem(\"transaction-attempt\", JSON.stringify(data));\n};\n\nexport const clearTransactionAttemptCache = () => {\n const stored = localStorage.getItem(\"transaction-attempt\");\n if (stored) {\n const existingData = stored && JSON.parse(stored);\n const data = {\n redirectUrl: existingData?.redirectUrl,\n } as TransactionAttemptCache;\n localStorage.setItem(\"transaction-attempt\", JSON.stringify(data));\n }\n};\n\nexport const removeTransactionAttemptCache = () => {\n localStorage.removeItem(\"transaction-attempt\");\n};\n\nconst RETRY_THRESHOLD_TIME_SECONDS = 90;\n\nconst canRetryTransaction = (cachedTime: number): boolean => {\n const currentTime = new Date().getTime();\n const deltaMillis = currentTime - cachedTime;\n const deltaSeconds = deltaMillis / 1000;\n return deltaSeconds > RETRY_THRESHOLD_TIME_SECONDS;\n};\n\nexport const getTransactionAttemptCache =\n (): Option => {\n const item = localStorage.getItem(\"transaction-attempt\");\n const cache = item && (JSON.parse(item) as TransactionAttemptCache);\n\n if (canRetryTransaction(cache?.timestamp)) {\n clearTransactionAttemptCache();\n return null;\n }\n\n return cache;\n };\n\ntype DataArrayType = DataObject[];\ntype DataObject = {\n [i: string]: string;\n};\n\nexport const setCookieBanner = (): void => {\n const cookieBannerID =\n process.env.COOKIE_BANNER_ID === \"PRODUCTION\"\n ? \"81232513-709c-4b95-8a41-a4b812c22fdc\"\n : \"81232513-709c-4b95-8a41-a4b812c22fdc-test\";\n const cookieScript = document.createElement(\"script\");\n cookieScript.src = \"https://cdn.cookielaw.org/scripttemplates/otSDKStub.js\";\n cookieScript.setAttribute(\"data-domain-script\", cookieBannerID);\n\n document.head.appendChild(cookieScript);\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 { pushDataLayerLoaded, pushCheckoutStep, pushPaymentSuccess } =\n useDataLayer();\n const { theme, brand: brandName } = getThemeAndBrand(toBrand(brand));\n\n // @ts-expect-error\n window.OptanonWrapper = () => {\n pushDataLayerLoaded(brandName, page);\n if (checkoutStep) {\n if (checkoutStep < 4) {\n dataLayerObj ? pushCheckoutStep(checkoutStep, dataLayerObj) : \"\";\n }\n if (checkoutStep === 4 && transactionId) {\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\n/**\n * Regex: `/target=([^;]+)(?:;|$)/`\n *\n * Cookie strings follow this pattern: \"cookie1=values1;cookie2=values2;cookie3=values3;cookie4=values4;\"\n *\n * The above regex is to capture the value of a specific cookie. Therefore, to match \"values1\", the regex would become `/cookie1=([^;]+);/`\n *\n * Explanation:\n * - cookie1 matches exactly\n * - = matches the equal sign.\n * - ([^;]+) captures one or more characters that are not a semicolon.\n * - (?:;|$) is a non-capture group that matches whether the string ends with ; or end of string\n *\n * JavaScript's `.match` method returns an array in the following format if there is a match:\n *\n * Array [entire match, ...all capturing groups]\n *\n * For example, for the above search term:\n * ```javascript\n * const cookies = \"cookie1=values1;cookie2=values2;cookie3=values3;cookie4=values4;\";\n * const pattern = /cookie1=([^;]+)(?:;|$)/;\n *\n * const match = cookies.match(pattern); // returns [\"cookie1=values1;\", \"values1\"]\n * ```\n */\nconst findCookie = (cookieString: string, target: string): Option => {\n const pattern = new RegExp(`${target}=([^;]+)(?:;|$)`);\n const match = cookieString.match(pattern)?.[1];\n return match && decodeURIComponent(match);\n};\n\n/**\n * Regex: `/groups=([^&]+)(?:&|$)/`\n *\n * The consent portion of the OptanonConsent cookie looks like this: \"groups=snc:1,per:1,fun:1,tar:1\"\n *\n * The cookie value is separated by `&` and this portion could exist somewhere in between or the end of string.\n *\n * Explanation:\n * - groups matches exactly\n * - = matches the equal sign.\n * - ([^&]+) captures one or more characters that are not an ampersand.\n * - (?:&|$) is a non-capture group that matches whether the string ends with & or end of string\n */\nconst peekCookieConsentString = (): Option => {\n const consentCookie = findCookie(document.cookie, \"OptanonConsent\");\n const match = consentCookie?.match(/groups=([^&]+)(?:&|$)/);\n return match?.[1];\n};\n\ntype OfflineConversionData = {\n fbc: Option;\n fbp: Option;\n consentString: Option;\n eventSourceUrl: string;\n archetype: ReturnType;\n};\n\nexport const getOfflineConversionData = (\n formName?: string\n): OfflineConversionData => {\n const consentString = peekCookieConsentString();\n const fbc = findCookie(document.cookie, \"_fbc\");\n const fbp = findCookie(document.cookie, \"_fbp\");\n const eventSourceUrl = window.location.href;\n const archetype = getFormArchetype(formName);\n\n return {\n consentString,\n eventSourceUrl,\n fbc,\n fbp,\n archetype,\n };\n};\n\nexport const getReCaptchaIdByJourney = (page: string) => {\n let result: Option<{ id: string; journey: \"donation\" | \"product\" }> = null;\n\n const singlePathTemplate = \"/[form]/\";\n const donateLandingPageTemplate = \"/donate\";\n const productPathTemplate = \"/payment\";\n\n const isProductPage = page === productPathTemplate;\n const isDonationPage =\n page.startsWith(singlePathTemplate) ||\n page.startsWith(donateLandingPageTemplate);\n\n if (isProductPage) {\n result = {\n id:\n process.env.PA_ENT_RECAPTCHA_ID ||\n \"6LfX6K0cAAAAABcxOdLV-131IQuBjz5JZantzqQd\",\n journey: \"product\",\n };\n } else if (isDonationPage) {\n result = {\n id:\n process.env.SD_ENT_RECAPTCHA_ID ||\n \"6Lc1pq0cAAAAAEquhg5jOP-q4WRI0MY0e0S90INs\",\n journey: \"donation\",\n };\n }\n\n return result;\n};\n\n// @ts-ignore\n// export const setReCAPTCHA = (reCaptchaId: string): void => {\n// const reCaptchaScript = document.createElement(\"script\");\n// // reCaptchaScript.src = `https://www.google.com/recaptcha/api.js?render=${reCaptchaId}`;\n// reCaptchaScript.src = `https://www.google.com/recaptcha/enterprise.js?render=${reCaptchaId}`;\n// document.head.appendChild(reCaptchaScript);\n// };\n\nexport const setReCAPTCHAVisibility = (\n visibility: \"hidden\" | \"visible\"\n): void => {\n const recaptchaStyleElement = document.getElementById(\n \"recaptcha-visibility\"\n ) as Option;\n const stylesheet = recaptchaStyleElement?.sheet as any;\n const currentVisibility = stylesheet?.cssRules[0].style.getPropertyValue(\n \"--visibility\"\n ) as string;\n if (currentVisibility !== visibility) {\n stylesheet?.cssRules[0].style.setProperty(\"--visibility\", visibility);\n }\n};\n\nexport const setDatadog = (): void => {\n if (process.env.NODE_ENV === \"development\") {\n return null;\n }\n datadogRum.init({\n applicationId: \"a4e3c5be-5896-45d8-939c-91ad2577afcf\",\n clientToken: process.env.DATADOG_CLIENT_TOKEN,\n site: \"datadoghq.eu\",\n service: \"PWS\",\n env: process.env.DATADOG_ENV,\n version: \"1.100.0\",\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 getUKDate = (date: Date): string => {\n let dd = String(date.getDate());\n let mm = String(date.getMonth() + 1);\n const yyyy = date.getFullYear();\n\n if (mm.length < 2) mm = `0${mm}`;\n if (dd.length < 2) dd = `0${dd}`;\n\n const today = `${dd}/${mm}/${yyyy}`;\n return today;\n};\n\nexport const isUkCountry = (country: string): boolean =>\n [\"United Kingdom\", \"Jersey\", \"Guernsey\", \"Isle of Man\"].includes(country);\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 formatTwoDecimals = (num: number): number =>\n Number(num.toFixed(2));\n\nexport const getPageTitle = (): string => {\n if (\n window.location.pathname.includes(\"/\") &&\n window.location.pathname.split(\"/\").length > 2\n ) {\n const page = window.location.pathname.includes(\"/\")\n ? window.location.pathname.split(\"/\")[2]\n : window.location.pathname;\n const title = page.includes(\"-\") ? page.replace(\"-\", \" \") : page;\n const formattedTitle = title.charAt(0).toUpperCase() + title.slice(1);\n return formattedTitle;\n }\n return \"404\";\n};\n\nexport const idleTimer = (brand: string): void => {\n let time: ReturnType;\n\n const resetSession = () => {\n sessionStorage.clear();\n redirectToHomepage(brand);\n };\n\n const resetTimer = () => {\n clearTimeout(time);\n time = setTimeout(resetSession, 900000);\n };\n\n window.onload = resetTimer;\n document.onmousemove = resetTimer;\n document.onmousedown = resetTimer;\n document.onkeypress = resetTimer;\n document.ontouchstart = resetTimer;\n document.onclick = resetTimer;\n document.onkeydown = resetTimer;\n document.addEventListener(\"scroll\", resetTimer, true);\n};\n\nexport const redirectToHomepage = (brand: string): void => {\n let url;\n\n switch (brand) {\n case \"SU2C\":\n url = \"https://www.standuptocancer.org.uk/\";\n break;\n case \"BMF\":\n url = \"https://www.cancerresearchuk.org/get-involved/bobby-moore-fund\";\n break;\n case \"RFL\":\n url = \"https://raceforlife.cancerresearchuk.org/\";\n break;\n default:\n url = \"https://www.cancerresearchuk.org/\";\n break;\n }\n\n sessionStorage.clear();\n\n window.location.replace(url);\n};\n\nexport const getOptimizelyUserId = (): Option => {\n let uuid;\n if (\n typeof window !== \"undefined\" &&\n sessionStorage.getItem(\"optimizelyUserId\")\n ) {\n uuid = sessionStorage.getItem(\"optimizelyUserId\");\n } else {\n uuid = uuidv4();\n if (typeof window !== \"undefined\")\n sessionStorage.setItem(\"optimizelyUserId\", uuid);\n }\n\n return uuid;\n};\n\nconst OptimizelyAudience = [\n \"test\",\n \"general\",\n \"condensed-amount-view-bucket\",\n] as const;\n\nexport type Audience = (typeof OptimizelyAudience)[number];\n\nexport const setOptimizelyAudience = (audience: Audience): void => {\n try {\n sessionStorage.setItem(\"optimizelyAudience\", audience);\n console.info(`[OPTIMIZELY] Cached optimizely audience: ${audience}`);\n } catch (e) {\n console.error(\"Could not set optimizely audience to session storage.\");\n }\n};\n\nexport const getOptimizelyAudience = (): Option => {\n let audience: Audience;\n\n if (typeof window !== \"undefined\") {\n const searchParams = new URLSearchParams(window.location.search);\n const testingMode = searchParams.get(\"testingmode\");\n\n if (testingMode === \"true\") {\n setOptimizelyAudience(\"test\");\n audience = \"test\";\n } else if (testingMode === \"false\") {\n setOptimizelyAudience(\"general\");\n audience = \"general\";\n } else {\n const cachedAudience = sessionStorage.getItem(\n \"optimizelyAudience\"\n ) as Option;\n\n if (cachedAudience) {\n audience = cachedAudience;\n } else {\n // TODO This might need to be tweaked to revert back to original audience (if anything other than test and general are introduced)\n setOptimizelyAudience(\"general\");\n audience = \"general\";\n }\n }\n }\n\n return audience;\n};\n\nexport type FetchOptimizelyDatafileResponse = {\n datafile: Option;\n status: \"cached\" | \"new\" | \"timedout\";\n};\n\nexport const cacheOptimizelyDatafile = (datafile: string) => {\n if (typeof window !== \"undefined\") {\n try {\n sessionStorage.setItem(\"optimizelyDatafile\", datafile);\n console.info(\"[OPTIMIZELY] Cached datafile.\");\n } catch (e) {\n console.error(\n \"[OPTIMIZELY] Could not cache optimizely datafile to session storage.\",\n e\n );\n }\n }\n};\n\nexport const fetchOptimizelyDatafile = async (\n sdkKey: string,\n timeout = 5000\n): Promise> => {\n if (typeof window !== \"undefined\") {\n const cachedDatafile = sessionStorage.getItem(\"optimizelyDatafile\");\n if (cachedDatafile) {\n console.info(\"[OPTIMIZELY] Returning cached datafile.\");\n\n return {\n status: \"cached\",\n datafile: cachedDatafile,\n };\n }\n\n const controller = new AbortController();\n const timer = setTimeout(() => {\n controller.abort();\n }, timeout);\n\n try {\n const datafileUrl = `https://cdn.optimizely.com/datafiles/${sdkKey}.json`;\n const response = await fetch(datafileUrl, { signal: controller.signal });\n // On error, this returns an XML error response. This doesn't break the app, because the init just requests a fresh datafile. As long as the sdkKeys are the same, the fetch to the CDN is the exact same.\n const datafile = await response.text();\n cacheOptimizelyDatafile(datafile);\n console.info(\"[OPTIMIZELY] Returning fetched datafile.\");\n\n return {\n status: \"new\",\n datafile,\n };\n } catch (e) {\n console.error(\"[OPTIMIZELY] Could not manually fetch datafile.\", e);\n\n return {\n datafile: null,\n status: \"timedout\",\n };\n } finally {\n clearTimeout(timer);\n }\n }\n\n return null;\n};\n\n/**\n * Regex: `/(\\[.*?\\])/`\n *\n * Explanation:\n * - `(` and `)`: These parentheses define a capture group, which means that anything matched within these parentheses will be captured and included in the result of the split method.\n * - `\\]`: This matches the right square bracket `]` character.\n * - `.*?`: The `.*?` is a non-greedy quantifier that matches any character zero or more times but as few times as possible. It ensures that the regular expression captures the shortest possible string between square brackets.\n *\n * - So, the entire regular expression `/(\\[.*?\\])/` is designed to match and capture any content enclosed within square brackets while splitting the string at those brackets. The captured content is what you get in the resulting array when using split.\n * Examples:\n * - Raw: \"This is a string with [phone number] and [email].\"\n * - Result when split with capture group regex: Array [\"This is a string with \", \"[phone number]\", \" and \", \"[email]\", \".\"]\n */\nexport const splitIntoFragments = (copy: string): Array =>\n copy\n .trim()\n .split(/(\\[.*?\\])/)\n .filter((sub) => sub.trim() !== \"\");\n\nexport const isTemplate = (fragment: string): boolean =>\n fragment.startsWith(\"[\") && fragment.endsWith(\"]\");\n\nexport const stripTemplating = (fragment: string): string =>\n fragment.replace(bracketSelectorRegExp, \"\");\n\nexport const internationalizePhoneNumber = (\n phoneNumber: string,\n countryCallingCode = \"+44\"\n): string => `${countryCallingCode}${phoneNumber.substring(1)}`;\n\nexport const removeMiddleSpaces = (str: string): string =>\n str.replace(whiteSpaceRegExp, \"\");\n\nexport const isPhoneNumber = (fragment: string): boolean =>\n phoneRegExp.test(removeMiddleSpaces(stripTemplating(fragment)));\n\nexport const isEmail = (fragment: string): boolean =>\n emailRegExp.test(removeMiddleSpaces(stripTemplating(fragment)));\n\nexport const isUrl = (fragment: string): boolean =>\n urlRegExp.test(removeMiddleSpaces(stripTemplating(fragment)));\n\nexport const clickableTelNum = (tel: string): string =>\n `${tel}`;\n\nexport const canUseApplePay = (): boolean => {\n if (\n window.ApplePaySession &&\n window.ApplePaySession.supportsVersion(3) &&\n window.ApplePaySession.canMakePayments()\n ) {\n return true;\n }\n return false;\n};\n\n/**\n * This function expects the name to have already gone through our schema validation for the cardholderName field.\n *\n * @throws Will throw an error if name does not contain a space that can be used to split the name into givenName and surname.\n */\nexport const approximateCardholderNameToParts = (\n fullName: string,\n options: { tag: string } = { tag: \"Payment\" }\n): { givenName: string; surname: string } => {\n const name = fullName.trim();\n const separatorIndex = name.lastIndexOf(\" \");\n\n if (separatorIndex === -1) {\n throw new Error(\n `[${options.tag}] Could not approximate cardholder name into given name and surname: '${name}'`\n );\n }\n\n const surname = name.substring(separatorIndex + 1).trim();\n const givenName = name.substring(0, separatorIndex).trim();\n\n return {\n givenName,\n surname,\n };\n};\n\nexport const getTransactionID = (formName: string): string | null =>\n typeof window !== \"undefined\"\n ? sessionStorage.getItem(`transactionId-${formName}`)\n : null;\n\nexport const pageShowEventReload = (e: PageTransitionEvent) => {\n if (e.persisted) {\n window.location.reload();\n }\n};\n\nexport const handleMetaData = (\n initialValue: any,\n researchAreas: Array<{ label: string; value: string }>,\n formName: string,\n formAdmin: AdminType,\n brand: string,\n formType: \"single\" | \"regular\" = \"single\"\n): any => {\n const refData = {\n admin: {\n formID: formAdmin.formID,\n product:\n formType === \"regular\"\n ? formAdmin.product.regular\n : initialValue.typeRadioGroup === \"yes\"\n ? formAdmin.product.single\n : formAdmin.product.collection,\n source:\n formType === \"regular\"\n ? formAdmin.source.regular\n : initialValue.typeRadioGroup === \"yes\"\n ? formAdmin.source.single\n : formAdmin.source.collection,\n emailType:\n formType === \"regular\"\n ? formAdmin.emailType.regular\n : formAdmin.emailType.single,\n },\n };\n\n const researchArea = initialValue.restriction\n ? researchAreas.find((area) => area.value === initialValue.restriction)\n : \"\";\n const restrictionDesc = researchArea\n ? { restrictionDescription: researchArea.label.toLowerCase() }\n : \"\";\n\n const trimmedPostcode = { postalCode: initialValue.postalCode.trim() };\n const trimmedBillingPostcode = {\n billingPostalCode: initialValue.billingPostalCode.trim(),\n };\n const offlineConversionData = getOfflineConversionData(formName);\n\n return {\n ...initialValue,\n ...trimmedPostcode,\n ...trimmedBillingPostcode,\n ...restrictionDesc,\n ...refData,\n marketingProperties: offlineConversionData,\n theme: brand,\n };\n};\n\nexport const mergeMetadata = (metadata: any, donationData?: any) => {\n const trimmedPostcode = { postalCode: donationData.postalCode.trim() };\n const trimmedBillingPostcode = {\n billingPostalCode: donationData.billingPostalCode.trim(),\n };\n const mergedMetadata = donationData\n ? { ...metadata, ...donationData }\n : metadata;\n\n return {\n ...mergedMetadata,\n ...trimmedPostcode,\n ...trimmedBillingPostcode,\n };\n};\n\nexport const objectHasVal = (\n obj: DataArrayType,\n key: string,\n val: string\n): boolean => obj.filter((e) => e[key] === val).length > 0;\n\nexport const optimizelyNotificationListeners = (optimizely: Client) => {\n const { pushOptimizelyExperiment } = useDataLayer();\n const onDecision = ({ type, decisionInfo }: any): void => {\n if (type === \"flag\") {\n pushOptimizelyExperiment(\n decisionInfo.flagKey,\n decisionInfo.enabled,\n decisionInfo.variationKey\n );\n }\n };\n\n optimizely.notificationCenter.addNotificationListener(\n enums.NOTIFICATION_TYPES.DECISION,\n onDecision\n );\n};\n\nexport const checkOptimizelyVariation = ({\n user,\n}: {\n user: OptimizelyUserContext;\n}): void => {\n // Optimizely check for variation URL param (variation) and force specific decision\n if (user) {\n const searchParams = new URLSearchParams(window.location.search);\n const optimizelyExperiment = searchParams.get(\"experiment\");\n const optimizelyVariation = searchParams.get(\"variation\");\n\n if (optimizelyExperiment && optimizelyVariation) {\n console.info(\n `[OPTIMIZELY] Forcing variation\\nExperiment: ${optimizelyExperiment}\\nVariation: ${optimizelyVariation}`\n );\n user.setForcedDecision(\n { flagKey: optimizelyExperiment },\n { variationKey: optimizelyVariation }\n );\n }\n }\n};\n\nexport const PAYMENT_API_GATEWAY_URL =\n process.env.PAYMENT_API_GATEWAY_URL || \"https://api.pws.int.cruk.org/\";\n\nexport const formatNumberToCurrencyString = (\n num: number,\n includeDecimal?: boolean\n): string =>\n includeDecimal\n ? num.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n : num.toLocaleString();\n\nexport const testables = {\n findCookie,\n peekCookieConsentString,\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 emailRegExp = /^[^@]+@[^@]+\\.[^@]+$/;\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;\nexport const urlRegExp =\n /(https:\\/\\/www\\.|http:\\/\\/www\\.|https:\\/\\/|http:\\/\\/)?[a-zA-Z]{2,}(\\.[a-zA-Z]{2,})(\\.[a-zA-Z]{2,})?\\/[a-zA-Z0-9]{2,}|((https:\\/\\/www\\.|http:\\/\\/www\\.|https:\\/\\/|http:\\/\\/)?[a-zA-Z]{2,}(\\.[a-zA-Z]{2,})(\\.[a-zA-Z]{2,})?)|(https:\\/\\/www\\.|http:\\/\\/www\\.|https:\\/\\/|http:\\/\\/)?[a-zA-Z0-9]{2,}\\.[a-zA-Z0-9]{2,}\\.[a-zA-Z0-9]{2,}(\\.[a-zA-Z0-9]{2,})?/;\n","type DataLayerEvent =\n | {\n event: \"dataLayerLoaded\";\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 | {\n event: \"OneTrustGroupsUpdated\";\n OnetrustActiveGroups: string;\n \"gtm.uniqueEventId\": number;\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: Array;\n }\n}\n\nconst findLast = (\n array: Array,\n predicate: (element: T) => boolean\n): T | undefined => {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n return undefined;\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 pushDataLayerLoaded(brand: string, title: string) {\n push({\n event: \"dataLayerLoaded\",\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: any,\n paymentMethod: string,\n affiliation: string,\n productSource: string,\n restriction: string,\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 const timer = window.setInterval(() => {\n const dl = window.dataLayer;\n\n const consentEvent = findLast(\n dl,\n (data) => data.event === \"OneTrustGroupsUpdated\"\n ) as\n | Extract\n | undefined;\n\n const consentSettings = consentEvent?.OnetrustActiveGroups;\n const hasConsent = consentSettings?.includes(\"per\");\n\n if (hasConsent) {\n if (enabled) {\n push({\n event: \"Optimizely\",\n experiment,\n enabled,\n variation,\n });\n }\n\n cleanUpTimer();\n }\n }, 2000);\n\n const cleanUpTimer = () => {\n clearInterval(timer);\n };\n },\n };\n};\n\nexport default useDataLayer;\n"],"names":["StyledFooter","styled","theme","tokenColors","grey_200","spacing","s","formTheme","css","white","FooterContainer","utilities","contentMaxWidth","m","FooterLinks","fontSizes","breakpoint","tablet","FooterText","grey_500","xs","FooterLogo","href","title","target","rel","src","alt","page","optimizelyId","formVersion","useContext","VersionsContext","strategy","charSet","name","content","httpEquiv","property","sizes","type","useState","datafileResponse","setDatafileResponse","OptimizelyContext","optimizelyContext","setOptimizelyContext","optimizelyUserId","getOptimizelyUserId","optimizelyAudience","isTestAudience","useEffect","optimizely","fetchOptimizelyDatafile","process","then","data","console","error","optimizelyClient","createInstance","sdkKey","datafile","eventBatchSize","eventFlushInterval","onReady","timeout","success","optimizelyNotificationListeners","optimizelyUser","createUserContext","testAudience","audience","$opt_user_agent","window","navigator","userAgent","checkOptimizelyVariation","user","optimizelyUserContext","getOptimizelyAudience","loadingState","e","setLogLevel","PhoneNumberMobile","PhoneNumberDesktop","children","countryCallingCode","internationalizePhoneNumber","removeMiddleSpaces","RequiredParagraph","typography","fontWeightHeavy","fontWeightMedium","widthTabletStyles","ExtendedBoxWrapper","Box","ButtonLink","xxs","colors","primary","primaryHover","InputsLayoutWrapper","mobile","Rotate","keyframes","Spinner","grey_300","PageContainer","MaxWidth","StyledCollapse","SU2C","logoAlt","logoSrc","logoTitle","logoUrl","CRUK","siteSlogan","NEW_CRUK","BMF","RFL","Email","config","admin","formID","product","regular","source","emailType","CRUK_REGULAR","brand","themeName","crukTheme","components","donationAmount","regularNudges","donationMotivation","donationDestination","header","headerConfig","introBanner","copy","single","collection","merchantId","nudges","donating","donate","donation","restart","su2cTheme","getFormName","location","pathname","split","getFormArchetype","formName","startsWith","getFormAdmin","getFormThemeName","getFormTheme","getFormBrand","getFormComponents","hasNudges","formComponents","undefined","defaultState","this","createContext","OptimizelyContextProvider","state","setState","setOptimizelyAudience","setAttribute","Provider","value","ThemeNameContext","initialValue","setFormVersion","GlobalStyle","createGlobalStyle","props","fonts","family","url","textDark","fontFamilyBase","linkColor","linkColorHover","secondary","brandArray","toBrand","includes","isBrand","getThemeAndBrand","isProductJourney","merchantAccount","fetchMerchantAccounts","get","journey","setTransactionAttemptRedirectUrl","redirectUrl","stored","localStorage","getItem","JSON","parse","setItem","stringify","setTransactionAttemptSellerReference","sellerReference","timestamp","Date","getTime","clearTransactionAttemptCache","existingData","removeTransactionAttemptCache","removeItem","getTransactionAttemptCache","cachedTime","item","cache","setCookieBanner","cookieScript","document","createElement","head","appendChild","setCookieAccepted","amount","amountWithGA","checkoutStep","dataLayerObj","transactionId","paymentMethod","productSource","restriction","useDataLayer","pushDataLayerLoaded","pushCheckoutStep","pushPaymentSuccess","brandName","OptanonWrapper","findCookie","cookieString","pattern","RegExp","match","decodeURIComponent","peekCookieConsentString","consentCookie","cookie","getOfflineConversionData","consentString","fbc","fbp","eventSourceUrl","archetype","setReCAPTCHAVisibility","visibility","recaptchaStyleElement","getElementById","stylesheet","sheet","cssRules","style","getPropertyValue","setProperty","setDatadog","datadogRum","applicationId","clientToken","site","service","env","version","sessionSampleRate","sessionReplaySampleRate","trackUserInteractions","trackResources","trackLongTasks","defaultPrivacyLevel","silentMultipleInit","isUkCountry","country","isNonMainlandPostcode","postcode","firstTwoChars","substring","toUpperCase","formatTwoDecimals","num","Number","toFixed","idleTimer","time","resetSession","sessionStorage","clear","redirectToHomepage","resetTimer","clearTimeout","setTimeout","onload","onmousemove","onmousedown","onkeypress","ontouchstart","onclick","onkeydown","addEventListener","replace","uuid","uuidv4","info","testingMode","URLSearchParams","search","cachedAudience","cacheOptimizelyDatafile","cachedDatafile","status","controller","AbortController","timer","abort","datafileUrl","fetch","signal","response","text","splitIntoFragments","trim","filter","sub","isTemplate","fragment","endsWith","stripTemplating","bracketSelectorRegExp","phoneNumber","str","whiteSpaceRegExp","isPhoneNumber","phoneRegExp","isEmail","emailRegExp","isUrl","urlRegExp","clickableTelNum","tel","canUseApplePay","ApplePaySession","supportsVersion","canMakePayments","approximateCardholderNameToParts","fullName","options","tag","separatorIndex","lastIndexOf","Error","surname","givenName","getTransactionID","pageShowEventReload","persisted","reload","handleMetaData","researchAreas","formAdmin","formType","refData","typeRadioGroup","researchArea","find","area","restrictionDesc","restrictionDescription","label","toLowerCase","trimmedPostcode","postalCode","trimmedBillingPostcode","billingPostalCode","offlineConversionData","marketingProperties","mergeMetadata","metadata","donationData","mergedMetadata","objectHasVal","obj","key","val","length","pushOptimizelyExperiment","notificationCenter","addNotificationListener","enums","decisionInfo","flagKey","enabled","variationKey","searchParams","optimizelyExperiment","optimizelyVariation","setForcedDecision","PAYMENT_API_GATEWAY_URL","formatNumberToCurrencyString","includeDecimal","toLocaleString","minimumFractionDigits","maximumFractionDigits","addressLine1RegExp","addressLine23RegExp","amountRegExp","andRegExp","cityRegExp","extraEmailRegExp","nameRegExp","nameExcludedRegExp","postcodeIntlRegExp","postcodeUkRegExp","singleCharRegExp","numbersOnlyRegExp","sortCodeRegExp","merchantAccounts","Map","set","dataLayer","paymentCategory","paymentName","fetchProduct","push","event","pagePath","pageTitle","step","products","ecommerce","checkout","actionField","pushInteraction","action","pushDonatePageInteraction","eventCategory","eventAction","eventLabel","pushError","errorCode","errorType","errorMessage","revenue","transactionID","affiliation","discount","currencyCode","purchase","id","tax","shipping","coupon","payment_type","source_code","restriction_code","revenue_excl_giftaid","experiment","variation","setInterval","consentEvent","array","predicate","i","findLast","consentSettings","OnetrustActiveGroups","cleanUpTimer","clearInterval"],"sourceRoot":""}