{"version":3,"file":"9194-bf4828883205cc427dcd.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Button/Button.tsx","webpack://nikon-client/./components/atoms/CloseButton/CloseButton.tsx","webpack://nikon-client/./components/atoms/FormCaptcha/FormCaptcha.tsx","webpack://nikon-client/./components/atoms/FormFieldInfoTooltip/FormFieldInfoTooltip.tsx","webpack://nikon-client/./components/atoms/FormInput/FormInput.tsx","webpack://nikon-client/./components/atoms/FormSelect/FormSelect.tsx","webpack://nikon-client/./components/atoms/LoadingSpinner/LoadingSpinner.tsx","webpack://nikon-client/./components/atoms/Tooltip/Tooltip.tsx","webpack://nikon-client/./models/ISignupFormStatus.ts","webpack://nikon-client/./services/signupFormSubmit.ts","webpack://nikon-client/./services/signupFormVerify.ts","webpack://nikon-client/./components/organisms/SignupForm/SignupForm.tsx","webpack://nikon-client/./models/enums/IconSizeEnum.ts","webpack://nikon-client/./models/enums/TooltipPositionEnum.ts","webpack://nikon-client/./services/accountMarketingPreferencesSubmit.ts","webpack://nikon-client/./utility/constants/fieldsValidationsPatterns.ts"],"sourcesContent":["import { ILink } from '@models/ILink';\nimport classNames from 'classnames';\nimport {\n ButtonHTMLAttributes,\n DetailedHTMLProps,\n PropsWithChildren,\n} from 'react';\n\ninterface Props {\n readonly className?: string;\n readonly dataTestId?: string;\n readonly disabled?: boolean;\n readonly editHint?: string;\n readonly link?: ILink;\n readonly linkCallback?: () => void;\n readonly secondary?: boolean;\n readonly secondaryBackgroundClassName?: string;\n readonly isLightMode?: boolean;\n readonly inverted?: boolean;\n}\n\ntype ButtonProps = Props &\n DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;\n\nconst Button = ({\n children,\n className,\n dataTestId,\n disabled = false,\n editHint,\n link,\n linkCallback,\n secondary = false,\n secondaryBackgroundClassName = 'bg-transparent',\n isLightMode,\n inverted = false,\n ...buttonProps\n}: PropsWithChildren<ButtonProps>) => {\n const buttonClasses = classNames(\n {\n 'bg-yellow py-1 px-4 text-black-100 hover:bg-yellow-100 focus:bg-yellow-500 active:bg-yellow-500':\n !disabled && !secondary && !inverted,\n //\n [`${secondaryBackgroundClassName} border border-yellow py-[3px] px-[15px] text-black-100 hover:border-yellow-100 hover:bg-yellow-100 hover:text-black-100 focus:border-yellow-500 focus:bg-yellow-500 active:border-yellow-500 active:bg-yellow-500 ${\n isLightMode\n ? ''\n : 'dark:text-white dark:hover:text-black-100 dark:focus:text-black-100 dark:active:text-black-100'\n }`]: !disabled && secondary && !inverted,\n //\n 'bg-grey text-grey-500 py-1 px-4': disabled,\n //\n 'bg-black text-white py-1 px-4 active:bg-grey-600 hover:bg-grey-600 focus:bg-grey-600':\n !disabled && !secondary && inverted,\n },\n 'cta rounded-full inline-block min-h-min select-none',\n className\n );\n\n return link?.url && (link?.name || children) && !disabled ? (\n <a\n className={buttonClasses}\n href={link.url}\n target={link.target}\n data-epi-property-name={editHint}\n onClick={linkCallback}\n data-testid={dataTestId}\n >\n {children || link.name}\n </a>\n ) : (\n <button\n {...buttonProps}\n className={buttonClasses}\n disabled={disabled}\n data-epi-property-name={editHint}\n data-testid={dataTestId}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import IconSizeEnum from '@models/enums/IconSizeEnum';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport classNames from 'classnames';\nimport { MouseEventHandler } from 'react';\n\ninterface Props {\n readonly ariaLabel?: string;\n readonly className?: string;\n readonly color?: 'black' | 'white' | 'red';\n readonly onClick: MouseEventHandler;\n readonly size?: IconSizeEnum | string;\n readonly dataTestId?: string;\n}\n\nconst CloseButton = ({\n ariaLabel,\n className,\n color = 'black',\n onClick,\n size = IconSizeEnum.lg,\n dataTestId,\n}: Props) => {\n const { closeModalAriaLabel } = useAriaLabels();\n\n const closeColours = {\n black: 'before:bg-black-100 after:bg-black-100',\n white: 'before:bg-white after:bg-white',\n red: 'before:bg-red-100 after:bg-red-100',\n };\n\n return (\n <button\n type=\"button\"\n className={classNames('close-button', closeColours[color], className)}\n aria-label={ariaLabel ?? closeModalAriaLabel}\n style={{ width: size, height: size }}\n onClick={onClick}\n data-testid={dataTestId}\n />\n );\n};\n\nexport default CloseButton;\n","import classNames from 'classnames';\nimport { ErrorMessage, useField } from 'formik';\nimport { forwardRef } from 'react';\nimport ReCAPTCHA from 'react-google-recaptcha';\n\ninterface Props {\n readonly name?: string;\n readonly siteKey: string;\n readonly dataTestId?: string;\n}\n\nconst FormCaptcha = forwardRef<ReCAPTCHA, Props>(\n ({ name = 'captcha', siteKey, dataTestId = 'form-captcha' }, ref) => {\n const [, meta, { setValue, setTouched }] = useField(name);\n const hasError = meta.error && meta.touched;\n\n return (\n <div className=\"flex flex-col space-y-1\" data-testid={dataTestId}>\n <ReCAPTCHA\n ref={ref}\n className={classNames({\n '[&_iframe]:rounded-md [&_iframe]:border [&_iframe]:border-red':\n hasError,\n })}\n sitekey={siteKey}\n onChange={(e: string | null) => {\n setTouched(true);\n setValue(e ?? '');\n }}\n size=\"normal\"\n badge=\"inline\"\n />\n\n {hasError && (\n <ErrorMessage name={name}>\n {(msg: string) => (\n <span\n className=\"body-four text-red\"\n data-testid=\"form-captcha-error-message\"\n >\n {msg}\n </span>\n )}\n </ErrorMessage>\n )}\n </div>\n );\n }\n);\n\nexport default FormCaptcha;\n","import Icon from '@atoms/Icon/Icon';\nimport Tooltip from '@atoms/Tooltip/Tooltip';\nimport TooltipPositionEnum from '@models/enums/TooltipPositionEnum';\n\ninterface Props {\n readonly infoTooltip: string;\n}\n\nconst FormFieldInfoTooltip = ({ infoTooltip }: Props) => (\n <div className=\"flex items-center\">\n <div className=\"tooltip-parent relative flex\">\n <Icon name=\"info\" size=\"0.875rem\" />\n <Tooltip\n label={infoTooltip}\n position={TooltipPositionEnum.Custom}\n customWrapperClassName=\"top-0\"\n customContentClassName=\"-translate-y-2 bottom-0 right-0 lg:left-0 lg:right-auto\"\n backgroundColor=\"bg-grey-100\"\n />\n </div>\n </div>\n);\n\nexport default FormFieldInfoTooltip;\n","import FormFieldInfoTooltip from '@atoms/FormFieldInfoTooltip/FormFieldInfoTooltip';\nimport classNames from 'classnames';\nimport { ErrorMessage, Field, FieldProps, useField } from 'formik';\nimport {\n DetailedHTMLProps,\n ForwardedRef,\n InputHTMLAttributes,\n forwardRef,\n} from 'react';\n\ninterface Props\n extends DetailedHTMLProps<\n InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n > {\n readonly name: string;\n readonly label?: string;\n readonly optionalFieldLabel?: string;\n readonly maxCharsLabel?: string;\n readonly infoTooltip?: string;\n readonly component?: string | React.ComponentType<FieldProps>;\n readonly inputWrapperClass?: string;\n readonly inputClass?: string;\n readonly inputFieldPrefix?: JSX.Element;\n readonly inputFieldSuffix?: JSX.Element;\n readonly dataTestId?: string;\n}\n\nconst FormInput = forwardRef(\n (\n {\n name,\n label,\n required,\n optionalFieldLabel,\n maxCharsLabel,\n infoTooltip,\n inputWrapperClass,\n inputClass,\n inputFieldPrefix,\n inputFieldSuffix,\n dataTestId,\n ...rest\n }: Props,\n ref: ForwardedRef<HTMLInputElement>\n ) => {\n const [, meta] = useField(name);\n\n const { maxLength } = rest;\n\n return (\n <div className=\"flex flex-col space-y-1\" data-testid={dataTestId}>\n {(label || infoTooltip) && (\n <div className=\"flex justify-between\">\n {label && (\n <label\n data-testid=\"form-input-label\"\n htmlFor={name}\n className={classNames('body-four', {\n 'text-red': meta.error && meta.touched,\n })}\n >\n {`${label}${required ? ' *' : ''}`}\n {optionalFieldLabel && !required ? (\n <>\n {' '}\n <span className=\"text-grey-600\">{optionalFieldLabel}</span>\n </>\n ) : (\n ''\n )}\n {maxCharsLabel && !!maxLength ? (\n <>\n {' '}\n <span className=\"text-grey-600\">{maxCharsLabel}</span>\n </>\n ) : (\n ''\n )}\n </label>\n )}\n\n {infoTooltip && <FormFieldInfoTooltip infoTooltip={infoTooltip} />}\n </div>\n )}\n\n <div className={inputWrapperClass}>\n {inputFieldPrefix}\n\n <Field\n {...rest}\n name={name}\n id={name}\n className={classNames(\n 'body-three w-full appearance-none rounded-md bg-grey-100 px-5 py-4 text-black-100',\n {\n 'ring-1 ring-inset ring-red': meta.error && meta.touched,\n },\n inputClass\n )}\n innerRef={ref}\n />\n\n {inputFieldSuffix}\n </div>\n\n {meta.error && meta.touched && (\n <ErrorMessage name={name}>\n {(msg: string) => (\n <span\n data-testid=\"form-input-error-message\"\n className=\"body-four text-red\"\n >\n {msg}\n </span>\n )}\n </ErrorMessage>\n )}\n </div>\n );\n }\n);\n\nexport default FormInput;\n","import FormFieldInfoTooltip from '@atoms/FormFieldInfoTooltip/FormFieldInfoTooltip';\nimport Icon from '@atoms/Icon/Icon';\nimport { ILabelValue } from '@models/ILabelValue';\nimport classNames from 'classnames';\nimport { ErrorMessage, Field, useField } from 'formik';\nimport { DetailedHTMLProps, SelectHTMLAttributes } from 'react';\n\ninterface Props\n extends DetailedHTMLProps<\n SelectHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n > {\n readonly name: string;\n readonly options: ILabelValue[];\n readonly label?: string;\n readonly infoTooltip?: string;\n readonly optionalFieldLabel?: string;\n readonly placeholder?: string;\n readonly hideErrorMessage?: boolean;\n readonly disableErrorStyling?: boolean;\n readonly dataTestId?: string;\n}\n\nconst FormSelect = ({\n label,\n infoTooltip,\n name,\n options,\n placeholder,\n required,\n disabled,\n optionalFieldLabel,\n hideErrorMessage = false,\n disableErrorStyling = false,\n dataTestId,\n}: Props) => {\n const [, meta] = useField(name);\n\n return (\n <div className=\"flex flex-col space-y-1\" data-testid={dataTestId}>\n {!!label && (\n <div className=\"flex justify-between\">\n <label\n htmlFor={name}\n data-testid=\"form-select-label\"\n className={classNames('body-four', {\n 'text-red': meta.error && meta.touched && !disableErrorStyling,\n })}\n >\n {`${label}${required && !disabled ? ' *' : ''}`}\n {optionalFieldLabel && !required && !disabled ? (\n <>\n {' '}\n <span className=\"text-grey-600\">{optionalFieldLabel}</span>\n </>\n ) : (\n ''\n )}\n </label>\n\n {infoTooltip && <FormFieldInfoTooltip infoTooltip={infoTooltip} />}\n </div>\n )}\n\n <div className=\"relative\">\n <Field\n disabled={disabled}\n as=\"select\"\n className={classNames(\n 'body-three relative w-full appearance-none rounded-md bg-grey-100 px-5 py-4 opacity-100',\n {\n 'ring-1 ring-inset ring-red':\n meta.error && meta.touched && !disableErrorStyling,\n 'text-grey-600': disabled,\n },\n meta.value ? 'text-black-100' : 'text-grey-600'\n )}\n name={name}\n id={name}\n aria-label={name}\n >\n <>\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n\n {options.map(({ label: optionsLabel, value }) => (\n <option key={value} value={value}>\n {optionsLabel}\n </option>\n ))}\n </>\n </Field>\n\n {!disabled && (\n <div className=\"pointer-events-none absolute right-3 top-0 z-[1] flex h-full items-center\">\n <Icon name=\"caret_down\" />\n </div>\n )}\n </div>\n\n {meta.error && meta.touched && !hideErrorMessage && (\n <ErrorMessage name={name}>\n {(msg: string) => (\n <span\n data-testid=\"form-select-label\"\n className=\"body-four text-red\"\n >\n {msg}\n </span>\n )}\n </ErrorMessage>\n )}\n </div>\n );\n};\n\nexport default FormSelect;\n","import classNames from 'classnames';\n\ninterface Props {\n readonly extraClasses?: string;\n readonly svgClasses?: string;\n readonly trackColor?: string;\n readonly animationStyle?: 'pulse' | 'spin';\n readonly pulseContainerClasses?: string;\n readonly pulseItemClasses?: string;\n}\n\nconst LoadingSpinner = ({\n extraClasses,\n svgClasses = 'text-yellow h-9 w-9',\n pulseContainerClasses,\n pulseItemClasses = 'bg-yellow h-7.5 w-7.5',\n trackColor = '#E5E7EB',\n animationStyle = 'pulse',\n}: Props) => (\n <div className={classNames('flex items-center justify-center', extraClasses)}>\n {animationStyle === 'pulse' && (\n <div className={classNames('flex gap-[15px]', pulseContainerClasses)}>\n <div\n className={classNames(\n 'animate-[pulse_2s_ease-in-out_infinite]',\n pulseItemClasses\n )}\n />\n <div\n className={classNames(\n `animate-[pulse_2s_0.25s_ease-in-out_infinite] delay-75 `,\n pulseItemClasses\n )}\n />\n <div\n className={classNames(\n 'delay-250 animate-[pulse_2s_0.5s_ease-in-out_infinite]',\n pulseItemClasses\n )}\n />\n </div>\n )}\n {animationStyle === 'spin' && (\n <svg\n role=\"status\"\n className={classNames('inline animate-spin', svgClasses)}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill={trackColor}\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </div>\n);\n\nexport default LoadingSpinner;\n","import TooltipPositionEnum from '@models/enums/TooltipPositionEnum';\nimport classNames from 'classnames';\nimport { PropsWithChildren } from 'react';\n\ninterface Props {\n readonly arrowRadiusClassName?: string;\n readonly backgroundColor?: string;\n readonly customArrowClassName?: string;\n readonly customContentClassName?: string;\n readonly customWrapperClassName?: string;\n readonly dataTestId?: string;\n readonly hasArrow?: boolean;\n readonly hasTooltipClass?: boolean;\n readonly label?: string;\n readonly position: TooltipPositionEnum;\n}\n\nconst Tooltip = ({\n arrowRadiusClassName = 'rounded-sm',\n backgroundColor = 'bg-white',\n customArrowClassName,\n customContentClassName,\n customWrapperClassName,\n dataTestId = 'Tooltip',\n hasArrow,\n hasTooltipClass = true,\n label,\n position,\n children,\n}: PropsWithChildren<Props>) => {\n const positionClasses = {\n [TooltipPositionEnum.Top]: 'bottom-3 left-1/2 -translate-x-1/2',\n [TooltipPositionEnum.Bottom]: 'left-1/2 -translate-x-1/2 top-3',\n [TooltipPositionEnum.BottomLeft]:\n 'left-1/2 translate-x-[calc(-100%+20px)] top-3',\n [TooltipPositionEnum.Custom]: customContentClassName,\n };\n\n const isBottomVariant =\n position === TooltipPositionEnum.Bottom ||\n position === TooltipPositionEnum.BottomLeft;\n const isTopVariant = position === TooltipPositionEnum.Top;\n\n return (\n <div\n className={classNames('absolute z-100 w-full', customWrapperClassName, {\n tooltip: hasTooltipClass,\n 'top-0': isTopVariant,\n 'bottom-0': isBottomVariant,\n })}\n >\n {hasArrow && (\n <span\n className={classNames(\n 'absolute left-1/2 h-[17px] w-[17px] -translate-x-1/2 rotate-45',\n backgroundColor,\n arrowRadiusClassName,\n customArrowClassName,\n {\n 'top-2.5': isBottomVariant,\n 'bottom-2.5': isTopVariant,\n }\n )}\n data-testid={`${dataTestId}-Arrow`}\n />\n )}\n\n {children ? (\n <div className={classNames('absolute', positionClasses[position])}>\n {children}\n </div>\n ) : (\n <p\n className={classNames(\n 'small-text absolute whitespace-nowrap rounded-full p-1 px-3 text-center text-black-100',\n backgroundColor,\n positionClasses[position]\n )}\n data-testid={dataTestId}\n >\n {label}\n </p>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n","const enum ISignupFormStatus {\n Default = 'DEFAULT',\n Loading = 'LOADING',\n Verified = 'VERIFIED',\n Submitted = 'SUBMITTED',\n Errored = 'ERRORED',\n}\n\nexport default ISignupFormStatus;\n","import { ISignupFormValues } from '@models/ISignupFormValues';\nimport axios from 'axios';\n\nconst signupFormSubmit = async (\n { firstName, lastName, email, country, language, captcha }: ISignupFormValues,\n page: string,\n apiUrl: string,\n productCode?: string\n) => {\n const newsletterBody = {\n locale: language,\n contactAddresses: [\n {\n nameFirst: firstName,\n nameLast: lastName,\n country: {\n iso2: country,\n },\n },\n ],\n contactEmails: [\n {\n email,\n },\n ],\n optinSubscriptions: [\n {\n subscribed: true,\n },\n ],\n };\n\n const productBody = {\n firstName,\n lastName,\n email,\n languageCode: language,\n productCode,\n reCaptchaCode: captcha,\n };\n\n const headers = {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n 'Accept-Encoding': 'gzip, deflate, br',\n Connection: 'keep-alive',\n 'g-recaptcha-response': captcha,\n 'X-Referer': page,\n };\n\n await axios.post(apiUrl, productCode ? productBody : newsletterBody, {\n headers,\n });\n};\n\nexport default signupFormSubmit;\n","import axios from 'axios';\n\nconst signupFormVerify = async (token: string, verifyEndpoint: string) => {\n const apiUrl = `${verifyEndpoint}${'?X-ECID-Token='}${token}`;\n const { status } = await axios.get(apiUrl);\n\n return status;\n};\n\nexport default signupFormVerify;\n","import Button from '@atoms/Button/Button';\nimport CloseButton from '@atoms/CloseButton/CloseButton';\nimport FormCaptcha from '@atoms/FormCaptcha/FormCaptcha';\nimport FormInput from '@atoms/FormInput/FormInput';\nimport FormSelect from '@atoms/FormSelect/FormSelect';\nimport Icon from '@atoms/Icon/Icon';\nimport LoadingSpinner from '@atoms/LoadingSpinner/LoadingSpinner';\nimport { ILabelValue } from '@models/ILabelValue';\nimport { ISignupForm } from '@models/ISignupForm';\nimport ISignupFormStatus from '@models/ISignupFormStatus';\nimport { ISignupFormValues } from '@models/ISignupFormValues';\nimport accountMarketingPreferencesSubmit from '@services/accountMarketingPreferencesSubmit';\nimport signupFormSubmit from '@services/signupFormSubmit';\nimport signupFormVerify from '@services/signupFormVerify';\nimport {\n EMAIL_REGEX,\n TEXT_INPUT_REGEX,\n} from '@utils/constants/fieldsValidationsPatterns';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport classNames from 'classnames';\nimport { Form, Formik } from 'formik';\nimport qs from 'qs';\nimport { useEffect, useState } from 'react';\nimport * as yup from 'yup';\n\nconst SignupForm = ({\n authenticatedUser,\n closeCallback,\n countries,\n countryInitial,\n countryLabel,\n countryPlaceholder,\n emailErrorMessage,\n emailLabel,\n emailPlaceholder,\n firstNameErrorMessage,\n firstNameLabel,\n firstNamePlaceholder,\n formSuccessSubtitle,\n formSuccessTitle,\n formVerifiedSubtitle,\n formVerifiedTitle,\n formErrorSubtitle,\n formErrorTitle,\n languageInitial,\n languageLabel,\n languagePlaceholder,\n languages,\n lastNameErrorMessage,\n lastNameLabel,\n lastNamePlaceholder,\n legalText,\n requiredErrorMessage,\n siteKey,\n signupLabel,\n submitEndpoint,\n text,\n title,\n verifyEndpoint,\n fullPage = false,\n productCode = '',\n updateMarketingPreferencesEndpoint,\n userId = '',\n userEmail = '',\n}: ISignupForm) => {\n const [status, setStatus] = useState(ISignupFormStatus.Loading);\n const [page, setPage] = useState('');\n const { closeSignUpFormAriaLabel } = useAriaLabels();\n\n const submitHandler = async (values: ISignupFormValues) => {\n try {\n setStatus(ISignupFormStatus.Loading);\n\n await signupFormSubmit(values, page, submitEndpoint, productCode);\n\n setStatus(ISignupFormStatus.Submitted);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log({ error });\n\n setStatus(ISignupFormStatus.Errored);\n }\n };\n\n useEffect(() => {\n // Sets the X-Referer to domain/locale on the newsletter signup\n const locale = window.location.pathname.split('/');\n const referer = `${window.location.origin}/${locale[1]}`;\n setPage(referer);\n\n if (status === ISignupFormStatus.Default && !productCode) {\n updateDataLayer({\n event: 'newsletterSubscribe',\n content_type: 'start',\n email: userEmail,\n userId,\n });\n }\n\n if (status === ISignupFormStatus.Verified && !productCode) {\n updateDataLayer({\n event: 'newsletterSubscribe',\n content_type: 'subscribed',\n email: userEmail,\n userId,\n });\n }\n\n if (status === ISignupFormStatus.Submitted && productCode) {\n updateDataLayer({\n event: 'formSubmit',\n content_type: 'notify_when_available',\n email: userEmail,\n userId,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [status, productCode]);\n\n useEffect(() => {\n const query = window.location.search;\n\n const verificationToken = qs.parse(query, {\n ignoreQueryPrefix: true,\n decoder: (s) => s,\n });\n\n const verifySignup = async () => {\n try {\n const verifyResponseStatus = await signupFormVerify(\n `${verificationToken.token}`,\n verifyEndpoint\n );\n const isVerificationSuccessful = verifyResponseStatus === 200;\n\n setStatus(\n isVerificationSuccessful\n ? ISignupFormStatus.Verified\n : ISignupFormStatus.Default\n );\n\n if (\n isVerificationSuccessful &&\n authenticatedUser &&\n updateMarketingPreferencesEndpoint\n )\n await accountMarketingPreferencesSubmit(\n updateMarketingPreferencesEndpoint,\n { allowGDPRContact: true }\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log({ error });\n\n setStatus(ISignupFormStatus.Default);\n }\n };\n\n if (verificationToken.token && verifyEndpoint) {\n verifySignup();\n } else {\n setStatus(ISignupFormStatus.Default);\n }\n }, [authenticatedUser, updateMarketingPreferencesEndpoint, verifyEndpoint]);\n\n useEffect(() => {\n const updateReCaptchaChallengeElementPosition = (\n reCaptchaChallengeElement: HTMLDivElement\n ) => {\n const iframeElement =\n reCaptchaChallengeElement?.getElementsByTagName?.('iframe')?.[0];\n const challengeElement =\n iframeElement?.parentElement?.style.position === 'absolute'\n ? iframeElement.parentElement\n : iframeElement?.parentElement?.parentElement;\n challengeElement?.style.setProperty('position', 'fixed');\n\n if (!challengeElement?.style.zIndex)\n challengeElement?.style.setProperty('z-index', '999');\n };\n\n const updateReCaptchaArrowsDisplay = (\n reCaptchaChallengeElement: HTMLDivElement\n ) => {\n const arrows = Array.from(\n reCaptchaChallengeElement?.getElementsByClassName?.(\n 'g-recaptcha-bubble-arrow'\n ) ?? []\n ) as HTMLElement[];\n\n arrows.forEach((arrow) => {\n arrow.style.setProperty('display', 'none');\n });\n };\n\n const observer = new MutationObserver((mutationsList) => {\n const recaptchaChallengeNode = mutationsList[0]?.addedNodes[0];\n if (recaptchaChallengeNode?.nodeName === 'DIV') {\n const reCaptchaChallengeElement =\n recaptchaChallengeNode as HTMLDivElement;\n updateReCaptchaChallengeElementPosition(reCaptchaChallengeElement);\n updateReCaptchaArrowsDisplay(reCaptchaChallengeElement);\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n subtree: false,\n childList: true,\n });\n }, []);\n\n const findInitial = (initialValue: string, valueLabelArray: ILabelValue[]) =>\n valueLabelArray?.find((country) => country.value === initialValue)?.value ||\n '';\n\n return (\n <section\n className={classNames({ 'bg-white': fullPage })}\n data-testid=\"CT-05-B-Signup-Form\"\n >\n <div\n className={classNames(\n fullPage\n ? 'container py-20 xl:py-40'\n : 'flex w-full justify-center py-16 xl:h-full xl:items-center',\n 'signup-form text-black-100'\n )}\n >\n <div\n className={classNames(\n {\n 'relative flex h-full w-full max-w-[675px] flex-col rounded-[10px] px-5 py-10 lg:px-13 lg:py-15 xl:min-w-[675px]':\n !fullPage,\n },\n 'h-full bg-white'\n )}\n >\n {status === ISignupFormStatus.Loading && (\n <LoadingSpinner extraClasses=\"min-h-[400px]\" />\n )}\n {(status === ISignupFormStatus.Verified ||\n status === ISignupFormStatus.Submitted ||\n status === ISignupFormStatus.Errored) && (\n <div className=\"flex h-full flex-col items-center justify-center space-y-2.5 py-40 text-center\">\n <Icon\n name={`${\n status === ISignupFormStatus.Errored ? 'close' : 'check'\n }`}\n size=\"3.125rem\"\n colorClassName={\n status === ISignupFormStatus.Errored\n ? 'text-red'\n : 'text-yellow'\n }\n className=\"mb-4\"\n data-testid=\"CT-05-B-Signup-Form-Form-Icon\"\n />\n\n {formSuccessTitle && status === ISignupFormStatus.Submitted && (\n <p\n className=\"h4\"\n role=\"status\"\n aria-live=\"polite\"\n data-testid=\"CT-05-B-Signup-Form-Form-Success-Title\"\n >\n {formSuccessTitle}\n </p>\n )}\n\n {formSuccessSubtitle &&\n status === ISignupFormStatus.Submitted && (\n <div\n className=\"body-one\"\n data-testid=\"CT-05-B-Signup-Form-Form-Success-Subtitle\"\n >\n {formSuccessSubtitle}\n </div>\n )}\n\n {formVerifiedTitle && status === ISignupFormStatus.Verified && (\n <p\n className=\"h4\"\n role=\"status\"\n aria-live=\"polite\"\n data-testid=\"CT-05-B-Signup-Form-Form-Verified-Title\"\n >\n {formVerifiedTitle}\n </p>\n )}\n\n {formVerifiedSubtitle &&\n status === ISignupFormStatus.Verified && (\n <p\n className=\"body-one\"\n data-testid=\"CT-05-B-Signup-Form-Form-Verified-Subtitle\"\n >\n {formVerifiedSubtitle}\n </p>\n )}\n\n {formErrorTitle && status === ISignupFormStatus.Errored && (\n <p\n className=\"h4\"\n aria-live=\"polite\"\n data-testid=\"CT-05-B-Signup-Form-Form-Error-Title\"\n >\n {formErrorTitle}\n </p>\n )}\n\n {formErrorSubtitle && status === ISignupFormStatus.Errored && (\n <p\n className=\"body-one\"\n data-testid=\"CT-05-B-Signup-Form-Form-Error-Subtitle\"\n >\n {formErrorSubtitle}\n </p>\n )}\n </div>\n )}\n\n <div\n className={classNames(\n {\n ' xl:grid-cols-12': fullPage,\n hidden: status !== ISignupFormStatus.Default,\n },\n status === ISignupFormStatus.Default && fullPage\n ? 'xl:grid'\n : 'block'\n )}\n >\n <div className={classNames({ 'col-span-5': fullPage })}>\n {title && (\n <h2\n className={classNames('mb-2.5 px-1 lg:mb-5', {\n h4: !fullPage,\n })}\n data-testid=\"CT-05-B-Signup-Form-Title\"\n >\n {title}\n </h2>\n )}\n\n {text && (\n <div\n className={classNames(\n { 'xl:text-grey-450': fullPage },\n 'body-one mb-7.5 px-1 lg:mb-5'\n )}\n data-testid=\"CT-05-B-Signup-Form-Text\"\n >\n {text}\n </div>\n )}\n </div>\n <Formik\n initialValues={{\n firstName: '',\n lastName: '',\n email: '',\n country: findInitial(countryInitial, countries),\n language: findInitial(languageInitial, languages),\n captcha: '',\n }}\n onSubmit={(values) => submitHandler(values)}\n validationSchema={yup.object({\n firstName: yup\n .string()\n .required(requiredErrorMessage)\n .matches(TEXT_INPUT_REGEX, firstNameErrorMessage),\n lastName: yup\n .string()\n .required(requiredErrorMessage)\n .matches(TEXT_INPUT_REGEX, lastNameErrorMessage),\n email: yup\n .string()\n .required(requiredErrorMessage)\n .matches(EMAIL_REGEX, emailErrorMessage),\n country: yup.string().required(requiredErrorMessage),\n language: yup.string().required(requiredErrorMessage),\n captcha: yup.string().required(requiredErrorMessage),\n })}\n >\n {({ isValid, dirty }) => (\n <Form\n className={classNames({\n 'col-span-6 col-start-7': fullPage,\n })}\n >\n <div\n className={classNames(\n { 'xl:grid-cols-2': fullPage },\n 'grid w-full gap-x-4 gap-y-5 px-1'\n )}\n >\n <FormInput\n name=\"firstName\"\n label={firstNameLabel}\n placeholder={firstNamePlaceholder}\n required\n type=\"text\"\n data-testid=\"CT-05-B-Signup-Form-First-Name\"\n />\n\n <FormInput\n name=\"lastName\"\n label={lastNameLabel}\n placeholder={lastNamePlaceholder}\n required\n type=\"text\"\n data-testid=\"CT-05-B-Signup-Form-Last-Name\"\n />\n\n <FormInput\n name=\"email\"\n label={emailLabel}\n placeholder={emailPlaceholder}\n required\n type=\"email\"\n data-testid=\"CT-05-B-Signup-Form-Email\"\n />\n\n <FormSelect\n name=\"country\"\n label={countryLabel}\n options={countries}\n placeholder={countryPlaceholder}\n required\n dataTestId=\"CT-05-B-Signup-Form-Country\"\n />\n\n <FormSelect\n name=\"language\"\n label={languageLabel}\n options={languages}\n placeholder={languagePlaceholder}\n required\n dataTestId=\"CT-05-B-Signup-Form-Language\"\n />\n </div>\n\n <div className=\"mt-7.5\">\n {siteKey && (\n <FormCaptcha\n siteKey={siteKey}\n dataTestId=\"CT-05-B-Signup-Form-ReCaptcha\"\n />\n )}\n </div>\n\n {signupLabel && (\n <Button\n disabled={!isValid || !dirty}\n className=\"mt-7.5\"\n type=\"submit\"\n dataTestId=\"CT-05-B-Signup-Form-Signup-Button\"\n >\n {signupLabel}\n </Button>\n )}\n\n {legalText && (\n <div\n dangerouslySetInnerHTML={{ __html: legalText }}\n className=\"content-area body-four mt-7.5 w-full\"\n data-testid=\"CT-05-B-Signup-Form-Legal-Text\"\n />\n )}\n </Form>\n )}\n </Formik>\n </div>\n\n {closeCallback && (\n <CloseButton\n onClick={closeCallback}\n className=\"absolute right-4 top-4\"\n ariaLabel={closeSignUpFormAriaLabel}\n />\n )}\n </div>\n </div>\n </section>\n );\n};\n\nexport default SignupForm;\n","const enum IconSizeEnum {\n xs = '.5rem',\n sm = '.75rem',\n md = '1rem',\n lg = '1.5rem',\n xl = '1.75rem',\n}\n\nexport default IconSizeEnum;\n","enum TooltipPositionEnum {\n Top = 'Top',\n Bottom = 'Bottom',\n BottomLeft = 'BottomLeft',\n Custom = 'Custom',\n}\nexport default TooltipPositionEnum;\n","import { IAccountMarketingPreferencesFormValues } from '@models/IAccountMarketingPreferences';\nimport axios from 'axios';\n\nconst accountMarketingPreferencesSubmit = async (\n apiUrl: string,\n formValues: IAccountMarketingPreferencesFormValues\n) => {\n await axios.post(apiUrl, {\n ...formValues,\n });\n};\n\nexport default accountMarketingPreferencesSubmit;\n","export const TEXT_INPUT_REGEX = /^(?=.*\\p{L})[\\p{L}\\s,'.-]+$/giu;\nexport const TEXT_AND_NUMBER_INPUT_REGEX =\n /^(?=.*\\p{L}|\\p{N})[\\p{L}\\p{N}\\s,'’&#()./\\\\-]+$/giu;\nexport const CITY_REGEX = /^(?=.*\\p{L}|\\p{N})[\\p{L}\\p{N}\\s,'.-]+$/giu;\nexport const EMAIL_REGEX = /\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b/i;\nexport const PHONE_NUMBER_WITH_PREFIX_REGEX = /^\\+[0-9]{9,14}$/;\nexport const PHONE_NUMBER_PRINCIPAL_REGEX = /^[0-9]{7,12}$/;\nexport const VAT_NUMBER_REGEX = /^[a-z0-9 ,.'-]+$/i;\n"],"names":["_ref","children","className","dataTestId","disabled","editHint","link","linkCallback","secondary","secondaryBackgroundClassName","isLightMode","inverted","buttonProps","buttonClasses","classNames","url","name","React","createElement","href","target","onClick","_extends","ariaLabel","color","size","IconSizeEnum","lg","closeModalAriaLabel","useAriaLabels","type","black","white","red","style","width","height","forwardRef","ref","siteKey","meta","setValue","setTouched","useField","hasError","error","touched","ReCAPTCHA","sitekey","onChange","e","badge","ErrorMessage","msg","infoTooltip","Icon","Tooltip","label","position","TooltipPositionEnum","Custom","customWrapperClassName","customContentClassName","backgroundColor","required","optionalFieldLabel","maxCharsLabel","inputWrapperClass","inputClass","inputFieldPrefix","inputFieldSuffix","rest","maxLength","htmlFor","Fragment","FormFieldInfoTooltip","Field","id","innerRef","options","placeholder","hideErrorMessage","disableErrorStyling","as","value","map","_ref2","optionsLabel","key","extraClasses","svgClasses","pulseContainerClasses","pulseItemClasses","trackColor","animationStyle","role","viewBox","fill","xmlns","d","arrowRadiusClassName","customArrowClassName","hasArrow","hasTooltipClass","positionClasses","Top","Bottom","BottomLeft","isBottomVariant","isTopVariant","tooltip","ISignupFormStatus","async","page","apiUrl","productCode","firstName","lastName","email","country","language","captcha","newsletterBody","locale","contactAddresses","nameFirst","nameLast","iso2","contactEmails","optinSubscriptions","subscribed","productBody","languageCode","reCaptchaCode","headers","Accept","Connection","axios","token","verifyEndpoint","status","authenticatedUser","closeCallback","countries","countryInitial","countryLabel","countryPlaceholder","emailErrorMessage","emailLabel","emailPlaceholder","firstNameErrorMessage","firstNameLabel","firstNamePlaceholder","formSuccessSubtitle","formSuccessTitle","formVerifiedSubtitle","formVerifiedTitle","formErrorSubtitle","formErrorTitle","languageInitial","languageLabel","languagePlaceholder","languages","lastNameErrorMessage","lastNameLabel","lastNamePlaceholder","legalText","requiredErrorMessage","signupLabel","submitEndpoint","text","title","fullPage","updateMarketingPreferencesEndpoint","userId","userEmail","setStatus","useState","Loading","setPage","closeSignUpFormAriaLabel","useEffect","window","location","pathname","split","referer","origin","Default","updateDataLayer","event","content_type","Verified","Submitted","query","search","verificationToken","qs","ignoreQueryPrefix","decoder","s","isVerificationSuccessful","signupFormVerify","accountMarketingPreferencesSubmit","allowGDPRContact","console","log","verifySignup","observer","MutationObserver","mutationsList","recaptchaChallengeNode","addedNodes","nodeName","reCaptchaChallengeElement","iframeElement","getElementsByTagName","challengeElement","parentElement","setProperty","zIndex","updateReCaptchaChallengeElementPosition","Array","from","getElementsByClassName","forEach","arrow","updateReCaptchaArrowsDisplay","disconnect","observe","document","body","subtree","childList","findInitial","initialValue","valueLabelArray","find","LoadingSpinner","Errored","colorClassName","hidden","h4","Formik","initialValues","onSubmit","values","signupFormSubmit","submitHandler","validationSchema","yup","matches","TEXT_INPUT_REGEX","EMAIL_REGEX","isValid","dirty","Form","FormInput","FormSelect","FormCaptcha","Button","dangerouslySetInnerHTML","__html","CloseButton","formValues","TEXT_AND_NUMBER_INPUT_REGEX","CITY_REGEX","PHONE_NUMBER_PRINCIPAL_REGEX","VAT_NUMBER_REGEX"],"sourceRoot":""}