{"version":3,"file":"js/event-handlers-base.js","mappings":"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","sources":["webpack://bizsignupnodeweb/./lib/flow-bundles/event-handlers/base.js","webpack://bizsignupnodeweb/./lib/flow-bundles/event-handlers/pphNative.js"],"sourcesContent":["/* global PAYPAL */\n/* eslint new-cap: [\"error\", { \"newIsCap\": false }]*/\nlet formManipulator = require('f0-form-manipulator'),\n _ = require('lodash'),\n $ = require('jquery'),\n fetch = require('isomorphic-fetch'),\n { PhoneNumberFormat } = require('@paypalcorp/worldready'),\n validator = require('f0-validator'),\n validations = require('../validations/base'),\n hawkSearch = require('node-hawk-search'),\n pphNative = require('./pphNative'),\n pphTracker = require('./pphTracker'),\n constants = require('../../constants'),\n apmConstants = require('../../payment_methods/constants'),\n groups = require('../../../config/metadata/groups.json'),\n CONSTANTS = require('../../constants'),\n { getFormattedAddress, isPostalCodeValid } = require('../../../lib/utils'),\n hawk;\nconst { initializeNameFormat, initWorldReady } = require('../../worldready-util');\n\nconst axios = require('axios');\n\nfunction disableBack() {\n window.history.go(1);\n}\n\nconst ADDR_LOOKUP_DEBOUNCE_INTERVAL = 800;\nconst ADDR_LOOKUP_DEBOUNCE_OPTIONS = {\n leading: false,\n trailing: true,\n maxWait: 3000\n};\n\nconst populateAddressFields = _.debounce((ev, element, ctx, ...elementNames) => {\n const addressFieldName = _.get(element, 'attributes.name'),\n page = ctx.form.activePage,\n countryCode = ctx.content.countryCode,\n locale = ctx.content.locale,\n csrf = ctx.data._csrf,\n data = ctx.data.fields,\n currentAddress = _.get(data, [addressFieldName, 'value']),\n postalCode = _.get(currentAddress, 'postal_code'),\n requestPayload = {};\n \n let isValidPostalCode = isPostalCodeValid(locale, countryCode, postalCode);\n\n if (isValidPostalCode) {\n requestPayload._csrf = csrf;\n requestPayload.pageName = page;\n requestPayload.postal_code = postalCode;\n\n const action = '/bizsignup/shared/addressLookUp';\n requestPayload['country.x'] = countryCode;\n requestPayload['locale.x'] = locale;\n $.ajax({\n url: action,\n data: requestPayload,\n method: 'POST',\n dataType: 'json',\n success: (response) => {\n let addressLookupResponse = _.get(response, 'serviceResponse');\n if (addressLookupResponse) {\n // just need the first element value\n let street1 = _.get(addressLookupResponse, 'Street[0]', ''),\n neighborhood = _.get(addressLookupResponse, 'Locality[1]', ''),\n city = _.get(addressLookupResponse, 'Locality[0]', ''),\n state = _.get(addressLookupResponse, 'Province[0]', '');\n\n const newAddress = {\n address_line_1: street1,\n address_line_2: neighborhood,\n admin_area_1: state,\n admin_area_2: city,\n postal_code: postalCode\n };\n ctx.dataActions.updateField(addressFieldName,\n Object.assign({}, currentAddress, newAddress));\n }\n }\n });\n }\n}, ADDR_LOOKUP_DEBOUNCE_INTERVAL, ADDR_LOOKUP_DEBOUNCE_OPTIONS);\n\nconst _compareResolvedProductAndProductIntent = (\n resolvedProduct,\n productIntent\n) => {\n if (!resolvedProduct || !productIntent) {\n return true;\n }\n\n if (productIntent === constants.EXPRESS_CHECKOUT) {\n return constants.EXPRESS_CHECKOUT_RESOLVED_PRODUCTS.includes(\n resolvedProduct\n );\n }\n\n return resolvedProduct === productIntent.toLowerCase();\n};\n\nlet EventHandlers = {\n\n initializeFraudnetSync(ev, element, ctx) {\n let activePage = ctx.form.activePage,\n PAYPAL = window.PAYPAL;\n // eslint-disable-next-line\n if (PAYPAL.syncData && PAYPAL.syncData.initSync) {\n // eslint-disable-next-line\n PAYPAL.pta = PAYPAL.syncData.initSync(\n {\n fnSessionId: window.fpti.nsid,\n sourceId: 'ONBOARDING_SIGNUP',\n fname: 'fn_sync_data',\n detail: { type: 'ONBOARDING_SIGNUP', fields: activePage === 'create' ? ['firstName', 'lastName'] : ['email', 'password'] }\n });\n }\n },\n\n handleSyncFraudNetData(ev, element, ctx) {\n const PAYPAL = window.PAYPAL || {},\n activePage = _.get(ctx, 'form.activePage', ''),\n fields = _.get(ctx, 'data.fields'),\n status = _.get(window, 'fpti.status', ''),\n syncFieldName = 'fn_sync_data';\n // giving status condition so that fn_sync_data will be set in payload only once in a flow in the account creation page. This will handle condition\n // of two times setting syncFieldName in reboot flow.\n if (\n (status === 'min_account_created' || activePage !== 'create') &&\n activePage !== 'singlePageSignup'\n ) {\n if (_.get(fields, syncFieldName)) {\n delete fields[syncFieldName];\n }\n return;\n }\n if (PAYPAL.syncData && PAYPAL.syncData.flushData) {\n const eventName = 'fn_sync_data_sent';\n // record when we send fn_sync_data for analytics purposes\n PAYPAL.syncData.flushData();\n if (window.analyticsInstance) {\n window.analyticsInstance.recordEvent(eventName, { e: 'ac' });\n }\n }\n const fnSyncDataInput = document.querySelector('input[name=fn_sync_data]');\n if (fnSyncDataInput) {\n _.set(ctx, 'data.fields.fn_sync_data', fnSyncDataInput.value);\n }\n },\n\n _handleKrAgreementsTermsAndConditions(ctx) {\n const isAccepted = _.get(ctx, 'data.fields.userAgreement.value') && _.get(ctx, 'data.fields.privacyStatement.value');\n _.set(ctx, 'data.fields.agreementAccepted.value', isAccepted);\n },\n\n handleKrAgreementsMasterCheckbox(ev, element, ctx) {\n const checkboxValue = _.get(ctx, 'data.fields.masterCheckbox.value');\n ctx.dataActions.updateField('userAgreement', checkboxValue);\n ctx.dataActions.updateField('privacyStatement', checkboxValue);\n ctx.dataActions.updateField('enabledMarketingEmail', checkboxValue);\n _.set(ctx, 'data.fields.agreementAccepted.value', checkboxValue);\n if (_.get(ctx, 'data.fields.permissionsAccepted')) {\n ctx.dataActions.updateField('permissionsAccepted', checkboxValue);\n }\n },\n\n /**\n * currentCheckbox is the checkbox that is clicked.\n * For Non-ISU flow, permissionsAccepted is always true hence making the function generic for all the checkbox clicks.\n * masterCheckbox value is evaluated based on the values of userAgreement, privacyStatement, enabledMarketingEmail, and permissionsAccepted.\n */\n handleKrAgreementsCheckbox(ev, element, ctx) {\n const currentCheckbox = _.get(element, 'attributes.name');\n const userAgreementValue = _.get(ctx, 'data.fields.userAgreement.value');\n const privacyStatementValue = _.get(ctx, 'data.fields.privacyStatement.value');\n const enabledMarketingEmailValue = _.get(ctx, 'data.fields.enabledMarketingEmail.value');\n let permissionsAcceptedValue;\n\n const isISUFlow = _.get(ctx, 'data.fields.permissionsAccepted');\n if (isISUFlow) {\n permissionsAcceptedValue = _.get(ctx, 'data.fields.permissionsAccepted.value');\n } else {\n permissionsAcceptedValue = true;\n }\n\n const masterCheckboxValue = userAgreementValue && privacyStatementValue && enabledMarketingEmailValue && permissionsAcceptedValue;\n ctx.dataActions.updateField('masterCheckbox', masterCheckboxValue);\n\n if (currentCheckbox === 'userAgreement' || currentCheckbox === 'privacyStatement') {\n EventHandlers._handleKrAgreementsTermsAndConditions(ctx);\n }\n },\n\n _getElementsToClear(ctx, elements) {\n return elements.filter(el => !_.get(ctx, `form.elements.${el}.attributes.disabled`) && !_.get(ctx, `form.elements.${el}.prefilled`));\n },\n\n _showElements(ev, el, ctx, ...elements) {\n const elementsToClear = EventHandlers._getElementsToClear(ctx, elements);\n EventHandlers.clearElements(ev, el, ctx, ...elementsToClear);\n EventHandlers.clearElementsErrors(ev, el, ctx, ...elementsToClear);\n EventHandlers.showElements(ev, el, ctx, ...elements);\n EventHandlers.enableValidationsForMultipleElements(ev, el, ctx, ...elements);\n },\n \n _hideElements(ev, el, ctx, ...elements) {\n const elementsToClear = EventHandlers._getElementsToClear(ctx, elements);\n EventHandlers.clearElements(ev, el, ctx, ...elementsToClear);\n EventHandlers.clearElementsErrors(ev, el, ctx, ...elementsToClear);\n EventHandlers.hideElements(ev, el, ctx, ...elements);\n EventHandlers.disableValidationsForMultipleElements(ev, el, ctx, ...elements);\n },\n\n // handleBusinessWebsiteYesNoChange for showing the business URL text input field or not\n handleBusinessWebsiteYesNoChange: (event, element, ctx, ...elementNames) => {\n if (event === 'NO') {\n EventHandlers._hideElements(event, element, ctx, ...elementNames);\n } else {\n EventHandlers._showElements(event, element, ctx, ...elementNames);\n }\n },\n\n selectBusinessWebsiteOptionsYes(event, element, ctx) {\n _.set(ctx, 'data.fields.businessWebsiteOptions.value', 'YES');\n },\n\n handleOnClickInAppLinks(ev, elementName, ctx) {\n $('.pphMobileLink').click(function () {\n EventHandlers.pphMobileWebLink(this);\n return false;\n });\n\n $('.pphMobileRelease').click(function () {\n EventHandlers.pphMobileHandoff(ev, elementName, ctx);\n return false;\n });\n },\n\n // handle \"back\" link navigate back in browser history.\n navigateBackInBrowserHistory(ev) {\n ev.preventDefault();\n window.history.back();\n },\n\n handlePasswordBlur(ev, element, ctx) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'password', 'blurred', true);\n },\n // internal methods to start with underscore\n _findFormElement(ctx, elementName) {\n let form = ctx.form,\n page = ctx.form.activePage,\n splitElementNames = elementName.split(/\\[([^)]+)\\]/),\n elementType, element,\n currentPageElements = _.get(form, 'pages.' + page);\n\n if (splitElementNames.length > 1) {\n elementType = formManipulator.get(currentPageElements, splitElementNames[0]);\n element = formManipulator.get(elementType, splitElementNames[1]);\n\n } else {\n element = formManipulator.get(currentPageElements, elementName);\n }\n return element;\n },\n\n _validateElements(ctx, elementName) {\n\n let validationKey = ctx.content.countryCode, eventType = ctx.content.eventLabel,\n data = ctx.data.fields,\n element = EventHandlers._findFormElement(ctx, elementName) || _.get(ctx, `form.elements['${elementName}']`),\n elementData = _.get(data, elementName),\n validationErrors, errors = {};\n\n let elementValue = _.get(elementData, 'value');\n validationErrors = validator.getErrors(validationKey, element, elementValue, data, {}, eventType);\n errors[elementName] = _.get(validationErrors, element.attributes.name);\n\n // update the new errors , after re-validation\n ctx.dataActions.addErrorsToMultipleFields(errors);\n\n },\n _initHawkSearch(options) {\n hawk = new hawkSearch(options);\n },\n\n /**\n * Clears temporary variables from fpti. Like error or click event variables.\n * It makes sure that these temporary variables are not sent again with next fpti call.\n * @param fpti\n * @private\n */\n _resetFpti(fpti) {\n // list all temporary variables here\n fpti.link = '';\n fpti.eccd = '';\n fpti.erpg = '';\n fpti.erfd = '';\n fpti.item = '';\n fpti.cfft = '';\n fpti.reqrmnt_type = '';\n fpti.is_enabled = '';\n fpti.optsel = '';\n fpti.ref_url = '';\n fpti.response_duration = '';\n window.fpti.bztp = '';\n },\n\n show(elementName, ctx) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'isHidden', false);\n },\n\n disable(elementName, ctx) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'attributes.disabled', true);\n },\n\n updateContentKey(elementName, ctx, textKey) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'text', textKey);\n },\n\n hide(elementName, ctx) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'isHidden', true);\n },\n\n showElements(ev, element, ctx, ...elements) {\n elements.forEach(el => EventHandlers.show(el, ctx));\n },\n\n hideElements(ev, element, ctx, ...elements) {\n elements.forEach(el => EventHandlers.hide(el, ctx));\n },\n\n disableElements(ev, element, ctx, ...elements) {\n elements.forEach(el => EventHandlers.disable(el, ctx));\n },\n\n disableValidationsForMultipleElements(ev, elementName, ctx, ...elements) {\n elements.forEach(el => ctx.formActions.updateElementProperty(ctx.form.activePage, el, 'isValidationDisabled', true));\n },\n\n enableValidationsForMultipleElements(ev, elementName, ctx, ...elements) {\n elements.forEach(el => ctx.formActions.updateElementProperty(ctx.form.activePage, el, 'isValidationDisabled', false));\n },\n\n disableValidations(elementName, ctx) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'isValidationDisabled', true);\n },\n\n enableValidations(elementName, ctx) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'isValidationDisabled', false);\n },\n\n enableValidationsForElementAtListIndex(ctx, listName, index, elementName) {\n ctx.formActions.updateElementWithinListIndex(ctx.form.activePage, listName, index, elementName, 'isValidationDisabled', false);\n },\n\n disableValidationsForElementAtListIndex(ctx, listName, index, elementName) {\n ctx.formActions.updateElementWithinListIndex(ctx.form.activePage, listName, index, elementName, 'isValidationDisabled', true);\n },\n\n hideValueInTextInput(event, element, ctx) {\n element.attributes.type = 'password';\n },\n\n showValueInTextInput(event, element, ctx, ...elementNames) {\n element.attributes.type = 'text';\n },\n\n isVowel(str) {\n if (constants.VOWELS.includes(str.charAt(0).toLowerCase())) {\n return 'an';\n } \n return 'a';\n },\n\n showFieldsIfNoValue(event, element, ctx, ...elementNames) {\n let fieldName = _.get(element, 'attributes.name'),\n fieldValue = _.get(ctx, `data.fields['${fieldName}'].value`);\n if (!fieldValue && elementNames.length > 0) {\n elementNames.forEach((elementName) => {\n EventHandlers.show(elementName, ctx);\n EventHandlers.enableValidations(elementName, ctx);\n });\n }\n },\n\n hideFieldsIfValueExists(event, element, ctx, ...elementNames) {\n const fieldName = _.get(element, 'attributes.name'),\n fieldValue = _.get(ctx, `data.fields['${fieldName}'].value`),\n countryCode = _.get(ctx, 'content.countryCode', null);\n\n // to handle invalid business types prefilled through parner API. \n if (fieldName === 'businessType' && fieldValue) {\n const found = EventHandlers.handleNotSupportedBusinessType(event, element, ctx);\n if (found === false) {\n return;\n }\n }\n\n // to handle unsupported business types prefilled through parner API for Thailand. \n if (countryCode === 'TH' && constants.NON_ENTITY_BUSINESS_TYPES.includes(fieldValue)) {\n _.set(ctx, `data.fields['${fieldName}'].value`, '');\n return;\n }\n if (fieldValue && elementNames.length > 0) {\n elementNames.forEach((elementName) => {\n EventHandlers.hide(elementName, ctx);\n EventHandlers.disableValidations(elementName, ctx);\n });\n }\n },\n\n handleChangeOnUpgradeBusinessType(ev, element, ctx, eligibilityMessageForCreateNewAccount, newAccountButton, upgradeButton) {\n const elementName = _.get(element, 'attributes.name'),\n bizType = _.get(ctx, `data.fields['${elementName}'].value`),\n countryCode = _.get(ctx, 'content.countryCode', '');\n \n if (!bizType) {\n EventHandlers.hide(eligibilityMessageForCreateNewAccount, ctx);\n EventHandlers.hide(newAccountButton, ctx);\n EventHandlers.show(upgradeButton, ctx);\n return;\n }\n\n if (countryCode === 'CA') {\n let businessTypeContent;\n if (bizType === 'NONPROFIT') {\n businessTypeContent = 'fields.businessType.options.nonProfit';\n } else if (bizType === 'PRIVATE_CORPORATION') {\n businessTypeContent =\n 'fields.businessType.options.private_company';\n } else {\n businessTypeContent = `fields.businessType.options.${bizType.toLowerCase()}`;\n }\n\n ctx.formActions.updateElementProperty(ctx.form.activePage, eligibilityMessageForCreateNewAccount, 'text', 'bizTypeSelection.upgradeEligibilityMessage.createNewAccountWithBizType');\n ctx.formActions.updateElementProperty(ctx.form.activePage, eligibilityMessageForCreateNewAccount, 'contentArgs.indefiniteArticle', EventHandlers.isVowel(bizType));\n ctx.formActions.updateElementProperty(ctx.form.activePage, eligibilityMessageForCreateNewAccount, 'contentArgs.businessType', this.resolveContent(businessTypeContent).toLowerCase());\n }\n\n if (constants.NON_ENTITY_BUSINESS_TYPES.includes(bizType)) {\n EventHandlers.show(upgradeButton, ctx);\n EventHandlers.hide(newAccountButton, ctx);\n EventHandlers.hide(eligibilityMessageForCreateNewAccount, ctx);\n } else {\n EventHandlers.show(eligibilityMessageForCreateNewAccount, ctx);\n EventHandlers.show(newAccountButton, ctx);\n EventHandlers.hide(upgradeButton, ctx);\n }\n },\n\n handleValidationFPTI(ev, element, ctx) {\n let name = _.get(element, 'attributes.name', 'null'),\n errors = _.get(ctx, 'data.fields.' + name + '.errors', []);\n if (!_.isEmpty(errors)) {\n let data = {\n link: name,\n erpg: errors.join(':')\n };\n EventHandlers.handleFPTIImpression(data);\n }\n },\n\n /**\n * Handles unsupported bizType which might be prefilled by partners API.\n * resets value if not supported.\n */\n handleNotSupportedBusinessType(ev, element, ctx) {\n const fieldName = _.get(element, 'attributes.name'),\n bizType = _.get(ctx, `data.fields['${fieldName}'].value`),\n bizTypeOptions = _.get(element, 'options'),\n // valid business types that can be selected outside of the `element.options` dropdown,\n // like the \"nonprofit\" value in the `BusinessTypeDropdown` component\n additionalBizTypeOptions = _.get(element, 'additionalOptions', []);\n\n if (!bizType || !bizTypeOptions || !Array.isArray(bizTypeOptions)) {\n return;\n }\n\n const found = [...bizTypeOptions, ...additionalBizTypeOptions].some(obj => obj.value === bizType);\n if (!found) {\n _.set(ctx, `data.fields['${fieldName}'].value`, '');\n return found;\n }\n },\n\n getOccupationList(ev, element, ctx, ...elementNames) {\n let page = ctx.form.activePage;\n let occOptionList = _.map(ctx.data.fields.occResponse.value, function occName(item) {\n let occObj = {};\n occObj.text = item.name;\n occObj.value = item.name;\n return occObj;\n });\n let elementName = (page === 'thirdPartyAgent') ? 'thirdPartyOccupation' : 'occupation';\n ctx.formActions.updateElementProperty(page, elementName, 'options', occOptionList);\n },\n\n getIndustriesList(ev, element, ctx, ...elementNames) {\n let page = ctx.form.activePage;\n let industriesList = _.map(ctx.data.fields.industriesList.value, function occName(item) {\n let occObj = {};\n occObj.text = item.name;\n occObj.value = item.name;\n return occObj;\n });\n ctx.formActions.updateElementProperty(page, 'occupationIndustry', 'options', industriesList);\n },\n\n handleChangeOnBusinessType(ev, element, ctx, ...elementNames) {\n let page = ctx.form.activePage,\n fieldName = _.get(element, 'attributes.name'),\n bizType = _.get(ctx, `data.fields['${fieldName}'].value`),\n form = ctx.form,\n businessDate = formManipulator.get(form, 'businessEstablishedDate') || _.get(ctx, 'form.elements.businessEstablishedDate');\n if (elementNames.length > 0) {\n if (bizType) {\n elementNames.forEach((elementName) => {\n EventHandlers.show(elementName, ctx);\n });\n } else {\n elementNames.forEach((elementName) => {\n EventHandlers.hide(elementName, ctx);\n });\n }\n }\n if (constants.NON_ENTITY_BUSINESS_TYPES.includes(bizType)) {\n EventHandlers.hide('businessCountryOfIncorporation', ctx);\n\n // re-run the validations since this field is optional\n EventHandlers.disableValidations('businessEstablishedDate', ctx);\n EventHandlers._validateElements(ctx, 'businessEstablishedDate');\n EventHandlers.enableValidations('businessEstablishedDate', ctx);\n\n if (businessDate && businessDate.validations && businessDate.validations.indexOf('requiredDate') >= 0) {\n businessDate.validations.splice(businessDate.validations.indexOf('requiredDate'), 1);\n ctx.formActions.updateElementProperty(page, 'businessEstablishedDate', 'validations', businessDate.validations);\n }\n\n ctx.formActions.updateElementProperty(page, 'businessEstablishedDate', 'label', 'fields.businessDateEstablishedOptional.placeholder');\n } else {\n // re-run the validations to remove the previous error messages if any\n EventHandlers.disableValidations('businessEstablishedDate', ctx);\n EventHandlers._validateElements(ctx, 'businessEstablishedDate');\n EventHandlers.enableValidations('businessEstablishedDate', ctx);\n\n // Avoid multiple addition of Required parameter if incase the user changes the businessType repeatedly\n if (businessDate && businessDate.validations && businessDate.validations.indexOf('requiredDate') === -1) {\n businessDate.validations.push('requiredDate');\n ctx.formActions.updateElementProperty(page, 'businessEstablishedDate', 'validations', businessDate.validations);\n }\n\n ctx.formActions.updateElementProperty(page, 'businessEstablishedDate', 'label', 'fields.businessDateEstablished.placeholder');\n }\n },\n\n // Shows the credit card (CC) statement name field if the business name would not be a valid CC\n // statement name. Intended for use in flows where we would not normally collect a CC statement\n // name, but need to for this particular use because the value that User domain derives from\n // business name is invalid.\n //\n // User domain uses the businessDBAName field, or if unavailable the businessLegalName field,\n // \"deburrs\" that input (https://lodash.com/docs/4.17.15#deburr), removes \"special\" characters,\n // and truncates it. What's left may still not be a valid CC statement name because of an\n // additional requirement that CC statement names cannot have more than 7 digits. If this\n // constraint is violated, we show the CC statement name field as required to force the user\n // to enter a valid CC statement name themselves.\n checkIfValidCCStatementName(ev, element, ctx) {\n const elementName = element.attributes.name,\n businessDBAName = _.get(ctx, 'data.fields.businessDBAName.value'),\n businessLegalName = _.get(ctx, 'data.fields.businessLegalName.value'),\n businessNameUsedForCCStatementName = businessDBAName || businessLegalName;\n\n if (!validations.hasFewerThanXNumbers(ctx, businessNameUsedForCCStatementName, constants.MAX_NUMS_ALLOWED_IN_CC_STATEMENT_NAME + 1)) {\n EventHandlers.show(elementName, ctx);\n EventHandlers.enableValidations(elementName, ctx);\n }\n },\n\n handlePartnerList(ev, element, ctx, elementName) {\n const elemName = _.get(element, 'attributes.name'),\n handlePartnerAnswer = _.get(ctx, `data.fields['${elemName}'].value`);\n if (handlePartnerAnswer === 'YES') {\n EventHandlers.show(elementName, ctx);\n EventHandlers.enableValidations(elementName, ctx);\n } else {\n EventHandlers.hide(elementName, ctx);\n EventHandlers.disableValidations(elementName, ctx);\n }\n },\n\n /**\n * The 4th param gives you the flexibility to choose what data you want tracked by the fpti click event.\n * - setting resetFPTIBefore key will reset the flags listed in _resetFPTI() before logging event\n * - setting resetFPTIAfter key will reset the flags listed in _resetFPTI() after logging event so future events\n * don't have the link and cfft flags\n *\n * The 4th param can be utilized by adding the following code to elements in the config files:\n *\n * \"eventHandlerOptions\": {\n * \"handleFPTIClicks\": {\n * \"args\": [{ \"resetFPTIBefore\": false, \"resetFPTIAfter\": true }]\n * }\n * }\n */\n handleFPTIClicks(ev, element, ctx, { resetFPTIBefore, resetFPTIAfter, eventName } = { resetFPTIBefore: true, resetFPTIAfter: false, eventName: '' }) {\n let elementName = _.get(element, 'attributes.name');\n // if window.PAYPAL doesn't exist, then there will be no analyticsInstance\n if (!window || !window.PAYPAL || !window.fpti) {\n return;\n }\n if (resetFPTIBefore) {\n EventHandlers._resetFpti(window.fpti);\n }\n window.analyticsInstance = window.analyticsInstance || new window.PAYPAL.analytics.Analytics();\n // add element name to the global fpti variable\n window.fpti.link = elementName;\n window.fpti.cfft = _.get(ctx, `data.fields['${elementName}'].value`, '');\n\n // FPTI requires business type to be included in bztp attribute\n if (elementName === 'businessType') {\n window.fpti.bztp = _.get(ctx, `data.fields['${elementName}'].value`, '');\n }\n\n if (window.analyticsInstance) {\n if (eventName) {\n window.analyticsInstance.recordEvent(eventName, { e: 'cl' });\n } else {\n window.analyticsInstance.recordClick();\n }\n }\n\n if (resetFPTIAfter) {\n EventHandlers._resetFpti(window.fpti);\n }\n },\n\n handleFPTIClicksById(ev, element, ctx, desiredTrackingIds) {\n const trackingName = desiredTrackingIds[ev.target.id];\n if (trackingName) {\n EventHandlers.handleFPTIClicks(ev, { ...element, attributes: { name: trackingName } });\n }\n },\n\n handleFPTIImpression(data) {\n\n // if window.PAYPAL doesn't exist, then there will be no analyticsInstance\n if (!window || !window.PAYPAL || !window.fpti) {\n return;\n }\n EventHandlers._resetFpti(window.fpti);\n window.analyticsInstance = window.analyticsInstance || new window.PAYPAL.analytics.Analytics();\n\n let options = {\n data: data\n };\n\n if (window.analyticsInstance) {\n window.analyticsInstance.recordClick(options);\n }\n },\n\n /**\n * Store input values that you may want to log in an FPTI call. You can add multiple tags by using different tags\n * for all inputs on a specific page. Expecation is that you will call handleFPTIClick on the submit button or\n * trigger it by some other event on the page.\n *\n * NOTE: Ensure your fpti tag is added to _resetFPTI() function so it can be cleaned.\n *\n * Usage Example:\n * \"eventHandlers\": {\n * \"onChange\": [\"handleFPTIStoreInputValue\"]\n * },\n * \"eventHandlerOptions\": {\n * \"handleFPTIStoreInputValue\": {\n * \"args\": [\"optsel\"]\n * }\n * }\n *\n */\n handleFPTIInputValue(ev, element, ctx, fptiTagSource) {\n let elementName = _.get(element, 'attributes.name');\n let elementValue = _.get(ctx, `data.fields.${elementName}.value`);\n // if window.PAYPAL doesn't exist, then there will be no analyticsInstance\n if (!window || !window.PAYPAL || !window.fpti) {\n return;\n }\n\n // add element name to the global fpti variable\n _.set(window.fpti, fptiTagSource, elementValue, '');\n },\n\n clearElements(ev, element, ctx, ...elementNames) {\n if (elementNames.length > 0) {\n elementNames.forEach((elementName) => {\n ctx.dataActions.updateField(elementName, '');\n });\n }\n },\n\n clearElement(elementName, ctx) {\n ctx.dataActions.updateField(elementName, '');\n },\n\n clearElementsErrors(ev, element, ctx, ...elementNames) {\n elementNames.forEach((elementName) => {\n ctx.dataActions.updateFieldWithErrors(elementName, []);\n });\n },\n\n clearElementError(elementName, ctx) {\n ctx.dataActions.updateFieldWithErrors(elementName, []);\n },\n\n showModal(ev, element, ctx, modal) {\n ctx.formActions.setActiveModal(modal);\n },\n\n setHomeCheckboxOnPageLoad(ev, element, ctx) {\n const bizType = _.get(ctx, `data.fields.businessType.value`);\n if (!constants.NON_ENTITY_BUSINESS_TYPES.includes(bizType)) {\n _.set(ctx, 'data.fields.homeAddressSameAsBusinessAddressCheckbox.value', false);\n }\n },\n\n setHomePhoneNumberCheckboxOnPageLoad(ev, element, ctx) {\n _.set(ctx, 'data.fields.homePhoneNumberSameAsBusinessPhoneNumberCheckbox.value', false);\n },\n\n loadBusinessAddress(ev, element, ctx) {\n const businessAddress = _.get(ctx, 'data.fields.businessAddress.value') || {},\n countryCode = _.get(ctx, 'content.countryCode', 'US'),\n locale = _.get(ctx, 'content.locale', 'en_US');\n \n const stateAndCountry = {\n 'admin_area_1': businessAddress.contentValue || businessAddress.admin_area_1, // check for the formatted content value before utilizing\n 'country_code': ctx.content.countryCode\n };\n const addressObj = { ...businessAddress, ...stateAndCountry };\n const formattedAddress = getFormattedAddress(locale, countryCode, addressObj);\n _.set(ctx, 'form.elements.homeAddressSameAsBusinessAddressCheckbox.attributes.children', formattedAddress);\n },\n\n updateElementsOnHomeCheckboxChange(ev, element, ctx) {\n let fields = ctx.data.fields,\n page = ctx.form.activePage,\n currentElementName = element.attributes.name,\n isCheckboxHidden = element.isHidden,\n checked = _.get(fields, currentElementName);\n\n if (isCheckboxHidden) {\n return;\n }\n const businessAddressValue = fields.businessAddress && fields.businessAddress.value;\n const emptyAddress = {\n address_line_1: '',\n address_line_2: '',\n admin_area_3: '',\n admin_area_2: '',\n admin_area_1: '',\n postal_code: ''\n };\n if (checked && checked.value) {\n fields.homeAddress.errors = [];\n ctx.dataActions.updateField('homeAddress', businessAddressValue);\n ctx.dataActions.updateFieldWithErrors(ctx.data, 'homeAddress');\n ctx.formActions.updateElementProperty(page, 'homeAddress', 'attributes.disabled', true);\n } else {\n ctx.dataActions.updateField('homeAddress', emptyAddress);\n ctx.formActions.updateElementProperty(page, 'homeAddress', 'attributes.disabled', false);\n }\n },\n\n updateElementsOnPhoneCheckboxChange(ev, element, ctx) {\n let fields = _.get(ctx, 'data.fields'),\n page = _.get(ctx, 'form.activePage'),\n currentElementName = _.get(element, 'attributes.name'),\n isCheckboxHidden = element.isHidden,\n checked = _.get(fields, currentElementName);\n\n if (isCheckboxHidden) {\n return;\n }\n const businessPhoneValue = _.get(fields, 'businessPhoneNumber.value');\n const emptyPhone = '';\n if (checked && checked.value) {\n fields.homePhoneNumber.errors = [];\n ctx.dataActions.updateField('homePhoneNumber', businessPhoneValue);\n ctx.dataActions.updateFieldWithErrors(ctx.data, 'homePhoneNumber');\n ctx.formActions.updateElementProperty(page, 'homePhoneNumber', 'attributes.disabled', true);\n } else {\n ctx.dataActions.updateField('homePhoneNumber', emptyPhone);\n ctx.formActions.updateElementProperty(page, 'homePhoneNumber', 'attributes.disabled', false);\n }\n },\n\n hideElementsForBusinessInfoPage(ev, element, ctx) {\n // don't show these fields if the info was already collected\n ['businessType', 'merchantCategoryCode']\n .forEach(field => {\n // hide a field if the value exists, reading from the F0 config for arguments\n EventHandlers.hideFieldsIfValueExists(\n ev,\n _.get(ctx, `form.elements.${field}`),\n ctx,\n ..._.get(ctx, `form.elements.${field}.eventHandlerOptions.hideFieldsIfValueExists.args`, []));\n });\n },\n\n initializeElementsOnHomeCheckbox(ev, element, ctx, ...elementNames) {\n let fields = ctx.data.fields,\n page = ctx.form.activePage,\n currentElementName = element.attributes.name,\n isCheckboxHidden = element.isHidden,\n checked = _.get(fields, currentElementName);\n\n if (isCheckboxHidden) {\n return;\n }\n const businessAddressValue = fields.businessAddress && fields.businessAddress.value;\n\n if (checked && checked.value) {\n fields.homeAddress.errors = [];\n ctx.dataActions.updateField('homeAddress', businessAddressValue);\n ctx.dataActions.updateFieldWithErrors(ctx.data, 'homeAddress');\n ctx.formActions.updateElementProperty(page, 'homeAddress', 'attributes.disabled', true);\n }\n },\n formatDate(ev, element, ctx) {\n if (!_.get(element, 'dateFormat.format')) {\n return;\n }\n\n let dataFields = ctx.data.fields,\n date = dataFields[element.attributes.name].value,\n dateFormat = element.dateFormat.format;\n\n date = date.replace(/\\D/g, '');\n\n const format = {\n 'm/d/y': { 'pattern': date.substring(0, 2) + '/' + date.substring(2, 4) + '/' + date.substring(4, 8), 'length': 8 },\n 'd/m/y': { 'pattern': date.substring(0, 2) + '/' + date.substring(2, 4) + '/' + date.substring(4, 8), 'length': 8 },\n 'y/m/d': { 'pattern': date.substring(0, 4) + '/' + date.substring(4, 6) + '/' + date.substring(6, 8), 'length': 8 },\n 'm/y': { 'pattern': date.substring(0, 2) + '/' + date.substring(2, 6), 'length': 6 }\n };\n\n if (date.length === _.get(format[dateFormat], 'length')) {\n date = format[dateFormat].pattern;\n }\n const errors = this.getErrors(date);\n if (errors[element.attributes.name].length === 0) {\n ctx.dataActions.updateField(element.attributes.name, date);\n ctx.dataActions.addErrorsToMultipleFields(errors);\n }\n },\n\n showHideHomeAddress(ev, element, ctx) {\n _showHideAddress(ev, element, ctx, 'homeAddress');\n },\n\n showHideBusinessAddress(ev, element, ctx) {\n _showHideAddress(ev, element, ctx, 'businessAddress');\n },\n\n showHideHomePhoneNumber(ev, element, ctx) {\n _showHidePhoneNumber(ev, element, ctx, 'homePhoneNumber');\n },\n\n showStakeholderPrefillAlert(ev, element, ctx) {\n const partnerPrefillData = _.get(ctx, 'data.fields.partnerPassedStakeholders.value', []);\n const MPDSData = _.get(ctx, 'data.fields.stakeholders.value', []);\n const partnerChannel = _.get(ctx, 'data.fields.channelStore.partnerBizName', null);\n\n if (MPDSData.length === 0 && partnerPrefillData.length > 0 && partnerChannel) {\n EventHandlers.show('stakeholderPrefillAlert', ctx);\n }\n },\n\n /**\n * Flow: MarketPlace\n * Event: OnIntitialize\n * If autoTransferEnabled is true enable the success Text\n */\n showAutoTransferStatus(event, element, ctx) {\n const autoTransferStatus = _.get(ctx, 'data.fields.isAutoTransfersEnabled.value');\n if (autoTransferStatus) {\n EventHandlers.show('autoTransferSuccessText', ctx);\n }\n },\n\n showApplicationStatus(event, element, ctx) {\n const { PRODUCT_STATUS } = constants,\n applicationStatus = _.get(ctx, 'data.fields.applicationStatus.value'),\n baseIconClass = 'ppvx_icon ppvx_icon--size_xl2 center';\n if (!applicationStatus) {\n return;\n }\n switch (applicationStatus) {\n case PRODUCT_STATUS.SUBSCRIBED:\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusIcon', 'attributes.className', `${baseIconClass} ppvx_icon-check-circle ppui-color-green-700`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusHeader', 'text', 'done.approveStatus');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusMessage', 'text', 'done.approveText');\n break;\n case PRODUCT_STATUS.MANUAL_REVIEW:\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusIcon', 'attributes.className', `${baseIconClass} ppvx_icon-pending ppui-color-blue-600`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusHeader', 'text', 'done.manualReviewStatus');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusMessage', 'text', 'done.manualReviewText');\n break;\n case PRODUCT_STATUS.NEED_MORE_DATA:\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusIcon', 'attributes.className', `${baseIconClass} ppvx_icon-warning`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusHeader', 'text', 'done.needMoreDataStatus');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusMessage', 'text', 'done.needMoreDataText');\n break;\n case PRODUCT_STATUS.DECLINED:\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusIcon', 'attributes.className', `${baseIconClass} ppvx_icon-decline ppui-color-red-500`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusHeader', 'text', 'done.declinedStatus');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'statusMessage', 'text', 'done.declinedText');\n break;\n default:\n if (PAYPAL && PAYPAL.analytics) {\n PAYPAL.analytics.logJSError(new Error('Application status error'), `Unexpected application status: ${applicationStatus}`, 'PRODUCT_PROVISIONING_ERROR');\n }\n }\n\n },\n\n /**\n * Flow: Martketplace - PPCP\n * Event: onInitialize\n * If isDataAPI: hide partnerDoneStatusText\n *\n */\n handleDataAPICongratsMessage(event, element, ctx) {\n const isDataAPI = _.get(ctx, 'data.fields.channelStore.isDataAPI');\n\n if (isDataAPI) {\n EventHandlers.hide('partnerDoneStatusText', ctx);\n }\n },\n\n /**\n * Flow: Martketplace - PPCP\n * Event: OnInitialize\n * If PPCP: show only PPCP fields according to application status if this is a ppcp flow.\n * Else hides all other partnerDone page elements\n *\n *\n */\n showPartnerPPCPSubscriptionStatus(event, element, ctx) {\n const applicationStatus = _.get(ctx, 'data.fields.applicationStatus.value');\n const product = _.get(ctx, 'data.fields.product.value');\n const isPpcp = product === 'ppcp';\n const isCasualSeller = _.get(ctx, 'data.fields.channelStore.isCasualSeller');\n const countryCode = _.get(ctx, 'content.countryCode', null);\n const isEmailConfirmed = _.get(ctx, 'data.fields.channelStore.isEmailConfirmed');\n const isEU = _.get(groups, ['LUX', countryCode]) || _.get(groups, ['3PL', countryCode]);\n const secondaryProducts = _.get(ctx, 'data.fields.secondaryProducts.value');\n\n // Separate handler for MultiProduct flow - Done screen so return early if secondaryProducts exists\n if ((!isPpcp && !isCasualSeller) || !applicationStatus || !_.isEmpty(secondaryProducts)) {\n return;\n }\n\n // hide other fields partner done fields and show UCC fields\n EventHandlers.hide('confirmEmailAlert', ctx);\n\n EventHandlers.hide('partnerDoneHeader', ctx);\n EventHandlers.hide('partnerDoneMailIcon', ctx);\n EventHandlers.hide('partnerDoneStatusText', ctx);\n EventHandlers.show('partnerPpcpStatusHeader', ctx);\n EventHandlers.show('partnerPpcpStatusText', ctx);\n\n /* istanbul ignore next */\n let contentField = _.get(ctx, 'data.fields.channelStore.isExistingSeller', false) ? 'partnerPpcp.existingAccount' : 'partnerPpcp.newAccount';\n\n if (isEU) {\n // Different content is applicable for EU countries.\n contentField = _.get(ctx, 'data.fields.channelStore.isExistingSeller', false) ? 'partnerPpcp.existingAccountEU' : 'partnerPpcp.newAccountEU';\n }\n\n switch (applicationStatus) {\n case constants.PRODUCT_STATUS.SUBSCRIBED: // approved for PPCP\n if (!isEmailConfirmed) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusHeader', 'text', `${contentField}.confirmEmail.header`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusText', 'text', `${contentField}.confirmEmail.text`);\n EventHandlers.show('ppcpPendingIcon', ctx);\n break;\n }\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusHeader', 'text', `${contentField}.approved.header`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusText', 'text', `${contentField}.approved.text`);\n EventHandlers.show('ppcpSuccessIcon', ctx);\n break;\n case constants.PRODUCT_STATUS.SUBSCRIBED_WITH_LIMIT: // pending PPCP with 500\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusHeader', 'text', `${contentField}.pending.header`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusText', 'text', `${contentField}.pending.text`);\n EventHandlers.show('ppcpPendingIcon', ctx);\n\n if (isEU) {\n _.set(ctx, 'data.fields.channelStore.dexterUrl', constants.EU_DEXTER_URL);\n }\n break;\n case 'NEED_MORE_DATA': // pending PPCP but skipped bo or cip verfication\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusHeader', 'text', `${contentField}.needMoreInfo.header`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusText', 'text', `${contentField}.needMoreInfo.text`);\n EventHandlers.show('ppcpPendingIcon', ctx);\n break;\n case constants.PRODUCT_STATUS.MANUAL_REVIEW: // pending PPCP with no 500\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusHeader', 'text', `${contentField}.manualReview.header`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusText', 'text', `${contentField}.manualReview.text`);\n EventHandlers.show('ppcpPendingIcon', ctx);\n break;\n case constants.PRODUCT_STATUS.DECLINED: // declined PPCP\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusHeader', 'text', `${contentField}.decline.header`);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerPpcpStatusText', 'text', `${contentField}.decline.text`);\n EventHandlers.show('ppcpDeniedIcon', ctx);\n break;\n\n default:\n // never expected\n break;\n }\n\n },\n\n /**\n * Flow: Martketplace - Pro\n * Event: OnInitialize\n * If Pro: show only Pro fields according to application status if this is a pro flow.\n * Else hides all other partnerDone page elements\n *\n *\n */\n showPartnerProApplicationStatus(event, element, ctx) {\n const applicationStatus = _.get(ctx, 'data.fields.applicationStatus.value');\n const product = _.get(ctx, 'data.fields.product.value');\n const isPartnerPro = product === 'wp_pro';\n\n if (!isPartnerPro || !applicationStatus) {\n return;\n }\n\n // hide other fields partner done fields and show UCC fields\n EventHandlers.show('partnerDoneHeader', ctx);\n EventHandlers.show('partnerDoneMailIcon', ctx);\n EventHandlers.show('partnerDoneStatusText', ctx);\n EventHandlers.hide('partnerPpcpStatusHeader', ctx);\n EventHandlers.hide('partnerPpcpStatusText', ctx);\n switch (applicationStatus) {\n case constants.PRODUCT_STATUS.SUBSCRIBED:\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneHeader', 'text', 'pro.approved.header');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneStatusText', 'text', 'pro.approved.text');\n EventHandlers.show('ppcpSuccessIcon', ctx);\n break;\n\n case constants.PRODUCT_STATUS.MANUAL_REVIEW:\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneHeader', 'text', 'pro.pending.header');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneStatusText', 'text', 'pro.pending.text');\n EventHandlers.show('ppcpPendingIcon', ctx);\n break;\n\n case constants.PRODUCT_STATUS.DECLINED:\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneHeader', 'text', 'pro.decline.header');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneStatusText', 'text', 'pro.decline.text');\n EventHandlers.show('ppcpDeniedIcon', ctx);\n break;\n\n default:\n // never expected\n break;\n }\n\n },\n\n handleBusinessAddress(ev, element, ctx) {\n const businessAddressAgreement = _.get(ctx, 'data.fields.businessAddressAgreement.value');\n if (!businessAddressAgreement) {\n EventHandlers.show('businessAddressSameAsHomeAddressInfo', ctx);\n EventHandlers.show('businessAddressZip', ctx);\n EventHandlers.hide('createContinueButton', ctx);\n EventHandlers.enableValidations('businessAddressZip', ctx);\n EventHandlers.enableValidations('businessAddress', ctx);\n EventHandlers.show('findBusinessAddressButton', ctx);\n EventHandlers.show('businessAddressAgreement', ctx);\n EventHandlers.hide('agreementAccepted', ctx);\n } else {\n EventHandlers.disableValidations('businessAddressZip', ctx);\n EventHandlers.disableValidations('businessAddress', ctx);\n EventHandlers.hide('businessAddressSameAsHomeAddressInfo', ctx);\n EventHandlers.hide('findBusinessAddressButton', ctx);\n EventHandlers.hide('businessAddressZip', ctx);\n EventHandlers.hide('businessAddress', ctx);\n EventHandlers.show('createContinueButton', ctx);\n EventHandlers.show('agreementAccepted', ctx);\n }\n },\n\n handleAddressChange(address, element, ctx) {\n ctx.dataActions.updateField(element.attributes.name, address);\n },\n\n handleAddressChangeWithLookup(address, element, ctx) {\n ctx.dataActions.updateField(element.attributes.name, address);\n // do address lookup if postal code is filled out and it's the only populated field\n // filter our empty fields first because they are included in address object\n if (address && address.postal_code && Object.values(address).filter(i => i).length === 1) {\n populateAddressFields(undefined, element, ctx);\n }\n },\n\n handleAddressBlur(ev, element, ctx) {\n const errors = this.getErrors(ev, 'blur');\n ctx.dataActions.addErrorsToMultipleFields(errors);\n if (_.get(ctx, 'data.fields.product.value') === 'pph') {\n pphTracker.logOnBlurEvent(ev, element, ctx);\n }\n },\n\n handleCreditCardChange(value, element, ctx) {\n ctx.dataActions.updateField(element.attributes.name, value);\n },\n\n handleCreditCardErrors(errors, element, ctx) {\n // the object merge that happens in `updateFields` won't update the\n // object property if it's `undefined`, so change it to a different\n // falsy value\n if (errors.error === undefined) {\n errors.error = false;\n }\n ctx.dataActions.updateFields({ [element.attributes.name]: { error: errors.error } });\n },\n\n handlePro30SummaryTableChange(value, element, ctx) {\n ctx.dataActions.updateField(element.attributes.name, value);\n },\n\n checkIfCardOnFile(ev, element, ctx) {\n const cards = _.get(ctx, 'data.fields.cardDetails.value'),\n elementName = element.attributes.name;\n if (cards) {\n // set the `alreadyOnFile` attribute on `element`\n ctx.dataActions.updateFields({ [elementName]: { alreadyOnFile: true } });\n // update the element's value with the first card in the array\n ctx.dataActions.updateField(elementName, cards[0]);\n // don't validate or send the masked value\n EventHandlers.disableValidations(elementName, ctx);\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'shouldSend', false);\n }\n },\n\n updatePhoneValidationMetadata: async (ev, element, ctx, country) => {\n const elementName = element.attributes.name,\n page = _.get(ctx, 'form.activePage'),\n elementValidations = _.get(ctx, `form.elements.${elementName}.validations`, []);\n // remove the phone validation while the Ajax call happens so the user isn't blocked\n // and Griffin doesn't throw an error\n ctx.formActions.updateElementProperty(page, elementName, 'validations', elementValidations.filter(x => x !== '@worldready/phoneNumber'));\n let result = await fetch(`/bizsignup/shared/worldReadyMetadata/phone/?country=${country}`);\n result = await result.json();\n // updateWorldReadyMetadata function needs to be checked in f0-validator\n validator.updateWorldReadyMetadata(result.worldReadyMetadata);\n validations.clearWorldReadyPhoneHandler(country);\n // readd phone validation if no exception was thrown above\n // use a Set so it's not added multiple times\n ctx.formActions.updateElementProperty(page, elementName, 'validations', Array.from(new Set(elementValidations.concat(['@worldready/phoneNumber']))));\n },\n\n /**\n * Show or hide tradingname field in old or new configuration\n */\n handleTradingName(ev, element, ctx) {\n const elementName = _.get(element, 'attributes.name'),\n businessNameSameAsTrading = _.get(ctx, `data.fields['${elementName}'].value`);\n if (businessNameSameAsTrading) {\n EventHandlers.hide('businessDBAName', ctx);\n EventHandlers.disableValidations('businessDBAName', ctx);\n ctx.dataActions.updateField('businessDBAName', '');\n } else {\n EventHandlers.show('businessDBAName', ctx);\n EventHandlers.enableValidations('businessDBAName', ctx);\n }\n },\n\n handleBusinessTypePage(event, element, ctx, ...elementNames) {\n let fields = ctx.data.fields,\n bizType = fields[element.attributes.name],\n bizTypeValue = bizType && bizType.value;\n\n elementNames.forEach((elementName) => {\n EventHandlers.hide(elementName, ctx);\n });\n if (constants.EIN_REQUIRED_PRO_BUSINESS_TYPES.indexOf(bizTypeValue) > -1) {\n EventHandlers.show('businessTypeTitleIcon', ctx);\n EventHandlers.show('businessTypeEntityTitle', ctx);\n } else if (constants.NON_ENTITY_BUSINESS_TYPES.includes(bizTypeValue)) {\n EventHandlers.show('businessTypeTitleIcon', ctx);\n EventHandlers.show('businessTypeNonEntityTitle', ctx);\n }\n },\n\n // to handle error messages for entity and non entity business types for Italy Tax Id field\n handleTaxIdErrorMessageBasedOnBizType(event, element, ctx, ...elementNames) {\n let fields = ctx.data.fields,\n bizTypeValue = _.get(fields, 'businessType.value', '');\n\n if (constants.NON_ENTITY_BUSINESS_TYPES.includes(bizTypeValue)) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'taxID', 'validationOptions[isValidTax].messageKey', 'notification.taxID.validForNonEntity');\n } else if (constants.ENTITY_BUSINESS_TYPES.includes(bizTypeValue)) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'taxID', 'validationOptions[isValidTax].messageKey', 'notification.taxID.validForEntity');\n }\n },\n\n // to hide tax Id fields if taxId value is already submitted in the personalInfo page\n handleShowAndHideTaxID(event, element, ctx, ...elementNames) {\n let dataFields = ctx.data.fields,\n taxID = _.get(dataFields, 'taxID.value', '');\n\n if (taxID === constants.EXISTS_IN_DB_DUMMY_VALUE) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'taxID', 'isHidden', true);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'taxIDInfo', 'isHidden', true);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'taxIDHeader', 'isHidden', true);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'taxID', 'isValidationDisabled', true);\n }\n },\n\n updateToCustomLayout(event, element, ctx) {\n const cardContainer = $('.outer-container').first();\n if (!cardContainer.hasClass('customLayout')) {\n cardContainer.addClass('customLayout ppvx_col-md-8');\n cardContainer.parent().addClass('ppvx_row justify-content-md-center');\n cardContainer.parent().parent().addClass('ppvx_container-fluid');\n const formElement = $('form').first();\n formElement.addClass('ppvx_col-md-8 ppvx_offset-md-2');\n formElement.parent().addClass('ppvx_row justify-content-md-center');\n formElement.parent().parent().addClass('ppvx_container-fluid');\n }\n },\n\n hideHomePageLink() {\n $('.my-paypal-link').hide();\n },\n\n // Since browser does not actually allow disabling the back button. After some research, the solution would be to add a new history state, and once user clicks the back button, a popstate event is fired, and we will call history.go(1) to go to the new state. From a user perspective, it is as if they never left the page.\n disableBackButton() {\n window.history.pushState({ urlPath: location.href }, null, location.href);\n window.addEventListener('popstate', disableBack, false);\n },\n\n enableBackButton() {\n window.removeEventListener('popstate', disableBack, false);\n },\n\n showHomePageLink() {\n $('.my-paypal-link').show();\n },\n\n disableSinglePageSignupCss() {\n $('link[rel=stylesheet][href*=\"css/single-page-signup.css\"]').remove();\n },\n showBusinessType(event, element, ctx) {\n EventHandlers.show('businessType', ctx);\n },\n\n hideFieldIfValueExists(event, element, ctx, ...elementNames) {\n const fields = ctx.data.fields,\n elementField = fields[element.attributes.name],\n elementFieldValue = elementField && elementField.value;\n if (elementFieldValue) {\n // if argument contains pageName, check if it matches current page, else hide element if it has a value\n if (!elementNames || !elementNames[0] || ctx.form.activePage === elementNames[0]) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, element.attributes.name, 'isHidden', true);\n }\n }\n },\n\n handleStakeholders(ev, element, ctx, ...elementNames) {\n let answerElementName = _.get(element, 'attributes.name'),\n stakeholderAnswer = _.get(ctx, `data.fields['${answerElementName}'].value`),\n dataFields = ctx.data.fields,\n stakeholderMetadata = _.get(dataFields, 'stakeholderMetadata.value'),\n businessType = _.get(dataFields, 'businessType.value'),\n stakeholderRoleOrder = _.get(stakeholderMetadata, businessType),\n YES = 'YES',\n NO = 'NO';\n\n // if answer to the stakeholder question is YES\n if (stakeholderAnswer === YES) {\n // show the stakeholder\n elementNames.forEach((elementName) => {\n EventHandlers.show(elementName, ctx);\n EventHandlers.enableValidations(elementName, ctx);\n });\n // if the stakeholder question if of type beneficialOwners then show the default beneficialOwners\n if (element.attributes.name === 'stakeholderQuestion_beneficialOwners') {\n ctx.dataActions.updateField('isDefaultBeneficialOwnerVisibile', 'true');\n }\n } else {\n // if answer to the stakeholder question is NO\n // hide the stakeholder\n elementNames.forEach((elementName) => {\n EventHandlers.hide(elementName, ctx);\n EventHandlers.disableValidations(elementName, ctx);\n });\n // if the stakeholder question if of type beneficialOwners then hide the default beneficialOwners\n if (element.attributes.name === 'stakeholderQuestion_beneficialOwners') {\n ctx.dataActions.updateField('isDefaultBeneficialOwnerVisibile', 'false');\n }\n }\n\n // condition to execute this code based on answer of previous question\n if (stakeholderAnswer === YES || stakeholderAnswer === NO) {\n // show the next stakeholder after answering the previous stakeholder question\n // get the next stakeholder from stakeholderRole based on current stakeholder\n\n let currentIndex = stakeholderRoleOrder.indexOf(elementNames[0]);\n\n if (currentIndex !== -1) {\n let nextIndex = currentIndex + 1,\n nextStakeholder = stakeholderRoleOrder[nextIndex];\n // for eg. if stakeholderRole for particular businessType is of the form \"PROPRIETORSHIP\": [\"beneficialOwners\", \"directors\"]\n // and current stakeholderis beneficialOwners then show the directors as next question\n\n if (nextStakeholder) {\n let nextStakeholderQuestion = 'stakeholderQuestion_' + nextStakeholder;\n EventHandlers.show(nextStakeholderQuestion, ctx);\n }\n }\n }\n\n },\n conditionallyShowStakeholders(ev, element, ctx) {\n let dataFields = ctx.data.fields,\n stakeholderMetadata = _.get(dataFields, 'stakeholderMetadata.value'),\n businessType = _.get(dataFields, 'businessType.value'),\n stakeholderRoleOrder = _.get(stakeholderMetadata, businessType),\n stakeholders = _.get(stakeholderMetadata, 'stakeholders');\n // on initial page load render the first stakeholderquestion based on metadata\n if (stakeholderRoleOrder) {\n let initialStakeholderQuestion = 'stakeholderQuestion_' + stakeholderRoleOrder[0];\n EventHandlers.show(initialStakeholderQuestion, ctx);\n }\n // disable the validations for ineligible stakeholders\n // as form has all the stakeholders and based on business type we collect particular stakeholders\n // we have disable the validations for stakeholders which we will not collect for particular business type\n if (stakeholders) {\n stakeholders.forEach((stakeholder) => {\n\n if (!_.includes(stakeholderRoleOrder, stakeholder)) {\n // disabel the validations\n let stakeholderQuestion = 'stakeholderQuestion_' + stakeholder;\n EventHandlers.disableValidations(stakeholderQuestion, ctx);\n EventHandlers.disableValidations(stakeholder, ctx);\n }\n });\n }\n },\n\n setCursorPosition(domElement, position) {\n if (!domElement || !_.isNumber(position)) {\n return;\n }\n\n /*\n using setTimeOut here to update the cursor position in nextTick. EventHandlers are synchronous so store value will get updated\n immediately before UI renders. But we want to set the cursor position after UI renders (after new value from store is shown on UI) .\n */\n setTimeout(() => {\n domElement.setSelectionRange(position, position);\n }, 0);\n },\n\n insertPercentageSymbol(elementName, ctx) {\n let domElement = document.getElementById(elementName),\n ownershipPercentageValue = _.get(ctx, `data.fields['${elementName}'].value`, ''),\n currentCursorPosition = domElement.selectionStart,\n isCursorInTheMiddle = currentCursorPosition < ownershipPercentageValue.length - 1,\n hasPercentageSign = ownershipPercentageValue.indexOf('%') !== -1;\n\n // if cursor is in the middle of a string and % is already appended\n // at the end then we don't want cursor to move to the last position\n // when user types something.we just want to keep wherever it is. so\n // if user types any new letter or backspace, cursor will not move\n // at the last position. In other case, if user starts typing we want\n // to append % at the end and move the cursor at second last position.\n if (isCursorInTheMiddle && hasPercentageSign) {\n EventHandlers.setCursorPosition(domElement, currentCursorPosition);\n } else {\n let newPercentageValue = ownershipPercentageValue.replace(/%/g, '') + '%';\n\n if (newPercentageValue === '%') {\n ctx.dataActions.updateField(elementName, '');\n } else {\n ctx.dataActions.updateField(elementName, newPercentageValue);\n\n // at this point, cursor will be moved at the end coz we are assigning a new value to this element.\n // So we will have to move it back to the second last position\n EventHandlers.setCursorPosition(domElement, newPercentageValue.length - 1);\n }\n }\n },\n\n /** This extractor is for getting the currentIndex in the list and the name of the element which is\n embedded in the list object. eg . beneficialOwners[0][beneficialOwnersTab][INDIVIDUAL][findAddressButton]\n The first index of the array in the extractor would be the current index of the list\n The last index of the array would be the element name\n */\n elementExtractor(element) {\n let extractedObj = {},\n elementName = _.get(element, 'attributes.name', ''),\n extractor = elementName.match(/([^\\]\\[]+)\\]/g);\n if (!extractor) {\n return;\n }\n extractedObj.currentIndex = parseInt(_.first(extractor).replace(']', ''));\n extractedObj.currentElementName = _.last(extractor).replace(']', '');\n return extractedObj;\n },\n\n handleDateChange(ev, element, ctx) {\n ctx.dataActions.updateField(element.attributes.name, ev);\n },\n\n handleDateBlur(ev, element, ctx) {\n const errors = this.getErrors(ev, 'blur');\n ctx.dataActions.addErrorsToMultipleFields(errors);\n },\n\n hideElementsInList(ev, element, ctx, ...elementNames) {\n let page = ctx.form.activePage,\n form = ctx.form,\n currentIndex = EventHandlers.elementExtractor(element).currentIndex,\n beneficialOwnersList = formManipulator.get(form, 'beneficialOwners');\n elementNames.forEach((elementName) => {\n // Hiding the element name\n ctx.formActions.updateElementWithinListIndex(page, beneficialOwnersList.name, currentIndex, `beneficialOwners[${currentIndex}][${elementName}]`, 'isHidden', true);\n });\n },\n\n showElementsInList(ev, element, ctx, ...elementNames) {\n let page = ctx.form.activePage,\n form = ctx.form,\n beneficialOwnersList = formManipulator.get(form, 'beneficialOwners'),\n currentIndex = EventHandlers.elementExtractor(element).currentIndex;\n elementNames.forEach((elementName) => {\n // Showing the element name\n ctx.formActions.updateElementWithinListIndex(page, beneficialOwnersList.name, currentIndex, `beneficialOwners[${currentIndex}][${elementName}]`, 'isHidden', false);\n ctx.formActions.updateElementWithinListIndex(page, beneficialOwnersList.name, currentIndex, `beneficialOwners[${currentIndex}][${elementName}]`, 'floatingLabel', 'fields.identityDocumentValue.PASSPORT_NUMBER');\n });\n },\n\n toggleBranchCode(ev, element, ctx, ...elementNames) {\n if (ev === 'head') {\n EventHandlers.hide('branchCode', ctx);\n EventHandlers.disableValidations('branchCode', ctx);\n } else {\n EventHandlers.show('branchCode', ctx);\n EventHandlers.enableValidations('branchCode', ctx);\n }\n },\n\n defaultOfcType(event, element, ctx) {\n const elemName = _.get(element, 'attributes.name');\n\n if (!_.get(ctx, `data.fields['${elemName}'].value`)) {\n _.set(ctx, `data.fields['${elemName}'].value`, 'head');\n }\n EventHandlers.disableValidations('branchCode', ctx);\n },\n\n showHidePrimaryButton(type, ctx) {\n let page = ctx.form.activePage;\n // disable the add another Link\n ctx.formActions.updateElementProperty(page, 'beneficialOwners', 'disableAddMoreLink', type);\n // hide the continue button\n if (type) {\n EventHandlers.hide('complianceContinueButton', ctx);\n } else {\n EventHandlers.show('complianceContinueButton', ctx);\n }\n },\n\n productProvision(payload, element, ctx) {\n let page = ctx.form.activePage,\n data = {},\n countryCode = ctx.content.countryCode,\n locale = ctx.content.locale,\n csrf = ctx.data._csrf;\n data._csrf = csrf;\n data.pageName = page;\n data['country.x'] = countryCode;\n data['locale.x'] = locale;\n\n // Assign the payload to data\n Object.assign(data, payload);\n\n const action = '/bizsignup/flows/signup/productProvision';\n $.ajax({\n url: action,\n data: data,\n method: 'POST',\n dataType: 'json',\n success: (response) => {\n if (response.errors) {\n ctx.dataActions.addErrorsToMultipleFields(response.errors);\n ctx.formActions.setActiveElementToFirstPendingInput(ctx.data);\n return;\n } else if (response.externalRedirect) {\n window.location = response.externalRedirect;\n return true;\n } else if (response.internalRedirect) {\n ctx.dataActions.updateFields({ 'applicationStatus': _.get(response, 'data.applicationStatus') });\n ctx.dataActions.updateFields({ 'productStatus': _.get(response, 'data.productStatus') });\n ctx.dataActions.updateFields({ 'isEmailConfirmed': _.get(response, 'data.isEmailConfirmed') });\n ctx.dataActions.updateFields({ 'productStatuses': _.get(response, 'data.productStatuses') });\n ctx.dataActions.updateFields({ 'needMoreDataProcesses': _.get(response, 'data.needMoreDataProcesses') });\n window.location.hash = '/' + response.internalRedirect;\n return;\n }\n }\n });\n\n },\n\n // Event handler to redirect user to dashboard after completion of BO collection for default US flows\n completeFlowAndRedirectToDashboard(payload, element, ctx) {\n let page = ctx.form.activePage,\n data = {},\n countryCode = ctx.content.countryCode,\n locale = ctx.content.locale,\n csrf = ctx.data._csrf;\n data._csrf = csrf;\n data.pageName = page;\n data['country.x'] = countryCode;\n data['locale.x'] = locale;\n data.pageParams = {\n isBoardingComplete: true,\n isLastPage: true\n };\n\n Object.assign(data, payload);\n\n const action = '/bizsignup/flows/signup/complete';\n $.ajax({\n url: action,\n data: data,\n method: 'POST',\n dataType: 'json',\n success: (response) => {\n if (response.errors) {\n ctx.dataActions.addErrorsToMultipleFields(response.errors);\n ctx.formActions.setActiveElementToFirstPendingInput(ctx.data);\n return;\n } else if (response.externalRedirect) {\n window.location = response.externalRedirect;\n return true;\n } else if (response.internalRedirect) {\n ctx.dataActions.updateFields({ 'applicationStatus': _.get(response, 'data.applicationStatus') });\n window.location.hash = '/' + response.internalRedirect;\n return;\n }\n }\n });\n },\n\n completeFlowAndLoadPartnerDonePage(payload, element, ctx) {\n const product = _.get(ctx, 'data.fields.product.value');\n const secondaryProducts = _.get(ctx, 'data.fields.secondaryProducts.value');\n const capabilities = _.get(ctx, 'data.fields.capabilities.value');\n // manually overriding eventHandler here due to ppcp flow configs not taking precedence over marketplace\n if (product === constants.PPCP ||\n (secondaryProducts && secondaryProducts.includes(constants.ADVANCED_VAULTING)) ||\n (capabilities && (\n capabilities.includes(apmConstants.CONSTANTS.APPLE_PAY) ||\n capabilities.includes(apmConstants.CONSTANTS.GOOGLE_PAY)\n ))) {\n EventHandlers.productProvision(payload, element, ctx);\n return;\n }\n\n let page = ctx.form.activePage,\n data = {},\n countryCode = ctx.content.countryCode,\n locale = ctx.content.locale,\n csrf = ctx.data._csrf,\n dataFields = ctx.data.fields,\n nextPage = constants.PARTNER_DONE;\n \n // we need to send dataFields to the call complete hook but it also contains fields that have shouldSend as false\n // this block of code is to remove them before we add dataFields to the callComplete hook payload\n for (let field in dataFields) {\n if (_.get(dataFields[field], 'shouldSend') === false) {\n delete dataFields[field];\n }\n }\n Object.assign(data, dataFields);\n\n data._csrf = csrf;\n data.pageName = page;\n data['country.x'] = countryCode;\n data['locale.x'] = locale;\n data.nextPage = nextPage;\n data.pageParams = {\n isBoardingComplete: true,\n isLastPage: true\n };\n\n Object.assign(data, payload);\n\n const action = '/bizsignup/flows/signup/complete';\n $.ajax({\n url: action,\n data: data,\n method: 'POST',\n dataType: 'json',\n success: (response) => {\n if (response.errors) {\n ctx.dataActions.addErrorsToMultipleFields(response.errors);\n ctx.formActions.setActiveElementToFirstPendingInput(ctx.data);\n return;\n } else if (response.externalRedirect) {\n window.location = response.externalRedirect;\n return false;\n }\n ctx.dataActions.updateFields({ 'applicationStatus': _.get(response, 'data.applicationStatus') });\n window.location.hash = '/' + nextPage;\n return true;\n },\n error: () => {\n return false;\n }\n });\n },\n\n policyRequirements(payload, element, ctx) {\n let page = ctx.form.activePage,\n data = {},\n countryCode = ctx.content.countryCode,\n locale = ctx.content.locale,\n csrf = ctx.data._csrf;\n data._csrf = csrf;\n data.pageName = page;\n data['country.x'] = countryCode;\n data['locale.x'] = locale;\n\n // Assign the payload to data\n Object.assign(data, payload);\n\n const action = '/bizsignup/flows/americas/ppcp_platforms/policyRequirements';\n $.ajax({\n url: action,\n data: data,\n method: 'POST',\n dataType: 'json',\n success: (response) => {\n if (response.errors) {\n ctx.dataActions.addErrorsToMultipleFields(response.errors);\n ctx.formActions.setActiveElementToFirstPendingInput(ctx.data);\n return;\n } else if (response.externalRedirect) {\n window.location = response.externalRedirect;\n return true;\n } else if (response.internalRedirect) {\n if (_.get(response, 'data.applicationStatus')) {\n ctx.dataActions.updateFields({ 'applicationStatus': _.get(response, 'data.applicationStatus') });\n }\n window.location.hash = '/' + response.internalRedirect;\n return;\n }\n }\n });\n\n },\n\n saveAndExitForm(ev, element, ctx) {\n let page = ctx.form.activePage,\n data = {},\n countryCode = ctx.content.countryCode,\n locale = ctx.content.locale,\n csrf = ctx.data._csrf;\n data._csrf = csrf;\n data.pageName = page;\n data['country.x'] = countryCode;\n data['locale.x'] = locale;\n\n const action = '/bizsignup/save-and-exit';\n $.ajax({\n url: action,\n data: data,\n method: 'POST',\n dataType: 'json',\n success: (response) => {\n if (response.externalRedirect) {\n window.location.href = response.externalRedirect;\n }\n }\n });\n\n },\n\n showHideBusinessFields(ev, element, ctx, ...elementNames) {\n let elemName = _.get(element, 'attributes.name'),\n bizType = _.get(ctx, `data.fields['${elemName}'].value`);\n if (elementNames.length > 0) {\n if (bizType) {\n elementNames.forEach((elementName) => {\n EventHandlers.show(elementName, ctx);\n });\n } else {\n elementNames.forEach((elementName) => {\n EventHandlers.hide(elementName, ctx);\n });\n }\n }\n },\n\n onChangeDefaultBenOwnerCheckbox(ev, element, ctx, ...elementNames) {\n let dataFields = ctx.data.fields,\n elementAttrName = element.attributes.name,\n benOwnerCheckboxDef = _.get(dataFields, elementAttrName),\n benOwnerCheckboxChecked = _.get(benOwnerCheckboxDef, 'value'),\n identityDocumentValue = 'identityDocumentValue';\n\n if (benOwnerCheckboxChecked) {\n elementNames.forEach((elementName) => {\n EventHandlers.hide(`beneficialOwners[0][${elementName}]`, ctx);\n EventHandlers.disableValidations(`beneficialOwners[0][${elementName}]`, ctx);\n });\n } else {\n elementNames.forEach((elementName) => {\n EventHandlers.show(`beneficialOwners[0][${elementName}]`, ctx);\n EventHandlers.enableValidations(`beneficialOwners[0][${elementName}]`, ctx);\n if (elementName === identityDocumentValue) {\n EventHandlers.hide(`beneficialOwners[0][${elementName}]`, ctx);\n }\n });\n }\n },\n validateOwnershipPercentage(ev, element, ctx, minValuePercentage, maxLength) {\n let form = ctx.form,\n page = ctx.form.activePage,\n beneficialOwnersList = formManipulator.get(form, 'beneficialOwners'),\n sum = 0, diff = 0,\n dataFields = ctx.data.fields;\n if (ev.type === 'change') {\n EventHandlers.insertPercentageSymbol(element.attributes.name, ctx);\n }\n\n\n beneficialOwnersList.elements.forEach((el, i) => {\n let ownershipPercentageElement = `beneficialOwners[${i}][ownershipPercentage]`,\n ownershipPercentage = dataFields[ownershipPercentageElement].value;\n\n sum = parseFloat(sum) + parseFloat(ownershipPercentage);\n diff = 100 - sum;\n\n if (sum === 100) {\n // update the length property of the list = beneficialOwnersList.elements.length\n ctx.formActions.updateElementProperty(page, 'beneficialOwners', 'maxLength', beneficialOwnersList.elements.length);\n } else if (sum > 100) {\n // throw error on the current field\n ctx.dataActions.updateFieldWithErrors(ownershipPercentageElement, ['ownershipPercentage.ownershipPercentageValue']);\n } else if (diff < minValuePercentage) {\n // If the remaining percentage for BO is less than the min value\n // update the length property of the list = beneficialOwnersList.elements.length\n ctx.formActions.updateElementProperty(page, 'beneficialOwners', 'maxLength', beneficialOwnersList.elements.length);\n } else {\n // setback to max length\n ctx.formActions.updateElementProperty(page, 'beneficialOwners', 'maxLength', maxLength);\n }\n\n });\n },\n handleMCCSearch(ev, element, ctx) {\n let defaultOptions = {\n shouldSort: true,\n tokenize: true,\n includeMatches: true,\n includeScore: true,\n threshold: 0.2,\n location: 0,\n distance: 100,\n maxPatternLength: 100,\n minMatchCharLength: 2,\n keys: ['query']\n },\n dataFields = ctx.data.fields,\n mccData = _.get(dataFields, 'mccResponse.value'),\n mccKeyword = _.get(dataFields, `${element.attributes.name}.value`),\n options = {\n mainIndex: Object.values(mccData).reduce((acc, cur) => acc.concat(cur), []),\n searchOptions: defaultOptions\n };\n EventHandlers._initHawkSearch(options);\n\n hawk.search(mccKeyword, (err, res) => { // eslint-disable-line handle-callback-err\n ctx.dataActions.updateField('mccOptions', res);\n });\n },\n removeMCCDataFromPayload(ev, element, ctx) {\n // we should not post all the MCC options onform submit\n // remove the MCC data from the payload\n ctx.dataActions.updateField('mccOptions', '');\n ctx.dataActions.updateField('mccResponse', '');\n },\n\n removeUnwantedDataFields(data) {\n // remove any fields we do not want to send ever in any request\n // these fields should have `shouldSend` set to false\n for (let field in data) {\n if (_.get(data[field], 'shouldSend') === false) {\n delete data[field];\n }\n }\n },\n modifyFieldsBasedOnValue(event, element, ctx, ...fields) {\n const fieldName = _.get(element, 'attributes.name'),\n activePage = ctx.form.activePage,\n fieldValue = _.get(ctx, `data.fields['${fieldName}'].value`);\n // if there are no fields to modify, just return\n if (!fields || fields.length === 0) {\n return;\n }\n\n // based on the action associated with the element, update them\n fields.forEach(field => {\n const action = _.get(field, 'action'),\n pageName = _.get(field, 'pageName') || activePage,\n elementName = _.get(field, 'name'),\n condition = _.get(field, 'condition');\n\n let shouldApply;\n\n if (condition === 'valueExists') {\n shouldApply = fieldValue;\n }\n\n if (action === 'hide' && shouldApply && pageName === activePage) {\n EventHandlers.hide(elementName, ctx);\n EventHandlers.disableValidations(elementName, ctx);\n } else if (action === 'show' && pageName === activePage) {\n EventHandlers.show(elementName, ctx);\n EventHandlers.enableValidations(elementName, ctx);\n } else if (action === 'disable' && shouldApply) {\n ctx.formActions.updateElementProperty(activePage, elementName, 'attributes.disabled', true);\n EventHandlers.disableValidations(elementName, ctx);\n }\n });\n },\n shouldSendShippingInfo(event, element, ctx) {\n _.set(ctx, 'data.fields.firstName.shouldSend', true);\n _.set(ctx, 'data.fields.lastName.shouldSend', true);\n _.set(ctx, 'data.fields.homeAddress.shouldSend', true);\n },\n enableCardReaderActionButton(event, element, ctx) {\n let page = ctx.form.activePage,\n pageElements = _.get(ctx, `form.pages.${page}.elements`),\n button = _.find(pageElements, { attributes: { name: 'cardReaderOrderSubmitButton' } });\n\n EventHandlers.toggleDisableButton(ctx, button, false);\n },\n selectDefaultCardReaderType(event, element, ctx) {\n ctx.dataActions.updateField('cardReaderType', 'CHIP_AND_SWIPE');\n },\n pphMobileHideCancelButton() {\n pphNative.hideCancelButton();\n },\n pphMobileShowCancelButton() {\n pphNative.showCancelButton();\n },\n pphMobileShowBackButton() {\n pphNative.showBackButton();\n },\n pphMobileHideBackButton() {\n pphNative.hideBackButton();\n },\n pphMobileShowDoneButton() {\n pphNative.showDoneButton();\n },\n pphMobileReady() {\n pphNative.ready();\n },\n pphMobileTracking(ev, element, ctx) {\n let pageName = ctx.form.activePage;\n pphNative.track(pageName);\n },\n pphMobileWebLink(element) {\n EventHandlers.pphMobileHideBackButton();\n let url = _.get(element, 'href');\n pphNative.webLink(url);\n },\n pphMobileHandoff(ev, element, ctx) {\n let token = _.get(ctx, 'data.fields.nativeRelease.value');\n pphNative.releaseToPayPalHere(token);\n },\n\n pphLogPageView(ev, elementName, ctx) {\n pphTracker.logPageView(ev, elementName, ctx);\n },\n\n pphLogClickAction(ev, elementName, ctx) {\n pphTracker.logClickAction(ev, elementName, ctx);\n },\n\n pphSDKRedirect(ev, element, ctx) {\n const pphSDKReturnUrl = _.get(ctx, 'data.fields.pphSDKPartnerData.value.partnerSDKReturnUrl');\n if (pphSDKReturnUrl) {\n window.location.href = pphSDKReturnUrl;\n }\n },\n\n pphGiftFlowRedirect(ev, element, ctx) {\n pphTracker.logPageView(ev, element, ctx);\n if (_.get(ctx, 'data.fields.pphGiftCardData.value.pphGiftCardDecision')) {\n window.location.href = '/commerce-apps/gift-cards/create?pph_onboarding_decision=' + _.get(ctx, 'data.fields.pphGiftCardData.value.pphGiftCardDecision');\n }\n },\n\n pphReviewUpdateSubmitFlag(ev, elementName, ctx, action) {\n if (action === 'edit') {\n ctx.dataActions.updateField('isPostFromEdit', true);\n } else if (action === 'upgrade') {\n let phoneNumber = _.get(ctx, 'data.fields.mobilePhoneNumber.value'),\n countryCode = _.get(ctx, 'data.fields.mobilePhoneNumber-dialCode.value'),\n reviewPage = _.get(ctx, 'form.pages.personalInfoReview.elements'),\n reviewInfoElements = _.find(reviewPage, { 'component': 'Group' }),\n phoneElement = _.find(_.get(reviewInfoElements, 'elements'), { 'name': 'reviewMobileNum' });\n _.set(phoneElement, 'text', `+${countryCode} ${phoneNumber}`);\n ctx.dataActions.updateField('isPostFromUpgrade', true);\n }\n },\n\n cfpbEnableButton(ev, elementName, ctx) {\n let page = ctx.form.activePage,\n pageElements = _.get(ctx, `form.pages.${page}.elements`),\n button = _.find(pageElements, { attributes: { name: 'upgradeAccountButton' } });\n\n EventHandlers.toggleDisableButton(ctx, button, false);\n },\n\n toggleDisableButton(ctx, button, disabled) {\n let page = ctx.form.activePage,\n buttonName = _.get(button, 'attributes.name');\n\n if (disabled) {\n ctx.formActions.updateElementProperty(page, buttonName, 'attributes.disabled', true);\n } else if (button && button.attributes) {\n // To resume the button enable/disable status along with the submitting status of current page, we need to\n // remove the disabled attribute. so far we don't have method to remove an attribute from elements,\n // that's why here directly delete the disabled attribute.\n delete button.attributes.disabled;\n }\n },\n\n setWiderLayout() {\n if (_.isUndefined(location) || _.isUndefined(location.href)) {\n return;\n }\n\n const widerLayoutPages = [\n constants.PPH_SIGNUP_START_PAGE,\n constants.PPH_APPROVED_PAGE,\n constants.PPH_AU_DEPRECATION,\n constants.PPH_PRICE_NOT_ELIGIBLE_PAGE,\n constants.PPH_MANUAL_REVIEW_PAGE,\n constants.UPGRADE_CONSUMER_ACCOUNT_LANDING\n ];\n\n let pageName = location.href.split('/').pop();\n\n if (pageName.indexOf('?') > -1) {\n pageName = pageName.substring(0, pageName.indexOf('?'));\n }\n\n if (widerLayoutPages.includes(pageName)) {\n $('.tray-nav-outer').css('max-width', '700px');\n } else if (pageName === constants.PPH_CARD_READER_ORDER_PAGE) {\n $('.tray-nav-outer').css('max-width', '450px');\n } else {\n $('.tray-nav-outer').css('max-width', '');\n }\n },\n\n pphInitClickAction(ev, element, ctx, ...locators) {\n if (!locators || locators.length === 0) {\n return;\n }\n locators.forEach(locator => {\n $(locator).click(function (clickEvent) {\n pphTracker.logClickAction(clickEvent, element, ctx);\n });\n });\n },\n\n clearHomeAddressPrefill(ev, element, ctx) {\n // in PPH US consumer upgrade, we need to clear the prefilled home address\n // to let the user enter most recent address\n ctx.dataActions.updateField('homeAddress', {});\n },\n\n prefillWithBusinessAddress(ev, element, ctx) {\n ctx.dataActions.updateField(element.attributes.name, _.get(ctx, 'data.fields.businessAddress.value', {}));\n },\n\n handleInputFieldOnBlur(ev, element, ctx) {\n if (_.get(ctx, 'data.fields.product.value') === 'pph') {\n pphTracker.logOnBlurEvent(ev, element, ctx);\n }\n },\n\n returnToPartner(payload, element, ctx) {\n let page = ctx.form.activePage,\n data = {};\n\n // Assign the payload to data\n Object.assign(data, payload);\n\n let partnerReturnURL = _.get(ctx, 'data.fields.channelStore.returnToPartnerUrl', null);\n\n if (!partnerReturnURL) {\n partnerReturnURL = constants.ONBOARDING_REBOOT_DELTA_DATA_COLLECTION.DEFAULT_RETURN_URL;\n }\n ctx.formActions.updateElementProperty(page, 'upgradeErrContinue', 'attributes.href', partnerReturnURL);\n },\n\n redirectToPPNP(event, element, ctx) {\n const mccCode = (_.get(ctx, `data.fields['merchantCategoryCode'].value`, '')).toString(),\n charityMcc = (_.get(ctx, `data.fields['mccResponse'].value.CHARITY.0.payload.value`, '')).toString(),\n action = constants.REDIRECT_CHARITY;\n if (mccCode !== charityMcc) {\n return;\n }\n let data = {};\n data._csrf = ctx.data._csrf;\n data.pageName = ctx.form.activePage;\n data.businessType = { value: constants.NONPROFIT };\n data.merchantCategoryCode = { value: mccCode };\n $.ajax({\n url: action,\n data: data,\n method: 'POST',\n dataType: 'json',\n success: () => {\n window.location.href = constants.RESUME_ENTRY_POINT;\n }\n });\n },\n\n prefillAndDisableElement(ev, element, ctx, ...args) {\n // prefill and disable element if on page provided by args[0]\n const elementName = _.get(element, 'attributes.name'),\n pageName = ctx.form.activePage,\n elementValue = _.get(ctx, `data.fields.${elementName}.value`);\n if (elementValue && args[0] === pageName) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, elementName, 'attributes.disabled', true);\n }\n },\n\n getFullName(event, element, ctx) {\n // Prefill the Full name field with firstname and last name\n const fields = ctx.data.fields;\n const elementName = _.get(element, 'attributes.name');\n const country = _.get(ctx, 'content.countryCode');\n const locale = _.get(ctx, 'content.locale');\n\n if (!fields || !element || !fields[elementName]) {\n return;\n }\n\n let worldReady = initWorldReady(locale);\n let nameFormatter = initializeNameFormat(worldReady, country);\n const fullName = {\n givenName: _.get(ctx, 'data.fields.firstName.value'),\n surname: _.get(ctx, 'data.fields.lastName.value')\n };\n fields[elementName].value = nameFormatter.format(fullName);\n },\n\n showClassicCredentials(event, element, ctx) {\n const integrationType = _.get(ctx, 'data.fields.channelStore.integrationType');\n if (integrationType !== constants.INTEGRATION_TYPES.CLASSIC_FIRST_PARTY) {\n return;\n }\n\n const credentials = _.get(ctx, 'data.fields.credentials');\n\n if (credentials) {\n EventHandlers.show('apiCredentials', ctx);\n EventHandlers.show('credentialsHeader', ctx);\n EventHandlers.show('credentialsDescription', ctx);\n EventHandlers.show('provideCredentialsToPartnerHeader', ctx);\n EventHandlers.show('provideCredentialsToPartnerDescription', ctx);\n EventHandlers.show('credentialsConfirmHeader', ctx);\n EventHandlers.show('credentialsConfirmText', ctx);\n }\n\n if (credentials && credentials.isCertificate) {\n EventHandlers.show('certificateDownloadHeader', ctx);\n EventHandlers.show('certificateDownloadText', ctx);\n EventHandlers.show('certificateDownload', ctx);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'provideCredentialsToPartnerHeader', 'text', 'firstParty.certificateInstructionsHeader');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'credentialsConfirmHeader', 'text', 'firstParty.certificateConfirmHeader');\n }\n },\n\n loadBusinessPhoneNumber(ev, element, ctx) {\n let phoneNumberFormatter = new PhoneNumberFormat({\n phoneRegion: ctx.content.countryCode, // e.g., \"US\"\n style: CONSTANTS.STYLE_INTERNATIONAL\n });\n const phoneObject = {\n 'nationalNumber': _.get(ctx, 'data.fields.businessPhoneNumber.value', '').replace(/\\D/g, ''),\n 'countryCode': _.get(ctx, 'data.fields.businessPhoneNumber-dialCode.value')\n };\n\n const formattedPhone = phoneNumberFormatter.format(phoneObject);\n\n _.set(ctx, 'form.elements.homePhoneNumberSameAsBusinessPhoneNumberCheckbox.attributes.children', formattedPhone);\n },\n updatePartnerLayout(event, element, ctx) {\n\n const product = _.get(ctx, 'data.fields.product.value');\n const isPPCP = product === 'ppcp';\n const countryCode = _.get(ctx, 'content.countryCode', null);\n const isCA = countryCode === 'CA';\n\n // Check for PPCP and CA and call CA custom layout method\n // PPCP and CA use a different layout. This method cannot be config\n // driven because markeplace/CA.json is common to EC and PPCP\n if (isPPCP && isCA) {\n EventHandlers.updateToCustomLayout(event, element, ctx);\n } else {\n const container = $('.outer-container').first();\n\n if (!container.hasClass('partner')) {\n container.addClass('partner');\n }\n }\n },\n\n setAccountTypeChecking(ev, element, ctx) {\n if (!_.get(ctx, 'data.fields.bankAccountTypeSelection.value')) {\n _.set(ctx, 'data.fields.bankAccountTypeSelection.value', 'CHECKING');\n }\n },\n\n // ctx.formActions.updateElementProperty() does not work to update classnames on form error. Using jquery makes this work\n handleRoutingNumberFocus(ev, element, ctx) {\n $('#bankCheckImage').addClass('addBank-routingNumber');\n },\n\n handleRoutingNumberBlur(ev, element, ctx) {\n $('#bankCheckImage').removeClass('addBank-routingNumber');\n },\n\n handleAccountNumberFocus(ev, element, ctx) {\n $('#bankCheckImage').addClass('addBank-accountNumber');\n },\n\n handleAccountNumberBlur(ev, element, ctx) {\n $('#bankCheckImage').removeClass('addBank-accountNumber');\n },\n\n skipCapabilityPage(ev, element, ctx) {\n let requestedCapabilityPages = _.get(ctx, 'data.fields.requestedCapabilityPages');\n\n if (requestedCapabilityPages && requestedCapabilityPages.length) {\n const nextCapability = requestedCapabilityPages.shift();\n _.set(ctx, 'data.fields.requestedCapabilityPages', requestedCapabilityPages);\n window.location.hash = '/' + constants.CAPABILITY_MAPPER[nextCapability];\n } else {\n window.location.hash = '/' + ctx.form.pages[ctx.form.activePage].next;\n }\n },\n\n // update new content for checkAccount page\n updateNewBizContent(event, element, ctx) {\n const sellerIntent = _.get(ctx, 'data.fields.channelStore.sellerIntent');\n\n if (sellerIntent === 'BUSINESS') {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'loginPageTitle', 'text', 'login.newPageTitle');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'loginPageHeader', 'text', 'login.newPageHeader');\n }\n },\n renderNewContentForPPH(ev, elementName, ctx) {\n let page = ctx.form.activePage,\n pageElements = _.get(ctx, `form.pages.${page}.elements`),\n elem = _.find(pageElements, { identifier: 'upgradeToBusinessOption' });\n if (ctx.content.pphRenderNewContent) {\n _.set(elem, 'options[0].text', 'cfpb.upgradeBusinessNewTitle');\n }\n },\n handleNameChange(event, element, context) {\n const { name, value: nameValue } = event.target;\n const elementName = element.attributes.name;\n context.dataActions.updateFields({\n [elementName]: {\n value: {\n [name]: nameValue\n }\n }\n });\n },\n\n hideHomePhoneNumberSameAsBusinessPhoneNumberCheckbox(ev, element, ctx) {\n const businessPhoneNumber = _.get(ctx, 'data.fields.businessPhoneNumber.value');\n if (!businessPhoneNumber) {\n EventHandlers.hide('homePhoneNumberSameAsBusinessPhoneNumberCheckbox', ctx);\n }\n },\n\n setElementsAttributeValue(ev, el, ctx, ...elements) {\n if (elements.length > 0) {\n elements.forEach((element) => {\n const elName = _.get(ctx, `form.elements.${element.name}.attributes.name`);\n ctx.dataActions.updateField(elName, element.value);\n });\n }\n },\n\n loadSecondaryUserError(ev, element, ctx) {\n if (_.get(ctx, 'data.fields.channelStore.isSecondaryUser')) {\n ctx.dataActions.updateFlashMessages({\n error: 'secondaryUserLogin'\n });\n delete ctx.data.fields.channelStore.isSecondaryUser;\n }\n },\n\n /* show the partner done screen when user tries to subscribe the product which is not valid for that specific country */\n showPartnerFeatureStatus(event, element, ctx) {\n const productIntentId = _.get(ctx, 'data.fields.channelStore.productIntentId'),\n product = _.get(ctx, 'data.fields.product.value');\n if (_compareResolvedProductAndProductIntent(product, productIntentId)) {\n return;\n }\n EventHandlers.hide('confirmEmailAlert', ctx);\n EventHandlers.show('errorIcon', ctx);\n EventHandlers.hide('partnerDoneMailIcon', ctx);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneHeader', 'text', 'congrats.warningHeader');\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'partnerDoneStatusText', 'text', 'congrats.warningInstruction');\n },\n /* istanbul ignore next */\n disableValidationsIfHidden(event, element, ctx) {\n const isHidden = element.isHidden;\n if (isHidden) {\n EventHandlers.disableValidations(element.attributes.name, ctx);\n }\n },\n\n /* istanbul ignore next */\n showHideSSN(event, element, ctx) {\n const countryCode = _.get(ctx, 'content.countryCode', null);\n\n // if it is US flow, then ignore this handler, since this handler is for 1099k global (non-US flow)\n if (countryCode === 'US') {\n return;\n }\n\n const nationality = _.get(ctx, 'data.fields.nationality.value', null);\n if (nationality === 'US') {\n EventHandlers.show('ssnFull', ctx);\n EventHandlers.enableValidations('ssnFull', ctx);\n } else {\n EventHandlers.hide('ssnFull', ctx);\n EventHandlers.disableValidations('ssnFull', ctx);\n EventHandlers.clearElement('ssnFull', ctx);\n }\n },\n\n /* istanbul ignore next */\n showHideEIN(event, element, ctx) {\n const countryCode = _.get(ctx, 'content.countryCode', null);\n\n // if it is US flow, then ignore this handler, since this handler is for 1099k global (non-US flow)\n if (countryCode === 'US') {\n return;\n }\n\n const country = _.get(ctx, 'data.fields.businessCountryOfIncorporation.value', null);\n const businessType = _.get(ctx, 'data.fields.businessType.value', null);\n if (country === 'US' && !constants.NON_ENTITY_BUSINESS_TYPES.includes(businessType)) {\n EventHandlers.show('employerIdentificationNumber', ctx);\n EventHandlers.enableValidations('employerIdentificationNumber', ctx);\n } else {\n EventHandlers.hide('employerIdentificationNumber', ctx);\n EventHandlers.disableValidations('employerIdentificationNumber', ctx);\n EventHandlers.clearElement('employerIdentificationNumber', ctx);\n }\n },\n\n handleRegisteredBusinessYesNoChange: (event, element, ctx, ...elementNames) => {\n const isNonRegistered = event === 'NO';\n\n // we only set the default biztype value on nonregistered biz\n if (isNonRegistered) {\n ctx.dataActions.updateField('businessType', constants.BUSINESS_TYPE_INDIVIDUAL);\n } else {\n ctx.dataActions.updateField('businessType', '');\n }\n },\n\n setBusinessTypeBasedOnRegisteredBusinessSelection: (event, element, ctx) => {\n // sets default businessType based on registeredBusinessSelection.\n const businessType = _.get(ctx, 'data.fields.businessType.value');\n const registeredBusinessOptionValue = _.get(ctx, 'data.fields.registeredBusinessOptions.value');\n\n // don't clear if a registered business type is already specified\n if (registeredBusinessOptionValue === 'YES' && businessType !== constants.BUSINESS_TYPE_INDIVIDUAL && constants.BUSINESS_TYPE_PROPRIETORSHIP) {\n return;\n }\n\n if (registeredBusinessOptionValue === constants.NO) {\n ctx.dataActions.updateField('businessType', constants.BUSINESS_TYPE_INDIVIDUAL);\n } else {\n ctx.dataActions.updateField('businessType', '');\n }\n },\n\n handleBusinessTypeBasedOnRegisteredBusinessSelection: (event, element, ctx) => {\n const registeredBusinessOptionValue = _.get(ctx, 'data.fields.registeredBusinessOptions.value');\n const bizType = _.get(ctx, 'data.fields.businessType.value');\n\n if (_.isUndefined(registeredBusinessOptionValue) && !bizType) {\n return;\n }\n\n if (registeredBusinessOptionValue === constants.NO || bizType === constants.BUSINESS_TYPE_INDIVIDUAL) {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'businessTypeQuestion', 'isHidden', true);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'businessType', 'isHidden', true);\n } else {\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'businessTypeQuestion', 'isHidden', false);\n ctx.formActions.updateElementProperty(ctx.form.activePage, 'businessType', 'isHidden', false);\n _.set(ctx, 'data.fields.businessType.value', '');\n }\n\n if ((_.get(ctx, 'content.countryCode') === constants.MX) && bizType) {\n this.updateContentKey('businessTypeDescription', ctx, `fields.businessType.description.${bizType}`);\n }\n },\n\n removeIndividualBizTypeForRegisteredBusiness: (event, element, ctx) => {\n const registeredBusinessOptionValue = _.get(ctx, 'data.fields.registeredBusinessOptions.value');\n const bizType = _.get(ctx, 'data.fields.businessType.value');\n const businessTypeOptions = _.get(ctx, 'form.elements.businessType.options');\n\n if (_.isUndefined(registeredBusinessOptionValue) && !bizType) {\n return;\n }\n\n const isRegistered = registeredBusinessOptionValue === constants.YES || bizType === constants.BUSINESS_TYPE_PARTNERSHIP;\n\n // In case the merchant identified as a registered business in the friendly content create page, hide the 'Individual' option from the options\n if (isRegistered) {\n _.set(ctx, 'form.elements.businessType.options', businessTypeOptions.filter(businessType => businessType.value !== constants.BUSINESS_TYPE_INDIVIDUAL));\n }\n },\n\n // This is a nonblocking call to preload the UOB metadata from the CDN, so that\n // when we redirect to UOB, we can get it from the browser cache and save some load time.\n // Adding this as a part of the UOB CPL improvement initiative, might remove it later\n loadWorldReadyMetaDataForUOB(event, element, ctx) {\n const { locale } = ctx.content;\n const localeArray = locale.split('-');\n axios\n .get(\n 'https://www.paypalobjects.com/eop/' +\n localeArray[0] +\n '/' +\n localeArray[0] +\n '_' +\n localeArray[1] +\n '.json',\n );\n },\n\n async checkForExistingEmail(event, element, ctx) {\n const emailFieldName = _.get(element, 'attributes.name', '');\n const fields = _.get(ctx, 'data.fields', {});\n const emailValue = _.get(fields, [emailFieldName, 'value'], '');\n const elementAttributeName = _.get(ctx, 'element.attributes.name', '');\n\n // `actionRequiredInfo` is the flag that shows the field-level, dropdown notification\n // telling the merchant they already have an existing email. If the property exists\n // on the element, the merchant should already be seeing the dropdown, meaning we don't\n // need to make the ajax call again to check if their email exists in our system.\n\n // to fix: DTSMBONBFT-121 - adding an additional check for googleOneTap to check if the prefilled email \n // address from googleOneTap is an exising mail id and if not, exising email pop up should be hidden.\n if (!emailValue || !validations.emailCheck(undefined, emailValue) || (element.actionRequiredInfo && elementAttributeName !== 'googleOneTap')) {\n return;\n }\n\n const { email } = fields;\n const { _csrf } = ctx.data;\n const { activePage } = ctx.form;\n const { countryCode, locale } = ctx.content;\n\n const requestPayload = {\n email,\n _csrf,\n pageName: activePage,\n 'country.x': countryCode,\n 'locale.x': locale\n };\n\n try {\n const response = await axios.post('/bizsignup/flows/signup', requestPayload);\n\n if (_.get(response, 'data.formUpdates.elements.email.actionRequiredInfo')) {\n ctx.formActions.updateFormProperties(response.data.formUpdates);\n return true;\n } else if (element.actionRequiredInfo && elementAttributeName === 'googleOneTap') {\n EventHandlers.hideExistingEmailNotification(event, element, ctx);\n }\n } catch (err) {\n _.invoke(window, 'PAYPAL.analytics.logJSError', err, 'ONBOARDING::BIZSIGNUP::FAILED TO CHECK EXISTING EMAIL');\n }\n return false;\n },\n\n hideExistingEmailNotification(event, element, ctx) {\n const fieldName = _.get(element, 'attributes.name');\n ctx.formActions.updateElementProperty(ctx.form.activePage, fieldName, 'actionRequiredInfo', undefined);\n }\n};\n\n// this function is after the EventHandlers definition to prevent linting\n// errors for using a varaible before defined\nfunction _showHideAddress(ev, element, ctx, addressType) {\n const elementName = _.get(element, 'attributes.name'),\n addressesDiffer = !_.get(ctx, `data.fields['${elementName}'].value`);\n if (addressesDiffer) {\n EventHandlers.show(addressType, ctx);\n EventHandlers.show(`${addressType}Title`, ctx);\n EventHandlers.enableValidations(addressType, ctx);\n ctx.formActions.updateElementProperty(ctx.form.activePage, addressType, 'shouldSend', true);\n } else {\n EventHandlers.disableValidations(addressType, ctx);\n EventHandlers.hide(addressType, ctx);\n EventHandlers.hide(`${addressType}Title`, ctx);\n ctx.formActions.updateElementProperty(ctx.form.activePage, addressType, 'shouldSend', false);\n }\n if (addressType === 'businessAddress') {\n const action = addressesDiffer ? 'show' : 'hide';\n EventHandlers[action]('businessAddressSameAsHomeAddressInfo', ctx);\n }\n}\n\nfunction _showHidePhoneNumber(ev, element, ctx, phoneNumberType) {\n const elementName = _.get(element, 'attributes.name'),\n phoneNumberDiffer = !_.get(ctx, `data.fields['${elementName}'].value`);\n if (phoneNumberDiffer) {\n EventHandlers.show(phoneNumberType, ctx);\n EventHandlers.enableValidations(phoneNumberType, ctx);\n ctx.formActions.updateElementProperty(ctx.form.activePage, phoneNumberType, 'shouldSend', true);\n } else {\n EventHandlers.disableValidations(phoneNumberType, ctx);\n EventHandlers.hide(phoneNumberType, ctx);\n ctx.formActions.updateElementProperty(ctx.form.activePage, phoneNumberType, 'shouldSend', false);\n }\n}\n\n\nmodule.exports = EventHandlers;","'use strict';\n\nlet $ = require('jquery'),\n jQuery = require('jquery'),\n nativeBridge = {};\nconst isBrowser = typeof window !== 'undefined';\n\n/*\n * ---------------------\n * Native bridge library\n * ---------------------\n */\n(() => {\n /* The following functions are used by the iOS app\n * to get data of the page (ex: page title).\n * The names (a, e, un, etc) are defined in the iOS app.\n */\n let f = {},\n k = 0,\n i = {\n a: function (a) {\n let b = JSON.stringify((f[a]).o);\n delete f[a];\n return b;\n },\n e: function (a, c) {\n let b = f[a];\n if (b) {\n b.fire(jQuery.parseJSON(c));\n }\n },\n un: function (a, c) {\n let b = f[a];\n if (b) {\n b.remove(c);\n }\n },\n c: function (a, p) {\n let b = f[a],\n e;\n if (b && b.c) {\n e = b.c(p);\n }\n if (e) {\n delete f[a];\n }\n // Fix iOS bug, in case f[a] is undefined\n if (!e && p && p.button === 'back') {\n if (window && window.history) {\n window.history.back();\n e = true;\n }\n }\n return e;\n },\n plugins: {}\n };\n\n $.pp = function (a, c, b) {\n if (arguments.length === 0) {\n return i;\n }\n\n if (!i.plugins[a] || i.plugins[a](c, b)) {\n let e = k++;\n f[e] = {\n o: c,\n c: b\n };\n if (window && window.ppAndroid) {\n window.ppAndroid.methodCall(a, JSON.stringify(c), e);\n } else {\n let iframe = jQuery(''),\n g = document.body;\n iframe.attr('src', 'jscall://' + a + ':' + e);\n g.appendChild(iframe[0]);\n g.removeChild(iframe[0]);\n delete iframe[0];\n }\n }\n };\n\n if (isBrowser) {\n window.$ = $;\n }\n\n\n nativeBridge.hideBackButton = function () {\n $.pp('nav', { 'type': 'back', 'show': false });\n };\n nativeBridge.showBackButton = function () {\n $.pp('nav', { 'type': 'back', 'show': true }, function(backButton) {\n if (backButton.button === 'back') {\n if (window && window.history) {\n window.history.back();\n return true;\n }\n }\n return false;\n });\n };\n nativeBridge.hideCancelButton = function () {\n $.pp('nav', { 'type': 'cancel', 'show': false, 'active': false });\n };\n nativeBridge.showCancelButton = function () {\n $.pp('nav', { 'type': 'cancel', 'title': 'Cancel', 'show': true, 'active': true });\n };\n nativeBridge.showDoneButton = function () {\n $.pp('nav', { 'type': 'cancel', 'title': 'Done', 'show': true, 'active': true });\n };\n nativeBridge.ready = function () {\n $.pp('ready', { 'obflowver': 'v2' });\n };\n nativeBridge.webLink = function (url) {\n $.pp('web', { 'title': '', 'url': url, 'type': 'internal', 'button': 'done' });\n };\n nativeBridge.track = function (pageName) {\n let pageNamePrefix = 'mobile:BizSignup:onboarding::';\n $.pp('track', { 'pagename': pageNamePrefix + pageName });\n };\n nativeBridge.releaseToPayPalHere = function (token) {\n // PPH app expects pageName to be allDone so it can redirect user into app with token\n $.pp('releaseToPayPalHere', { 'authToken': token, 'pageName': 'allDone' });\n };\n\n})($, jQuery, nativeBridge);\n\nmodule.exports = nativeBridge;\n"],"names":["hawk","formManipulator","require","_","$","fetch","PhoneNumberFormat","validator","validations","hawkSearch","pphNative","pphTracker","constants","apmConstants","groups","CONSTANTS","getFormattedAddress","isPostalCodeValid","initializeNameFormat","initWorldReady","axios","disableBack","window","history","go","populateAddressFields","debounce","ev","element","ctx","addressFieldName","get","page","form","activePage","countryCode","content","locale","csrf","data","_csrf","fields","currentAddress","postalCode","requestPayload","pageName","postal_code","action","ajax","url","method","dataType","success","response","addressLookupResponse","street1","neighborhood","city","newAddress","address_line_1","address_line_2","admin_area_1","admin_area_2","dataActions","updateField","Object","assign","leading","trailing","maxWait","EventHandlers","initializeFraudnetSync","PAYPAL","syncData","initSync","pta","fnSessionId","fpti","nsid","sourceId","fname","detail","type","handleSyncFraudNetData","syncFieldName","flushData","eventName","analyticsInstance","recordEvent","e","fnSyncDataInput","document","querySelector","set","value","_handleKrAgreementsTermsAndConditions","isAccepted","handleKrAgreementsMasterCheckbox","checkboxValue","handleKrAgreementsCheckbox","currentCheckbox","userAgreementValue","privacyStatementValue","enabledMarketingEmailValue","permissionsAcceptedValue","masterCheckboxValue","_getElementsToClear","elements","filter","el","_showElements","_len","arguments","length","Array","_key","elementsToClear","clearElements","clearElementsErrors","showElements","enableValidationsForMultipleElements","_hideElements","_len2","_key2","hideElements","disableValidationsForMultipleElements","handleBusinessWebsiteYesNoChange","event","_len3","elementNames","_key3","selectBusinessWebsiteOptionsYes","handleOnClickInAppLinks","elementName","click","pphMobileWebLink","this","pphMobileHandoff","navigateBackInBrowserHistory","preventDefault","back","handlePasswordBlur","formActions","updateElementProperty","_findFormElement","elementType","splitElementNames","split","currentPageElements","_validateElements","validationErrors","validationKey","eventType","eventLabel","elementData","errors","elementValue","getErrors","attributes","name","addErrorsToMultipleFields","_initHawkSearch","options","_resetFpti","link","eccd","erpg","erfd","item","cfft","reqrmnt_type","is_enabled","optsel","ref_url","response_duration","bztp","show","disable","updateContentKey","textKey","hide","_len4","_key4","forEach","_len5","_key5","disableElements","_len6","_key6","_len7","_key7","_len8","_key8","disableValidations","enableValidations","enableValidationsForElementAtListIndex","listName","index","updateElementWithinListIndex","disableValidationsForElementAtListIndex","hideValueInTextInput","showValueInTextInput","isVowel","str","VOWELS","includes","charAt","toLowerCase","showFieldsIfNoValue","fieldName","fieldValue","_len9","_key9","hideFieldsIfValueExists","handleNotSupportedBusinessType","NON_ENTITY_BUSINESS_TYPES","_len10","_key10","handleChangeOnUpgradeBusinessType","eligibilityMessageForCreateNewAccount","newAccountButton","upgradeButton","bizType","businessTypeContent","resolveContent","handleValidationFPTI","isEmpty","join","handleFPTIImpression","bizTypeOptions","additionalBizTypeOptions","isArray","found","some","obj","getOccupationList","occOptionList","map","occResponse","occObj","text","getIndustriesList","industriesList","handleChangeOnBusinessType","businessDate","_len11","_key11","indexOf","splice","push","checkIfValidCCStatementName","businessDBAName","businessLegalName","businessNameUsedForCCStatementName","hasFewerThanXNumbers","MAX_NUMS_ALLOWED_IN_CC_STATEMENT_NAME","handlePartnerList","elemName","handleFPTIClicks","resetFPTIBefore","resetFPTIAfter","undefined","analytics","Analytics","recordClick","handleFPTIClicksById","desiredTrackingIds","trackingName","target","id","handleFPTIInputValue","fptiTagSource","_len12","_key12","clearElement","_len13","_key13","updateFieldWithErrors","clearElementError","showModal","modal","setActiveModal","setHomeCheckboxOnPageLoad","setHomePhoneNumberCheckboxOnPageLoad","loadBusinessAddress","businessAddress","stateAndCountry","contentValue","addressObj","formattedAddress","updateElementsOnHomeCheckboxChange","currentElementName","isCheckboxHidden","isHidden","checked","businessAddressValue","emptyAddress","admin_area_3","homeAddress","updateElementsOnPhoneCheckboxChange","businessPhoneValue","homePhoneNumber","hideElementsForBusinessInfoPage","field","initializeElementsOnHomeCheckbox","formatDate","date","dateFormat","format","replace","substring","pattern","showHideHomeAddress","_showHideAddress","showHideBusinessAddress","showHideHomePhoneNumber","phoneNumberType","phoneNumberDiffer","_showHidePhoneNumber","showStakeholderPrefillAlert","partnerPrefillData","MPDSData","partnerChannel","showAutoTransferStatus","showApplicationStatus","PRODUCT_STATUS","applicationStatus","baseIconClass","SUBSCRIBED","MANUAL_REVIEW","NEED_MORE_DATA","DECLINED","logJSError","Error","handleDataAPICongratsMessage","showPartnerPPCPSubscriptionStatus","isPpcp","isCasualSeller","isEmailConfirmed","isEU","secondaryProducts","contentField","SUBSCRIBED_WITH_LIMIT","EU_DEXTER_URL","showPartnerProApplicationStatus","handleBusinessAddress","handleAddressChange","address","handleAddressChangeWithLookup","values","i","handleAddressBlur","logOnBlurEvent","handleCreditCardChange","handleCreditCardErrors","error","updateFields","handlePro30SummaryTableChange","checkIfCardOnFile","cards","alreadyOnFile","updatePhoneValidationMetadata","_ref","_asyncToGenerator","country","elementValidations","x","result","json","updateWorldReadyMetadata","worldReadyMetadata","clearWorldReadyPhoneHandler","from","Set","concat","_x","_x2","_x3","_x4","apply","handleTradingName","handleBusinessTypePage","bizTypeValue","_len14","_key14","EIN_REQUIRED_PRO_BUSINESS_TYPES","handleTaxIdErrorMessageBasedOnBizType","ENTITY_BUSINESS_TYPES","handleShowAndHideTaxID","dataFields","EXISTS_IN_DB_DUMMY_VALUE","updateToCustomLayout","cardContainer","first","hasClass","addClass","parent","formElement","hideHomePageLink","disableBackButton","pushState","urlPath","location","href","addEventListener","enableBackButton","removeEventListener","showHomePageLink","disableSinglePageSignupCss","remove","showBusinessType","hideFieldIfValueExists","_len15","_key15","elementField","handleStakeholders","answerElementName","stakeholderAnswer","stakeholderMetadata","businessType","stakeholderRoleOrder","_len16","_key16","currentIndex","nextStakeholder","nextStakeholderQuestion","conditionallyShowStakeholders","stakeholders","initialStakeholderQuestion","stakeholder","stakeholderQuestion","setCursorPosition","domElement","position","isNumber","setTimeout","setSelectionRange","insertPercentageSymbol","getElementById","ownershipPercentageValue","currentCursorPosition","selectionStart","isCursorInTheMiddle","hasPercentageSign","newPercentageValue","elementExtractor","extractedObj","extractor","match","parseInt","last","handleDateChange","handleDateBlur","hideElementsInList","beneficialOwnersList","_len17","_key17","showElementsInList","_len18","_key18","toggleBranchCode","defaultOfcType","showHidePrimaryButton","productProvision","payload","setActiveElementToFirstPendingInput","externalRedirect","internalRedirect","hash","completeFlowAndRedirectToDashboard","pageParams","isBoardingComplete","isLastPage","completeFlowAndLoadPartnerDonePage","product","capabilities","PPCP","ADVANCED_VAULTING","APPLE_PAY","GOOGLE_PAY","nextPage","PARTNER_DONE","policyRequirements","saveAndExitForm","showHideBusinessFields","_len19","_key19","onChangeDefaultBenOwnerCheckbox","elementAttrName","benOwnerCheckboxDef","benOwnerCheckboxChecked","_len20","_key20","validateOwnershipPercentage","minValuePercentage","maxLength","sum","diff","ownershipPercentageElement","ownershipPercentage","parseFloat","handleMCCSearch","mccData","mccKeyword","mainIndex","reduce","acc","cur","searchOptions","shouldSort","tokenize","includeMatches","includeScore","threshold","distance","maxPatternLength","minMatchCharLength","keys","search","err","res","removeMCCDataFromPayload","removeUnwantedDataFields","modifyFieldsBasedOnValue","_len21","_key21","shouldApply","shouldSendShippingInfo","enableCardReaderActionButton","pageElements","button","find","toggleDisableButton","selectDefaultCardReaderType","pphMobileHideCancelButton","hideCancelButton","pphMobileShowCancelButton","showCancelButton","pphMobileShowBackButton","showBackButton","pphMobileHideBackButton","hideBackButton","pphMobileShowDoneButton","showDoneButton","pphMobileReady","ready","pphMobileTracking","track","webLink","token","releaseToPayPalHere","pphLogPageView","logPageView","pphLogClickAction","logClickAction","pphSDKRedirect","pphSDKReturnUrl","pphGiftFlowRedirect","pphReviewUpdateSubmitFlag","phoneNumber","reviewPage","reviewInfoElements","phoneElement","cfpbEnableButton","disabled","buttonName","setWiderLayout","isUndefined","widerLayoutPages","PPH_SIGNUP_START_PAGE","PPH_APPROVED_PAGE","PPH_AU_DEPRECATION","PPH_PRICE_NOT_ELIGIBLE_PAGE","PPH_MANUAL_REVIEW_PAGE","UPGRADE_CONSUMER_ACCOUNT_LANDING","pop","css","PPH_CARD_READER_ORDER_PAGE","pphInitClickAction","_len22","locators","_key22","locator","clickEvent","clearHomeAddressPrefill","prefillWithBusinessAddress","handleInputFieldOnBlur","returnToPartner","partnerReturnURL","ONBOARDING_REBOOT_DELTA_DATA_COLLECTION","DEFAULT_RETURN_URL","redirectToPPNP","mccCode","toString","charityMcc","REDIRECT_CHARITY","NONPROFIT","merchantCategoryCode","RESUME_ENTRY_POINT","prefillAndDisableElement","getFullName","worldReady","nameFormatter","fullName","givenName","surname","showClassicCredentials","INTEGRATION_TYPES","CLASSIC_FIRST_PARTY","credentials","isCertificate","loadBusinessPhoneNumber","phoneNumberFormatter","phoneRegion","style","STYLE_INTERNATIONAL","phoneObject","formattedPhone","updatePartnerLayout","isPPCP","container","setAccountTypeChecking","handleRoutingNumberFocus","handleRoutingNumberBlur","removeClass","handleAccountNumberFocus","handleAccountNumberBlur","skipCapabilityPage","requestedCapabilityPages","nextCapability","shift","CAPABILITY_MAPPER","pages","next","updateNewBizContent","renderNewContentForPPH","elem","identifier","pphRenderNewContent","handleNameChange","context","nameValue","hideHomePhoneNumberSameAsBusinessPhoneNumberCheckbox","setElementsAttributeValue","_len23","_key23","elName","loadSecondaryUserError","updateFlashMessages","channelStore","isSecondaryUser","showPartnerFeatureStatus","productIntentId","_compareResolvedProductAndProductIntent","resolvedProduct","productIntent","EXPRESS_CHECKOUT","EXPRESS_CHECKOUT_RESOLVED_PRODUCTS","disableValidationsIfHidden","showHideSSN","showHideEIN","handleRegisteredBusinessYesNoChange","BUSINESS_TYPE_INDIVIDUAL","setBusinessTypeBasedOnRegisteredBusinessSelection","registeredBusinessOptionValue","BUSINESS_TYPE_PROPRIETORSHIP","NO","handleBusinessTypeBasedOnRegisteredBusinessSelection","MX","removeIndividualBizTypeForRegisteredBusiness","businessTypeOptions","YES","BUSINESS_TYPE_PARTNERSHIP","loadWorldReadyMetaDataForUOB","localeArray","checkForExistingEmail","emailFieldName","emailValue","elementAttributeName","emailCheck","actionRequiredInfo","email","post","updateFormProperties","formUpdates","hideExistingEmailNotification","invoke","addressType","addressesDiffer","module","exports","jQuery","nativeBridge","isBrowser","f","k","a","b","JSON","stringify","o","c","fire","parseJSON","un","p","plugins","pp","ppAndroid","methodCall","iframe","g","body","attr","appendChild","removeChild","backButton"],"sourceRoot":""}