{"version":3,"file":"static/chunks/196-ad4601c7faa9469c.js","mappings":"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","sources":["webpack://_N_E/./src/utils/formUtils.ts","webpack://_N_E/./src/validation/page.ts"],"sourcesContent":["import { type RegExpObject, type ValidationType } from \"@fwa/src/types\";\n\n/*\nUtil function for making a delay and then a thenable for delaying promises,\nuseful when waiting for validation before submission\n*/\nexport const delay = (ms: number) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const removeEmptyStringAttributes = (\n obj: Record,\n) =>\n Object.entries(obj)\n .filter(([, v]) => v !== \"\")\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});\n\nexport const validate = (\n value: string,\n validation: ValidationType,\n setValidationMessage: (msg: string) => void,\n): boolean => {\n if (!validation) return true;\n if (typeof validation.required !== \"undefined\" && validation.required) {\n if (!value.length) {\n setValidationMessage(`This field is required`);\n return false;\n }\n }\n if (\n typeof validation.type !== \"undefined\" &&\n validation.type === \"number\" &&\n Number.isNaN(Number(value))\n ) {\n setValidationMessage(\"This value must be a number\");\n return false;\n }\n if (\n typeof validation.type !== \"undefined\" &&\n validation.type === \"money\" &&\n !RegexMoney.pattern.test(value)\n ) {\n setValidationMessage(RegexMoney.message);\n return false;\n }\n if (typeof validation.minValue !== \"undefined\") {\n if (\n validation.minValue &&\n (Number.isNaN(Number(value)) || Number(value) < validation.minValue)\n ) {\n setValidationMessage(\n `Minimum value is ${validation.minValue?.toString() || \"\"}`,\n );\n return false;\n }\n }\n if (typeof validation.maxValue !== \"undefined\") {\n if (\n validation.maxValue &&\n (Number.isNaN(Number(value)) || Number(value) > validation.maxValue)\n ) {\n setValidationMessage(\n `Maximum value is ${validation.maxValue?.toString() || \"\"}`,\n );\n return false;\n }\n }\n if (typeof validation.minLength !== \"undefined\") {\n if (\n validation.minLength &&\n value.length > 0 &&\n value.length < validation.minLength\n ) {\n setValidationMessage(\n `This field should be at least ${validation.minLength.toString()} characters`,\n );\n return false;\n }\n }\n if (typeof validation.maxLength !== \"undefined\") {\n if (validation.maxLength && value.length > validation.maxLength) {\n setValidationMessage(\n `This field should be at most ${validation.maxLength.toString()} characters`,\n );\n return false;\n }\n }\n if (typeof validation.regex !== \"undefined\") {\n const regexObject: RegExpObject = validation.regex;\n if (!value.match(regexObject.pattern)) {\n setValidationMessage(regexObject.message);\n return false;\n }\n }\n setValidationMessage(\"\");\n return true;\n};\n\nexport const sanitiseWhiteSpace = (text: string) => {\n // u00a0 = no-break space\n const trimmedText = text?.replace(/\\u00a0/g, \" \").trim() || \"\";\n const textWithPredictableSpacing = trimmedText\n .replace(/(?:\\r\\n|\\r|\\n)/g, \"Ł\")\n .replace(/Ł/g, \"\\r\\n\");\n return textWithPredictableSpacing;\n};\n\n// we are keeping escape chars in square brackets because we want the same regex to be robust in all languages and different flavours need it.\n/* eslint-disable no-useless-escape */\n\nexport const sanitiseNames = (name: string) =>\n name\n .trim()\n .replace(/\\s+/g, \" \")\n .replace(/[^\\s\\-\\'.]+[\\s\\-\\'.]*/g, (word) => {\n const titleCaseWord =\n word[0].toUpperCase() + word.substr(1).toLowerCase();\n const macRegex = /^ma?c(.)/i;\n const matchMcOrMac = macRegex.exec(word);\n if (matchMcOrMac) {\n return (\n titleCaseWord.slice(0, matchMcOrMac[0].length - 1) +\n matchMcOrMac[1] +\n titleCaseWord.slice(matchMcOrMac[0].length)\n );\n }\n return titleCaseWord;\n });\n\nexport const sanitiseUkPostCode = (postCode: string) => {\n const noSpaceString = postCode.replace(/ /g, \"\").toLocaleUpperCase();\n const withSpaceString = `${noSpaceString.substring(\n 0,\n noSpaceString.length - 3,\n )} ${noSpaceString.substring(\n noSpaceString.length - 3,\n noSpaceString.length,\n )}`;\n\n return withSpaceString;\n};\n\nexport const sanitiseIfUkPostCode = (postCode: string) => {\n if (regexUkPostcode.pattern.exec(postCode)) {\n return sanitiseUkPostCode(postCode);\n }\n\n return postCode;\n};\nexport const calcLength = (val: string) => {\n if (!val) return 0;\n let value = val;\n if (value.endsWith(\"\\n\")) {\n value = value.slice(0, -1);\n }\n return value.replace(/(?:\\r\\n|\\r|\\n)/g, \"Ł\").replace(/Ł/g, \"\\r\\n\").length;\n};\n\nexport const regexFornameExclusions: RegExpObject = {\n message: \"Please only enter a formal forname.\",\n pattern:\n /^(?!.*((.)\\2{3,})|(^|\\s)([\\.\\-\\']+|and|aunt|auntie|aunty|best|big|brother|dad|daddie|daddio|daddy|dr|father|favourite|friend|gdad|gma|gramps|gran|grand|grand-dad|granda|grandad|granddad|grandma|grandpa|grandparents|grandson|granio|granny|grumpy|husband|mam|mama|mother|mum|mumma|mummy|nan|nanna|nannie|nanny|sex|sister|xx|xxx)(\\s|$))/i,\n};\n\nexport const regexSurnameExclusions: RegExpObject = {\n message: \"Please only enter a formal surname.\",\n pattern:\n /^(?!.*((.)\\2{3,})|(^|\\s)([\\.\\-\\']+|and|aunt|auntie|aunty|banana hammock|bananahammock|dad|daddy|god|grampy|grand-dad|granda|grandad|grandma|mum|mummy|nan|nana|nanny|of nazareth|xx|xxx)(\\s|$))/i,\n};\n\nexport const regexEmail: RegExpObject = {\n message: \"Please enter a valid email address.\",\n pattern:\n /^(?=([a-z0-9!#$%&'*+\\/=?^_`{|}~\\-]+)((\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~\\-]+)*)).{1,64}@([a-z0-9]([a-z0-9-]*[a-z0-9])?\\.)+[a-z][a-z]+$/i,\n};\n\nexport const regexTelephone: RegExpObject = {\n message: \"Phone number must contain only numbers, optionally starting with +\",\n pattern: /^\\+?[0-9]{10,16}$/,\n};\n\n// This isn't used downstream and it's possible to have a UK address but an international mobile\n// export const regexTelephoneUk: RegExpObject = {\n// message: \"Must begin with '07' or '01' or '02' and may only contain numbers.\",\n// pattern: /^(0[127][0-9]*){1}[0-9]{9,15}$/,\n// };\n\nexport const regexMobileTelephone: RegExpObject = {\n message: \"Please enter a valid mobile number\",\n pattern: /^(07|\\+447|00447)[0-9]*$/,\n};\n\n// regexes specified by Siebel\nexport const regexAlphaNumericPlus: RegExpObject = {\n message:\n \"may contain only letters, numbers, hyphens, spaces, full stops, slashes, apostrophes and ampersands.\",\n pattern: /^([a-zA-Z0-9&\\-\\/\\.'' ]|')*$/i,\n};\n\nexport const regexAlphaPlus: RegExpObject = {\n message: \"may contain only letters, hyphens, spaces, full stops and slashes\",\n pattern: /^[a-zA-Z\\-\\/.' ]+$/i,\n};\n\nexport const regexUkPostcode: RegExpObject = {\n message: \"Please enter a valid UK postcode.\",\n pattern:\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,\n};\n\nexport const regexInternationalPostcode: RegExpObject = {\n message: \"may contain only letters, numbers, hyphens and spaces.\",\n pattern: /^[a-zA-Z0-9 \\-]+$/,\n};\n\nexport const regexNameWithAnd: RegExpObject = {\n message: \"should only contain letters, hyphens, spaces and apostrophes.\",\n pattern:\n /^[a-zA-Z. '\\-ƼƽÁáÀàȦȧÂâÄäǍǎĂăĀāÃãÅåĄąȺǠǡǺǻǞǟȀȁȂȃɐɑɒÆæǼǽǢǣƀɃƁɓƂƃƄƅĆćĊċĈĉČčÇçȻȼƇƈƆɔɕĎďĐđƋƌƊɗÐðƍȸDZDzdzDŽDždžƉɖȡÉéÈèĖėÊêËëĚěĔĕĒēĘęȨȩɆɇȄȅȆȇƐɛƎǝƏəɚɘɜɝɞȜȝƑƒǴǵĠġĜĝǦǧĞğĢģǤǥƓƔĤĥȞȟĦħƕǶıÍíÌìİÎîÏïǏǐĬĭĪīĨĩĮįƗȈȉȊȋƖIJijȷĴĵǰɈɉɟĸǨǩĶķƘƙĹĺĿŀĽľĻļƚȽŁłƛLJLjljȴƜŃńǸǹŇňÑñŅņƝʼnƞȠNJNjnjȵŊŋÓóÒòȮȯÔôÖöǑǒŎŏŌōÕõǪǫŐőƟØøȰȱȪȫǾǿȬȭǬǭȌȍȎȏƠơƢƣŒœȢȣƤƥɊɋȹƦŔŕŘřŖŗɌɍȐȑȒȓŚśŜŝŠšŞşȘșȿƩƧƨƪßſŤťŢţƬƭƫƮȚțȾȶÞþŦŧÚúÙùÛûÜüǓǔŬŭŪūŨũŮůŲųŰűɄǗǘǛǜǙǚǕǖȔȕȖȗƯưƱƲɅŴŵƿǷÝýŶŷÿŸȲȳɎɏƳƴŹźŻżŽžƵƶȤȥɀƷǮǯƸƹƺƾɁɂ]+$/im,\n};\n\nexport const RegexMoney: RegExpObject = {\n message:\n \"Please enter a valid amount using numbers and a decimal point only. For example 100.00 or 2500.\",\n pattern: /^[0-9]*(\\.[0-9][0-9]?)*$/,\n};\n\nexport const RegexYouTubeUrl: RegExpObject = {\n message: \"Please enter a valid YouTube link.\",\n pattern: /^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtu\\.be)\\/.+/i,\n};\n\nexport const RegexNoOnlyEmoji: RegExpObject = {\n message: \"Name should not only contain emojis.\",\n pattern: /^(?!(?:\\p{Extended_Pictographic}|\\p{Emoji_Component}|\\s)+$).+/u,\n};\n\n/* eslint-enable no-useless-escape */\n","import * as z from \"zod\";\nimport { format, parseISO } from \"date-fns\";\n\nimport { RegexMoney, RegexYouTubeUrl } from \"@fwa/src/utils/formUtils\";\n\nimport {\n type FundraisingPageType,\n type FundraisingPageTypeType,\n type SuperTeamPageType,\n type TeamPageType,\n} from \"@fwa/src/types\";\n\nexport const DISPLAY_NAME_MAX_LENGTH = 200;\nexport const PAGE_TITLE_MAX_LENGTH = 100;\nexport const PAGE_SUBTITLE_MAX_LENGTH = 200;\nexport const PAGE_URL_MAX_LENGTH = 120;\nexport const ACTIVITY_IN_MEMORY_MAX_LENGTH = 100;\nexport const PAGE_STORY_MAX_LENGTH = 10_000;\nexport const PAGE_VIDEO_URL_MAX_LENGTH = 400;\nexport const PAGE_ACTIVITY_NAME_MAX_LENGTH = 35;\nexport const PAGE_THANK_YOU_MESSAGE_MAX_LENGTH = 250;\n\n// base page shape\nexport const fundraisingPageValidation = z.object({\n title: z\n .string({ required_error: \"Your page name is required.\" })\n .trim()\n .min(1, \"Your page name is required.\")\n .min(3, \"Your page name should be at least 3 characters.\")\n .max(\n PAGE_TITLE_MAX_LENGTH,\n `Your page name should be at most ${PAGE_TITLE_MAX_LENGTH} characters.`,\n )\n .regex(\n /^((?!\\s\\s)[\\s\\S])*$/,\n \"Your page name should not contain adjacent spaces.\",\n ),\n subtitle: z\n .string()\n .trim()\n .max(\n PAGE_SUBTITLE_MAX_LENGTH,\n `Your mission statement should be at most ${PAGE_SUBTITLE_MAX_LENGTH} characters.`,\n )\n .optional(),\n story: z\n .string()\n .trim()\n .max(\n PAGE_STORY_MAX_LENGTH,\n `Your story should be at most ${PAGE_STORY_MAX_LENGTH} characters.`,\n )\n .optional(),\n url: z\n .string({ required_error: \"Your page link is required.\" })\n .trim()\n .min(1, \"Your page link is required.\")\n .min(3, \"Your page link should be at least 3 characters.\")\n .max(\n PAGE_URL_MAX_LENGTH,\n `Your page link should be at most ${PAGE_URL_MAX_LENGTH} characters.`,\n )\n .regex(\n /^[a-z0-9]((?!--)[a-z0-9-])*[a-z0-9]$/,\n \"Your page link should only contain lowercase letters (a-z), numbers (0-9) and single hyphens (-), and must not start or end with a hyphen.\",\n ),\n displayName: z\n .string()\n .trim()\n .min(2, \"Your display name should be at least 2 characters long.\")\n .max(\n DISPLAY_NAME_MAX_LENGTH,\n `Display name should be at most ${DISPLAY_NAME_MAX_LENGTH} characters long.`,\n )\n .or(z.literal(\"\")),\n activityName: z\n .string()\n .trim()\n .max(\n PAGE_ACTIVITY_NAME_MAX_LENGTH,\n `Activity description should be at most ${PAGE_ACTIVITY_NAME_MAX_LENGTH} characters long.`,\n )\n .regex(\n /^('|[a-zA-Z0-9\\s,'&-]|&)*$/,\n \"Activity description should only contain letters, hyphens, spaces, apostrophes, commas and ampersands.\",\n )\n .optional(),\n activityDateTimePartial: z.string().trim().optional(),\n activityDateTimeEndPartial: z.string().trim().optional(),\n activityInMemoryMoreInfo: z.boolean().optional(),\n activityDateTime: z\n .date()\n .min(\n new Date(new Date().setFullYear(new Date().getFullYear() - 10)),\n \"Activity start date should be less than 10 years in the past.\",\n )\n .max(\n new Date(new Date().setFullYear(new Date().getFullYear() + 10)),\n \"Activity start date should be less than 10 years in the future.\",\n )\n .nullish(),\n activityDateTimeEnd: z\n .date()\n .min(\n new Date(new Date().setFullYear(new Date().getFullYear() - 10)),\n \"Activity end date should be less than 10 years in the past.\",\n )\n .max(\n new Date(new Date().setFullYear(new Date().getFullYear() + 10)),\n \"Activity end date should be less than 10 years in the future.\",\n )\n .nullish(),\n closeDate: z\n .date()\n .min(\n new Date(new Date().setHours(0, 0, 0, 0)),\n \"Please select a date in the future\",\n )\n .transform((val) => (val ? format(val, \"yyyy-MM-dd\") : null))\n .or(z.literal(\"\").transform(() => null))\n .nullish(),\n target: z\n .string()\n .trim()\n .regex(RegexMoney.pattern, RegexMoney.message)\n .refine((value) => (value ? Number(value) >= 0 : true), {\n message: \"Please enter an amount between 0 and 1000000 inclusive.\",\n })\n .refine((value) => (value ? Number(value) <= 1_000_000 : true), {\n message: \"Please enter an amount between 0 and 1000000 inclusive.\",\n })\n .optional(),\n activityInMemory: z\n .string()\n .trim()\n .max(100, \"In memory name should be at most 100 characters long.\")\n .optional(),\n dateOfBirthDeceasedPartial: z.string().trim().optional(),\n dateOfDeathDeceasedPartial: z.string().trim().optional(),\n dateOfBirthDeceased: z\n .date()\n .min(parseISO(\"1753-01-01\"), \"All dates must be after the year 1752.\")\n .max(new Date(), \"All dates must be in the past.\")\n .optional(),\n dateOfDeathDeceased: z\n .date()\n .min(parseISO(\"1753-01-01\"), \"All dates must be after the year 1752.\")\n .max(new Date(), \"All dates must be in the past.\")\n .optional(),\n videoUrl: z\n .string()\n .trim()\n .max(\n PAGE_VIDEO_URL_MAX_LENGTH,\n `video url should be at most ${PAGE_VIDEO_URL_MAX_LENGTH} characters.`,\n )\n .regex(RegexYouTubeUrl.pattern, RegexYouTubeUrl.message)\n .or(z.literal(\"\").transform(() => null))\n .nullish(),\n thankYouMessage: z\n .string()\n .trim()\n .max(\n PAGE_THANK_YOU_MESSAGE_MAX_LENGTH,\n `Thank you message should be at most ${PAGE_THANK_YOU_MESSAGE_MAX_LENGTH} characters long.`,\n )\n .min(2, `Thank you message should be at least 2 characters long.`)\n .or(z.literal(\"\"))\n .optional(),\n});\n// create page validations\n\nexport const createPageActivityValidation = fundraisingPageValidation\n .pick({\n activityName: true,\n activityDateTimePartial: true,\n activityDateTimeEndPartial: true,\n activityInMemoryMoreInfo: true,\n activityDateTime: true,\n activityDateTimeEnd: true,\n })\n .refine(\n (data) =>\n data.activityDateTimePartial?.length ? data.activityDateTime : true,\n {\n message: \"Please enter a valid date with DD MM YYYY.\",\n path: [\"activityDateTime\"],\n },\n )\n .refine(\n (data) =>\n data.activityDateTimeEndPartial?.length ? data.activityDateTimeEnd : true,\n {\n message: \"Please enter a valid date with DD MM YYYY.\",\n path: [\"activityDateTimeEnd\"],\n },\n )\n .refine((data) => (data.activityDateTimeEnd ? data.activityDateTime : true), {\n message: \"Activity start date is required if activity end date is set.\",\n path: [\"activityDateTime\"],\n })\n .refine(\n (data) =>\n data.activityDateTimeEnd && data.activityDateTime\n ? data.activityDateTimeEnd >= data.activityDateTime\n : true,\n {\n message: \"Activity end date must be after activity start date.\",\n path: [\"activityDateTimeEnd\"],\n },\n );\n\nexport const createPageMotivationValidation = fundraisingPageValidation\n .pick({\n target: true,\n activityInMemory: true,\n dateOfBirthDeceasedPartial: true,\n dateOfDeathDeceasedPartial: true,\n dateOfBirthDeceased: true,\n dateOfDeathDeceased: true,\n })\n .refine(\n (data) =>\n data.dateOfBirthDeceasedPartial?.length ? data.dateOfBirthDeceased : true,\n {\n message: \"Please enter a valid date with DD MM YYYY.\",\n path: [\"dateOfBirthDeceased\"],\n },\n )\n .refine(\n (data) =>\n data.dateOfDeathDeceasedPartial?.length ? data.dateOfDeathDeceased : true,\n {\n message: \"Please enter a valid date with DD MM YYYY.\",\n path: [\"dateOfDeathDeceased\"],\n },\n )\n .refine(\n (data) =>\n data.dateOfBirthDeceased && data.dateOfDeathDeceased\n ? data.dateOfBirthDeceased <= data.dateOfDeathDeceased\n : true,\n {\n message:\n \"The date of birth must be the same as or before the date of passing.\",\n path: [\"dateOfDeathDeceased\"],\n },\n );\n\nexport const createPagePageValidation = fundraisingPageValidation.pick({\n title: true,\n url: true,\n});\n\nexport type FormStateFromUrl = {\n currentPagesForEvent: FundraisingPageType[];\n fundraisingPageType?: FundraisingPageTypeType;\n team?: TeamPageType;\n teamTitle: string;\n superTeam?: SuperTeamPageType;\n eventCode: string;\n eventName?: string;\n activityType: string;\n activityMotivation: string;\n fundraisingPageTypeSearchData: FundraisingPageTypeType[];\n fundraisingPageTypeSearchString: string;\n activityResCode: string;\n};\n\n// lets infer as much as possible from the validation schema for the form types\nexport type CreatePageFormValues = z.infer &\n z.infer &\n z.infer &\n FormStateFromUrl;\n// edit in place validation\n\nexport const fundraisingPageDisplayNameFormValidation =\n fundraisingPageValidation.pick({ displayName: true });\n\nexport const validateDisplayName = (text: string): string | undefined => {\n const validationResult = fundraisingPageDisplayNameFormValidation.safeParse({\n displayName: text,\n });\n if (validationResult.success) return undefined;\n else {\n return validationResult.error.issues[0].message;\n }\n};\n\n// export const pageTitleValidation = fundraisingPageValidation.pick({\n// title: true,\n// });\n\n// export const validatePageTitle = (text: string): string | undefined => {\n// const validationResult = pageTitleValidation.safeParse({ title: text });\n// if (validationResult.success) return undefined;\n// else {\n// return validationResult.error.issues[0].message;\n// }\n// };\n\nexport const pageUrlValidation = fundraisingPageValidation.pick({\n url: true,\n});\n\nexport const validatePageUrl = (text: string): string | undefined => {\n const validationResult = pageUrlValidation.safeParse({ url: text });\n\n if (validationResult.success) return undefined;\n else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageTargetValidation = fundraisingPageValidation.pick({\n target: true,\n});\n\nexport const validatePageTarget = (text: string): string | undefined => {\n const validationResult = fundraisingPageTargetValidation.safeParse({\n target: text,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageTitleValidation = fundraisingPageValidation.pick({\n title: true,\n});\n\nexport const validatePageTitle = (text: string): string | undefined => {\n const validationResult = fundraisingPageTitleValidation.safeParse({\n title: text,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageSubtitleValidation = fundraisingPageValidation.pick(\n {\n subtitle: true,\n },\n);\n\nexport const validatePageSubtitle = (text: string): string | undefined => {\n const validationResult = fundraisingPageSubtitleValidation.safeParse({\n subtitle: text,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageStoryValidation = fundraisingPageValidation.pick({\n story: true,\n});\n\nexport const validatePageStory = (text: string): string | undefined => {\n const validationResult = fundraisingPageStoryValidation.safeParse({\n subtitle: text,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageVideoUrlValidation = fundraisingPageValidation.pick(\n {\n videoUrl: true,\n },\n);\n\nexport const validatePageVideoUrl = (\n text: string | null,\n): string | undefined => {\n const validationResult = fundraisingPageVideoUrlValidation.safeParse({\n videoUrl: text,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageActivityNameValidation =\n fundraisingPageValidation.pick({\n activityName: true,\n });\n\nexport const validatePageActivityName = (\n text: string | null,\n): string | undefined => {\n const validationResult = fundraisingPageActivityNameValidation.safeParse({\n activityName: text,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageActivityDatesValidation = fundraisingPageValidation\n .pick({\n activityDateTime: true,\n activityDateTimeEnd: true,\n })\n .refine((data) => (data.activityDateTimeEnd ? data.activityDateTime : true), {\n message: \"Activity start date is required if activity end date is set.\",\n path: [\"activityDateTime\"],\n });\n\nexport const validatePageActivityDates = (\n startDate: Date | null | undefined,\n endDate: Date | null | undefined,\n): string | undefined => {\n const validationResult = fundraisingPageActivityDatesValidation.safeParse({\n activityDateTime: startDate,\n activityDateTimeEnd: endDate,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPagCloseDateValidation = fundraisingPageValidation.pick(\n {\n closeDate: true,\n },\n);\n\nexport const fundraisingPageThankYouMessageValidation =\n fundraisingPageValidation.pick({\n thankYouMessage: true,\n });\n\nexport const validatePageThankYouMessage = (\n text: string | null,\n): string | undefined => {\n const validationResult = fundraisingPageThankYouMessageValidation.safeParse({\n thankYouMessage: text,\n });\n\n if (validationResult.success) {\n return undefined;\n } else {\n return validationResult.error.issues[0].message;\n }\n};\n\nexport const fundraisingPageCloseDateValidation =\n fundraisingPageValidation.pick({\n closeDate: true,\n });\n\nexport const fundraisingPageActivityInMemoryValidation =\n fundraisingPageValidation\n .pick({\n activityInMemory: true,\n dateOfBirthDeceased: true,\n dateOfDeathDeceased: true,\n dateOfBirthDeceasedPartial: true,\n dateOfDeathDeceasedPartial: true,\n })\n .refine(\n (data) =>\n data.dateOfBirthDeceasedPartial?.length\n ? data.dateOfBirthDeceased\n : true,\n {\n message: \"Please enter a valid date with DD MM YYYY.\",\n path: [\"dateOfBirthDeceased\"],\n },\n )\n .refine(\n (data) =>\n data.dateOfDeathDeceasedPartial?.length\n ? data.dateOfDeathDeceased\n : true,\n {\n message: \"Please enter a valid date with DD MM YYYY.\",\n path: [\"dateOfDeathDeceased\"],\n },\n )\n .refine(\n (data) =>\n data.dateOfBirthDeceased && data.dateOfDeathDeceased\n ? data.dateOfBirthDeceased <= data.dateOfDeathDeceased\n : true,\n {\n message:\n \"The date of birth must be the same as or before the date of passing.\",\n path: [\"dateOfDeathDeceased\"],\n },\n );\n\nexport type InMemoryFormValues = z.infer<\n typeof fundraisingPageActivityInMemoryValidation\n>;\n"],"names":["removeEmptyStringAttributes","obj","Object","entries","filter","v","reduce","acc","k","value","validation","setValidationMessage","required","length","type","Number","isNaN","RegexMoney","pattern","test","message","minValue","toString","maxValue","minLength","maxLength","regex","regexObject","match","name","trim","replace","titleCaseWord","word","toUpperCase","substr","toLowerCase","matchMcOrMac","exec","slice","noSpaceString","postCode","toLocaleUpperCase","withSpaceString","substring","sanitiseIfUkPostCode","regexUkPostcode","sanitiseUkPostCode","calcLength","val","endsWith","DISPLAY_NAME_MAX_LENGTH","PAGE_STORY_MAX_LENGTH","PAGE_VIDEO_URL_MAX_LENGTH","z","title","required_error","min","max","PAGE_TITLE_MAX_LENGTH","subtitle","PAGE_SUBTITLE_MAX_LENGTH","optional","story","url","PAGE_URL_MAX_LENGTH","displayName","or","activityName","PAGE_ACTIVITY_NAME_MAX_LENGTH","activityDateTimePartial","activityDateTimeEndPartial","activityInMemoryMoreInfo","activityDateTime","Date","setFullYear","getFullYear","nullish","activityDateTimeEnd","closeDate","setHours","transform","format","target","refine","activityInMemory","dateOfBirthDeceasedPartial","dateOfDeathDeceasedPartial","dateOfBirthDeceased","parseISO","dateOfDeathDeceased","videoUrl","RegexYouTubeUrl","thankYouMessage","PAGE_THANK_YOU_MESSAGE_MAX_LENGTH","fundraisingPageValidation","pick","data","path","createPageMotivationValidation","text","validationResult","fundraisingPageDisplayNameFormValidation","safeParse","success","undefined","error","issues","pageUrlValidation","fundraisingPageTargetValidation","fundraisingPageTitleValidation","fundraisingPageSubtitleValidation","fundraisingPageStoryValidation","fundraisingPageVideoUrlValidation","fundraisingPageActivityNameValidation","startDate","endDate","fundraisingPageActivityDatesValidation","fundraisingPageThankYouMessageValidation"],"sourceRoot":"","ignoreList":[]}