@dropins/storefront-auth 2.1.0 → 2.2.0-alpha002
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/getCustomerRolePermissions/getCustomerRolePermissions.d.ts +24 -0
- package/api/getCustomerRolePermissions/graphql/getCustomerRolePermissions.graphql.d.ts +2 -0
- package/api/getCustomerRolePermissions/index.d.ts +10 -0
- package/api/index.d.ts +1 -0
- package/api.js +34 -1
- package/api.js.map +1 -1
- package/chunks/Button.js.map +1 -1
- package/chunks/Button2.js.map +1 -1
- package/chunks/ResetPasswordForm.js.map +1 -1
- package/chunks/SignInForm.js.map +1 -1
- package/chunks/SignUpForm.js.map +1 -1
- package/chunks/SkeletonLoader.js.map +1 -1
- package/chunks/acdl.js.map +1 -1
- package/chunks/confirmEmail.js.map +1 -1
- package/chunks/createCustomerAddress.js.map +1 -1
- package/chunks/focusOnEmptyPasswordField.js.map +1 -1
- package/chunks/getCustomerToken.js +3 -3
- package/chunks/getCustomerToken.js.map +1 -1
- package/chunks/initialize.js.map +1 -1
- package/chunks/network-error.js +1 -1
- package/chunks/network-error.js.map +1 -1
- package/chunks/requestPasswordResetEmail.js.map +1 -1
- package/chunks/resendConfirmationEmail.js.map +1 -1
- package/chunks/resetPassword.js.map +1 -1
- package/chunks/revokeCustomerToken.js.map +1 -1
- package/chunks/setReCaptchaToken.js +1 -1
- package/chunks/setReCaptchaToken.js.map +1 -1
- package/chunks/simplifyTransformAttributesForm.js.map +1 -1
- package/chunks/transform-attributes-form.js.map +1 -1
- package/chunks/usePasswordValidationMessage.js.map +1 -1
- package/chunks/verifyToken.js +1 -1
- package/chunks/verifyToken.js.map +1 -1
- package/containers/AuthCombine.js.map +1 -1
- package/containers/ResetPassword.js.map +1 -1
- package/containers/SignIn.js.map +1 -1
- package/containers/SignUp.js.map +1 -1
- package/containers/SuccessNotification.js.map +1 -1
- package/containers/UpdatePassword.js.map +1 -1
- package/fragments.js.map +1 -1
- package/package.json +1 -1
- package/render.js.map +1 -1
package/chunks/SignInForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignInForm.js","sources":["/@dropins/storefront-auth/src/hooks/components/useSignInForm.tsx","/@dropins/storefront-auth/src/lib/clearUrlAndReplace.ts","/@dropins/storefront-auth/src/hooks/useEmailConfirmation.tsx","/@dropins/storefront-auth/src/components/SignInForm/SignInForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { useCallback, useState, useMemo, useEffect } from 'preact/hooks';\nimport { getCustomerToken, resendConfirmationEmail } from '@/auth/api';\nimport { AdditionalActionsAlertProps, useSignInFormProps } from '@/auth/types';\nimport { DEFAULT__SIGN_IN_EMAIL_FIELD } from '@/auth/configs/defaultCreateUserConfigs';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignInForm = ({\n emailConfirmationStatusMessage,\n translations,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n onErrorCallback,\n setActiveComponent,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n}: useSignInFormProps) => {\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [signInPasswordValue, setSignInPasswordValue] = useState('');\n const [passwordError, setPasswordError] = useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [isLoading, setIsLoading] = useState(false);\n const [additionalActionsAlert, setAdditionalActionsAlert] =\n useState<AdditionalActionsAlertProps>([]);\n\n const actionsShowNotificationForm = useCallback(\n async (email: string) => {\n handleSetInLineAlertProps();\n setShowEmailConfirmationForm(true);\n setPasswordError(false);\n setAdditionalActionsAlert([]);\n\n await resendConfirmationEmail(email);\n },\n [handleSetInLineAlertProps]\n );\n\n const handleSetPassword = useCallback((value: string) => {\n if (value.length) {\n setPasswordError(false);\n } else {\n setPasswordError(true);\n }\n setSignInPasswordValue(value);\n }, []);\n\n useEffect(() => {\n if (emailConfirmationStatusMessage?.text) {\n handleSetInLineAlertProps({\n text: emailConfirmationStatusMessage.text,\n type: emailConfirmationStatusMessage.status\n ? emailConfirmationStatusMessage.status\n : undefined,\n });\n }\n }, [emailConfirmationStatusMessage, handleSetInLineAlertProps]);\n\n const onBlurPassword = useCallback(() => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n }\n }, [signInPasswordValue]);\n\n const checkPasswordAndFocus = useCallback(\n (event: SubmitEvent, isValid: boolean): boolean => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n\n if (!isValid) return true;\n\n focusOnEmptyPasswordField(event, signInPasswordValue, '');\n return true;\n }\n\n return false;\n },\n [signInPasswordValue]\n );\n\n const onAuthenticationSuccess = useCallback(\n (event: SubmitEvent, loginResponse: Record<string, string>) => {\n if (loginResponse?.userName) {\n (event.target as HTMLFormElement).reset();\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n status: true,\n });\n\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n }\n },\n [onSuccessCallback, routeRedirectOnSignIn]\n );\n\n const onAuthenticationFailed = useCallback(\n (loginResponse: { errorMessage: string }, email: string) => {\n if (loginResponse?.errorMessage?.length) {\n setUserEmail(email);\n\n /**\n * TODO: Use error code when available, instead of comparing to response text\n *\n * This implementation is a temporary solution.\n * The backend functionality is planned to be improved to obtain accurate data that will help correctly identify error types and handle them.\n */\n const isIncludesMessage = loginResponse.errorMessage.includes(\n \"This account isn't confirmed. Verify and try again.\"\n );\n\n const errorMessage: string = isIncludesMessage\n ? translations.resendEmailInformationText\n : loginResponse.errorMessage;\n\n if (isIncludesMessage) {\n setAdditionalActionsAlert([\n {\n label: translations.resendEmailButtonText,\n onClick: () => {\n actionsShowNotificationForm(email);\n },\n },\n ]);\n } else {\n setAdditionalActionsAlert([]);\n }\n\n handleSetInLineAlertProps({\n text: errorMessage,\n type: 'error',\n });\n\n setSignInPasswordValue('');\n }\n },\n [\n actionsShowNotificationForm,\n handleSetInLineAlertProps,\n translations.resendEmailButtonText,\n translations.resendEmailInformationText,\n ]\n );\n\n const submitLogInUser = useCallback(\n async (event: SubmitEvent, isValid: boolean): Promise<void> => {\n handleSetInLineAlertProps();\n\n if (checkPasswordAndFocus(event, isValid)) return;\n\n setIsLoading(true);\n\n const formValues = getFormValues(event.target);\n const isFormComplete = Object.values(formValues).every((value) => value);\n\n if (isFormComplete) {\n const { email, password } = formValues;\n\n const loginResponse = await getCustomerToken({\n email,\n password,\n handleSetInLineAlertProps,\n onErrorCallback,\n translations,\n });\n\n onAuthenticationFailed(loginResponse, email);\n onAuthenticationSuccess(event, loginResponse);\n\n setPasswordError(false);\n }\n\n setIsLoading(false);\n },\n [\n translations,\n onErrorCallback,\n checkPasswordAndFocus,\n onAuthenticationFailed,\n onAuthenticationSuccess,\n handleSetInLineAlertProps,\n ]\n );\n\n const forgotPasswordCallback = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('resetPasswordForm');\n\n return;\n }\n\n if (checkIsFunction(routeForgotPassword)) {\n window.location.href = routeForgotPassword();\n }\n }, [routeForgotPassword, setActiveComponent]);\n\n const onSignUpLinkClickCallback = useCallback(() => {\n if (checkIsFunction(onSignUpLinkClick)) {\n onSignUpLinkClick();\n }\n\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signUpForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignUp)) {\n window.location.href = routeSignUp();\n }\n }, [onSignUpLinkClick, routeSignUp, setActiveComponent]);\n\n const defaultEnhancedEmailFields: any = useMemo(() => {\n const fieldsList = simplifyTransformAttributesForm(\n DEFAULT__SIGN_IN_EMAIL_FIELD\n );\n\n if (!initialEmailValue?.length) return fieldsList;\n\n return fieldsList?.map((el: any) => ({\n ...el,\n defaultValue: initialEmailValue,\n }));\n }, [initialEmailValue]);\n\n const handledOnPrimaryButtonClick = useCallback(() => {\n handleSetInLineAlertProps();\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n }\n }, [handleSetInLineAlertProps, routeRedirectOnEmailConfirmationClose]);\n\n return {\n additionalActionsAlert,\n userEmail,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n setShowEmailConfirmationForm,\n setSignInPasswordValue,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const clearUrlAndReplace = () => {\n let url = new URL(window.location.href);\n\n let email = url.searchParams.get('email');\n let token = url.searchParams.get('key');\n\n if (email && token) {\n url.searchParams.delete('email');\n url.searchParams.delete('key');\n\n window.history.replaceState({}, document.title, url.toString());\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState } from 'preact/hooks';\nimport { clearUrlAndReplace } from '../lib/clearUrlAndReplace';\nimport { confirmEmail } from '../api';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\ninterface useEmailConfirmationProps {\n enableEmailConfirmation: boolean;\n}\n\n// The client receives a confirmation of the validation via email. When the client follows the provided link, they are directed to the login page with three query parameters. If these parameters are present, we make a request to validate the status. This request returns a response that we display to the user.\nexport const useEmailConfirmation = ({\n enableEmailConfirmation,\n}: useEmailConfirmationProps) => {\n const translations = useText({\n accountConfirmMessage: 'Auth.EmailConfirmationForm.accountConfirmMessage',\n accountConfirmationEmailSuccessMessage:\n 'Auth.EmailConfirmationForm.accountConfirmationEmailSuccessMessage',\n });\n const [emailConfirmationStatusMessage, setEmailConfirmationStatusMessage] =\n useState<{\n text: string;\n status: '' | 'success' | 'error';\n }>({\n text: '',\n status: '',\n });\n\n useEffect(() => {\n if (enableEmailConfirmation) {\n const { search } = window.location;\n\n if (search.includes('email=') && search.includes('key=')) {\n const validateEmailStatus = async () => {\n const params = new URLSearchParams(search);\n\n const response = await confirmEmail({\n customerEmail: params.get('email') as string,\n customerConfirmationKey: params.get('key') as string,\n });\n\n if (!response) return null;\n\n if (response?.errors?.length) {\n setEmailConfirmationStatusMessage({\n text: response?.errors[0].message,\n status: 'error',\n });\n } else {\n setEmailConfirmationStatusMessage({\n text: response.data.confirmEmail.customer.email\n ? translations.accountConfirmationEmailSuccessMessage.replace(\n '{email}',\n response?.data?.confirmEmail.customer?.email\n )\n : translations.accountConfirmMessage,\n status: 'success',\n });\n\n clearUrlAndReplace();\n }\n };\n\n validateEmailStatus();\n }\n }\n }, [enableEmailConfirmation, translations]);\n\n return { emailConfirmationStatusMessage };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useSignInForm } from '@/auth/hooks/components/useSignInForm';\nimport { SignInFormProps } from '@/auth/types';\nimport { useEmailConfirmation } from '@/auth/hooks/useEmailConfirmation';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert, InputPassword } from '@adobe-commerce/elsie/components';\nimport '@/auth/components/SignInForm/SignInForm.css';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignInForm: FunctionComponent<SignInFormProps> = ({\n slots,\n labels,\n formSize = 'default',\n initialEmailValue = '',\n renderSignUpLink = false,\n enableEmailConfirmation = false,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeForgotPassword,\n routeSignUp,\n onSuccessCallback,\n setActiveComponent,\n onErrorCallback,\n onSignUpLinkClick,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignInForm.title',\n buttonPrimary: 'Auth.SignInForm.buttonPrimary',\n buttonSecondary: 'Auth.SignInForm.buttonSecondary',\n buttonTertiary: 'Auth.SignInForm.buttonTertiary',\n resendEmailInformationText:\n 'Auth.Notification.resendEmailNotification.informationText',\n resendEmailButtonText:\n 'Auth.Notification.resendEmailNotification.buttonText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n });\n\n const { emailConfirmationStatusMessage } = useEmailConfirmation({\n enableEmailConfirmation,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n userEmail,\n additionalActionsAlert,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n } = useSignInForm({\n translations,\n emailConfirmationStatusMessage,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n });\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handledOnPrimaryButtonClick}\n />\n );\n }\n\n return (\n <div\n className={classes([\n 'auth-sign-in-form',\n `auth-sign-in-form--${formSize}`,\n ])}\n data-testid=\"signInForm\"\n >\n <Header\n title={labels?.formTitleText ?? translations.title}\n divider={false}\n className=\"auth-sign-in-form__title\"\n />\n {inLineAlertProps.text ? (\n <InLineAlert\n data-testid=\"authInLineAlert\"\n className=\"auth-sign-in-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n additionalActions={additionalActionsAlert}\n />\n ) : null}\n <Form\n name=\"signIn_form\"\n className=\"auth-sign-in-form__form\"\n onSubmit={submitLogInUser}\n loading={isLoading}\n fieldsConfig={defaultEnhancedEmailFields}\n >\n <InputPassword\n hideStatusIndicator\n className=\"auth-sign-in-form__form__password\"\n autoComplete={'current-password'}\n errorMessage={\n passwordError ? translations.requiredFieldError : undefined\n }\n defaultValue={signInPasswordValue}\n onValue={handleSetPassword}\n onBlur={onBlurPassword}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n />\n <div className=\"auth-sign-in-form__form__buttons\">\n <div className=\"auth-sign-in-form__form__buttons__combine\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonTertiary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--forgot\"\n enableLoader={false}\n onClick={forgotPasswordCallback}\n data-testid=\"switchToSignUp\"\n />\n {renderSignUpLink ? <span /> : null}\n {renderSignUpLink ? (\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--signup\"\n enableLoader={false}\n onClick={onSignUpLinkClickCallback}\n />\n ) : null}\n </div>\n <Button\n type=\"submit\"\n buttonText={labels?.primaryButtonText ?? translations.buttonPrimary}\n variant=\"primary\"\n className=\"auth-sign-in-form__button auth-sign-in-form__button--submit\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n <div id=\"generateCustomerToken\" />\n </div>\n );\n};\n"],"names":["useSignInForm","emailConfirmationStatusMessage","translations","initialEmailValue","routeSignUp","routeForgotPassword","routeRedirectOnSignIn","onErrorCallback","setActiveComponent","onSuccessCallback","onSignUpLinkClick","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","userEmail","setUserEmail","useState","showEmailConfirmationForm","setShowEmailConfirmationForm","signInPasswordValue","setSignInPasswordValue","passwordError","setPasswordError","isSuccessful","setIsSuccessful","isLoading","setIsLoading","additionalActionsAlert","setAdditionalActionsAlert","actionsShowNotificationForm","useCallback","email","resendConfirmationEmail","handleSetPassword","value","useEffect","onBlurPassword","checkPasswordAndFocus","event","isValid","focusOnEmptyPasswordField","onAuthenticationSuccess","loginResponse","checkIsFunction","onAuthenticationFailed","_a","isIncludesMessage","errorMessage","submitLogInUser","formValues","getFormValues","password","getCustomerToken","forgotPasswordCallback","onSignUpLinkClickCallback","defaultEnhancedEmailFields","useMemo","fieldsList","simplifyTransformAttributesForm","DEFAULT__SIGN_IN_EMAIL_FIELD","el","handledOnPrimaryButtonClick","clearUrlAndReplace","url","token","useEmailConfirmation","enableEmailConfirmation","useText","setEmailConfirmationStatusMessage","search","params","response","confirmEmail","_c","_b","SignInForm","slots","labels","formSize","renderSignUpLink","hideCloseBtnOnEmailConfirmation","useCustomTranslations","inLineAlertProps","useInLineAlert","jsx","Slot","EmailConfirmationForm","jsxs","classes","Header","InLineAlert","Form","InputPassword","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SignInForm.js","sources":["/@dropins/storefront-auth/src/hooks/components/useSignInForm.tsx","/@dropins/storefront-auth/src/lib/clearUrlAndReplace.ts","/@dropins/storefront-auth/src/hooks/useEmailConfirmation.tsx","/@dropins/storefront-auth/src/components/SignInForm/SignInForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { useCallback, useState, useMemo, useEffect } from 'preact/hooks';\nimport { getCustomerToken, resendConfirmationEmail } from '@/auth/api';\nimport { AdditionalActionsAlertProps, useSignInFormProps } from '@/auth/types';\nimport { DEFAULT__SIGN_IN_EMAIL_FIELD } from '@/auth/configs/defaultCreateUserConfigs';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignInForm = ({\n emailConfirmationStatusMessage,\n translations,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n onErrorCallback,\n setActiveComponent,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n}: useSignInFormProps) => {\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [signInPasswordValue, setSignInPasswordValue] = useState('');\n const [passwordError, setPasswordError] = useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [isLoading, setIsLoading] = useState(false);\n const [additionalActionsAlert, setAdditionalActionsAlert] =\n useState<AdditionalActionsAlertProps>([]);\n\n const actionsShowNotificationForm = useCallback(\n async (email: string) => {\n handleSetInLineAlertProps();\n setShowEmailConfirmationForm(true);\n setPasswordError(false);\n setAdditionalActionsAlert([]);\n\n await resendConfirmationEmail(email);\n },\n [handleSetInLineAlertProps]\n );\n\n const handleSetPassword = useCallback((value: string) => {\n if (value.length) {\n setPasswordError(false);\n } else {\n setPasswordError(true);\n }\n setSignInPasswordValue(value);\n }, []);\n\n useEffect(() => {\n if (emailConfirmationStatusMessage?.text) {\n handleSetInLineAlertProps({\n text: emailConfirmationStatusMessage.text,\n type: emailConfirmationStatusMessage.status\n ? emailConfirmationStatusMessage.status\n : undefined,\n });\n }\n }, [emailConfirmationStatusMessage, handleSetInLineAlertProps]);\n\n const onBlurPassword = useCallback(() => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n }\n }, [signInPasswordValue]);\n\n const checkPasswordAndFocus = useCallback(\n (event: SubmitEvent, isValid: boolean): boolean => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n\n if (!isValid) return true;\n\n focusOnEmptyPasswordField(event, signInPasswordValue, '');\n return true;\n }\n\n return false;\n },\n [signInPasswordValue]\n );\n\n const onAuthenticationSuccess = useCallback(\n (event: SubmitEvent, loginResponse: Record<string, string>) => {\n if (loginResponse?.userName) {\n (event.target as HTMLFormElement).reset();\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n status: true,\n });\n\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n }\n },\n [onSuccessCallback, routeRedirectOnSignIn]\n );\n\n const onAuthenticationFailed = useCallback(\n (loginResponse: { errorMessage: string }, email: string) => {\n if (loginResponse?.errorMessage?.length) {\n setUserEmail(email);\n\n /**\n * TODO: Use error code when available, instead of comparing to response text\n *\n * This implementation is a temporary solution.\n * The backend functionality is planned to be improved to obtain accurate data that will help correctly identify error types and handle them.\n */\n const isIncludesMessage = loginResponse.errorMessage.includes(\n \"This account isn't confirmed. Verify and try again.\"\n );\n\n const errorMessage: string = isIncludesMessage\n ? translations.resendEmailInformationText\n : loginResponse.errorMessage;\n\n if (isIncludesMessage) {\n setAdditionalActionsAlert([\n {\n label: translations.resendEmailButtonText,\n onClick: () => {\n actionsShowNotificationForm(email);\n },\n },\n ]);\n } else {\n setAdditionalActionsAlert([]);\n }\n\n handleSetInLineAlertProps({\n text: errorMessage,\n type: 'error',\n });\n\n setSignInPasswordValue('');\n }\n },\n [\n actionsShowNotificationForm,\n handleSetInLineAlertProps,\n translations.resendEmailButtonText,\n translations.resendEmailInformationText,\n ]\n );\n\n const submitLogInUser = useCallback(\n async (event: SubmitEvent, isValid: boolean): Promise<void> => {\n handleSetInLineAlertProps();\n\n if (checkPasswordAndFocus(event, isValid)) return;\n\n setIsLoading(true);\n\n const formValues = getFormValues(event.target);\n const isFormComplete = Object.values(formValues).every((value) => value);\n\n if (isFormComplete) {\n const { email, password } = formValues;\n\n const loginResponse = await getCustomerToken({\n email,\n password,\n handleSetInLineAlertProps,\n onErrorCallback,\n translations,\n });\n\n onAuthenticationFailed(loginResponse, email);\n onAuthenticationSuccess(event, loginResponse);\n\n setPasswordError(false);\n }\n\n setIsLoading(false);\n },\n [\n translations,\n onErrorCallback,\n checkPasswordAndFocus,\n onAuthenticationFailed,\n onAuthenticationSuccess,\n handleSetInLineAlertProps,\n ]\n );\n\n const forgotPasswordCallback = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('resetPasswordForm');\n\n return;\n }\n\n if (checkIsFunction(routeForgotPassword)) {\n window.location.href = routeForgotPassword();\n }\n }, [routeForgotPassword, setActiveComponent]);\n\n const onSignUpLinkClickCallback = useCallback(() => {\n if (checkIsFunction(onSignUpLinkClick)) {\n onSignUpLinkClick();\n }\n\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signUpForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignUp)) {\n window.location.href = routeSignUp();\n }\n }, [onSignUpLinkClick, routeSignUp, setActiveComponent]);\n\n const defaultEnhancedEmailFields: any = useMemo(() => {\n const fieldsList = simplifyTransformAttributesForm(\n DEFAULT__SIGN_IN_EMAIL_FIELD\n );\n\n if (!initialEmailValue?.length) return fieldsList;\n\n return fieldsList?.map((el: any) => ({\n ...el,\n defaultValue: initialEmailValue,\n }));\n }, [initialEmailValue]);\n\n const handledOnPrimaryButtonClick = useCallback(() => {\n handleSetInLineAlertProps();\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n }\n }, [handleSetInLineAlertProps, routeRedirectOnEmailConfirmationClose]);\n\n return {\n additionalActionsAlert,\n userEmail,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n setShowEmailConfirmationForm,\n setSignInPasswordValue,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const clearUrlAndReplace = () => {\n let url = new URL(window.location.href);\n\n let email = url.searchParams.get('email');\n let token = url.searchParams.get('key');\n\n if (email && token) {\n url.searchParams.delete('email');\n url.searchParams.delete('key');\n\n window.history.replaceState({}, document.title, url.toString());\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState } from 'preact/hooks';\nimport { clearUrlAndReplace } from '../lib/clearUrlAndReplace';\nimport { confirmEmail } from '../api';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\ninterface useEmailConfirmationProps {\n enableEmailConfirmation: boolean;\n}\n\n// The client receives a confirmation of the validation via email. When the client follows the provided link, they are directed to the login page with three query parameters. If these parameters are present, we make a request to validate the status. This request returns a response that we display to the user.\nexport const useEmailConfirmation = ({\n enableEmailConfirmation,\n}: useEmailConfirmationProps) => {\n const translations = useText({\n accountConfirmMessage: 'Auth.EmailConfirmationForm.accountConfirmMessage',\n accountConfirmationEmailSuccessMessage:\n 'Auth.EmailConfirmationForm.accountConfirmationEmailSuccessMessage',\n });\n const [emailConfirmationStatusMessage, setEmailConfirmationStatusMessage] =\n useState<{\n text: string;\n status: '' | 'success' | 'error';\n }>({\n text: '',\n status: '',\n });\n\n useEffect(() => {\n if (enableEmailConfirmation) {\n const { search } = window.location;\n\n if (search.includes('email=') && search.includes('key=')) {\n const validateEmailStatus = async () => {\n const params = new URLSearchParams(search);\n\n const response = await confirmEmail({\n customerEmail: params.get('email') as string,\n customerConfirmationKey: params.get('key') as string,\n });\n\n if (!response) return null;\n\n if (response?.errors?.length) {\n setEmailConfirmationStatusMessage({\n text: response?.errors[0].message,\n status: 'error',\n });\n } else {\n setEmailConfirmationStatusMessage({\n text: response.data.confirmEmail.customer.email\n ? translations.accountConfirmationEmailSuccessMessage.replace(\n '{email}',\n response?.data?.confirmEmail.customer?.email\n )\n : translations.accountConfirmMessage,\n status: 'success',\n });\n\n clearUrlAndReplace();\n }\n };\n\n validateEmailStatus();\n }\n }\n }, [enableEmailConfirmation, translations]);\n\n return { emailConfirmationStatusMessage };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useSignInForm } from '@/auth/hooks/components/useSignInForm';\nimport { SignInFormProps } from '@/auth/types';\nimport { useEmailConfirmation } from '@/auth/hooks/useEmailConfirmation';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert, InputPassword } from '@adobe-commerce/elsie/components';\nimport '@/auth/components/SignInForm/SignInForm.css';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignInForm: FunctionComponent<SignInFormProps> = ({\n slots,\n labels,\n formSize = 'default',\n initialEmailValue = '',\n renderSignUpLink = false,\n enableEmailConfirmation = false,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeForgotPassword,\n routeSignUp,\n onSuccessCallback,\n setActiveComponent,\n onErrorCallback,\n onSignUpLinkClick,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignInForm.title',\n buttonPrimary: 'Auth.SignInForm.buttonPrimary',\n buttonSecondary: 'Auth.SignInForm.buttonSecondary',\n buttonTertiary: 'Auth.SignInForm.buttonTertiary',\n resendEmailInformationText:\n 'Auth.Notification.resendEmailNotification.informationText',\n resendEmailButtonText:\n 'Auth.Notification.resendEmailNotification.buttonText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n });\n\n const { emailConfirmationStatusMessage } = useEmailConfirmation({\n enableEmailConfirmation,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n userEmail,\n additionalActionsAlert,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n } = useSignInForm({\n translations,\n emailConfirmationStatusMessage,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n });\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handledOnPrimaryButtonClick}\n />\n );\n }\n\n return (\n <div\n className={classes([\n 'auth-sign-in-form',\n `auth-sign-in-form--${formSize}`,\n ])}\n data-testid=\"signInForm\"\n >\n <Header\n title={labels?.formTitleText ?? translations.title}\n divider={false}\n className=\"auth-sign-in-form__title\"\n />\n {inLineAlertProps.text ? (\n <InLineAlert\n data-testid=\"authInLineAlert\"\n className=\"auth-sign-in-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n additionalActions={additionalActionsAlert}\n />\n ) : null}\n <Form\n name=\"signIn_form\"\n className=\"auth-sign-in-form__form\"\n onSubmit={submitLogInUser}\n loading={isLoading}\n fieldsConfig={defaultEnhancedEmailFields}\n >\n <InputPassword\n hideStatusIndicator\n className=\"auth-sign-in-form__form__password\"\n autoComplete={'current-password'}\n errorMessage={\n passwordError ? translations.requiredFieldError : undefined\n }\n defaultValue={signInPasswordValue}\n onValue={handleSetPassword}\n onBlur={onBlurPassword}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n />\n <div className=\"auth-sign-in-form__form__buttons\">\n <div className=\"auth-sign-in-form__form__buttons__combine\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonTertiary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--forgot\"\n enableLoader={false}\n onClick={forgotPasswordCallback}\n data-testid=\"switchToSignUp\"\n />\n {renderSignUpLink ? <span /> : null}\n {renderSignUpLink ? (\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--signup\"\n enableLoader={false}\n onClick={onSignUpLinkClickCallback}\n />\n ) : null}\n </div>\n <Button\n type=\"submit\"\n buttonText={labels?.primaryButtonText ?? translations.buttonPrimary}\n variant=\"primary\"\n className=\"auth-sign-in-form__button auth-sign-in-form__button--submit\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n <div id=\"generateCustomerToken\" />\n </div>\n );\n};\n"],"names":["useSignInForm","emailConfirmationStatusMessage","translations","initialEmailValue","routeSignUp","routeForgotPassword","routeRedirectOnSignIn","onErrorCallback","setActiveComponent","onSuccessCallback","onSignUpLinkClick","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","userEmail","setUserEmail","useState","showEmailConfirmationForm","setShowEmailConfirmationForm","signInPasswordValue","setSignInPasswordValue","passwordError","setPasswordError","isSuccessful","setIsSuccessful","isLoading","setIsLoading","additionalActionsAlert","setAdditionalActionsAlert","actionsShowNotificationForm","useCallback","email","resendConfirmationEmail","handleSetPassword","value","useEffect","onBlurPassword","checkPasswordAndFocus","event","isValid","focusOnEmptyPasswordField","onAuthenticationSuccess","loginResponse","checkIsFunction","onAuthenticationFailed","_a","isIncludesMessage","errorMessage","submitLogInUser","formValues","getFormValues","password","getCustomerToken","forgotPasswordCallback","onSignUpLinkClickCallback","defaultEnhancedEmailFields","useMemo","fieldsList","simplifyTransformAttributesForm","DEFAULT__SIGN_IN_EMAIL_FIELD","el","handledOnPrimaryButtonClick","clearUrlAndReplace","url","token","useEmailConfirmation","enableEmailConfirmation","useText","setEmailConfirmationStatusMessage","search","params","response","confirmEmail","_c","_b","SignInForm","slots","labels","formSize","renderSignUpLink","hideCloseBtnOnEmailConfirmation","useCustomTranslations","inLineAlertProps","useInLineAlert","jsx","Slot","EmailConfirmationForm","jsxs","classes","Header","InLineAlert","Form","InputPassword","Button"],"mappings":"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"}
|
package/chunks/SignUpForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignUpForm.js","sources":["/@dropins/storefront-auth/src/hooks/api/useGetAttributesForm.tsx","/@dropins/storefront-auth/src/lib/mergeFormObjects.ts","/@dropins/storefront-auth/src/hooks/components/useSignUpForm.tsx","/@dropins/storefront-auth/src/components/SignUpForm/SignUpForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getAttributesForm } from '@/auth/api';\nimport { useEffect, useState } from 'preact/hooks';\nimport { inputsDefaultValueSetProps } from '@/auth/types';\nimport { DEFAULT_SIGN_UP_FIELDS } from '@/auth/configs/defaultCreateUserConfigs';\nimport { AttributesFormItemsProps } from '@/auth/data/models';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\n\ninterface UseGetAttributesFormProps {\n fieldsConfigForApiVersion1: {}[];\n apiVersion2: boolean;\n inputsDefaultValueSet?: inputsDefaultValueSetProps[];\n}\n\nconst applyDefaultValuesToFields = (\n fields: AttributesFormItemsProps[],\n defaultValues: inputsDefaultValueSetProps[] | any\n) => {\n if (!defaultValues?.length) return fields;\n\n return fields.map((el) => {\n const defaultValue = defaultValues.find(\n ({ code }: inputsDefaultValueSetProps) => code === el.code\n )?.defaultValue;\n\n return defaultValue ? { ...el, defaultValue } : el;\n });\n};\n\nexport const useGetAttributesForm = ({\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2,\n}: UseGetAttributesFormProps) => {\n const [fieldsListConfigs, setFieldsListConfigs] = useState<\n AttributesFormItemsProps[]\n >([]);\n\n useEffect(() => {\n const fetchFieldsConfig = async () => {\n if (apiVersion2) {\n const response = await getAttributesForm('customer_account_create');\n\n if (response?.length) {\n if (inputsDefaultValueSet?.length) {\n const fieldsWithDefaultValues: any = applyDefaultValuesToFields(\n response,\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(fieldsWithDefaultValues);\n } else {\n setFieldsListConfigs(response);\n }\n }\n } else {\n const transformAttributesFields = simplifyTransformAttributesForm(\n DEFAULT_SIGN_UP_FIELDS\n );\n const transformFieldsConfigForApiVersion1 =\n simplifyTransformAttributesForm(fieldsConfigForApiVersion1);\n\n const defaultFieldsWithDefaultValues: any = applyDefaultValuesToFields(\n transformAttributesFields as AttributesFormItemsProps[],\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(\n fieldsConfigForApiVersion1 && fieldsConfigForApiVersion1.length\n ? transformFieldsConfigForApiVersion1\n : defaultFieldsWithDefaultValues\n );\n }\n };\n\n fetchFieldsConfig();\n }, [apiVersion2, fieldsConfigForApiVersion1, inputsDefaultValueSet]);\n\n return {\n fieldsListConfigs: fieldsListConfigs.map((element) => ({\n ...element,\n ...(element.code === 'email' ? { autocomplete: 'username' } : {}),\n })),\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { convertKeysCase } from './convertCase';\n\nexport const mergeFormObjects = (\n input: Record<string, any>,\n apiVersion2: boolean\n) => {\n const baseKeys = [\n 'dob',\n 'email',\n 'firstname',\n 'gender',\n 'lastname',\n 'middlename',\n 'password',\n 'prefix',\n 'suffix',\n 'taxvat',\n ];\n\n const newInputs = convertKeysCase(input, 'snakeCase', {\n firstName: 'firstname',\n lastName: 'lastname',\n });\n\n if (!apiVersion2)\n return {\n ...newInputs,\n ...(newInputs?.gender ? { gender: Number(newInputs?.gender) } : {}),\n };\n\n const result: Record<string, any> = {};\n const customAttributes: Record<string, any>[] = [];\n\n Object.keys(newInputs).forEach((key: string) => {\n if (baseKeys.includes(key)) {\n result[key] = key.includes('gender')\n ? Number(newInputs[key])\n : newInputs[key];\n } else {\n customAttributes.push({\n attribute_code: key,\n value: newInputs[key],\n });\n }\n });\n\n if (customAttributes.length > 0) {\n result.custom_attributes = customAttributes;\n }\n\n return result;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n createCustomer,\n createCustomerAddress,\n getCustomerToken,\n} from '@/auth/api';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { mergeFormObjects } from '@/auth/lib/mergeFormObjects';\nimport { validationUniqueSymbolsPassword } from '@/auth/lib/validationUniqueSymbolsPassword';\nimport { useCallback, useState } from 'preact/hooks';\nimport { UseSingUpFormProps } from '@/auth/types';\nimport { EventsList, publishEvents } from '@/auth/lib/acdl';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignUpForm = ({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2 = true,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n}: UseSingUpFormProps) => {\n const [showPasswordErrorMessage, setShowPasswordErrorMessage] =\n useState<boolean>(false);\n const [confirmPassword, setConfirmPassword] = useState('');\n const [confirmPasswordMessage, setConfirmPasswordMessage] = useState('');\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [signUpPasswordValue, setSignUpPasswordValue] = useState('');\n const [isClickSubmit, setIsClickSubmit] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isKeepMeLogged, setIsKeepMeLogged] = useState(true);\n\n const onBlurPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setShowPasswordErrorMessage(!value.length);\n\n if (value.length && confirmPassword.length && value !== confirmPassword) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [confirmPassword, translations.passwordMismatch]\n );\n\n const onBlurConfirmPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setConfirmPasswordMessage(\n value.length ? '' : translations.requiredFieldError\n );\n\n if (\n value.length &&\n signUpPasswordValue.length &&\n value !== signUpPasswordValue\n ) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [\n signUpPasswordValue,\n translations.passwordMismatch,\n translations.requiredFieldError,\n ]\n );\n\n const handleConfirmPasswordChange = useCallback(\n (value: string) => {\n setConfirmPassword(value);\n\n if (value) {\n setConfirmPasswordMessage(\n signUpPasswordValue === value ? '' : translations.passwordMismatch\n );\n } else {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n },\n [translations, signUpPasswordValue]\n );\n\n const onKeepMeLoggedChange = useCallback(({ target }: any) => {\n setIsKeepMeLogged(target.checked);\n }, []);\n\n const signInButton = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signInForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignIn)) {\n window.location.href = routeSignIn();\n }\n }, [setActiveComponent, routeSignIn]);\n\n const handleSetSignUpPasswordValue = useCallback(\n (value: string) => {\n setSignUpPasswordValue(value);\n setShowPasswordErrorMessage(!value.length);\n if (value === confirmPassword) {\n setConfirmPasswordMessage('');\n }\n },\n [confirmPassword]\n );\n\n const handleHideEmailConfirmationForm = useCallback(() => {\n handleSetInLineAlertProps();\n setSignUpPasswordValue('');\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n setActiveComponent?.('signInForm');\n }\n }, [\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n setActiveComponent,\n ]);\n\n const calledLoadingAndClick = () => {\n setIsClickSubmit(true);\n setIsLoading(false);\n };\n\n const onInvalidFormSubmit = (event: SubmitEvent, isValid: boolean) => {\n const arePasswordsFilled =\n signUpPasswordValue.length && confirmPassword.length;\n const arePasswordsMismatched = signUpPasswordValue !== confirmPassword;\n\n const handleErrors = () => {\n setShowPasswordErrorMessage(!signUpPasswordValue.length);\n if (!confirmPassword) {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n if (arePasswordsFilled && arePasswordsMismatched) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n };\n\n const handleRetypePasswordErrors = () => {\n setConfirmPasswordMessage(\n confirmPassword.length\n ? translations.passwordMismatch\n : translations.requiredFieldError\n );\n focusOnEmptyPasswordField(event, signUpPasswordValue, confirmPassword);\n };\n\n if (!isValid) {\n calledLoadingAndClick();\n handleErrors();\n return true;\n }\n\n if (\n requireRetypePassword &&\n (confirmPasswordMessage.length || arePasswordsMismatched)\n ) {\n calledLoadingAndClick();\n handleRetypePasswordErrors();\n return true;\n }\n\n focusOnEmptyPasswordField(event, signUpPasswordValue, '');\n handleErrors();\n return false;\n };\n\n const onSubmitSignUp = async (event: SubmitEvent, isValid: boolean) => {\n handleSetInLineAlertProps();\n setConfirmPasswordMessage('');\n\n setIsLoading(true);\n\n if (onInvalidFormSubmit(event, isValid)) return;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { confirmPasswordField, ...formValues } = getFormValues(event.target);\n const { email, password } = formValues;\n\n const requiredCharacterClasses =\n passwordConfigs?.requiredCharacterClasses || 0;\n\n const requiredPasswordLength = passwordConfigs?.minLength || 1;\n\n // If password validation fails - stop execution, sign-up not possible\n if (\n !validationUniqueSymbolsPassword(password, requiredCharacterClasses) ||\n requiredPasswordLength > password?.length\n ) {\n calledLoadingAndClick();\n\n return;\n }\n\n const formData = mergeFormObjects(\n {\n ...formValues,\n },\n apiVersion2\n );\n\n const response = await createCustomer(formData, apiVersion2);\n\n if (response?.errors?.length) {\n const { errors } = response;\n\n handleSetInLineAlertProps?.({\n type: 'error',\n text: errors[0]?.message,\n });\n\n onErrorCallback?.(errors);\n\n setUserEmail(email);\n } else {\n const createCustomerUserName = response?.firstName;\n\n publishEvents(EventsList.CREATE_ACCOUNT_EVENT, {\n ...response,\n });\n\n // If email confirmation enabled or auto sign-in disabled - stop execution, auto sign-in not possible\n if (isEmailConfirmationRequired || !isAutoSignInEnabled) {\n // Sign-up succeed, execute onSuccess callback\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n // If email confirmation enabled - show email confirmation form and stop execution\n if (isEmailConfirmationRequired) {\n (event.target as HTMLFormElement)?.reset();\n\n setSignUpPasswordValue('');\n setShowEmailConfirmationForm(true);\n setUserEmail(email);\n setIsLoading(false);\n\n return;\n }\n\n // If auto sign-in disabled - render success notification and stop execution\n if (!isAutoSignInEnabled) {\n setIsLoading(false);\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n\n return;\n }\n }\n\n // Auto sign-in after sign-up\n const loginResponse = await getCustomerToken({\n email,\n password,\n translations,\n handleSetInLineAlertProps,\n onErrorCallback,\n });\n\n if (loginResponse?.userName) {\n if (addressesData?.length) {\n for (const address of addressesData) {\n try {\n await createCustomerAddress(address);\n } catch (error) {\n console.error(\n translations.failedCreateCustomerAddress,\n address,\n error\n );\n }\n }\n }\n\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n userEmail: loginResponse?.userEmail,\n status: true,\n });\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n } else {\n // This is a fallback block, executed when registration succeed but sign-in for some reason failed\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n }\n }\n\n setIsLoading(false);\n };\n\n return {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useGetAttributesForm } from '@/auth/hooks/api/useGetAttributesForm';\nimport { useGetStoreConfigs } from '@/auth/hooks/api/useGetStoreConfigs';\nimport { usePasswordValidationMessage } from '@/auth/hooks/components/usePasswordValidationMessage';\nimport { useSignUpForm } from '@/auth/hooks/components/useSignUpForm';\nimport { SignUpFormProps } from '@/auth/types';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport {\n Field,\n Checkbox,\n InLineAlert,\n InputPassword,\n Header,\n} from '@adobe-commerce/elsie/components';\nimport SkeletonLoader from '../SkeletonLoader';\nimport '@/auth/components/SignUpForm/SignUpForm.css';\nimport { useMemo } from 'preact/hooks';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignUpForm: FunctionComponent<SignUpFormProps> = ({\n requireRetypePassword = false,\n addressesData,\n formSize = 'default',\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2 = true,\n isAutoSignInEnabled = true,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n slots,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignUpForm.title',\n buttonPrimary: 'Auth.SignUpForm.buttonPrimary',\n buttonSecondary: 'Auth.SignUpForm.buttonSecondary',\n keepMeLoggedText: 'Auth.SignUpForm.keepMeLoggedText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n failedCreateCustomerAddress: 'Auth.SignUpForm.failedCreateCustomerAddress',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n confirmPasswordPlaceholder: 'Auth.SignUpForm.confirmPassword.placeholder',\n confirmPasswordFloatingLabel:\n 'Auth.SignUpForm.confirmPassword.floatingLabel',\n passwordMismatch: 'Auth.SignUpForm.confirmPassword.passwordMismatch', //NOSONAR\n });\n\n const { passwordConfigs, isEmailConfirmationRequired } = useGetStoreConfigs();\n const { fieldsListConfigs } = useGetAttributesForm({\n fieldsConfigForApiVersion1,\n apiVersion2,\n inputsDefaultValueSet,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n } = useSignUpForm({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n });\n\n const { isValidUniqueSymbols, defaultLengthMessage } =\n usePasswordValidationMessage({\n password: signUpPasswordValue,\n isClickSubmit,\n passwordConfigs,\n });\n\n const validationPasswordMessage = useMemo(() => {\n if (showPasswordErrorMessage) {\n return translations.requiredFieldError;\n }\n\n const hasSubmitError =\n isValidUniqueSymbols === 'error' ||\n defaultLengthMessage?.status === 'error';\n\n if (hasSubmitError) {\n return ' ';\n }\n\n return '';\n }, [\n defaultLengthMessage?.status,\n isValidUniqueSymbols,\n showPasswordErrorMessage,\n translations.requiredFieldError,\n ]);\n\n const shouldShowPersistLoginCheckbox =\n !isEmailConfirmationRequired && addressesData?.length;\n\n if (!fieldsListConfigs.length && apiVersion2) {\n return (\n <div\n className={`auth-sign-up-form auth-sign-up-form--${formSize} skeleton-loader`}\n data-testid=\"SignUpForm\"\n >\n <SkeletonLoader activeSkeleton=\"signUpForm\" />\n </div>\n );\n }\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handleHideEmailConfirmationForm}\n />\n );\n }\n\n return (\n <div\n className={classes([\n 'auth-sign-up-form',\n `auth-sign-up-form--${formSize}`,\n ])}\n data-testid=\"SignUpForm\"\n >\n <Header\n title={translations.title}\n divider={false}\n className=\"auth-sign-up-form__title\"\n />\n {inLineAlertProps.text ? (\n <InLineAlert\n className=\"auth-sign-up-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n <Form\n onSubmit={onSubmitSignUp}\n className=\"auth-sign-up-form__form\"\n loading={isLoading}\n name=\"signUp_form\"\n fieldsConfig={fieldsListConfigs}\n slots={slots}\n >\n <InputPassword\n validateLengthConfig={defaultLengthMessage}\n className=\"auth-sign-up-form__form__field\"\n autoComplete={'current-password'}\n name={'password'}\n minLength={passwordConfigs?.minLength}\n errorMessage={validationPasswordMessage}\n defaultValue={signUpPasswordValue}\n uniqueSymbolsStatus={isValidUniqueSymbols}\n requiredCharacterClasses={passwordConfigs?.requiredCharacterClasses}\n onValue={handleSetSignUpPasswordValue}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n onBlur={onBlurPassword}\n >\n {requireRetypePassword ? (\n <div className=\"auth-sign-up-form__form__confirm-wrapper\">\n <InputPassword\n className=\"auth-sign-up-form__form__field auth-sign-up-form__form__field--confirm-password\"\n autoComplete=\"confirmPassword\"\n name=\"confirmPasswordField\"\n placeholder={translations.confirmPasswordPlaceholder}\n floatingLabel={translations.confirmPasswordFloatingLabel}\n errorMessage={confirmPasswordMessage}\n defaultValue={confirmPassword}\n onValue={handleConfirmPasswordChange}\n onBlur={onBlurConfirmPassword}\n />\n </div>\n ) : null}\n\n {shouldShowPersistLoginCheckbox ? (\n <div\n className={'auth-sign-up-form__automatic-login'}\n data-testid=\"automaticLogin\"\n >\n <Field>\n <Checkbox\n name=\"\"\n placeholder={translations.keepMeLoggedText}\n label={translations.keepMeLoggedText}\n checked={isKeepMeLogged}\n onChange={onKeepMeLoggedChange}\n />\n </Field>\n </div>\n ) : null}\n </InputPassword>\n\n <Slot\n name=\"PrivacyPolicyConsent\"\n data-testid={'privacyPolicyConsent'}\n slot={slots?.PrivacyPolicyConsent}\n key={'privacyPolicyConsent'}\n />\n\n <div className=\"auth-sign-up-form-buttons\">\n <Button\n className=\"auth-sign-up-form-buttons--signin\"\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n enableLoader={false}\n onClick={signInButton}\n />\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n <div id=\"createCustomerV2\" />\n </div>\n );\n};\n"],"names":["applyDefaultValuesToFields","fields","defaultValues","el","defaultValue","_a","code","useGetAttributesForm","inputsDefaultValueSet","fieldsConfigForApiVersion1","apiVersion2","fieldsListConfigs","setFieldsListConfigs","useState","useEffect","response","getAttributesForm","fieldsWithDefaultValues","transformAttributesFields","simplifyTransformAttributesForm","DEFAULT_SIGN_UP_FIELDS","transformFieldsConfigForApiVersion1","defaultFieldsWithDefaultValues","element","mergeFormObjects","input","baseKeys","newInputs","convertKeysCase","result","customAttributes","key","useSignUpForm","requireRetypePassword","addressesData","translations","isEmailConfirmationRequired","passwordConfigs","isAutoSignInEnabled","routeRedirectOnSignIn","routeSignIn","onErrorCallback","onSuccessCallback","setActiveComponent","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","showPasswordErrorMessage","setShowPasswordErrorMessage","confirmPassword","setConfirmPassword","confirmPasswordMessage","setConfirmPasswordMessage","userEmail","setUserEmail","showEmailConfirmationForm","setShowEmailConfirmationForm","isSuccessful","setIsSuccessful","signUpPasswordValue","setSignUpPasswordValue","isClickSubmit","setIsClickSubmit","isLoading","setIsLoading","isKeepMeLogged","setIsKeepMeLogged","onBlurPassword","useCallback","event","value","onBlurConfirmPassword","handleConfirmPasswordChange","onKeepMeLoggedChange","target","signInButton","checkIsFunction","handleSetSignUpPasswordValue","handleHideEmailConfirmationForm","calledLoadingAndClick","onInvalidFormSubmit","isValid","arePasswordsFilled","arePasswordsMismatched","handleErrors","handleRetypePasswordErrors","focusOnEmptyPasswordField","confirmPasswordField","formValues","getFormValues","email","password","requiredCharacterClasses","requiredPasswordLength","validationUniqueSymbolsPassword","formData","createCustomer","errors","_b","createCustomerUserName","publishEvents","EventsList","_c","loginResponse","getCustomerToken","address","createCustomerAddress","error","SignUpForm","formSize","hideCloseBtnOnEmailConfirmation","slots","useCustomTranslations","useGetStoreConfigs","inLineAlertProps","useInLineAlert","onSubmitSignUp","isValidUniqueSymbols","defaultLengthMessage","usePasswordValidationMessage","validationPasswordMessage","useMemo","shouldShowPersistLoginCheckbox","jsx","SkeletonLoader","Slot","EmailConfirmationForm","jsxs","classes","Header","InLineAlert","Form","InputPassword","Field","Checkbox","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SignUpForm.js","sources":["/@dropins/storefront-auth/src/hooks/api/useGetAttributesForm.tsx","/@dropins/storefront-auth/src/lib/mergeFormObjects.ts","/@dropins/storefront-auth/src/hooks/components/useSignUpForm.tsx","/@dropins/storefront-auth/src/components/SignUpForm/SignUpForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getAttributesForm } from '@/auth/api';\nimport { useEffect, useState } from 'preact/hooks';\nimport { inputsDefaultValueSetProps } from '@/auth/types';\nimport { DEFAULT_SIGN_UP_FIELDS } from '@/auth/configs/defaultCreateUserConfigs';\nimport { AttributesFormItemsProps } from '@/auth/data/models';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\n\ninterface UseGetAttributesFormProps {\n fieldsConfigForApiVersion1: {}[];\n apiVersion2: boolean;\n inputsDefaultValueSet?: inputsDefaultValueSetProps[];\n}\n\nconst applyDefaultValuesToFields = (\n fields: AttributesFormItemsProps[],\n defaultValues: inputsDefaultValueSetProps[] | any\n) => {\n if (!defaultValues?.length) return fields;\n\n return fields.map((el) => {\n const defaultValue = defaultValues.find(\n ({ code }: inputsDefaultValueSetProps) => code === el.code\n )?.defaultValue;\n\n return defaultValue ? { ...el, defaultValue } : el;\n });\n};\n\nexport const useGetAttributesForm = ({\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2,\n}: UseGetAttributesFormProps) => {\n const [fieldsListConfigs, setFieldsListConfigs] = useState<\n AttributesFormItemsProps[]\n >([]);\n\n useEffect(() => {\n const fetchFieldsConfig = async () => {\n if (apiVersion2) {\n const response = await getAttributesForm('customer_account_create');\n\n if (response?.length) {\n if (inputsDefaultValueSet?.length) {\n const fieldsWithDefaultValues: any = applyDefaultValuesToFields(\n response,\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(fieldsWithDefaultValues);\n } else {\n setFieldsListConfigs(response);\n }\n }\n } else {\n const transformAttributesFields = simplifyTransformAttributesForm(\n DEFAULT_SIGN_UP_FIELDS\n );\n const transformFieldsConfigForApiVersion1 =\n simplifyTransformAttributesForm(fieldsConfigForApiVersion1);\n\n const defaultFieldsWithDefaultValues: any = applyDefaultValuesToFields(\n transformAttributesFields as AttributesFormItemsProps[],\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(\n fieldsConfigForApiVersion1 && fieldsConfigForApiVersion1.length\n ? transformFieldsConfigForApiVersion1\n : defaultFieldsWithDefaultValues\n );\n }\n };\n\n fetchFieldsConfig();\n }, [apiVersion2, fieldsConfigForApiVersion1, inputsDefaultValueSet]);\n\n return {\n fieldsListConfigs: fieldsListConfigs.map((element) => ({\n ...element,\n ...(element.code === 'email' ? { autocomplete: 'username' } : {}),\n })),\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { convertKeysCase } from './convertCase';\n\nexport const mergeFormObjects = (\n input: Record<string, any>,\n apiVersion2: boolean\n) => {\n const baseKeys = [\n 'dob',\n 'email',\n 'firstname',\n 'gender',\n 'lastname',\n 'middlename',\n 'password',\n 'prefix',\n 'suffix',\n 'taxvat',\n ];\n\n const newInputs = convertKeysCase(input, 'snakeCase', {\n firstName: 'firstname',\n lastName: 'lastname',\n });\n\n if (!apiVersion2)\n return {\n ...newInputs,\n ...(newInputs?.gender ? { gender: Number(newInputs?.gender) } : {}),\n };\n\n const result: Record<string, any> = {};\n const customAttributes: Record<string, any>[] = [];\n\n Object.keys(newInputs).forEach((key: string) => {\n if (baseKeys.includes(key)) {\n result[key] = key.includes('gender')\n ? Number(newInputs[key])\n : newInputs[key];\n } else {\n customAttributes.push({\n attribute_code: key,\n value: newInputs[key],\n });\n }\n });\n\n if (customAttributes.length > 0) {\n result.custom_attributes = customAttributes;\n }\n\n return result;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n createCustomer,\n createCustomerAddress,\n getCustomerToken,\n} from '@/auth/api';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { mergeFormObjects } from '@/auth/lib/mergeFormObjects';\nimport { validationUniqueSymbolsPassword } from '@/auth/lib/validationUniqueSymbolsPassword';\nimport { useCallback, useState } from 'preact/hooks';\nimport { UseSingUpFormProps } from '@/auth/types';\nimport { EventsList, publishEvents } from '@/auth/lib/acdl';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignUpForm = ({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2 = true,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n}: UseSingUpFormProps) => {\n const [showPasswordErrorMessage, setShowPasswordErrorMessage] =\n useState<boolean>(false);\n const [confirmPassword, setConfirmPassword] = useState('');\n const [confirmPasswordMessage, setConfirmPasswordMessage] = useState('');\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [signUpPasswordValue, setSignUpPasswordValue] = useState('');\n const [isClickSubmit, setIsClickSubmit] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isKeepMeLogged, setIsKeepMeLogged] = useState(true);\n\n const onBlurPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setShowPasswordErrorMessage(!value.length);\n\n if (value.length && confirmPassword.length && value !== confirmPassword) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [confirmPassword, translations.passwordMismatch]\n );\n\n const onBlurConfirmPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setConfirmPasswordMessage(\n value.length ? '' : translations.requiredFieldError\n );\n\n if (\n value.length &&\n signUpPasswordValue.length &&\n value !== signUpPasswordValue\n ) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [\n signUpPasswordValue,\n translations.passwordMismatch,\n translations.requiredFieldError,\n ]\n );\n\n const handleConfirmPasswordChange = useCallback(\n (value: string) => {\n setConfirmPassword(value);\n\n if (value) {\n setConfirmPasswordMessage(\n signUpPasswordValue === value ? '' : translations.passwordMismatch\n );\n } else {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n },\n [translations, signUpPasswordValue]\n );\n\n const onKeepMeLoggedChange = useCallback(({ target }: any) => {\n setIsKeepMeLogged(target.checked);\n }, []);\n\n const signInButton = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signInForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignIn)) {\n window.location.href = routeSignIn();\n }\n }, [setActiveComponent, routeSignIn]);\n\n const handleSetSignUpPasswordValue = useCallback(\n (value: string) => {\n setSignUpPasswordValue(value);\n setShowPasswordErrorMessage(!value.length);\n if (value === confirmPassword) {\n setConfirmPasswordMessage('');\n }\n },\n [confirmPassword]\n );\n\n const handleHideEmailConfirmationForm = useCallback(() => {\n handleSetInLineAlertProps();\n setSignUpPasswordValue('');\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n setActiveComponent?.('signInForm');\n }\n }, [\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n setActiveComponent,\n ]);\n\n const calledLoadingAndClick = () => {\n setIsClickSubmit(true);\n setIsLoading(false);\n };\n\n const onInvalidFormSubmit = (event: SubmitEvent, isValid: boolean) => {\n const arePasswordsFilled =\n signUpPasswordValue.length && confirmPassword.length;\n const arePasswordsMismatched = signUpPasswordValue !== confirmPassword;\n\n const handleErrors = () => {\n setShowPasswordErrorMessage(!signUpPasswordValue.length);\n if (!confirmPassword) {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n if (arePasswordsFilled && arePasswordsMismatched) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n };\n\n const handleRetypePasswordErrors = () => {\n setConfirmPasswordMessage(\n confirmPassword.length\n ? translations.passwordMismatch\n : translations.requiredFieldError\n );\n focusOnEmptyPasswordField(event, signUpPasswordValue, confirmPassword);\n };\n\n if (!isValid) {\n calledLoadingAndClick();\n handleErrors();\n return true;\n }\n\n if (\n requireRetypePassword &&\n (confirmPasswordMessage.length || arePasswordsMismatched)\n ) {\n calledLoadingAndClick();\n handleRetypePasswordErrors();\n return true;\n }\n\n focusOnEmptyPasswordField(event, signUpPasswordValue, '');\n handleErrors();\n return false;\n };\n\n const onSubmitSignUp = async (event: SubmitEvent, isValid: boolean) => {\n handleSetInLineAlertProps();\n setConfirmPasswordMessage('');\n\n setIsLoading(true);\n\n if (onInvalidFormSubmit(event, isValid)) return;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { confirmPasswordField, ...formValues } = getFormValues(event.target);\n const { email, password } = formValues;\n\n const requiredCharacterClasses =\n passwordConfigs?.requiredCharacterClasses || 0;\n\n const requiredPasswordLength = passwordConfigs?.minLength || 1;\n\n // If password validation fails - stop execution, sign-up not possible\n if (\n !validationUniqueSymbolsPassword(password, requiredCharacterClasses) ||\n requiredPasswordLength > password?.length\n ) {\n calledLoadingAndClick();\n\n return;\n }\n\n const formData = mergeFormObjects(\n {\n ...formValues,\n },\n apiVersion2\n );\n\n const response = await createCustomer(formData, apiVersion2);\n\n if (response?.errors?.length) {\n const { errors } = response;\n\n handleSetInLineAlertProps?.({\n type: 'error',\n text: errors[0]?.message,\n });\n\n onErrorCallback?.(errors);\n\n setUserEmail(email);\n } else {\n const createCustomerUserName = response?.firstName;\n\n publishEvents(EventsList.CREATE_ACCOUNT_EVENT, {\n ...response,\n });\n\n // If email confirmation enabled or auto sign-in disabled - stop execution, auto sign-in not possible\n if (isEmailConfirmationRequired || !isAutoSignInEnabled) {\n // Sign-up succeed, execute onSuccess callback\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n // If email confirmation enabled - show email confirmation form and stop execution\n if (isEmailConfirmationRequired) {\n (event.target as HTMLFormElement)?.reset();\n\n setSignUpPasswordValue('');\n setShowEmailConfirmationForm(true);\n setUserEmail(email);\n setIsLoading(false);\n\n return;\n }\n\n // If auto sign-in disabled - render success notification and stop execution\n if (!isAutoSignInEnabled) {\n setIsLoading(false);\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n\n return;\n }\n }\n\n // Auto sign-in after sign-up\n const loginResponse = await getCustomerToken({\n email,\n password,\n translations,\n handleSetInLineAlertProps,\n onErrorCallback,\n });\n\n if (loginResponse?.userName) {\n if (addressesData?.length) {\n for (const address of addressesData) {\n try {\n await createCustomerAddress(address);\n } catch (error) {\n console.error(\n translations.failedCreateCustomerAddress,\n address,\n error\n );\n }\n }\n }\n\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n userEmail: loginResponse?.userEmail,\n status: true,\n });\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n } else {\n // This is a fallback block, executed when registration succeed but sign-in for some reason failed\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n }\n }\n\n setIsLoading(false);\n };\n\n return {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useGetAttributesForm } from '@/auth/hooks/api/useGetAttributesForm';\nimport { useGetStoreConfigs } from '@/auth/hooks/api/useGetStoreConfigs';\nimport { usePasswordValidationMessage } from '@/auth/hooks/components/usePasswordValidationMessage';\nimport { useSignUpForm } from '@/auth/hooks/components/useSignUpForm';\nimport { SignUpFormProps } from '@/auth/types';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport {\n Field,\n Checkbox,\n InLineAlert,\n InputPassword,\n Header,\n} from '@adobe-commerce/elsie/components';\nimport SkeletonLoader from '../SkeletonLoader';\nimport '@/auth/components/SignUpForm/SignUpForm.css';\nimport { useMemo } from 'preact/hooks';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignUpForm: FunctionComponent<SignUpFormProps> = ({\n requireRetypePassword = false,\n addressesData,\n formSize = 'default',\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2 = true,\n isAutoSignInEnabled = true,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n slots,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignUpForm.title',\n buttonPrimary: 'Auth.SignUpForm.buttonPrimary',\n buttonSecondary: 'Auth.SignUpForm.buttonSecondary',\n keepMeLoggedText: 'Auth.SignUpForm.keepMeLoggedText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n failedCreateCustomerAddress: 'Auth.SignUpForm.failedCreateCustomerAddress',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n confirmPasswordPlaceholder: 'Auth.SignUpForm.confirmPassword.placeholder',\n confirmPasswordFloatingLabel:\n 'Auth.SignUpForm.confirmPassword.floatingLabel',\n passwordMismatch: 'Auth.SignUpForm.confirmPassword.passwordMismatch', //NOSONAR\n });\n\n const { passwordConfigs, isEmailConfirmationRequired } = useGetStoreConfigs();\n const { fieldsListConfigs } = useGetAttributesForm({\n fieldsConfigForApiVersion1,\n apiVersion2,\n inputsDefaultValueSet,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n } = useSignUpForm({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n });\n\n const { isValidUniqueSymbols, defaultLengthMessage } =\n usePasswordValidationMessage({\n password: signUpPasswordValue,\n isClickSubmit,\n passwordConfigs,\n });\n\n const validationPasswordMessage = useMemo(() => {\n if (showPasswordErrorMessage) {\n return translations.requiredFieldError;\n }\n\n const hasSubmitError =\n isValidUniqueSymbols === 'error' ||\n defaultLengthMessage?.status === 'error';\n\n if (hasSubmitError) {\n return ' ';\n }\n\n return '';\n }, [\n defaultLengthMessage?.status,\n isValidUniqueSymbols,\n showPasswordErrorMessage,\n translations.requiredFieldError,\n ]);\n\n const shouldShowPersistLoginCheckbox =\n !isEmailConfirmationRequired && addressesData?.length;\n\n if (!fieldsListConfigs.length && apiVersion2) {\n return (\n <div\n className={`auth-sign-up-form auth-sign-up-form--${formSize} skeleton-loader`}\n data-testid=\"SignUpForm\"\n >\n <SkeletonLoader activeSkeleton=\"signUpForm\" />\n </div>\n );\n }\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handleHideEmailConfirmationForm}\n />\n );\n }\n\n return (\n <div\n className={classes([\n 'auth-sign-up-form',\n `auth-sign-up-form--${formSize}`,\n ])}\n data-testid=\"SignUpForm\"\n >\n <Header\n title={translations.title}\n divider={false}\n className=\"auth-sign-up-form__title\"\n />\n {inLineAlertProps.text ? (\n <InLineAlert\n className=\"auth-sign-up-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n <Form\n onSubmit={onSubmitSignUp}\n className=\"auth-sign-up-form__form\"\n loading={isLoading}\n name=\"signUp_form\"\n fieldsConfig={fieldsListConfigs}\n slots={slots}\n >\n <InputPassword\n validateLengthConfig={defaultLengthMessage}\n className=\"auth-sign-up-form__form__field\"\n autoComplete={'current-password'}\n name={'password'}\n minLength={passwordConfigs?.minLength}\n errorMessage={validationPasswordMessage}\n defaultValue={signUpPasswordValue}\n uniqueSymbolsStatus={isValidUniqueSymbols}\n requiredCharacterClasses={passwordConfigs?.requiredCharacterClasses}\n onValue={handleSetSignUpPasswordValue}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n onBlur={onBlurPassword}\n >\n {requireRetypePassword ? (\n <div className=\"auth-sign-up-form__form__confirm-wrapper\">\n <InputPassword\n className=\"auth-sign-up-form__form__field auth-sign-up-form__form__field--confirm-password\"\n autoComplete=\"confirmPassword\"\n name=\"confirmPasswordField\"\n placeholder={translations.confirmPasswordPlaceholder}\n floatingLabel={translations.confirmPasswordFloatingLabel}\n errorMessage={confirmPasswordMessage}\n defaultValue={confirmPassword}\n onValue={handleConfirmPasswordChange}\n onBlur={onBlurConfirmPassword}\n />\n </div>\n ) : null}\n\n {shouldShowPersistLoginCheckbox ? (\n <div\n className={'auth-sign-up-form__automatic-login'}\n data-testid=\"automaticLogin\"\n >\n <Field>\n <Checkbox\n name=\"\"\n placeholder={translations.keepMeLoggedText}\n label={translations.keepMeLoggedText}\n checked={isKeepMeLogged}\n onChange={onKeepMeLoggedChange}\n />\n </Field>\n </div>\n ) : null}\n </InputPassword>\n\n <Slot\n name=\"PrivacyPolicyConsent\"\n data-testid={'privacyPolicyConsent'}\n slot={slots?.PrivacyPolicyConsent}\n key={'privacyPolicyConsent'}\n />\n\n <div className=\"auth-sign-up-form-buttons\">\n <Button\n className=\"auth-sign-up-form-buttons--signin\"\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n enableLoader={false}\n onClick={signInButton}\n />\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n <div id=\"createCustomerV2\" />\n </div>\n );\n};\n"],"names":["applyDefaultValuesToFields","fields","defaultValues","el","defaultValue","_a","code","useGetAttributesForm","inputsDefaultValueSet","fieldsConfigForApiVersion1","apiVersion2","fieldsListConfigs","setFieldsListConfigs","useState","useEffect","response","getAttributesForm","fieldsWithDefaultValues","transformAttributesFields","simplifyTransformAttributesForm","DEFAULT_SIGN_UP_FIELDS","transformFieldsConfigForApiVersion1","defaultFieldsWithDefaultValues","element","mergeFormObjects","input","baseKeys","newInputs","convertKeysCase","result","customAttributes","key","useSignUpForm","requireRetypePassword","addressesData","translations","isEmailConfirmationRequired","passwordConfigs","isAutoSignInEnabled","routeRedirectOnSignIn","routeSignIn","onErrorCallback","onSuccessCallback","setActiveComponent","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","showPasswordErrorMessage","setShowPasswordErrorMessage","confirmPassword","setConfirmPassword","confirmPasswordMessage","setConfirmPasswordMessage","userEmail","setUserEmail","showEmailConfirmationForm","setShowEmailConfirmationForm","isSuccessful","setIsSuccessful","signUpPasswordValue","setSignUpPasswordValue","isClickSubmit","setIsClickSubmit","isLoading","setIsLoading","isKeepMeLogged","setIsKeepMeLogged","onBlurPassword","useCallback","event","value","onBlurConfirmPassword","handleConfirmPasswordChange","onKeepMeLoggedChange","target","signInButton","checkIsFunction","handleSetSignUpPasswordValue","handleHideEmailConfirmationForm","calledLoadingAndClick","onInvalidFormSubmit","isValid","arePasswordsFilled","arePasswordsMismatched","handleErrors","handleRetypePasswordErrors","focusOnEmptyPasswordField","confirmPasswordField","formValues","getFormValues","email","password","requiredCharacterClasses","requiredPasswordLength","validationUniqueSymbolsPassword","formData","createCustomer","errors","_b","createCustomerUserName","publishEvents","EventsList","_c","loginResponse","getCustomerToken","address","createCustomerAddress","error","SignUpForm","formSize","hideCloseBtnOnEmailConfirmation","slots","useCustomTranslations","useGetStoreConfigs","inLineAlertProps","useInLineAlert","onSubmitSignUp","isValidUniqueSymbols","defaultLengthMessage","usePasswordValidationMessage","validationPasswordMessage","useMemo","shouldShowPersistLoginCheckbox","jsx","SkeletonLoader","Slot","EmailConfirmationForm","jsxs","classes","Header","InLineAlert","Form","InputPassword","Field","Checkbox","Button"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkeletonLoader.js","sources":["/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/SignUpSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/SignInSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/ResetPasswordSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/SkeletonLoader.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const SignUpSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"medium\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const SignInSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const ResetPasswordSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useMemo } from 'preact/hooks';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { SkeletonLoaderProps } from '@/auth/types';\nimport {\n SignUpSkeleton,\n SignInSkeleton,\n ResetPasswordSkeleton,\n} from './Skeletons';\n\nexport const SkeletonLoader: Container<SkeletonLoaderProps> = ({\n activeSkeleton,\n}) => {\n const renderSkeleton = useMemo(\n () => ({\n signInForm: <SignInSkeleton />,\n signUpForm: <SignUpSkeleton />,\n resetPasswordForm: <ResetPasswordSkeleton />,\n }),\n []\n );\n\n return <>{renderSkeleton[activeSkeleton]}</>;\n};\n"],"names":["SignUpSkeleton","Skeleton","jsx","SkeletonRow","SignInSkeleton","ResetPasswordSkeleton","SkeletonLoader","activeSkeleton","renderSkeleton","useMemo","Fragment"],"mappings":"qNAmBO,MAAMA,EAAiB,MAEzBC,
|
|
1
|
+
{"version":3,"file":"SkeletonLoader.js","sources":["/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/SignUpSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/SignInSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/ResetPasswordSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/SkeletonLoader.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const SignUpSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"medium\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const SignInSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const ResetPasswordSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useMemo } from 'preact/hooks';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { SkeletonLoaderProps } from '@/auth/types';\nimport {\n SignUpSkeleton,\n SignInSkeleton,\n ResetPasswordSkeleton,\n} from './Skeletons';\n\nexport const SkeletonLoader: Container<SkeletonLoaderProps> = ({\n activeSkeleton,\n}) => {\n const renderSkeleton = useMemo(\n () => ({\n signInForm: <SignInSkeleton />,\n signUpForm: <SignUpSkeleton />,\n resetPasswordForm: <ResetPasswordSkeleton />,\n }),\n []\n );\n\n return <>{renderSkeleton[activeSkeleton]}</>;\n};\n"],"names":["SignUpSkeleton","Skeleton","jsx","SkeletonRow","SignInSkeleton","ResetPasswordSkeleton","SkeletonLoader","activeSkeleton","renderSkeleton","useMemo","Fragment"],"mappings":"qNAmBO,MAAMA,EAAiB,MAEzBC,EAAA,CACC,SAAA,CAAAC,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EACN,IACHD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,CACT,EACF,ECvCSC,EAAiB,MAEzBH,EAAA,CACC,SAAA,CAAAC,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EACN,IACHD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,CACT,EACF,ECvBSE,EAAwB,MAEhCJ,EAAA,CACC,SAAA,CAAAC,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EACN,IACHD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,CACT,EACF,EChBSG,EAAiD,CAAC,CAC7D,eAAAC,CACF,IAAM,CACJ,MAAMC,EAAiBC,EACrB,KAAO,CACL,aAAaL,EAAA,EAAe,EAC5B,aAAaJ,EAAA,EAAe,EAC5B,oBAAoBK,EAAA,CAAA,CAAsB,CAAA,GAE5C,CAAA,CAAC,EAGH,OAAOH,EAAAQ,EAAA,CAAG,SAAAF,EAAeD,CAAc,EAAE,CAC3C"}
|
package/chunks/acdl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acdl.js","sources":["/@dropins/storefront-auth/src/data/transforms/transform-auth.ts","/@dropins/storefront-auth/src/lib/acdl.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { AccountModel, CustomerModel } from '@/auth/data/models';\n\n/**\n * References:\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signInAEP.ts\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/createAccountAEP.ts\n */\nexport const transformAccount = (data: CustomerModel): AccountModel => {\n return {\n firstName: data.firstName,\n lastName: data.lastName,\n emailAddress: data?.email || '',\n accountId: data?.email || '',\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { transformAccount } from '../data/transforms';\n\nconst ACCOUNT_CONTEXT = 'accountContext';\nconst CHANNEL_CONTEXT = 'channelContext';\n\nenum EventsList {\n CREATE_ACCOUNT_EVENT = 'create-account',\n SIGN_IN = 'sign-in',\n SIGN_OUT = 'sign-out',\n}\n\nconst events = {\n // Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/createAccountAEP.ts\n CREATE_ACCOUNT: EventsList.CREATE_ACCOUNT_EVENT,\n // Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signInAEP.ts\n SIGN_IN: EventsList.SIGN_IN,\n // Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signOutAEP.ts\n SIGN_OUT: EventsList.SIGN_OUT,\n};\n\nexport function getAdobeDataLayer() {\n // @ts-ignore\n window.adobeDataLayer = window.adobeDataLayer || [];\n // @ts-ignore\n return window.adobeDataLayer;\n}\n\n/**\n * Sets a context in the Adobe Client Data Layer (ACDL)\n * Logic based on: https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-sdk/src/Base.ts#L6\n */\nfunction setContext(name: string, data: any) {\n const adobeDataLayer = getAdobeDataLayer();\n\n // Clear existing context\n adobeDataLayer.push({\n [name]: null,\n });\n\n // Set new context\n adobeDataLayer.push({\n [name]: data,\n });\n}\n\n/**\n * Sets channel context for AEP events\n */\nfunction setChannelContext() {\n const channelData = {\n _id: 'https://ns.adobe.com/xdm/channels/web',\n _type: 'https://ns.adobe.com/xdm/channel-types/web',\n };\n\n setContext(CHANNEL_CONTEXT, channelData);\n}\n\n/**\n * Pushes an event to the Adobe Client Data Layer (ACDL)\n * Logic based on: https://github.com/adobe/commerce-events/blob/1973d0ce28471ef190fa06dad6359ffa0ab51db6/packages/storefront-events-sdk/src/Base.ts#L34\n */\nfunction pushEvent(event: string, additionalContext?: any) {\n const adobeDataLayer = getAdobeDataLayer();\n\n adobeDataLayer.push((acdl: any) => {\n const state = acdl.getState ? acdl.getState() : {};\n\n acdl.push({\n event,\n eventInfo: {\n ...state,\n ...additionalContext,\n },\n });\n });\n}\n\n/**\n * References:\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/createAccountAEP.ts\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/utils/aep/account.ts\n */\nfunction createAccountEvent(eventData: any) {\n const accountData = transformAccount(eventData);\n\n setContext(ACCOUNT_CONTEXT, accountData);\n\n pushEvent(events.CREATE_ACCOUNT);\n}\n\n/**\n * References:\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signInAEP.ts\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/utils/aep/account.ts\n */\nfunction loginEvent(eventData: any) {\n const accountData = transformAccount(eventData);\n\n setContext(ACCOUNT_CONTEXT, accountData);\n\n pushEvent(events.SIGN_IN);\n}\n\n/**\n * Based on storefront-events-collector - sign out event should not contain accountContext\n * Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signOutAEP.ts\n */\nfunction logoutEvent() {\n pushEvent(events.SIGN_OUT);\n}\n\nconst publishEvents = (eventType: string, eventParams: any) => {\n const storeConfigRaw = sessionStorage.getItem('storeConfig');\n const storeConfig = storeConfigRaw ? JSON.parse(storeConfigRaw) : {};\n\n const eventData = { ...storeConfig, ...eventParams };\n\n setChannelContext();\n\n switch (eventType) {\n case EventsList.CREATE_ACCOUNT_EVENT:\n createAccountEvent(eventData);\n break;\n\n case EventsList.SIGN_IN:\n loginEvent(eventData);\n break;\n\n case EventsList.SIGN_OUT:\n logoutEvent();\n break;\n\n default:\n return null;\n }\n};\n\nexport { EventsList, publishEvents, pushEvent };\n"],"names":["transformAccount","data","ACCOUNT_CONTEXT","CHANNEL_CONTEXT","EventsList","events","getAdobeDataLayer","setContext","name","adobeDataLayer","setChannelContext","pushEvent","event","additionalContext","acdl","state","createAccountEvent","eventData","accountData","loginEvent","logoutEvent","publishEvents","eventType","eventParams","storeConfigRaw"],"mappings":"
|
|
1
|
+
{"version":3,"file":"acdl.js","sources":["/@dropins/storefront-auth/src/data/transforms/transform-auth.ts","/@dropins/storefront-auth/src/lib/acdl.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { AccountModel, CustomerModel } from '@/auth/data/models';\n\n/**\n * References:\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signInAEP.ts\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/createAccountAEP.ts\n */\nexport const transformAccount = (data: CustomerModel): AccountModel => {\n return {\n firstName: data.firstName,\n lastName: data.lastName,\n emailAddress: data?.email || '',\n accountId: data?.email || '',\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { transformAccount } from '../data/transforms';\n\nconst ACCOUNT_CONTEXT = 'accountContext';\nconst CHANNEL_CONTEXT = 'channelContext';\n\nenum EventsList {\n CREATE_ACCOUNT_EVENT = 'create-account',\n SIGN_IN = 'sign-in',\n SIGN_OUT = 'sign-out',\n}\n\nconst events = {\n // Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/createAccountAEP.ts\n CREATE_ACCOUNT: EventsList.CREATE_ACCOUNT_EVENT,\n // Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signInAEP.ts\n SIGN_IN: EventsList.SIGN_IN,\n // Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signOutAEP.ts\n SIGN_OUT: EventsList.SIGN_OUT,\n};\n\nexport function getAdobeDataLayer() {\n // @ts-ignore\n window.adobeDataLayer = window.adobeDataLayer || [];\n // @ts-ignore\n return window.adobeDataLayer;\n}\n\n/**\n * Sets a context in the Adobe Client Data Layer (ACDL)\n * Logic based on: https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-sdk/src/Base.ts#L6\n */\nfunction setContext(name: string, data: any) {\n const adobeDataLayer = getAdobeDataLayer();\n\n // Clear existing context\n adobeDataLayer.push({\n [name]: null,\n });\n\n // Set new context\n adobeDataLayer.push({\n [name]: data,\n });\n}\n\n/**\n * Sets channel context for AEP events\n */\nfunction setChannelContext() {\n const channelData = {\n _id: 'https://ns.adobe.com/xdm/channels/web',\n _type: 'https://ns.adobe.com/xdm/channel-types/web',\n };\n\n setContext(CHANNEL_CONTEXT, channelData);\n}\n\n/**\n * Pushes an event to the Adobe Client Data Layer (ACDL)\n * Logic based on: https://github.com/adobe/commerce-events/blob/1973d0ce28471ef190fa06dad6359ffa0ab51db6/packages/storefront-events-sdk/src/Base.ts#L34\n */\nfunction pushEvent(event: string, additionalContext?: any) {\n const adobeDataLayer = getAdobeDataLayer();\n\n adobeDataLayer.push((acdl: any) => {\n const state = acdl.getState ? acdl.getState() : {};\n\n acdl.push({\n event,\n eventInfo: {\n ...state,\n ...additionalContext,\n },\n });\n });\n}\n\n/**\n * References:\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/createAccountAEP.ts\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/utils/aep/account.ts\n */\nfunction createAccountEvent(eventData: any) {\n const accountData = transformAccount(eventData);\n\n setContext(ACCOUNT_CONTEXT, accountData);\n\n pushEvent(events.CREATE_ACCOUNT);\n}\n\n/**\n * References:\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signInAEP.ts\n * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/utils/aep/account.ts\n */\nfunction loginEvent(eventData: any) {\n const accountData = transformAccount(eventData);\n\n setContext(ACCOUNT_CONTEXT, accountData);\n\n pushEvent(events.SIGN_IN);\n}\n\n/**\n * Based on storefront-events-collector - sign out event should not contain accountContext\n * Reference - https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-collector/src/handlers/account/signOutAEP.ts\n */\nfunction logoutEvent() {\n pushEvent(events.SIGN_OUT);\n}\n\nconst publishEvents = (eventType: string, eventParams: any) => {\n const storeConfigRaw = sessionStorage.getItem('storeConfig');\n const storeConfig = storeConfigRaw ? JSON.parse(storeConfigRaw) : {};\n\n const eventData = { ...storeConfig, ...eventParams };\n\n setChannelContext();\n\n switch (eventType) {\n case EventsList.CREATE_ACCOUNT_EVENT:\n createAccountEvent(eventData);\n break;\n\n case EventsList.SIGN_IN:\n loginEvent(eventData);\n break;\n\n case EventsList.SIGN_OUT:\n logoutEvent();\n break;\n\n default:\n return null;\n }\n};\n\nexport { EventsList, publishEvents, pushEvent };\n"],"names":["transformAccount","data","ACCOUNT_CONTEXT","CHANNEL_CONTEXT","EventsList","events","getAdobeDataLayer","setContext","name","adobeDataLayer","setChannelContext","pushEvent","event","additionalContext","acdl","state","createAccountEvent","eventData","accountData","loginEvent","logoutEvent","publishEvents","eventType","eventParams","storeConfigRaw"],"mappings":"AAwBO,MAAMA,EAAoBC,IACxB,CACL,UAAWA,EAAK,UAChB,SAAUA,EAAK,SACf,cAAcA,GAAA,YAAAA,EAAM,QAAS,GAC7B,WAAWA,GAAA,YAAAA,EAAM,QAAS,EAAA,GCVxBC,EAAkB,iBAClBC,EAAkB,iBAExB,IAAKC,GAAAA,IACHA,EAAA,qBAAuB,iBACvBA,EAAA,QAAU,UACVA,EAAA,SAAW,WAHRA,IAAAA,GAAA,CAAA,CAAA,EAML,MAAMC,EAAS,CAEb,eAAgB,iBAEhB,QAAS,UAET,SAAU,UACZ,EAEO,SAASC,GAAoB,CAElC,cAAO,eAAiB,OAAO,gBAAkB,CAAA,EAE1C,OAAO,cAChB,CAMA,SAASC,EAAWC,EAAcP,EAAW,CAC3C,MAAMQ,EAAiBH,EAAA,EAGvBG,EAAe,KAAK,CAClB,CAACD,CAAI,EAAG,IAAA,CACT,EAGDC,EAAe,KAAK,CAClB,CAACD,CAAI,EAAGP,CAAA,CACT,CACH,CAKA,SAASS,GAAoB,CAM3BH,EAAWJ,EALS,CAClB,IAAK,wCACL,MAAO,4CAAA,CAG8B,CACzC,CAMA,SAASQ,EAAUC,EAAeC,EAAyB,CAClCP,EAAA,EAER,KAAMQ,GAAc,CACjC,MAAMC,EAAQD,EAAK,SAAWA,EAAK,SAAA,EAAa,CAAA,EAEhDA,EAAK,KAAK,CACR,MAAAF,EACA,UAAW,CACT,GAAGG,EACH,GAAGF,CAAA,CACL,CACD,CACH,CAAC,CACH,CAOA,SAASG,EAAmBC,EAAgB,CAC1C,MAAMC,EAAclB,EAAiBiB,CAAS,EAE9CV,EAAWL,EAAiBgB,CAAW,EAEvCP,EAAUN,EAAO,cAAc,CACjC,CAOA,SAASc,EAAWF,EAAgB,CAClC,MAAMC,EAAclB,EAAiBiB,CAAS,EAE9CV,EAAWL,EAAiBgB,CAAW,EAEvCP,EAAUN,EAAO,OAAO,CAC1B,CAMA,SAASe,GAAc,CACrBT,EAAUN,EAAO,QAAQ,CAC3B,CAEA,MAAMgB,EAAgB,CAACC,EAAmBC,IAAqB,CAC7D,MAAMC,EAAiB,eAAe,QAAQ,aAAa,EAGrDP,EAAY,CAAE,GAFAO,EAAiB,KAAK,MAAMA,CAAc,EAAI,CAAA,EAE9B,GAAGD,CAAA,EAIvC,OAFAb,EAAA,EAEQY,EAAA,CACN,IAAK,iBACHN,EAAmBC,CAAS,EAC5B,MAEF,IAAK,UACHE,EAAWF,CAAS,EACpB,MAEF,IAAK,WACHG,EAAA,EACA,MAEF,QACE,OAAO,IAAA,CAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmEmail.js","sources":["/@dropins/storefront-auth/src/api/confirmEmail/graphql/confirmEmail.graphql.ts","/@dropins/storefront-auth/src/api/confirmEmail/confirmEmail.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CONFIRM_EMAIL = /* GraphQL */ `\n mutation CONFIRM_EMAIL($email: String!, $confirmation_key: String!) {\n confirmEmail(\n input: { email: $email, confirmation_key: $confirmation_key }\n ) {\n customer {\n email\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { confirmEmailResponse, confirmEmailProps } from '@/auth/types';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { CONFIRM_EMAIL } from './graphql/confirmEmail.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\n\nexport const confirmEmail = async ({\n customerEmail,\n customerConfirmationKey,\n}: confirmEmailProps): Promise<confirmEmailResponse | undefined> => {\n return await fetchGraphQl(CONFIRM_EMAIL, {\n method: 'POST',\n variables: {\n email: customerEmail,\n confirmation_key: customerConfirmationKey,\n },\n }).catch(handleNetworkError);\n};\n"],"names":["CONFIRM_EMAIL","confirmEmail","customerEmail","customerConfirmationKey","fetchGraphQl","handleNetworkError"],"mappings":"
|
|
1
|
+
{"version":3,"file":"confirmEmail.js","sources":["/@dropins/storefront-auth/src/api/confirmEmail/graphql/confirmEmail.graphql.ts","/@dropins/storefront-auth/src/api/confirmEmail/confirmEmail.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CONFIRM_EMAIL = /* GraphQL */ `\n mutation CONFIRM_EMAIL($email: String!, $confirmation_key: String!) {\n confirmEmail(\n input: { email: $email, confirmation_key: $confirmation_key }\n ) {\n customer {\n email\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { confirmEmailResponse, confirmEmailProps } from '@/auth/types';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { CONFIRM_EMAIL } from './graphql/confirmEmail.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\n\nexport const confirmEmail = async ({\n customerEmail,\n customerConfirmationKey,\n}: confirmEmailProps): Promise<confirmEmailResponse | undefined> => {\n return await fetchGraphQl(CONFIRM_EMAIL, {\n method: 'POST',\n variables: {\n email: customerEmail,\n confirmation_key: customerConfirmationKey,\n },\n }).catch(handleNetworkError);\n};\n"],"names":["CONFIRM_EMAIL","confirmEmail","customerEmail","customerConfirmationKey","fetchGraphQl","handleNetworkError"],"mappings":"8CAiBO,MAAMA,EAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECK9BC,EAAe,MAAO,CACjC,cAAAC,EACA,wBAAAC,CACF,IACS,MAAMC,EAAaJ,EAAe,CACvC,OAAQ,OACR,UAAW,CACT,MAAOE,EACP,iBAAkBC,CAAA,CACpB,CACD,EAAE,MAAME,CAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCustomerAddress.js","sources":["/@dropins/storefront-auth/src/api/createCustomer/graphql/createCustomer.graphql.ts","/@dropins/storefront-auth/src/api/createCustomer/graphql/createCustomerV2.graphql.ts","/@dropins/storefront-auth/src/data/transforms/transform-create-customer.tsx","/@dropins/storefront-auth/src/lib/transformDobForm.ts","/@dropins/storefront-auth/src/api/createCustomer/createCustomer.ts","/@dropins/storefront-auth/src/api/getAttributesForm/graphql/getAttributesForm.graphql.ts","/@dropins/storefront-auth/src/api/getAttributesForm/getAttributesForm.ts","/@dropins/storefront-auth/src/api/createCustomerAddress/graphql/createCustomerAddress.graphql.ts","/@dropins/storefront-auth/src/api/createCustomerAddress/createCustomerAddress.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CUSTOMER_INFORMATION_FRAGMENT } from '@/auth/api/fragments';\n\nexport const CREATE_CUSTOMER = /* GraphQL */ `\n mutation CREATE_CUSTOMER($input: CustomerInput!) {\n createCustomer(input: $input) {\n customer {\n ...CUSTOMER_INFORMATION_FRAGMENT\n }\n }\n }\n ${CUSTOMER_INFORMATION_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CUSTOMER_INFORMATION_FRAGMENT } from '@/auth/api/fragments';\n\nexport const CREATE_CUSTOMER_V2 = /* GraphQL */ `\n mutation CREATE_CUSTOMER_V2($input: CustomerCreateInput!) {\n createCustomerV2(input: $input) {\n customer {\n ...CUSTOMER_INFORMATION_FRAGMENT\n }\n }\n }\n ${CUSTOMER_INFORMATION_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { DataCreateCustomerV2, DataCreateCustomer } from '@/auth/types';\nimport { config } from '@/auth/api';\nimport { merge } from '@adobe-commerce/elsie/lib';\nimport { CustomerModel } from '../models';\n\ntype ApiResponse<T extends boolean> = T extends true\n ? DataCreateCustomerV2\n : DataCreateCustomer;\n\nexport const transformCreateCustomer = <T extends boolean>(\n response: ApiResponse<T>,\n apiVersion2: T\n): CustomerModel => {\n let model: CustomerModel;\n\n if (apiVersion2) {\n const { data } = response as DataCreateCustomerV2;\n\n model = {\n firstName: data?.createCustomerV2?.customer?.firstname ?? '',\n lastName: data?.createCustomerV2?.customer?.lastname ?? '',\n email: data?.createCustomerV2?.customer?.email ?? '',\n customAttributes: data?.createCustomerV2?.custom_attributes ?? [],\n errors: response?.errors ?? [],\n };\n } else {\n const { data } = response as DataCreateCustomer;\n\n model = {\n firstName: data?.createCustomer?.customer?.firstname ?? '',\n lastName: data?.createCustomer?.customer?.lastname ?? '',\n email: data?.createCustomer?.customer?.email ?? '',\n errors: response?.errors ?? [],\n };\n }\n\n return merge(\n model, // default transformer\n config.getConfig().models?.CustomerModel?.transformer?.(response) // custom transformer\n );\n};\n","export const transformDobForm = (\n form: Record<string, any>\n): Record<string, any> => {\n if (!form.dob) return form;\n\n const { dob, ...rest } = form;\n return { ...rest, date_of_birth: dob };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Customer } from '@/auth/types';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { CREATE_CUSTOMER } from './graphql/createCustomer.graphql';\nimport { CREATE_CUSTOMER_V2 } from './graphql/createCustomerV2.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\nimport { setReCaptchaToken } from '@/auth/lib/setReCaptchaToken';\nimport { transformCreateCustomer } from '@/auth/data/transforms';\nimport { CustomerModel } from '@/auth/data/models';\nimport { transformDobForm } from '@/auth/lib/transformDobForm';\n\nexport const createCustomer = async (\n forms: Customer,\n apiVersion2: boolean\n): Promise<CustomerModel> => {\n await setReCaptchaToken();\n\n const response = await fetchGraphQl(\n apiVersion2 ? CREATE_CUSTOMER_V2 : CREATE_CUSTOMER,\n {\n method: 'POST',\n variables: {\n input: {\n ...transformDobForm(forms),\n },\n },\n }\n ).catch(handleNetworkError);\n\n return transformCreateCustomer(response, apiVersion2);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_ATTRIBUTES_FORM = /* GraphQL */ `\n query GET_ATTRIBUTES_FORM($formCode: String!) {\n attributesForm(formCode: $formCode) {\n items {\n code\n default_value\n entity_type\n frontend_class\n frontend_input\n is_required\n is_unique\n label\n options {\n is_default\n label\n value\n }\n ... on CustomerAttributeMetadata {\n multiline_count\n sort_order\n validate_rules {\n name\n value\n }\n }\n }\n errors {\n type\n message\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { GET_ATTRIBUTES_FORM } from './graphql/getAttributesForm.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\nimport { transformAttributesForm } from '@/auth/data/transforms';\nimport { handleFetchError } from '@/auth/lib/fetch-error';\nimport { AttributesFormModel } from '@/auth/data/models';\nimport { GetAttributesFormResponse } from '@/auth/types';\n\nexport const getAttributesForm = async (\n formCode: string\n): Promise<AttributesFormModel[]> => {\n return await fetchGraphQl(GET_ATTRIBUTES_FORM, {\n method: 'GET',\n cache: 'force-cache',\n variables: { formCode },\n })\n .then((response: GetAttributesFormResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n return transformAttributesForm(response);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CREATE_CUSTOMER_ADDRESS = /* GraphQL */ `\n mutation CREATE_CUSTOMER_ADDRESS($input: CustomerAddressInput!) {\n createCustomerAddress(input: $input) {\n firstname\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { AddressFormProps, CreateCustomerAddressResponse } from '@/auth/types';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { CREATE_CUSTOMER_ADDRESS } from './graphql/createCustomerAddress.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\nimport { handleFetchError } from '@/auth/lib/fetch-error';\n\nexport const createCustomerAddress = async (\n address: AddressFormProps\n): Promise<string> => {\n return await fetchGraphQl(CREATE_CUSTOMER_ADDRESS, {\n method: 'POST',\n variables: {\n input: address,\n },\n })\n .then((response: CreateCustomerAddressResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n return response.data.createCustomerAddress.firstname || '';\n })\n .catch(handleNetworkError);\n};\n"],"names":["CREATE_CUSTOMER","CUSTOMER_INFORMATION_FRAGMENT","CREATE_CUSTOMER_V2","transformCreateCustomer","response","apiVersion2","model","data","_b","_a","_d","_c","_f","_e","_g","_i","_h","_k","_j","_m","_l","merge","_p","_o","_n","config","transformDobForm","form","dob","rest","createCustomer","forms","setReCaptchaToken","fetchGraphQl","handleNetworkError","GET_ATTRIBUTES_FORM","getAttributesForm","formCode","handleFetchError","transformAttributesForm","CREATE_CUSTOMER_ADDRESS","createCustomerAddress","address"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createCustomerAddress.js","sources":["/@dropins/storefront-auth/src/api/createCustomer/graphql/createCustomer.graphql.ts","/@dropins/storefront-auth/src/api/createCustomer/graphql/createCustomerV2.graphql.ts","/@dropins/storefront-auth/src/data/transforms/transform-create-customer.tsx","/@dropins/storefront-auth/src/lib/transformDobForm.ts","/@dropins/storefront-auth/src/api/createCustomer/createCustomer.ts","/@dropins/storefront-auth/src/api/getAttributesForm/graphql/getAttributesForm.graphql.ts","/@dropins/storefront-auth/src/api/getAttributesForm/getAttributesForm.ts","/@dropins/storefront-auth/src/api/createCustomerAddress/graphql/createCustomerAddress.graphql.ts","/@dropins/storefront-auth/src/api/createCustomerAddress/createCustomerAddress.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CUSTOMER_INFORMATION_FRAGMENT } from '@/auth/api/fragments';\n\nexport const CREATE_CUSTOMER = /* GraphQL */ `\n mutation CREATE_CUSTOMER($input: CustomerInput!) {\n createCustomer(input: $input) {\n customer {\n ...CUSTOMER_INFORMATION_FRAGMENT\n }\n }\n }\n ${CUSTOMER_INFORMATION_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CUSTOMER_INFORMATION_FRAGMENT } from '@/auth/api/fragments';\n\nexport const CREATE_CUSTOMER_V2 = /* GraphQL */ `\n mutation CREATE_CUSTOMER_V2($input: CustomerCreateInput!) {\n createCustomerV2(input: $input) {\n customer {\n ...CUSTOMER_INFORMATION_FRAGMENT\n }\n }\n }\n ${CUSTOMER_INFORMATION_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { DataCreateCustomerV2, DataCreateCustomer } from '@/auth/types';\nimport { config } from '@/auth/api';\nimport { merge } from '@adobe-commerce/elsie/lib';\nimport { CustomerModel } from '../models';\n\ntype ApiResponse<T extends boolean> = T extends true\n ? DataCreateCustomerV2\n : DataCreateCustomer;\n\nexport const transformCreateCustomer = <T extends boolean>(\n response: ApiResponse<T>,\n apiVersion2: T\n): CustomerModel => {\n let model: CustomerModel;\n\n if (apiVersion2) {\n const { data } = response as DataCreateCustomerV2;\n\n model = {\n firstName: data?.createCustomerV2?.customer?.firstname ?? '',\n lastName: data?.createCustomerV2?.customer?.lastname ?? '',\n email: data?.createCustomerV2?.customer?.email ?? '',\n customAttributes: data?.createCustomerV2?.custom_attributes ?? [],\n errors: response?.errors ?? [],\n };\n } else {\n const { data } = response as DataCreateCustomer;\n\n model = {\n firstName: data?.createCustomer?.customer?.firstname ?? '',\n lastName: data?.createCustomer?.customer?.lastname ?? '',\n email: data?.createCustomer?.customer?.email ?? '',\n errors: response?.errors ?? [],\n };\n }\n\n return merge(\n model, // default transformer\n config.getConfig().models?.CustomerModel?.transformer?.(response) // custom transformer\n );\n};\n","export const transformDobForm = (\n form: Record<string, any>\n): Record<string, any> => {\n if (!form.dob) return form;\n\n const { dob, ...rest } = form;\n return { ...rest, date_of_birth: dob };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Customer } from '@/auth/types';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { CREATE_CUSTOMER } from './graphql/createCustomer.graphql';\nimport { CREATE_CUSTOMER_V2 } from './graphql/createCustomerV2.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\nimport { setReCaptchaToken } from '@/auth/lib/setReCaptchaToken';\nimport { transformCreateCustomer } from '@/auth/data/transforms';\nimport { CustomerModel } from '@/auth/data/models';\nimport { transformDobForm } from '@/auth/lib/transformDobForm';\n\nexport const createCustomer = async (\n forms: Customer,\n apiVersion2: boolean\n): Promise<CustomerModel> => {\n await setReCaptchaToken();\n\n const response = await fetchGraphQl(\n apiVersion2 ? CREATE_CUSTOMER_V2 : CREATE_CUSTOMER,\n {\n method: 'POST',\n variables: {\n input: {\n ...transformDobForm(forms),\n },\n },\n }\n ).catch(handleNetworkError);\n\n return transformCreateCustomer(response, apiVersion2);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_ATTRIBUTES_FORM = /* GraphQL */ `\n query GET_ATTRIBUTES_FORM($formCode: String!) {\n attributesForm(formCode: $formCode) {\n items {\n code\n default_value\n entity_type\n frontend_class\n frontend_input\n is_required\n is_unique\n label\n options {\n is_default\n label\n value\n }\n ... on CustomerAttributeMetadata {\n multiline_count\n sort_order\n validate_rules {\n name\n value\n }\n }\n }\n errors {\n type\n message\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { GET_ATTRIBUTES_FORM } from './graphql/getAttributesForm.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\nimport { transformAttributesForm } from '@/auth/data/transforms';\nimport { handleFetchError } from '@/auth/lib/fetch-error';\nimport { AttributesFormModel } from '@/auth/data/models';\nimport { GetAttributesFormResponse } from '@/auth/types';\n\nexport const getAttributesForm = async (\n formCode: string\n): Promise<AttributesFormModel[]> => {\n return await fetchGraphQl(GET_ATTRIBUTES_FORM, {\n method: 'GET',\n cache: 'force-cache',\n variables: { formCode },\n })\n .then((response: GetAttributesFormResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n return transformAttributesForm(response);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CREATE_CUSTOMER_ADDRESS = /* GraphQL */ `\n mutation CREATE_CUSTOMER_ADDRESS($input: CustomerAddressInput!) {\n createCustomerAddress(input: $input) {\n firstname\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { AddressFormProps, CreateCustomerAddressResponse } from '@/auth/types';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { CREATE_CUSTOMER_ADDRESS } from './graphql/createCustomerAddress.graphql';\nimport { handleNetworkError } from '@/auth/lib/network-error';\nimport { handleFetchError } from '@/auth/lib/fetch-error';\n\nexport const createCustomerAddress = async (\n address: AddressFormProps\n): Promise<string> => {\n return await fetchGraphQl(CREATE_CUSTOMER_ADDRESS, {\n method: 'POST',\n variables: {\n input: address,\n },\n })\n .then((response: CreateCustomerAddressResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n return response.data.createCustomerAddress.firstname || '';\n })\n .catch(handleNetworkError);\n};\n"],"names":["CREATE_CUSTOMER","CUSTOMER_INFORMATION_FRAGMENT","CREATE_CUSTOMER_V2","transformCreateCustomer","response","apiVersion2","model","data","_b","_a","_d","_c","_f","_e","_g","_i","_h","_k","_j","_m","_l","merge","_p","_o","_n","config","transformDobForm","form","dob","rest","createCustomer","forms","setReCaptchaToken","fetchGraphQl","handleNetworkError","GET_ATTRIBUTES_FORM","getAttributesForm","formCode","handleFetchError","transformAttributesForm","CREATE_CUSTOMER_ADDRESS","createCustomerAddress","address"],"mappings":"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"}
|