{"version":3,"file":"static/js/afaf97867d4480a1c08a.bundle.js","mappings":"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","sources":["webpack://jansen-adventureworks/./src/modules/business-sign-up/components/sign-up-button.tsx?6d02","webpack://jansen-adventureworks/./src/modules/business-sign-up/components/sign-up-error.tsx?88d7","webpack://jansen-adventureworks/./src/modules/business-sign-up/components/sign-up-input.tsx?8d0b","webpack://jansen-adventureworks/./src/modules/business-sign-up/components/sign-up-label.tsx?fc00","webpack://jansen-adventureworks/./src/modules/business-sign-up/business-sign-up.tsx?c6ac","webpack://jansen-adventureworks/./src/modules/business-sign-up/components/sign-up-captcha.tsx?bd73","webpack://jansen-adventureworks/./src/modules/business-sign-up/business-sign-up.view.tsx?17ef","webpack://jansen-adventureworks/./lib/business-sign-up/module-registration.js?f4d4","webpack://jansen-adventureworks/./src/modules/business-sign-up/business-sign-up.view.tsx?e2f8","webpack://jansen-adventureworks/external var \"React\"?0d3b","webpack://jansen-adventureworks/external var \"ReactDOM\"?853b","webpack://jansen-adventureworks/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.match.js?f0c8"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IBusinessSignUpButtonProps {\r\n id?: string;\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n link?: string;\r\n telemetryContent: ITelemetryContent;\r\n onClick?(event: React.MouseEvent): void;\r\n}\r\n\r\nexport const SignUpButton: React.FC = ({\r\n id,\r\n className,\r\n text,\r\n ariaLabel,\r\n telemetryContent,\r\n disabled,\r\n link,\r\n onClick\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent, text);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nexport default SignUpButton;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IBusinessSignUpErrorProps {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\r\n const errorClassName = `${className}__${type}-error`;\r\n\r\n return (\r\n \r\n

{message}

\r\n \r\n );\r\n};\r\n\r\nexport default SignUpError;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { InputType } from '../business-sign-up';\r\n\r\nexport interface IBusinessSignUpInputProps {\r\n id?: string;\r\n type: InputType;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n maxLength?: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n onChange?(event: React.ChangeEvent): void;\r\n}\r\n\r\nexport interface IBusinessSignUpInput {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nconst GetMaxLength = (maxLength?: string): number | undefined => {\r\n if (maxLength) {\r\n const parsedMaxLength = Number.parseInt(maxLength, 10);\r\n if (!isNaN(parsedMaxLength)) {\r\n return parsedMaxLength;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const SignUpInput: React.FC = ({\r\n id,\r\n type,\r\n value,\r\n pattern,\r\n className,\r\n maxLength,\r\n isRequired,\r\n onChange,\r\n fieldReference\r\n}) => {\r\n if (type === InputType.TextArea) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default SignUpInput;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface IBusinessSignUpLabelProps {\r\n id: string;\r\n forId: string;\r\n className: string;\r\n text: string;\r\n}\r\n\r\nexport const SignUpLabel: React.FC = ({ id, forId, className, text }) => (\r\n \r\n);\r\n\r\nexport default SignUpLabel;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { ContentEditableEvent, getUrlSync, RichTextComponent, Text } from '@msdyn365-commerce/core';\r\nimport { Address, BusinessPartnerProspect, CommerceProperty } from '@msdyn365-commerce/retail-proxy';\r\nimport { createProspectAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IBusinessSignUpConfig, IBusinessSignUpProps, IBusinessSignUpResources } from './business-sign-up.props.autogenerated';\r\nimport { SignUpButton, SignUpError, SignUpInput, SignUpLabel } from './components';\r\nimport { IBusinessSignUpRadioButtonOptionProps } from './components/sign-up-radio-button';\r\n\r\nexport interface IBusinessSignUpExtendedProps extends IBusinessSignUpProps {\r\n formItems?: IFormItem[];\r\n}\r\n\r\nexport interface BusinessPartnerProspectExtended extends BusinessPartnerProspect {\r\n VatNumber?: string;\r\n}\r\n\r\nexport interface IBusinessSignUpItem {\r\n wrapper: INodeProps;\r\n isAddressInput?: boolean;\r\n id: string;\r\n label: React.ReactNode;\r\n errorMessage: React.ReactNode;\r\n input?: React.ReactNode;\r\n}\r\n\r\nexport interface IBusinessState {\r\n isReady: boolean;\r\n formItems: IFormItem[];\r\n addressHasErrors: boolean;\r\n showAddressErrors: boolean;\r\n hasSubmitErrors: boolean;\r\n captchaReady: boolean;\r\n}\r\n\r\nexport interface IBusinessSignUpLocalAccount {\r\n FormWrapper: INodeProps;\r\n items: IBusinessSignUpItem[];\r\n buttons: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n disclaimer: React.ReactNode;\r\n}\r\n\r\nexport interface IBusinessSignUpViewProps {\r\n className: string;\r\n businessSignUp: IModuleProps;\r\n ContainerWrapper: INodeProps;\r\n heading: React.ReactNode;\r\n businessSignUpForm: IBusinessSignUpLocalAccount;\r\n formItems: IFormItem[];\r\n captchaReady: boolean;\r\n setCaptchaReady: (isReady: boolean) => void;\r\n}\r\n\r\nexport interface IFormItem {\r\n id: string;\r\n type: InputType;\r\n label: string;\r\n value: string;\r\n maxChars?: string;\r\n isRequired: boolean;\r\n pattern?: string;\r\n address?: Address;\r\n customClass?: string;\r\n fieldReference?: React.RefObject;\r\n radioButtonOptions?: IBusinessSignUpRadioButtonOptionProps[];\r\n radioButtonGroupClass?: string;\r\n}\r\n\r\nexport enum InputType {\r\n // eslint-disable-next-line @typescript-eslint/no-shadow -- Text enum doesn't override the imported Text\r\n Text = 'text',\r\n Address = 'address',\r\n Email = 'email',\r\n TextArea = 'textarea',\r\n RadioButton = 'radiobutton'\r\n}\r\n\r\nexport enum InputID {\r\n FirstName = 'FirstName',\r\n LastName = 'LastName',\r\n Email = 'CompanyEmail',\r\n CompanyName = 'CompanyName',\r\n Address = 'CompanyAddress',\r\n JobTitle = 'JobTitle',\r\n Department = 'Department',\r\n VatId = 'VatId'\r\n}\r\n\r\nenum RegistrationFields {\r\n countryIso = 'company_addressthreeletterisoregionname',\r\n vatLabel = 'VatId_label',\r\n cheCountry = 'CHE'\r\n}\r\n\r\nexport const renderInputSection = (\r\n inputs: IFormItem[],\r\n className: string,\r\n needToReset: boolean,\r\n onInputChange: (event: React.ChangeEvent) => void,\r\n showErrors: boolean,\r\n resources: IBusinessSignUpResources,\r\n addressForm?: React.ReactNode,\r\n updateAddress?: (errors: boolean, currAddress?: Address) => void\r\n): IBusinessSignUpItem[] => {\r\n return inputs.map((element, index) => {\r\n const { id, type, label, maxChars, isRequired, pattern, customClass, value, fieldReference } = element;\r\n const baseSignUpItem: IBusinessSignUpItem = {\r\n wrapper: {\r\n className: classnames(className, `${className}-${id}`, customClass)\r\n },\r\n id,\r\n label: ,\r\n errorMessage: \r\n };\r\n\r\n if (type === InputType.Address) {\r\n if (addressForm) {\r\n baseSignUpItem.isAddressInput = true;\r\n baseSignUpItem.input = (\r\n <>\r\n {React.cloneElement(addressForm as React.ReactElement, {\r\n updateForm: updateAddress,\r\n hasError: showErrors,\r\n isRequired: isRequired === undefined ? false : isRequired,\r\n resetAddress: needToReset\r\n })}\r\n \r\n );\r\n } else {\r\n // If the address slot is not filled, remove this input from the form\r\n inputs.splice(index, 1);\r\n }\r\n } else {\r\n let requiredCheck = isRequired;\r\n if (typeof window !== 'undefined' && document) {\r\n const countrySelect = document.getElementById(RegistrationFields.countryIso) as HTMLSelectElement;\r\n if (countrySelect) {\r\n const vatLabel = document.getElementById(RegistrationFields.vatLabel);\r\n if (id === InputID.VatId && countrySelect.value === RegistrationFields.cheCountry && vatLabel) {\r\n requiredCheck = false;\r\n vatLabel.innerHTML = `${resources.vatNumberLabel}`;\r\n } else if (vatLabel) {\r\n vatLabel.innerHTML = `${resources.vatNumberLabel} *`;\r\n }\r\n }\r\n }\r\n\r\n baseSignUpItem.input = (\r\n \r\n );\r\n }\r\n\r\n return baseSignUpItem;\r\n });\r\n};\r\n\r\n/**\r\n *\r\n * Business Request Form Modules\r\n * Form that a business can use to submit a request to become a partner with Microsoft.\r\n * @extends {React.Component>}\r\n */\r\nclass BusinessSignUp extends React.Component {\r\n private readonly moduleClassName: string = 'ms-business-sign-up';\r\n\r\n // Used as default data\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n public BusinessSignUpDefaultInputs: IFormItem[] = [\r\n {\r\n id: InputID.FirstName,\r\n type: InputType.Text,\r\n label: this.props.resources.firstNameLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-25'\r\n },\r\n {\r\n id: InputID.LastName,\r\n type: InputType.Text,\r\n label: this.props.resources.lastNameLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-25'\r\n },\r\n {\r\n id: InputID.Email,\r\n type: InputType.Email,\r\n label: this.props.resources.emailAddressLabel,\r\n value: '',\r\n isRequired: true,\r\n pattern: EmailRegex.defaultRegex.source,\r\n customClass: 'width-50'\r\n },\r\n {\r\n id: InputID.CompanyName,\r\n type: InputType.Text,\r\n label: this.props.resources.companyLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50'\r\n },\r\n {\r\n id: InputID.Department,\r\n type: InputType.Text,\r\n label: this.props.resources.departmentLabel,\r\n value: '',\r\n isRequired: false,\r\n customClass: 'width-50'\r\n },\r\n {\r\n id: InputID.JobTitle,\r\n type: InputType.Text,\r\n label: this.props.resources.jobTitleLabel,\r\n value: '',\r\n isRequired: false,\r\n customClass: 'width-50'\r\n },\r\n {\r\n id: InputID.Address,\r\n type: InputType.Address,\r\n label: this.props.resources.companyAddressLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100'\r\n },\r\n {\r\n id: InputID.VatId,\r\n type: InputType.Text,\r\n label: this.props.resources.vatNumberLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100'\r\n }\r\n ];\r\n\r\n private readonly formChildReference: React.RefObject = React.createRef();\r\n\r\n private needsToReset: boolean = false;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n constructor(props: IBusinessSignUpExtendedProps) {\r\n super(props);\r\n\r\n this.state = {\r\n isReady: false,\r\n formItems: this.props.formItems || this._addedReference(),\r\n addressHasErrors: false,\r\n showAddressErrors: false,\r\n hasSubmitErrors: false,\r\n captchaReady: false\r\n };\r\n\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.formChildReference.current?.focus();\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IBusinessSignUpExtendedProps, nextState: IBusinessState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n const { formItems } = this.state;\r\n const { className, heading } = config;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n businessSignUp: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName, className),\r\n captchaReady: this.state.captchaReady\r\n },\r\n setCaptchaReady: this.setCaptchaReady,\r\n ContainerWrapper: {\r\n className: `${this.moduleClassName}__container`\r\n },\r\n heading: (\r\n \r\n ),\r\n businessSignUpForm: this._renderForm(),\r\n formItems\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle the heading change event.\r\n * @param event - Content Editable Event.\r\n */\r\n public handleHeadingChange = (event: ContentEditableEvent): void => {\r\n this.props.config.heading.text = event.target.value;\r\n };\r\n\r\n private _renderForm(): IBusinessSignUpLocalAccount {\r\n const { config, resources, slots } = this.props;\r\n const { showAddressErrors, hasSubmitErrors, isReady, formItems } = this.state;\r\n const {\r\n signUpButtonArialabel,\r\n signUpButtonText,\r\n cancelButtonArialabel,\r\n cancelButtonText,\r\n errorMessage,\r\n partialAddressErrorMessage\r\n } = resources;\r\n const addressForm = (slots && slots.addressSlot && slots.addressSlot.length > 0 && slots.addressSlot[0]) || undefined;\r\n\r\n const form = {\r\n FormWrapper: {\r\n className: `${this.moduleClassName}__form `\r\n },\r\n items: renderInputSection(\r\n formItems,\r\n `${this.moduleClassName}__form-item`,\r\n this.needsToReset,\r\n this._onInputChange.bind(this),\r\n showAddressErrors,\r\n resources,\r\n addressForm,\r\n this._onAddressChange\r\n ),\r\n buttons: [\r\n ,\r\n \r\n ],\r\n errorMessage: [\r\n hasSubmitErrors && ,\r\n showAddressErrors && (\r\n \r\n )\r\n ],\r\n disclaimer: config.disclaimer && (\r\n \r\n )\r\n };\r\n\r\n if (this.needsToReset) {\r\n this.needsToReset = false;\r\n }\r\n\r\n return form;\r\n }\r\n\r\n private _onInputChange(event: React.ChangeEvent): void {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.id === event.target.id) {\r\n item.value = event.target.value;\r\n }\r\n });\r\n\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n }\r\n\r\n private _addedReference(): IFormItem[] {\r\n const newFormFields = this.BusinessSignUpDefaultInputs;\r\n newFormFields[0].fieldReference = this.formChildReference;\r\n return newFormFields;\r\n }\r\n\r\n private readonly _onAddressChange = (errors: boolean, currAddress?: any): void => {\r\n // Find address item\r\n const newForm = this.state.formItems;\r\n const addressItem = newForm.find(item => {\r\n return item.type === InputType.Address;\r\n });\r\n\r\n // If found --> set to currentAddress\r\n if (addressItem) {\r\n addressItem.address = currAddress;\r\n\r\n // Update state with new values and set errors to false if address is not required field\r\n this.setState(\r\n {\r\n formItems: newForm,\r\n addressHasErrors: errors,\r\n showAddressErrors: false\r\n },\r\n () => {\r\n this.setState({ isReady: this._isFormReady() });\r\n }\r\n );\r\n }\r\n };\r\n\r\n private readonly _isFormReady = (): boolean => {\r\n const { formItems } = this.state;\r\n // Strange state behavior -> workaround to check address field\r\n const checkVAT = formItems.find(formItem => {\r\n return formItem.id === InputID.VatId;\r\n });\r\n\r\n const checkAddress = formItems.find(formItems => {\r\n return formItems.id === InputID.Address;\r\n });\r\n\r\n const checkCountry = checkAddress?.address?.ThreeLetterISORegionName;\r\n\r\n if (checkCountry === 'CHE' && checkVAT?.isRequired === true) {\r\n return true;\r\n }\r\n\r\n for (const currentInput of formItems) {\r\n // Will return FALSE if:\r\n // - input field is required\r\n // IF is address AND addressHasErrors === true\r\n // ELSE value is undefined OR empty\r\n // OR\r\n // - pattern provided and value does not match pattern\r\n\r\n if (currentInput.isRequired) {\r\n if (currentInput.type === InputType.Address) {\r\n if (this.state.addressHasErrors) {\r\n return false;\r\n }\r\n } else if (currentInput.value === undefined || currentInput.value === '') {\r\n return false;\r\n }\r\n }\r\n if (currentInput.pattern !== undefined && currentInput.value.match(currentInput.pattern) === null) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n // Define the callback that will be passed to FriendlyCaptcha\r\n private setCaptchaReady = (isReady: boolean) => {\r\n this.setState({ captchaReady: isReady });\r\n };\r\n\r\n private readonly _onSubmit = (event: React.MouseEvent) => {\r\n if (this.state.addressHasErrors) {\r\n this.setState({\r\n showAddressErrors: true\r\n });\r\n\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const { config, context } = this.props;\r\n\r\n if (config.showCaptcha && !this.state.captchaReady) {\r\n event.preventDefault(); // Prevent form submission if captcha is not solved\r\n return;\r\n }\r\n\r\n // Check for matching id and if not empty\r\n const firstName = this._getItem(InputID.FirstName);\r\n const lastName = this._getItem(InputID.LastName);\r\n const companyName = this._getItem(InputID.CompanyName);\r\n const companyEmail = this._getItem(InputID.Email);\r\n const companyAddress = this._getItem(InputID.Address, true);\r\n const jobTitle = this._getItem(InputID.JobTitle);\r\n const department = this._getItem(InputID.Department);\r\n const vatNumber = this._getItem(InputID.VatId);\r\n\r\n // API gets email as part of the address object, but I do not use the email input from the address component, thus we need to copy it over\r\n if (companyEmail && companyEmail.value && companyAddress && companyAddress.address) {\r\n companyAddress.address.Email = companyEmail.value;\r\n }\r\n\r\n const ExtensionProperties: CommerceProperty[] = [\r\n {\r\n Key: 'VatId',\r\n Value: {\r\n StringValue: vatNumber && vatNumber.value\r\n }\r\n }\r\n ];\r\n\r\n const newPartner: BusinessPartnerProspectExtended = {\r\n FirstName: firstName && firstName.value,\r\n LastName: lastName && lastName.value,\r\n CompanyName: companyName && companyName.value,\r\n Address: companyAddress && companyAddress.address && companyAddress.address,\r\n JobTitle: jobTitle && jobTitle.value,\r\n Department: department && department.value,\r\n ProspectTypeValue: 1,\r\n ExtensionProperties: ExtensionProperties\r\n };\r\n\r\n this.setState({\r\n isReady: false\r\n });\r\n\r\n // Create business partner request\r\n createProspectAsync({ callerContext: context.actionContext }, newPartner)\r\n .then(() => {\r\n const successPageURL =\r\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\r\n getUrlSync('home', this.props.context.actionContext) ||\r\n '';\r\n window.location.href = successPageURL;\r\n })\r\n .catch(() => {\r\n this.setState({\r\n hasSubmitErrors: true\r\n });\r\n });\r\n };\r\n\r\n private readonly _onCancel = () => {\r\n // Reset values of the form\r\n const cleanForm = this.state.formItems;\r\n cleanForm.forEach(input => {\r\n input.value = '';\r\n });\r\n\r\n // Set reset flag so address input will get reset on next renderInputSection() call\r\n this.needsToReset = true;\r\n\r\n this.setState({\r\n isReady: false,\r\n formItems: cleanForm,\r\n addressHasErrors: true,\r\n showAddressErrors: false,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n\r\n private readonly _getItem = (id: string, isAddress: boolean = false) => {\r\n if (isAddress) {\r\n return this.state.formItems.find(item => {\r\n return item.id === id && item.address;\r\n });\r\n }\r\n return this.state.formItems.find(item => {\r\n return item.id === id && item.value !== '';\r\n });\r\n };\r\n}\r\n\r\nexport default BusinessSignUp;\r\n","/* eslint-disable react/react-in-jsx-scope */\r\nimport { WidgetInstance } from 'friendly-challenge';\r\nimport React, { useEffect, useRef } from 'react';\r\n\r\nconst FriendlyCaptcha = ({ siteKey, setCaptchaReady }: { siteKey: string; setCaptchaReady: (isValid: boolean) => void }) => {\r\n if (!siteKey) {\r\n console.error('No siteKey provided for FriendlyCaptcha');\r\n return null;\r\n }\r\n const containerRef = useRef(null);\r\n const widgetRef = useRef(null);\r\n\r\n const doneCallback = (solution: any) => {\r\n setCaptchaReady(true);\r\n };\r\n\r\n const errorCallback = (err: any) => {\r\n console.log(err);\r\n setCaptchaReady(false);\r\n };\r\n\r\n useEffect(() => {\r\n if (!widgetRef.current && containerRef.current) {\r\n widgetRef.current = new WidgetInstance(containerRef.current, {\r\n startMode: 'auto',\r\n doneCallback: doneCallback,\r\n errorCallback: errorCallback,\r\n sitekey: siteKey // Ensure sitekey is passed to the widget\r\n });\r\n }\r\n\r\n return () => {\r\n if (widgetRef.current !== null && widgetRef.current !== undefined) {\r\n widgetRef.current.reset();\r\n }\r\n };\r\n }, [siteKey]); // Ensure the effect runs if siteKey changes\r\n\r\n return
;\r\n};\r\n\r\nexport default FriendlyCaptcha;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\r\nimport { IBusinessSignUpProps } from './business-sign-up.props.autogenerated';\r\nimport FriendlyCaptcha from './components/sign-up-captcha';\r\n\r\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\r\n // Hide label and error message if rendering address section\r\n return (\r\n \r\n {!isAddressInput && label}\r\n {!isAddressInput && errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst BusinesSignUpView: React.FC> = props => {\r\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm, config, setCaptchaReady } = props;\r\n\r\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {items &&\r\n items.map((item: IBusinessSignUpItem) => {\r\n return ;\r\n })}\r\n {config.showCaptcha && }\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BusinesSignUpView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['business-sign-up'] = {\n c: () => require('partner/modules/business-sign-up/business-sign-up.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'business-sign-up',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/business-sign-up'\n });\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|business-sign-up|business-sign-up'] = {\n c: () => require('partner/modules/business-sign-up/business-sign-up.view.tsx'),\n cn: '__local__-__local__-business-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|business-account-management|modules|business-sign-up|business-sign-up'] = {\n c: () => require('@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-business-account-management-business-sign-up'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\n\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\n // Hide label and error message if rendering address section\n return (\n \n {!isAddressInput && label}\n {!isAddressInput && errorMessage}\n {input}\n \n );\n};\n\nconst BusinesSignUpView: React.FC = props => {\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\n\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\n\n return (\n \n \n {heading}\n \n {items &&\n items.map((item: IBusinessSignUpItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n \n \n );\n};\n\nexport default BusinesSignUpView;\n","module.exports = React;","module.exports = ReactDOM;","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n"],"names":["SignUpButton","_ref","id","className","text","ariaLabel","telemetryContent","disabled","link","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Button","Object","assign","role","href","SignUpError","type","message","errorClassName","classnames","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","value","pattern","isRequired","onChange","fieldReference","InputType","TextArea","name","undefined","ref","SignUpLabel","forId","htmlFor","InputID","RegistrationFields","renderInputSection","inputs","needToReset","onInputChange","showErrors","resources","addressForm","updateAddress","map","element","index","label","maxChars","customClass","baseSignUpItem","wrapper","errorMessage","Address","isAddressInput","input","updateForm","hasError","resetAddress","splice","requiredCheck","window","document","countrySelect","getElementById","countryIso","vatLabel","VatId","cheCountry","innerHTML","vatNumberLabel","BusinessSignUp","constructor","props","_this","super","this","moduleClassName","BusinessSignUpDefaultInputs","FirstName","Text","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","EmailRegex","defaultRegex","source","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","companyAddressLabel","formChildReference","needsToReset","handleHeadingChange","event","config","heading","target","_onAddressChange","errors","currAddress","newForm","state","formItems","addressItem","find","item","address","setState","addressHasErrors","showAddressErrors","isReady","_isFormReady","_checkAddress$address","checkVAT","formItem","checkAddress","ThreeLetterISORegionName","currentInput","match","setCaptchaReady","captchaReady","_onSubmit","preventDefault","context","showCaptcha","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","vatNumber","ExtensionProperties","Key","Value","StringValue","newPartner","ProspectTypeValue","createProspectAsync","callerContext","actionContext","then","successPageURL","confirmationLink","linkUrl","destinationUrl","getUrlSync","location","catch","hasSubmitErrors","_onCancel","cleanForm","forEach","isAddress","arguments","length","_addedReference","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","componentDidMount","_this$formChildRefere","current","focus","shouldComponentUpdate","nextProps","nextState","data","render","viewProps","_objectSpread","businessSignUp","moduleProps","ContainerWrapper","editProps","onEdit","requestContext","businessSignUpForm","_renderForm","renderView","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","form","FormWrapper","items","_onInputChange","bind","buttons","key","disclaimer","RichTextComponent","newFormFields","siteKey","console","error","containerRef","useRef","widgetRef","doneCallback","solution","errorCallback","err","log","useEffect","WidgetInstance","startMode","sitekey","reset","BusinessSignUpItem","Node","Module","FriendlyCaptcha","captchaSiteKey","button","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","module","exports","ReactDOM","call","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","toLength","toString","requireObjectCoercible","getMethod","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","RegExp","string","rx","S","res","done","global","fullUnicode","unicode","lastIndex","result","A","matchStr"],"sourceRoot":""}