{"version":3,"file":"signup-form.js","sources":["../../../src/_api/user.ts","../../../src/_helpers/form-validators.ts","../../../src/assets/scripts/signup-form.entry.ts"],"sourcesContent":["import { getAsync, postAsync } from './_base';\n\nlet payAccountApiUrl: '/Components/Service/UserService.asmx/RequestForPayByAccountNew';\nlet registerApiUrl: '/Components/Service/UserService.asmx/RegisterUserNew';\n\nexport const checkUserExists = (email: string, apiUrl: string) => {\n return postAsync(apiUrl, undefined, `\"${email}\"`, false, false, true);\n};\n\nexport const sendRequestPayByAccount = (data: string, countryCode: string, apiUrl?: string) => {\n return postAsync(apiUrl ?? payAccountApiUrl, undefined, data);\n};\n\nexport const sendRegister = (data: any, countryCode: string, apiUrl?: string) => {\n const formData = new FormData();\n formData.append('jsonRequest', JSON.stringify(data));\n return postAsync(apiUrl ?? registerApiUrl, undefined, formData);\n};\n\nexport const getUserDetail = (apiUrl: string) => {\n return getAsync(apiUrl);\n};\n\nexport const updateUser = (data: any, apiUrl: string) => {\n const formData = new FormData();\n formData.append('jsonRequest', JSON.stringify(data));\n return postAsync(apiUrl, undefined, formData);\n};\n\nexport const sendRequestResetPassword = (email: string, apiUrl: string) => {\n return postAsync(apiUrl, undefined, `\"${email}\"`);\n};\n\nexport const updateNewPassword = (email: string, password: string, confirmation: string, customerNumber: string, apiUrl: string) => {\n return postAsync(apiUrl, undefined, { username: email, password, confirmation, customerNumber });\n};\n","export const validateEmail = (email: string) => {\n const emailReg =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/; // /^([\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4})?$/;\n const emailValue = email.trim();\n\n return emailReg.test(emailValue);\n};\n\nexport const validatePassword = (password: string) => {\n const pswdReg = /^(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%&*]).{8,30}$/;\n\n return pswdReg.test(password);\n};\n\nexport const validatePhone = (phoneNo: string) => {\n const phoneReg = /^\\(?\\+?[0-9]{0,3}\\)?\\d+$/;\n\n return phoneReg.test(phoneNo);\n};\n\nexport const checkIsEuropeCountry = (country?: string) => {\n let vatMemList = window.signupData?.vatMemberStates || 'AT,BE,BG,HR,CY,CZ,DK,EE,FI,FR,DE,GR,HU,IE,IT,LV,LT,LU,MT,MC,NL,PL,PT,RO,SK,SI,ES,SE,GB';\n window.signupData = { ...window.signupData, vatMemberStates: vatMemList };\n\n let { currentCountry, vatMemberStates } = window.signupData;\n if (country && vatMemberStates) return !!vatMemberStates?.toLocaleLowerCase()?.includes(country?.toLocaleLowerCase() ?? '');\n else if (currentCountry && vatMemberStates) return !!vatMemberStates?.toLocaleLowerCase()?.includes(currentCountry?.toLocaleLowerCase() ?? '');\n return false;\n};\n\nexport const checkVATNumberFormat = (vatNumber: string, countryCode: string) => {\n var valid = false;\n var patt;\n\n switch (countryCode) {\n case 'AT':\n patt = new RegExp('^(AT)?U[0-9]{8}$');\n break;\n case 'BE':\n patt = new RegExp('^(BE)?0[0-9]{9}$');\n break;\n case 'BG':\n patt = new RegExp('^(BG)?[0-9]{9,10}$');\n break;\n case 'CY':\n patt = new RegExp('^(CY)?[0-9]{8}L$');\n break;\n case 'CZ':\n patt = new RegExp('^(CZ)?[0-9]{8,10}$');\n break;\n case 'DE':\n patt = new RegExp('^(DE)?[0-9]{9}$');\n break;\n case 'DK':\n patt = new RegExp('^(DK)?[0-9]{8}$');\n break;\n case 'EE':\n patt = new RegExp('^(EE)?[0-9]{9}$');\n break;\n case 'GR':\n patt = new RegExp('^(EL|GR)?[0-9]{9}$');\n break;\n case 'ES':\n patt = new RegExp('^(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]$');\n break;\n case 'FI':\n patt = new RegExp('^(FI)?[0-9]{8}$');\n break;\n case 'FR':\n patt = new RegExp('^(FR)?[0-9A-Z]{2}[0-9]{9}$');\n break;\n case 'GB':\n patt = new RegExp('^(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})$');\n break;\n case 'HU':\n patt = new RegExp('^(HU)?[0-9]{8}$');\n break;\n case 'IE':\n patt = new RegExp('^(IE)?[A-Z0-9]{8,9}$');\n break;\n case 'IT':\n patt = new RegExp('^(IT)?[0-9]{11}$');\n break;\n case 'LT':\n patt = new RegExp('^(LT)?([0-9]{9}|[0-9]{12})$');\n break;\n case 'LU':\n patt = new RegExp('^(LU)?[0-9]{8}$');\n break;\n case 'LV':\n patt = new RegExp('^(LV)?[0-9]{11}$');\n break;\n case 'MT':\n patt = new RegExp('^(MT)?[0-9]{8}$');\n break;\n case 'NL':\n patt = new RegExp('^(NL)?[0-9]{9}B[0-9]{2}$');\n break;\n case 'PL':\n patt = new RegExp('^(PL)?[0-9]{10}$');\n break;\n case 'PT':\n patt = new RegExp('^(PT)?[0-9]{9}$');\n break;\n case 'RO':\n patt = new RegExp('^(RO)?[0-9]{2,10}$');\n break;\n case 'SE':\n patt = new RegExp('^(SE)?[0-9]{12}$');\n break;\n case 'SI':\n patt = new RegExp('^(SI)?[0-9]{8}$');\n break;\n case 'SK':\n patt = new RegExp('^(SK)?[0-9]{10}$');\n break;\n case 'MC':\n //Monaco - Same as France\n patt = new RegExp('^(FR)?[0-9A-Z]{2}[0-9]{9}$');\n break;\n case 'HR':\n //Croatia - 11 digit number (ex. HR12345678901)\n patt = new RegExp('^(HR)?[0-9]{11}$');\n break;\n }\n if (patt !== undefined) {\n valid = patt.test(vatNumber);\n }\n return valid;\n};\n\nexport const runCheck = (checklist: { [key: string]: () => boolean }) => {\n let isValid = true;\n\n Object.entries(checklist).forEach(([_, fn]) => {\n if (!fn()) isValid = false;\n });\n\n return isValid;\n};\n\nconst removeEmpty = (obj: any) => {\n let newObj: any = {};\n Object.keys(obj).forEach((key) => {\n if (obj[key] === Object(obj[key])) newObj[key] = removeEmpty(obj[key]);\n else if (obj[key] !== undefined) newObj[key] = obj[key];\n });\n return newObj;\n};\n\nexport type IgnoreList = ('personal' | 'billingAndDelivery' | 'preferencesAndMembership')[];\n\nexport const getUserData = (params?: { ignoreList?: IgnoreList; registeredUserID?: string; businessPartnerNo?: string; isNewUser?: boolean }) => {\n let { personal, billingAndDelivery, preferencesAndMembership } = window.signupData;\n\n if (params?.ignoreList) {\n if (params.ignoreList.includes('personal')) {\n personal = window.signupData.originalPersonal;\n }\n\n if (params.ignoreList.includes('billingAndDelivery')) {\n billingAndDelivery = window.signupData.originalBillingAndDelivery;\n }\n\n if (params.ignoreList.includes('preferencesAndMembership')) {\n preferencesAndMembership = window.signupData.preferencesAndMembership;\n }\n }\n\n if (!personal || !billingAndDelivery) return;\n\n let { billingDetail, deliveryDetail, deliveryRegion } = billingAndDelivery;\n\n const phoneMobile = (billingDetail.phoneCode ? billingDetail.phoneCode + '-' : '') + billingDetail.phone;\n\n const newCustomer: any = {\n type: 'NewCustomerRO',\n user: {\n email: personal.email,\n title: personal.title,\n type: personal.lastName || personal.firstName ? 'UserRO' : undefined,\n firstName: personal.firstName,\n lastName: personal.lastName,\n businessPartnerNo: params?.businessPartnerNo,\n },\n credentials: {\n type: personal.email ? 'CredentialsRO' : undefined,\n login: personal.email,\n password: personal.password,\n },\n address: {\n phoneMobile: phoneMobile,\n addressLine1: billingDetail.addressLine1,\n type: billingDetail.addressLine1 ? 'AddressRO' : undefined,\n postalCode: billingDetail.postalCode,\n countryCode: billingDetail.country,\n state: billingDetail.state,\n city: billingDetail.city,\n addressLine2: billingDetail.addressLine2,\n firstName: personal.firstName,\n lastName: personal.lastName,\n },\n shippingAddress: {\n type: 'ShippingAddressRO',\n firstName: personal.firstName,\n lastName: personal.lastName,\n addressLine1: deliveryDetail.addressLine1,\n addressLine2: deliveryDetail.addressLine2,\n city: deliveryDetail.city,\n state: deliveryDetail.state,\n postalCode: deliveryDetail.postalCode,\n countryCode: deliveryDetail.country,\n preferredShippingAddress: true,\n phoneMobile: phoneMobile,\n },\n userAttributes: {\n organisationName: preferencesAndMembership?.company,\n positionInOrganisation: preferencesAndMembership?.position,\n industry: preferencesAndMembership?.industry,\n preferredPublisher: preferencesAndMembership?.publisher,\n acceptTermsAndConditions: personal.checkboxIAgree ? 'true' : 'false',\n deliveryRegion: deliveryRegion,\n isAllComms: personal.checkboxPromotions ? 'false' : 'true',\n isMail: billingDetail.isoAlpha,\n isOtherComms: deliveryDetail.isoAlpha,\n isEmail: 'REGION_PLACEHOLDER',\n registeredUserID: params?.registeredUserID,\n cancelledOrder: params?.isNewUser ? '' : undefined,\n },\n customerNo: '00000000',\n companyName: 'Default',\n optin: personal.checkboxPromotions ? 'true' : 'false',\n };\n\n if (checkIsEuropeCountry()) {\n newCustomer.userAttributes.notRegistered = preferencesAndMembership?.haveVat ? 'false' : 'true';\n newCustomer.userAttributes.exempt = preferencesAndMembership?.haveVat ? 'true' : 'false';\n newCustomer.userAttributes.memberCountryCode = window.signupData?.currentCountry;\n newCustomer.userAttributes.verified = preferencesAndMembership?.haveVat ? 'true' : 'false';\n newCustomer.userAttributes.VatNumber = preferencesAndMembership?.haveVat ? preferencesAndMembership.vatNumber : '';\n }\n\n return removeEmpty(newCustomer);\n};\n","import { postLogin } from '@_api/login';\nimport { sendRegister } from '@_api/user';\nimport { getUserData } from '@helpers/form-validators';\n\nconst signUp = {\n init: function () {\n this.buildCustomListener();\n this.setupSubmit();\n },\n\n buildCustomListener: function () {\n window.addEventListener('verifyRegister', this.verifyRegister);\n },\n showModal: function (show: boolean) {\n if (!show) {\n window.currentModalId = undefined;\n }\n\n const modalDiv = document?.querySelector('.saig-o-modal');\n show ? modalDiv?.classList.remove('display-none') : modalDiv?.classList.add('display-none');\n },\n verifyRegister: () => {\n const registerButton = document.querySelector('.saig-o-signup-form__section-register button') as HTMLButtonElement;\n const disableCapcha = registerButton.dataset.disableCapcha;\n const { billingAndDelivery, personal, preferencesAndMembership, capchaVerify } = window.signupFormStatus;\n\n if (billingAndDelivery && personal && preferencesAndMembership && (disableCapcha || capchaVerify)) {\n registerButton.disabled = false;\n } else {\n registerButton.disabled = true;\n }\n },\n\n showMessage: (type: 'success' | 'fail' | 'error') => {\n const message = document.querySelector('.saig-o-signup-form__message');\n if (message) {\n if (type === 'success') {\n message.classList.add('success');\n } else {\n message.classList.remove('success');\n }\n\n message.innerText = message.dataset[type] ?? '';\n }\n },\n\n setupSubmit: function () {\n const registerButton = document.querySelector('.saig-o-signup-form__section-register button') as HTMLButtonElement;\n const dataAttrAPI = document.querySelector('.saig-o-sign-in__inner');\n\n registerButton.addEventListener('click', (e) => {\n e.preventDefault();\n registerButton.disabled = true;\n const url = registerButton.dataset.registerUrl;\n const data = getUserData({ isNewUser: true });\n try {\n sendRegister(data, window.signupData.currentCountry ?? '', url)\n .then((data) => {\n if (data === true) {\n this.showMessage('success');\n\n const { email, password } = window.signupData.personal || {};\n\n postLogin(email, password, dataAttrAPI?.dataset.apiUrl ?? '')\n .then((response) => {\n if (response == 'Success') {\n const redirecturl = window.localStorage.getItem(\"redirectAfterRegister\");\n\n if (redirecturl) {\n window.localStorage.removeItem(\"redirectAfterRegister\");\n setTimeout(() => {\n window.location.href = redirecturl ?? '';\n }, 2000);\n }\n else {\n setTimeout(() => {\n window.location.href = dataAttrAPI?.dataset?.redirectUrl ?? '';\n }, 2000);\n }\n } else {\n this.showMessage('error');\n }\n })\n .catch((error) => {\n this.showMessage('error');\n });\n } else {\n }\n })\n .catch((err) => {\n this.showMessage('fail');\n });\n } catch {\n this.showMessage('error');\n }\n });\n },\n};\n\nsignUp.init();\n\nexport { signUp };\n"],"names":["registerApiUrl","sendRegister","data","countryCode","apiUrl","formData","postAsync","checkIsEuropeCountry","country","vatMemList","_a","currentCountry","vatMemberStates","_b","_c","removeEmpty","obj","newObj","key","getUserData","params","personal","billingAndDelivery","preferencesAndMembership","billingDetail","deliveryDetail","deliveryRegion","phoneMobile","newCustomer","signUp","show","modalDiv","registerButton","disableCapcha","capchaVerify","type","message","dataAttrAPI","e","url","email","password","postLogin","response","redirecturl","error","err"],"mappings":"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"}