{"version":3,"file":"buttonFactory.ad2f48cb8b36c230df2f.js","mappings":"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AElBqL,GACEjK,EACA+I,GACA7I,EACAmG,EAAgBxH,mBAElBoL,GACEjK,EACA+I,GACA7I,EACAmG,EAAgBvH,mBAGU,UAAxBkB,EAAarQ,SACfuQ,EAAamG,EAAgBe,eAAef,EAAgByC,aAAWpxB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACpE2uB,EAAgBhI,cACf2B,EAAa+I,IAA4BA,KAC1C1C,EAAgB/H,WACf0B,EAAa+I,IAA4BA,MAI/C,IAAMwC,EAAqBxb,KAAKC,UAC9BkQ,EAAamG,EAAgBe,gBAK/B,OAFAlH,EAAamG,EAAgBe,eAAiBmE,EAEvCrL,CACT,meC93BMsL,EAAwB,CAC5B,SACA,aACA,KACA,gBACA,WACA,cACA,gBACA,KACA,mBACA,gBACA,oBACA,WACA,YACA,cACA,KACA,cACA,UACA,cACA,SACA,aACA,UACA,aACA,iBAMIC,EAA8B,CAClC,aACA,gBACA,WACA,YACA,cACA,gBACA,oBACA,sBACA,sBACA,wBACA,qBACA,KACA,KACA,KACA,MACA,WACA,WACA,mBACA,mBACA,mBACA,eACA,kBACA,qBACA,oBACA,gBACA,cACA,KACA,cACA,YACA,gBACA,MACA,OACA,KACA,UACA,SACA,0BACA,yBACA,WACA,aACA,cACA,kBACA,sBACA,gBACA,eACA,UACA,YACA,KACA,WACA,gBACA,eACA,YACA,oBACA,WACA,WACA,WACA,aACA,gBACA,gBACA,gBACA,UACA,cACA,aACA,sBACA,sBACA,KACA,KACA,KACA,gBACA,UACA,SACA,aACA,KACA,qBACA,WACA,eACA,qBACA,mBACA,mBACA,eACA,mBACA,yBACA,sBACA,eACA,MACA,MACA,MACA,QACA,cACA,cACA,cACA,WACA,KACA,KACA,KACA,MACA,WACA,WACA,qBACA,aACA,SACA,cACA,MAOIC,EAAW,SAACC,GAChB,OAAOC,IAAKD,EAAiB,OAC/B,EAEME,EAAqB,SAACF,EAAiBG,GAC3C,OAAOF,IAAKE,GAAO,SAAC/c,GAClB,OAVsB,SAAC4c,EAAiBrmB,GAC1C,OAAOR,I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AW,IAEbC,eAAgB,CACdH,UAAU,EACVC,QAAS,4CACTC,UAAW,GAEbE,IAAK,CACHJ,UAAU,EACVC,QAAS,SACTC,UAAW,EACXG,UAAW,KAIjBC,+BAAgC,KAEhCC,2BAA4B,qCAC5BC,sBAAuB,+BACvBC,uBAAwB,aAExBz7C,QAAS,CACP07C,iBAAkB,mBAClBC,mBAAoB,qBACpBC,6BAA8B,+BAC9BC,eAAgB,iBAChBriC,uBAAwB,yBACxBsiC,aAAc,eAGdC,kCAAmC,oCACnCC,oCAAqC,uCAIvCC,aAAc,CACZC,QAAS,UACTC,SAAU,WACVC,8BAA+B,gCAC/B7iC,cAAe,iBAGjBthB,WAAY,CACVokD,oCAAqC,sCACrCC,uCACE,yCACFC,oCAAqC,sCACrCC,gDACE,sCACFC,uCACE,yCACFC,qCACE,uCACFC,uCACE,yCACFC,mDACE,qDACFC,qDACE,uDACFC,kCAAmC,oCACnCC,oCAAqC,sCACrCC,qCACE,uCACFC,wCACE,0CACFC,0CACE,4CACFC,uCACE,yCACFC,uCACE,yCACFC,uCACE,yCACFC,wCACE,0CACFC,6BAA8B,+BAC9BC,gCAAiC,kCACjCC,gCAAiC,kCACjCC,+BAAgC,iCAChCC,+BAAgC,iCAChCC,kCAAmC,oCACnC1lD,+CACE,iDACF2lD,6CACE,2CACFC,6CACE,0DACFC,2CACE,wDACFC,gDACE,iDACFC,2CACE,8CACFC,0CACE,gDACFC,4CACE,kDACFC,+BACE,iDACFC,0BAA2B,4BAC3BC,6BAA8B,+BAC9BC,4BAA6B,8BAC7BC,6BAA8B,+BAC9BC,gCAAiC,kCACjCC,6BAA8B,+BAC9BC,oCAAqC,qCACrCC,4BAA6B,yCAC7BC,2BAA4B,gDAC5BC,+BAAgC,4CAChCC,6BACE,kDACFC,qCACE,0DACFC,qCACE,kDACFC,yCACE,kDACFC,yCACE,sDACFC,uCACE,oDACFC,oCACE,iDACFC,yCACE,sDACFC,yCACE,sDACFC,oCACE,uDACFC,8CACE,2DACFC,kCACE,8CACFC,yCACE,8CACFC,8CACE,mDACFC,4CACE,iDACFC,yCACE,gDACFC,2CACE,gD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","sources":["webpack:///./actions/AppActions.js","webpack:///./components/coverFee/feeUtils.js","webpack:///./components/withTheme.js","webpack:///./dispatcher/AppDispatcher.js","webpack:///./fpti/analytics.js","webpack:///./fpti/fpti.js","webpack:///./fpti/fptiConstants.js","webpack:///./fpti/helper.js","webpack:///./pages/spinner/Spinner.js","webpack:///./utility/lazyLoader.js","webpack:///./pages/common/FallbackSpinner.js","webpack:///./pages/globalnav/GlobalNavHeader.js","webpack:///./pages/globalnav/GlobalNavFooter.js","webpack:///./pages/buttonFactory.js","webpack:///./setup/utilsV3/modalUtils.js","webpack:///./routes/configureHistory.js","webpack:///./routes/publicPath.js","webpack:///./setup/actions/actionsButtonFactory.js","webpack:///./setup/actions/actionsCampaigns.js","webpack:///./setup/actions/actionsCommon.js","webpack:///./setup/actions/actionsDonationInsights.js","webpack:///./setup/campaigns/manager/actionsManager.js","webpack:///./setup/clientConstants.js","webpack:///./utility/urlUtils.js","webpack:///./setup/componentsV3/buttonManager/actionsManager.js","webpack:///./setup/componentsV3/partner/utils/partnerUtils.js","webpack:///./setup/componentsV3/partner/utils/voucherConstants.js","webpack:///./setup/lib/buttonModelV3.js","webpack:///./setup/lib/campaignsModel.js","webpack:///./setup/lib/extraVariables.js","webpack:///./setup/reducers/reducerButtonFactoryV3.js","webpack:///./setup/reducers/reducerCampaigns.js","webpack:///./setup/componentsV3/partner/actionsPartner.js","webpack:///./setup/reducers/reducerApplication.js","webpack:///./setup/componentsV3/partner/reducerPartner.js","webpack:///./setup/componentsV3/buttonManager/reducerManager.js","webpack:///./setup/reducers/index.js","webpack:///./setup/store/configureStore.js","webpack:///./setup/utilsV3/amountUtils.js","webpack:///./setup/utilsV3/analytics.js","webpack:///./setup/utilsV3/authUtils.js","webpack:///./setup/utilsV3/buttonFactoryUtils.js","webpack:///./setup/utilsV3/buttonImage.js","webpack:///./setup/utilsV3/campaignUtils.js","webpack:///./setup/utilsV3/commonUtils.js","webpack:///./setup/utilsV3/dateUtils.js","webpack:///./setup/utilsV3/fptiConstants.js","webpack:///./setup/utilsV3/headerUtils.js","webpack:///./setup/utilsV3/helpers.js","webpack:///./setup/utilsV3/serverProps.js","webpack:///./setup/utilsV3/spinnerUtils.js","webpack:///./stores/AppStore.js","webpack:///./utility/constants.js","webpack:///./utility/polyfillFetch.js","webpack:///./utility/domUtils.js","webpack:///./utility/formator.js","webpack:///./utility/geoUtils.js","webpack:///./utility/getTemplateData.js","webpack:///./utility/helper.js","webpack:///./utility/inContextDonation.js","webpack:///./utility/personalizedMessages.js","webpack:///./utility/ppccUtils.js","webpack:///./utility/productIntegrationUtils.js","webpack:///./utility/queryStringHelper.js","webpack:///./utility/worldReadyUtils.js"],"sourcesContent":["import AppDispatcher from '../dispatcher/AppDispatcher';\nimport * as AppConstants from '../utility/constants';\n\nexport function changeAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_AMOUNT,\n item: item,\n });\n}\n\nexport function changeSymbol(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_SYMBOL,\n item: item,\n });\n}\n\nexport function changeCode(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_CODE,\n item: item,\n });\n}\n\nexport function changeFormatedAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_FORMATED_AMOUNT,\n item: item,\n });\n}\n\nexport function changeRecurring(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_RECURRING,\n item: item,\n });\n}\n\nexport function changeSelectedRecurringFrequency(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_RECURRING_FREQUENCY,\n item: item,\n });\n}\n\nexport function changeRecurringModalStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.RP_MODAL_CLOSED,\n item: item,\n });\n}\n\nexport function changeCoverFee(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_COVER_FEE,\n item: item,\n });\n}\n\nexport function changeAnonymousStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_ANONYMOUS_STATUS,\n item: item,\n });\n}\n\nexport function changeFeeAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_FEE_AMOUNT,\n item: item,\n });\n}\n\nexport function changeFormatedFeeAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_FORMATED_FEE_AMOUNT,\n item: item,\n });\n}\n\nexport function changeAmountBeforeFee(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_AMOUNT_BEFORE_FEE,\n item: item,\n });\n}\n\nexport function changeNote(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_NOTE,\n item: item,\n });\n}\n\nexport function changeCountry(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_COUNTRY,\n item: item,\n });\n}\n\nexport function updateConfirmation(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_CONFIRMATION,\n item: item,\n });\n}\n\nexport function updatePostBackData(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.POST_BACK_DATA,\n item: item,\n });\n}\n\nexport function updateCurrentPage(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_CURRENT_PAGE,\n item: item,\n });\n}\n\nexport function updateServerErrors(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SERVER_ERRORS,\n item: item,\n });\n}\n\nexport function updatePaymentError(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.PAYMENT_ERROR,\n item: item,\n });\n}\n\nexport function updateSignUpError(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SIGN_UP_ERROR,\n item: item,\n });\n}\n\nexport function updateFundingOptions(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.FUNDING_OPTIONS,\n item: item,\n });\n}\n\nexport function updateEmail(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.EMAIL,\n item: item,\n });\n}\n\nexport function updateBillingAddress(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.BILLING_ADDRESS,\n item: item,\n });\n}\n\n/**\n * Sets the donation amount type\n * @param {String} type type of donation amount - \"preset\" or \"userinput\"\n */\nexport function updateDonationAmountType(donationAmountType) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_DONATION_AMOUNT_TYPE,\n item: donationAmountType,\n });\n}\n\n/**\n * Sets the giftaidit type\n * @param {Boolean}\n */\nexport function updateGiftaidItFlag(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.GIFT_AID_IT,\n item: item,\n });\n}\n\n/**\n * Sets the shareAddress checkbox\n * @param {Boolean} shareAddress checkbox value\n */\nexport function updateShareAddress(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_SHARE_ADDRESS,\n item: item,\n });\n}\n\n/**\n * Sets the any card releated errors\n * @param {String} card error\n */\nexport function updateAddCardError(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.ADD_CARD_ERROR,\n item: item,\n });\n}\n\nexport function updateSelectedProgram(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SELECTED_PROGRAM,\n item: item,\n });\n}\n\nexport function changeCardSpec(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_CARD_SPEC,\n item: item,\n });\n}\n\nexport function saveFormData(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.SAVE_FORM_DATA,\n item,\n });\n}\n\nexport function updateSelectedPresetButtonId(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SELECTED_PRESET_BUTTON_ID,\n item,\n });\n}\n\nexport function updateThreeDSData(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_THREEDS_DATA,\n item,\n });\n}\n\nexport function showLanguageSelector(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.SHOW_LANGUAGE_SELECTOR,\n item,\n });\n}\n\nexport function updateOrderStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_ORDER_STATUS,\n item,\n });\n}\n\nexport function updatePPCCStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_PPCC_STATUS,\n item,\n });\n}\n","import AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport { formatAmount, normalizeNumber } from '../../utility/formator';\nimport TemplateData from '../../utility/getTemplateData';\nimport { getParameterByName } from '../../utility/queryStringHelper';\nimport templateData from '../../utility/getTemplateData';\n\nexport const isOptInCoverFee = () => {\n return AppStore.getCoverFeeOptInStatus() === 'checked';\n};\n\nexport const isAtLandingPage = () => {\n const isGuestReviewPage =\n window.location.pathname.includes('guest') ||\n ![undefined, null].includes(getParameterByName('signup')) ||\n getParameterByName('countryChange');\n return !isGuestReviewPage;\n};\n\nexport const computeFeeAmount = () => {\n const donationAmount = parseFloat(AppStore.getDonationAmount()),\n flatFee = parseFloat(TemplateData.flatFee),\n feeRate = parseFloat(TemplateData.feeRate) * 0.01;\n\n if (donationAmount > 0) {\n // X is the full amount the donor needs to pay for the charity to receive $100\n // X - .03X - $0.30 = $100\n // If X is the full amount the donor needs to pay for the charity to receive Y\n // X - feeRate*X - flatFee = Y\n // X = (Y + flatFee) / (1 - feeRate)\n const totalAmountAfterFee = (donationAmount + flatFee) / (1 - feeRate),\n feeAmount = totalAmountAfterFee - donationAmount;\n return feeAmount;\n }\n\n return 0;\n};\n\nexport const computeAmountAfterFee = (donationAmount, feeAmount) => {\n const totalAmount = parseFloat(donationAmount) + normalizeNumber(feeAmount);\n\n return totalAmount.toString();\n};\n\nexport const setFeeAmountInStore = () => {\n const feeAmount = computeFeeAmount(),\n currencyCode = AppStore.getDonationCode(),\n formatedFeeAmount = formatAmount({\n currency: currencyCode,\n value: feeAmount,\n style: 'international',\n }),\n formatedFeeAmountValue = feeAmount;\n\n AppActions.changeFeeAmount({ feeAmount: formatedFeeAmountValue });\n AppActions.changeFormatedFeeAmount({\n formatedFeeAmount,\n });\n};\n\nexport const updateDonationAmount = (amount) => {\n const currencyCode = AppStore.getDonationCode(),\n formatedAmount = formatAmount({\n currency: currencyCode,\n value: amount,\n });\n AppActions.changeAmount({ amount });\n AppActions.changeFormatedAmount({ formatedAmount });\n};\n\nexport const restoreDonationAmount = () => {\n const rawAmount = AppStore.getAmountBeforeFee() || TemplateData.rawAmount;\n updateDonationAmount(rawAmount.toString());\n};\n\nexport const optOutCoverFee = () => {\n AppActions.changeCoverFee({ coverFee: 'unchecked' });\n AppActions.changeFeeAmount({ feeAmount: 0 });\n AppActions.changeFormatedAmount({ formatedFeeAmount: '' });\n};\n\nexport const shouldSelectPresetAmount = (amount) => {\n if (!amount) {\n return false;\n }\n if (templateData.presetAmounts?.length === 3) {\n const presetAmounts = TemplateData.presetAmounts;\n return presetAmounts.map(Number).includes(Number(amount));\n }\n};\n","import React from 'react';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react';\nimport { PAYPAL_THEME as PPUI4_PAYPAL_THEME } from 'ppui4theme';\nimport { ThemeProvider } from '@emotion/react';\nimport { isAndroidWebView } from '../utility/productIntegrationUtils';\n\n// We need to keep this as a function for it to not be memoized and apply\n// the styles when coming back from XO\nconst shouldApplyPPUI4Styles = () =>\n isAndroidWebView() && window.location.pathname.includes('/donate/member');\n\nfunction withTheme(WrappedComponent, theme = 'v2') {\n return (props) => {\n return (\n \n \n \n );\n };\n}\n\nexport default withTheme;\n","import { Dispatcher } from 'flux';\nimport assign from 'object-assign';\n\nconst AppDispatcher = assign(new Dispatcher(), {\n handleViewAction(action) {\n this.dispatch({\n source: 'VIEW_ACTION',\n action: action,\n });\n },\n});\n\nexport default AppDispatcher;\n","import { FPTI_TAGS } from './fptiConstants';\nimport { updateGlobalFPTI } from './helper';\n\nconst analytics = window?.PAYPAL?.analytics?.instance;\n\n// Start client side error tracking\nwindow?.PAYPAL?.analytics?.startClientErrorTracking();\n\nexport const trackEventWithData = (spec = {}, additionalData = {}) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n const fptiData = {\n ...window.fpti,\n ...spec.data,\n ...additionalData,\n tsrce: 'donatenodeweb',\n };\n // ref: https://github.paypal.com/pages/Tracking-R/client-side-instrumentation/docs/fptiAnalytics.Analytics.html#recordEvent\n // the 3rd param is set to false meaning the data payload won't be merged\n // with window.fpti object\n analytics?.recordEvent(spec.event_name, fptiData, false);\n};\n\nexport const trackEventWithGlobalData = (spec = {}, additionalData = {}) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n const fptiData = {\n ...spec.data,\n ...additionalData,\n tsrce: 'donatenodeweb',\n };\n analytics?.recordEvent(spec.event_name, fptiData, true);\n};\n\nexport const trackPageLoad = (globalData, onceData, fromSetup = false) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n globalData.tsrce = 'donatenodeweb';\n analytics?.recordImpression({ data: globalData }, onceData, fromSetup);\n};\n\nexport const trackClick = (data) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n data.tsrce = 'donatenodeweb';\n analytics?.recordClick({ data });\n};\n\nexport const trackError = (data) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n data.tsrce = 'donatenodeweb';\n analytics?.recordError({ data });\n};\n","import templateData from '../utility/getTemplateData';\nimport { isExternalFlow } from '../utility/productIntegrationUtils';\nimport { EVENT_NAME, SCREEN_NAME } from '../utility/constants';\nimport {\n CLOSE_SHEET_REASONS,\n DISMISS_METHODS,\n FPTI_TAGS,\n LINK_NAME,\n LOADING_STATES,\n PAGE_SPEC,\n} from './fptiConstants';\nimport {\n getAnonymousStatus,\n getConfirmationData,\n getDefaultPageSpec,\n getDonationAmount,\n getExternalFlowData,\n getFeeData,\n getFeeDataFromTemplateData,\n getFeePayer,\n getLandingPageData,\n getNoteData,\n getRecurringStatus,\n getThreeDSData,\n getToken,\n getUiType,\n updateGlobalRespDuration,\n getSelectedRecurringFrequency,\n updateGlobalFPTI,\n checkAndReplaceInternalErrWithDnwErr,\n} from './helper';\nimport {\n trackPageLoad,\n trackClick,\n trackError,\n trackEventWithData,\n} from './analytics';\nimport isNna from '../utility/nna';\nimport { isAtLandingPage } from '../components/coverFee/feeUtils';\nimport { getParameterByName } from '../utility/queryStringHelper';\nconst {\n country,\n donationAmountEditable,\n selectedPresetButtonId,\n sessionDeprecationEnabled,\n} = templateData;\n\nexport const trackLandingPageIM = (data) => {\n const shouldTrackExternalFlowData = isExternalFlow();\n const onceData = {\n ...getAnonymousStatus(),\n ...getNoteData(data),\n ...(shouldTrackExternalFlowData\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_DONATE_SETUP_SCREEN_SHOWN,\n }\n : { [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_SCREEN_SHOWN }),\n ...(selectedPresetButtonId\n ? {\n [FPTI_TAGS.SELECTED_PRESET_BUTTON_ID]: selectedPresetButtonId,\n }\n : {}),\n ...getFeeDataFromTemplateData(),\n ...getDonationAmount(),\n ...(data.donationFraudEligibility && {\n donation_fraud_eligible: data.donationFraudEligibility,\n }),\n };\n\n const globalData = {\n [FPTI_TAGS.UI_TYPE]: getUiType(),\n [FPTI_TAGS.AMOUNT_EDIT_ALLOWED]: donationAmountEditable,\n [FPTI_TAGS.VERSION]: sessionDeprecationEnabled ? 'V2' : 'V1',\n ...getExternalFlowData(),\n ...PAGE_SPEC.LANDING_PAGE,\n ...(getParameterByName('fromUOB') ? { [FPTI_TAGS.SOURCE]: 'uob' } : {}),\n };\n\n updateGlobalFPTI(globalData);\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackRecurringFrequencySelectionClick = () => {\n const data = {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_FREQUENCY_PRESSED,\n };\n updateGlobalFPTI({\n ...getRecurringStatus(),\n ...getSelectedRecurringFrequency(),\n });\n trackClick(data);\n};\n\nexport const trackGuestFormIM = ({ isOnboarding = false } = {}) => {\n const onceData = {\n ...getDonationAmount(),\n ...getRecurringStatus(),\n ...(isExternalFlow()\n ? { [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DW_GIVING_GUEST_FORM_SCREEN_SHOWN }\n : { [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_GUEST_FORM_SCREEN_SHOWN }),\n ...(isNna(country) && !isOnboarding\n ? { [FPTI_TAGS.OFFER_TYPE]: 'nna' }\n : {}),\n };\n const globalData = {\n ...(isOnboarding\n ? { ...PAGE_SPEC.ONBOARDING_GUEST_FORM }\n : { ...PAGE_SPEC.GUEST_FORM }),\n ...getSelectedRecurringFrequency(),\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackMemberReviewPageIM = ({\n status,\n statusCode,\n processStatus,\n}) => {\n const fromUOB = getParameterByName('fromUOB');\n const onceData = {};\n const globalData = {\n [FPTI_TAGS.STATUS]: status,\n [FPTI_TAGS.STATUS_CODE]: statusCode,\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_REVIEW_SCREEN_SHOWN,\n ...(fromUOB ? { [FPTI_TAGS.SOURCE]: 'uob' } : {}),\n ...PAGE_SPEC.MEMBER_REVIEW_PAGE,\n ...getUiType(),\n ...getSelectedRecurringFrequency(),\n };\n\n if (processStatus) {\n globalData[FPTI_TAGS.STATUS] = 'success';\n globalData[FPTI_TAGS.PROCESS_STATUS] = processStatus;\n globalData[FPTI_TAGS.SOURCE] = 'adroit';\n }\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackErrorIM = ({\n errorCode,\n errorMessage,\n fieldName,\n pageSpec = getDefaultPageSpec(),\n additionalData,\n}) => {\n const data = {\n ...(isExternalFlow()\n ? {\n eventName: EVENT_NAME.DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED,\n screen: isAtLandingPage()\n ? SCREEN_NAME.DW_GIVING_DONATE_SETUP_SCREEN\n : SCREEN_NAME.DW_GIVING_DONATE_GUEST_FORM_SCREEN,\n }\n : {}),\n [FPTI_TAGS.ERR_FIELD]: fieldName,\n [FPTI_TAGS.ERR_CODE]: errorCode,\n [FPTI_TAGS.ECCD]: errorCode,\n [FPTI_TAGS.ERPG]: errorMessage,\n [FPTI_TAGS.ERR_DESC]: errorMessage,\n ...pageSpec,\n ...getDonationAmount(),\n ...additionalData,\n };\n trackError(data);\n};\n\nexport const trackThreeDSIframeIM = ({\n threeDSRespDuration,\n confirmationStatus,\n}) => {\n const globalRespDuration = window.fpti.resp_duration || {};\n const globalData = {\n ...getThreeDSData(),\n ...PAGE_SPEC.THREE_DS_IFRAME_ONBRD,\n [FPTI_TAGS.THREE_DS_RESP_DURATION]: Object.assign(\n {},\n globalRespDuration,\n threeDSRespDuration\n ),\n [FPTI_TAGS.CHALLENGE_STATUS]: confirmationStatus,\n };\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_THREE_DS_IFRAME_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackConfirmationPageIM = ({\n isSignUp,\n pageSpec,\n flow,\n confirmationData,\n}) => {\n const globalData = {\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n [FPTI_TAGS.ACCOUNT_TYPE]: flow,\n ...getExternalFlowData(),\n ...getConfirmationData(confirmationData),\n ...getToken(),\n ...pageSpec,\n };\n const onceData = {};\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackSocialShareIM = () => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackPSLContentShow = ({\n isSignUp,\n pageSpec,\n flow,\n confirmationData,\n status,\n}) => {\n const globalData = {\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n [FPTI_TAGS.ACCOUNT_TYPE]: flow,\n ...getExternalFlowData(),\n ...getConfirmationData(confirmationData),\n ...getToken(),\n ...pageSpec,\n [FPTI_TAGS.EVENT_NAME]: `donate_donor_view_payment_${status}_psl_content_shown`,\n };\n const onceData = {};\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackCaptureOrderPageIM = ({ flow, confirmationData }) => {\n const pgrp = PAGE_SPEC.CAPTURE_ORDER_PAGE.pgrp.replace('{flow}', flow);\n const onceData = {\n [FPTI_TAGS.PAGE_NAME]: `${pgrp}:web::`,\n [FPTI_TAGS.PAGE_GROUP]: pgrp,\n };\n const globalData = {\n [FPTI_TAGS.ACCOUNT_TYPE]: flow,\n ...getToken(),\n ...getExternalFlowData(),\n ...getConfirmationData(confirmationData),\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackErrorPageIM = ({ pageSpec, errorCode, additionalData }) => {\n const onceData = {\n [FPTI_TAGS.ERR_CODE]: checkAndReplaceInternalErrWithDnwErr(errorCode),\n };\n const globalData = {\n ...pageSpec,\n ...additionalData,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackPageIM = ({ pageSpec, additionalData }) => {\n const onceData = {\n ...additionalData,\n };\n const globalData = {\n ...pageSpec,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackAnonymousCheckboxClick = (status) => {\n const data = {\n [FPTI_TAGS.LINK]: LINK_NAME.ANONYMOUS_CHECKBOX,\n [FPTI_TAGS.CHECKBOX]: status,\n [FPTI_TAGS.NONANONYMOUS]: !status,\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]: status\n ? EVENT_NAME.DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED\n : EVENT_NAME.DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]: status\n ? EVENT_NAME.DONATION_ANONYMOUS_CHECKBOX_CHECK_PRESSED\n : EVENT_NAME.DONATION_ANONYMOUS_CHECKBOX_UNCHECK_PRESSED,\n }),\n ...getDonationAmount(),\n ...PAGE_SPEC.LANDING_PAGE,\n };\n trackClick(data);\n};\n\nexport const trackCoverFeeCheckboxClick = (status) => {\n const data = {\n [FPTI_TAGS.LINK]: LINK_NAME.COVER_FEE_CHECKBOX,\n [FPTI_TAGS.CHECKBOX]: status,\n ...getFeeData(),\n ...getDonationAmount(),\n ...PAGE_SPEC.LANDING_PAGE,\n };\n trackClick(data);\n};\n\nexport const trackDonateWithCardClick = ({ noteFieldDisplayed, fptiData }) => {\n const data = {\n [FPTI_TAGS.LINK]: 'donateWithCard',\n ...getLandingPageData({ noteFieldDisplayed }),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_CARD_PRESSED,\n }),\n ...fptiData,\n ...getSelectedRecurringFrequency(),\n };\n trackClick(data);\n};\n\nexport const trackDonateWithPayPalClick = ({\n noteFieldDisplayed,\n fptiData,\n}) => {\n const data = {\n ...getLandingPageData({ noteFieldDisplayed }),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_DONATE_SETUP_NEXT_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_PAYPAL_PRESSED,\n }),\n [FPTI_TAGS.LINK]: 'donateWithPayPal',\n ...fptiData,\n ...getFeePayer(),\n ...getSelectedRecurringFrequency(),\n };\n trackClick(data);\n};\n\nexport const trackNextClickForCheckout = ({ noteFieldDisplayed }) => {\n const data = {\n ...getLandingPageData({ noteFieldDisplayed }),\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DW_GIVING_DONATE_SETUP_NEXT_PRESSED,\n [FPTI_TAGS.LINK]: 'donateViaCheckout',\n };\n trackClick(data);\n};\n\nexport const trackSignupChekboxClick = (status, id) => {\n const data = {\n [FPTI_TAGS.LINK]: 'createAccount',\n [FPTI_TAGS.IS_SIGNUP]: status === 'checked',\n ...PAGE_SPEC.GUEST_FORM,\n };\n\n const target =\n id === 'createAccountSwitch' ? FPTI_TAGS.SWITCH : FPTI_TAGS.CHECKBOX;\n data[target] = status;\n trackClick(data);\n};\n\n// This submits the guest form\n// after passing all client side validations\nexport const trackPaymentSubmitClick = ({ isSignUp, isNNA, link }) => {\n const data = {\n ...getDonationAmount(),\n ...getRecurringStatus(),\n [FPTI_TAGS.LINK]: link,\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n ...(isNNA\n ? { [FPTI_TAGS.OFFER_TYPE]: 'nna' }\n : { [FPTI_TAGS.OFFER_TYPE]: undefined }),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_GUEST_FORM_DONATE_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_GUEST_FORM_DONATE_PRESSED,\n }),\n ...(link === LINK_NAME.GUEST_FORM_PAYMENT_SUBMIT_BUTTON\n ? { ...PAGE_SPEC.GUEST_FORM }\n : { ...PAGE_SPEC.ONBOARDING_GUEST_FORM }),\n ...getFeePayer(),\n ...getSelectedRecurringFrequency(),\n };\n trackClick(data);\n};\n\nconst addGlobalFptiData = (data) => {\n window.fpti = Object.assign({}, window.fpti, data);\n};\n\nexport const trackOnbrdPaymentSubmitClick = ({ isSignUp, isCvvSent }) => {\n addGlobalFptiData({\n ...getDonationAmount(),\n ...getRecurringStatus(),\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n [FPTI_TAGS.ACTION]: '',\n [FPTI_TAGS.IS_CVV_SENT]: isCvvSent,\n ...getFeePayer(),\n ...getSelectedRecurringFrequency(),\n });\n};\n\nexport const trackLinkClick = (\n linkName,\n { eventName, pageSpec = getDefaultPageSpec(), additionalData } = {}\n) => {\n const data = {\n [FPTI_TAGS.LINK]: linkName,\n [FPTI_TAGS.EVENT_NAME]: eventName,\n [FPTI_TAGS.PAGE_LINK]: `${pageSpec?.page}|${linkName}`,\n [FPTI_TAGS.PAGE_GROUP_LINK]: `${pageSpec?.pgrp}|${linkName}`,\n ...pageSpec,\n ...additionalData,\n ...getDonationAmount(),\n };\n trackClick(data);\n};\n\nexport const trackThreeDsDdcStart = (data) => {\n updateGlobalRespDuration(data);\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_DDC_START,\n data: { ...getThreeDSData() },\n });\n};\n\nexport const trackThreeDsDdcComplete = (data) => {\n updateGlobalRespDuration(data);\n\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_DDC_COMPLETE,\n data: { ...getThreeDSData() },\n });\n};\n\nexport const trackThreeDsDdcFailure = (data) => {\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_DDC_FAILURE,\n data: {\n ...getThreeDSData(),\n ...data,\n },\n });\n};\n\nexport const trackThreeDsLookupStart = (data) => {\n updateGlobalRespDuration(data);\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_LOOKUP_START,\n data: { ...getThreeDSData() },\n });\n};\n\nexport const trackThreeDsLookupComplete = (data) => {\n updateGlobalRespDuration(data);\n if (data?.timestamp) {\n delete data.timestamp;\n }\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_LOOKUP_COMPLETE,\n data: { ...getThreeDSData(), ...data },\n });\n};\n\nexport const trackDonateLandingButtonClick = ({ noteFieldDisplayed }) => {\n const data = {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_DONATE_PRESSED,\n ...getLandingPageData({ noteFieldDisplayed }),\n ...getFeePayer(),\n };\n trackClick(data);\n};\n\nexport const trackGuestReviewPageDonateClick = ({ isCvvSend }) => {\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_GUEST_REVIEW_PROCESS_DONATE_CLICK,\n data: { [FPTI_TAGS.IS_CVV_SENT]: isCvvSend },\n });\n};\n\nexport const track3DSProceedToPayment = ({ isCvvSend }) => {\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_PROOCEED_TO_PAYMENT,\n data: { [FPTI_TAGS.IS_CVV_SENT]: isCvvSend },\n });\n};\n\nexport const trackOrganizerUpdatesLoad = (isPopulated) => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_MODULE_SHOWN,\n [FPTI_TAGS.STATE]: isPopulated\n ? LOADING_STATES.POPULATED\n : LOADING_STATES.EMPTY,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesReadMorePressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_READ_MORE_PRESSED,\n });\n};\n\nexport const trackUpdatesShowMorePressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_SHOW_MORE_PRESSED,\n });\n};\n\nexport const trackUpdatesLikePressed = (\n updateId,\n positiveLike,\n status,\n likesCount = 0\n) => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n status === 'REQUEST_SENT'\n ? EVENT_NAME.DONATE_LANDING_UPDATES_LIKE_PRESSED\n : EVENT_NAME.DONATE_LANDING_UPDATES_LIKE_PRESSED_COMPLETED,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n [FPTI_TAGS.LINK_NAME]: positiveLike ? LINK_NAME.LIKE : LINK_NAME.UNLIKE,\n [FPTI_TAGS.STATUS]: status,\n [FPTI_TAGS.COUNT]: likesCount,\n });\n};\n\nexport const trackOrganizerUpdatesListIM = (count = 0) => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_LIST_SHOWN,\n [FPTI_TAGS.COUNT]: count,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesListSelectionPressed = (updateId) => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LIST_SELECTION_PRESSED,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n });\n};\n\nexport const trackUpdatesListLikePressed = (updateId, positiveLike) => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_LIST_LIKE_PRESSED,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n [FPTI_TAGS.LINK_NAME]: positiveLike ? LINK_NAME.LIKE : LINK_NAME.UNLIKE,\n });\n};\n\nexport const trackUpdatesListDismissPressed = (reason) => {\n const dismissMethod =\n reason === CLOSE_SHEET_REASONS.BACKDROP_CLICK\n ? DISMISS_METHODS.BACKGROUND\n : DISMISS_METHODS.CLOSE;\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LIST_DISMISS_PRESSED,\n [FPTI_TAGS.DISMISS_METHOD]: dismissMethod,\n });\n};\n\nexport const trackUpdatesDetailDismissPressed = (reason, updateId) => {\n const dismissMethod =\n reason === CLOSE_SHEET_REASONS.BACKDROP_CLICK\n ? DISMISS_METHODS.BACKGROUND\n : DISMISS_METHODS.CLOSE;\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_DETAIL_DISMISS_PRESSED,\n [FPTI_TAGS.DISMISS_METHOD]: dismissMethod,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n });\n};\n\nexport const trackUpdatesLoginDismissPressed = (reason) => {\n const dismissMethod =\n reason === CLOSE_SHEET_REASONS.BACKDROP_CLICK\n ? DISMISS_METHODS.BACKGROUND\n : DISMISS_METHODS.CLOSE;\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_DISMISS_PRESSED,\n [FPTI_TAGS.DISMISS_METHOD]: dismissMethod,\n });\n};\n\nexport const trackUpdatesDetailIM = (updateId) => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_DETAIL_VIEW_SHOWN,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesLoginIM = () => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_VIEW_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesLoginButtonPressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_BUTTON_PRESSED,\n });\n};\n\nexport const trackUpdatesLoginSignupPressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_SIGNUP_PRESSED,\n });\n};\n\nexport const trackUpdatesLoadingError = () => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOADING_ERROR_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n","const IMPRESSION = {\n e: 'im',\n};\n\nconst ACTIVITY = {\n e: 'ac',\n};\n\nexport const PAGE_SPEC = {\n LANDING_PAGE: {\n pgrp: 'main:donate:wps::landing',\n page: 'main:donate:wps::landing:web::',\n tmpl: 'main:donate:wps::landing',\n },\n GUEST_FORM: {\n pgrp: 'main:donate:wps:guest:guestform',\n page: 'main:donate:wps:guest:guestform:web::',\n tmpl: 'main:donate:wps:guest:guestform:web::',\n },\n GUEST_SUCCESS_PAGE: {\n pgrp: 'main:donate:wps:guest:success',\n page: 'main:donate:wps:guest:success:web::',\n tmpl: 'main:donate:wps:guest:success:web::',\n },\n GUEST_SIGNUP_SUCCESS_PAGE: {\n pgrp: 'main:donate:wps:guest:upgrade',\n page: 'main:donate:wps:guest:upgrade:web::',\n tmpl: 'main:donate:wps:guest:upgrade:web::',\n },\n GUEST_PENDING_PAGE: {\n pgrp: 'main:donate:wps:guest:pending',\n page: 'main:donate:wps:guest:pending:web::',\n tmpl: 'main:donate:wps:guest:pending:web::',\n },\n GUEST_FAILURE_PAGE: {\n url: '/donate/error/payment',\n pgrp: 'main:donate:wps:guest:failure',\n page: 'main:donate:wps:guest:failure:web::',\n tmpl: 'main:donate:wps:guest:failure:web::',\n },\n ONBOARDING_GUEST_FORM: {\n comp: 'donatenodeweb', // Overriding the comp to tell that this event is fired by DNW\n pgrp: 'main:donate:wps:signup:signupform',\n page: 'main:donate:wps:signup:signupform:web::',\n tmpl: 'main:donate:wps:signup:signupform:web::',\n },\n ONBOARDING_GUEST_SUCCESS_PAGE: {\n pgrp: 'main:donate:wps:signup:success',\n page: 'main:donate:wps:signup:success:web::',\n tmpl: 'main:donate:wps:signup:success:web::',\n },\n ONBOARDING_GUEST_PENDING_PAGE: {\n pgrp: 'main:donate:wps:signup:pending',\n page: 'main:donate:wps:signup:pending:web::',\n tmpl: 'main:donate:wps:signup:pending:web::',\n },\n MEMBER_SUCCESS_PAGE: {\n url: '/donate/member/confirmation',\n pgrp: 'main:donate:wps:member:success',\n page: 'main:donate:wps:member:success:web::',\n tmpl: 'main:donate:wps:member:success:web::',\n },\n MEMBER_PENDING_PAGE: {\n url: '/donate/member/pending',\n pgrp: 'main:donate:wps:member:pending',\n page: 'main:donate:wps:member:pending:web::',\n tmpl: 'main:donate:wps:member:pending:web::',\n },\n MEMBER_FAILURE_PAGE: {\n url: '/donate/member/error',\n pgrp: 'main:donate:wps:member:failure',\n page: 'main:donate:wps:member:failure:web::',\n tmpl: 'main:donate:wps:member:failure:web::',\n },\n RECURRING_SUCCESS_PAGE: {\n url: '/donate/member/confirmation-rec',\n pgrp: 'main:donate:wps:member:success',\n page: 'main:donate:wps:member:success:web::',\n tmpl: 'main:donate:wps:member:success:web::',\n },\n MEMBER_REVIEW_PAGE: {\n url: '/donate/member',\n pgrp: 'main:donate:wps:member:review',\n page: 'main:donate:wps:member:review:web::',\n tmpl: 'main:donate:wps:member:review:web::',\n },\n CROSS_BORDER_PAGE: {\n url: '/donate/guest/crossborder',\n pgrp: 'main:donate:wps:guest:crossborder',\n page: 'main:donate:wps:guest:crossborder:web::',\n tmpl: 'main:donate:wps:guest:crossborder:web::',\n },\n THREE_DS_IFRAME: {\n pgrp: 'main:donate:wps:guest:3DS-challenge',\n page: 'main:donate:wps:guest:3DS-challenge:::',\n tmpl: 'main:donate:wps:guest:3DS-challenge:::',\n },\n THREE_DS_IFRAME_ONBRD: {\n pgrp: 'main:onbrd:signup:donate:3DS-challenge',\n page: 'main:onbrd:signup:donate:3DS-challenge:::',\n tmpl: 'main:onbrd:signup:donate:3DS-challenge:::',\n },\n UNILATERAL_ERROR_PAGE: {\n pgrp: 'main:donate:wps:guest:unilateral',\n page: 'main:donate:wps:guest:unilateral:web::',\n tmpl: 'main:donate:wps:guest:unilateral:web::',\n },\n CAPTURE_ORDER_PAGE: {\n pgrp: 'main:donate:wps:{flow}:captureOrder',\n page: 'main:donate:wps:{flow}:captureOrder:web::',\n tmpl: 'main:donate:wps:{flow}:captureOrder:web::',\n },\n WEBSCR_ERROR_PAGE: {\n pgrp: 'main:donate:wps::error',\n page: 'main:donate:wps::error:web::',\n tmpl: 'main:donate:wps::error:web::',\n },\n GENERIC_ERROR_PAGE: {\n pgrp: 'main:donate:wps:generic:failure',\n page: 'main:donate:wps:generic:failure:web::',\n tmpl: 'main:donate:wps:generic:failure:web::',\n },\n CRS_ERROR_PAGE: {\n pgrp: 'main:donate:wps:crs:failure',\n page: 'main:donate:wps:crs:failure:web::',\n tmpl: 'main:donate:wps:crs:failure:web::',\n },\n};\n\nexport const CPL_PAGE_SPEC = {\n LANDING_PAGE: {\n pgrp: 'main:donate:wps::landing:landingPageComponent',\n page: 'main:donate:wps::landing:landingPageComponent:web::',\n action: 'landing_page_loaded',\n uicomp: 'landingPageComponent',\n uitype: 'page',\n },\n GUEST_FORM: {\n pgrp: 'main:donate:wps:guest:guestform:guestFormComponent',\n page: 'main:donate:wps:guest:guestform:guestFormComponent:web:',\n action: 'guest_form_loaded',\n uicomp: 'guestForm',\n },\n TESLA_GUEST_FORM: {\n pgrp: 'main:onbrd:signup:donate:guestFormComponent',\n page: 'main:onbrd:signup:donate:guestFormComponent:web:',\n action: 'tesla_form_loaded',\n uicomp: 'teslaForm',\n },\n};\n\nexport const LINK_NAME = {\n ACCOUNT_HOME: 'myAccount',\n ANONYMOUS_CHECKBOX: 'anonymous_checkbox',\n ANONYMOUS_TOOLTIP: 'anonymousTooltip',\n BACK: 'back',\n CANCEL: 'cancel',\n CHANGE_COUNTRY: 'changeCountry',\n COVER_FEE_CHECKBOX: 'cover_fee_checkbox',\n CURRENCY_CONVERSION: 'showCurrencyConversionModal',\n DONE: 'done',\n GUEST_FORM_PAYMENT_SUBMIT_BUTTON: 'donate',\n NOT_YOU: 'not-you',\n NOTE_PAD: 'note_pad',\n ONBOARDING_FORM_PAYMENT_SUBMIT_BUTTON: 'guestPaymentBtn',\n PRESET_AMOUNT: 'presetAmount',\n PROGRAM_SELECTED: 'campaignSelected',\n RECURRING_CHECKBOX: 'recurringChkBx',\n REPORT_LINK: 'reportInappropriateContent',\n RETURN: 'return_to_merchant',\n SOCIAL_SHARE: 'social_share',\n SOCIAL_SHARE_DISMISS: 'close_social_share',\n UNIFIED_LOGIN: 'requestUnifiedLogin',\n VOUCHER: 'voucher',\n VOUCHER_PRINT: 'voucherprint',\n VOUCHER_SHARE: 'vouchershare',\n LIKE: 'like',\n UNLIKE: 'unlike',\n};\n\nexport const FPTI_TAGS = {\n ACCOUNT_TYPE: 'account_type',\n ACTION: 'action',\n AMOUNT: 'amount',\n AMOUNT_EDIT_ALLOWED: 'allow_amount_edit',\n AUTH_STATE: 'authState',\n CAMPAIGN: 'campaign',\n CAMPAIGN_ID: 'campaign_id',\n CHALLENGE_END_TIME: 'challenge_end_time',\n CHALLENGE_START_TIME: 'challenge_start_time',\n CHALLENGE_STATUS: 'challenge_status', // for 3ds\n CHARITY_NAME: 'charityname',\n CHECKBOX: 'checkbox',\n COUNTRY: 'country',\n CONTINGENCY_RESOLVED: 'contingency_resolved',\n CURRENCY: 'currency',\n DONOR_IP_COUNTRY: 'acct_cntry',\n EVENT_NAME: 'event_name',\n ECCD: 'eccd', // error code\n ENABLED_FREQUENCY: 'enabled_frequency',\n ERPG: 'erpg', // error message\n ERR_CODE: 'error_code',\n ERR_DESC: 'error_desc',\n ERR_FIELD: 'erfd',\n EXPERIMENT_ID: 'xe',\n FEE_AMOUNT: 'fee_amt',\n FEE_CURRENCY: 'fee_curr',\n FEE_PAYER: 'fee_payer',\n FI_NETWORK: 'sel_fmx_tp', // payment card network\n FI_ID: 'fi_id',\n FI_OPERATION: 'fi_operation',\n FI_TYPE: 'fi_type', // payment card type\n FLOW: 'flow',\n LINK: 'link',\n MODULE: 'module',\n LINK_NAME: 'link_name',\n NONANONYMOUS: 'nonanonymous',\n NPID: 'crid', // non-profit ID\n NOTE_ALLOWED: 'is_allow_note',\n NOTE_ADDED: 'has_note',\n INTEGRATION_IDENTIFIER: 'integration_identifier',\n IS_CVV_SENT: 'is_cvv_sent',\n IS_RECURRING: 'is_recurring',\n IS_SIGNUP: 'user_opts_signup',\n IS_3DS_ELIGIBLE: 'is_3ds_eligible',\n ORDER_ID: 'order_id',\n OFFER_TYPE: 'offer_type',\n PAGE_LINK: 'pgln',\n PAGE_NAME: 'page',\n PAGE_GROUP: 'pgrp',\n PAGE_GROUP_LINK: 'pglk',\n PRODUCT: 'product',\n RESP_DURATION: 'resp_duration', // for 3ds\n SPACE_KEY: 'space_key',\n SCREEN: 'screen',\n SELECTED_PRESET_BUTTON_ID: 'opsel',\n SENDER_ID: 'encr_cust_id',\n SELECTED_FREQUENCY: 'selected_frequency',\n STATUS: 'status',\n STATUS_CODE: 'status_code',\n PROCESS_STATUS: 'process_status',\n SWITCH: 'switch',\n TOKEN: 'token',\n THREE_DS_DCC_START_TIME: 'dcc_start_time',\n THREE_DS_DCC_END_TIME: 'dcc_end_time',\n THREE_DS_LOOKUP_END_TIME: 'lookup_end_time',\n THREE_DS_LOOKUP_START_TIME: 'lookup_start_time',\n THREE_DS_REF_ID: '3ds_ref_id',\n THREE_DS_RESP_DURATION: 'resp_duration',\n THREE_DS_SPINNER_START_TIME: 'spinner_start_time',\n THREE_DS_SPINNER_END_TIME: 'spinner_end_time',\n THREE_DS_VERSION: '3ds_version',\n TREATMENT_ID: 'xt',\n TXN_ID: 'trid',\n UI_TYPE: 'ui_type', // full_page/popup/popup_blocked\n URL: 'url',\n UOB_BUNDLE_TYPE: 'onboardingBundleType',\n VERSION: 'version',\n FEATURE: 'feature',\n SOURCE: 'source',\n UPDATE_ID: 'update_id',\n DISMISS_METHOD: 'dismiss_method',\n COUNT: 'count',\n STATE: 'state',\n AMOUNT_TYPE: 'amttyp',\n ENCR_RCVR_ID: 'encr_rcvr_id',\n MERCHANT_EMAIL: 'merchant_email',\n NP_ID: 'np_id',\n RECURRING_VISUAL_EXPERIMENT: 'recurring_visual_experiment'\n};\n\nexport const CLOSE_SHEET_REASONS = {\n BACKDROP_CLICK: 'backdropClick',\n CLOSE_BUTTON: 'closeButton',\n ESC: 'ESC',\n SWIPE_DOWN: 'swipeDown',\n};\n\nexport const DISMISS_METHODS = {\n CLOSE: 'close',\n BACKGROUND: 'background',\n};\n\nexport const LOADING_STATES = {\n POPULATED: 'populated',\n EMPTY: 'empty',\n};\n\nexport const FEATURES = {\n CTF: 'CTF',\n RECURRING: 'recurring',\n PRESET: 'preset',\n ANONYMOUS: 'anonymous',\n CHARITY_NOTE: 'charityNote',\n DONATION_AMOUNT_EDITABLE: 'donationAmountEditable',\n GUEST: 'guest',\n GIFT_AID: 'giftAid',\n MAILING_ADDRESS: 'mailingAddress',\n SOCIAL_SHARE_PREFERENCE: 'socialSharePreference',\n};\n\nexport const FPTI_SPEC = {\n CONFIRMATION_PAGE_SET_FAV_CHARITY_MODULE_SHOWN: {\n event_name: 'donate_donor_view_post_donation_set_fav_charity_module_shown',\n data: {\n ...IMPRESSION,\n },\n },\n CONFIRMATION_PAGE_CREATE_FUNDRAISER_MODULE_SHOWN: {\n event_name:\n 'donate_donor_view_post_donation_create_fundraiser_module_shown',\n data: {\n ...IMPRESSION,\n },\n },\n CONFIRMATION_PAGE_INSIGHTS_MODULE_SHOWN: {\n event_name: 'donate_donor_view_post_donation_insights_module_shown',\n data: {\n ...IMPRESSION,\n },\n },\n CONFIRMATION_PAGE_SET_FAV_CHARITY_SUCCESS: {\n event_name: 'donate_donor_view_post_donation_set_favorite_charity_success',\n data: {\n ...IMPRESSION,\n },\n },\n DONATE_ADROIT_REDIRECTION_FOR_CIP_VERIFICATION: {\n event_name: 'donate_adroit_redirection_for_cip_verification',\n data: {\n ...ACTIVITY,\n },\n },\n};\n\nexport const FPTI_VALUES = {\n SPACE_KEY_ID: 'SKBWIZ',\n};\n","import {\n isSdkMode,\n isPopupMode,\n isFullPageRedirectionMode,\n} from '../utility/inContextDonation';\nimport { FPTI_TAGS, PAGE_SPEC, FPTI_VALUES } from './fptiConstants';\nimport templateData from '../utility/getTemplateData';\nimport {\n isAtLandingPage,\n isOptInCoverFee,\n} from '../components/coverFee/feeUtils';\nimport AppStore from '../stores/AppStore';\nimport _isEmpty from 'lodash/isEmpty';\nimport _get from 'lodash/get';\nimport _find from 'lodash/find';\nimport {\n isExternalFlow,\n isGNC,\n isPPFundraising,\n} from '../utility/productIntegrationUtils';\nimport {\n EVENT_NAME,\n FPTI_PRODUCT,\n INTERNAL_ERROR,\n DNW_UNHANDLED_ERROR,\n} from '../utility/constants';\nimport { isLoggedInUser } from '../utility/authUtils';\n\nconst {\n anonymousEnabled,\n coverFeeEnabled,\n donationAmount,\n donationCode,\n donationName,\n donorIpCountry,\n feeAmount,\n feeCurr,\n feePayer,\n fptPageName,\n npid,\n product,\n productId,\n token,\n integrationIdentifier,\n recurringEnabled,\n supportedRecurringFrequencies,\n} = templateData;\n\nexport const getUiType = () => {\n if (!isSdkMode()) {\n return 'full_page';\n }\n\n if (isPopupMode()) {\n return 'popup';\n }\n\n if (isFullPageRedirectionMode()) {\n return 'popup_blocked';\n }\n};\n\nexport const getDonationAmount = () => {\n const amount = AppStore.getDonationAmount() || donationAmount;\n return {\n [FPTI_TAGS.AMOUNT]: amount,\n };\n};\n\nexport const getFeeDataFromTemplateData = () => {\n return {\n ...(feePayer\n ? {\n [FPTI_TAGS.FEE_PAYER]: feePayer,\n [FPTI_TAGS.FEE_AMOUNT]: feeAmount,\n [FPTI_TAGS.FEE_CURRENCY]: feeCurr,\n }\n : {}),\n };\n};\n\nexport const getFeeData = () => {\n return {\n ...(coverFeeEnabled\n ? {\n [FPTI_TAGS.FEE_PAYER]: isOptInCoverFee() ? 'consumer' : 'merchant',\n [FPTI_TAGS.FEE_AMOUNT]: AppStore.getFeeAmount(),\n [FPTI_TAGS.FEE_CURRENCY]: AppStore.getDonationCode(),\n }\n : {}),\n };\n};\n\nexport const getAnonymousStatus = () => {\n return {\n ...(anonymousEnabled\n ? {\n [FPTI_TAGS.NONANONYMOUS]:\n AppStore.getAnonymousStatus() === 'unchecked',\n }\n : {}),\n };\n};\n\nexport const getNoteData = (data) => {\n return {\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.NOTE_ALLOWED]: data?.noteFieldDisplayed || false,\n [FPTI_TAGS.NOTE_ADDED]: !_isEmpty(AppStore.getDonationNote()),\n }\n : {}),\n };\n};\n\nexport const getRecurringStatus = () => {\n return {\n ...(recurringEnabled\n ? {\n [FPTI_TAGS.IS_RECURRING]:\n AppStore.getDonationRecurring() === 'checked',\n }\n : {}),\n };\n};\n\nexport const setEnabledRecurringFrequency = () => {\n if (recurringEnabled) {\n window.fpti[FPTI_TAGS.ENABLED_FREQUENCY] =\n supportedRecurringFrequencies?.length > 0\n ? supportedRecurringFrequencies.join(',').toUpperCase()\n : 'MONTH';\n }\n};\n\nexport const getSelectedRecurringFrequency = () => {\n if (supportedRecurringFrequencies?.length > 0) {\n return {\n [FPTI_TAGS.SELECTED_FREQUENCY]:\n AppStore.getSelectedRecurringFrequency()?.toUpperCase(),\n };\n }\n return {\n [FPTI_TAGS.SELECTED_FREQUENCY]:\n AppStore.getDonationRecurring() === 'checked' ? 'MONTH' : null,\n };\n};\n\nexport const getFeePayer = () =>\n coverFeeEnabled && {\n [FPTI_TAGS.FEE_PAYER]: isOptInCoverFee() ? 'consumer' : 'merchant',\n };\n\nexport const addFeature = (feature) => {\n if (window.fpti[FPTI_TAGS.FEATURE]) {\n const featuresArray = window.fpti[FPTI_TAGS.FEATURE].split(',');\n if (!featuresArray.includes(feature)) {\n window.fpti[FPTI_TAGS.FEATURE] += ',' + feature;\n }\n } else {\n window.fpti.feature = feature || '';\n }\n};\n\nexport const setAmountTypeFpti = (value) => {\n const amttyp = window.fpti[FPTI_TAGS.AMOUNT_TYPE];\n\n if (amttyp !== value) {\n window.fpti[FPTI_TAGS.AMOUNT_TYPE] = value;\n }\n};\n\nexport const trackSelectedPresetAmount = (value) => {\n const opsl = window.fpti[FPTI_TAGS.SELECTED_PRESET_BUTTON_ID];\n if (opsl !== value) {\n window.fpti[FPTI_TAGS.SELECTED_PRESET_BUTTON_ID] = value;\n }\n\n setAmountTypeFpti(value === 'other' ? 'any' : 'preset');\n};\n\nexport const getLandingPageData = ({ noteFieldDisplayed }) => {\n return {\n ...getFeeData(),\n ...getDonationAmount(),\n ...getAnonymousStatus(),\n ...getNoteData({ noteFieldDisplayed }),\n ...getRecurringStatus(),\n ...PAGE_SPEC.LANDING_PAGE,\n };\n};\n\nexport const getThreeDSData = () => {\n const fundingOpts = AppStore.getFundingOptions();\n const contingencies = _get(fundingOpts, 'contingencies') || [];\n const threeDSContingency =\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {};\n\n return {\n [FPTI_TAGS.FI_ID]: _get(fundingOpts, 'id'),\n [FPTI_TAGS.FI_TYPE]: _get(fundingOpts, 'sources[0].payment_card.type'),\n [FPTI_TAGS.FI_NETWORK]: _get(\n fundingOpts,\n 'sources[0].payment_card.network'\n ),\n [FPTI_TAGS.FI_OPERATION]: 'add_card',\n [FPTI_TAGS.IS_3DS_ELIGIBLE]: true,\n [FPTI_TAGS.THREE_DS_VERSION]: '3DS2.0',\n [FPTI_TAGS.THREE_DS_REF_ID]: _get(\n threeDSContingency,\n 'three_ds_reference_id'\n ),\n [FPTI_TAGS.URL]: _get(threeDSContingency, 'device_data_collection_url'),\n };\n};\n\nexport const getExternalFlowData = () => {\n return {\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.PRODUCT]: FPTI_PRODUCT,\n [FPTI_TAGS.FLOW]: product,\n [FPTI_TAGS.INTEGRATION_IDENTIFIER]: integrationIdentifier,\n [FPTI_TAGS.DONOR_IP_COUNTRY]: donorIpCountry,\n [FPTI_TAGS.ACCOUNT_TYPE]: isLoggedInUser() ? 'member' : 'guest',\n [FPTI_TAGS.CURRENCY]: donationCode,\n ...(!_isEmpty(productId)\n ? {\n [FPTI_TAGS.CAMPAIGN_ID]: productId,\n }\n : {}),\n ...(!_isEmpty(npid)\n ? {\n [FPTI_TAGS.NPID]: npid,\n }\n : {}),\n ...(isGNC() || isPPFundraising()\n ? {\n [FPTI_TAGS.CHARITY_NAME]: donationName,\n }\n : {}),\n }\n : {}),\n };\n};\n\nexport const getToken = () => {\n return {\n [FPTI_TAGS.TOKEN]: token,\n };\n};\n\nexport const updateGlobalRespDuration = (respDuration) => {\n const globalRespDuration = window.fpti.resp_duration || {};\n window.fpti.resp_duration = {\n ...globalRespDuration,\n ...respDuration,\n };\n};\n\nexport const updateGlobalFPTI = (data) => {\n window.fpti = {\n ...window.fpti,\n ...data,\n [FPTI_TAGS.SPACE_KEY]: FPTI_VALUES.SPACE_KEY_ID,\n };\n};\n\nexport const getDefaultPageSpec = () => {\n const url = window.location.href;\n const isOnboardingFlow = fptPageName === 'guestULSignUp';\n\n const pageSpec = _find(PAGE_SPEC, (page) => {\n return page.url && url.indexOf(page.url) > -1;\n });\n if (pageSpec) {\n return pageSpec;\n }\n\n if (url.indexOf('/donate/guest/confirmation') > -1) {\n return isOnboardingFlow\n ? PAGE_SPEC.ONBOARDING_GUEST_SUCCESS_PAGE\n : PAGE_SPEC.GUEST_SUCCESS_PAGE;\n } else if (url.indexOf('/donate/guest/pending') > -1) {\n return isOnboardingFlow\n ? PAGE_SPEC.ONBOARDING_GUEST_PENDING_PAGE\n : PAGE_SPEC.GUEST_PENDING_PAGE;\n } else if (!isAtLandingPage()) {\n return PAGE_SPEC.ONBOARDING_GUEST_FORM;\n } else if (url.indexOf('/donate') > -1) {\n return PAGE_SPEC.LANDING_PAGE;\n }\n return pageSpec;\n};\n\nexport const getConfirmationData = (confirmationData) => {\n return {\n [FPTI_TAGS.AMOUNT]: confirmationData?.postBackData?.mc_gross,\n [FPTI_TAGS.CURRENCY]: confirmationData?.postBackData?.mc_currency,\n [FPTI_TAGS.TXN_ID]: confirmationData?.confirmationNumber || '',\n [FPTI_TAGS.SENDER_ID]: confirmationData?.postBackData?.payer_id,\n ...(confirmationData?.orderId\n ? {\n [FPTI_TAGS.ORDER_ID]: confirmationData.orderId,\n }\n : {}),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]: confirmationData?.isOfacPending\n ? EVENT_NAME.DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN\n : EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATION_CONFIRMATION_PAGE_IMP,\n }),\n ...getFeePayer(),\n };\n};\n\nexport const checkAndReplaceInternalErrWithDnwErr = (errorCode) => {\n return errorCode === INTERNAL_ERROR ? DNW_UNHANDLED_ERROR : errorCode;\n};\n\nexport const updateFPTIValue = (key, value) => {\n if (window.fpti[key]) {\n const valueArray = window.fpti[key]?.split(',');\n if (valueArray && !valueArray.includes(value)) {\n window.fpti[key] += ',' + value;\n }\n } else {\n window.fpti[key] = value || '';\n }\n};\n","import React, { Component } from 'react';\nimport { LoadingSpinner } from '@paypalcorp/pp-react-loading-spinner';\nimport withTheme from '../../components/withTheme';\n\nclass Spinner extends Component {\n render() {\n return ;\n }\n}\n\nexport default withTheme(Spinner);\n","import TemplateData from './getTemplateData';\nimport { lazy as reactLazy } from 'react';\nimport { trackErrorIM } from '../fpti/fpti';\n\n/**\n * Loads bodymovin and hearts animation json\n */\nexport function loadBodyMovin() {\n if (\n typeof window.bodymovin !== 'undefined' &&\n typeof window.heartsAnimationData !== 'undefined'\n ) {\n return Promise.resolve([window.bodymovin, window.heartsAnimationData]);\n }\n return Promise.all([\n loadScript(\n 'https://www.paypalobjects.com/donate/bodymovin/bodymovin.min.js'\n ),\n loadScript('https://www.paypalobjects.com/donate/bodymovin/hearts.js'),\n ]).catch((error) => {\n trackErrorIM({\n errorCode: 'LAZY_LOAD_FAILED',\n errorMessage: error,\n fieldName: 'bodymovin',\n });\n });\n}\n\n/**\n * Load Progressive Onboarding component (Slick Version)\n */\nexport function loadSlickProgressiveOnboarding() {\n return Promise.all([\n import(\n /* webpackChunkName: 'ProgressiveonboardingSlick' */ 'portableonboarding'\n ),\n ]).catch((error) => {\n trackErrorIM({\n errorCode: 'LAZY_LOAD_FAILED',\n errorMessage: error,\n fieldName: 'progressive_slick',\n });\n });\n}\n\n// eslint-disable-next-line\nfunction loadScript(scriptPath) {\n return new Promise((resolve, reject) => {\n const nonce = TemplateData.nonce;\n var script = document.createElement('script');\n document.getElementsByTagName('head')[0].appendChild(script);\n script.onload = function (params) {\n resolve(params);\n };\n script.onerror = function (params) {\n reject(params);\n };\n script.nonce = nonce;\n script.src = scriptPath;\n });\n}\n\nexport function waitForOnload() {\n return new Promise((resolve) => {\n if (document.readyState === 'complete') {\n resolve();\n } else {\n window.addEventListener('load', () => {\n resolve();\n });\n }\n });\n}\n\n/**\n * Lazy load a React component and add preload option\n */\nexport function reactLazyPreload(importStatement) {\n const lazyComponent = reactLazy(importStatement);\n lazyComponent.preload = importStatement;\n return lazyComponent;\n}\n","// eslint-disable-next-line no-unused-vars\nimport React, { useEffect } from 'react';\nimport { showSpinnerOverlay } from '../../utility/helper';\n\nexport default function FallbackSpinner() {\n useEffect(() => {\n showSpinnerOverlay();\n }, []);\n\n return <>;\n}\n","import React, { useEffect } from 'react';\nimport {\n handleLoginHelper,\n handleSignupHelper,\n} from '../../setup/utilsV3/buttonFactoryUtils';\nimport { trackEventWithData } from '../../setup/utilsV3/analytics';\nimport { FPTI_SPEC } from '../../setup/utilsV3/fptiConstants';\nimport { useSelector } from 'react-redux';\n\nfunction GlobalNavHeader(props) {\n const headerHtml = useSelector(\n (state) => state?.application?.globalNavHeaderHtml\n );\n\n const loginHandler = (event) => {\n event.preventDefault();\n trackEventWithData(FPTI_SPEC.LANDING_PAGE_HEADER_LOGIN_CL);\n handleLoginHelper(props.history);\n };\n\n const signupHandler = (event) => {\n event.preventDefault();\n trackEventWithData(FPTI_SPEC.LANDING_PAGE_HEADER_SIGNUP_CL);\n handleSignupHelper(props.history);\n };\n\n const addEventListenerList = (list, event, fn) => {\n for (let i = 0, len = list.length; i < len; i++) {\n list[i].addEventListener(event, fn);\n }\n };\n\n const removeEventListenerList = (list, event, fn) => {\n for (let i = 0, len = list.length; i < len; i++) {\n list[i].removeEventListener(event, fn);\n }\n };\n\n useEffect(() => {\n const loginButton = document.querySelector('a[href=\"/signin\"]');\n const signupButtons = document.querySelectorAll(\n 'a[href*=\"/us/webapps/mpp/account-selection\"]'\n );\n\n if (!!loginButton && !!signupButtons && signupButtons.length > 0) {\n loginButton.addEventListener('click', loginHandler);\n addEventListenerList(signupButtons, 'click', signupHandler);\n\n return () => {\n loginButton.removeEventListener('click', loginHandler);\n removeEventListenerList(signupButtons, 'click', signupHandler);\n };\n }\n }, []);\n\n return (\n <>\n {headerHtml && (\n <>\n \n \n )}\n \n );\n}\n\nexport default GlobalNavHeader;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nfunction GlobalNavFooter() {\n const footerHtml = useSelector(\n (state) => state?.application?.globalNavFooterHtml\n );\n\n return (\n <>\n {footerHtml && (\n <>\n \n \n )}\n \n );\n}\n\nexport default GlobalNavFooter;\n","import '../routes/publicPath';\n\nimport 'consumerweb-shim';\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\nimport React, { Suspense } from 'react';\nimport { Route, Switch, Router, Redirect } from 'react-router-dom';\nimport history from '../routes/configureHistory';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport getStore from '../setup/store/configureStore';\nimport '../utility/csrf';\nimport Spinner from './spinner/Spinner';\nimport { setContainerMarginsBefore } from '../setup/utilsV3/headerUtils';\nimport { reactLazyPreload } from '../utility/lazyLoader';\nimport FallbackSpinner from './common/FallbackSpinner';\nimport '../../css/ppvx-buttonFactory.less';\nimport { ContextProvider as WorldReadyContextProvider } from '@paypalcorp/worldready-react';\nimport templateData from './../utility/getTemplateData';\nimport { WorldReadyProvider } from '@paypalcorp/pp-react-worldready';\nimport { initializeWorldReady } from '../utility/worldReadyUtils';\nimport GlobalNavHeader from './globalnav/GlobalNavHeader';\nimport GlobalNavFooter from './globalnav/GlobalNavFooter';\n\ninitializeWorldReady();\n\nsetContainerMarginsBefore();\nconst store = getStore();\n\nconst PartnerTermsMerchantV3 = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"PartnerTermsMerchantV3\" */ '../setup/componentsV3/partner/partnerTermsMerchant'\n )\n);\n\nconst ButtonOverviewV3 = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"ButtonOverviewV3\" */ '../setup/componentsV3/buttonManager/buttonOverview/buttonOverview'\n )\n);\n\nconst DonationPagesManager = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"DonationPagesManager\" */ '../setup/shared/donationPagesManager/donationPagesManager'\n )\n);\n\nconst PartnerTermsCustomerV3 = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"PartnerTermsCustomerV3\" */ '../setup/componentsV3/partner/partnerTermsCustomer'\n )\n);\n\nconst ButtonFactoryWizardV3 = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"ButtonFactoryWizardV3\" */ '../setup/componentsV3/ButtonFactoryWizardV3'\n )\n);\n\nconst CampaignsWizard = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"CampaignsWizard\" */ '../setup/campaigns/CampaignsWizard'\n )\n);\n\nconst CampaignOverview = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"CampaignOverview\" */ '../setup/campaigns/campaignOverview/CampaignOverview'\n )\n);\n\nconst FullPageError = reactLazyPreload(() =>\n import(\n /* webpackChunkName: \"FullPageError\" */ '../setup/shared/FullPageError'\n )\n);\n\nconst App = () => {\n return (\n
\n \n }>\n \n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n (\n \n )}\n />\n (\n \n )}\n />\n \n \n \n \n
\n );\n};\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n document.getElementById('react-buttons-container')\n);\n\nif (document.getElementById('globalnav-header-container')) {\n ReactDOM.render(\n \n \n }>\n
\n \n
\n
\n
\n
,\n document.getElementById('globalnav-header-container')\n );\n}\n\nif (document.getElementById('globalnav-footer-container')) {\n ReactDOM.render(\n \n \n }>\n
\n \n
\n
\n
\n
,\n document.getElementById('globalnav-footer-container')\n );\n}\n\nReactDOM.render(\n \n \n
\n \n
\n
\n
,\n document.getElementById('button-factory-spinner')\n);\n","export function showActionableErrorModal(errMsg) {\n window.showActionableErrorModal();\n document.getElementById('actionable-error-msg-1').innerHTML = errMsg;\n}\n\nexport function hideActionableErroModal() {\n window.hideActionableErroModal();\n}\n\nexport function showUnactionableErrorModal() {\n window.showUnactionableErrorModal();\n}\n\nexport function hideUnactionableErrorModal() {\n window.hideUnactionableErrorModal();\n}\n\nexport function showLeaveModal() {\n window.showLeaveModal();\n}\n\nexport function hideLeaveModal() {\n window.hideLeaveModal();\n}\n","import { createBrowserHistory } from 'history';\nimport * as modalUtils from '../setup/utilsV3/modalUtils';\n\nfunction waitForElement(selector, callback) {\n if (document.querySelector(selector) !== null) {\n callback(); // eslint-disable-line\n } else {\n setTimeout(function () {\n waitForElement(selector, callback);\n }, 100);\n }\n}\n\nconst history = createBrowserHistory({\n getUserConfirmation(message, callback) {\n // Show some custom dialog to the user and call\n // callback(true) to continue the transiton, or\n // callback(false) to abort it.\n modalUtils.showLeaveModal();\n\n waitForElement('#stay-and-finish', () => {\n document\n .querySelector('#stay-and-finish')\n .addEventListener('click', function () {\n modalUtils.hideLeaveModal();\n callback(false); // eslint-disable-line\n });\n\n document\n .querySelector('#leave-now')\n .addEventListener('click', function () {\n modalUtils.hideLeaveModal();\n callback(true); // eslint-disable-line\n });\n });\n },\n});\nconst location = history.location;\n\nhistory.block((targetLocation, action) => {\n // The location and action arguments indicate the location\n // we're transitioning to and how we're getting there.\n if (\n window.location.pathname === '/donate/buttons/unhosted' &&\n targetLocation.pathname !== '/donate/buttons/unhosted/edit' &&\n targetLocation.pathname !== '/donate/buttons/login'\n ) {\n return \"If you leave now, your work won't be saved and you'll need to start over to create your button.\";\n }\n});\n\nexport { history, location };\n\nexport default history;\n","if (window.webpackPublicPath) {\n __webpack_public_path__ = window.webpackPublicPath; // eslint-disable-line no-undef\n}\n","import _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport {\n getButtonVariable,\n SERVER_BUTTON,\n transformClientFormatToServer as transformClientFormatToServerV3,\n} from '../lib/buttonModelV3';\nimport { destroy } from 'redux-form';\nimport { BTN_FACTORY_V3_FORM } from '../clientConstants';\nimport { fetcher } from '../../utility/domUtils';\n\nexport const BUTTON_FACTORY_BUSY = 'BUTTON_FACTORY_BUSY';\nexport const BUTTON_FACTORY_DRAFT_BUSY = 'BUTTON_FACTORY_DRAFT_BUSY';\nexport const INITIALIZE_WIZARD = 'INITIALIZE_WIZARD';\nexport const WIZARD_CONTINUE = 'WIZARD_CONTINUE';\nexport const WIZARD_BACK = 'WIZARD_BACK';\nexport const WIZARD_SET_CURRENT_PAGE = 'WIZARD_SET_CURRENT_PAGE';\nexport const GET_BUTTON_DATA_SUCCESS = 'GET_BUTTON_DATA_SUCCESS';\nexport const GET_BUTTON_DATA_ERROR = 'GET_BUTTON_DATA_ERROR';\nexport const CREATE_BUTTON_SUCCESS = 'CREATE_BUTTON_SUCCESS';\nexport const CREATE_BUTTON_ERROR = 'CREATE_BUTTON_ERROR';\nexport const EDIT_BUTTON_SUCCESS = 'EDIT_BUTTON_SUCCESS';\nexport const EDIT_BUTTON_ERROR = 'EDIT_BUTTON_ERROR';\nexport const UPDATE_CODE_SNIPPET = 'UPDATE_CODE_SNIPPET';\nexport const SHOW_LOGIN_MODAL = 'SHOW_LOGIN_MODAL';\nexport const HIDE_LOGIN_MODAL = 'HIDE_LOGIN_MODAL';\nexport const SHOW_ACTIONABLE_ERROR_MODAL = 'SHOW_ACTIONABLE_ERROR_MODAL';\nexport const HIDE_ACTIONABLE_ERROR_MODAL = 'HIDE_ACTIONABLE_ERROR_MODAL';\nexport const SHOW_UNACTIONABLE_ERROR_MODAL = 'SHOW_UNACTIONABLE_ERROR_MODAL';\nexport const HIDE_UNACTIONABLE_ERROR_MODAL = 'HIDE_UNACTIONABLE_ERROR_MODAL';\nexport const SHOW_LEAVE_MODAL = 'SHOW_LEAVE_MODAL';\nexport const HIDE_LEAVE_MODAL = 'HIDE_LEAVE_MODAL';\nexport const SET_ERROR_LOADING_IMAGE = 'SET_ERROR_LOADING_IMAGE';\nexport const RESET_ERROR_LOADING_IMAGE = 'RESET_ERROR_LOADING_IMAGE';\nexport const OPEN_MOBILE_PREVIEW = 'OPEN_MOBILE_PREVIEW';\nexport const CLOSE_MOBILE_PREVIEW = 'CLOSE_MOBILE_PREVIEW';\nexport const UPDATE_FLOW_SPEC = 'UPDATE_FLOW_SPEC';\nexport const UPDATE_IS_MOBILE = 'UPDATE_IS_MOBILE';\nexport const UPDATE_BUSINESS_IMAGE_URLS = 'UPDATE_BUSINESS_IMAGE_URLS';\nexport const UPLOAD_BUTTON_IMAGE_ERROR = 'UPLOAD_BUTTON_IMAGE_ERROR';\nexport const IS_DRAFT_BUTTON = 'IS_DRAFT_BUTTON';\n\nconst transformClientFormatToServer = transformClientFormatToServerV3;\n\nexport function goToNextStep() {\n return {\n type: WIZARD_CONTINUE,\n };\n}\n\nexport function goToPreviousStep() {\n return {\n type: WIZARD_BACK,\n };\n}\n\nexport function setCurrentStep(stepNumber) {\n return {\n type: WIZARD_SET_CURRENT_PAGE,\n payload: stepNumber,\n };\n}\n\nexport function initializeWizard(button) {\n return {\n type: INITIALIZE_WIZARD,\n payload: button,\n };\n}\n\nexport function busy() {\n return {\n type: BUTTON_FACTORY_BUSY,\n };\n}\n\nexport function draftBusy() {\n return {\n type: BUTTON_FACTORY_DRAFT_BUSY,\n };\n}\n\nexport function uploadImageFail() {\n return {\n type: UPLOAD_BUTTON_IMAGE_ERROR,\n };\n}\n\nexport function getButton(buttonId) {\n return (dispatch, getState) => {\n dispatch(busy());\n\n return fetcher(`/donate/api/buttons/${buttonId}`)\n .then((response) => response.json())\n .then((response) => {\n const button = _get(response, 'button');\n\n // When V3 is enabled, and a merchant is editing an V2\n // button, int_type should be default to 'C'\n const flowType = getButtonVariable(button, 'int_type');\n if (_isEmpty(flowType)) {\n button.button_variables.push({\n name: SERVER_BUTTON.FLOW_TYPE,\n value: 'C',\n });\n }\n\n dispatch({\n type: GET_BUTTON_DATA_SUCCESS,\n payload: button,\n });\n\n return button;\n })\n .catch((err) => {\n const error = _get(err, 'responseJSON.button');\n dispatch({\n type: GET_BUTTON_DATA_ERROR,\n payload: { error },\n });\n return err;\n });\n };\n}\n\nexport function saveButton(buttonData) {\n return (dispatch) => {\n if (buttonData.id) {\n return dispatch(updateButton(buttonData));\n }\n\n return dispatch(createButton(buttonData));\n };\n}\n\nexport function createButton(buttonData) {\n const buttonDataServerFormat = transformClientFormatToServer(buttonData);\n\n return (dispatch, getState) => {\n if (buttonData.status === 'D') {\n dispatch(draftBusy());\n } else {\n dispatch(busy());\n }\n\n let resParams = {};\n return fetcher('/donate/api/buttons', {\n method: 'POST',\n body: JSON.stringify({\n button: buttonDataServerFormat,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: CREATE_BUTTON_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n const button = _get(responseJson, 'button');\n button.merchantExperienceUrls = _get(\n responseJson,\n 'data.clientData.merchantExperienceUrls'\n );\n dispatch({\n type: CREATE_BUTTON_SUCCESS,\n payload: button,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: CREATE_BUTTON_ERROR,\n payload: {\n error,\n },\n });\n return error;\n });\n };\n}\n\nexport function updateButton(buttonData) {\n const buttonDataServerFormat = transformClientFormatToServer(buttonData);\n\n return (dispatch, getState) => {\n if (buttonData.status === 'D') {\n dispatch(draftBusy());\n } else {\n dispatch(busy());\n }\n\n let resParams = {};\n return fetcher(`/donate/api/buttons/${buttonData.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n button: buttonDataServerFormat,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: EDIT_BUTTON_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n const button = _get(responseJson, 'button');\n dispatch({\n type: EDIT_BUTTON_SUCCESS,\n payload: button,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: EDIT_BUTTON_ERROR,\n payload: {\n error,\n },\n });\n return error;\n });\n };\n}\n\nexport function updateCodeSnippet(code) {\n return {\n type: UPDATE_CODE_SNIPPET,\n payload: code,\n };\n}\n\nexport function showLoginModal() {\n return {\n type: SHOW_LOGIN_MODAL,\n };\n}\n\nexport function hideLoginModal() {\n return {\n type: HIDE_LOGIN_MODAL,\n };\n}\n\nexport function showActionableErrorModal() {\n return {\n type: SHOW_ACTIONABLE_ERROR_MODAL,\n };\n}\n\nexport function hideActionableErroModal() {\n return {\n type: HIDE_ACTIONABLE_ERROR_MODAL,\n };\n}\n\nexport function showUnactionableErrorModal() {\n return {\n type: SHOW_UNACTIONABLE_ERROR_MODAL,\n };\n}\n\nexport function hideUnactionableErrorModal() {\n return {\n type: HIDE_UNACTIONABLE_ERROR_MODAL,\n };\n}\n\nexport function showLeaveModal() {\n return {\n type: SHOW_LEAVE_MODAL,\n };\n}\n\nexport function hideLeaveModal() {\n return {\n type: HIDE_LEAVE_MODAL,\n };\n}\n\nexport function destroyForm() {\n return (dispatch) => {\n const form = BTN_FACTORY_V3_FORM;\n dispatch(destroy(form));\n };\n}\n\nexport function setErrorLoadingLogoImage() {\n return {\n type: SET_ERROR_LOADING_IMAGE,\n };\n}\n\nexport function resetErrorLoadingLogoImage() {\n return {\n type: RESET_ERROR_LOADING_IMAGE,\n };\n}\n\nexport function openMobilePreview() {\n return {\n type: OPEN_MOBILE_PREVIEW,\n };\n}\n\nexport function closeMobilePreview() {\n return {\n type: CLOSE_MOBILE_PREVIEW,\n };\n}\n\nexport function updateFlowSpec(flowSpec) {\n return {\n type: UPDATE_FLOW_SPEC,\n payload: flowSpec,\n };\n}\n\nexport function uploadImage(imageUrl) {\n return () => {\n let resParams = {};\n return fetcher('/donate/api/imageUpload', {\n method: 'POST',\n body: JSON.stringify({\n src: imageUrl,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n return {\n ...responseJson?.error,\n ...resParams,\n };\n }\n const url = _get(responseJson, 'url');\n return { src: url.imageUrl, ok: resParams.ok, success: url.success };\n })\n .catch((error) => {\n return error;\n });\n };\n}\n\nexport function updateBusinessProfileLogo(imageUrl) {\n return () => {\n let resParams = {};\n return fetcher('/donate/api/updateBusinessProfile', {\n method: 'PUT',\n body: JSON.stringify({\n url: imageUrl,\n }),\n })\n .then((response) => {\n resParams = {\n resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n return {\n success: responseJson.success,\n ...resParams,\n };\n }\n return { ok: resParams.ok, success: responseJson.success };\n })\n .catch((error) => {\n return error;\n });\n };\n}\n\nexport function updateBusinessImageUrls(url) {\n return {\n type: UPDATE_BUSINESS_IMAGE_URLS,\n url,\n };\n}\n\nexport function isDraftButton(value) {\n return {\n type: IS_DRAFT_BUTTON,\n payload: value,\n };\n}\n","import { fetcher } from '../../utility/domUtils';\nimport { transformClientFormatToServer } from '../lib/campaignsModel';\nimport _get from 'lodash/get';\n\nexport const INITIALIZE_WIZARD = 'CAMPAIGNS_INITIALIZE_WIZARD';\nexport const INITIALIZE_DESCRIPTION = 'INITIALIZE_DESCRIPTION';\nexport const WIZARD_CONTINUE = 'CAMPAIGNS_WIZARD_CONTINUE';\nexport const WIZARD_BACK = 'CAMPAIGNS_WIZARD_BACK';\nexport const CAMPAIGNS_BUSY = 'CAMPAIGNS_BUSY';\nexport const GET_CAMPAIGN_DATA_SUCCESS = 'GET_CAMPAIGN_DATA_SUCCESS';\nexport const GET_CAMPAIGN_DATA_ERROR = 'GET_CAMPAIGN_DATA_ERROR';\nexport const CREATE_CAMPAIGN_SUCCESS = 'CREATE_CAMPAIGN_SUCCESS';\nexport const CREATE_CAMPAIGN_ERROR = 'CREATE_CAMPAIGN_ERROR';\nexport const EDIT_CAMPAIGN_SUCCESS = 'EDIT_CAMPAIGN_SUCCESS';\nexport const EDIT_CAMPAIGN_ERROR = 'EDIT_CAMPAIGN_ERROR';\nexport const BANNER_ERROR = 'BANNER_ERROR';\nexport const LOGO_ERROR = 'LOGO_ERROR';\nexport const RICH_EDITOR_ERROR = 'RICH_EDITOR_ERROR';\nexport const WIZARD_SET_CURRENT_PAGE = 'WIZARD_SET_CURRENT_PAGE';\nexport const OPEN_MOBILE_PREVIEW = 'OPEN_MOBILE_PREVIEW';\nexport const CLOSE_MOBILE_PREVIEW = 'CLOSE_MOBILE_PREVIEW';\nexport const DRAFT_CAMPAIGNS_BUSY = 'DRAFT_CAMPAIGNS_BUSY';\nexport const IS_DRAFT_CAMPAIGN = 'IS_DRAFT_CAMPAIGN';\n\nexport function initializeWizard(campaign) {\n return {\n type: INITIALIZE_WIZARD,\n payload: campaign,\n };\n}\n\nexport function initializeDescription(description) {\n return {\n type: INITIALIZE_DESCRIPTION,\n payload: description,\n };\n}\n\nexport function goToNextStep() {\n return {\n type: WIZARD_CONTINUE,\n };\n}\n\nexport function goToPreviousStep() {\n return {\n type: WIZARD_BACK,\n };\n}\n\nexport function setCurrentStep(stepNumber) {\n return {\n type: WIZARD_SET_CURRENT_PAGE,\n payload: stepNumber,\n };\n}\n\nexport function updateBannerError(value) {\n return {\n type: BANNER_ERROR,\n payload: {\n error: value,\n },\n };\n}\n\nexport function updateLogoError(value) {\n return {\n type: LOGO_ERROR,\n payload: {\n error: value,\n },\n };\n}\n\nexport function updateRichEditorError(value) {\n return {\n type: RICH_EDITOR_ERROR,\n payload: {\n error: value,\n },\n };\n}\n\nexport function busy() {\n return {\n type: CAMPAIGNS_BUSY,\n };\n}\n\nexport function draftBusy() {\n return {\n type: DRAFT_CAMPAIGNS_BUSY,\n };\n}\n\nexport function getCampaign(id, isDuplicated) {\n return (dispatch) => {\n dispatch(busy());\n\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${id}`, {\n method: 'GET',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: GET_CAMPAIGN_DATA_ERROR,\n payload: { error },\n });\n\n return error;\n }\n const campaign = _get(responseJson, 'campaign');\n\n dispatch({\n type: GET_CAMPAIGN_DATA_SUCCESS,\n payload: { campaign, isDuplicated },\n });\n\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: GET_CAMPAIGN_DATA_ERROR,\n payload: { error },\n });\n\n return error;\n });\n };\n}\n\nexport function saveCampaign(campaignData) {\n return (dispatch) => {\n if (campaignData.id) {\n return dispatch(updateCampaign(campaignData));\n }\n return dispatch(createCampaign(campaignData));\n };\n}\n\nfunction createCampaign(campaignData) {\n const campaignDataServer = transformClientFormatToServer(campaignData);\n return (dispatch) => {\n if (campaignData.status === 'DRAFT') {\n dispatch(draftBusy());\n } else {\n dispatch(busy());\n }\n\n let resParams = {};\n return fetcher('/donate/api/campaigns', {\n method: 'POST',\n body: JSON.stringify({\n campaignData: campaignDataServer,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: CREATE_CAMPAIGN_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n const campaign = _get(responseJson, 'campaign');\n dispatch({\n type: CREATE_CAMPAIGN_SUCCESS,\n payload: campaign,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: CREATE_CAMPAIGN_ERROR,\n payload: {\n error,\n },\n });\n return error;\n });\n };\n}\n\nfunction updateCampaign(campaignData) {\n const campaignDataServer = transformClientFormatToServer(campaignData);\n\n return (dispatch) => {\n if (campaignData.status === 'DRAFT') {\n dispatch(draftBusy());\n } else {\n dispatch(busy());\n }\n\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${campaignData.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n campaignData: campaignDataServer,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: EDIT_CAMPAIGN_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n const campaign = _get(responseJson, 'campaign');\n dispatch({\n type: EDIT_CAMPAIGN_SUCCESS,\n payload: campaign,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: EDIT_CAMPAIGN_ERROR,\n payload: {\n error,\n },\n });\n return error;\n });\n };\n}\n\nexport function openMobilePreview() {\n return {\n type: OPEN_MOBILE_PREVIEW,\n };\n}\n\nexport function closeMobilePreview() {\n return {\n type: CLOSE_MOBILE_PREVIEW,\n };\n}\n\nexport function isDraftCampaign(value) {\n return {\n type: IS_DRAFT_CAMPAIGN,\n payload: value,\n };\n}\n","import _get from 'lodash/get';\nimport { fetcher } from '../../utility/domUtils';\nimport { getUserType } from '../utilsV3/authUtils';\n\nexport const SET_COUNT_DONATIONS = 'SET_COUNT_DONATIONS';\nexport const SET_LAST_UPDATED_DONATION_PAGE = 'SET_LAST_UPDATED_DONATION_PAGE';\nexport const POST_ORGANIZER_UPDATE_ERROR = 'POST_ORGANIZER_UPDATE_ERROR';\nexport const POST_ORGANIZER_UPDATE_SUCCESS = 'POST_ORGANIZER_UPDATE_SUCCESS';\nexport const EDIT_ORGANIZER_UPDATE_ERROR = 'EDIT_ORGANIZER_UPDATE_ERROR';\nexport const EDIT_ORGANIZER_UPDATE_SUCCESS = 'EDIT_ORGANIZER_UPDATE_SUCCESS';\nexport const GET_ORGANIZER_UPDATES = 'GET_ORGANIZER_UPDATES';\nexport const GET_ORGANIZER_UPDATES_ERROR = 'GET_ORGANIZER_UPDATES_ERROR';\nexport const GET_ORGANIZER_UPDATES_SUCCESS = 'GET_ORGANIZER_UPDATES_SUCCESS';\nexport const DELETE_ORGANIZER_UPDATE_SUCCESS =\n 'DELETE_ORGANIZER_UPDATE_SUCCESS';\nexport const DELETE_ORGANIZER_UPDATE_ERROR = 'DELETE_ORGANIZER_UPDATE_ERROR';\nexport const UPDATE_TEXT_ORGANIZER = 'UPDATE_TEXT_ORGANIZER';\nexport const UPDATE_SUBJECT_ORGANIZER = 'UPDATE_SUBJECT_ORGANIZER';\nexport const INCREMENT_ORGANIZER_UPDATE_COUNT =\n 'INCREMENT_ORGANIZER_UPDATE_COUNT';\nexport const DECREMENT_ORGANIZER_UPDATE_COUNT =\n 'DECREMENT_ORGANIZER_UPDATE_COUNT';\n\nexport function setLastUpdated(donationPage) {\n return {\n type: SET_LAST_UPDATED_DONATION_PAGE,\n payload: donationPage,\n };\n}\nexport function getDonationPagesList() {\n return (dispatch) => {\n let resParams = {};\n if (getUserType() === 'PERSONAL') {\n // Return empty donation page list to Personal user type\n dispatch({\n type: SET_COUNT_DONATIONS,\n donationPagesCount: 0,\n });\n return Promise.resolve({ ok: 'OK', donationPages: [] });\n }\n return fetcher('/donate/api/getDonationPages', {\n method: 'GET',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n return {\n ...responseJson?.error,\n ...resParams,\n };\n }\n const donationPages = _get(responseJson, 'donationPages');\n dispatch({\n type: SET_COUNT_DONATIONS,\n donationPagesCount: donationPages?.length,\n });\n return { ok: resParams.ok, donationPages: donationPages };\n })\n .catch((error) => {\n return error;\n });\n };\n}\n\nexport function uploadImage(imageUrl) {\n return () => {\n let resParams = {};\n return fetcher('/donate/api/imageUpload', {\n method: 'POST',\n body: JSON.stringify({\n src: imageUrl,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n return {\n ...responseJson?.error,\n ...resParams,\n };\n }\n const url = _get(responseJson, 'url');\n return { src: url.imageUrl, ok: resParams.ok, success: url.success };\n })\n .catch((error) => {\n return error;\n });\n };\n}\n\nexport function updateBusinessProfileLogo(imageUrl) {\n return () => {\n let resParams = {};\n return fetcher('/donate/api/updateBusinessProfile', {\n method: 'PUT',\n body: JSON.stringify({\n url: imageUrl,\n }),\n })\n .then((response) => {\n resParams = {\n resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n return {\n success: responseJson.success,\n ...resParams,\n };\n }\n return { ok: resParams.ok, success: responseJson.success };\n })\n .catch((error) => {\n return error;\n });\n };\n}\n\nexport function getOrganizerUpdates(campaignId, page) {\n return (dispatch) => {\n let resParams = {};\n dispatch({\n type: GET_ORGANIZER_UPDATES,\n });\n return fetcher(\n `/donate/api/setup/campaigns/${campaignId}/updates?page=${page}`,\n {\n method: 'GET',\n }\n )\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n ...responseJson?.error,\n ...resParams,\n };\n dispatch({\n type: GET_ORGANIZER_UPDATES_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n const organizerUpdates = _get(\n responseJson,\n 'data.organizerUpdates.items',\n []\n );\n const total = _get(responseJson, 'data.organizerUpdates.total', []);\n dispatch({\n type: GET_ORGANIZER_UPDATES_SUCCESS,\n payload: {\n organizerUpdates,\n total,\n },\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: GET_ORGANIZER_UPDATES_ERROR,\n payload: { error },\n });\n return error;\n });\n };\n}\n\nexport function postOrganizerUpdates(campaignId, update) {\n return (dispatch) => {\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${campaignId}/updates`, {\n method: 'POST',\n body: JSON.stringify(update),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n ...responseJson?.error,\n ...resParams,\n };\n dispatch({\n type: POST_ORGANIZER_UPDATE_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n\n const organizerUpdate = _get(responseJson, 'data.organizerUpdate');\n dispatch({\n type: POST_ORGANIZER_UPDATE_SUCCESS,\n payload: {\n organizerUpdate,\n },\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: POST_ORGANIZER_UPDATE_ERROR,\n payload: { error },\n });\n return error;\n });\n };\n}\n\nexport function editOrganizerUpdate(campaignId, updateId, update) {\n return (dispatch) => {\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${campaignId}/updates/${updateId}`, {\n method: 'POST',\n body: JSON.stringify(update),\n })\n .then((res) => {\n resParams = {\n ...resParams,\n status: res.status,\n statusText: res.statusText,\n ok: res.ok,\n };\n return res.json();\n })\n .then((resJson) => {\n if (!resParams.ok) {\n const error = {\n ...resJson?.error,\n ...resParams,\n };\n dispatch({\n type: EDIT_ORGANIZER_UPDATE_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n const organizerUpdate = _get(resJson, 'data.organizerUpdate');\n dispatch({\n type: EDIT_ORGANIZER_UPDATE_SUCCESS,\n payload: {\n organizerUpdate,\n },\n });\n return { ...resJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: EDIT_ORGANIZER_UPDATE_ERROR,\n payload: { error },\n });\n return error;\n });\n };\n}\n\nexport function deleteOrganizerUpdate(campaignId, updateId) {\n return (dispatch) => {\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${campaignId}/updates/${updateId}`, {\n method: 'DELETE',\n })\n .then((res) => {\n resParams = {\n ...resParams,\n status: res.status,\n statusText: res.statusText,\n ok: res.ok,\n };\n return res.json();\n })\n .then((resJson) => {\n if (!resParams.ok) {\n const error = {\n ...resJson?.error,\n ...resParams,\n };\n dispatch({\n type: DELETE_ORGANIZER_UPDATE_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n dispatch({\n type: DELETE_ORGANIZER_UPDATE_SUCCESS,\n payload: {\n updateId,\n },\n });\n return { ...resJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: DELETE_ORGANIZER_UPDATE_ERROR,\n payload: { error },\n });\n return error;\n });\n };\n}\n\nexport function incrementOrganizerUpdateCount() {\n return (dispatch) => {\n dispatch({ type: INCREMENT_ORGANIZER_UPDATE_COUNT });\n };\n}\n\nexport function decrementOrganizerUpdateCount() {\n return (dispatch) => {\n dispatch({ type: DECREMENT_ORGANIZER_UPDATE_COUNT });\n };\n}\n","import { fetcher } from '../../utility/domUtils';\n\nexport const SET_MANAGE_PAGE_INSIGHTS = 'SET_MANAGE_PAGE_INSIGHTS';\n\nexport function getDonationInsights(timeFrame) {\n const params = {};\n if (timeFrame && typeof timeFrame === 'string') {\n params.days_data = timeFrame;\n } else if (timeFrame) {\n params.start_date = timeFrame?.startDate;\n params.end_date = timeFrame?.endDate;\n }\n\n return (dispatch, getState) => {\n let resParams = {};\n return fetcher(\n `/donate/api/insights/products?` + new URLSearchParams(params),\n {\n method: 'GET',\n }\n )\n .then((response) => {\n resParams = {\n ...resParams,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n return {\n ...responseJson?.error,\n ...resParams,\n };\n }\n\n const {\n hostedProductsInsightsList = [],\n allProductsTotalAmount = 0,\n hostedProductsTotalAmount = 0,\n unhostedProductsTotalAmount = 0,\n formattedDonationAmounts = {},\n hasMultiCurrency = false,\n } = responseJson?.donationInsights ?? {};\n\n dispatch({\n type: SET_MANAGE_PAGE_INSIGHTS,\n payload: {\n insightsSummary: {\n allProductsTotalAmount,\n hostedProductsTotalAmount,\n unhostedProductsTotalAmount,\n formattedDonationAmounts,\n hasMultiCurrency,\n },\n hostedProductsInsights: {\n hostedProductsInsightsList,\n hasMultiCurrency,\n },\n },\n });\n\n return {\n primaryCurrency: responseJson?.data?.userPrimaryCurrency,\n ok: resParams.ok,\n };\n })\n .catch((error) => {\n return error;\n });\n };\n}\n","import _get from 'lodash/get';\nimport { fetcher } from '../../../utility/domUtils';\n\nexport const GET_CAMPAIGN = 'GET_CAMPAIGN';\nexport const GET_CAMPAIGN_SUCCESS = 'GET_CAMPAIGN_SUCCESS';\nexport const GET_CAMPAIGN_ERROR = 'GET_CAMPAIGN_ERROR';\nexport const DELETE_CAMPAIGN = 'DELETE_CAMPAIGN';\nexport const DELETE_CAMPAIGN_ERROR = 'DELETE_CAMPAIGN_ERROR';\nexport const DELETE_CAMPAIGN_SUCCESS = 'DELETE_CAMPAIGN_SUCCESS';\nexport const EDIT_CAMPAIGN_VALUE_ERROR = 'EDIT_CAMPAIGN_VALUE_ERROR';\nexport const EDIT_CAMPAIGN_VALUE_SUCCESS = 'EDIT_CAMPAIGN_VALUE_SUCCESS';\nexport const UPDATE_CAMPAIGN = 'UPDATE_CAMPAIGN';\n\nexport function getCampaign(id) {\n return (dispatch, getState) => {\n dispatch({\n type: GET_CAMPAIGN,\n });\n\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${id}`, {\n method: 'GET',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: GET_CAMPAIGN_ERROR,\n payload: { error },\n });\n\n return error;\n }\n const campaign = _get(responseJson, 'campaign');\n\n dispatch({\n type: GET_CAMPAIGN_SUCCESS,\n payload: campaign,\n });\n\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: GET_CAMPAIGN_ERROR,\n payload: { error },\n });\n\n return error;\n });\n };\n}\n\nexport function deleteCampaign(campaignId) {\n return (dispatch, getState) => {\n dispatch({\n type: DELETE_CAMPAIGN,\n });\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${campaignId}`, {\n method: 'DELETE',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: DELETE_CAMPAIGN_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n dispatch({\n type: DELETE_CAMPAIGN_SUCCESS,\n payload: responseJson,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: DELETE_CAMPAIGN_ERROR,\n payload: {\n error,\n },\n });\n return error;\n });\n };\n}\n\nexport function updateCampaignStatus(campaignData) {\n return (dispatch) => {\n dispatch({\n type: UPDATE_CAMPAIGN,\n });\n let resParams = {};\n return fetcher(`/donate/api/campaigns/${campaignData.id}`, {\n method: 'PATCH',\n body: JSON.stringify({\n campaignData,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: EDIT_CAMPAIGN_VALUE_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n const campaign = _get(responseJson, 'campaign');\n dispatch({\n type: EDIT_CAMPAIGN_VALUE_SUCCESS,\n payload: campaign,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: EDIT_CAMPAIGN_VALUE_ERROR,\n payload: {\n error,\n },\n });\n return error;\n });\n };\n}\n","export const BTN_FACTORY_FORM = 'buttonFactory';\nexport const BTN_FACTORY_V3_FORM = 'buttonFactoryV3';\nexport const CAMPAIGNS_FORM = 'campaigns';\nexport const AUTH_STATE_ANONYMOUS = 'ANONYMOUS';\nexport const AUTH_STATE_LOGGEDIN = 'LOGGEDIN';\nexport const BTN_FACTORY_MAX_PROGRAMS = 25;\nexport const BTN_FACTORY_MAX_LENGTH_PROGRAMS = 127;\nexport const MAX_MOBILE_WIDTH = 1024;\nexport const MAX_CHARACTERS_RTE = 2500;\nexport const MAX_CHARACTERS_RTE_UPDATE_FORM = 1000;\n\nexport const CAMPAIGN_STATUS = {\n ACTIVE: 'ACTIVE',\n INACTIVE: 'INACTIVE',\n};\n\nexport const COUNTRIES_AND_PERMIT_CURRENCY = {\n BR: 'BRL',\n};\n\nexport const ERRORS = {\n COUNTRY_NOT_SUPPORTED: 'COUNTRY_NOT_SUPPORTED',\n COMPLIANCE: 'COMPLIANCE',\n GENERIC: 'GENERIC',\n OFAC_HIT: 'OFAC_CAMPAIGN_SCAN_HIT',\n RESTRICTED_ACCOUNT: 'RESTRICTED_ACCOUNT',\n RESTRICTED_IMAGE: 'RESTRICTED_IMAGE',\n};\n\nexport const PAYMENT_PRODUCT = {\n PUBLIC_MONEY_POOL: 'PUBLIC_MONEY_POOL',\n DONATE_BUTTON: 'DONATE_BUTTON',\n DONATE_BUTTON_CAMPAIGN: 'DONATE_BUTTON_CAMPAIGN',\n CROWDFUNDING_CAMPAIGNS: 'CROWDFUNDING_CAMPAIGNS',\n};\n","import _fromPairs from 'lodash/fromPairs';\nimport _compact from 'lodash/compact';\nimport _map from 'lodash/map';\nimport { location } from '../routes/configureHistory';\n\nexport function parseUrlQuery(search = location.search) {\n const queryParams = _fromPairs(\n _compact(\n _map(\n search.slice(1).split('&'),\n (item) => item && item.split('=').map(decodeURIComponent)\n )\n )\n );\n\n return queryParams || {};\n}\n\nexport const addParameterToURL = (url, key, value) => {\n url += (url.split('?')[1] ? '&' : '?') + `${key}=${value}`;\n return url;\n};\n","import _get from 'lodash/get';\nimport { fetcher } from '../../../utility/domUtils';\nimport { addParameterToURL } from '../../../utility/urlUtils';\n\nexport const CREATE_DEFAULT_BUTTON = 'CREATE_DEFAULT_BUTTON';\nexport const CREATE_DEFAULT_BUTTON_SUCCESS = 'CREATE_DEFAULT_BUTTON_SUCCESS';\nexport const CREATE_DEFAULT_BUTTON_ERROR = 'CREATE_DEFAULT_BUTTON_ERROR';\nexport const DELETE_BUTTON = 'DELETE_BUTTON';\nexport const DELETE_BUTTON_SUCCESS = 'DELETE_BUTTON_SUCCESS';\nexport const DELETE_BUTTON_ERROR = 'DELETE_BUTTON_ERROR';\nexport const GET_BUTTON = 'GET_BUTTON';\nexport const GET_BUTTON_SUCCESS = 'GET_BUTTON_SUCCESS';\nexport const GET_BUTTON_ERROR = 'GET_BUTTON_ERROR';\nexport const UPDATE_VOUCHER_LISTING_STATUS = 'UPDATE_VOUCHER_LISTING_STATUS';\nexport const UPDATE_VOUCHER_LISTING_STATUS_SUCCESS =\n 'UPDATE_VOUCHER_LISTING_STATUS_SUCCESS';\nexport const UPDATE_VOUCHER_LISTING_STATUS_ERROR =\n 'UPDATE_VOUCHER_LISTING_STATUS_ERROR';\n\nexport function deleteButton(buttonId, offerProgramId) {\n return (dispatch, getState) => {\n dispatch({\n type: DELETE_BUTTON,\n });\n\n let fetchURL = `/donate/api/buttons/${buttonId}`;\n\n // if we have offerProgramId then append into the URL\n if (offerProgramId) {\n fetchURL = `${fetchURL}/${offerProgramId}`;\n }\n\n let resParams = {};\n return fetcher(fetchURL, {\n method: 'DELETE',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: DELETE_BUTTON_ERROR,\n payload: {\n error,\n },\n });\n return error;\n }\n dispatch({\n type: DELETE_BUTTON_SUCCESS,\n payload: responseJson,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: DELETE_BUTTON_ERROR,\n payload: {\n error,\n },\n });\n return error;\n });\n };\n}\n\nexport function getButton(id, isPostCreateOrEdit, guid) {\n return (dispatch, getState) => {\n dispatch({\n type: GET_BUTTON,\n });\n\n let resParams = {};\n let fetcherURL = `/donate/api/buttons/${id}`;\n if (isPostCreateOrEdit) {\n fetcherURL = addParameterToURL(\n fetcherURL,\n 'isPostCreateOrEdit',\n isPostCreateOrEdit\n );\n }\n if (guid) {\n fetcherURL = addParameterToURL(fetcherURL, 'guid', guid);\n }\n return fetcher(fetcherURL, {\n method: 'GET',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: GET_BUTTON_ERROR,\n payload: { error },\n });\n\n return error;\n }\n const button = _get(responseJson, 'button');\n\n dispatch({\n type: GET_BUTTON_SUCCESS,\n payload: button,\n });\n\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: GET_BUTTON_ERROR,\n payload: { error },\n });\n\n return error;\n });\n };\n}\n\nexport function updateVoucherListingStatus(isToList, button) {\n return (dispatch, getState) => {\n const payload = {\n isToList,\n button,\n };\n\n dispatch({\n type: UPDATE_VOUCHER_LISTING_STATUS,\n });\n\n let resParams = {};\n return fetcher(`/donate/api/voucher_variant/${button.voucherVariant.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n payload,\n }),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n dispatch({\n type: UPDATE_VOUCHER_LISTING_STATUS_ERROR,\n payload: { error },\n });\n return error;\n }\n dispatch({\n type: UPDATE_VOUCHER_LISTING_STATUS_SUCCESS,\n payload: responseJson,\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n dispatch({\n type: UPDATE_VOUCHER_LISTING_STATUS_ERROR,\n payload: { error },\n });\n\n return error;\n });\n };\n}\n","import { normalizeNumber } from '../../../utilsV3/amountUtils';\nimport {\n VOUCHER_TYPE_DOLLAR,\n VOUCHER_INPUT_FIXED,\n VOUCHER_TYPE_PERCENTAGE,\n VOUCHER_INPUT_PERCENTAGE,\n VOUCHER_TYPE_CUSTOM,\n VOUCHER_INPUT_CUSTOM,\n} from './voucherConstants';\nimport get from 'lodash/get';\n\nexport const isGmbFlow = (bn) => {\n return bn && bn.toLowerCase() === 'gmb';\n};\n\nexport const isGenericFlow = (bn) => {\n return !isGmbFlow(bn);\n};\n\nexport const isInputTextValid = (inputToTest) => {\n // valid if character does not matches '<' '>' - to validate against scripting\n return inputToTest.match('^[^<>]*$');\n};\n\nexport const isVoucherAmountInRange = (stringToTest, allowDecimals = true) => {\n // checks for value between 1 and 100,\n // & optionally allows for decimal numbers with up to 2 decimals\n const decimalsRegexPattern = '(\\\\.?|(\\\\.[0-9]{1,2})?)';\n const valueBetweenOand100Pattern = `^([1-9][0-9]?)${\n allowDecimals ? decimalsRegexPattern : ''\n }$|^100$`;\n const valueWithInLimit = new RegExp(valueBetweenOand100Pattern);\n // normalize number to en-US to do regex strict regex validation\n const normalizedNumber = normalizeNumber(stringToTest);\n return !isNaN(normalizedNumber) && valueWithInLimit.test(normalizedNumber);\n};\n\nexport const voucherTypeToInputTypeMapping = [\n {\n voucherType: VOUCHER_TYPE_DOLLAR,\n voucherInputType: VOUCHER_INPUT_FIXED,\n },\n {\n voucherType: VOUCHER_TYPE_PERCENTAGE,\n voucherInputType: VOUCHER_INPUT_PERCENTAGE,\n },\n {\n voucherType: VOUCHER_TYPE_CUSTOM,\n voucherInputType: VOUCHER_INPUT_CUSTOM,\n },\n];\n\nexport const getVoucherDetail = (button) => {\n const voucherAdded = !!get(button, 'offerProgram');\n if (voucherAdded) {\n const { description: voucherDetails, sub_title: discountTagline } = get(\n button,\n 'offerProgram.localized_attributes[0]'\n );\n\n return {\n voucherDetails,\n discountTagline,\n };\n }\n\n return {};\n};\n\nexport const getAllVoucherTypeInfo = (voucherDetail, state = {}) => {\n const { voucherType, voucherValue, voucherDetails, discountTagline } =\n voucherDetail;\n const allVoucherTypeInfo = [\n { type: VOUCHER_TYPE_DOLLAR },\n { type: VOUCHER_TYPE_PERCENTAGE },\n { type: VOUCHER_TYPE_CUSTOM },\n ];\n const typeToUpdate = voucherType || state.selectedVoucherType;\n const voucherInfoIndexToUpdate = allVoucherTypeInfo.findIndex(\n (voucherInfo) => voucherInfo?.type === typeToUpdate\n );\n const updatedVoucherInfo = allVoucherTypeInfo[voucherInfoIndexToUpdate] || {};\n if (voucherValue !== undefined) {\n updatedVoucherInfo.value = voucherValue;\n updatedVoucherInfo.tagline =\n typeToUpdate === VOUCHER_TYPE_CUSTOM ? voucherValue : discountTagline;\n }\n\n if (voucherDetails !== undefined) {\n updatedVoucherInfo.details = voucherDetails;\n }\n\n allVoucherTypeInfo.splice(voucherInfoIndexToUpdate, 1, updatedVoucherInfo);\n\n return allVoucherTypeInfo;\n};\n","import { appendCdnHostName } from '../../../../utility/geoUtils';\n\nexport const VOUCHER_TYPE_CUSTOM = 'custom';\nexport const VOUCHER_TYPE_DISCOUNT = 'discount';\nexport const VOUCHER_TYPE_PERCENTAGE = 'percentage';\nexport const VOUCHER_TYPE_DOLLAR = 'dollar';\n\nexport const ALL_VOUCHER_TYPE_INFO = [\n {\n type: VOUCHER_TYPE_PERCENTAGE,\n },\n {\n type: VOUCHER_TYPE_DOLLAR,\n },\n {\n type: VOUCHER_TYPE_CUSTOM,\n },\n];\n\nexport const VOUCHER_INFO_TAGLINE = 'tagline';\nexport const VOUCHER_INFO_DETAILS = 'details';\n\nexport const VOUCHER_MAX_CHAR_LENGTH = 127;\nexport const MESSAGE_TO_DONORS_MAX_BYTE_LENGTH = 127;\nexport const VOUCHER_MAX_FILE_SIZE = 2000000; // 2MB\nexport const ALLOWED_FILE_EXTENSIONS = ['jpg', 'gif', 'png'];\nexport const ALLOWED_FILE_TYPES = ['image/jpeg', 'image/gif', 'image/png'];\nexport const MESSAGE_INTERPOLATION_KEY = '{businessName}';\n\nexport const VOUCHER_INPUT_FIXED = 'FIXED';\nexport const VOUCHER_INPUT_PERCENTAGE = 'PERCENTAGE';\nexport const VOUCHER_INPUT_CUSTOM = 'CUSTOM';\nexport const VOUCHER_DISCOUNT_DEFAULT_VALUE = 5;\n\nexport const GENERIC_VOUCHER_FLOW = 'generic';\nexport const DEFAULT_LOGO_URL = appendCdnHostName(\n '/ppcp/images/covid/donations@x600.png'\n);\nexport const DISPLAY_DEFAULT_MERCHANT_NAME = 'Acme Inc';\n\nexport const INVALID_ADDRESS_ERROR = 'INVALID_ADDRESS';\n","import _get from 'lodash/get';\nimport _find from 'lodash/find';\nimport _findKey from 'lodash/findKey';\nimport _each from 'lodash/each';\nimport _isEmpty from 'lodash/isEmpty';\nimport { getDonateButtonImageUrl } from '../utilsV3/buttonImage';\nimport {\n getSupportedVariables,\n getUnsupportedVariables,\n formatVariablesForTextArea,\n parseTextAreaValue,\n} from './extraVariables';\nimport _includes from 'lodash/includes';\nimport { isLoggedInUser } from '../utilsV3/authUtils';\nimport { normalizeNumber } from '../utilsV3/amountUtils';\nimport {\n LOGO_TARGET_NOLOGO,\n LOGO_TARGET_BUTTON,\n LOGO_TARGET_PROFILE,\n} from '../reducers/reducerButtonFactoryV3';\nimport isEmpty from 'lodash/isEmpty';\nimport templateData from '../../utility/getTemplateData';\nimport { getServerProps } from '../utilsV3/serverProps';\nimport { formatNumber } from '../../utility/worldReadyUtils';\n\nexport const ACCOUNT_IDENTIFIER_TYPES = {\n MERCHANT_ACCOUNT_ID: 'merchantAccountId',\n EMAIL_ADDRESS: 'emailAddress',\n};\n\n// All supported server button props\nexport const SERVER_BUTTON = {\n AMOUNT_OPTIONS: 'amount_options',\n AMOUNT_TYPE: 'amount_type',\n AMOUNT: 'amount',\n BN: 'bn',\n BTN_CODE_TYPE: 'btn_code_type',\n BUSINESS: 'business',\n BUTTON_IMAGE_URL: 'button_image_url',\n BUTTON_IMAGE: 'button_image',\n BUTTON_NAME: 'button_name',\n BUTTON_VARIABLES: 'button_variables',\n CANCEL_RETURN: 'cancel_return',\n CN: 'cn',\n CODE: 'code',\n COUNTRY_CODE: 'country_code',\n COVER_FEES_OPTION: 'donor_covers_fees',\n CURRENCY_CODE: 'currency_code',\n DONATE_CONTEXT: 'donate_context',\n RECURRING_EXTN_DATA: 'recurring_extn_data',\n EMAIL_CODE: 'email_code',\n FLOW_TYPE: 'int_type',\n ID: 'id',\n IMAGE_BANNER: 'banner_url',\n ITEM_NAME: 'item_name',\n ITEM_NUMBER: 'item_number',\n LANGUAGE: 'language',\n LC: 'lc',\n LOGO_TARGET: 'logo_target',\n LOGO_URL: 'cpp_header_image',\n NO_NOTE: 'no_note',\n NO_RECURRING: 'no_recurring',\n NO_SHIPPING: 'no_shipping',\n PROGRAMNAMES: 'program_names',\n RECURRING_OPTION: 'recurring_option',\n RETURN: 'return',\n SUBTYPE: 'sub_type',\n TYPE: 'type',\n VERSION: 'version',\n WEBSITE_CODE: 'website_code',\n BILL_FREQ: 'billing_frequency',\n DRAFT_VERSION: 'draft_version',\n DRAFT_STEP: 'draft_step',\n STATUS: 'status',\n};\n\n// All supported client button props\nexport const CLIENT_BUTTON = {\n ACCOUNT_IDENTIFIER_TYPE: 'accountIdentifierType',\n AMOUNT_TYPE: 'amountType',\n AMOUNT: 'amountValue',\n BN: 'bn',\n BTN_CODE_TYPE: 'useFullPageExperience',\n BTN_SIZE: 'buttonSize',\n BUSINESS: 'business',\n BUSINESS_PROFILE_LOGO_URL: 'businessProfileLogoUrl',\n BUTTON_IMAGE_URL: 'buttonImageUrl',\n BUTTON_IMAGE: 'buttonImage',\n BUTTON_NAME: 'buttonName',\n BUTTON_VARIABLES: 'extraVariablesView',\n CANCEL_RETURN: 'cancelReturn',\n CODE: 'code',\n COUNTRY_CODE: 'countryCode',\n COVER_FEES_OPTION: 'coverFeesEnabled',\n CURRENCY_CODE: 'currencyCode',\n FLOW_TYPE: 'flowType',\n ID: 'id',\n IMAGE_BANNER: 'bannerImageUrl',\n ITEM_NAME: 'purpose',\n ITEM_NUMBER: 'itemNumber',\n LANGUAGE: 'language',\n LC: 'lc',\n LISTPROGRAMS: 'listPrograms',\n LOGO_TARGET: 'logoTarget',\n LOGO_URL: 'logoUrl',\n MERCHANT_AMOUNT_1: 'merchantAmount1',\n MERCHANT_AMOUNT_2: 'merchantAmount2',\n MERCHANT_AMOUNT_3: 'merchantAmount3',\n NO_ADVANCED_VARIABLES: 'noAdvancedVariables',\n NO_BANNER_IMAGE: 'noBannerImage',\n NO_CANCEL_RETURN: 'noCancelReturn',\n NO_NOTE: 'noNote',\n NO_SHIPPING: 'noShipping',\n NOTE_LABEL: 'noteLabel',\n ORGANIZATION_NAME: 'organizationName',\n PROGRAMINPUT: 'programInput',\n PROGRAMNAMES: 'programNames',\n PURPOSE: 'purpose',\n RECEIVER_CURRENCY: 'receiverCurrency',\n RECURRING_OPTION: 'recurringEnabled',\n FREQUENCIES: 'frequencies',\n RETURN: 'return',\n NO_LOGO_URL: 'noLogoImage',\n PAYMENT_SETTINGS_LOGO_URL: 'paymentSettingsLogoUrl',\n SHOW_ACCEPTED_CARD_LOGOS: 'showAcceptedCardLogos',\n TYPE: 'type',\n USE_PAYPAL_BUTTON_STYLE: 'usePaypalButtonStyle',\n VERSION: 'version',\n DRAFT_VERSION: 'draftVersion',\n DRAFT_STEP: 'draftStep',\n STATUS: 'status',\n};\n\n/**\n * Gets value of a button property in the button_variables array\n * @param {Object} button Button object(server format)\n * @param {String} property Property to get\n * @return {String} Value of the property\n */\nexport function getButtonVariable(button, property) {\n const buttonVar = _find(button.button_variables, (buttonVariable) => {\n return buttonVariable.name === property;\n });\n\n return _get(buttonVar, 'value');\n}\n\n/**\n * Adds button variable to the button_variables array\n * @param {Object} clientFormat Button object(client format)\n * @param {String} clientKey Client property\n * @param {Object} serverFormat Button object(server format)\n * @param {String} serverKey Server property\n */\nfunction addButtonVariable(clientFormat, clientKey, serverFormat, serverKey) {\n if (clientFormat[clientKey] !== undefined) {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: serverKey,\n value: clientFormat[clientKey],\n });\n }\n}\n\n/**\n * Returns true if accepted card logos should be displayed\n */\nexport const shouldShowAcceptedCardLogos = (button) => {\n return !!/CC_/.test(button.button_image_url); // eslint-disable-line\n};\n\nconst buttonSizeMap = {\n sm: 'small',\n md: 'medium',\n lg: 'large',\n};\n\n/**\n * Gets button size\n * @param {Object} button Button\n * @return {String} Size of the button ('small' or 'large')\n */\nexport const getButtonSize = (button) => {\n const size = /_(\\D{2})\\.gif/.exec(button.button_image_url); // eslint-disable-line\n if (size && size.length) {\n return buttonSizeMap[size[1].toLowerCase()];\n }\n\n // Default to 'small' ?\n return 'small';\n};\n\n/**\n * Gets button image and button image url\n */\nexport const getButtonImageAndUrl = (\n buttonSize,\n showAcceptedCardLogos,\n locale,\n country\n) => {\n const buttonImageUrl = getDonateButtonImageUrl(\n buttonSize,\n showAcceptedCardLogos,\n locale,\n country\n );\n let buttonImage = 'REG';\n if (showAcceptedCardLogos) {\n buttonImage = 'CC';\n }\n\n if (buttonSize === 'small') {\n buttonImage = 'SML';\n }\n\n return {\n button_image: buttonImage,\n button_image_url: buttonImageUrl,\n };\n};\n\n/**\n * Returns true if its a Paypal button\n */\nexport const shouldUsePayPalButtonStyle = (button) => {\n const buttonImageUrl = button.button_image_url || '';\n if (buttonImageUrl.length) {\n if (\n buttonImageUrl.includes('btn_donate') &&\n buttonImageUrl.includes(templateData.cdnHostName)\n ) {\n return 'yes';\n }\n }\n\n return 'no';\n};\n\nexport const getAccountIdentifierType = (value) => {\n // Is this an email address or encrypted_account_number\n if (value && value.indexOf('@') !== -1) {\n return ACCOUNT_IDENTIFIER_TYPES.EMAIL_ADDRESS;\n }\n return ACCOUNT_IDENTIFIER_TYPES.MERCHANT_ACCOUNT_ID;\n};\n\nexport const getAccountIdentifierValue = (isServerToClient, serverFormat) => {\n const isLoggedIn = isLoggedInUser({ authState: getServerProps().authState });\n const accountIdentifier = getServerProps().accountIdentifier;\n\n if (!isLoggedIn) {\n return getButtonVariable(serverFormat, SERVER_BUTTON.BUSINESS);\n }\n\n if (isServerToClient) {\n return getButtonVariable(serverFormat, SERVER_BUTTON.BUSINESS);\n }\n\n return _get(accountIdentifier, 'encrypted_account_number');\n};\n\nexport const getLogoUrlFieldValues = (serverFormatButton) => {\n const businessProfileLogoUrl = serverFormatButton?.businessImageUrls?.url;\n let paymentSettingsLogoUrl = '';\n\n // Set logo values for clientSide\n const logoUrl = getButtonVariable(serverFormatButton, SERVER_BUTTON.LOGO_URL);\n\n let logoTarget = getButtonVariable(\n serverFormatButton,\n SERVER_BUTTON.LOGO_TARGET\n );\n\n const version = getButtonVariable(serverFormatButton, SERVER_BUTTON.VERSION);\n let noLogoImage = 'yes';\n switch (logoTarget) {\n case LOGO_TARGET_PROFILE:\n if (_isEmpty(version)) {\n paymentSettingsLogoUrl =\n serverFormatButton?.merchantExperienceUrls?.logoUrl;\n }\n noLogoImage = 'no';\n break;\n case LOGO_TARGET_BUTTON:\n noLogoImage = 'no';\n break;\n case LOGO_TARGET_NOLOGO:\n noLogoImage = 'yes';\n break;\n default:\n if (!_isEmpty(logoUrl)) {\n logoTarget = LOGO_TARGET_BUTTON;\n } else {\n logoTarget = LOGO_TARGET_PROFILE;\n }\n noLogoImage = 'no';\n\n break;\n }\n\n return {\n logoTarget,\n logoUrl,\n businessProfileLogoUrl,\n paymentSettingsLogoUrl,\n noLogoImage,\n };\n};\n\nexport const checkIfOldButton = (serverFormat) => {\n return _isEmpty(serverFormat[SERVER_BUTTON.DONATE_CONTEXT]);\n};\n\nexport const getRecurringOption = (serverFormat) => {\n const isOldButton = checkIfOldButton(serverFormat);\n const noRecurring = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.NO_RECURRING\n );\n\n if (isOldButton && _isEmpty(noRecurring)) {\n const amountValue = getButtonVariable(serverFormat, SERVER_BUTTON.AMOUNT);\n // for button with fixed amount, default to false.\n return amountValue > 0 ? 'false' : 'true';\n }\n\n if (noRecurring === '0') {\n return 'true';\n } else if (noRecurring === '1') {\n return 'false';\n }\n\n return serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.RECURRING_OPTION\n ];\n};\n\nexport const getSupportedRecurringFrequencies = (serverFormat) => {\n if (\n !serverFormat[SERVER_BUTTON.DONATE_CONTEXT] ||\n (serverFormat[SERVER_BUTTON.DONATE_CONTEXT] &&\n !serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.RECURRING_EXTN_DATA\n ])\n ) {\n return ['MONTH'];\n }\n return JSON.parse(\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.RECURRING_EXTN_DATA\n ]\n )[SERVER_BUTTON.BILL_FREQ];\n};\n\n/**\n * Transform button from server format to client format\n */\nexport const transformServerFormatToClient = (serverFormat) => {\n const isHosted = _includes(\n ['BUSINESS', 'PREMIER'],\n getServerProps().userType\n );\n\n const clientFormat = {};\n\n if (serverFormat.id) {\n clientFormat.id = serverFormat.id;\n }\n\n // Top level variables\n clientFormat[CLIENT_BUTTON.BUTTON_IMAGE] =\n serverFormat[SERVER_BUTTON.BUTTON_IMAGE];\n clientFormat[CLIENT_BUTTON.BUTTON_IMAGE_URL] =\n serverFormat[SERVER_BUTTON.BUTTON_IMAGE_URL];\n clientFormat[CLIENT_BUTTON.STATUS] = serverFormat[SERVER_BUTTON.STATUS];\n\n // variables from the button_variables array\n clientFormat[CLIENT_BUTTON.DRAFT_VERSION] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.DRAFT_VERSION\n );\n clientFormat[CLIENT_BUTTON.DRAFT_STEP] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.DRAFT_STEP\n );\n\n const noShipping = getButtonVariable(serverFormat, SERVER_BUTTON.NO_SHIPPING);\n clientFormat[CLIENT_BUTTON.NO_SHIPPING] = noShipping === '0' ? 'no' : 'yes';\n\n const noNote = getButtonVariable(serverFormat, SERVER_BUTTON.NO_NOTE);\n clientFormat[CLIENT_BUTTON.NO_NOTE] = noNote === '0' ? 'no' : 'yes';\n clientFormat[CLIENT_BUTTON.NOTE_LABEL] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.CN\n );\n\n const useFullPageExperience = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.BTN_CODE_TYPE\n );\n clientFormat[CLIENT_BUTTON.BTN_CODE_TYPE] =\n useFullPageExperience === 'S' ? 'no' : 'yes';\n const bannerImageUrl = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.IMAGE_BANNER\n );\n clientFormat[CLIENT_BUTTON.NO_BANNER_IMAGE] = !_isEmpty(bannerImageUrl)\n ? 'no'\n : 'yes';\n clientFormat[CLIENT_BUTTON.IMAGE_BANNER] = bannerImageUrl;\n\n clientFormat[CLIENT_BUTTON.RECEIVER_CURRENCY] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.CURRENCY_CODE\n )\n ? getButtonVariable(serverFormat, SERVER_BUTTON.CURRENCY_CODE)\n : getServerProps().primaryCurrency[0];\n clientFormat[CLIENT_BUTTON.CANCEL_RETURN] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.CANCEL_RETURN\n );\n clientFormat[CLIENT_BUTTON.RETURN] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.RETURN\n );\n clientFormat[CLIENT_BUTTON.NO_CANCEL_RETURN] =\n !isEmpty(clientFormat[CLIENT_BUTTON.CANCEL_RETURN]) ||\n !isEmpty(clientFormat[CLIENT_BUTTON.RETURN])\n ? 'no'\n : 'yes';\n clientFormat[CLIENT_BUTTON.PURPOSE] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.ITEM_NAME\n );\n clientFormat[CLIENT_BUTTON.ITEM_NUMBER] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.ITEM_NUMBER\n );\n clientFormat[CLIENT_BUTTON.COVER_FEES_OPTION] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.COVER_FEES_OPTION\n );\n clientFormat[CLIENT_BUTTON.BUTTON_NAME] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.BUTTON_NAME\n );\n clientFormat[CLIENT_BUTTON.FLOW_TYPE] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.FLOW_TYPE\n );\n clientFormat[CLIENT_BUTTON.ACCOUNT_IDENTIFIER_TYPE] =\n getAccountIdentifierType(\n getButtonVariable(serverFormat, SERVER_BUTTON.BUSINESS)\n );\n clientFormat[CLIENT_BUTTON.BUSINESS] = getAccountIdentifierValue(\n true,\n serverFormat\n );\n\n const countryCode = serverFormat[SERVER_BUTTON.COUNTRY_CODE];\n clientFormat[CLIENT_BUTTON.COUNTRY_CODE] = countryCode;\n clientFormat[CLIENT_BUTTON.LANGUAGE] = serverFormat[SERVER_BUTTON.LANGUAGE];\n\n // Derived variables\n clientFormat[CLIENT_BUTTON.USE_PAYPAL_BUTTON_STYLE] =\n shouldUsePayPalButtonStyle(serverFormat);\n clientFormat[CLIENT_BUTTON.SHOW_ACCEPTED_CARD_LOGOS] =\n shouldShowAcceptedCardLogos(serverFormat);\n clientFormat[CLIENT_BUTTON.BTN_SIZE] = getButtonSize(serverFormat);\n\n const logoFieldValues = getLogoUrlFieldValues(serverFormat);\n clientFormat[CLIENT_BUTTON.LOGO_URL] = logoFieldValues.logoUrl;\n clientFormat[CLIENT_BUTTON.LOGO_TARGET] =\n getButtonVariable(serverFormat, SERVER_BUTTON.LOGO_TARGET) ||\n logoFieldValues.logoTarget;\n clientFormat[CLIENT_BUTTON.PAYMENT_SETTINGS_LOGO_URL] =\n logoFieldValues.paymentSettingsLogoUrl;\n clientFormat[CLIENT_BUTTON.BUSINESS_PROFILE_LOGO_URL] =\n logoFieldValues.businessProfileLogoUrl;\n clientFormat[CLIENT_BUTTON.NO_LOGO_URL] = logoFieldValues.noLogoImage;\n\n const supportedVariables = getSupportedVariables(\n serverFormat.button_variables\n );\n clientFormat.extraVariablesView =\n formatVariablesForTextArea(supportedVariables);\n clientFormat.noAdvancedVariables = isEmpty(clientFormat.extraVariablesView)\n ? 'yes'\n : 'no';\n\n const unsupportedVariables = getUnsupportedVariables(\n serverFormat.button_variables\n );\n clientFormat.unsupportedVariables = unsupportedVariables;\n\n const amount = getButtonVariable(serverFormat, SERVER_BUTTON.AMOUNT);\n\n if (amount !== undefined) {\n clientFormat[CLIENT_BUTTON.AMOUNT_TYPE] = 'fixed';\n clientFormat[CLIENT_BUTTON.AMOUNT] = formatNumber(Number(amount));\n } else {\n clientFormat[CLIENT_BUTTON.AMOUNT_TYPE] = 'variable';\n }\n\n const coverFees = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.COVER_FEES_OPTION\n );\n clientFormat[CLIENT_BUTTON.COVER_FEES_OPTION] =\n coverFees === 'true' ? 'yes' : 'no';\n const recurringOption = getRecurringOption(serverFormat);\n clientFormat[CLIENT_BUTTON.RECURRING_OPTION] =\n recurringOption === 'true' ? 'yes' : 'no';\n if (isHosted) {\n if (recurringOption === 'true') {\n const supportedRecurringFrequencies =\n getSupportedRecurringFrequencies(serverFormat);\n\n clientFormat[CLIENT_BUTTON.FREQUENCIES] = [];\n if (supportedRecurringFrequencies.includes('WEEK')) {\n clientFormat[CLIENT_BUTTON.FREQUENCIES].push('Weekly');\n }\n if (supportedRecurringFrequencies.includes('MONTH')) {\n clientFormat[CLIENT_BUTTON.FREQUENCIES].push('Monthly');\n }\n if (supportedRecurringFrequencies.includes('YEAR')) {\n clientFormat[CLIENT_BUTTON.FREQUENCIES].push('Yearly');\n }\n } else {\n clientFormat[CLIENT_BUTTON.FREQUENCIES] = ['Monthly', 'Yearly'];\n }\n } else {\n clientFormat[CLIENT_BUTTON.FREQUENCIES] = ['Monthly', 'Yearly'];\n }\n\n if (!checkIfOldButton(serverFormat)) {\n // For 'fixed' amounttype, do not read from 'donate_context'\n if (clientFormat[CLIENT_BUTTON.AMOUNT_TYPE] !== 'fixed') {\n let amountType =\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][SERVER_BUTTON.AMOUNT_TYPE];\n if (!amountType) {\n amountType = 'variable';\n }\n amountType = amountType.toLowerCase();\n clientFormat[CLIENT_BUTTON.AMOUNT_TYPE] = amountType;\n\n if (clientFormat[CLIENT_BUTTON.AMOUNT_TYPE] === 'merchant_recommended') {\n const merchAmount1 = _get(\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT],\n `${SERVER_BUTTON.AMOUNT_OPTIONS}[0]`\n );\n const merchAmount2 = _get(\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT],\n `${SERVER_BUTTON.AMOUNT_OPTIONS}[1]`\n );\n const merchAmount3 = _get(\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT],\n `${SERVER_BUTTON.AMOUNT_OPTIONS}[2]`\n );\n clientFormat[CLIENT_BUTTON.MERCHANT_AMOUNT_1] = formatNumber(\n Number(merchAmount1) || 0\n );\n clientFormat[CLIENT_BUTTON.MERCHANT_AMOUNT_2] = formatNumber(\n Number(merchAmount2) || 0\n );\n clientFormat[CLIENT_BUTTON.MERCHANT_AMOUNT_3] = formatNumber(\n Number(merchAmount3) || 0\n );\n }\n }\n\n const programNames =\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][SERVER_BUTTON.PROGRAMNAMES];\n if (!_isEmpty(programNames)) {\n clientFormat[CLIENT_BUTTON.LISTPROGRAMS] = 'yes';\n clientFormat[CLIENT_BUTTON.PROGRAMNAMES] = programNames;\n\n for (let i = 0; i < programNames.length; i++) {\n clientFormat[`${CLIENT_BUTTON.PROGRAMINPUT}${i}`] = programNames[i];\n }\n } else {\n clientFormat[CLIENT_BUTTON.LISTPROGRAMS] = 'no';\n clientFormat[CLIENT_BUTTON.PROGRAMNAMES] = [];\n }\n }\n\n // case: 'NEW PROGRAMS'\n // If it is V1 button, convert V1Program to V2Program\n // If it is V2 button, nothing to convert\n if (checkIfOldButton(serverFormat)) {\n const v0Program = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.ITEM_NUMBER\n );\n if (v0Program) {\n clientFormat[CLIENT_BUTTON.LISTPROGRAMS] = 'yes';\n clientFormat[CLIENT_BUTTON.PROGRAMNAMES] = [v0Program];\n } else {\n clientFormat[CLIENT_BUTTON.LISTPROGRAMS] = 'no';\n clientFormat[CLIENT_BUTTON.PROGRAMNAMES] = [];\n }\n }\n\n // version\n clientFormat[CLIENT_BUTTON.VERSION] = getButtonVariable(\n serverFormat,\n SERVER_BUTTON.VERSION\n );\n\n return clientFormat;\n};\n\n/**\n * Transform button from client format to server format\n */\nexport const transformClientFormatToServer = (clientFormat) => {\n const serverFormat = {};\n\n if (clientFormat.id) {\n serverFormat[SERVER_BUTTON.ID] = clientFormat.id;\n }\n\n const isLoggedIn = isLoggedInUser({ authState: getServerProps().authState });\n const isHosted = _includes(\n ['BUSINESS', 'PREMIER'],\n getServerProps().userType\n );\n const isMerchantIdEnabled = _includes(\n ['BUSINESS', 'PREMIER', 'PERSONAL'],\n getServerProps().userType\n );\n const isProgramEnabled = getServerProps().enableProgram;\n const isMerchantPresetAmountEnabled =\n getServerProps().enableMerchantPresetAmount;\n const isRecurringEnabled = getServerProps().enableRecurring;\n serverFormat[SERVER_BUTTON.COUNTRY_CODE] = clientFormat.countryCode;\n serverFormat[SERVER_BUTTON.TYPE] = 'DONATE';\n serverFormat[SERVER_BUTTON.SUBTYPE] = 'PRODUCTS';\n serverFormat[SERVER_BUTTON.LANGUAGE] = clientFormat.language;\n\n // Create array of `button_variables`\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES] = [];\n\n // btn_code_type\n const useFullPageExperience = clientFormat[CLIENT_BUTTON.BTN_CODE_TYPE];\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.BTN_CODE_TYPE,\n value: useFullPageExperience === 'no' ? 'S' : 'H',\n });\n\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.BUTTON_NAME,\n serverFormat,\n SERVER_BUTTON.BUTTON_NAME\n );\n\n // send the version of button creation\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.VERSION,\n serverFormat,\n SERVER_BUTTON.VERSION\n );\n\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.PURPOSE,\n serverFormat,\n SERVER_BUTTON.ITEM_NAME\n );\n\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.FLOW_TYPE,\n serverFormat,\n SERVER_BUTTON.FLOW_TYPE\n );\n\n const noCancelReturn = clientFormat.noCancelReturn === 'yes';\n if (!noCancelReturn) {\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.CANCEL_RETURN,\n serverFormat,\n SERVER_BUTTON.CANCEL_RETURN\n );\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.RETURN,\n serverFormat,\n SERVER_BUTTON.RETURN\n );\n }\n\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.RECEIVER_CURRENCY,\n serverFormat,\n SERVER_BUTTON.CURRENCY_CODE\n );\n\n // Adding draft variables\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.DRAFT_VERSION,\n serverFormat,\n SERVER_BUTTON.DRAFT_VERSION\n );\n\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.DRAFT_STEP,\n serverFormat,\n SERVER_BUTTON.DRAFT_STEP\n );\n\n if (!isHosted && isRecurringEnabled) {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.NO_RECURRING,\n value: clientFormat[CLIENT_BUTTON.RECURRING_OPTION] === 'yes' ? 0 : 1,\n });\n }\n\n const noLogo = clientFormat.noLogoImage;\n if (isLoggedIn) {\n if (noLogo === 'no') {\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.LOGO_TARGET,\n serverFormat,\n SERVER_BUTTON.LOGO_TARGET\n );\n } else {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.LOGO_TARGET,\n value: LOGO_TARGET_NOLOGO,\n });\n }\n }\n\n if (noLogo === 'no') {\n if (\n clientFormat.logoTarget &&\n clientFormat.logoTarget === LOGO_TARGET_BUTTON\n ) {\n if (clientFormat.logoUrl) {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.LOGO_URL,\n value: clientFormat.logoUrl,\n });\n }\n }\n }\n\n // Business field\n if (isLoggedIn && isMerchantIdEnabled) {\n const accountIdentifierValue = getAccountIdentifierValue(false);\n if (accountIdentifierValue) {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.BUSINESS,\n value: accountIdentifierValue,\n });\n }\n } else {\n clientFormat[CLIENT_BUTTON.BUSINESS] = (\n clientFormat[CLIENT_BUTTON.BUSINESS] || ''\n ).toLowerCase();\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.BUSINESS,\n serverFormat,\n SERVER_BUTTON.BUSINESS\n );\n }\n\n // Amount field\n const amountType = clientFormat[CLIENT_BUTTON.AMOUNT_TYPE];\n if (amountType === 'fixed' && clientFormat[CLIENT_BUTTON.AMOUNT]) {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.AMOUNT,\n value: normalizeNumber(clientFormat[CLIENT_BUTTON.AMOUNT]),\n });\n }\n\n if (isHosted) {\n // Generate donate_context\n // Set `amount_type`\n if (\n isMerchantPresetAmountEnabled ||\n isRecurringEnabled ||\n isProgramEnabled\n ) {\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT] = {};\n }\n\n // Create array of `amount_options`\n if (isMerchantPresetAmountEnabled && amountType !== 'fixed') {\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][SERVER_BUTTON.AMOUNT_TYPE] =\n amountType.toUpperCase();\n\n if (amountType === 'merchant_recommended') {\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.AMOUNT_OPTIONS\n ] = [];\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.AMOUNT_OPTIONS\n ].push(\n normalizeNumber(clientFormat[CLIENT_BUTTON.MERCHANT_AMOUNT_1] || 0)\n );\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.AMOUNT_OPTIONS\n ].push(\n normalizeNumber(clientFormat[CLIENT_BUTTON.MERCHANT_AMOUNT_2] || 0)\n );\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.AMOUNT_OPTIONS\n ].push(\n normalizeNumber(clientFormat[CLIENT_BUTTON.MERCHANT_AMOUNT_3] || 0)\n );\n\n if (clientFormat[SERVER_BUTTON.STATUS] === 'D') {\n if (\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.AMOUNT_OPTIONS\n ].every((e) => e === '' || e === 0)\n ) {\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.AMOUNT_OPTIONS\n ] = null;\n }\n }\n }\n }\n\n // Recurring option\n if (isRecurringEnabled) {\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.RECURRING_OPTION\n ] =\n clientFormat[CLIENT_BUTTON.RECURRING_OPTION] === 'yes'\n ? 'true'\n : 'false';\n }\n\n if (isHosted && isRecurringEnabled) {\n if (clientFormat[CLIENT_BUTTON.RECURRING_OPTION] === 'yes') {\n const billingFrequencies = ['ONE_TIME'];\n if (clientFormat[CLIENT_BUTTON.FREQUENCIES].includes('Weekly')) {\n billingFrequencies.push('WEEK');\n }\n if (clientFormat[CLIENT_BUTTON.FREQUENCIES].includes('Monthly')) {\n billingFrequencies.push('MONTH');\n }\n if (clientFormat[CLIENT_BUTTON.FREQUENCIES].includes('Yearly')) {\n billingFrequencies.push('YEAR');\n }\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][\n SERVER_BUTTON.RECURRING_EXTN_DATA\n ] = JSON.stringify({ billing_frequency: billingFrequencies });\n }\n }\n\n // Program Names\n if (isProgramEnabled) {\n if (clientFormat[CLIENT_BUTTON.LISTPROGRAMS] === 'yes') {\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][SERVER_BUTTON.PROGRAMNAMES] =\n clientFormat[CLIENT_BUTTON.PROGRAMNAMES];\n } else {\n serverFormat[SERVER_BUTTON.DONATE_CONTEXT][SERVER_BUTTON.PROGRAMNAMES] =\n [];\n }\n }\n }\n\n // Handle ITEM_NUMBER\n // When editing a V1 button in V2, ITEM_NUMBER has to be set to \"\"\n if (isHosted) {\n if (isProgramEnabled) {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.ITEM_NUMBER,\n value: '',\n });\n } else {\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.ITEM_NUMBER,\n serverFormat,\n SERVER_BUTTON.ITEM_NUMBER\n );\n }\n } else {\n addButtonVariable(\n clientFormat,\n CLIENT_BUTTON.ITEM_NUMBER,\n serverFormat,\n SERVER_BUTTON.ITEM_NUMBER\n );\n }\n\n // no_shipping field\n if (isHosted) {\n const noShipping = clientFormat[CLIENT_BUTTON.NO_SHIPPING];\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.NO_SHIPPING,\n value: noShipping === 'no' ? 0 : 1,\n });\n } else {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.NO_SHIPPING,\n value: 1,\n });\n }\n\n if (isHosted) {\n const coverFees = clientFormat[CLIENT_BUTTON.COVER_FEES_OPTION];\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.COVER_FEES_OPTION,\n value: coverFees === 'yes' ? 'true' : 'false',\n });\n }\n\n // no_note field\n const noNote = clientFormat[CLIENT_BUTTON.NO_NOTE];\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.NO_NOTE,\n value: noNote === 'no' ? 0 : 1,\n });\n\n // custom note label\n if (noNote === 'no') {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.CN,\n value: clientFormat[CLIENT_BUTTON.NOTE_LABEL],\n });\n }\n\n // Add button_image and button_image_url\n if (clientFormat.usePaypalButtonStyle === 'no') {\n serverFormat.button_image_url = clientFormat.buttonImageUrl;\n } else {\n const buttonImageProps = getButtonImageAndUrl(\n clientFormat.buttonSize,\n clientFormat.showAcceptedCardLogos,\n clientFormat.language,\n clientFormat.countryCode\n );\n serverFormat.button_image_url = buttonImageProps.button_image_url;\n serverFormat.button_image = buttonImageProps.button_image;\n }\n\n const noBannerImage = clientFormat.noBannerImage;\n if (noBannerImage === 'no') {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push({\n name: SERVER_BUTTON.IMAGE_BANNER,\n value: clientFormat.bannerImageUrl,\n });\n }\n\n const noAdvancedVariables = clientFormat.noAdvancedVariables === 'yes';\n if (!noAdvancedVariables && clientFormat.extraVariablesView) {\n const extraVariables = parseTextAreaValue(clientFormat.extraVariablesView);\n _each(extraVariables, (variable) => {\n serverFormat[SERVER_BUTTON.BUTTON_VARIABLES].push(variable);\n });\n }\n\n return serverFormat;\n};\n\nexport function mapServerFieldToClientField(server_field) {\n const field = _findKey(SERVER_BUTTON, (item) => item === server_field);\n return CLIENT_BUTTON[field];\n}\n","import _isEmpty from 'lodash/isEmpty';\nimport { normalizeNumber } from '../utilsV3/amountUtils';\nimport {\n LOGO_TARGET_CAMPAIGN,\n LOGO_TARGET_PROFILE,\n LOGO_TARGET_NOLOGO,\n} from '../reducers/reducerCampaigns';\nimport {\n getButtonImageAndUrl,\n shouldUsePayPalButtonStyle,\n} from '../utilsV3/buttonImage';\nimport { getEndOfDayTime } from '../utilsV3/dateUtils';\nimport { formatNumber } from '../../utility/worldReadyUtils';\n\nexport const SERVER_CAMPAIGN = {\n ID: 'id',\n STATUS: 'status',\n CAMPAIGN_TYPE: 'campaign_type',\n EVENT_TYPE: 'event_type',\n EVENT_NAME: 'event_name',\n EVENT_TITLE: 'event_title',\n EVENT_URL: 'event_url',\n EVENT_DESCRIPTION: 'event_description',\n EVENT_DESCRIPTION_RICH_TEXT: 'rich_text_description',\n COUNTRY_CODE: 'country_code',\n CURRENCY_CODE: 'currency_code',\n CREATOR_ID: 'creator_id',\n PARTICIPANTS: 'participants',\n PARTICIPANT_TYPE: 'participant_type',\n PARTICIPANT_VALUE: 'participant_value',\n CATEGORIES: 'categories',\n POSTAL_CODE: 'postal_code',\n START_TIME: 'start_time',\n END_TIME: 'end_time',\n TEMPLATE_DATA: 'template_data',\n TRANSACTION_SUMMARY: 'transaction_summary',\n TOTAL_AMOUNT: 'total_amount',\n TOTAL_NUMBER_OF_TRANSACTIONS: 'total_number_of_transactions',\n TID: 'tid',\n IS_TARGET_REACHED: 'is_target_reached',\n DONATION_LIMIT_REACHED: 'donation_limit_reached',\n NET_AMOUNT: 'net_amount',\n URLS: 'urls',\n BANNER_URL: 'banner_url',\n LOGO_URL: 'logo_url',\n LOGO_TARGET: 'logo_target',\n NO_LOGO_URL: 'noLogoImage',\n CANCEL_URL: 'cancel_url',\n RETURN_URL: 'return_url',\n DISPLAY_PROPERTIES: 'display_properties',\n RECURRING_SELECTION: 'recurring_selection',\n ANONYMOUS_SELECTION: 'anonymous_selection',\n COVER_FEES: 'cover_fees',\n NOTE: 'note',\n SHIPPING_OPTION: 'shipping_option',\n PREVIEW_TYPE: 'preview_type',\n DONATION_UNITS: 'donation_units',\n AMOUNT: 'amount',\n CURRENCY: 'currency',\n TARGET_AMOUNT: 'target_amount',\n VALUE: 'value',\n BUTTON_IMAGE_URL: 'button_image_url',\n BUTTON_IMAGE: 'button_image',\n LANGUAGE: 'language',\n EMBED_WIDGET: 'embed_widget',\n TIME_UPDATED: 'time_updated',\n HAS_END_TIME: 'hasEndTime',\n METADATA: 'donate_button_campaign_meta_data',\n DRAFT_META: 'draft_meta',\n DRAFT_VERSION: 'draft_version',\n DRAFT_STEP: 'draft_step',\n};\n\nexport const CLIENT_CAMPAIGN = {\n ID: 'id',\n STATUS: 'status',\n CAMPAIGN_TYPE: 'campaignType',\n EVENT_DESCRIPTION: 'plainTextDescription',\n EVENT_DESCRIPTION_RICH_TEXT: 'description',\n EVENT_TYPE: 'eventType',\n EVENT_NAME: 'receiverName',\n EVENT_TITLE: 'eventTitle',\n EVENT_URL: 'eventUrl',\n COUNTRY_CODE: 'countryCode',\n CURRENCY_CODE: 'currencyCode',\n CREATOR_ID: 'creatorId',\n PARTICIPANTS: 'participants',\n PARTICIPANT_TYPE: 'participantType',\n PARTICIPANT_VALUE: 'participantValue',\n CATEGORIES: 'categories',\n POSTAL_CODE: 'postalCode',\n START_TIME: 'startTime',\n END_TIME: 'endTime',\n TEMPLATE_DATA: 'templateData',\n TRANSACTION_SUMMARY: 'transactionSummary',\n TOTAL_AMOUNT: 'TotalAmount',\n TOTAL_NUMBER_OF_TRANSACTIONS: 'transactionCount',\n TID: 'tid',\n IS_TARGET_REACHED: 'targetReached',\n DONATION_LIMIT_REACHED: 'donationLimitReached',\n NET_AMOUNT: 'netAmount',\n BANNER_URL: 'bannerImageUrl',\n LOGO_URL: 'logoUrl',\n LOGO_TARGET: 'logoTarget',\n NO_LOGO_URL: 'noLogoImage',\n NO_CANCEL_RETURN: 'noCancelReturn',\n BUSINESS_PROFILE_LOGO_URL: 'businessProfileLogoUrl',\n CANCEL_URL: 'cancelReturn',\n RETURN_URL: 'return',\n RECURRING_SELECTION: 'recurringEnabled',\n ANONYMOUS_SELECTION: 'anonymousSelection',\n COVER_FEES: 'coverFeesEnabled',\n NOTE: 'note',\n SHIPPING_OPTION: 'noShipping',\n PREVIEW_TYPE: 'previewType',\n AMOUNT: 'amountValue',\n MERCHANT_AMOUNT_1: 'merchantAmount1',\n MERCHANT_AMOUNT_2: 'merchantAmount2',\n MERCHANT_AMOUNT_3: 'merchantAmount3',\n AMOUNT_TYPE: 'amountType',\n USE_PAYPAL_BUTTON_STYLE: 'usePaypalButtonStyle',\n HAS_END_TIME: 'hasEndTime',\n TARGET_AMOUNT: 'targetAmount',\n BUTTON_IMAGE_URL: 'buttonImageUrl',\n BUTTON_IMAGE: 'buttonImage',\n SHOW_ACCEPTED_CARD_LOGOS: 'showAcceptedCardLogos',\n LANGUAGE: 'language',\n BTN_SIZE: 'buttonSize',\n NO_PAYPAL_BUTTON_STYLES: 'noPaypalButtonStyles',\n BUTTON_SIZE: 'buttonSize',\n EMBED_WIDGET: 'embedWidget',\n NO_EMBED_WIDGET: 'noEmbedWidget',\n LAST_UPDATED: 'lastUpdated',\n METADATA: 'clientMetadata',\n DRAFT_META: 'draftMeta',\n DRAFT_VERSION: 'draftVersion',\n DRAFT_STEP: 'draftStep',\n};\n\n/**\n * Returns true if accepted card logos should be displayed\n */\nexport const shouldShowAcceptedCardLogos = (button_image_url) => {\n return !!/CC_/.test(button_image_url); // eslint-disable-line\n};\n\n/**\n * Gets button size\n * @param {Object} button Button\n * @return {String} Size of the button ('small' or 'large')\n */\nconst buttonSizeMap = {\n sm: 'small',\n md: 'medium',\n lg: 'large',\n};\n\n/**\n * Deserializes stored data for security\n */\nconst unsafeFields = [\n 'rich_text_description',\n 'event_name',\n 'event_description',\n 'target_amount',\n 'template_data',\n];\nconst ESCAPED_CHARS = {\n '\\\\u003C': '<',\n '\\\\u003E': '>',\n '\\\\u002F': '/',\n '\\\\u2028': '\\u2028',\n '\\\\u2029': '\\u2029',\n};\nconst deserializeUnsafeCharacters = function (text, rules) {\n var result = text;\n for (var x in rules) {\n result = result.replaceAll(x, rules[x]);\n }\n return result;\n};\nconst deserializeCampaignFields = (campaign, req) => {\n try {\n for (let i = 0; i < unsafeFields.length; i++) {\n const field = unsafeFields[i];\n if (campaign[field])\n campaign[field] = deserializeUnsafeCharacters(\n campaign[field],\n ESCAPED_CHARS\n );\n }\n return campaign;\n } catch (e) {\n return campaign;\n }\n};\n\nexport const getButtonSize = (button_image_url) => {\n const size = /_(\\D{2})\\.gif/.exec(button_image_url); // eslint-disable-line\n if (size && size.length) {\n return buttonSizeMap[size[1].toLowerCase()];\n }\n\n // Default to 'small' ?\n return 'small';\n};\n\n/**\n * Gets transaction summary details from transaction_summary object\n * @param {Object} transactionSummary transaction_summary object(server format)\n * @param {String} property Property to get\n * @return {String} Value of the property\n */\nconst getFromTransactionSummary = (transactionSummary, property) =>\n transactionSummary[property];\n\n/**\n * Gets template_data details from template_data object\n * @param {Object} templateData template_data object(server format)\n * @param {String} property Property to get\n * @return {String} Value of the property\n */\nconst getFromTemplateData = (templateData, property) => {\n switch (property) {\n case SERVER_CAMPAIGN.BANNER_URL:\n case SERVER_CAMPAIGN.LOGO_URL:\n case SERVER_CAMPAIGN.CANCEL_URL:\n case SERVER_CAMPAIGN.RETURN_URL:\n case SERVER_CAMPAIGN.BUTTON_IMAGE_URL:\n const urlsObj = templateData[SERVER_CAMPAIGN.URLS];\n if (urlsObj) {\n return urlsObj[property];\n }\n break;\n case SERVER_CAMPAIGN.RECURRING_SELECTION:\n case SERVER_CAMPAIGN.ANONYMOUS_SELECTION:\n case SERVER_CAMPAIGN.LOGO_TARGET:\n case SERVER_CAMPAIGN.COVER_FEES:\n case SERVER_CAMPAIGN.NOTE:\n case SERVER_CAMPAIGN.SHIPPING_OPTION:\n case SERVER_CAMPAIGN.PREVIEW_TYPE:\n case SERVER_CAMPAIGN.LANGUAGE:\n case SERVER_CAMPAIGN.EMBED_WIDGET:\n const displayPropObj = templateData[SERVER_CAMPAIGN.DISPLAY_PROPERTIES];\n if (displayPropObj) {\n return displayPropObj[property];\n }\n break;\n case SERVER_CAMPAIGN.AMOUNT:\n const donationUnitsObj = templateData[SERVER_CAMPAIGN.DONATION_UNITS];\n if (donationUnitsObj) {\n return donationUnitsObj[property].map((amountObj) => {\n if (amountObj.value === '') {\n return { ...amountObj, value: 0 };\n }\n return amountObj;\n });\n }\n break;\n case SERVER_CAMPAIGN.DRAFT_VERSION:\n case SERVER_CAMPAIGN.DRAFT_STEP:\n const draftMetaObj = templateData[SERVER_CAMPAIGN.DRAFT_META];\n if (draftMetaObj) {\n return draftMetaObj[property];\n }\n break;\n default:\n break;\n }\n};\n\n/**\n * Adds property to template_data\n * @param {Object} clientFormat Campaign object(client format)\n * @param {String} clientKey Client property\n * @param {Object} serverFormat Campaign object(server format)\n * @param {String} serverKey Server property\n */\nconst addToTemplateData = (\n clientFormat,\n clientKey,\n serverFormat,\n serverKey\n) => {\n if (clientFormat[clientKey] !== undefined) {\n switch (clientKey) {\n case CLIENT_CAMPAIGN.BANNER_URL:\n case CLIENT_CAMPAIGN.LOGO_URL:\n case CLIENT_CAMPAIGN.CANCEL_URL:\n case CLIENT_CAMPAIGN.RETURN_URL:\n case CLIENT_CAMPAIGN.BUTTON_IMAGE_URL:\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA] = {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA],\n [SERVER_CAMPAIGN.URLS]: {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][\n SERVER_CAMPAIGN.URLS\n ],\n [serverKey]: clientFormat[clientKey],\n },\n };\n break;\n case CLIENT_CAMPAIGN.RECURRING_SELECTION:\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA] = {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA],\n [SERVER_CAMPAIGN.DISPLAY_PROPERTIES]: {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][\n SERVER_CAMPAIGN.DISPLAY_PROPERTIES\n ],\n [serverKey]:\n clientFormat[clientKey] === 'yes' &&\n clientFormat[CLIENT_CAMPAIGN.HAS_END_TIME] === 'no'\n ? 1\n : 0,\n },\n };\n break;\n case CLIENT_CAMPAIGN.COVER_FEES:\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA] = {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA],\n [SERVER_CAMPAIGN.DISPLAY_PROPERTIES]: {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][\n SERVER_CAMPAIGN.DISPLAY_PROPERTIES\n ],\n [serverKey]: clientFormat[clientKey] === 'yes' ? 1 : 0,\n },\n };\n break;\n case CLIENT_CAMPAIGN.ANONYMOUS_SELECTION:\n case CLIENT_CAMPAIGN.LOGO_TARGET:\n case CLIENT_CAMPAIGN.NOTE:\n case CLIENT_CAMPAIGN.PREVIEW_TYPE:\n case CLIENT_CAMPAIGN.BUTTON_IMAGE:\n case CLIENT_CAMPAIGN.LANGUAGE:\n case CLIENT_CAMPAIGN.EMBED_WIDGET:\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA] = {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA],\n [SERVER_CAMPAIGN.DISPLAY_PROPERTIES]: {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][\n SERVER_CAMPAIGN.DISPLAY_PROPERTIES\n ],\n [serverKey]: clientFormat[clientKey],\n },\n };\n break;\n case CLIENT_CAMPAIGN.SHIPPING_OPTION: {\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA] = {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA],\n [SERVER_CAMPAIGN.DISPLAY_PROPERTIES]: {\n ...serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][\n SERVER_CAMPAIGN.DISPLAY_PROPERTIES\n ],\n [serverKey]: clientFormat[clientKey] === 'no' ? 1 : 0,\n },\n };\n break;\n }\n default:\n break;\n }\n }\n};\n\n/**\n * Adds property to template_data\n * @param {Object} serverFormatButton Campaign object(server format)\n */\nconst getLogoVariable = (logoTarget) => {\n let noLogoImage = 'yes';\n switch (logoTarget) {\n case LOGO_TARGET_PROFILE:\n case LOGO_TARGET_CAMPAIGN:\n noLogoImage = 'no';\n break;\n case LOGO_TARGET_NOLOGO:\n noLogoImage = 'yes';\n break;\n default:\n noLogoImage = 'yes';\n break;\n }\n return noLogoImage;\n};\n\nexport const transformServerFormatToClient = (serverFormat) => {\n const clientFormat = {};\n serverFormat = deserializeCampaignFields(serverFormat);\n if (serverFormat.id) {\n clientFormat[CLIENT_CAMPAIGN.ID] = serverFormat[SERVER_CAMPAIGN.ID];\n }\n\n clientFormat[CLIENT_CAMPAIGN.CAMPAIGN_TYPE] =\n serverFormat[SERVER_CAMPAIGN.CAMPAIGN_TYPE];\n clientFormat[CLIENT_CAMPAIGN.STATUS] = serverFormat[SERVER_CAMPAIGN.STATUS];\n clientFormat[CLIENT_CAMPAIGN.EVENT_TYPE] =\n serverFormat[SERVER_CAMPAIGN.EVENT_TYPE];\n clientFormat[CLIENT_CAMPAIGN.EVENT_NAME] =\n serverFormat[SERVER_CAMPAIGN.EVENT_NAME];\n clientFormat[CLIENT_CAMPAIGN.EVENT_TITLE] =\n serverFormat[SERVER_CAMPAIGN.EVENT_TITLE] || '';\n clientFormat[CLIENT_CAMPAIGN.EVENT_URL] =\n serverFormat[SERVER_CAMPAIGN.EVENT_URL];\n\n const richTextDescription =\n serverFormat[SERVER_CAMPAIGN.EVENT_DESCRIPTION_RICH_TEXT];\n clientFormat[CLIENT_CAMPAIGN.EVENT_DESCRIPTION_RICH_TEXT] =\n JSON.parse(richTextDescription);\n clientFormat[CLIENT_CAMPAIGN.COUNTRY_CODE] =\n serverFormat[SERVER_CAMPAIGN.COUNTRY_CODE];\n clientFormat[CLIENT_CAMPAIGN.CURRENCY_CODE] =\n serverFormat[SERVER_CAMPAIGN.CURRENCY_CODE];\n clientFormat[CLIENT_CAMPAIGN.CREATOR_ID] =\n serverFormat[SERVER_CAMPAIGN.CREATOR_ID];\n clientFormat[CLIENT_CAMPAIGN.PARTICIPANTS] = [];\n clientFormat[CLIENT_CAMPAIGN.CATEGORIES] = [\n ...serverFormat[SERVER_CAMPAIGN.CATEGORIES],\n ];\n clientFormat[CLIENT_CAMPAIGN.POSTAL_CODE] =\n serverFormat[SERVER_CAMPAIGN.POSTAL_CODE];\n clientFormat[CLIENT_CAMPAIGN.START_TIME] =\n serverFormat[SERVER_CAMPAIGN.START_TIME];\n\n if (!_isEmpty(serverFormat[SERVER_CAMPAIGN.END_TIME])) {\n const formattedDate = new Date(\n Date.parse(serverFormat[SERVER_CAMPAIGN.END_TIME])\n );\n formattedDate.setHours(0, 0, 0, 0);\n clientFormat[CLIENT_CAMPAIGN.END_TIME] = formattedDate;\n }\n\n clientFormat[CLIENT_CAMPAIGN.HAS_END_TIME] = !_isEmpty(\n serverFormat[SERVER_CAMPAIGN.END_TIME]\n )\n ? 'yes'\n : 'no';\n\n const numericTargetAmount = Number(\n serverFormat[SERVER_CAMPAIGN.TARGET_AMOUNT] || 0\n );\n clientFormat[CLIENT_CAMPAIGN.TARGET_AMOUNT] =\n formatNumber(numericTargetAmount);\n\n // last update time is in unix timestamp, need to convert it to milleseconds frist\n const lastUpdatedTimestamp =\n serverFormat[SERVER_CAMPAIGN.TIME_UPDATED] * 1000;\n const lastUpdateTimeInUtc = new Date(lastUpdatedTimestamp).toUTCString();\n clientFormat[CLIENT_CAMPAIGN.LAST_UPDATED] = lastUpdateTimeInUtc;\n\n // transaction_summary\n clientFormat[CLIENT_CAMPAIGN.TOTAL_AMOUNT] = getFromTransactionSummary(\n serverFormat[SERVER_CAMPAIGN.TRANSACTION_SUMMARY],\n SERVER_CAMPAIGN.TOTAL_AMOUNT\n );\n clientFormat[CLIENT_CAMPAIGN.TOTAL_NUMBER_OF_TRANSACTIONS] =\n getFromTransactionSummary(\n serverFormat[SERVER_CAMPAIGN.TRANSACTION_SUMMARY],\n SERVER_CAMPAIGN.TOTAL_NUMBER_OF_TRANSACTIONS\n );\n clientFormat[CLIENT_CAMPAIGN.TID] = getFromTransactionSummary(\n serverFormat[SERVER_CAMPAIGN.TRANSACTION_SUMMARY],\n SERVER_CAMPAIGN.TID\n );\n clientFormat[CLIENT_CAMPAIGN.IS_TARGET_REACHED] = getFromTransactionSummary(\n serverFormat[SERVER_CAMPAIGN.TRANSACTION_SUMMARY],\n SERVER_CAMPAIGN.IS_TARGET_REACHED\n );\n clientFormat[CLIENT_CAMPAIGN.DONATION_LIMIT_REACHED] =\n getFromTransactionSummary(\n serverFormat[SERVER_CAMPAIGN.TRANSACTION_SUMMARY],\n SERVER_CAMPAIGN.DONATION_LIMIT_REACHED\n );\n clientFormat[CLIENT_CAMPAIGN.NET_AMOUNT] = getFromTransactionSummary(\n serverFormat[SERVER_CAMPAIGN.TRANSACTION_SUMMARY],\n SERVER_CAMPAIGN.NET_AMOUNT\n );\n\n // template_data\n\n const templateDataJson = JSON.parse(\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA]\n );\n\n if (clientFormat[CLIENT_CAMPAIGN.STATUS] === 'DRAFT') {\n clientFormat[CLIENT_CAMPAIGN.DRAFT_META] = {\n [CLIENT_CAMPAIGN.DRAFT_VERSION]: getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.DRAFT_VERSION\n ),\n [CLIENT_CAMPAIGN.DRAFT_STEP]: getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.DRAFT_STEP\n ),\n };\n }\n\n clientFormat[CLIENT_CAMPAIGN.BANNER_URL] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.BANNER_URL\n );\n clientFormat[CLIENT_CAMPAIGN.EMBED_WIDGET] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.EMBED_WIDGET\n );\n clientFormat[CLIENT_CAMPAIGN.LOGO_URL] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.LOGO_URL\n );\n clientFormat[CLIENT_CAMPAIGN.LOGO_URL] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.LOGO_URL\n );\n clientFormat[CLIENT_CAMPAIGN.CANCEL_URL] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.CANCEL_URL\n );\n clientFormat[CLIENT_CAMPAIGN.RETURN_URL] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.RETURN_URL\n );\n clientFormat[CLIENT_CAMPAIGN.BUSINESS_PROFILE_LOGO_URL] =\n serverFormat.businessProfileLogoUrl ?? '';\n\n clientFormat[CLIENT_CAMPAIGN.LOGO_TARGET] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.LOGO_TARGET\n );\n const noLogo = getLogoVariable(clientFormat[CLIENT_CAMPAIGN.LOGO_TARGET]);\n clientFormat[CLIENT_CAMPAIGN.NO_LOGO_URL] = noLogo;\n clientFormat[CLIENT_CAMPAIGN.RECURRING_SELECTION] =\n parseInt(\n getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.RECURRING_SELECTION\n ),\n 10\n ) === 0\n ? 'no'\n : 'yes';\n clientFormat[CLIENT_CAMPAIGN.ANONYMOUS_SELECTION] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.ANONYMOUS_SELECTION\n );\n clientFormat[CLIENT_CAMPAIGN.COVER_FEES] =\n parseInt(\n getFromTemplateData(templateDataJson, SERVER_CAMPAIGN.COVER_FEES),\n 10\n ) === 0\n ? 'no'\n : 'yes';\n clientFormat[CLIENT_CAMPAIGN.NOTE] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.NOTE\n );\n clientFormat[CLIENT_CAMPAIGN.SHIPPING_OPTION] =\n parseInt(\n getFromTemplateData(templateDataJson, SERVER_CAMPAIGN.SHIPPING_OPTION),\n 10\n ) === 0\n ? 'yes'\n : 'no';\n\n clientFormat[CLIENT_CAMPAIGN.PREVIEW_TYPE] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.PREVIEW_TYPE\n );\n const amountArrayFromServer = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.AMOUNT\n );\n if (amountArrayFromServer.length === 3) {\n clientFormat[CLIENT_CAMPAIGN.AMOUNT_TYPE] = 'merchant_recommended';\n clientFormat[CLIENT_CAMPAIGN.MERCHANT_AMOUNT_1] = formatNumber(\n amountArrayFromServer[0].value || 0\n );\n clientFormat[CLIENT_CAMPAIGN.MERCHANT_AMOUNT_2] = formatNumber(\n amountArrayFromServer[1].value || 0\n );\n clientFormat[CLIENT_CAMPAIGN.MERCHANT_AMOUNT_3] = formatNumber(\n amountArrayFromServer[2].value || 0\n );\n } else if (amountArrayFromServer.length === 1) {\n clientFormat[CLIENT_CAMPAIGN.AMOUNT] = formatNumber(\n amountArrayFromServer[0].value || 0\n );\n if (amountArrayFromServer[0].value !== 0) {\n clientFormat[CLIENT_CAMPAIGN.AMOUNT_TYPE] = 'fixed';\n } else {\n clientFormat[CLIENT_CAMPAIGN.AMOUNT_TYPE] = 'variable';\n }\n }\n\n const button_image_url = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.BUTTON_IMAGE_URL\n );\n if (!_isEmpty(button_image_url)) {\n clientFormat[CLIENT_CAMPAIGN.NO_PAYPAL_BUTTON_STYLES] = 'no';\n clientFormat[CLIENT_CAMPAIGN.BUTTON_IMAGE_URL] = button_image_url;\n clientFormat[CLIENT_CAMPAIGN.USE_PAYPAL_BUTTON_STYLE] =\n shouldUsePayPalButtonStyle(button_image_url);\n clientFormat[CLIENT_CAMPAIGN.SHOW_ACCEPTED_CARD_LOGOS] =\n shouldShowAcceptedCardLogos(button_image_url);\n } else {\n clientFormat[CLIENT_CAMPAIGN.USE_PAYPAL_BUTTON_STYLE] = 'yes';\n clientFormat[CLIENT_CAMPAIGN.NO_PAYPAL_BUTTON_STYLES] = 'yes';\n }\n clientFormat[CLIENT_CAMPAIGN.BTN_SIZE] = getButtonSize(button_image_url);\n clientFormat[CLIENT_CAMPAIGN.LANGUAGE] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.LANGUAGE\n );\n clientFormat[CLIENT_CAMPAIGN.CANCEL_URL] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.CANCEL_URL\n );\n clientFormat[CLIENT_CAMPAIGN.RETURN_URL] = getFromTemplateData(\n templateDataJson,\n SERVER_CAMPAIGN.RETURN_URL\n );\n clientFormat[CLIENT_CAMPAIGN.NO_CANCEL_RETURN] =\n !_isEmpty(clientFormat[CLIENT_CAMPAIGN.CANCEL_URL]) ||\n !_isEmpty(clientFormat[CLIENT_CAMPAIGN.RETURN_URL])\n ? 'no'\n : 'yes';\n\n clientFormat[CLIENT_CAMPAIGN.NO_EMBED_WIDGET] = clientFormat[\n CLIENT_CAMPAIGN.EMBED_WIDGET\n ]\n ? 'no'\n : 'yes';\n\n clientFormat[CLIENT_CAMPAIGN.METADATA] =\n serverFormat[SERVER_CAMPAIGN.METADATA];\n\n return clientFormat;\n};\n\nexport const transformClientFormatToServer = (clientFormat) => {\n const serverFormat = {};\n\n if (clientFormat.id) {\n serverFormat[SERVER_CAMPAIGN.ID] = clientFormat[CLIENT_CAMPAIGN.ID];\n }\n\n serverFormat[SERVER_CAMPAIGN.CAMPAIGN_TYPE] =\n clientFormat[CLIENT_CAMPAIGN.CAMPAIGN_TYPE];\n serverFormat[SERVER_CAMPAIGN.CREATOR_ID] =\n clientFormat[CLIENT_CAMPAIGN.CREATOR_ID];\n serverFormat[SERVER_CAMPAIGN.STATUS] = clientFormat[CLIENT_CAMPAIGN.STATUS];\n serverFormat[SERVER_CAMPAIGN.EVENT_TYPE] =\n clientFormat[CLIENT_CAMPAIGN.EVENT_TYPE];\n serverFormat[SERVER_CAMPAIGN.EVENT_NAME] =\n clientFormat[CLIENT_CAMPAIGN.EVENT_NAME];\n serverFormat[SERVER_CAMPAIGN.EVENT_TITLE] =\n clientFormat[CLIENT_CAMPAIGN.EVENT_TITLE];\n serverFormat[SERVER_CAMPAIGN.EVENT_URL] =\n clientFormat[CLIENT_CAMPAIGN.EVENT_URL];\n serverFormat[SERVER_CAMPAIGN.EVENT_DESCRIPTION] =\n clientFormat[CLIENT_CAMPAIGN.EVENT_DESCRIPTION];\n serverFormat[SERVER_CAMPAIGN.EVENT_DESCRIPTION_RICH_TEXT] =\n clientFormat[CLIENT_CAMPAIGN.EVENT_DESCRIPTION_RICH_TEXT] &&\n JSON.stringify(clientFormat[CLIENT_CAMPAIGN.EVENT_DESCRIPTION_RICH_TEXT]);\n serverFormat[SERVER_CAMPAIGN.COUNTRY_CODE] =\n clientFormat[CLIENT_CAMPAIGN.COUNTRY_CODE];\n serverFormat[SERVER_CAMPAIGN.CURRENCY_CODE] =\n clientFormat[CLIENT_CAMPAIGN.CURRENCY_CODE];\n serverFormat[SERVER_CAMPAIGN.CREATOR_ID] =\n clientFormat[CLIENT_CAMPAIGN.CREATOR_ID];\n serverFormat[SERVER_CAMPAIGN.PARTICIPANTS] = [];\n serverFormat[SERVER_CAMPAIGN.CATEGORIES] = [\n ...clientFormat[CLIENT_CAMPAIGN.CATEGORIES],\n ];\n serverFormat[SERVER_CAMPAIGN.POSTAL_CODE] =\n clientFormat[CLIENT_CAMPAIGN.POSTAL_CODE];\n serverFormat[SERVER_CAMPAIGN.START_TIME] =\n clientFormat[CLIENT_CAMPAIGN.START_TIME];\n\n if (clientFormat[CLIENT_CAMPAIGN.HAS_END_TIME] === 'yes') {\n const eodTime = getEndOfDayTime(clientFormat[CLIENT_CAMPAIGN.END_TIME]);\n\n serverFormat[SERVER_CAMPAIGN.END_TIME] = clientFormat[\n CLIENT_CAMPAIGN.END_TIME\n ]\n ? eodTime\n : 0;\n } else {\n serverFormat[SERVER_CAMPAIGN.END_TIME] = 0;\n }\n\n serverFormat[SERVER_CAMPAIGN.TARGET_AMOUNT] =\n clientFormat[CLIENT_CAMPAIGN.TARGET_AMOUNT] !== '' &&\n normalizeNumber(clientFormat[CLIENT_CAMPAIGN.TARGET_AMOUNT]) !== 0\n ? normalizeNumber(clientFormat[CLIENT_CAMPAIGN.TARGET_AMOUNT])\n : null;\n\n // template_data variables\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA] = {};\n\n if (clientFormat[CLIENT_CAMPAIGN.NO_PAYPAL_BUTTON_STYLES] === 'no') {\n if (clientFormat[CLIENT_CAMPAIGN.USE_PAYPAL_BUTTON_STYLE] === 'no') {\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.BUTTON_IMAGE_URL,\n serverFormat,\n SERVER_CAMPAIGN.BUTTON_IMAGE_URL\n );\n } else {\n const buttonImageProps = getButtonImageAndUrl(\n clientFormat[CLIENT_CAMPAIGN.BUTTON_SIZE],\n clientFormat[CLIENT_CAMPAIGN.SHOW_ACCEPTED_CARD_LOGOS],\n clientFormat[CLIENT_CAMPAIGN.LANGUAGE],\n clientFormat[CLIENT_CAMPAIGN.COUNTRY_CODE]\n );\n addToTemplateData(\n buttonImageProps,\n CLIENT_CAMPAIGN.BUTTON_IMAGE_URL,\n serverFormat,\n SERVER_CAMPAIGN.BUTTON_IMAGE_URL\n );\n addToTemplateData(\n buttonImageProps,\n CLIENT_CAMPAIGN.BUTTON_IMAGE,\n serverFormat,\n SERVER_CAMPAIGN.BUTTON_IMAGE\n );\n }\n }\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.LANGUAGE,\n serverFormat,\n SERVER_CAMPAIGN.LANGUAGE\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.BANNER_URL,\n serverFormat,\n SERVER_CAMPAIGN.BANNER_URL\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.LOGO_URL,\n serverFormat,\n SERVER_CAMPAIGN.LOGO_URL\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.LOGO_TARGET,\n serverFormat,\n SERVER_CAMPAIGN.LOGO_TARGET\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.RECURRING_SELECTION,\n serverFormat,\n SERVER_CAMPAIGN.RECURRING_SELECTION\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.ANONYMOUS_SELECTION,\n serverFormat,\n SERVER_CAMPAIGN.ANONYMOUS_SELECTION\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.COVER_FEES,\n serverFormat,\n SERVER_CAMPAIGN.COVER_FEES\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.NOTE,\n serverFormat,\n SERVER_CAMPAIGN.NOTE\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.SHIPPING_OPTION,\n serverFormat,\n SERVER_CAMPAIGN.SHIPPING_OPTION\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.PREVIEW_TYPE,\n serverFormat,\n SERVER_CAMPAIGN.PREVIEW_TYPE\n );\n const noEmbedWidget = clientFormat[CLIENT_CAMPAIGN.NO_EMBED_WIDGET] === 'yes';\n\n if (!noEmbedWidget) {\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.EMBED_WIDGET,\n serverFormat,\n SERVER_CAMPAIGN.EMBED_WIDGET\n );\n }\n\n const noCancelReturn =\n clientFormat[CLIENT_CAMPAIGN.NO_CANCEL_RETURN] === 'yes';\n if (!noCancelReturn) {\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.CANCEL_URL,\n serverFormat,\n SERVER_CAMPAIGN.CANCEL_URL\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.RETURN_URL,\n serverFormat,\n SERVER_CAMPAIGN.RETURN_URL\n );\n }\n\n // Amount field\n const amountType = clientFormat[CLIENT_CAMPAIGN.AMOUNT_TYPE];\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][SERVER_CAMPAIGN.DONATION_UNITS] =\n {};\n let amountArray = [];\n if (\n amountType === 'fixed' &&\n clientFormat[CLIENT_CAMPAIGN.AMOUNT] !== undefined\n ) {\n amountArray = [\n {\n [SERVER_CAMPAIGN.VALUE]: normalizeNumber(\n clientFormat[CLIENT_CAMPAIGN.AMOUNT] || 0\n ),\n [SERVER_CAMPAIGN.CURRENCY]: clientFormat[CLIENT_CAMPAIGN.CURRENCY_CODE],\n },\n ];\n } else if (amountType === 'variable') {\n amountArray = [\n {\n [SERVER_CAMPAIGN.VALUE]: 0,\n [SERVER_CAMPAIGN.CURRENCY]: clientFormat[CLIENT_CAMPAIGN.CURRENCY_CODE],\n },\n ];\n } else if (amountType === 'merchant_recommended') {\n amountArray = [\n {\n [SERVER_CAMPAIGN.VALUE]: normalizeNumber(\n clientFormat[CLIENT_CAMPAIGN.MERCHANT_AMOUNT_1]\n ),\n [SERVER_CAMPAIGN.CURRENCY]: clientFormat[CLIENT_CAMPAIGN.CURRENCY_CODE],\n },\n {\n [SERVER_CAMPAIGN.VALUE]: normalizeNumber(\n clientFormat[CLIENT_CAMPAIGN.MERCHANT_AMOUNT_2]\n ),\n [SERVER_CAMPAIGN.CURRENCY]: clientFormat[CLIENT_CAMPAIGN.CURRENCY_CODE],\n },\n {\n [SERVER_CAMPAIGN.VALUE]: normalizeNumber(\n clientFormat[CLIENT_CAMPAIGN.MERCHANT_AMOUNT_3]\n ),\n [SERVER_CAMPAIGN.CURRENCY]: clientFormat[CLIENT_CAMPAIGN.CURRENCY_CODE],\n },\n ];\n }\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][SERVER_CAMPAIGN.DONATION_UNITS] =\n {\n [SERVER_CAMPAIGN.AMOUNT]: amountArray,\n };\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.AMOUNT,\n serverFormat,\n SERVER_CAMPAIGN.AMOUNT\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.MERCHANT_AMOUNT_1,\n serverFormat,\n SERVER_CAMPAIGN.MERCHANT_AMOUNT_1\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.MERCHANT_AMOUNT_2,\n serverFormat,\n SERVER_CAMPAIGN.MERCHANT_AMOUNT_2\n );\n addToTemplateData(\n clientFormat,\n CLIENT_CAMPAIGN.MERCHANT_AMOUNT_3,\n serverFormat,\n SERVER_CAMPAIGN.MERCHANT_AMOUNT_3\n );\n\n if (clientFormat.status === 'DRAFT') {\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA][SERVER_CAMPAIGN.DRAFT_META] = {\n [SERVER_CAMPAIGN.DRAFT_VERSION]:\n clientFormat[CLIENT_CAMPAIGN.DRAFT_META][CLIENT_CAMPAIGN.DRAFT_VERSION],\n [SERVER_CAMPAIGN.DRAFT_STEP]:\n clientFormat[CLIENT_CAMPAIGN.DRAFT_META][CLIENT_CAMPAIGN.DRAFT_STEP],\n };\n }\n\n const templateDataString = JSON.stringify(\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA]\n );\n\n serverFormat[SERVER_CAMPAIGN.TEMPLATE_DATA] = templateDataString;\n\n return serverFormat;\n};\n","import _find from 'lodash/find';\nimport _map from 'lodash/map';\nimport _includes from 'lodash/includes';\nimport _difference from 'lodash/difference';\nimport _intersection from 'lodash/intersection';\nimport _head from 'lodash/head';\nimport _last from 'lodash/last';\n\n/**\n * button_variables that are supported in the Wizard UI\n */\nconst donateButtonVariables = [\n 'amount',\n 'banner_url',\n 'bn',\n 'btn_code_type',\n 'business',\n 'button_name',\n 'cancel_return',\n 'cn',\n 'cpp_header_image',\n 'currency_code',\n 'donor_covers_fees',\n 'int_type',\n 'item_name',\n 'item_number',\n 'lc',\n 'logo_target',\n 'no_note',\n 'no_shipping',\n 'return',\n 'return_url',\n 'version',\n 'draft_step',\n 'draft_version',\n];\n\n/**\n * button_variables supported by buttonFactoryServ\n */\nconst allSupportedButtonVariables = [\n 'draft_step',\n 'draft_version',\n 'business',\n 'item_name',\n 'item_number',\n 'currency_code',\n 'PageButtonBgColor',\n 'PageButtonTextColor',\n 'PageCollapseBgColor',\n 'PageCollapseTextColor',\n 'PageTitleTextColor',\n 'a1',\n 'a2',\n 'a3',\n 'add',\n 'address1',\n 'address2',\n 'address_override',\n 'billing_address1',\n 'billing_address2',\n 'billing_city',\n 'billing_country',\n 'billing_first_name',\n 'billing_last_name',\n 'billing_state',\n 'billing_zip',\n 'bn',\n 'bodyBgColor',\n 'bodyBgImg',\n 'cancel_return',\n 'cbt',\n 'city',\n 'cn',\n 'country',\n 'custom',\n 'disclaimer_partner_name',\n 'disclaimer_partner_fee',\n 'disp_tot',\n 'first_name',\n 'fixed_denom',\n 'footerTextColor',\n 'footerTextlinkColor',\n 'headerBgColor',\n 'headerHeight',\n 'invoice',\n 'last_name',\n 'lc',\n 'logoFont',\n 'logoFontColor',\n 'logoFontSize',\n 'logoImage',\n 'logoImagePosition',\n 'logoText',\n 'logo_url',\n 'max_text',\n 'min_amount',\n 'night_phone_a',\n 'night_phone_b',\n 'night_phone_c',\n 'no_note',\n 'no_shipping',\n 'notify_url',\n 'orderSummaryBgColor',\n 'orderSummaryBgImage',\n 'p1',\n 'p2',\n 'p3',\n 'paymentaction',\n 'pp_note',\n 'return',\n 'return_url',\n 'rm',\n 'set_customer_limit',\n 'shipping',\n 'shopping_url',\n 'showBillingAddress',\n 'showBillingEmail',\n 'showBillingPhone',\n 'showCardInfo',\n 'showCustomerName',\n 'showHostedThankyouPage',\n 'showShippingAddress',\n 'sold_out_url',\n 'sra',\n 'src',\n 'srt',\n 'state',\n 'style_color',\n 'style_color',\n 'style_theme',\n 'subtotal',\n 't1',\n 't2',\n 't3',\n 'tax',\n 'tax_rate',\n 'template',\n 'undefined_quantity',\n 'usr_manage',\n 'weight',\n 'weight_unit',\n 'zi',\n];\n\nconst getButtonVariable = (buttonVariables, key) => {\n return _find(buttonVariables, { name: key });\n};\n\nconst getNames = (buttonVariables) => {\n return _map(buttonVariables, 'name');\n};\n\nconst getButtonVariables = (buttonVariables, names) => {\n return _map(names, (name) => {\n return getButtonVariable(buttonVariables, name);\n });\n};\n\nexport const isSupportedVariable = (name) => {\n return _includes(allSupportedButtonVariables, name);\n};\n\n/**\n * Gets all the 'button_variables' that are considered \"extra\" or \"advanced\"\n *\n * Any button_variable that is not handled in any of the wizard\n * steps are considered extra or advanced\n * Eg: 'amount' is a button_variable but it has a dedicated field in wizard step 3\n * So 'amount' is not an extra/advanced variable\n */\nexport const getExtraVariables = (buttonVariables) => {\n const buttonVariableNames = getNames(buttonVariables);\n const extraVariables = _difference(\n buttonVariableNames,\n donateButtonVariables\n );\n\n return getButtonVariables(buttonVariables, extraVariables);\n};\n\n/**\n * Gets all button variables that are unsupported by ButtonFactory\n *\n * Webscr button factory allows users to input *any* variable that they want.\n * But not all the button_variables are \"supported\"\n *\n */\nexport const getUnsupportedVariables = (buttonVariables) => {\n const extraVariables = getExtraVariables(buttonVariables);\n const extraVariableNames = getNames(extraVariables);\n\n const unsupportedVariableNames = _difference(\n extraVariableNames,\n allSupportedButtonVariables\n );\n\n return getButtonVariables(buttonVariables, unsupportedVariableNames);\n};\n\n/**\n * Gets all button_variables that are supported by ButtonFactory\n */\nexport const getSupportedVariables = (buttonVariables) => {\n const extraVariables = getExtraVariables(buttonVariables);\n const extraVariableNames = getNames(extraVariables);\n const supportedVariableNames = _intersection(\n extraVariableNames,\n allSupportedButtonVariables\n );\n\n return getButtonVariables(buttonVariables, supportedVariableNames);\n};\n\n/**\n * Creates view for the textarea used for extra/advanced variables.\n *\n */\nexport const generateViewForSupportedVars = (buttonVariables) => {\n const supportedVariables = getSupportedVariables(buttonVariables);\n const variables = _map(supportedVariables, (supportedVariable) => {\n return `${supportedVariable.name}=${supportedVariable.value}`;\n });\n return variables.join('\\n');\n};\n\nexport const formatVariablesForTextArea = (buttonVariables) => {\n const variables = _map(buttonVariables, (buttonVariable) => {\n return `${buttonVariable.name}=${buttonVariable.value}`;\n });\n return variables.join('\\n');\n};\n\nexport const parseTextAreaValue = (textAreaValue) => {\n const variables = textAreaValue.split('\\n');\n let extraVariables;\n\n try {\n extraVariables = _map(variables, (variable) => {\n const input = variable.split('=');\n\n // Consider URLs including equal symbols\n const value = input.length > 2 ? input.slice(1).join('=') : _last(input);\n\n return {\n name: _head(input),\n value,\n };\n });\n } catch (e) {\n // Exception occurred while parsing user input\n }\n\n return extraVariables;\n};\n","import {\n BUTTON_FACTORY_BUSY,\n INITIALIZE_WIZARD,\n WIZARD_CONTINUE,\n WIZARD_BACK,\n WIZARD_SET_CURRENT_PAGE,\n CREATE_BUTTON_SUCCESS,\n CREATE_BUTTON_ERROR,\n EDIT_BUTTON_SUCCESS,\n EDIT_BUTTON_ERROR,\n GET_BUTTON_DATA_SUCCESS,\n GET_BUTTON_DATA_ERROR,\n UPDATE_CODE_SNIPPET,\n SHOW_ACTIONABLE_ERROR_MODAL,\n HIDE_ACTIONABLE_ERROR_MODAL,\n SHOW_UNACTIONABLE_ERROR_MODAL,\n HIDE_UNACTIONABLE_ERROR_MODAL,\n SHOW_LEAVE_MODAL,\n HIDE_LEAVE_MODAL,\n SET_ERROR_LOADING_IMAGE,\n RESET_ERROR_LOADING_IMAGE,\n OPEN_MOBILE_PREVIEW,\n CLOSE_MOBILE_PREVIEW,\n UPDATE_FLOW_SPEC,\n BUTTON_FACTORY_DRAFT_BUSY,\n UPLOAD_BUTTON_IMAGE_ERROR,\n IS_DRAFT_BUTTON,\n} from '../actions/actionsButtonFactory';\nimport {\n getNextStep,\n getOptionsForLanguageField,\n getPreviousStep,\n} from '../utilsV3/buttonFactoryUtils';\nimport { getServerProps } from '../utilsV3/serverProps';\nimport _get from 'lodash/get';\nimport { transformServerFormatToClient } from '../lib/buttonModelV3';\n\nconst businessProfileLogoUrl = getSettingsLogoUrl();\n\nconst getDefaultValueForLanguage = () => {\n const serverProps = getServerProps();\n const countryAndLanguageDetails = _get(\n serverProps,\n 'countryAndLanguageDetails'\n );\n const selectedCountry = _get(serverProps, 'selectedCountry');\n const languages = getOptionsForLanguageField(\n countryAndLanguageDetails,\n selectedCountry\n );\n // Get first language\n const language = _get(languages, '[0].value');\n return language || 'en';\n};\n\nexport const LOGO_TARGET_BUTTON = 'BUTTON';\nexport const LOGO_TARGET_PROFILE = 'PROFILE';\nexport const LOGO_TARGET_NOLOGO = 'NOLOGO';\n\nexport const defaultButton = {\n accountIdentifierType: 'merchantAccountId',\n allowPrograms: 'No',\n amountType: 'variable',\n amountValue: '',\n business: getServerProps().accountIdentifier.email,\n buttonImageUrl: '',\n buttonName: getServerProps().receiverName,\n buttonSize: 'large',\n countryCode: getServerProps().country,\n coverFeesEnabled: 'yes',\n extraVariables: {},\n extraVariablesView: '',\n frequencies: ['Monthly', 'Yearly'],\n itemNumber: '',\n language: getDefaultValueForLanguage(),\n listPrograms: 'no',\n logoTarget: businessProfileLogoUrl ? LOGO_TARGET_PROFILE : LOGO_TARGET_NOLOGO,\n logoUrl: '',\n merchantAmount1: '',\n merchantAmount2: '',\n merchantAmount3: '',\n noAdvancedVariables: 'yes',\n noCancelReturn: 'yes',\n noLogoImage: businessProfileLogoUrl ? 'no' : 'yes',\n noNote: 'no',\n noShipping: 'yes',\n receiverName: getServerProps().receiverName,\n programNames: [],\n purpose: '',\n receiverCurrency: getServerProps().primaryCurrency[0],\n recurringEnabled: 'yes',\n businessProfileLogoUrl,\n showAcceptedCardLogos: false,\n uploadNewLogo: 'no',\n useFullPageExperience: 'yes',\n usePaypalButtonStyle: 'yes',\n noBannerImage: 'yes',\n version: '3.0', // just to differntiate the experience where button was created\n status: 'D',\n draftVersion: '0',\n draftStep: '0',\n};\n\nconst defaultState = {\n currentStep: 1,\n totalSteps: 4,\n busy: true,\n draftBusy: true,\n isMobilePreviewOpen: false,\n isDraft: false,\n};\n\n// get logo from business profile first and then payments settings\nfunction getSettingsLogoUrl() {\n // business profile\n return _get(getServerProps(), 'businessImageUrls.url');\n}\n\nfunction getFormattedButton(payload) {\n // organizationName is not stored in BF service\n // fetching from server to make sure it gets pre-filled when user is editing/duplicating a button\n return Object.assign({}, transformServerFormatToClient(payload), {\n receiverName: getServerProps().receiverName,\n language: payload.language,\n offerProgram: payload.offerProgram,\n version: '3.0',\n });\n}\n\nexport const initialState = {\n formattedButton: defaultButton,\n};\n\nexport default function buttonFactoryV3(state = defaultState, action) {\n switch (action.type) {\n case IS_DRAFT_BUTTON: {\n return {\n ...state,\n isDraft: action.payload,\n };\n }\n case BUTTON_FACTORY_BUSY: {\n return {\n ...state,\n busy: true,\n };\n }\n\n case BUTTON_FACTORY_DRAFT_BUSY: {\n return {\n ...state,\n draftBusy: true,\n };\n }\n\n case UPLOAD_BUTTON_IMAGE_ERROR: {\n return {\n ...state,\n draftBusy: false,\n };\n }\n\n case INITIALIZE_WIZARD: {\n const button = action.payload;\n // We have to remove buttonName for personal acc. since it's one of the disallowed params\n // in constants/disallowedParamsToAccountType.js\n let clientSideState =\n action.userType !== 'PERSONAL'\n ? initialState\n : {\n formattedButton: {\n ...initialState.formattedButton,\n buttonName: '',\n },\n };\n if (button) {\n clientSideState = {\n formattedButton: getFormattedButton({\n ...button,\n businessImageUrls: action.businessImageUrls,\n merchantExperienceUrls: action.merchantExperienceUrls,\n }),\n };\n }\n\n return {\n ...state,\n button: action.payload,\n ...clientSideState,\n busy: false,\n draftBusy: false,\n };\n }\n\n case WIZARD_CONTINUE: {\n const {\n currentStep,\n formattedButton: { flowType },\n } = state;\n\n return {\n ...state,\n currentStep: getNextStep(currentStep, flowType),\n busy: false,\n draftBusy: false,\n };\n }\n\n case WIZARD_BACK: {\n const { currentStep } = state;\n\n return {\n ...state,\n currentStep: getPreviousStep(currentStep),\n };\n }\n\n case WIZARD_SET_CURRENT_PAGE: {\n return {\n ...state,\n currentStep: action.payload,\n };\n }\n\n case CREATE_BUTTON_SUCCESS: {\n return {\n ...state,\n button: action.payload,\n formattedButton: getFormattedButton({\n ...action.payload,\n businessImageUrls: action.businessImageUrls,\n merchantExperienceUrls: action.merchantExperienceUrls,\n }),\n busy: false,\n draftBusy: false,\n error: null,\n isButtonCreated: true,\n };\n }\n\n case CREATE_BUTTON_ERROR: {\n const { error } = action.payload;\n\n return {\n ...state,\n error,\n busy: false,\n draftBusy: false,\n };\n }\n\n case EDIT_BUTTON_SUCCESS: {\n const { currentStep, totalSteps, isDraft } = state;\n let isButtonCreated = isDraft && currentStep === totalSteps;\n\n return {\n ...state,\n button: action.payload,\n formattedButton: getFormattedButton({\n ...action.payload,\n businessImageUrls: action.businessImageUrls,\n merchantExperienceUrls: action.merchantExperienceUrls,\n }),\n busy: false,\n draftBusy: false,\n error: null,\n isButtonCreated: isButtonCreated,\n isButtonEdited: true,\n };\n }\n\n case EDIT_BUTTON_ERROR: {\n const { error } = action.payload;\n\n return {\n ...state,\n error,\n busy: false,\n draftBusy: false,\n isButtonCreated: false,\n isButtonEdited: true,\n };\n }\n\n case GET_BUTTON_DATA_SUCCESS: {\n const button = action.payload;\n const formattedButton = getFormattedButton({\n ...action.payload,\n businessImageUrls: action.businessImageUrls,\n merchantExperienceUrls: action.merchantExperienceUrls,\n });\n const draftStep = parseInt(formattedButton.draftStep || '0', 10);\n const currentStep =\n button.status === 'D' && draftStep > 0 ? draftStep : state.currentStep;\n const isDraft = button.status === 'D';\n\n return {\n ...state,\n button,\n formattedButton,\n currentStep,\n busy: false,\n draftBusy: false,\n isDraft: isDraft,\n };\n }\n\n case GET_BUTTON_DATA_ERROR: {\n const { error } = action.payload;\n\n return {\n ...state,\n error,\n busy: false,\n draftBusy: false,\n };\n }\n\n case UPDATE_CODE_SNIPPET: {\n return {\n ...state,\n customVariable: action.payload,\n };\n }\n\n case SHOW_ACTIONABLE_ERROR_MODAL: {\n return {\n ...state,\n showActionableErrorModal: true,\n };\n }\n\n case HIDE_ACTIONABLE_ERROR_MODAL: {\n return {\n ...state,\n showActionableErrorModal: false,\n };\n }\n\n case SHOW_UNACTIONABLE_ERROR_MODAL: {\n return {\n ...state,\n showUnactionableErrorModal: true,\n };\n }\n\n case HIDE_UNACTIONABLE_ERROR_MODAL: {\n return {\n ...state,\n showUnactionableErrorModal: false,\n };\n }\n\n case SHOW_LEAVE_MODAL: {\n return {\n ...state,\n showLeaveModal: true,\n };\n }\n\n case HIDE_LEAVE_MODAL: {\n return {\n ...state,\n showLeaveModal: false,\n };\n }\n\n case SET_ERROR_LOADING_IMAGE: {\n return {\n ...state,\n errorLoadingLogoImage: true,\n };\n }\n\n case RESET_ERROR_LOADING_IMAGE: {\n return {\n ...state,\n errorLoadingLogoImage: false,\n };\n }\n\n case OPEN_MOBILE_PREVIEW: {\n return {\n ...state,\n isMobilePreviewOpen: true,\n };\n }\n\n case CLOSE_MOBILE_PREVIEW: {\n return {\n ...state,\n isMobilePreviewOpen: false,\n };\n }\n\n case UPDATE_FLOW_SPEC: {\n return {\n ...state,\n totalSteps: action.payload.totalSteps,\n formattedButton: {\n ...state.formattedButton,\n flowType: action.payload.flowType,\n },\n };\n }\n\n default:\n return state;\n }\n}\n","import {\n INITIALIZE_WIZARD,\n WIZARD_CONTINUE,\n WIZARD_BACK,\n CAMPAIGNS_BUSY,\n GET_CAMPAIGN_DATA_SUCCESS,\n GET_CAMPAIGN_DATA_ERROR,\n CREATE_CAMPAIGN_SUCCESS,\n CREATE_CAMPAIGN_ERROR,\n EDIT_CAMPAIGN_SUCCESS,\n EDIT_CAMPAIGN_ERROR,\n BANNER_ERROR,\n LOGO_ERROR,\n RICH_EDITOR_ERROR,\n WIZARD_SET_CURRENT_PAGE,\n OPEN_MOBILE_PREVIEW,\n CLOSE_MOBILE_PREVIEW,\n INITIALIZE_DESCRIPTION,\n DRAFT_CAMPAIGNS_BUSY,\n IS_DRAFT_CAMPAIGN,\n} from '../actions/actionsCampaigns';\nimport { getNextStep, getPreviousStep } from '../utilsV3/campaignUtils.js';\nimport { getOptionsForLanguageField } from '../utilsV3/commonUtils';\nimport { transformServerFormatToClient } from '../lib/campaignsModel';\nimport { getServerProps } from '../utilsV3/serverProps';\nimport _get from 'lodash/get';\nimport { COUNTRIES_AND_PERMIT_CURRENCY } from '../clientConstants';\nimport { getDefaultEndTime } from '../utilsV3/dateUtils';\n\nconst businessProfileLogoUrl =\n _get(getServerProps(), 'businessImageUrls.url') || '';\n\nconst receiverName = _get(getServerProps(), 'receiverName', '');\n\nexport const LOGO_TARGET_CAMPAIGN = 'CAMPAIGN';\nexport const LOGO_TARGET_PROFILE = 'PROFILE';\nexport const LOGO_TARGET_NOLOGO = 'NOLOGO';\n\nconst getDefaultValueForLanguage = () => {\n const serverProps = getServerProps();\n const countryAndLanguageDetails = _get(\n serverProps,\n 'countryAndLanguageDetails'\n );\n const selectedCountry = _get(serverProps, 'selectedCountry');\n const languages = getOptionsForLanguageField(\n countryAndLanguageDetails,\n selectedCountry\n );\n // Get first language\n return _get(languages, '[0].value', 'en');\n};\n\n// TODO: need to clean up default Campaign before launch\nconst defaultCampaign = {\n startTime: 0,\n status: 'DRAFT',\n currencyCode: _get(getServerProps(), 'primaryCurrency[0]', 'USD'),\n countryCode: getServerProps().country,\n language: getDefaultValueForLanguage(),\n campaignType: 'DONATE_BUTTON_CAMPAIGN',\n receiverName: receiverName,\n eventType: 'external',\n eventTitle: '',\n eventUrl: undefined,\n bannerImageUrl: '',\n logoUrl: '',\n businessProfileLogoUrl: businessProfileLogoUrl,\n noLogoImage: businessProfileLogoUrl ? 'no' : 'yes',\n logoTarget: businessProfileLogoUrl ? LOGO_TARGET_PROFILE : LOGO_TARGET_NOLOGO,\n cancelReturn: '',\n return: '',\n recurringEnabled: 'yes',\n anonymousSelection: 1,\n coverFeesEnabled: 'yes',\n note: 1,\n noShipping: 'yes',\n previewType: 0,\n amountValue: '',\n merchantAmount1: '',\n merchantAmount2: '',\n merchantAmount3: '',\n postalCode: '945879',\n categories: ['x', 'y'],\n TotalAmount: '0.00',\n transactionCount: 0,\n participants: [],\n tid: 117625766824388220,\n targetReached: false,\n donationLimitReached: false,\n netAmount: '0.00',\n hasEndTime: 'no',\n endTime: getDefaultEndTime(),\n amountType: 'variable',\n template_data: '{}',\n buttonSize: 'large',\n targetAmount: 10000,\n usePaypalButtonStyle: 'yes',\n buttonImageUrl: '',\n showAcceptedCardLogos: false,\n imgButtonStylesError: '',\n noPaypalButtonStyles: 'yes',\n noCancelReturn: 'yes',\n description: [],\n noEmbedWidget: 'no',\n embedWidget: { image: '', description: '' },\n draftMeta: { draftVersion: '0', draftStep: '0' },\n timeUpdated: null,\n};\n\nexport const initialState = {\n formattedCampaign: defaultCampaign,\n};\n\nconst defaultState = {\n currentStep: 1,\n totalSteps: 4,\n busy: true,\n draftBusy: true,\n bannerImageError: false,\n logoImageError: false,\n isMobilePreviewOpen: false,\n};\n\nfunction getFormattedCampaign(payload) {\n return Object.assign({}, transformServerFormatToClient(payload));\n}\n\nfunction getClientSideStateByCountry(state) {\n const countries = Object.keys(COUNTRIES_AND_PERMIT_CURRENCY);\n if (countries.includes(state.formattedCampaign.countryCode)) {\n return {\n formattedCampaign: {\n ...state.formattedCampaign,\n currencyCode:\n COUNTRIES_AND_PERMIT_CURRENCY[state.formattedCampaign.countryCode],\n },\n };\n }\n\n return state;\n}\n\nexport default function campaigns(state = defaultState, action) {\n switch (action.type) {\n case INITIALIZE_WIZARD: {\n const campaign = action.payload;\n const clientSideState = getClientSideStateByCountry(initialState);\n return {\n ...state,\n campaign,\n formattedCampaign: campaign || clientSideState.formattedCampaign,\n busy: false,\n draftBusy: false,\n isDraft: false,\n };\n }\n\n case INITIALIZE_DESCRIPTION: {\n return {\n ...state,\n formattedCampaign: {\n ...state.formattedCampaign,\n description: action.payload,\n },\n };\n }\n\n case WIZARD_CONTINUE: {\n const { currentStep } = state;\n\n return {\n ...state,\n currentStep: getNextStep(currentStep),\n };\n }\n\n case WIZARD_BACK: {\n const { currentStep } = state;\n\n return {\n ...state,\n currentStep: getPreviousStep(currentStep),\n };\n }\n\n case WIZARD_SET_CURRENT_PAGE: {\n return {\n ...state,\n currentStep: action.payload,\n };\n }\n\n case IS_DRAFT_CAMPAIGN: {\n return {\n ...state,\n isDraft: action.payload,\n };\n }\n\n case CAMPAIGNS_BUSY: {\n return {\n ...state,\n busy: true,\n };\n }\n\n case DRAFT_CAMPAIGNS_BUSY: {\n return {\n ...state,\n draftBusy: true,\n };\n }\n\n case GET_CAMPAIGN_DATA_SUCCESS: {\n const { campaign, isDuplicated } = action.payload;\n const status = isDuplicated ? 'ACTIVE' : campaign.status;\n const startTime = campaign.start_time ?? 0;\n\n const formattedCampaign = getFormattedCampaign({\n ...campaign,\n status,\n businessProfileLogoUrl: businessProfileLogoUrl,\n start_time: startTime,\n });\n const draftStep = parseInt(\n formattedCampaign.draftMeta?.draftStep || '0',\n 10\n );\n const currentStep =\n status === 'DRAFT' && draftStep > 0 ? draftStep : state.currentStep;\n\n const isDraft = status === 'DRAFT';\n\n return {\n ...state,\n campaign: { ...campaign, status },\n formattedCampaign,\n currentStep,\n busy: false,\n draftBusy: false,\n isDraft: isDraft,\n };\n }\n\n case GET_CAMPAIGN_DATA_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n busy: false,\n draftBusy: false,\n };\n }\n\n case CREATE_CAMPAIGN_SUCCESS: {\n const formattedCampaign = getFormattedCampaign({\n ...action.payload,\n businessProfileLogoUrl,\n });\n return {\n ...state,\n campaign: formattedCampaign,\n formattedCampaign,\n busy: false,\n draftBusy: false,\n error: null,\n isCampaignCreated: true,\n };\n }\n case CREATE_CAMPAIGN_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n busy: false,\n draftBusy: false,\n };\n }\n\n case EDIT_CAMPAIGN_SUCCESS: {\n const campaign = action.payload;\n const { currentStep, isDraft } = state;\n let isCampaignCreated = isDraft && currentStep === 4;\n\n return {\n ...state,\n campaign: campaign,\n busy: false,\n draftBusy: false,\n error: null,\n isCampaignCreated: isCampaignCreated,\n };\n }\n\n case EDIT_CAMPAIGN_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n busy: false,\n draftBusy: false,\n isCampaignCreated: false,\n };\n }\n\n case BANNER_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n bannerImageError: error,\n };\n }\n\n case LOGO_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n logoImageError: error,\n };\n }\n\n case RICH_EDITOR_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n richEditorError: error,\n };\n }\n\n case OPEN_MOBILE_PREVIEW: {\n return {\n ...state,\n isMobilePreviewOpen: true,\n };\n }\n\n case CLOSE_MOBILE_PREVIEW: {\n return {\n ...state,\n isMobilePreviewOpen: false,\n };\n }\n\n default:\n return state;\n }\n}\n","import { transformClientFormatToServer } from '../../lib/buttonModelV3';\nimport { defaultButton } from '../../reducers/reducerButtonFactoryV3';\nimport _get from 'lodash/get';\nimport { voucherTypeToInputTypeMapping } from './utils/partnerUtils';\nimport {\n VOUCHER_TYPE_CUSTOM,\n INVALID_ADDRESS_ERROR,\n} from './utils/voucherConstants';\nimport { normalizeNumber } from '../../utilsV3/amountUtils';\nimport { fetcher } from '../../../utility/domUtils';\n\nexport const CREATE_DEFAULT_BUTTON = 'CREATE_DEFAULT_BUTTON';\nexport const CREATE_DEFAULT_BUTTON_SUCCESS = 'CREATE_DEFAULT_BUTTON_SUCCESS';\nexport const CREATE_DEFAULT_BUTTON_ERROR = 'CREATE_DEFAULT_BUTTON_ERROR';\nexport const EMAIL_CONFIRM_RESEND = 'EMAIL_CONFIRM_RESEND';\nexport const EMAIL_SEND_SUCCESS = 'EMAIL_SEND_SUCCESS';\nexport const EMAIL_SEND_SUCCESS_RESET = 'EMAIL_SENT_SUCCESSFULLY';\nexport const EMAIL_SEND_ERROR = 'EMAIL_SEND_ERROR';\nexport const CHECK_EMAIL_CONFIRMED = 'CHECK_EMAIL_CONFIRMED';\nexport const CHECK_EMAIL_CONFIRMED_RESPONSE = 'CHECK_EMAIL_CONFIRMED_RESPONSE';\nexport const CHECK_EMAIL_CONFIRMED_ERROR = 'CHECK_EMAIL_CONFIRMED_ERROR';\nexport const SET_VERIFY_EMAIL_MODAL_OPEN = 'SET_VERIFY_EMAIL_MODAL_OPEN';\nexport const UPDATE_MESSAGE = 'UPDATE_MESSAGE';\nexport const UPDATE_STEP = 'UPDATE_STEP';\nexport const SHOW_UNKNOWN_ERROR_OCCURED = 'SHOW_UNKNOWN_ERROR_OCCURED';\nexport const HIDE_UNKNOWN_ERROR_OCCURED = 'HIDE_UNKNOWN_ERROR_OCCURED';\nexport const SHOW_COUNTRY_NOT_SUPPORTED = 'SHOW_COUNTRY_NOT_SUPPORTED';\nexport const HIDE_COUNTRY_NOT_SUPPORTED = 'HIDE_COUNTRY_NOT_SUPPORTED';\nexport const TOGGLE_ADD_VOUCHER = 'TOGGLE_ADD_VOUCHER';\nexport const UPDATE_VOUCHER_DETAILS = 'UPDATE_VOUCHER_DETAILS';\nexport const UPDATE_VOUCHER_ZIPCODE = 'UPDATE_VOUCHER_ZIPCODE';\nexport const UPDATE_AGREEMENT = 'UPDATE_AGREEMENT';\nexport const UPDATE_BUSINESS_IMAGE_URLS = 'UPDATE_BUSINESS_IMAGE_URLS';\nexport const UPDATE_PPCC_STATUS = 'UPDATE_PPCC_STATUS';\nexport const ADD_MERCHANT_FOOTER = 'ADD_MERCHANT_FOOTER';\nexport const UPDATE_SELECTED_VOUCHER_TYPE = 'UPDATE_SELECTED_VOUCHER_TYPE';\n\n/**\n * DOES_NOT create a default button as the API is WIP\n * Instead, creates a Button with the parameters passed\n */\nexport function createDefaultButton(\n bnCode,\n messageToDonors,\n presetAmounts,\n addVoucher = false,\n additionalVoucherInfo = {}\n) {\n const buttonDataServerFormat = transformClientFormatToServer(defaultButton);\n const {\n voucherInfo,\n organizationName,\n businessImageUrls,\n country,\n isCountrySupportedForFbUpload,\n } = additionalVoucherInfo;\n const payload = {\n button: buttonDataServerFormat,\n default: 'true',\n bn: bnCode,\n purpose: messageToDonors,\n amount_options: presetAmounts,\n businessName: organizationName,\n imageData: {\n url: businessImageUrls && businessImageUrls.url,\n name: 'custom-donation-logo.png',\n },\n };\n\n if (addVoucher && voucherInfo) {\n const discountType = voucherTypeToInputTypeMapping.find(\n (mapping) => mapping.voucherType === voucherInfo.type\n ).voucherInputType;\n const discountValue =\n voucherInfo.type === VOUCHER_TYPE_CUSTOM\n ? 0\n : normalizeNumber(voucherInfo.value);\n\n payload.hasVoucher = addVoucher;\n payload.isCountrySupportedForFbUpload = isCountrySupportedForFbUpload;\n payload.voucherInput = {\n discountValue,\n discountType,\n offerTagline: voucherInfo.tagline,\n offerDetails: voucherInfo.details,\n address: {\n postal_code: voucherInfo.zipcode,\n country_code: country,\n },\n };\n }\n\n return (dispatch, getState) => {\n dispatch({\n type: CREATE_DEFAULT_BUTTON,\n });\n\n let resParams = {};\n return fetcher('/donate/api/buttons', {\n method: 'POST',\n body: JSON.stringify(payload),\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.json();\n })\n .then((responseJson) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: responseJson,\n ...resParams,\n };\n if (\n addVoucher &&\n responseJson &&\n responseJson.status === 400 &&\n _get(responseJson, 'responseJSON.button.message') &&\n _get(responseJson, 'responseJSON.button.message').includes(\n 'Invalid address'\n )\n ) {\n dispatch({\n type: CREATE_DEFAULT_BUTTON_ERROR,\n error: INVALID_ADDRESS_ERROR,\n });\n } else {\n dispatch(showUnknownErrorOccured());\n dispatch({\n type: CREATE_DEFAULT_BUTTON_ERROR,\n error,\n });\n }\n return error;\n }\n const button = _get(responseJson, 'button');\n const offerProgramVariable = button.button_variables.filter(\n (variable) => {\n return variable.name === 'srt';\n }\n );\n const offerProgramCode = button && button.offerProgramCode;\n const offerProgramId =\n offerProgramVariable.length > 0 ? offerProgramVariable[0].value : '';\n dispatch({\n type: CREATE_DEFAULT_BUTTON_SUCCESS,\n payload: {\n id: responseJson && responseJson.button && responseJson.button.id,\n bnCode: bnCode,\n offerProgramId,\n offerProgramCode,\n },\n });\n return { ...responseJson, ok: resParams.ok };\n })\n .catch((error) => {\n if (\n addVoucher &&\n error &&\n error.status === 400 &&\n _get(error, 'responseJSON.button.message') &&\n _get(error, 'responseJSON.button.message').includes('Invalid address')\n ) {\n dispatch({\n type: CREATE_DEFAULT_BUTTON_ERROR,\n error: INVALID_ADDRESS_ERROR,\n });\n } else {\n dispatch(showUnknownErrorOccured());\n dispatch({\n type: CREATE_DEFAULT_BUTTON_ERROR,\n error,\n });\n }\n return error;\n });\n };\n}\n\nexport const openVerifyEmailModal = () => (dispatch) => {\n dispatch({ type: SET_VERIFY_EMAIL_MODAL_OPEN });\n};\n\nexport const checkIfEmailConfirmed = () => (dispatch) => {\n const url = '/donate/api/buttons/partner/confirmEmail';\n dispatch({ type: CHECK_EMAIL_CONFIRMED });\n\n let resParams = {};\n fetcher(url, {\n method: 'POST',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.text();\n })\n .then((responseJson) => {\n const response = JSON.parse(responseJson);\n if (!resParams.ok) {\n const error = {\n responseJSON: response,\n ...resParams,\n };\n\n dispatch({ type: SHOW_UNKNOWN_ERROR_OCCURED });\n dispatch({ type: CHECK_EMAIL_CONFIRMED_ERROR, payload: error });\n } else if (response && typeof response.isEmailConfirmed !== 'undefined') {\n dispatch({\n type: CHECK_EMAIL_CONFIRMED_RESPONSE,\n payload: response.isEmailConfirmed,\n });\n } else {\n let stringifiedRes;\n try {\n JSON.stringify(response);\n } catch (err) {\n stringifiedRes = undefined;\n }\n dispatch({ type: SHOW_UNKNOWN_ERROR_OCCURED });\n dispatch({\n type: CHECK_EMAIL_CONFIRMED_ERROR,\n payload:\n 'isEmailConfirmed lacking in response. Response:' + stringifiedRes,\n });\n }\n })\n .catch((error) => {\n dispatch({ type: SHOW_UNKNOWN_ERROR_OCCURED });\n dispatch({ type: CHECK_EMAIL_CONFIRMED_ERROR, payload: error });\n });\n};\n\nexport const resendEmail = () => (dispatch) => {\n const url = '/donate/api/buttons/partner/resendEmail';\n dispatch({ type: EMAIL_CONFIRM_RESEND });\n\n let resParams = {};\n fetcher(url, {\n method: 'POST',\n })\n .then((response) => {\n resParams = {\n ...resParams,\n status: response.status,\n statusText: response.statusText,\n ok: response.ok,\n };\n return response.text();\n })\n .then((res) => {\n if (!resParams.ok) {\n const error = {\n responseJSON: res,\n ...resParams,\n };\n dispatch({ type: SHOW_UNKNOWN_ERROR_OCCURED });\n dispatch({ type: EMAIL_SEND_ERROR, payload: error });\n } else {\n dispatch({ type: EMAIL_SEND_SUCCESS });\n setTimeout(() => {\n dispatch({ type: EMAIL_SEND_SUCCESS_RESET });\n }, 3500);\n }\n })\n .catch((error) => {\n dispatch({ type: SHOW_UNKNOWN_ERROR_OCCURED });\n dispatch({ type: EMAIL_SEND_ERROR, payload: error });\n });\n};\n\nexport function updateMessage(message) {\n return {\n type: UPDATE_MESSAGE,\n message,\n };\n}\n\nexport function updateStep(step) {\n return {\n type: UPDATE_STEP,\n step,\n };\n}\n\nexport function showUnknownErrorOccured() {\n return {\n type: SHOW_UNKNOWN_ERROR_OCCURED,\n };\n}\n\nexport function hideUnknownErrorOccured() {\n return {\n type: HIDE_UNKNOWN_ERROR_OCCURED,\n };\n}\n\nexport function showCountryNotSupported() {\n return {\n type: SHOW_COUNTRY_NOT_SUPPORTED,\n };\n}\n\nexport function hideCountryNotSupported() {\n return {\n type: HIDE_COUNTRY_NOT_SUPPORTED,\n };\n}\n\nexport function toggleAddVoucher() {\n return {\n type: TOGGLE_ADD_VOUCHER,\n };\n}\n\nexport function updateVoucherDetails({\n voucherType,\n voucherValue,\n voucherDetails,\n discountTagline,\n}) {\n return {\n type: UPDATE_VOUCHER_DETAILS,\n payload: {\n voucherType,\n voucherValue,\n voucherDetails,\n discountTagline,\n },\n };\n}\n\nexport function updateSelectedVoucherType({ voucherType }) {\n return {\n type: UPDATE_SELECTED_VOUCHER_TYPE,\n voucherType,\n };\n}\n\nexport function updateVoucherZipCode(zipcode) {\n return {\n type: UPDATE_VOUCHER_ZIPCODE,\n zipcode,\n };\n}\n\nexport function updateVoucherAgreement(isOnAgreement) {\n return {\n type: UPDATE_AGREEMENT,\n isOnAgreement,\n };\n}\n\nexport function updateBusinessImageUrls(url) {\n return {\n type: UPDATE_BUSINESS_IMAGE_URLS,\n url,\n };\n}\n\nexport function addMerchantFooter(merchantFooter) {\n return {\n type: ADD_MERCHANT_FOOTER,\n merchantFooter,\n };\n}\n","import { getServerProps } from '../utilsV3/serverProps';\nimport _map from 'lodash/map';\n\nimport {\n CHECK_EMAIL_CONFIRMED_RESPONSE,\n SHOW_UNKNOWN_ERROR_OCCURED,\n HIDE_UNKNOWN_ERROR_OCCURED,\n SHOW_COUNTRY_NOT_SUPPORTED,\n HIDE_COUNTRY_NOT_SUPPORTED,\n UPDATE_BUSINESS_IMAGE_URLS,\n UPDATE_PPCC_STATUS,\n} from '../componentsV3/partner/actionsPartner';\n\nimport {\n POST_ORGANIZER_UPDATE_ERROR,\n POST_ORGANIZER_UPDATE_SUCCESS,\n EDIT_ORGANIZER_UPDATE_ERROR,\n EDIT_ORGANIZER_UPDATE_SUCCESS,\n GET_ORGANIZER_UPDATES,\n GET_ORGANIZER_UPDATES_ERROR,\n GET_ORGANIZER_UPDATES_SUCCESS,\n DELETE_ORGANIZER_UPDATE_ERROR,\n DELETE_ORGANIZER_UPDATE_SUCCESS,\n INCREMENT_ORGANIZER_UPDATE_COUNT,\n DECREMENT_ORGANIZER_UPDATE_COUNT,\n} from '../actions/actionsCommon';\n\nconst defaultState = {\n ...getServerProps(),\n receivableCurrency: _map(getServerProps().receivableCurrency, (currency) => {\n return {\n value: currency,\n displayValue: currency,\n };\n }),\n organizerUpdates: [],\n defaultOrganizerUpdate: {\n subject: '',\n text: [\n {\n type: 'p',\n children: [\n {\n text: '',\n },\n ],\n },\n ],\n status: 'ACTIVE',\n },\n postOrganizerUpdateError: false,\n editOrganizerUpdateError: false,\n getOrganizerUpdateError: false,\n deleteOrganizerUpdateError: false,\n};\n\nexport default function application(state = defaultState, action = {}) {\n switch (action.type) {\n case CHECK_EMAIL_CONFIRMED_RESPONSE: {\n const isEmailConfirmed = action.payload === true;\n return {\n ...state,\n isEmailConfirmed,\n };\n }\n case SHOW_COUNTRY_NOT_SUPPORTED: {\n return {\n ...state,\n countryNotSupported: true,\n };\n }\n\n case HIDE_COUNTRY_NOT_SUPPORTED: {\n return {\n ...state,\n countryNotSupported: false,\n };\n }\n\n case SHOW_UNKNOWN_ERROR_OCCURED: {\n return {\n ...state,\n unknownError: true,\n };\n }\n\n case HIDE_UNKNOWN_ERROR_OCCURED: {\n return {\n ...state,\n unknownError: false,\n };\n }\n\n case UPDATE_BUSINESS_IMAGE_URLS: {\n return {\n ...state,\n businessImageUrls: {\n ...state.businessImageUrls,\n url: action.url,\n },\n };\n }\n\n case GET_ORGANIZER_UPDATES: {\n const organizerUpdateList = state.organizerUpdates ?? [];\n return {\n ...state,\n organizerUpdatesLoader: true,\n organizerUpdates: organizerUpdateList,\n };\n }\n\n case GET_ORGANIZER_UPDATES_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n organizerUpdatesLoader: false,\n totalOrganizerUpdatesCount: 0,\n getOrganizerUpdateError: true,\n };\n }\n\n case GET_ORGANIZER_UPDATES_SUCCESS: {\n const { organizerUpdates, total } = action.payload;\n return {\n ...state,\n organizerUpdatesLoader: false,\n totalOrganizerUpdatesCount: total,\n organizerUpdates: state.organizerUpdates?.concat(organizerUpdates),\n getOrganizerUpdateError: false,\n };\n }\n\n case INCREMENT_ORGANIZER_UPDATE_COUNT: {\n const total = state.totalOrganizerUpdatesCount + 1;\n return {\n ...state,\n totalOrganizerUpdatesCount: total,\n };\n }\n\n case DECREMENT_ORGANIZER_UPDATE_COUNT: {\n const total =\n state.totalOrganizerUpdatesCount > 0\n ? state.totalOrganizerUpdatesCount - 1\n : 0;\n return {\n ...state,\n totalOrganizerUpdatesCount: total,\n };\n }\n\n case POST_ORGANIZER_UPDATE_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n postOrganizerUpdateError: true,\n };\n }\n\n case POST_ORGANIZER_UPDATE_SUCCESS: {\n const { organizerUpdate } = action.payload;\n return {\n ...state,\n organizerUpdates: [organizerUpdate, ...state.organizerUpdates],\n };\n }\n\n case EDIT_ORGANIZER_UPDATE_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n editOrganizerUpdateError: true,\n };\n }\n\n case EDIT_ORGANIZER_UPDATE_SUCCESS: {\n const { organizerUpdate } = action.payload;\n return {\n ...state,\n organizerUpdates: state.organizerUpdates.map((update) =>\n update.fou_id === organizerUpdate.fou_id ? organizerUpdate : update\n ),\n };\n }\n\n case DELETE_ORGANIZER_UPDATE_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n deleteOrganizerUpdateError: true,\n };\n }\n\n case DELETE_ORGANIZER_UPDATE_SUCCESS: {\n const { updateId } = action.payload;\n return {\n ...state,\n organizerUpdates: state.organizerUpdates.filter(\n (update) => update.fou_id !== updateId\n ),\n };\n }\n\n case UPDATE_PPCC_STATUS: {\n return {\n ...state,\n ppccSetupStatus: action.ppccSetupStatus,\n };\n }\n\n default:\n return state;\n }\n}\n","import {\n CREATE_DEFAULT_BUTTON_SUCCESS,\n CREATE_DEFAULT_BUTTON_ERROR,\n EMAIL_CONFIRM_RESEND,\n EMAIL_SEND_SUCCESS,\n EMAIL_SEND_ERROR,\n CHECK_EMAIL_CONFIRMED_RESPONSE,\n CHECK_EMAIL_CONFIRMED_ERROR,\n CHECK_EMAIL_CONFIRMED,\n SET_VERIFY_EMAIL_MODAL_OPEN,\n UPDATE_MESSAGE,\n UPDATE_STEP,\n EMAIL_SEND_SUCCESS_RESET,\n CREATE_DEFAULT_BUTTON,\n TOGGLE_ADD_VOUCHER,\n UPDATE_VOUCHER_DETAILS,\n UPDATE_VOUCHER_ZIPCODE,\n UPDATE_AGREEMENT,\n ADD_MERCHANT_FOOTER,\n UPDATE_SELECTED_VOUCHER_TYPE,\n} from './actionsPartner';\nimport { getHost } from '../../utilsV3/helpers';\nimport { getParameterByName } from '../../../utility/queryStringHelper';\nimport { isGmbFlow } from './utils/partnerUtils';\nimport {\n VOUCHER_TYPE_CUSTOM,\n VOUCHER_TYPE_PERCENTAGE,\n ALL_VOUCHER_TYPE_INFO,\n} from './utils/voucherConstants';\n\nconst bnCode = (getParameterByName('bn') || '').toLowerCase();\nconst showVoucherFlow = !isGmbFlow(bnCode);\n\nconst initialState = {\n step: 0,\n message: '',\n addVoucher: false,\n selectedVoucherType: VOUCHER_TYPE_PERCENTAGE,\n allVoucherTypeInfo: ALL_VOUCHER_TYPE_INFO,\n voucherInfo: {},\n showVoucherFlow,\n bnCode,\n};\n\nexport default function partnerButtons(state = initialState, action = {}) {\n switch (action.type) {\n case CREATE_DEFAULT_BUTTON_SUCCESS: {\n const buttonId = action.payload.id;\n const offerProgramId = action.payload.offerProgramId;\n const offerProgramCode = action.payload.offerProgramCode;\n const shortUrl = `${getHost()}/biz/fund?id=${buttonId}`;\n return {\n ...state,\n shortUrl,\n id: buttonId,\n offerProgramId,\n offerProgramCode,\n step: 2,\n isSending: false,\n error: '',\n };\n }\n case CREATE_DEFAULT_BUTTON_ERROR: {\n return {\n ...state,\n error: action.error,\n isSending: false,\n };\n }\n case CREATE_DEFAULT_BUTTON: {\n return {\n ...state,\n isSending: true,\n };\n }\n case EMAIL_CONFIRM_RESEND: {\n return {\n ...state,\n isSending: true,\n };\n }\n case EMAIL_SEND_SUCCESS: {\n return {\n ...state,\n isSending: false,\n confirmEmailSent: true,\n };\n }\n case EMAIL_SEND_SUCCESS_RESET: {\n return {\n ...state,\n isSending: false,\n confirmEmailSent: false,\n };\n }\n case EMAIL_SEND_ERROR: {\n return {\n ...state,\n isSending: false,\n emailSendError: action.payload,\n verifyEmailModalOpen: false,\n };\n }\n case CHECK_EMAIL_CONFIRMED_RESPONSE: {\n return {\n ...state,\n verifyEmailModalOpen: false,\n isSending: false,\n };\n }\n case CHECK_EMAIL_CONFIRMED: {\n return {\n ...state,\n isSending: true,\n };\n }\n case SET_VERIFY_EMAIL_MODAL_OPEN: {\n return {\n ...state,\n verifyEmailModalOpen: true,\n };\n }\n case CHECK_EMAIL_CONFIRMED_ERROR: {\n return {\n ...state,\n checkIfEmailConfirmedError: true,\n isSending: false,\n verifyEmailModalOpen: false,\n };\n }\n\n case UPDATE_MESSAGE: {\n return {\n ...state,\n message: action.message,\n };\n }\n\n case UPDATE_STEP: {\n return {\n ...state,\n step: action.step,\n };\n }\n\n case TOGGLE_ADD_VOUCHER: {\n return {\n ...state,\n addVoucher: !state.addVoucher,\n };\n }\n\n case UPDATE_VOUCHER_DETAILS: {\n const { voucherType, voucherValue, voucherDetails, discountTagline } =\n action.payload;\n const allVoucherTypeInfo = [...state.allVoucherTypeInfo];\n const typeToUpdate = voucherType || state.selectedVoucherType;\n const voucherInfoIndexToUpdate = allVoucherTypeInfo.findIndex(\n (voucherInfo) => voucherInfo.type === typeToUpdate\n );\n const updatedVoucherInfo = allVoucherTypeInfo[voucherInfoIndexToUpdate];\n if (voucherValue !== undefined) {\n updatedVoucherInfo.value = voucherValue;\n updatedVoucherInfo.tagline =\n typeToUpdate === VOUCHER_TYPE_CUSTOM ? voucherValue : discountTagline;\n }\n\n if (voucherDetails !== undefined) {\n updatedVoucherInfo.details = voucherDetails;\n }\n\n allVoucherTypeInfo.splice(\n voucherInfoIndexToUpdate,\n 1,\n updatedVoucherInfo\n );\n return {\n ...state,\n allVoucherTypeInfo,\n };\n }\n\n case UPDATE_SELECTED_VOUCHER_TYPE: {\n return {\n ...state,\n selectedVoucherType: action.voucherType,\n };\n }\n\n case UPDATE_VOUCHER_ZIPCODE: {\n return {\n ...state,\n voucherInfo: {\n ...state.voucherInfo,\n zipcode: action.zipcode,\n },\n };\n }\n\n case UPDATE_AGREEMENT: {\n return {\n ...state,\n voucherInfo: {\n ...state.voucherInfo,\n isOnAgreement: action.isOnAgreement,\n },\n };\n }\n\n case ADD_MERCHANT_FOOTER: {\n return {\n ...state,\n merchantFooter: action.merchantFooter,\n };\n }\n\n default:\n return state;\n }\n}\n","import { transformServerFormatToClient as serverToClientButton } from '../../lib/buttonModelV3';\nimport { transformServerFormatToClient as serverToClientCampaign } from '../../lib/campaignsModel';\nimport { getServerProps } from '../../utilsV3/serverProps';\nimport {\n CREATE_DEFAULT_BUTTON,\n CREATE_DEFAULT_BUTTON_SUCCESS,\n CREATE_DEFAULT_BUTTON_ERROR,\n DELETE_BUTTON,\n DELETE_BUTTON_SUCCESS,\n DELETE_BUTTON_ERROR,\n GET_BUTTON,\n GET_BUTTON_SUCCESS,\n GET_BUTTON_ERROR,\n UPDATE_VOUCHER_LISTING_STATUS,\n UPDATE_VOUCHER_LISTING_STATUS_SUCCESS,\n UPDATE_VOUCHER_LISTING_STATUS_ERROR,\n} from './actionsManager';\nimport {\n GET_CAMPAIGN,\n GET_CAMPAIGN_SUCCESS,\n GET_CAMPAIGN_ERROR,\n DELETE_CAMPAIGN,\n DELETE_CAMPAIGN_SUCCESS,\n DELETE_CAMPAIGN_ERROR,\n EDIT_CAMPAIGN_VALUE_SUCCESS,\n EDIT_CAMPAIGN_VALUE_ERROR,\n UPDATE_CAMPAIGN,\n} from '../../campaigns/manager/actionsManager';\nimport {\n SET_COUNT_DONATIONS,\n SET_LAST_UPDATED_DONATION_PAGE,\n} from '../../actions/actionsCommon';\nimport { SET_MANAGE_PAGE_INSIGHTS } from '../../actions/actionsDonationInsights';\nimport _get from 'lodash/get';\n\nconst defaultState = {\n busy: true,\n};\n\nconst businessProfileLogoUrl =\n _get(getServerProps(), 'businessImageUrls.url') || '';\n\nfunction getFormattedButton(payload) {\n // organizationName is not stored in BF service\n // fetching from server to make sure it gets pre-filled when user is editing/duplicating a button\n return Object.assign({}, serverToClientButton(payload), {\n receiverName: getServerProps().receiverName,\n language: payload.language,\n offerProgram: payload.offerProgram,\n });\n}\n\nfunction getFormattedCampaign(payload) {\n return Object.assign({}, serverToClientCampaign(payload));\n}\n\nexport default function buttonManagerV3(state = defaultState, action) {\n switch (action.type) {\n case CREATE_DEFAULT_BUTTON: {\n return {\n ...state,\n isSending: true,\n busy: false,\n };\n }\n\n case CREATE_DEFAULT_BUTTON_SUCCESS: {\n return {\n ...state,\n isSending: false,\n busy: false,\n };\n }\n\n case CREATE_DEFAULT_BUTTON_ERROR: {\n return {\n ...state,\n error: action.error,\n isSending: false,\n busy: false,\n };\n }\n\n case GET_BUTTON: {\n return {\n ...state,\n isSending: true,\n busy: true,\n };\n }\n\n case GET_BUTTON_SUCCESS: {\n const button = action.payload;\n const formattedButton = getFormattedButton({\n ...button,\n businessImageUrls: action.businessImageUrls,\n merchantExperienceUrls: action.merchantExperienceUrls,\n });\n\n return {\n ...state,\n button,\n formattedButton,\n isSending: false,\n busy: false,\n };\n }\n\n case GET_BUTTON_ERROR: {\n const { error } = action.payload;\n\n return {\n ...state,\n error,\n isSending: false,\n busy: false,\n };\n }\n\n case DELETE_BUTTON: {\n return {\n ...state,\n isSending: true,\n busy: false,\n };\n }\n\n case DELETE_BUTTON_SUCCESS: {\n return {\n ...state,\n isSending: false,\n busy: false,\n };\n }\n\n case DELETE_BUTTON_ERROR: {\n return {\n ...state,\n error: action.error,\n isSending: false,\n busy: false,\n };\n }\n\n case UPDATE_VOUCHER_LISTING_STATUS: {\n return {\n ...state,\n isSending: true,\n busy: true,\n };\n }\n\n case UPDATE_VOUCHER_LISTING_STATUS_SUCCESS: {\n return {\n ...state,\n isSending: false,\n busy: false,\n };\n }\n\n case UPDATE_VOUCHER_LISTING_STATUS_ERROR: {\n return {\n ...state,\n error: action.error,\n isSending: false,\n busy: false,\n };\n }\n\n // CAMPAIGNS\n\n case GET_CAMPAIGN: {\n return {\n ...state,\n isSending: true,\n busy: true,\n };\n }\n\n case GET_CAMPAIGN_SUCCESS: {\n const campaign = action.payload;\n const formattedCampaign = getFormattedCampaign({\n ...campaign,\n businessImageUrls: action.businessImageUrls,\n businessProfileLogoUrl,\n });\n\n return {\n ...state,\n campaign,\n formattedCampaign,\n isSending: false,\n busy: false,\n };\n }\n\n case GET_CAMPAIGN_ERROR: {\n const { error } = action.payload;\n\n return {\n ...state,\n error,\n isSending: false,\n busy: false,\n };\n }\n\n case DELETE_CAMPAIGN: {\n return {\n ...state,\n isSending: true,\n busy: false,\n };\n }\n\n case DELETE_CAMPAIGN_SUCCESS: {\n return {\n ...state,\n isSending: false,\n busy: false,\n };\n }\n\n case DELETE_CAMPAIGN_ERROR: {\n return {\n ...state,\n error: action.error,\n isSending: false,\n busy: false,\n };\n }\n\n case UPDATE_CAMPAIGN: {\n return {\n ...state,\n isSending: true,\n busy: true,\n };\n }\n\n case EDIT_CAMPAIGN_VALUE_SUCCESS: {\n return {\n ...state,\n formattedCampaign: getFormattedCampaign({\n ...action.payload,\n businessProfileLogoUrl,\n }),\n busy: false,\n error: null,\n isCampaignCreated: false,\n };\n }\n\n case EDIT_CAMPAIGN_VALUE_ERROR: {\n const { error } = action.payload;\n return {\n ...state,\n error,\n busy: false,\n };\n }\n\n case SET_COUNT_DONATIONS: {\n const count = action?.donationPagesCount || 0;\n return {\n ...state,\n donationPagesCount: count,\n donationPagesState: count > 0 ? 'populated' : 'empty',\n };\n }\n\n case SET_LAST_UPDATED_DONATION_PAGE: {\n const donationPage = action.payload;\n return {\n ...state,\n lastUpdated: donationPage,\n };\n }\n\n case SET_MANAGE_PAGE_INSIGHTS: {\n const { insightsSummary, hostedProductsInsights } = action.payload;\n return {\n ...state,\n insightsSummary,\n hostedProductsInsights,\n };\n }\n\n default:\n return state;\n }\n}\n","import buttonFactoryV3 from './reducerButtonFactoryV3';\nimport application from './reducerApplication';\nimport partnerButtons from '../componentsV3/partner/reducerPartner';\nimport buttonManagerV3 from '../componentsV3/buttonManager/reducerManager';\nimport campaigns from './reducerCampaigns';\nimport { reducer as reduxFormReducer } from 'redux-form';\n\nconst customReducer = (state = {}, action) => {\n const businessImageUrls = state?.application?.businessImageUrls;\n const merchantExperienceUrls = state?.application?.merchantExperienceUrls;\n const userType = state?.application?.userType;\n return {\n application: application(state.application, action),\n\n buttonFactoryV3: buttonFactoryV3(state.buttonFactoryV3, {\n ...action,\n businessImageUrls,\n merchantExperienceUrls,\n userType,\n }),\n buttonManagerV3: buttonManagerV3(state.buttonManagerV3, {\n ...action,\n businessImageUrls,\n merchantExperienceUrls,\n }),\n partnerButtons: partnerButtons(state.partnerButtons, action),\n campaigns: campaigns(state.campaigns, action),\n form: reduxFormReducer(state.form, action),\n };\n};\n\nexport default customReducer;\n","import { createStore, applyMiddleware, compose } from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport rootReducer from '../reducers';\n\nconst middlewares = [thunkMiddleware];\n\nif (process && process.env && process.env.NODE_ENV !== 'production') {\n const skipActionTypesList = [\n '@@redux-form/REGISTER_FIELD',\n '@@redux-form/UNREGISTER_FIELD',\n '@@redux-form/TOUCH',\n '@@redux-form/FOCUS',\n '@@redux-form/BLUR',\n ];\n const createLogger = require('redux-logger').createLogger;\n const logger = createLogger({\n collapsed: true,\n predicate: (getState, action) =>\n skipActionTypesList.indexOf(action.type) === -1,\n });\n\n middlewares.push(logger);\n}\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n trace: true,\n traceLimit: 25,\n })\n : compose;\n\nfunction configureStore(initialState) {\n const store = createStore(\n rootReducer,\n composeEnhancers(applyMiddleware(...middlewares))\n );\n\n if (module.hot) {\n // Enable Webpack hot module replacement for reducers\n module.hot.accept('../reducers', () => {\n const nextRootReducer = require('../reducers');\n store.replaceReducer(nextRootReducer);\n });\n }\n\n return store;\n}\n\nlet reduxStore;\nexport default function getStore(initialState) {\n if (!reduxStore) {\n reduxStore = configureStore(initialState);\n }\n\n return reduxStore;\n}\n","import _isEmpty from 'lodash/isEmpty';\nimport {\n formatCurrency,\n formatNumber,\n wrNormalizeNumber,\n} from '../../utility/worldReadyUtils';\n\nexport const MAX_GOAL_AMOUNT_LENGTH = 11;\n\nexport function formatAmount(value) {\n if (!value && value !== 0) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n return wrNormalizeNumber(value);\n}\n\nexport function normalizeNumber(amount) {\n if (!amount && amount !== 0) {\n return '';\n }\n if (typeof amount === 'number') {\n return amount;\n }\n return wrNormalizeNumber(amount);\n}\n\nexport function formatCurrencyAsISOFormat(params) {\n return formatCurrency(params.value, {\n currency: params.currency,\n style: 'international',\n });\n}\n\nexport function formatCurrencyNoDecimals(params, format) {\n if (!params.value || !params.currency) {\n return '';\n }\n const options = {\n currency: params.currency,\n maximumFractionDigits: 0,\n style: format ? 'symbol' : 'international',\n };\n\n return formatCurrency(params.value, options);\n}\n\nexport function displayCurrency(amount, currency, { noDecimals = false } = {}) {\n const options = { currency };\n const numericAmount = Number(amount);\n\n if (numericAmount % 1 === 0 || noDecimals) {\n options.maximumFractionDigits = 0;\n }\n\n return formatCurrency(numericAmount, options);\n}\n\nexport function displayPercentage(amount) {\n return formatNumber(amount, { style: 'percent' });\n}\n\nexport function formatNumberDecimals(value) {\n if (!value) {\n return '';\n }\n\n return formatNumber(value, { maximumFractionDigits: 2 });\n}\n\nexport function getCurrencyPartByType(currencyParts, type) {\n const currencyPart =\n currencyParts && currencyParts.find((item) => item.type === type);\n\n return currencyPart && currencyPart.value;\n}\n\nexport function formatAmountToOnlyNumbers(amount) {\n if (_isEmpty(amount)) {\n amount = '0';\n }\n\n return wrNormalizeNumber(amount);\n}\n\nexport const MIN_INPUT_WIDTH = 91;\nexport const DEFAULT_INPUT_FONTSIZE = 44;\nconst DIGITS_TO_FONT_SIZE_MAPPING = {\n 8: 42,\n 9: 40,\n 10: 38,\n};\n\nexport function getFontSize(value, isMobile) {\n const digitCount = value.replace(/[\\.,]/g, '').length;\n\n if (digitCount < 8) {\n return DEFAULT_INPUT_FONTSIZE;\n }\n\n return DIGITS_TO_FONT_SIZE_MAPPING[`${digitCount}`] || 44;\n}\n\nexport function getInputWidth(field, text) {\n text = text || '0.00';\n\n // Get styles from the element\n const currentStyles = window.getComputedStyle(field) || {};\n const { fontWeight } = currentStyles;\n const fontSize = `${getFontSize(text)}px`;\n\n // Create a span element outside visible area\n const spanElem = document.createElement('span');\n spanElem.style.fontSize = fontSize;\n spanElem.style.fontFamily = 'PayPalSansBig-Regular';\n spanElem.style.fontWeight = fontWeight || '400';\n spanElem.style.position = 'fixed';\n spanElem.style.top = '-1000px';\n spanElem.style.left = '-1000px';\n spanElem.innerHTML = text;\n document.body.appendChild(spanElem);\n\n // Get width of the span and then remove it\n const width = spanElem.getBoundingClientRect().width + 2; // increase by 2px to fix a layout problem in Safari iOS browser.\n document.body.removeChild(spanElem);\n\n if (width < MIN_INPUT_WIDTH) {\n return MIN_INPUT_WIDTH;\n }\n return width;\n}\n\nexport function roundUpCurrency(number, currency) {\n const roundedUpValue = Math.ceil(number);\n return formatCurrency(roundedUpValue, { currency, maximumFractionDigits: 0 });\n}\n","import { FPTI_TAGS, FPTI_VALUES } from '../../fpti/fptiConstants';\nconst analytics = window?.PAYPAL?.analytics?.instance;\n\n// Start client side error tracking\nwindow?.PAYPAL?.analytics?.startClientErrorTracking();\n\nexport const trackEventWithData = (spec = {}, additionalData = {}) => {\n const fptiData = {\n ...spec.data,\n ...additionalData,\n [FPTI_TAGS.SPACE_KEY]: FPTI_VALUES.SPACE_KEY_ID,\n };\n // ref: https://github.paypal.com/pages/Tracking-R/client-side-instrumentation/docs/fptiAnalytics.Analytics.html#recordEvent\n // the 3rd param is set to false meaning the data payload won't be merged\n // with window.fpti object\n analytics?.recordEvent(spec.event_name, fptiData, false);\n};\n\nexport const trackEventWithGlobalData = (spec = {}, additionalData = {}) => {\n const fptiData = {\n ...spec.data,\n ...additionalData,\n [FPTI_TAGS.SPACE_KEY]: FPTI_VALUES.SPACE_KEY_ID,\n };\n analytics?.recordEvent(spec.event_name, fptiData, true);\n};\n","import _get from 'lodash/get';\nimport { AUTH_STATE_LOGGEDIN } from '../clientConstants';\nimport getStore from '../store/configureStore';\n\nexport function isLoggedInUser(applicationState) {\n if (applicationState) {\n return _get(applicationState, 'authState') === AUTH_STATE_LOGGEDIN;\n }\n\n const reduxStore = getStore();\n return (\n _get(reduxStore.getState(), 'application.authState') === AUTH_STATE_LOGGEDIN\n );\n}\n\nexport function getUserType() {\n const reduxStore = getStore();\n return _get(reduxStore.getState(), 'application.userType');\n}\n\nexport function getReceiverCountry() {\n const reduxStore = getStore();\n return _get(reduxStore.getState(), 'application.country');\n}\n","import { getServerProps } from './serverProps';\nimport { isLoggedInUser } from './authUtils';\nimport _includes from 'lodash/includes';\nimport _get from 'lodash/get';\nimport _keys from 'lodash/keys';\nimport _map from 'lodash/map';\nimport _isEmpty from 'lodash/isEmpty';\nimport getStore from '../store/configureStore';\nimport { getParameterByName } from '../../utility/queryStringHelper';\nimport { setTitleCase } from './commonUtils';\nimport { showSpinner } from './spinnerUtils';\n\nconst serverProps = getServerProps();\nconst { userType } = serverProps;\n\nexport const WIZARD_TOTAL_STEPS = isHostedFlow() ? 4 : 3;\n\nexport function getNextStep(currentStep, flowType) {\n const totalSteps = getWizardTotalSteps(flowType);\n if (currentStep < totalSteps) {\n return currentStep + 1;\n }\n return 1;\n}\n\nexport function getPreviousStep(currentStep) {\n if (currentStep > 1) {\n return currentStep - 1;\n }\n return 1;\n}\n\nexport function getNextPageUrl(currentPage, currentPath) {\n const nextPage = currentPage === WIZARD_TOTAL_STEPS ? 0 : currentPage + 1;\n\n return `${currentPath}?page=${nextPage}`;\n}\n\nexport function getPreviousPageUrl(currentPage, currentPath) {\n const previousPage = currentPage === 1 ? 1 : currentPage - 1;\n\n return `${currentPath}?page=${previousPage}`;\n}\n\nexport function getPageUrl(pageNumber, currentPath) {\n const page =\n pageNumber >= 1 && pageNumber <= WIZARD_TOTAL_STEPS ? pageNumber : 1;\n\n return `${currentPath}?page=${page}`;\n}\n\nexport function isHostedFlow() {\n return (\n isLoggedInUser(serverProps) && _includes(['BUSINESS', 'PREMIER'], userType)\n );\n}\n\nexport function isUnhostedFlow() {\n return isLoggedInUser(serverProps) && userType === 'PERSONAL';\n}\n\n/**\n * Fetch select options for language field based on the country selection\n */\nexport const getOptionsForLanguageField = (\n countryAndLanguageDetails,\n selectedCountry\n) => {\n const countriesByCode = countryAndLanguageDetails.countriesByCode;\n\n selectedCountry = selectedCountry || 'US';\n\n const allLanguages = countriesByCode[selectedCountry].languages;\n const languageCodes = _keys(allLanguages);\n\n return _map(languageCodes, (languageCode) => {\n return {\n value: languageCode,\n displayValue: setTitleCase(allLanguages[languageCode].name),\n };\n });\n};\n\nexport const getOptionsForCountriesField = (countryAndLanguageDetails) => {\n const countriesByCode = countryAndLanguageDetails.countriesByCode;\n const countryCodes = _keys(countriesByCode);\n\n return _map(countryCodes, (countryCode) => {\n return {\n value: countryCode,\n displayValue: _get(countriesByCode, `${countryCode}.name`),\n };\n });\n};\n\n// Button Factory V3 Specific Utils\nexport function isBF3Enabled() {\n const reduxStore = getStore();\n return _get(reduxStore.getState(), 'application.enableBf3');\n}\n\nexport function getFlowType() {\n // Get from store\n const reduxStore = getStore();\n const state = reduxStore.getState();\n let flowType =\n _get(state, 'buttonManagerV3.formattedButton.flowType', '') ||\n _get(state, 'buttonFactoryV3.formattedButton.flowType', '');\n\n if (_isEmpty(flowType)) {\n flowType = getParameterByName('type') || 'C';\n }\n\n return flowType;\n}\n\nexport const isDonateButton = (type) => {\n const flowType = type || getFlowType();\n\n return flowType.toUpperCase() === 'C' || flowType.toUpperCase() !== 'S';\n};\n\nexport const isDonateLink = (type) => {\n const flowType = type || getFlowType();\n\n return flowType === 'S';\n};\n\nexport function getWizardTotalSteps(type) {\n const flowType = type || getFlowType();\n\n if (isDonateLink(flowType) && isUnhostedFlow()) {\n return 2;\n } else if (isDonateLink(flowType) || isUnhostedFlow()) {\n return 3;\n }\n\n return 4;\n}\n\nexport function getStepUrl(currentLocation, currentStep, targetStep) {\n // For BF V3\n let { pathname, search } = currentLocation;\n const step =\n targetStep >= 1 && targetStep <= getWizardTotalSteps() ? targetStep : 1;\n\n if (search.includes('page')) {\n search = search.replace(`page=${currentStep}`, `page=${step}`);\n } else if (!_isEmpty(search)) {\n search = `${search}&page=${step}`;\n } else {\n search = `${search}?page=${step}`;\n }\n\n return `${pathname}${search}`;\n}\n\nexport function isMobileOrTablet() {\n return window.innerWidth <= 1024;\n}\n\nexport function isTablet() {\n return window.innerWidth >= 577 && window.innerWidth <= 1024;\n}\n\nexport function getUserType() {\n return userType;\n}\n\nexport function getEncryptedAccountNum() {\n return serverProps?.accountIdentifier?.encrypted_account_number;\n}\n\nexport function getSavedButtonsCount() {\n return serverProps?.listButtons?.length;\n}\n\nexport const isGuestFormPreview = (currentStep) =>\n (isDonateButton() && currentStep === 4) ||\n (isDonateLink() && currentStep === 3);\n\nexport const handleLoginHelper = (history) => {\n const renderURL = '/donate/buttons/login?returnUri=/buttons/manage';\n history.push(renderURL);\n showSpinner();\n window.location.reload();\n};\n\nexport const handleSignupHelper = (history) => {\n const renderURL = `/bizsignup/entry?product=donations&returnUrl=https://${window.location.hostname}/donate/buttons/manage`;\n history.push(renderURL);\n showSpinner();\n window.location.reload();\n};\n\nexport const isCsamHit = (error) => {\n // returns true if user uploads a restricted image\n return error?.details?.[0]?.issue?.includes('CSAM hit detected');\n};\n\nexport const scrollToWizardsTop = (isMobile) => {\n if (isMobile) {\n window.scrollTo(0, 0);\n } else {\n const wizardContainer = document.getElementsByClassName(\n 'wizard-step-container'\n );\n if (wizardContainer.length > 0) {\n wizardContainer[0].scrollTop = 0;\n }\n }\n};\n\nexport const calculateAspectRatioToFit = (\n imageWidth,\n imageHeight,\n containerWidth,\n containerHeight\n) => {\n // Calculate the original aspect ratio of the image\n const originalAspectRatio = imageWidth / imageHeight;\n\n // Calculate the aspect ratio of the container\n const containerAspectRatio = containerWidth / containerHeight;\n\n // Calculate the aspect ratio based on the maximum crop size\n let aspectRatio;\n if (originalAspectRatio >= containerAspectRatio) {\n aspectRatio = Math.min(containerAspectRatio, containerWidth / imageHeight);\n } else {\n aspectRatio = Math.min(containerAspectRatio, containerHeight / imageWidth);\n }\n return aspectRatio;\n};\n","import getStore from '../store/configureStore';\nimport _get from 'lodash/get';\nimport templateData from '../../utility/getTemplateData';\nimport _isEmpty from 'lodash/isEmpty';\n\nexport function getDonateButtonImageUrl(\n buttonSize,\n showAcceptedCardLogos,\n languageCode,\n countryCode\n) {\n const reduxStore = getStore();\n const countryAndLanguageDetails = _get(\n reduxStore.getState(),\n 'application.countryAndLanguageDetails'\n );\n let url = _get(\n countryAndLanguageDetails,\n `countriesByCode.${countryCode}.languages.${languageCode}.buttonImageUrl`,\n {}\n );\n\n if (buttonSize === 'large') {\n if (showAcceptedCardLogos) {\n url = url.cc;\n } else {\n url = url.large;\n }\n } else {\n url = url.small;\n }\n\n return url;\n}\n\nexport const getButtonImageAndUrl = (\n buttonSize,\n showAcceptedCardLogos,\n locale,\n country\n) => {\n const buttonImageUrl = getDonateButtonImageUrl(\n buttonSize,\n showAcceptedCardLogos,\n locale,\n country\n );\n let buttonImage = 'REG';\n if (showAcceptedCardLogos) {\n buttonImage = 'CC';\n }\n\n if (buttonSize === 'small') {\n buttonImage = 'SML';\n }\n\n return {\n buttonImage: buttonImage,\n buttonImageUrl: buttonImageUrl,\n };\n};\n\nexport const shouldUsePayPalButtonStyle = (buttonImageUrl) => {\n if (!_isEmpty(buttonImageUrl)) {\n if (\n buttonImageUrl.includes('btn_donate') &&\n buttonImageUrl.includes(templateData.cdnHostName)\n ) {\n return 'yes';\n }\n }\n\n return 'no';\n};\n","import getStore from '../store/configureStore';\nimport _get from 'lodash/get';\n\nexport function getNextStep(currentStep) {\n const totalSteps = 4;\n if (currentStep < totalSteps) {\n return currentStep + 1;\n }\n return 1;\n}\n\nexport function getPreviousStep(currentStep) {\n if (currentStep > 1) {\n return currentStep - 1;\n }\n return 1;\n}\n\nexport const isGuestFormPreview = (currentStep) => currentStep === 3;\n\nexport function getCharityName() {\n const reduxStore = getStore();\n return _get(reduxStore.getState(), 'application.receiverName');\n}\n\nexport const isCampaignEnded = (endDate) => {\n if (!(endDate instanceof Date && !isNaN(endDate))) {\n return false;\n }\n return new Date().setHours(0, 0, 0, 0) > endDate.setHours(0, 0, 0, 0);\n};\n\nexport const isCampaign = (type) => {\n return window?.location?.href?.indexOf('campaigns') > -1;\n};\n","import _get from 'lodash/get';\nimport _keys from 'lodash/keys';\nimport _map from 'lodash/map';\nimport { KILOBYTE, MEGABYTE } from '../../utility/constants';\nimport { formatNumberDecimals } from './amountUtils';\n\n/**\n * Griffin recommended setTitleCase method\n * https://github.paypal.com/pages/Globalization-R/griffin-paypal/docs/faq.html#how-can-i-generate-a-language-dropdown-for-a-country\n */\nexport function setTitleCase(str) {\n return str.replace(/(\\S*)/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n}\n\n// return if user is on mobile\nexport function isMobile() {\n const serverProps = document.getElementById('server-props');\n const serverPropsData = (serverProps && serverProps.innerHTML) || '{}';\n try {\n return _get(JSON.parse(serverPropsData), 'isMobile');\n } catch (err) {\n console.warn(err);\n }\n return false;\n}\n\n/**\n * Truncates text on after the desired number of characters and adds ellipsis at the end\n * @param {string} str - the string to truncate\n * @param {number} charNum - char index at which to start truncating text\n */\nexport function truncatesAtChar(str = '', charNum = 1) {\n const trunStr = str.substring(0, charNum).trim();\n\n return trunStr.concat('...');\n}\n\nexport function getImageSize(fileSize, messages) {\n const size = fileSize > MEGABYTE ? fileSize / MEGABYTE : fileSize / KILOBYTE;\n const type = fileSize > MEGABYTE ? messages.megabyte : messages.kilobyte;\n\n return {\n size: formatNumberDecimals(size),\n type,\n };\n}\n\n/**\n * Fetch select options for language field based on the country selection\n */\nexport const getOptionsForLanguageField = (\n countryAndLanguageDetails,\n selectedCountry\n) => {\n const countriesByCode = countryAndLanguageDetails.countriesByCode;\n\n selectedCountry = selectedCountry || 'US';\n\n const allLanguages = countriesByCode[selectedCountry].languages;\n const languageCodes = _keys(allLanguages);\n\n return _map(languageCodes, (languageCode) => {\n return {\n value: languageCode,\n displayValue: setTitleCase(allLanguages[languageCode].name),\n };\n });\n};\n\n/**\n * Substring equivalent of a string but takes in count the byte length\n */\nexport const byteSubstring = (string, start, stop) => {\n const enc = new TextEncoder();\n const dec = new TextDecoder('utf-8');\n const uint8 = enc.encode(string);\n const section = uint8.slice(start, stop);\n return dec.decode(section);\n};\n","import { zonedTimeToUtc } from 'date-fns-tz';\nimport { formatDate } from '../../utility/worldReadyUtils';\n\n// This function will return the date time in user's system timezone\nexport function getLocalTime(date) {\n const formattedDate = date.replace('T', ' ').replace('Z', ''); // e.g., Convert 2020-09-23T21:01:55Z to 2020-09-23 21:01:55\n try {\n return zonedTimeToUtc(formattedDate, 'America/Los_Angeles');\n } catch (e) {\n // for ie11\n const dateObj = new Date(date);\n return new Date(dateObj.getTime() + 7 * 60 * 60000); // offset for PDT is 7 hrs. there will be 1 hr diff in PST time\n }\n}\n\nexport function formatDateLong(date, timeZone) {\n if (date) {\n const utcDateEqivalentInLocal = getLocalTime(date);\n return formatDate(utcDateEqivalentInLocal, {\n style: 'date-long',\n timeZone: timeZone || 'Etc/UTC',\n });\n }\n return null;\n}\n\nexport function getRemainingDays(startDate, endDate) {\n if (startDate > endDate) {\n return 0;\n }\n const oneDay = 1000 * 60 * 60 * 24;\n return Math.round(Math.abs((endDate - startDate) / oneDay));\n}\n\nexport function getEndOfDayTime(date) {\n date.setHours(23);\n date.setMinutes(59);\n date.setSeconds(59);\n\n return date;\n}\n\nexport function sameDay(date) {\n const today = new Date();\n const dateToCompare = new Date(date); // the input date is in UTC\n\n return (\n today.getFullYear() === dateToCompare.getFullYear() &&\n today.getMonth() === dateToCompare.getMonth() &&\n today.getDay() === dateToCompare.getDay()\n );\n}\n\n// UTC and PST are the only supported timezones in this function\nexport function convertDateToUserTimezone(date, isUTC = false, timeZone) {\n if (!date) {\n return '';\n }\n\n let utcDate = date;\n if (!isUTC) {\n // Converting PST time to UTC\n utcDate = new Date(\n date.replace('T', ' ').replace('Z', ' ').replace(/-/g, '/').concat(' PST')\n ).toUTCString();\n }\n\n return formatDate(new Date(utcDate), {\n style: 'date-long',\n timeZone,\n });\n}\n\n// Format date object to short format string, e.g.: 6/4/22 or 4 June, 2022\nexport function parseDateOnly(date, isLongDateFormat = false) {\n date.setHours(0, 0, 0, 0);\n return formatDate(date, {\n style: isLongDateFormat ? 'date-long' : undefined,\n timeZone: 'Etc/UTC',\n });\n}\n\nexport const getDefaultEndTime = () => {\n const endDate = new Date();\n endDate.setDate(endDate.getDate() + 30);\n const formattedDate = new Date(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n );\n formattedDate.setHours(0, 0, 0, 0);\n return formattedDate;\n};\n\n// Formats the date using the Intl module, default example: July 11, 2022\nexport function formatDateIntl({ date, locale, options }) {\n /* eslint-disable */\n const timezone =\n Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone ||\n 'America/Los_Angeles';\n /* eslint-enable */\n\n const optionsObj = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n timeZone: timezone,\n ...options,\n };\n return new Intl.DateTimeFormat(locale, optionsObj).format(new Date(date));\n}\n\nexport function getCurrentYear(timeZone) {\n const currentDate = new Date();\n return formatDate(currentDate, {\n style: 'y',\n timeZone: timeZone || 'Etc/UTC',\n });\n}\n\nexport function getCurrentYearStartDate() {\n const currentYear = new Date().getFullYear();\n const startDate = new Date(currentYear, 0, 1);\n return startDate.toISOString().split('T')[0];\n}\n\nexport function getCurrentDate() {\n const currentDate = new Date();\n return currentDate.toISOString().split('T')[0];\n}\n\nexport function getLastYearStartDate() {\n const lastYear = new Date().getFullYear() - 1;\n const lastYearStartDate = new Date(lastYear, 0, 1);\n return lastYearStartDate.toISOString().split('T')[0];\n}\n\nexport function getLastYearEndDate() {\n const lastYear = new Date().getFullYear() - 1;\n const lastYearEndDate = new Date(lastYear, 11, 31);\n return lastYearEndDate.toISOString().split('T')[0];\n}\n\nexport const getElapsedDays = (startDate) => {\n const endDate = new Date();\n return getRemainingDays(startDate, endDate);\n};\n\nexport const getFormattedTimeOnlyFromUnix = (unixTime, locale) => {\n const date = new Date(unixTime * 1000);\n return date.toLocaleTimeString(locale, {\n hour: '2-digit',\n minute: '2-digit',\n });\n};\n","import { getReceiverCountry, isLoggedInUser } from '../utilsV3/authUtils';\nimport {\n getEncryptedAccountNum,\n getUserType,\n isDonateButton,\n isHostedFlow,\n} from '../utilsV3/buttonFactoryUtils';\nimport { getCharityName, isCampaign } from './campaignUtils';\n\nconst isHosted = isHostedFlow();\nconst isCampaignFlow = isCampaign();\n\nconst PAGE_SPEC = {\n LANDING_PAGE: {\n pgrp: 'main:wps:donate:landing:login',\n page: 'main:wps:donate:landing:login',\n },\n MANAGE_PAGE: {\n pgrp: 'main:wps:donate:button_manager',\n page: 'main:wps:donate:button_manager',\n },\n OVERVIEW_PAGE: {\n pgrp: 'main:wps:donate:button_overview',\n page: 'main:wps:donate:button_overview',\n },\n CAMPAIGN_OVERVIEW_PAGE: {\n pgrp: 'main:wps:donate:campaign_overview',\n page: 'main:wps:donate:campaign_overview',\n },\n WIZARD_STEP_ONE_HOSTED_PAGE: {\n step: 1,\n pgrp: 'main:wps:donate:button:setup:wizard:hosted:1',\n page: 'main:wps:donate:button:setup:wizard:hosted:1',\n },\n WIZARD_STEP_TWO_HOSTED_PAGE: {\n step: 2,\n pgrp: 'main:wps:donate:button:setup:wizard:hosted:2',\n page: 'main:wps:donate:button:setup:wizard:hosted:2',\n },\n WIZARD_STEP_THREE_HOSTED_PAGE: {\n step: 3,\n pgrp: 'main:wps:donate:button:setup:wizard:hosted:3',\n page: 'main:wps:donate:button:setup:wizard:hosted:3',\n },\n WIZARD_STEP_FOUR_HOSTED_PAGE: {\n step: 4,\n pgrp: 'main:wps:donate:button:setup:wizard:hosted:4',\n page: 'main:wps:donate:button:setup:wizard:hosted:4',\n },\n WIZARD_STEP_ONE_UNHOSTED_PAGE: {\n step: 1,\n pgrp: 'main:wps:donate:button:setup:wizard:unhosted:1',\n page: 'main:wps:donate:button:setup:wizard:unhosted:1',\n },\n WIZARD_STEP_TWO_UNHOSTED_PAGE: {\n step: 2,\n pgrp: 'main:wps:donate:button:setup:wizard:unhosted:2',\n page: 'main:wps:donate:button:setup:wizard:unhosted:2',\n },\n WIZARD_STEP_THREE_UNHOSTED_PAGE: {\n step: 3,\n pgrp: 'main:wps:donate:button:setup:wizard:unhosted:3',\n page: 'main:wps:donate:button:setup:wizard:unhosted:3',\n },\n WIZARD_STEP_FOUR_CAMPAIGN: {\n step: 4,\n pgrp: 'main:wps:donate:campaign:setup:wizard:4',\n page: 'main:wps:donate:campaign:setup:wizard:4',\n },\n WIZARD_STEP_ONE_CAMPAIGN: {\n step: 1,\n pgrp: 'main:wps:donate:campaign:setup:wizard:1',\n page: 'main:wps:donate:campaign:setup:wizard:1',\n },\n WIZARD_STEP_TWO_CAMPAIGN: {\n step: 2,\n pgrp: 'main:wps:donate:campaign:setup:wizard:2',\n page: 'main:wps:donate:campaign:setup:wizard:2',\n },\n WIZARD_STEP_THREE_CAMPAIGN: {\n step: 3,\n pgrp: 'main:wps:donate:campaign:setup:wizard:3',\n page: 'main:wps:donate:campaign:setup:wizard:3',\n },\n};\n\nconst FLOW = {\n flow: isDonateButton() ? 'button' : 'link',\n};\n\nexport const CAMPAIGN_FLOW = {\n flow: 'campaign',\n};\n\nconst DEFAULT_FPTI_DATA = {\n charityName: getCharityName(),\n receiver_country: getReceiverCountry(),\n component: 'donatenodeweb',\n product: 'donate',\n account_type: getUserType(),\n encr_cust_id: getEncryptedAccountNum(), // check if this is generated automatically\n isLoggedIn: isLoggedInUser(),\n ...window?.fpti,\n};\n\nconst LANDING_PAGE_DEFAULT_DATA = {\n ...DEFAULT_FPTI_DATA,\n ...PAGE_SPEC.LANDING_PAGE,\n};\n\nconst MANAGE_PAGE_DEFAULT_DATA = {\n ...DEFAULT_FPTI_DATA,\n ...PAGE_SPEC.MANAGE_PAGE,\n};\n\nconst CONFIGURE_DONATION_PAGE_DEFAULT_DATA = {\n step: 1,\n ...DEFAULT_FPTI_DATA,\n ...(isHosted\n ? { ...PAGE_SPEC.WIZARD_STEP_FOUR_HOSTED_PAGE }\n : { ...PAGE_SPEC.WIZARD_STEP_FOUR_UNHOSTED_PAGE }),\n ...(isCampaignFlow\n ? { ...CAMPAIGN_FLOW, ...PAGE_SPEC.WIZARD_STEP_FOUR_CAMPAIGN }\n : { ...FLOW }),\n};\n\nconst EXPERIENCE_SETUP_PAGE_DEFAULT_DATA = {\n ...DEFAULT_FPTI_DATA,\n ...(isHosted\n ? { ...PAGE_SPEC.WIZARD_STEP_TWO_HOSTED_PAGE }\n : { ...PAGE_SPEC.WIZARD_STEP_TWO_UNHOSTED_PAGE }),\n ...(isCampaignFlow\n ? { ...CAMPAIGN_FLOW, ...PAGE_SPEC.WIZARD_STEP_TWO_CAMPAIGN }\n : { ...FLOW }),\n};\n\nconst SET_AMOUNT_PAGE_DEFAULT_DATA = {\n ...DEFAULT_FPTI_DATA,\n ...(isHosted\n ? { ...PAGE_SPEC.WIZARD_STEP_THREE_HOSTED_PAGE }\n : { ...PAGE_SPEC.WIZARD_STEP_THREE_UNHOSTED_PAGE }),\n ...(isCampaignFlow\n ? { ...CAMPAIGN_FLOW, ...PAGE_SPEC.WIZARD_STEP_ONE_CAMPAIGN }\n : { ...FLOW }),\n};\n\nconst ADVANCED_SETTINGS_PAGE_DEFAULT_DATA = {\n ...DEFAULT_FPTI_DATA,\n ...(isHosted\n ? { ...PAGE_SPEC.WIZARD_STEP_FOUR_HOSTED_PAGE }\n : { ...PAGE_SPEC.WIZARD_STEP_FOUR_UNHOSTED_PAGE }),\n ...(isCampaignFlow\n ? { ...CAMPAIGN_FLOW, ...PAGE_SPEC.WIZARD_STEP_THREE_CAMPAIGN }\n : { ...FLOW }),\n};\n\nconst OVERVIEW_PAGE_DEFAULT_DATA = {\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n ...PAGE_SPEC.OVERVIEW_PAGE,\n};\n\nconst CLICK = {\n e: 'cl',\n};\n\nconst IMPRESSION = {\n e: 'im',\n};\n\nconst ERROR = {\n e: 'err',\n};\n\nconst ACTIVITY = {\n e: 'ac',\n};\n\nexport const FPTI_SPEC = {\n LANDING_PAGE_IM: {\n event_name: 'donate_setup_intro_screen_shown',\n data: {\n ...IMPRESSION,\n ...LANDING_PAGE_DEFAULT_DATA,\n },\n },\n LANDING_PAGE_ORG_UPDATES_MODULE_IM: {\n event_name: 'donate_donor_view_landing_updates_module_shown',\n data: {\n ...IMPRESSION,\n ...LANDING_PAGE_DEFAULT_DATA,\n },\n },\n LANDING_PAGE_LOGIN_CL: {\n event_name: 'donate_setup_intro_login_pressed',\n data: {\n ...CLICK,\n ...LANDING_PAGE_DEFAULT_DATA,\n },\n },\n LANDING_PAGE_SIGNUP_CL: {\n event_name: 'donate_setup_intro_sign_up_pressed',\n data: {\n ...CLICK,\n ...LANDING_PAGE_DEFAULT_DATA,\n },\n },\n LANDING_PAGE_HEADER_LOGIN_CL: {\n event_name: 'donate_setup_intro_header_login_pressed',\n data: {\n ...CLICK,\n ...LANDING_PAGE_DEFAULT_DATA,\n },\n },\n LANDING_PAGE_HEADER_SIGNUP_CL: {\n event_name: 'donate_setup_intro_header_sign_up_pressed',\n data: {\n ...CLICK,\n ...LANDING_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_IM: {\n event_name: 'donate_setup_manage_screen_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_TABLE_PAGE_UPDATE: {\n event_name: 'donate_setup_manage_table_shown',\n data: {\n ...ACTIVITY,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_CREATE_LINK_CL: {\n event_name: 'donate_setup_manage_create_link_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_CREATE_CAMPAIGN_CL: {\n event_name: 'donate_setup_manage_create_campaign_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_CREATE_BUTTON_CL: {\n event_name: 'donate_setup_manage_create_button_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_MANAGE_CAMPAIGN_CL: {\n event_name: 'donate_setup_manage_saved_button_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n ...CAMPAIGN_FLOW,\n },\n },\n MANAGE_PAGE_MANAGE_BUTTON_CL: {\n event_name: 'donate_setup_manage_saved_button_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n ...FLOW,\n },\n },\n MANAGE_PAGE_ACCOUNT_UPGRADE_CL: {\n event_name: 'donate_setup_manage_account_upgrade_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_INFO_OPTIONS_CL: {\n event_name: 'donate_setup_manage_page_options_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_INFO_OPTIONS_CLOSED_CL: {\n event_name: 'donate_setup_available_pages_info_close_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_INFO_OPTIONS_IM: {\n event_name: 'donate_setup_available_pages_info_screen_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_INFO_LINK_PRESSED: {\n event_name: 'donate_setup_available_pages_info_link_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_INFO_BUTTON_PRESSED: {\n event_name: 'donate_setup_available_pages_info_button_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_INFO_CAMPAIGN_PRESSED: {\n event_name: 'donate_setup_available_pages_info_campaign_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_FEEDBACK_BUTTON_CL: {\n event_name: 'donate_setup_manage_feedback_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_DONATION_PAGE_IM: {\n event_name: 'donate_setup_configure_donation_page_screen_shown',\n data: {\n ...IMPRESSION,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_DONATION_PAGE_NAV_CL: {\n event_name: 'donate_setup_configure_donation_page_nav_back_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_DONATION_PAGE_BACK: {\n event_name: 'donate_setup_configure_donation_page_cancel_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_DONATION_PAGE_FEEDBACK_CL: {\n event_name: 'donate_setup_configure_donation_page_feedback_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_DONATION_PAGE_FINISH_CL: {\n event_name: 'donate_setup_configure_donation_page_continue_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_DONATION_PAGE_ERROR_DISPLAY: {\n event_name: 'donate_setup_configure_donation_page_form_error_occurred',\n data: {\n ...ERROR,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_BUTTON_PAGE_CONTINUE_CL: {\n event_name: 'donate_setup_configure_donation_page_continue_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_BUTTON_PAGE_CANCEL_CL: {\n event_name: 'donate_setup_configure_donation_page_cancel_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_DONATION_PAGE_CANCEL_CL: {\n event_name: 'donate_setup_configure_donation_page_cancel_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_BUTTON_PAGE_NAV_BACK_CL: {\n event_name: 'donate_setup_configure_donation_nav_back_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_BUTTON_PAGE_FEEDBACK_CL: {\n event_name: 'donate_setup_configure_button_feedback_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_BUTTON_PAGE_CHANGE_LOGO_CL: {\n event_name: 'donate_setup_configure_button_update_image_pressed',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n CONFIGURE_BUTTON_PAGE_LOGO_UPDATED: {\n event_name: 'donate_setup_configure_button_image_updated',\n data: {\n ...ACTIVITY,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_IM: {\n event_name: 'donate_setup_experience_setup_screen_shown',\n data: {\n ...IMPRESSION,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_CANCEL_CL: {\n event_name: 'donate_setup_experience_setup_cancel_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_CONTINUE_CL: {\n event_name: 'donate_setup_experience_setup_continue_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_ERROR_DISPLAY: {\n event_name: 'donate_setup_experience_form_error_occurred',\n data: {\n ...ERROR,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_BACK_CL: {\n event_name: 'donate_setup_experience_setup_back_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_NAV_BACK_CL: {\n event_name: 'donate_setup_experience_setup_nav_back_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_FEEDBACK_CL: {\n event_name: 'donate_setup_experience_setup_feedback_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_PREVIEW_TAB_CL: {\n event_name: 'donate_setup_experience_setup_tab_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_UPLOAD_LOGO_CL: {\n event_name: 'donate_setup_experience_upload_logo_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_LOGO_MODAL_IM: {\n event_name: 'donate_setup_upload_logo_screen_shown',\n data: {\n ...IMPRESSION,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BUTTON_IMAGE_SAVE_CL: {\n event_name: 'donate_setup_upload_button_image_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_LOGO_MODAL_SAVE_CL: {\n event_name: 'donate_setup_upload_logo_save_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_LOGO_MODAL_IMAGE_UPDATED: {\n event_name: 'donate_setup_upload_logo_image_updated',\n data: {\n ...ACTIVITY,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_LOGO_MODAL_CHECKBOX_CL: {\n event_name: 'donate_setup_upload_logo_checkbox_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_LOGO_MODAL_DISMISS_CL: {\n event_name: 'donate_setup_upload_logo_dismiss_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n EXPERIENCE_SETUP_PAGE_UPLOAD_BACKGROUND_IMG_CL: {\n event_name: 'donate_setup_experience_upload_img_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_IM: {\n event_name: 'donate_setup_upload_img_screen_shown',\n data: {\n ...IMPRESSION,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_SAVE_CL: {\n event_name: 'donate_setup_upload_img_save_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_IMAGE_UPDATED: {\n event_name: 'donate_setup_upload_img_img_updated',\n data: {\n ...ACTIVITY,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_DISMISS_CL: {\n event_name: 'donate_setup_upload_img_dismiss_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_DISMISS_ERROR: {\n event_name: 'donate_setup_upload_img_error_occurred',\n data: {\n ...ERROR,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_PAGE_IM: {\n event_name: 'donate_setup_set_amount_screen_shown',\n data: {\n ...IMPRESSION,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_PAGE_CONTINUE_CL: {\n event_name: 'donate_setup_set_amount_continue_pressed',\n data: {\n ...CLICK,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_PAGE_FINISH_CL: {\n event_name: 'donate_setup_set_amount_finish_pressed',\n data: {\n ...CLICK,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_PAGE_BACK_CL: {\n event_name: 'donate_setup_set_amount_back_pressed',\n data: {\n ...CLICK,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_PAGE_NAV_BACK_CL: {\n event_name: 'donate_setup_set_amount_nav_back_pressed',\n data: {\n ...CLICK,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_PAGE_FEEDBACK_CL: {\n event_name: 'donate_setup_set_amount_feedback_pressed',\n data: {\n ...CLICK,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_ERROR_DISPLAY: {\n event_name: 'donate_setup_set_amount_form_error_occurred',\n data: {\n ...ERROR,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n SET_AMOUNT_PAGE_PREVIEW_TAB_CL: {\n event_name: 'donate_setup_set_amount_tab_pressed',\n data: {\n ...CLICK,\n ...SET_AMOUNT_PAGE_DEFAULT_DATA,\n },\n },\n ADVANCED_SETTINGS_PAGE_IM: {\n event_name: 'donate_setup_advanced_settings_screen_shown',\n data: {\n ...IMPRESSION,\n ...ADVANCED_SETTINGS_PAGE_DEFAULT_DATA,\n },\n },\n ADVANCED_SETTINGS_PAGE_FINISH_CL: {\n event_name: 'donate_setup_advanced_settings_next_pressed',\n data: {\n ...CLICK,\n ...ADVANCED_SETTINGS_PAGE_DEFAULT_DATA,\n },\n },\n ADVANCED_SETTINGS_PAGE_ERROR_DISPLAY: {\n event_name: 'donate_setup_advanced_settings_form_error_occurred',\n data: {\n ...CLICK,\n ...ADVANCED_SETTINGS_PAGE_DEFAULT_DATA,\n },\n },\n ADVANCED_SETTINGS_PAGE_BACK_CL: {\n event_name: 'donate_setup_advanced_settings_back_pressed',\n data: {\n ...CLICK,\n ...ADVANCED_SETTINGS_PAGE_DEFAULT_DATA,\n },\n },\n ADVANCED_SETTINGS_PAGE_NAV_BACK_CL: {\n event_name: 'donate_setup_advanced_settings_nav_back_pressed',\n data: {\n ...CLICK,\n ...ADVANCED_SETTINGS_PAGE_DEFAULT_DATA,\n },\n },\n ADVANCED_SETTINGS_PAGE_FEEDBACK_CL: {\n event_name: 'donate_setup_advanced_settings_feedback_pressed',\n data: {\n ...CLICK,\n ...ADVANCED_SETTINGS_PAGE_DEFAULT_DATA,\n },\n },\n ADVANCED_SETTINGS_PAGE_PREVIEW_TAB_CL: {\n event_name: 'donate_setup_advanced_settings_tab_pressed',\n data: {\n ...CLICK,\n ...ADVANCED_SETTINGS_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_IM: {\n event_name: 'donate_setup_donation_page_details_view',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SUCCESS_IM: {\n event_name: 'donate_setup_donation_page_creation_success',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n CAMPAIGN_OVERVIEW_PAGE_RISK_SUCCESS_IM: {\n event_name: 'donate_campaign_setup_donation_page_risk_success',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n CAMPAIGN_OVERVIEW_PAGE_RISK_DENY_IM: {\n event_name: 'donate_campaign_setup_donation_page_risk_denied',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n CAMPAIGN_OVERVIEW_PAGE_RISK_SERVER_ERROR_IM: {\n event_name: 'donate_campaign_setup_donation_page_risk_server_error',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n CAMPAIGN_OVERVIEW_PAGE_STEPUP_SUCCESS_IM: {\n event_name: 'donate_campaign_setup_donation_page_stepup_success',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n CAMPAIGN_OVERVIEW_PAGE_STEPUP_DENY_IM: {\n event_name: 'donate_campaign_setup_donation_page_stepup_denied',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n CAMPAIGN_OVERVIEW_PAGE_STEPUP_SERVER_ERROR_IM: {\n event_name: 'donate_campaign_setup_donation_page_stepup_server_error',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n DONATE_CAMPAIGN_STEPUP_REDIRECT: {\n event_name: 'donate_setup_campaign_stepup_redirect',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n BUTTON_OVERVIEW_PAGE_RISK_SUCCESS_IM: {\n event_name: 'donate_button_setup_donation_page_risk_success',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n BUTTON_OVERVIEW_PAGE_RISK_DENY_IM: {\n event_name: 'donate_button_setup_donation_page_risk_denied',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n BUTTON_OVERVIEW_PAGE_RISK_SERVER_ERROR_IM: {\n event_name: 'donate_button_setup_donation_page_risk_server_error',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n BUTTON_OVERVIEW_PAGE_STEPUP_SUCCESS_IM: {\n event_name: 'donate_button_setup_donation_page_stepup_success',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n BUTTON_OVERVIEW_PAGE_STEPUP_DENY_IM: {\n event_name: 'donate_button_setup_donation_page_stepup_denied',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n BUTTON_OVERVIEW_PAGE_STEPUP_SERVER_ERROR_IM: {\n event_name: 'donate_button_setup_donation_page_stepup_server_error',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n DONATE_BUTTON_STEPUP_REDIRECT: {\n event_name: 'donate_setup_button_stepup_redirect',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_FINISH_CL: {\n event_name: 'donate_setup_donation_page_finish_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_ERROR_FINISH_CL: {\n event_name: 'donate_setup_donation_page_finish_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_BUTTON_INTERSITIAL_IM: {\n event_name: 'donate_setup_create_button_interstitial_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_CAMPAIGN_INTERSITIAL_IM: {\n event_name: 'donate_setup_create_campaign_interstitial_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_LINK_INTERSITIAL_IM: {\n event_name: 'donate_setup_create_link_interstitial_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_CREATE_QRC_INTERSITIAL_IM: {\n event_name: 'donate_setup_create_qrc_interstitial_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_IM: {\n event_name: 'donate_setup_manage_updates_module_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n state: 'populated',\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_LIST_IM: {\n event_name: 'donate_setup_update_list_screen_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_DETAIL_IM: {\n event_name: 'donate_setup_update_detail_screen_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_CREATE_IM: {\n event_name: 'donate_setup_create_update_screen_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'post_new_update',\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_EDIT_IM: {\n event_name: 'donate_setup_edit_update_screen_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'edit_existing_update',\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_SHARE_IM: {\n event_name: 'donate_setup_share_update_screen_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_CONFIRM_DELETE_IM: {\n event_name: 'donate_setup_delete_update_screen_shown',\n data: {\n ...ACTIVITY,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_CREATE_SUCCESS_AC: {\n event_name: 'donate_setup_post_update_success_occurred',\n data: {\n ...ACTIVITY,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_DELETE_SUCCESS_AC: {\n event_name: 'donate_setup_delete_update_success_occurred',\n data: {\n ...ACTIVITY,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_ORG_UPDATES_CREATE_GENERIC_ERROR_AC: {\n event_name: 'donate_setup_update_generic_error_shown',\n data: {\n ...ACTIVITY,\n ...ERROR,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SUCCESS_BANNER_IM: {\n event_name: 'donate_setup_success_banner_shown',\n data: {\n ...IMPRESSION,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SUCCESS_BANNER_SAVED_BUTTON_CL: {\n event_name: 'donate_setup_success_banner_donation_page_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SUCCESS_BANNER_DISMISS_CL: {\n event_name: 'donate_setup_success_banner_closed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_BACK_CL: {\n event_name: 'donate_setup_success_back_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_EDIT_NAME_CL: {\n event_name: 'donate_setup_success_edit_name_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SAVE_NAME_CL: {\n event_name: 'donate_setup_success_save_name_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_EDIT_CL: {\n event_name: 'donate_setup_success_edit_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_PREVIEW_CL: {\n event_name: 'donate_setup_success_preview_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_POST_UPDATE_CL: {\n event_name: 'donate_setup_manage_updates_module_post_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_LIST_POST_UPDATE_CL: {\n event_name: 'donate_setup_update_list_post_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_LIST_ITEM_PRESSED_CL: {\n event_name: 'donate_setup_update_list_item_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_POST_UPDATE_LINK_CL: {\n event_name: 'donate_setup_manage_post_update_link_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_UPDATE_EDIT_PRESSED_CL: {\n event_name: 'donate_setup_update_detail_edit_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_UPDATE_POST_PRESSED_CL: {\n event_name: 'donate_setup_create_update_post_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'post_new_update',\n },\n },\n OVERVIEW_PAGE_UPDATE_SAVE_PRESSED_CL: {\n event_name: 'donate_setup_create_update_save_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'edit_existing_update',\n },\n },\n OVERVIEW_PAGE_UPDATE_DELETE_PRESSED_CL: {\n event_name: 'donate_setup_create_update_delete_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'edit_existing_update',\n },\n },\n OVERVIEW_PAGE_UPDATE_POST_CANCEL_PRESSED_CL: {\n event_name: 'donate_setup_create_update_cancel_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'post_new_update',\n },\n },\n OVERVIEW_PAGE_UPDATE_EDIT_CANCEL_PRESSED_CL: {\n event_name: 'donate_setup_create_update_cancel_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'edit_existing_update',\n },\n },\n OVERVIEW_PAGE_UPDATE_SHARE_CHANNERL_PRESSED_CL: {\n event_name: 'donate_setup_share_update_channel_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_UPDATE_DELETE_CONFIRM_PRESSED_CL: {\n event_name: 'donate_setup_delete_update_delete_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_UPDATE_DELETE_KEEP_PRESSED_CL: {\n event_name: 'donate_setup_delete_update_keep_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_UPDATE_START_OVER_PRESSED_CL: {\n event_name: 'donate_setup_update_generic_error_start_over_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'post_new_update',\n },\n },\n OVERVIEW_PAGE_UPDATE_TRY_AGAIN_PRESSED_CL: {\n event_name: 'donate_setup_update_generic_error_try_again_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n page_variant: 'post_new_update',\n },\n },\n OVERVIEW_PAGE_UPDATE_FORM_ERROR_AC: {\n event_name: 'donate_setup_create_update_form_error_occurred',\n data: {\n ...ACTIVITY,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_PREVIEW_DISMISS_CL: {\n event_name: 'donate_setup_success_preview_dismiss_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_DUPLICATE_CL: {\n event_name: 'donate_setup_success_duplicate_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_DELETE_CL: {\n event_name: 'donate_setup_success_delete_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SHARE_CL: {\n event_name: 'donate_setup_success_share_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_COPY_LINK_CL: {\n event_name: 'donate_setup_success_copy_link_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_COPY_BUTTON_CL: {\n event_name: 'donate_setup_success_copy_button_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_COPY_WIDGET_CL: {\n event_name: 'donate_setup_success_copy_embed_card_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_DOWNLOAD_QRC_CL: {\n event_name: 'donate_setup_success_download_qrc_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_FEEDBACK_CL: {\n event_name: 'donate_setup_success_feedback_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SHAREABLE_LINK: {\n event_name: 'donate_setup_success_shareable_link_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_QR_CODE: {\n event_name: 'donate_setup_success_qr_code_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_DONATE_BUTTON: {\n event_name: 'donate_setup_success_donate_button_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_CAMPAIGN_CARD: {\n event_name: 'donate_setup_success_campaign_card_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_SHOW_MORE_UPDATES_CL: {\n event_name: 'donate_setup_manage_updates_module_show_more_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n state: 'populated',\n },\n },\n OVERVIEW_PAGE_SHOW_PREVIOUS_UPDATES_CL: {\n event_name: 'donate_setup_update_list_show_previous_pressed',\n data: {\n ...CLICK,\n ...OVERVIEW_PAGE_DEFAULT_DATA,\n },\n },\n OVERVIEW_PAGE_DISMISS_UPDATES_LIST_SHEET_CL: {\n event_name: 'donate_setup_update_list_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_UPDATES_DETAIL_SHEET_CL: {\n event_name: 'donate_setup_update_detail_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_UPDATES_CREATE_SHEET_CL: {\n event_name: 'donate_setup_create_update_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_UPDATES_DELETE_SHEET_CL: {\n event_name: 'donate_setup_delete_update_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_UPDATES_SHARE_SHEET_CL: {\n event_name: 'donate_setup_share_update_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_BUTTON_INTERSITIAL_CL: {\n event_name: 'donate_setup_create_button_interstitial_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_CAMPAIGN_INTERSITIAL_CL: {\n event_name: 'donate_setup_create_campaign_interstitial_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_LINK_INTERSITIAL_CL: {\n event_name: 'donate_setup_create_link_interstitial_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n OVERVIEW_PAGE_DISMISS_QRC_INTERSITIAL_CL: {\n event_name: 'donate_setup_create_qrc_interstitial_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n dismiss_method: 'close',\n },\n },\n PRODUCT_UPDATE_EXPERIENCE_MODAL_IM: {\n event_name: 'donate_setup_feature_education_screen_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n },\n },\n PRODUCT_UPDATE_EXPERIENCE_MODAL_SIDE_SCROLL_CL: {\n event_name: 'donate_setup_feature_education_side_scroll_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n },\n },\n PRODUCT_UPDATE_EXPERIENCE_MODAL_DISMISS_CL: {\n event_name: 'donate_setup_feature_education_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n },\n },\n ACTIONABLE_ERROR_MODAL_IM: {\n event_name: 'donate_setup_actionable_error_modal_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...FLOW,\n },\n },\n ACTIONABLE_ERROR_MODAL_REVIEW_CL: {\n event_name: 'donate_setup_actionable_error_edit_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...FLOW,\n },\n },\n ACTIONABLE_ERROR_MODAL_START_OVER_CL: {\n event_name: 'donate_setup_actionable_error_start_over_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...FLOW,\n },\n },\n ACTIONABLE_ERROR_MODAL_DISMISS_CL: {\n event_name: 'donate_setup_actionable_error_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...FLOW,\n },\n },\n FIELD_LEVEL_ERROR_IM: {\n event_name: 'donate_setup_input_validation_error_occurred',\n data: {\n ...ERROR,\n ...DEFAULT_FPTI_DATA,\n ...FLOW,\n },\n },\n ERROR_INTERACTION_IM: {\n event_name: 'donate_setup_failed_customer_interaction_occurred',\n data: {\n ...ERROR,\n ...DEFAULT_FPTI_DATA,\n },\n },\n ERROR_INTERACTION_LINK_CL: {\n event_name: 'donate_setup_failed_customer_interaction_link_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n },\n },\n ERROR_INTERACTION_DISMISS_CL: {\n event_name: 'donate_setup_failed_customer_interaction_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n },\n },\n ALERT_MODAL_IM: {\n event_name: 'donate_setup_manage_action_popup_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_CONFIRM_CL: {\n event_name: 'donate_setup_manage_action_popup_confirm_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_CANCEL_CL: {\n event_name: 'donate_setup_manage_action_popup_cancel_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_FINISH_CL: {\n event_name: 'donate_setup_manage_action_popup_finish_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_SAVE_CL: {\n event_name: 'donate_setup_manage_action_popup_save_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_DELETE_CL: {\n event_name: 'donate_setup_manage_action_popup_delete_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_TRY_AGAIN_CL: {\n event_name: 'donate_setup_manage_action_popup_try_again',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_QUIT_CL: {\n event_name: 'donate_setup_manage_action_popup_quit',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ALERT_MODAL_DISMISS_CL: {\n event_name: 'donate_setup_manage_action_popup_dismiss_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ACCOUNT_RESTRICTED_PAGE_IM: {\n event_name: 'donate_setup_account_restricted_error_occurred',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n },\n },\n DONATE_SETUP_ACTION_OCURRED: {\n event_name: 'donate_setup_manage_action_occurred',\n data: {\n ...ACTIVITY,\n ...DEFAULT_FPTI_DATA,\n ...CAMPAIGN_FLOW,\n },\n },\n DONATE_SETUP_SUCCESS_CLOSE_REOPEN_CAMPAIGN: {\n event_name: 'donate_setup_success_close_reopen_toggle_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...CAMPAIGN_FLOW,\n },\n },\n MANAGE_STATISTICS_MODULE_IM: {\n event_name: 'donate_setup_manage_statistics_module_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_STATISTICS_UNSAVED_TOOLTIP_IM: {\n event_name: 'donate_setup_manage_statistics_unsaved_tooltip_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_STATISTICS_UNSAVED_TOOLTIP_CL: {\n event_name: 'donate_setup_manage_statistics_unsaved_tooltip_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_TIMEFRAME_DROPDOWN_CL: {\n event_name: 'donate_setup_manage_time_frame_dropdown_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_TIMEFRAME_LIST_IM: {\n event_name: 'donate_setup_manage_time_frame_list_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n\n MANAGE_TIMEFRAME_SELECTION_CL: {\n event_name: 'donate_setup_manage_time_frame_selection_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_CURRENCY_BREAKDOWN_CL: {\n event_name: 'donate_setup_manage_currency_breakdown_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_CURRENCY_BREAKDOWN_SHEET_IM: {\n event_name: 'donate_received_currency_breakdown_screen_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_ZERO_RAISED_MODULE_IM: {\n event_name: 'donate_setup_manage_zero_raised_module_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_ZERO_RAISED_MODULE_SHARE_CL: {\n event_name: 'donate_setup_manage_zero_raised_module_share_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_EDIT_CL: {\n event_name: 'donate_setup_success_edit_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_PAGE_DELETE_CL: {\n event_name: 'donate_setup_success_delete_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n FULL_PAGE_ERROR: {\n event_name: 'donate_setup_full_page_error_occurred',\n data: {\n ...ACTIVITY,\n ...DEFAULT_FPTI_DATA,\n },\n },\n MANAGE_SUMMARY_MODULE_ERROR_IM: {\n event_name: 'donate_setup_manage_summary_module_error_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_SUMMARY_MODULE_RETRY_CL: {\n event_name: 'donate_setup_manage_summary_module_error_retry_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_TABLE_INSIGHT_ERROR_IM: {\n event_name: 'donate_setup_manage_table_insight_error_shown',\n data: {\n ...IMPRESSION,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n MANAGE_TABLE_INSIGHT_RETRY_CL: {\n event_name: 'donate_setup_manage_table_insight_error_retry_pressed',\n data: {\n ...CLICK,\n ...MANAGE_PAGE_DEFAULT_DATA,\n },\n },\n DONATE_SETUP_BANNER_SHOWN: {\n event_name: 'donate_setup_banner_shown',\n data: {\n ...ERROR,\n ...DEFAULT_FPTI_DATA,\n },\n },\n DONATE_SETUP_BANNER_CLICKED: {\n event_name: 'donate_setup_banner_clicked',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n },\n },\n DONATE_SETUP_WELCOME_CARD_SHOWN: {\n event_name: 'donate_setup_welcome_card_shown',\n data: {\n ...ERROR,\n ...DEFAULT_FPTI_DATA,\n },\n },\n DONATE_SETUP_WELCOME_CARD_CLICKED: {\n event_name: 'donate_setup_welcome_card_clicked',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n },\n },\n SET_AMOUNT_PAGE_SAVE_IM: {\n event_name: 'donate_setup_set_amount_save_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n EXPERIENCE_SETUP_PAGE_SAVE_IM: {\n event_name: 'donate_setup_experience_setup_save_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ADVANCED_SETTINGS_PAGE_SAVE_IM: {\n event_name: 'donate_setup_advanced_settings_save_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n CONFIGURE_DONATION_PAGE_SAVE_IM: {\n event_name: 'donate_setup_configure_donation_page_save_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n\n SET_AMOUNT_PAGE_SAVE_CL: {\n event_name: 'donate_setup_set_amount_save_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n EXPERIENCE_SETUP_PAGE_SAVE_CL: {\n event_name: 'donate_setup_experience_setup_save_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ADVANCED_SETTINGS_PAGE_SAVE_CL: {\n event_name: 'donate_setup_advanced_settings_save_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n CONFIGURE_DONATION_PAGE_SAVE_CL: {\n event_name: 'donate_setup_configure_donation_page_save_pressed',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n\n SET_AMOUNT_PAGE_SAVE_ERROR_IM: {\n event_name: 'donate_setup_set_amount_save_error_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n EXPERIENCE_SETUP_PAGE_SAVE_ERROR_IM: {\n event_name: 'donate_setup_experience_setup_save_error_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n ADVANCED_SETTINGS_PAGE_SAVE_ERROR_IM: {\n event_name: 'donate_setup_advanced_settings_save_error_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n CONFIGURE_DONATION_PAGE_SAVE_ERROR_IM: {\n event_name: 'donate_setup_configure_donation_page_save_error_shown',\n data: {\n ...IMPRESSION,\n ...DEFAULT_FPTI_DATA,\n ...(isCampaignFlow ? { ...CAMPAIGN_FLOW } : { ...FLOW }),\n },\n },\n DONATE_SETUP_WIZARD_PROJECT_NAME_SHOWN: {\n event_name: 'donate_setup_wizard_project_name_shown',\n data: {\n ...IMPRESSION,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n DONATE_SETUP_WIZARD_PROJECT_NAME_UPDATED: {\n event_name: 'donate_setup_wizard_project_name_updated',\n data: {\n ...CLICK,\n ...CONFIGURE_DONATION_PAGE_DEFAULT_DATA,\n },\n },\n DONATE_SETUP_NO_BUTTON_PENDING_CONTENT_SHOWN: {\n event_name: 'donate_setup_no_button_pending_content_shown',\n data: {\n ...ERROR,\n ...DEFAULT_FPTI_DATA,\n },\n },\n DONATE_SETUP_VERIFIED_FIRST_TIME_VISIT_CONTENT_SHOWN: {\n event_name: 'donate_setup_verified_first_time_visit_content_shown',\n data: {\n ...ERROR,\n ...DEFAULT_FPTI_DATA,\n },\n },\n DONATE_SETUP_PENDING_BANNER_SHOWN: {\n event_name: 'donate_setup_pending_banner_shown',\n data: {\n ...ERROR,\n ...DEFAULT_FPTI_DATA,\n },\n },\n DONATE_SETUP_PENDING_BANNER_CLICKED: {\n event_name: 'donate_setup_pending_banner_clicked',\n data: {\n ...CLICK,\n ...DEFAULT_FPTI_DATA,\n },\n },\n};\n\nexport const ACTION = {\n EXTEND_SESSION: 'extend session',\n QUIT: 'quit creating donation page',\n RETRY_SAVE: 'could not save draft',\n DELETE: 'delete donation page',\n CLOSE_CAMPAIGN: 'close_campaign',\n REOPEN_CAMPAIGN: 'reopen_campaign',\n DELETE_CAMPAIGN: 'delete_campaign',\n DUPLICATE: 'duplicate',\n EDIT_PAGE: 'edit_page',\n FINISH_PAGE: 'finish_page',\n PUBLISH_PAGE: 'publish_page',\n};\n\nexport const SCREEN = {\n CONFIGURE_BUTTON: 'configure_button',\n EXPERIENCE_SETUP: 'experience_setup',\n SET_AMOUNT: 'set_amount',\n ADVANCED_SETTINGS: 'advanced_settings',\n MANAGE: 'manage',\n SUCCESS: 'success',\n};\n\nexport const RTE_FPTI_ACTION_SPEC = {\n EXPERIENCE_SETUP_PAGE_UPLOAD_BACKGROUND_IMG_CL: {\n event_name: 'donate_setup_experience_upload_img_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_IM: {\n event_name: 'donate_setup_upload_img_screen_shown',\n data: {\n ...IMPRESSION,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_SAVE_CL: {\n event_name: 'donate_setup_upload_img_save_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_IMAGE_UPDATED: {\n event_name: 'donate_setup_upload_img_img_updated',\n data: {\n ...ACTIVITY,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_DISMISS_CL: {\n event_name: 'donate_setup_upload_img_dismiss_pressed',\n data: {\n ...CLICK,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n UPLOAD_BACKGROUND_IMG_MODAL_DISMISS_ERROR: {\n event_name: 'donate_setup_upload_img_error_occurred',\n data: {\n ...ERROR,\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n },\n },\n DONATE_SETUP_ADD_LINK_IMP: {\n event_name: 'donate_setup_add_link_screen_shown',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...IMPRESSION,\n },\n },\n DONATE_SETUP_ADD_LINK_CL: {\n event_name: 'donate_setup_add_link_add_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...CLICK,\n },\n },\n DONATE_SETUP_ADD_LINK_CANCEL: {\n event_name: 'donate_setup_add_link_cancel_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...CLICK,\n },\n },\n DONATE_SETUP_ADD_LINK_DISMISS: {\n event_name: 'donate_setup_add_link_dismiss_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...CLICK,\n },\n },\n DONATE_SETUP_ADD_LINK_ERROR: {\n event_name: 'donate_setup_add_link_form_error_occurred',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...ERROR,\n },\n },\n DONATE_SETUP_ADD_VIDEO_IMP: {\n event_name: 'donate_setup_add_video_screen_shown',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...IMPRESSION,\n },\n },\n DONATE_SETUP_ADD_VIDEO_CL: {\n event_name: 'donate_setup_add_video_add_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...CLICK,\n },\n },\n DONATE_SETUP_ADD_VIDEO_CANCEL: {\n event_name: 'donate_setup_add_video_cancel_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...CLICK,\n },\n },\n DONATE_SETUP_ADD_VIDEO_DISMISS: {\n event_name: 'donate_setup_add_video_dismiss_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...CLICK,\n },\n },\n EXPAND_TEXT_EDITOR: {\n event_name: 'donate_setup_experience_setup_expand_editor_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...CLICK,\n },\n },\n ERROR_TEXT_EDITOR: {\n event_name: 'donate_setup_experience_setup_expand_editor_pressed',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...ERROR,\n },\n },\n DONATE_SETUP_ADD_VIDEO_ERROR: {\n event_name: 'donate_setup_add_video_form_error_occurred',\n data: {\n ...EXPERIENCE_SETUP_PAGE_DEFAULT_DATA,\n ...ERROR,\n },\n },\n};\n","import { isLoggedInUser } from './authUtils';\n\nconst MOBILE_MODE_THRESHOLD_WIDTH = 1024;\n\nconst getReactButtonsContainerMarginTopExtension = () => {\n if (isLoggedInUser() && window.innerWidth < MOBILE_MODE_THRESHOLD_WIDTH) {\n const { pathname } = window.location;\n if (\n pathname.includes('/donate/buttons/manage') ||\n pathname.includes('/donate/campaigns')\n ) {\n return 0;\n } else if (pathname.includes('/donate/buttons')) {\n return 7;\n }\n }\n\n return 20;\n};\n\nexport function setContainerMargins() {\n const merchantHeader = document.getElementById(\n 'merchant-header-main-wrapper-internal'\n );\n const reactButtonsContainer = document.getElementById(\n 'react-buttons-container'\n );\n if (merchantHeader && reactButtonsContainer) {\n const merchantHeaderHeight = merchantHeader.offsetHeight;\n const reactButtonsContainerMarginTop =\n merchantHeaderHeight + getReactButtonsContainerMarginTopExtension();\n reactButtonsContainer.style.margin = `${reactButtonsContainerMarginTop}px auto 0`;\n }\n}\n\n/**\n * Listens to merchantHeaderMarginUpdate events\n * and sets the appropriate margin between\n * the site header and the elements beneath it.\n * The merchantHeaderMarginUpdate is a custom event\n * the marketing team's code dispatches when the header loads\n * and also when the header changes size formats.\n */\nexport function setContainerMarginsBefore() {\n document.addEventListener('merchantHeaderMarginUpdate', () => {\n setContainerMargins();\n });\n}\n","const STAGE_HOSTNAME = 'https://www.msmaster.qa.paypal.com';\n\nexport function getHost() {\n const { host, protocol } = window.location;\n return host.includes('localhost') ? STAGE_HOSTNAME : `${protocol}//${host}`;\n}\n","let serverProps;\n\nexport function getServerProps() {\n // grab the node which contains props\n const serverPropsNode = document.getElementById('server-props');\n\n // grab innerHTML (which is the props as JSON); default to strignified empty object\n const serverPropsJSON =\n (serverPropsNode && serverPropsNode.innerHTML) || '{}';\n\n // parse the JSON strings to JavaScript objects\n // TODO: Consider wrapping these in try/catches\n try {\n serverProps = JSON.parse(serverPropsJSON);\n } catch (e) {\n serverProps = {};\n }\n return serverProps;\n}\n","import { addClass, removeClass } from '../../utility/domUtils';\n\nexport function showSpinner() {\n addClass('#button-factory-spinner', ['show']);\n}\n\nexport function hideSpinner() {\n removeClass('#button-factory-spinner', ['show']);\n}\n","import AppDispatcher from '../dispatcher/AppDispatcher';\nimport assign from 'object-assign';\nimport { EventEmitter } from 'events';\nimport * as DonationConstants from '../utility/constants';\n\nconst CHANGE_EVENT = 'change';\n\nconst _alldata = {}; // collection of donation data\n\n/**\n * @param {string} text The content donation\n */\nfunction create(field, value) {\n _alldata[field] = value;\n}\n\nvar DonationStore = assign({}, EventEmitter.prototype, {\n emitChange: function () {\n this.emit(CHANGE_EVENT);\n },\n\n getAllData: function () {\n return _alldata;\n },\n\n getDonationAmount: function () {\n if (_alldata.amount) {\n return _alldata.amount.toString();\n }\n return _alldata.amount;\n },\n\n getDonationSymbol: function () {\n return _alldata.symbol;\n },\n\n getDonationCode: function () {\n return _alldata.code;\n },\n\n getFormatedAmount: function () {\n return _alldata.formatedAmount;\n },\n\n getDonationNote: function () {\n return _alldata.note;\n },\n\n getDonationRecurring: function () {\n return _alldata.recurring;\n },\n\n getSelectedRecurringFrequency: function () {\n return _alldata.selectedRecurringFrequency;\n },\n\n getRecurringModalStatus: function () {\n return _alldata.recurringModalStatus;\n },\n\n getAnonymousStatus: function () {\n return _alldata.anonymousStatus;\n },\n\n getCoverFeeOptInStatus: function () {\n return _alldata.coverFee;\n },\n\n getFeeAmount: function () {\n return _alldata.feeAmount;\n },\n\n getFormatedFeeAmount: function () {\n return _alldata.formatedFeeAmount;\n },\n\n getAmountBeforeFee: function () {\n return _alldata.amountBeforeFee;\n },\n\n getConfirmation: function () {\n return _alldata.confirmation;\n },\n\n getPostBackData: function () {\n return _alldata.postBackData;\n },\n\n getCurrentPage: function () {\n return _alldata.currentPage;\n },\n\n getServerErros: function () {\n return _alldata.serverErrors;\n },\n\n getPaymentError: function () {\n return _alldata.paymentError;\n },\n\n getSignUpError: function () {\n return _alldata.signUpError;\n },\n\n getFundingOptions: function () {\n return _alldata.fundingOptions;\n },\n\n getEmail: function () {\n return _alldata.email;\n },\n\n getBillingAddress: function () {\n return _alldata.billingAddress;\n },\n\n getUserCountry: function () {\n return _alldata.country;\n },\n\n getDonationAmountType: function () {\n return _alldata.donationAmountType;\n },\n\n getGiftaidItFlagStatus: function () {\n return _alldata.giftAidItFlag;\n },\n\n getShareAddress: function () {\n return _alldata.shareAddress;\n },\n\n getAddCardError: function () {\n return _alldata.addCardError;\n },\n\n getGiftAidItExtraAmount: function () {\n return DonationConstants.DONATE_GIFTAID_IT_EXTRA_AMOUNT;\n },\n\n getSelectedProgram: function () {\n return _alldata.selectedProgram;\n },\n\n getSelectedPresetButtonId: function () {\n return _alldata.selectedPresetButtonId;\n },\n\n getCardSpec: function () {\n return _alldata.cardSpec;\n },\n\n getFormData: function () {\n return _alldata.formData;\n },\n\n getThreeDSContingency: function () {\n return _alldata.threeDSContingency;\n },\n\n getLanguageSelectorState: function () {\n return _alldata.languageSelectorState;\n },\n\n getOrderStatus: function () {\n return _alldata.orderStatus;\n },\n\n getPPCCStatus: function () {\n return _alldata.ppccStatus;\n },\n\n dispatcherIndex: AppDispatcher.register(function (payload) {\n var action = payload.action;\n var amount,\n recurring,\n selectedRecurringFrequency,\n recurringModalStatus,\n note,\n symbol,\n code,\n formatedAmount,\n country,\n confirmation,\n postBackData,\n currentPage,\n serverErrors,\n paymentError,\n signUpError,\n fundingOptions,\n email,\n billingAddress,\n giftAidItFlag,\n coverFee,\n feeAmount,\n formatedFeeAmount,\n amountBeforeFee,\n anonymousStatus,\n orderStatus;\n\n switch (action.actionType) {\n case DonationConstants.CHANGE_AMOUNT:\n amount = action.item.amount.trim();\n create('amount', amount);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_SYMBOL:\n symbol = action.item.symbol.trim();\n if (symbol !== '') {\n create('symbol', symbol);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_CODE:\n code = action.item.code.trim();\n if (code !== '') {\n create('code', code);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_FORMATED_AMOUNT:\n formatedAmount = action.item.formatedAmount;\n if (formatedAmount !== '') {\n create('formatedAmount', formatedAmount);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_RECURRING_FREQUENCY:\n selectedRecurringFrequency =\n action.item.selectedRecurringFrequency?.trim();\n if (selectedRecurringFrequency !== '') {\n create('selectedRecurringFrequency', selectedRecurringFrequency);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_RECURRING:\n recurring = action.item.recurring.trim();\n if (recurring !== '') {\n create('recurring', recurring);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_ANONYMOUS_STATUS:\n anonymousStatus = action.item.anonymousStatus.trim();\n if (anonymousStatus !== '') {\n create('anonymousStatus', anonymousStatus);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_COVER_FEE:\n coverFee = action.item.coverFee.trim();\n if (coverFee !== '') {\n create('coverFee', coverFee);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_FEE_AMOUNT:\n feeAmount = action.item.feeAmount;\n if (feeAmount !== '') {\n create('feeAmount', feeAmount);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_FORMATED_FEE_AMOUNT:\n formatedFeeAmount = action.item.formatedFeeAmount;\n create('formatedFeeAmount', formatedFeeAmount);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_AMOUNT_BEFORE_FEE:\n amountBeforeFee = action.item.amountBeforeFee;\n create('amountBeforeFee', amountBeforeFee);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.RP_MODAL_CLOSED:\n recurringModalStatus = action.item.recurringModalStatus.trim();\n if (recurringModalStatus !== '') {\n create('recurringModalStatus', recurringModalStatus);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_NOTE:\n note = action.item.note.trim();\n if (note !== '') {\n create('note', note);\n DonationStore.emitChange();\n } else {\n create('note', '');\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_COUNTRY:\n country = action.item.country.trim();\n if (country !== '') {\n create('country', country);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_CONFIRMATION:\n confirmation = action.item.confirmation;\n if (confirmation !== '') {\n create('confirmation', confirmation);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.POST_BACK_DATA:\n postBackData = action.item.postBackData;\n if (postBackData !== '') {\n create('postBackData', postBackData);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_CURRENT_PAGE:\n currentPage = action.item.currentPage;\n if (currentPage !== '') {\n create('currentPage', currentPage);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_SERVER_ERRORS:\n serverErrors = action.item.serverErrors;\n if (serverErrors !== '') {\n create('serverErrors', serverErrors);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.PAYMENT_ERROR:\n paymentError = action.item.paymentError;\n if (paymentError !== '') {\n create('paymentError', paymentError);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_SIGN_UP_ERROR:\n signUpError = action.item.signUpError;\n if (signUpError !== '') {\n create('signUpError', signUpError);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.FUNDING_OPTIONS:\n fundingOptions = action.item.fundingOptions;\n if (fundingOptions !== '') {\n create('fundingOptions', fundingOptions);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.EMAIL:\n email = action.item.email;\n if (email !== '') {\n create('email', email);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.BILLING_ADDRESS:\n billingAddress = action.item.billingAddress;\n if (billingAddress !== '') {\n create('billingAddress', billingAddress);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_DONATION_AMOUNT_TYPE:\n create('donationAmountType', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.GIFT_AID_IT:\n giftAidItFlag = action.item.giftAidItFlag;\n create('giftAidItFlag', giftAidItFlag);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_SHARE_ADDRESS:\n create('shareAddress', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.ADD_CARD_ERROR:\n create('addCardError', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_SELECTED_PROGRAM:\n create('selectedProgram', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_SELECTED_PRESET_BUTTON_ID:\n create('selectedPresetButtonId', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_CARD_SPEC:\n create('cardSpec', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.SAVE_FORM_DATA:\n create('formData', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_THREEDS_DATA:\n create('threeDSContingency', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.SHOW_LANGUAGE_SELECTOR:\n create('languageSelectorState', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_ORDER_STATUS:\n orderStatus = action.item.orderStatus.trim();\n if (orderStatus !== '') {\n create('orderStatus', action.item);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_PPCC_STATUS:\n create('ppccStatus', action.item);\n DonationStore.emitChange();\n break;\n\n default:\n break;\n }\n\n return true; // No errors. Needed by promise in Dispatcher.\n }),\n});\n\nAppDispatcher.register((payload) => {\n return true;\n});\n\nexport default DonationStore;\n","const keyMirror = require('keymirror');\n\nmodule.exports = {\n CHANGE_AMOUNT: 'CHANGE_AMOUNT',\n CHANGE_SYMBOL: 'CHANGE_SYMBOL',\n CHANGE_CODE: 'CHANGE_CODE',\n CHANGE_RECURRING: 'CHANGE_RECURRING',\n CHANGE_RECURRING_FREQUENCY: 'CHANGE_RECURRING_FREQUENCY',\n CHANGE_COVER_FEE: 'CHANGE_COVER_FEE',\n CHANGE_FEE_AMOUNT: 'CHANGE_FEE_AMOUNT',\n CHANGE_FORMATED_FEE_AMOUNT: 'CHANGE_FORMATED_FEE_AMOUNT',\n CHANGE_AMOUNT_BEFORE_FEE: 'CHANGE_AMOUNT_BEFORE_FEE',\n CHANGE_ANONYMOUS_STATUS: 'CHANGE_ANONYMOUS_STATUS',\n RP_MODAL_CLOSED: 'RP_MODAL_CLOSED',\n GIFT_AID_IT: 'GIFT_AID_IT',\n CHANGE_FORMATED_AMOUNT: 'CHANGE_FORMATED_AMOUNT',\n\n CHANGE_NOTE: 'CHANGE_NOTE',\n\n CHANGE_COUNTRY: 'CHANGE_COUNTRY',\n\n CHANGE_CARD_NUMBER: 'CHANGE_CARD_NUMBER',\n CHANGE_EXP_DATE: 'CHANGE_EXP_DATE',\n CHANGE_SECURITY_CODE: 'CHANGE_SECURITY_CODE',\n CHANGE_CARD_SPEC: 'CHANGE_CARD_SPEC',\n\n CHANGE_FIRST_NAME: 'CHANGE_FIRST_NAME',\n CHANGE_LAST_NAME: 'CHANGE_LAST_NAME',\n\n CHANGE_ADDRESS: 'CHANGE_ADDRESS',\n\n CHANGE_PHONE: 'CHANGE_PHONE',\n CHANGE_EMAIL: 'CHANGE_EMAIL',\n\n CHANGE_PASSWORD: 'CHANGE_PASSWORD',\n\n SHOW_LANGUAGE_SELECTOR: 'SHOW_LANGUAGE_SELECTOR',\n\n UPDATE_CONFIRMATION: 'UPDATE_CONFIRMATION',\n\n POST_BACK_DATA: 'POST_BACK_DATA',\n\n UPDATE_CURRENT_PAGE: 'UPDATE_CURRENT_PAGE',\n\n UPDATE_SERVER_ERRORS: 'UPDATE_SERVER_ERRORS',\n\n PAYMENT_ERROR: 'PAYMENT_ERROR',\n\n UPDATE_SIGN_UP_ERROR: 'UPDATE_SIGN_UP_ERROR',\n\n FUNDING_OPTIONS: 'FUNDING_OPTIONS',\n\n EMAIL: 'EMAIL',\n\n BILLING_ADDRESS: 'BILLING_ADDRESS',\n\n UPDATE_DONATION_AMOUNT_TYPE: 'UPDATE_DONATION_AMOUNT_TYPE',\n\n ENABLE_PRESET_AMOUNTS: 'ENABLE_PRESET_AMOUNTS',\n\n CHANGE_SHARE_ADDRESS: 'CHANGE_SHARE_ADDRESS',\n\n ADD_CARD_ERROR: 'ADD_CARD_ERROR',\n\n UPDATE_SELECTED_PROGRAM: 'UPDATE_SELECTED_PROGRAM',\n\n SAVE_FORM_DATA: 'SAVE_FORM_DATA',\n\n UPDATE_THREEDS_DATA: 'UPDATE_THREEDS_DATA',\n\n UPDATE_SELECTED_PRESET_BUTTON_ID: 'UPDATE_SELECTED_PRESET_BUTTON_ID',\n\n UPDATE_ORDER_STATUS: 'UPDATE_ORDER_STATUS',\n\n UPDATE_PPCC_STATUS: 'UPDATE_PPCC_STATUS',\n\n EMAIL_REX:\n /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\\/0-9=?A-Z^_`a-z{|}~]+(\\.[-!#$%&'*+\\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,\n\n DEFAULT_CARD_SPEC: {\n type: 'card',\n fields: {\n ccNumber: {\n required: true,\n pattern: '4[0-9]{12}(?:[0-9]{3})?',\n maxlength: 19,\n },\n expirationDate: {\n required: true,\n pattern: '(0[1-9]|1[012])[/]((20)[0-9]{2}|[0-9]{2})',\n maxlength: 7,\n },\n csc: {\n required: true,\n pattern: '[0-9]*',\n maxlength: 3,\n minlength: 3,\n },\n },\n },\n DONATE_GIFTAID_IT_EXTRA_AMOUNT: 1.25,\n\n PPGF_DISCLAIMER_TOUCHPOINT: 'Donate_PPGF_Disclaimers_Touchpoint',\n GN_CONTENT_TOUCHPOINT: 'Donate_GN_Content_Touchpoint',\n NNA_CONTENT_TOUCHPOINT: 'Donate_NNA',\n\n PRODUCT: {\n BRANDED_CAMPAIGN: 'BRANDED_CAMPAIGN',\n GENEROSITY_NETWORK: 'GENEROSITY_NETWORK',\n GENEROSITY_NETWORK_CHARITIES: 'GENEROSITY_NETWORK_CHARITIES',\n PP_FUNDRAISING: 'PP_FUNDRAISING',\n DONATE_BUTTON_CAMPAIGN: 'DONATE_BUTTON_CAMPAIGN',\n WPS_DONATION: 'WPS_DONATION',\n\n // externalIntegeration\n PAYPAL_FUNDRAISER_LISTED_CAMPAIGN: 'PAYPAL_FUNDRAISER_LISTED_CAMPAIGN',\n PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN: 'PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN',\n },\n\n // Post payment product type identifiers\n PRODUCT_TYPE: {\n DBUTTON: 'DBUTTON',\n DBUTTONC: 'DBUTTONC',\n SEND_MONEY_RECURRING_DONATION: 'SEND_MONEY_RECURRING_DONATION',\n DONATE_BUTTON: 'DONATE_BUTTON',\n },\n\n EVENT_NAME: {\n DW_GIVING_DONATE_SETUP_SCREEN_SHOWN: 'dw_giving_donate_setup_screen_shown',\n DW_GIVING_DONATE_SETUP_COMMENT_PRESSED:\n 'dw_giving_donate_setup_comment_pressed',\n DW_GIVING_DONATE_SETUP_NEXT_PRESSED: 'dw_giving_donate_setup_next_pressed',\n DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED:\n 'dw_giving_donate_setup_card_pressed',\n DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED:\n 'dw_giving_donate_setup_tooltip_pressed',\n DW_GIVING_DONATE_SETUP_TERMS_PRESSED:\n 'dw_giving_donate_setup_terms_pressed',\n DW_GIVING_DONATE_SETUP_DISMISS_PRESSED:\n 'dw_giving_donate_setup_dismiss_pressed',\n DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED:\n 'dw_giving_donate_setup_share_contact_check_pressed',\n DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED:\n 'dw_giving_donate_setup_share_contact_uncheck_pressed',\n DW_GIVING_GUEST_FORM_SCREEN_SHOWN: 'dw_giving_guest_form_screen_shown',\n DW_GIVING_GUEST_FORM_DONATE_PRESSED: 'dw_giving_guest_form_donate_pressed',\n DW_GIVING_GUEST_FORM_DISMISS_PRESSED:\n 'dw_giving_guest_form_dismiss_pressed',\n DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED:\n 'dw_giving_member_review_dismiss_pressed',\n DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED:\n 'dw_giving_payment_success_dismiss_pressed',\n DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED:\n 'dw_giving_payment_success_done_pressed',\n DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN:\n 'dw_giving_payment_success_screen_shown',\n DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN:\n 'dw_giving_payment_pending_screen_shown',\n DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED:\n 'dw_giving_payment_success_share_pressed',\n DW_GIVING_SHARE_SCREEN_SHOWN: 'dw_giving_share_screen_shown',\n DW_GIVING_SHARE_CHANNEL_PRESSED: 'dw_giving_share_channel_pressed',\n DW_GIVING_SHARE_DISMISS_PRESSED: 'dw_giving_share_dismiss_pressed',\n DW_GIVING_REDIRCT_SCREEN_SHOWN: 'dw_giving_redirct_screen_shown',\n DW_GIVING_REDIRCT_OPEN_PRESSED: 'dw_giving_redirct_open_pressed',\n DW_GIVING_REDIRCT_DISMISS_PRESSED: 'dw_giving_redirct_dismiss_pressed',\n DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED:\n 'dw_giving_failed_customer_interaction_occurred',\n DONATION_PAYMENT_VIEW_LANDING_DONATE_PRESSED:\n 'donate_donor_view_landing_donate_pressed',\n DONATION_PAYMENT_VIEW_LANDING_PAYPAL_PRESSED:\n 'donate_donor_view_embed_page_donate_with_paypal_pressed',\n DONATION_PAYMENT_VIEW_LANDING_CARD_PRESSED:\n 'donate_donor_view_embed_page_donate_with_card_pressed',\n DONATION_PAYMENT_VIEW_LANDING_FREQUENCY_PRESSED:\n 'donate_donor_view_embed_page_frequency_pressed',\n DONATION_PAYMENT_GUEST_FORM_DONATE_PRESSED:\n 'donate_donor_view_guest_form_donate_pressed',\n DONATION_ANONYMOUS_CHECKBOX_CHECK_PRESSED:\n 'donate_donor_view_share_contact_check_pressed',\n DONATION_ANONYMOUS_CHECKBOX_UNCHECK_PRESSED:\n 'donate_donor_view_share_contact_uncheck_pressed',\n DONATION_CONFIRMATION_PAGE_IMP:\n 'donate_donor_view_payment_success_screen_shown',\n DONATE_THREE_DS_DDC_START: 'donate_three_ds_ddc_start',\n DONATE_THREE_DS_DDC_COMPLETE: 'donate_three_ds_ddc_complete',\n DONATE_THREE_DS_DDC_FAILURE: 'donate_three_ds_ddc_failure',\n DONATE_THREE_DS_LOOKUP_START: 'donate_three_ds_lookup_start',\n DONATE_THREE_DS_LOOKUP_COMPLETE: 'donate_three_ds_lookup_complete',\n DONATE_THREE_DS_IFRAME_SHOWN: 'donate_three_ds_iframe_shown',\n DONATE_THREE_DS_PROOCEED_TO_PAYMENT: 'donate_three_ds_proceed_to_payment',\n DONATE_LANDING_SCREEN_SHOWN: 'donate_donor_view_landing_screen_shown',\n DONATE_REVIEW_SCREEN_SHOWN: 'donate_donor_view_payment_review_screen_shown',\n DONATE_GUEST_FORM_SCREEN_SHOWN: 'donate_donor_view_guest_form_screen_shown',\n DONATE_SUCCESS_SHARE_MESSAGE:\n 'donate_donor_view_payment_success_share_pressed',\n DONATE_SUCCESS_MERCHANT_SITE_PRESSED:\n 'donate_donor_view_payment_success_merchant_site_pressed',\n DONATE_LANDING_MERCHANT_SITE_PRESSED:\n 'donate_donor_view_landing_merchant_site_pressed',\n DONATE_GUEST_REVIEW_PROCESS_DONATE_CLICK:\n 'donate_donor_view_payment_review_donate_pressed',\n DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN:\n 'donate_donor_view_generic_social_share_screen_shown',\n DONATE_MATCH_SOCIAL_SHARE_SCREEN_SHOWN:\n 'donate_donor_view_match_social_share_screen_shown',\n DONATE_LANDING_UPDATES_MODULE_SHOWN:\n 'donate_donor_view_landing_updates_module_shown',\n DONATE_LANDING_UPDATES_READ_MORE_PRESSED:\n 'donate_donor_view_landing_updates_read_more_pressed',\n DONATE_LANDING_UPDATES_SHOW_MORE_PRESSED:\n 'donate_donor_view_landing_updates_show_more_pressed',\n DONATE_LANDING_UPDATES_LIKE_PRESSED:\n 'donate_donor_view_landing_updates_like_pressed_start',\n DONATE_LANDING_UPDATES_LIKE_PRESSED_COMPLETED:\n 'donate_donor_view_landing_updates_like_pressed_completed',\n DONATE_LANDING_UPDATES_LIST_SHOWN:\n 'donate_donor_view_updates_list_screen_shown',\n DONATE_LANDING_UPDATES_LIST_LIKE_PRESSED:\n 'donate_donor_view_updates_list_like_pressed',\n DONATE_LANDING_UPDATES_LIST_SELECTION_PRESSED:\n 'donate_donor_view_updates_list_selection_pressed',\n DONATE_LANDING_UPDATES_LIST_DISMISS_PRESSED:\n 'donate_donor_view_updates_list_dismiss_pressed',\n DONATE_LANDING_UPDATES_DETAIL_VIEW_SHOWN:\n 'donate_donor_view_updates_detail_screen_shown',\n DONATE_LANDING_UPDATES_DETAIL_LIKE_PRESSED:\n 'donate_donor_view_updates_detail_like_pressed',\n DONATE_LANDING_UPDATES_DETAIL_DISMISS_PRESSED:\n 'donate_donor_view_updates_detail_dismiss_pressed',\n DONATE_LANDING_UPDATES_LOGIN_VIEW_SHOWN:\n 'donate_donor_view_updates_login_screen_shown',\n DONATE_LANDING_UPDATES_LOGIN_BUTTON_PRESSED:\n 'donate_donor_view_updates_login_log_in_pressed',\n DONATE_LANDING_UPDATES_LOGIN_SIGNUP_PRESSED:\n 'donate_donor_view_updates_login_sign_up_pressed',\n DONATE_LANDING_UPDATES_LOGIN_DISMISS_PRESSED:\n 'donate_donor_view_updates_login_dismiss_pressed',\n DONATE_LANDING_UPDATES_LOADING_ERROR_SHOWN:\n 'donate_donor_view_updates_loading_error_shown',\n DONATE_LANDING_UPDATES_LOADING_ERROR_RETRY_PRESSED:\n 'donate_donor_view_updates_loading_error_retry_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_SET_FAV_CHARITY_MODULE_PRESSED:\n 'donate_donor_view_post_donation_set_fav_charity_module_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODULE_PRESSED:\n 'donate_donor_view_post_donation_create_fundraiser_module_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_INSIGHTS_MODULE_PRESSED:\n 'donate_donor_view_post_donation_insights_module_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_SET_FAVORITE_CHARITY_ERROR:\n 'donate_donor_view_post_donation_set_favorite_charity_error',\n DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_SHOWN:\n 'donate_donor_view_post_donation_create_fundraiser_modal_shown',\n DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_PRESSED:\n 'donate_donor_view_post_donation_create_fundraiser_modal_pressed',\n DONATE_DONOR_VIEW_REPORT_MERCHANT_PRESSED:\n 'donate_donor_view_report_merchant_pressed',\n },\n\n SCREEN_NAME: {\n DW_GIVING_DONATE_SETUP_SCREEN: 'dw_giving_donate_setup_screen',\n DW_GIVING_DONATE_GUEST_FORM_SCREEN: 'dw_giving_donate_guest_form_screen',\n },\n\n FPTI_PRODUCT: 'dw_giving',\n KEY_DOWN: {\n TAB: 9,\n LEFT_ARROW: 37,\n UP_ARROW: 38,\n RIGHT_ARROW: 39,\n DOWN_ARROW: 40,\n SPACE: 32,\n ENTER: 13,\n },\n\n AU_CRS: {\n STATUS: {\n ABORTED: 'ABORTED',\n FAILURE: 'FAILURE',\n SUCCESS: 'SUCCESS',\n },\n ABORTED_STATUS_CODE: ['DOC_UPLOAD_PENDING', 'INFO_NOT_COLLECTED'],\n FAILURE_STATUS_CODE: [\n 'INVALID_REQUEST',\n 'NOT_APPLICABLE',\n 'SERVICE_UNAVAILABLE',\n 'THIRD_PARTY_VERIFICATION_FAIL',\n 'UNAUTHORIZED',\n ],\n SUCCESS_STATUS_CODE: ['COMPLETED', 'VERIFIED'],\n SINGLE_TAX_RESIDENCY: 'tax_inside_legal_country',\n MULTI_TAX_RESIDENCY: 'tax_outside_legal_country',\n },\n ALLOWED_IMAGE_TYPES: [\n 'image/gif',\n 'image/jpg',\n 'image/jpeg',\n 'image/png',\n 'image/bmp',\n ],\n MAX_IMAGE_SIZE: 12582912,\n KILOBYTE: 1024,\n MEGABYTE: 1048576,\n BTN_IMAGE_MAX_FILE_SIZE: 2000000, // 2MB;\n ALLOWED_FILE_EXTENSIONS: ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'tiff', 'tif'],\n IMG_SCALE_SIZE: {\n WIDTH_STEP_1: 300,\n WIDTH_BANNER: 750,\n WIDTH_LOGO: 400,\n WIDTH_CAMPAIGN: 3000,\n },\n INSTRUMENT_TYPES: {\n HOLDING: 'HOLDING',\n PAYMENT_CARD: 'PAYMENT_CARD',\n PAYMENT_TOKEN: 'PAYMENT_TOKEN',\n BANK_ACCOUNT: 'BANK_ACCOUNT',\n CREDIT: 'CREDIT',\n UNKNOWN: 'UNKNOWN',\n },\n PAYMENT_CARDS: keyMirror({\n VISA: null,\n MASTERCARD: null,\n MASTER_CARD: null,\n MAESTRO: null,\n AMEX: null,\n DISCOVER: null,\n JCB: null,\n CHINA_UNION_PAY: null,\n }),\n CDN_HOST_NAME: 'https://www.paypalobjects.com',\n MERCHANT_PPCC_CONFIRMED_STATUS: 'CONFIRMED',\n FULL: 'CTRL',\n VARIANT_VALUEPROP_1: 'TRMT_1',\n VARIANT_VALUEPROP_2: 'TRMT_2',\n VARIANT_VALUEPROP_3: 'TRMT_3',\n APP_ID: '321983581337375',\n ORGANIZER_UPDATES: {\n INITIAL_UPDATES_COUNT: 3, // initial number of updates to show on overview page\n MAX_UPDATES_PER_PAGE: 30, // max updates returned by FRS API per page\n MAX_CHARACTERS_SUBJECT: 50, // max number of characters in the subject of an update\n MAX_ORGANIZER_UPDATES: 200, // max number of updates allowed for an account\n ACTIONS: {\n SHOW_UPDATE_DETAIL_VIEW: 'showUpdateDetailView',\n SHOW_UPDATE_LIST: 'showUpdatesList',\n ORGANIZER_UPDATE_SINGLE_UPDATE_ERROR: 'showSingleUpdateError',\n },\n },\n INTERNAL_ERROR: 'INTERNAL_ERROR',\n DNW_UNHANDLED_ERROR: 'DNW_UNHANDLED_ERROR',\n POST_DONATION_MODULES: {\n SET_FAVORITE_CHARITY: 'SET_FAVORITE_CHARITY',\n CREATE_FUNDRAISER: 'CREATE_FUNDRAISER',\n GIVING_SUMMARY: 'GIVING_SUMMARY',\n SHARE: 'SHARE',\n },\n};\n","import { fetch as fetchPolyfill } from 'whatwg-fetch';\nimport 'consumerweb-shim';\n\nexport const polyfillFetch = (url, options) => {\n return fetchPolyfill(url, options);\n};\n","import dompurify from 'dompurify';\nimport { polyfillFetch } from './polyfillFetch';\n\n/**\n * This will take a node and select the given range of text from start to end in a\n * way that works for iOS\n * @param {HTMLInputElement} node - the input to select the text in\n * @param {Number} start - the index to start the selection\n * @param {Number} end - the index to end the selection\n */\nexport function selectRangeOfText(node, start, end) {\n // select all the text, but do it on the next tick because iOS has issues otherwise\n setTimeout(() => {\n // we're using setSelectionRange rather than select because select doesn't work with iOS\n node.setSelectionRange(start, end);\n });\n}\n\n/**\n * This moves the cursor position to the end of the text in the input node in a way\n * that works on iOS\n * @param {HTMLInputElement} node - the input to set the cursor position in\n */\nexport function moveCursorToTheEnd(node) {\n const { length } = node.value;\n node.setSelectionRange(length, length);\n}\n\nexport function sanitizeInPlace(node) {\n if (!node) return null;\n return dompurify.sanitize(node, { IN_PLACE: true });\n}\n\nexport function sanitizeURL(url = '') {\n const dirtyNode = document.createElement('a');\n dirtyNode.setAttribute('href', url);\n const clean = sanitizeInPlace(dirtyNode);\n return clean?.getAttribute('href');\n}\n\n/**\n * Sanitizes HTML\n */\nexport function sanitizeOrgName(input) {\n try {\n return dompurify\n .sanitize(input)\n .replace(//g, '>');\n } catch (e) {\n return '';\n }\n}\n\n/**\n * Sanitizes HTML\n */\nexport function sanitize(input) {\n try {\n return escapeHtml(dompurify.sanitize(input));\n } catch (e) {\n return '';\n }\n}\n\nfunction escapeHtml(unsafe) {\n return unsafe\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * This function shows the hidden element\n * @param {string} selector - element selector\n * @param {string} [display] - display property value\n */\nexport function show(selector, display = 'block') {\n const elementsToShow = document.querySelectorAll(selector);\n for (let i = 0; i < elementsToShow.length; i++) {\n elementsToShow[i].style.display = display;\n }\n}\n\n/**\n * This function hides the selected element\n * @param {string} selector - element selector\n */\nexport function hide(selector) {\n const elementsToHide = document.querySelectorAll(selector);\n for (let i = 0; i < elementsToHide.length; i++) {\n elementsToHide[i].style.display = 'none';\n }\n}\n\n/**\n * This function sets the value of the value attribute for all matched elements\n * @param {string} selector - elements selector\n * @param {string} value - value to set\n */\nexport function setValue(selector, value) {\n const elementsSelected = document.querySelectorAll(selector);\n for (let i = 0; i < elementsSelected.length; i++) {\n elementsSelected[i].value = value;\n }\n}\n\n/**\n * This function creates a serialized representation of an array or an object for use in a URL query string or Ajax request\n * @param {Array|Object} arrORObj - array or Object\n */\nexport var objectOrArrayToQueryString = function (arrOrObj) {\n var prefix, s, add, name, r20, output;\n s = [];\n r20 = /%20/g;\n add = function (key, value) {\n // If value is a function, invoke it and return its value\n const val = value === null ? '' : value;\n value = typeof value === 'function' ? value() : val;\n s[s.length] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n };\n if (arrOrObj instanceof Array) {\n for (name in arrOrObj) {\n add(name, arrOrObj[name]);\n }\n } else {\n for (prefix in arrOrObj) {\n buildParams(prefix, arrOrObj[prefix], add);\n }\n }\n output = s.join('&').replace(r20, '+');\n return output;\n};\n\nfunction buildParams(prefix, obj, add) {\n var name, i, l, rbracket;\n rbracket = /\\[\\]$/;\n if (obj instanceof Array) {\n for (i = 0, l = obj.length; i < l; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(\n prefix + '[' + (typeof obj[i] === 'object' ? i : '') + ']',\n obj[i],\n add\n );\n }\n }\n } else if (typeof obj === 'object') {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + '[' + name + ']', obj[name], add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n}\n\n/**\n * Gets the offset top value relative to the document of the first DOM element that match the selector received as argument\n * @param {String} selector\n */\nexport function getOffsetTop(selector) {\n try {\n const element = document.querySelector(selector);\n return element.getBoundingClientRect().top + window.scrollY;\n } catch (e) {\n return 0;\n }\n}\n\n/**\n * This function will return the children of the selected element\n * @param {string} selector - element selector\n */\nexport function getChildren(selector) {\n const elementsSelected = document.querySelector(selector);\n return elementsSelected.children;\n}\n\n/**\n * This function will add the class provided to the element or elements\n * @param {string} selector - elements selector\n * @param {string[]} classNames - array of class name(s) to add\n */\nexport function addClass(selector, classNames) {\n const elementsSelected = document.querySelectorAll(selector);\n for (let i = 0; i < elementsSelected.length; i++) {\n elementsSelected[i].classList.add(...classNames);\n }\n}\n\n/**\n * This function will remove the class provided from the element or elements\n * @param {string} selector - elements selector\n * @param {string[]} classNames - array of class name(s) to remove\n */\nexport function removeClass(selector, classNames) {\n const elementsSelected = document.querySelectorAll(selector);\n for (let i = 0; i < elementsSelected.length; i++) {\n elementsSelected[i].classList.remove(...classNames);\n }\n}\n\n/**\n * This function will call fetch with additional headers and also uses a polyfill for IE\n * @param {string} url - url to access\n * @param {object} options - optional parameters\n */\nexport function fetcher(url, options = {}) {\n const csrf = document.querySelector('body').dataset.csrf;\n // This event is fired every time that a fetch is made and helps the user to extend session\n fireEvent('fetchCall');\n options.headers = {\n ...options.headers,\n 'X-CSRF-Token': csrf,\n 'Content-Type': 'application/json; charset=UTF-8',\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n if (window.fetch) {\n if (window.location.href.indexOf('donate/buttons') > -1) {\n return fetch(url, options).then((response) => handleErrors(response));\n }\n return fetch(url, options);\n }\n return polyfillFetch(url, options);\n}\n/**\n * This function will look at the fetch response and determine if there are any network\n * erros and how to respond\n */\n\nfunction handleErrors(response) {\n if (response.status !== 401) {\n return response;\n }\n handleFetch401Error();\n}\n\nfunction handleFetch401Error() {\n const currentTargetPath = window.location.pathname;\n const returnPath = currentTargetPath.replace(/(\\/*donate)/, ''); // some browsers don't put a leading '/'\n const renderURL = `/donate/buttons/login?returnUri=${returnPath}`;\n // Need to do in this way because window.location.href doesn't update referer in http req header\n window.history.pushState(null, null, renderURL);\n location.reload();\n}\n\n/**\n * Utility function for firing an event\n * @param {*} eventName\n */\nfunction fireEvent(eventName) {\n const event = document.createEvent('Event');\n event.initEvent(eventName, true, true);\n document.dispatchEvent(event);\n}\n\n/**\n * Executes the callback received just when all the DOM elements are safe to be manipulated. Similar to jQuery $.ready() function.\n * @param {function} callback\n */\nexport function documentReady(callback) {\n // in case the document is already rendered\n if (document.readyState !== 'loading') {\n return callback();\n }\n // modern browsers\n else if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', callback);\n }\n // IE <= 8\n else {\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'complete') {\n return callback();\n }\n });\n }\n}\n\nfunction isElement(obj) {\n try {\n return obj instanceof HTMLElement;\n } catch (e) {\n return (\n typeof obj === 'object' &&\n obj.nodeType === 1 &&\n typeof obj.style === 'object' &&\n typeof obj.ownerDocument === 'object'\n );\n }\n}\n\nfunction getElement(selectorOrElement) {\n if (isElement(selectorOrElement)) {\n return selectorOrElement;\n } else if (typeof selectorOrElement === 'string') {\n return document.querySelector(selectorOrElement);\n }\n return null;\n}\n\n/**\n * Scrolls element into view\n * @param {String | HTMLElement} selectorOrElement\n */\nexport function scrollElementIntoView(selectorOrElement) {\n const element = getElement(selectorOrElement);\n if (element) {\n element.scrollIntoView({\n behavior: 'smooth',\n });\n }\n}\n\nconst _noOpFunction = () => {};\n\nconst body = document.querySelector('body');\nconst safeScrollElement = body.scrollTo\n ? (element, options) => {\n element.scrollTo(options);\n }\n : _noOpFunction;\n\nconst safeScrollWindow = window.scrollTo\n ? (options) => {\n window.scrollTo(options);\n }\n : _noOpFunction;\n\n/**\n * Scrolls element or window to specified y location\n * @param {String | HTMLElement} selectorOrElement\n * @param { Number } scrollY\n */\nexport function scrollElementTo(selectorOrElement, scrollY = 0) {\n const element = getElement(selectorOrElement);\n if (element && element.scrollTop !== scrollY) {\n safeScrollElement(element, {\n top: scrollY,\n behavior: 'smooth',\n });\n } else if (window.pageYOffset !== scrollY) {\n safeScrollWindow({\n top: scrollY,\n behavior: 'smooth',\n });\n }\n}\n\n/**\n * Get {x, y} coordinates for HTML element\n * @param {String | HTMLElement} selectorOrElement\n */\nexport function getPosition(selectorOrElement) {\n let element = getElement(selectorOrElement);\n\n let xPosition = 0;\n let yPosition = 0;\n\n while (element) {\n xPosition += element.offsetLeft - element.scrollLeft + element.clientLeft;\n yPosition += element.offsetTop - element.scrollTop + element.clientTop;\n element = element.offsetParent;\n }\n\n return { x: xPosition, y: yPosition };\n}\n\n/**\n * Scrolls to specified y location\n * @param {String | HTMLElement} selectorOrElement\n * @param { Number } scrollY\n */\nexport function scrollTo(selectorOrElement, scrollY) {\n const element = getElement(selectorOrElement);\n if (element && typeof scrollY === 'number' && !Number.isNaN(scroll)) {\n safeScrollElement(element, {\n top: scrollY,\n behavior: 'smooth',\n });\n }\n}\n","import {\n formatCurrency,\n formatDate,\n formatNumber,\n formatPhoneNumber,\n getDateMaskFormat,\n getRelativeTime,\n wrNormalizeNumber,\n parsePhoneNumber,\n} from './worldReadyUtils';\n\n/**\n * Grabs the griffin metadata\n */\nexport function __getInitialData() {\n const initialDataNode = document.getElementById('initialData');\n const initialDataJSON =\n (initialDataNode && initialDataNode.innerHTML) || '{}';\n try {\n // parse the JSON strings to JavaScript objects\n return JSON.parse(initialDataJSON);\n } catch (e) {\n console.warn('ERROR:donate:initialData', e);\n return {};\n }\n}\n\n/**\n * getCurrencyParts\n */\nexport function getCurrencyParts() {\n return __getInitialData().currencyParts;\n}\n\n/**\n * getInitialData\n */\nexport function getInitialData() {\n return __getInitialData();\n}\n\n/**\n * Formats getAmountPlaceHolder\n * {string} placeholder\n */\nexport function getAmountPlaceHolder() {\n const allParts = __getInitialData().currencyParts || [];\n const amount = allParts.find((item) => item.$ === 'amount');\n return (amount && amount._) || '';\n}\n\nexport function formatNormalizedAmount(amount) {\n if (\n isNaN(amount.value) ||\n !amount.currency ||\n (!amount.value && amount.value !== 0)\n ) {\n return '';\n }\n return formatCurrency(Number(amount.value), { currency: amount.currency });\n}\n\n/**\n * formatAmount\n * {amount} { currency, value }\n */\nexport function formatAmount(amount) {\n if (!amount.currency || (!amount.value && amount.value !== 0)) {\n return '';\n }\n const amountValue =\n typeof amount.value === 'number'\n ? amount.value\n : wrNormalizeNumber(amount.value);\n return formatCurrency(amountValue, {\n currency: amount.currency,\n style: amount.style || 'symbol',\n });\n}\n\n/**\n * Uses Griffin to format a voucher offer detail percentage\n * @param {string} value percentage value\n */\nexport function formatPercentage(value) {\n return formatNumber(Number(value), { style: 'percent' });\n}\n\nexport function formatCurrencyNoDecimals(value) {\n if (!value) {\n return '';\n }\n\n return formatNumber(Number(value), { maximumFractionDigits: 0 });\n}\n\nexport function formatCurrencyAsString(params) {\n if (!params.value || !params.currency) {\n return '';\n }\n\n // for campaigns, params.value is comming as a number, so we need to convert to string.\n const options = {\n currency: params.currency,\n maximumFractionDigits: params.maximumFractionDigits || 2,\n style: 'international',\n };\n const numericAmount = Number(params.value);\n return formatCurrency(numericAmount, options);\n}\n\n/**\n * normalizer number\n * {number} {amount}\n * https://github.paypal.com/Globalization-R/griffin-paypal/blob/develop/lib/client/README.md#normalizenumber\n */\nexport function normalizeNumber(amount) {\n if (typeof amount === 'number') {\n return amount;\n }\n if (!amount && amount !== 0) {\n return '';\n }\n return wrNormalizeNumber(amount);\n}\n\n/**\n * formatInputAmount\n * {string} amount\n */\nexport function formatInputAmount(amount) {\n if (!amount) {\n return '';\n }\n return wrNormalizeNumber(amount);\n}\n\n/**\n * Uses griffin to format phone number\n *\n * @param {String} countryCode country phone code. Eg: '1', '41', '91'\n * @param {String} nationalNumber Phone number Eg: '012312', '418419'\n * @return {String} Formatted phone number Eg: '(418) 400 1234'\n */\nexport function formatPhone(phoneRegion, countryCode, nationalNumber) {\n if (!nationalNumber || !countryCode || !phoneRegion) {\n return '';\n }\n const options = { phoneRegion };\n const phoneObject = { countryCode, nationalNumber };\n\n return formatPhoneNumber(options, phoneObject);\n}\n\nexport function validatePhone(phoneRegion, nationalNumber) {\n try {\n const normalizedPhone = parsePhoneNumber({ phoneRegion }, nationalNumber);\n\n if (!normalizedPhone || normalizedPhone.errors) {\n return false;\n }\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Removes country code from phoneNumber\n * Eg:\n * Input: \"+49 6645878508\"\n * Output: \"6645878508\"\n */\nexport function getPhoneNumberWithoutCountryCode(phoneNumber) {\n if (!phoneNumber || typeof phoneNumber !== 'string') {\n return phoneNumber;\n }\n\n const firstCharacter = phoneNumber[0];\n if (firstCharacter !== '+') {\n // No country code\n return phoneNumber;\n }\n\n const firstSpaceIndex = phoneNumber.indexOf(' ');\n // No Space !! Malformed?\n if (firstSpaceIndex === -1) {\n return phoneNumber;\n }\n\n // First space is last character?\n if (phoneNumber.length < firstSpaceIndex + 1) {\n return phoneNumber;\n }\n\n return phoneNumber.substring(firstSpaceIndex + 1);\n}\n\nexport function getDateFormat() {\n return getDateMaskFormat({ style: 'date-short' });\n}\n\nexport function formatCurrencyWithSymbol(params) {\n return formatCurrency(params.value, { currency: params.currency });\n}\n\nexport function formatRelativeDate(date) {\n const utcDate = new Date(\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n )\n );\n return getRelativeTime(utcDate, {\n unit: 'day',\n timeZone: 'Etc/UTC',\n });\n}\n\nexport function getRemainingDays(date) {\n const now = new Date();\n const utcDate = new Date(\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n )\n );\n\n return Math.ceil((now - utcDate) / (1000 * 3600 * 24));\n}\n\nexport function roundUpAndFormatCurrency(amount, currency) {\n const roundedUpValue = Math.ceil(amount);\n return formatCurrency(roundedUpValue, { currency, maximumFractionDigits: 0 });\n}\n\n// Format date object to short format string, e.g.: 6/4/22\nexport function parseDateOnly(date) {\n date.setHours(0, 0, 0, 0);\n return formatDate(date, { timeZone: 'Etc/UTC' });\n}\n","import templateData from './getTemplateData';\n\nexport const appendCdnHostName = (url) => {\n return `${templateData.cdnHostName}${url}`;\n};\n","import * as AppActions from '../actions/AppActions';\nimport '../stores/AppStore';\nimport { formatAmount } from './formator';\nimport _map from 'lodash/map';\nimport _get from 'lodash/get';\nimport _set from 'lodash/set';\nimport _isEmpty from 'lodash/isEmpty';\nimport { init } from 'pp-react-l10n';\nimport { getPersonalizedMessagesAsContentLoaderStandard } from './personalizedMessages';\nimport { loadPPCCStatus } from './ppccUtils';\nimport { isAtLandingPage } from '../components/coverFee/feeUtils';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from './worldReadyUtils';\n\nconst rawTemplateData =\n document.getElementById('templateData') &&\n document.getElementById('templateData').innerHTML;\nconst templateData = JSON.parse(rawTemplateData ? rawTemplateData : '{}');\n\nif (!_isEmpty(templateData)) {\n if (!_isEmpty(templateData.giftAid)) {\n _set(templateData, 'giftAid', JSON.parse(templateData.giftAid));\n }\n if (!_isEmpty(templateData.webscrData)) {\n _set(templateData, 'webscrData', JSON.parse(templateData.webscrData));\n }\n if (!_isEmpty(templateData.giftAidAddress)) {\n _set(\n templateData,\n 'giftAidAddress',\n JSON.parse(templateData.giftAidAddress)\n );\n }\n}\n\nconst localsMessagesNode =\n document.getElementById('localeMessages') &&\n document.getElementById('localeMessages').innerHTML;\nconst locals = (localsMessagesNode && JSON.parse(localsMessagesNode)) || {};\nconst personalized = getPersonalizedMessagesAsContentLoaderStandard();\nconst content = {\n locals,\n personalized,\n};\ninit({ content });\n\n/**\n * Normalize charity name and donation ID strings from template data.\n */\nif (templateData.charityName) {\n const charityName = templateData.charityName;\n try {\n templateData.charityName = decodeURIComponent(charityName);\n } catch (er) {\n templateData.charityName = charityName;\n }\n}\nif (templateData.donationId) {\n const donationId = templateData.donationId;\n try {\n templateData.donationId = decodeURIComponent(donationId);\n } catch (er) {\n templateData.donationId = donationId;\n }\n}\n\nexport const shouldSelectPresetAmount = (amount) => {\n if (!amount) {\n return false;\n }\n if (templateData.presetAmounts?.length === 3) {\n const presetAmounts = templateData.presetAmounts || [];\n return presetAmounts.map(Number).includes(Number(amount));\n }\n};\n\n/**\n * Attempting update default value for amount in flux store\n */\nconst donorCoversFee = templateData.feePayer === 'consumer';\nconst donationAmount =\n donorCoversFee && isAtLandingPage()\n ? templateData.rawAmount.toString()\n : templateData.donationAmount.toString();\nAppActions.changeAmount({\n amount: donationAmount,\n});\n\nif (donorCoversFee) {\n AppActions.changeCoverFee({ coverFee: 'checked' });\n AppActions.changeFeeAmount({ feeAmount: templateData.feeAmount });\n AppActions.changeFormatedAmount({\n formatedFeeAmount: formatAmount({\n currency: templateData.feeCurr,\n value: templateData.rawAmount,\n }),\n });\n}\n\nif (templateData.anonymousEnabled) {\n const anonymousStatus = templateData.anonymousStatus\n ? 'checked'\n : 'unchecked';\n AppActions.changeAnonymousStatus({ anonymousStatus });\n}\n\n/**\n * Attempting update default value for currency symbol in flux store\n */\nAppActions.changeSymbol({\n symbol: templateData.donationSymbol,\n});\n\n/**\n * Attempting update default value for currency code in flux store\n */\nAppActions.changeCode({\n code: templateData.donationCode,\n});\n\n/**\n * Attempting update default value for note in flux store\n */\nAppActions.changeNote({\n note: templateData.donationNote,\n});\n\n/**\n * Attempting update default value for recurring in flux store\n */\nAppActions.changeRecurring({\n recurring:\n templateData.recurringStatus === 'checked' ||\n templateData.recurringEnabled === 'checked'\n ? 'checked'\n : 'unchecked',\n});\n\nif (templateData.selectedRecurringFrequency) {\n AppActions.changeSelectedRecurringFrequency({\n selectedRecurringFrequency: templateData.selectedRecurringFrequency,\n });\n}\n\nAppActions.updateSelectedPresetButtonId(templateData.selectedPresetButtonId);\n\ntemplateData.enablePresetAmounts = shouldEnablePresetAmounts();\n\nif (_isEmpty(templateData.presetAmounts)) {\n templateData.presetAmounts = _get(\n templateData,\n 'donateContext.amount_options'\n );\n}\n\nif (\n templateData.donationAmountType === 'preset' &&\n templateData.presetAmounts?.length === 3\n) {\n if (!_isEmpty(donationAmount) && !shouldSelectPresetAmount(donationAmount)) {\n AppActions.updateDonationAmountType('userinput');\n } else {\n AppActions.updateDonationAmountType('preset');\n }\n}\n\nexport const isOldButtonFactory = () => {\n return _isEmpty(templateData.donateContext);\n};\n\nexport const isNewButtonFactory = () => {\n return !isOldButtonFactory();\n};\n\n// Prepopulate donationId in the dropdown\nif (isNewButtonFactory() && templateData.donationId) {\n AppActions.updateSelectedProgram(templateData.donationId);\n}\n\n/**\n * Attempting to parse all locals messages from DOM\n */\nfunction parseMessages(templateName) {\n if (!templateName) {\n console.warn('Missing template name');\n }\n try {\n const localsAllMessages = JSON.parse(\n document.getElementById('localeMessages').innerHTML || {}\n );\n const path = templateName.replaceAll('/', '.');\n return _get(localsAllMessages, path) || localsAllMessages;\n } catch (e) {\n console.warn('Please attach locales to DOM');\n return {};\n }\n}\n\n/**\n * Attempting to get all data from template\n */\nexport default templateData;\n\n/**\n * Attempting to grab all locals messages\n */\nexport function localsMessages(templateName) {\n return parseMessages(templateName);\n}\n\n/**\n * Attempting to grab all locals messages for guest billing page\n */\n\nexport function guestLocalsMessages() {\n const worldReady = getWorldReady();\n const guestMessages = localsMessages('guest/guestForm') || {};\n const guestsignup = guestMessages.guestsignup || {};\n\n let nationalIds = [];\n\n try {\n nationalIds = _map(guestsignup.nationalIds, (label, value) => {\n return {\n label,\n value,\n };\n });\n } catch (e) {\n /* nothing required as nationalIds are only applicable for limited countries */\n }\n\n const createAccountPreProps = {\n mainTitle: '', // guestsignup.mainTitle\n mainBlurb: '', // guestsignup.mainBlurb\n itsFreeLine: '', // guestsignup.itsFreeLine\n mainTitle2: 'guestsignup.mainTitle2',\n createAccountCheckboxContent: 'guestsignup.createAccountCheckboxContent',\n createAccountHelp1: 'guestsignup.expcreateAccountHelpContent',\n label1: 'guestsignup.explabel1',\n label2: 'guestsignup.explabel2',\n legalBlurbHTML: 'guestsignup.legalBlurbHTML',\n legalBlurbWithFeeInformationDoc:\n 'guestsignup.legalBlurbWithFeeInformationDoc',\n incentiveTitle: 'guestsignup.incentive.title',\n incentiveCreateAccountCheckboxContent:\n 'guestsignup.incentive.createAccountCheckboxContent',\n incentiveTerms: 'guestsignup.incentive.terms',\n labeldob: 'guestsignup.labeldob',\n labelnationality: 'guestsignup.labelnationality',\n dobPattern: 'guestsignup.dobPattern',\n dobHelp: 'guestsignup.dobPattern',\n labelocc: 'guestsignup.labelocc',\n legalOnlyHTML: 'guestsignup.legalOnlyHTML',\n consentBlurbHTML: 'guestsignup.consentBlurbHTML',\n labelNationalIdType: 'guestsignup.labelNationalIdType',\n labelNationalIdNumber: 'guestsignup.labelNationalIdNumber',\n nationalIds,\n defaultIdType: 'NATIONAL_ID', // Setting up deafult ID type\n passwordWarnings: {\n _MISMATCH: 'passwordWarnings.MISMATCH',\n _IS_NULL: 'passwordWarnings.IS_NULL',\n _TOO_SHORT: 'passwordWarnings.TOO_SHORT',\n _TOO_LONG: 'passwordWarnings.TOO_LONG',\n _CONTAINS_REPEATED_CHARACTERS:\n 'passwordWarnings.CONTAINS_REPEATED_CHARACTERS',\n _CONTAINS_NUMBER_SEQUENCE: 'passwordWarnings.CONTAINS_NUMBER_SEQUENCE',\n _CONTAINS_LETTER_SEQUENCE: 'passwordWarnings.CONTAINS_LETTER_SEQUENCE',\n _CONTAINS_NUMBER_LETTER_SEQUENCE:\n 'passwordWarnings.CONTAINS_NUMBER_LETTER_SEQUENCE',\n _IS_BLACKLISTED: 'passwordWarnings.IS_BLACKLISTED',\n _CONTAINS_SPACES: 'passwordWarnings.CONTAINS_SPACES',\n _HAS_ILLEGAL_CHARACTERS: 'passwordWarnings.HAS_ILLEGAL_CHARACTERS',\n _LEGAL_CHECKBOX: 'passwordWarnings.LEGAL_CHECKBOX',\n _REQUIRED_DOB: 'passwordWarnings.REQUIRED_DOB',\n _INVALID_DOB: 'passwordWarnings.INVALID_DOB',\n _OCCUPATION: 'passwordWarnings.OCCUPATION',\n _NATIONALITY: 'passwordWarnings.NATIONALITY',\n _HINT1: 'passwordWarnings.HINT1',\n _HINT2: 'passwordWarnings.HINT2',\n _HINT3: 'passwordWarnings.HINT3',\n _NATIONAL_ID_TYPE: 'passwordWarnings._NATIONAL_ID_TYPE',\n _NATIONAL_ID_NUMBER: 'passwordWarnings._NATIONAL_ID_NUMBER',\n },\n };\n\n const createAccountPost = {\n mainTitle: '', // guestsignup.mainTitle\n mainBlurb: '', // guestsignup.mainBlurb\n itsFreeLine: '', // guestsignup.itsFreeLine\n createAccountCheckboxContent: 'guestsignup.createAccountCheckboxContent',\n pplogo: 'guestsignup.pplogo',\n mainTitle1: 'guestsignup.mainTitle1',\n mainTitle2: 'guestsignup.expmainTitle2',\n mainTitle3: 'guestsignup.expmainTitle3',\n notNow: 'guestsignup.notNow',\n label1: 'guestsignup.explabel1',\n label2: 'guestsignup.explabel2',\n legalBlurbHTML: 'guestsignup.legalBlurbHTML',\n legalBlurbWithFeeInformationDoc:\n 'guestsignup.legalBlurbWithFeeInformationDoc',\n\n labeldob: 'guestsignup.labeldob',\n labelnationality: 'guestsignup.labelnationality',\n dobPattern: 'guestsignup.dobPattern',\n labelocc: 'guestsignup.labelocc',\n legalOnlyHTML: 'guestsignup.legalOnlyHTML',\n consentBlurbHTML: 'guestsignup.consentBlurbHTML',\n\n passwordWarnings: {\n _MISMATCH: 'passwordWarnings.MISMATCH',\n _IS_NULL: 'passwordWarnings.IS_NULL',\n _TOO_SHORT: 'passwordWarnings.TOO_SHORT',\n _TOO_LONG: 'passwordWarnings.TOO_LONG',\n _CONTAINS_REPEATED_CHARACTERS:\n 'passwordWarnings.CONTAINS_REPEATED_CHARACTERS',\n _CONTAINS_NUMBER_SEQUENCE: 'passwordWarnings.CONTAINS_NUMBER_SEQUENCE',\n _CONTAINS_LETTER_SEQUENCE: 'passwordWarnings.CONTAINS_LETTER_SEQUENCE',\n _CONTAINS_NUMBER_LETTER_SEQUENCE:\n 'passwordWarnings.CONTAINS_NUMBER_LETTER_SEQUENCE',\n _IS_BLACKLISTED: 'passwordWarnings.IS_BLACKLISTED',\n _CONTAINS_SPACES: 'passwordWarnings.CONTAINS_SPACES',\n _HAS_ILLEGAL_CHARACTERS: 'passwordWarnings.HAS_ILLEGAL_CHARACTERS',\n _LEGAL_CHECKBOX: 'passwordWarnings.LEGAL_CHECKBOX',\n\n _REQUIRED_DOB: 'passwordWarnings.REQUIRED_DOB',\n _INVALID_DOB: 'passwordWarnings.INVALID_DOB',\n _OCCUPATION: 'passwordWarnings.OCCUPATION',\n _NATIONALITY: 'passwordWarnings.NATIONALITY',\n _HINT1: 'passwordWarnings.HINT1',\n _HINT2: 'passwordWarnings.HINT2',\n _HINT3: 'passwordWarnings.HINT3',\n },\n buttonText: 'guestsignup.agreeanddonate',\n };\n\n for (const ca in createAccountPreProps) {\n if (!createAccountPreProps[ca]) {\n continue;\n }\n if (typeof createAccountPreProps[ca] === 'string') {\n const path = `guest.guestForm.${createAccountPreProps[ca]}`;\n createAccountPreProps[ca] = new MessageFormat(worldReady, {\n id: path,\n }).format({\n country: '{country}',\n locale: '{locale}',\n brand: '{brand}',\n language: '{language}',\n });\n } else if (ca === 'passwordWarnings') {\n for (const cp in createAccountPreProps[ca]) {\n const path2 = `guest.guestForm.${createAccountPreProps[ca][cp]}`;\n createAccountPreProps[ca][cp] = new MessageFormat(worldReady, {\n id: path2,\n }).format();\n }\n }\n }\n\n createAccountPreProps.dobPattern =\n createAccountPreProps.dobPattern.toUpperCase();\n for (const ca in createAccountPost) {\n if (!createAccountPost[ca]) {\n continue;\n }\n if (typeof createAccountPost[ca] === 'string') {\n const path = `guest.guestForm.${createAccountPost[ca]}`;\n\n createAccountPost[ca] = new MessageFormat(worldReady, {\n id: path,\n }).format({\n country: '{country}',\n locale: '{locale}',\n brand: '{brand}',\n language: '{language}',\n });\n } else if (ca === 'passwordWarnings') {\n for (const cp in createAccountPost[ca]) {\n const path2 = `guest.guestForm.${createAccountPost[ca][cp]}`;\n createAccountPost[ca][cp] = new MessageFormat(worldReady, {\n id: path2,\n }).format();\n }\n }\n }\n\n const cpf = {\n label: new MessageFormat(worldReady, {\n id: 'guest.guestForm.guestsignup.cpf',\n }).format(),\n warnings: {\n _REQUIRED_CPF: new MessageFormat(worldReady, {\n id: 'guest.guestForm.cpfWarnings.REQUIRED_CPF',\n }).format(),\n _INVALID_CPF: new MessageFormat(worldReady, {\n id: 'guest.guestForm.cpfWarnings.INVALID_CPF',\n }).format(),\n },\n };\n\n return {\n guestMessages: guestMessages,\n guestLabels: guestMessages.label || {},\n guestHelp: guestMessages.help || {},\n guestCaptcha: guestMessages.captcha || {},\n createAccountPreProps: createAccountPreProps,\n createAccountPost: createAccountPost,\n cpf: cpf,\n };\n}\n\nfunction shouldEnablePresetAmounts() {\n return (\n (templateData.donationAmountType === 'preset' &&\n templateData.presetAmounts?.length === 3) ||\n (templateData.donateContext &&\n templateData.donateContext.amount_type === 'MERCHANT_RECOMMENDED' &&\n templateData.donateContext.amount_options.length === 3) ||\n false\n );\n}\n\nif (templateData.ppccLookupRequired) {\n loadPPCCStatus();\n}\n\nlet currencyLists;\nexport function getCurrencySymbol(currencyCode) {\n if (!currencyLists) {\n try {\n currencyLists = JSON.parse(\n document.getElementById('currencyLists').innerHTML || {}\n );\n } catch (e) {\n currencyLists = {};\n }\n }\n return (currencyLists.symbols && currencyLists.symbols[currencyCode]) || '';\n}\n\nexport const isMobileHeaderExp = () => {\n return _get(templateData, 'pxp.moveMobileHeaderExp.experiment', false);\n};\n\nexport const isPartnerFlow = () => {\n return _get(templateData, 'isPartnerFlow', false);\n};\n\nexport const hasPartnerSource = () => {\n return _get(templateData, 'hasPartnerSource', false);\n};\n","import templateData from '../utility/getTemplateData';\nimport appStore from '../stores/AppStore';\nimport { isAmountGreaterThanZero } from '../components/amount/amountUtils';\nimport { getParameterByName } from './queryStringHelper';\nimport { show, hide, addClass, removeClass, fetcher } from './domUtils';\nimport { isOptInCoverFee } from '../components/coverFee/feeUtils';\nimport find from 'lodash/find';\nconst FROMUL_QUERY_PARAM = 'fromUL';\nconst FROMUOB_QUERY_PARAM = 'fromUOB';\nconst SDKMETA_QUERY_PARAM = 'sdkMeta';\n\nexport const addShake = () => {\n addClass('.inputField .money_input', ['animated', 'shake']);\n setTimeout(() => {\n removeClass('.inputField .money_input', ['animated', 'shake']);\n }, 1000);\n};\n\nexport const showSpinnerOverlay = () => {\n show('.spinneroverlay');\n\n const waitTextEl = document.getElementById('waitText');\n if (waitTextEl) {\n waitTextEl.focus();\n\n // Added this so mouse user will not always see the focus box\n waitTextEl.style.outline = 'none';\n\n // Since there is only one focusable element within the spinner\n // overlay, prevent any behaviour from occurring when the user\n // presses the TAB key\n waitTextEl.onkeydown = function (event) {\n // Add style back when user tries to manually focus on it\n waitTextEl.style.outline = 'thin dotted';\n waitTextEl.style.outline = '5px auto -webkit-focus-ring-color';\n waitTextEl.style.outlineOffset = '-2px';\n if (event.keyCode === 9 && document.activeElement === waitTextEl) {\n event.preventDefault();\n }\n };\n }\n};\n\nconst getFirstNonHiddenFocusableEl = (elements) => {\n return find(elements, (el) => {\n return el.type !== 'hidden';\n });\n};\n\n// After spinner exits, we need to set focus to the first fosable element\n// Assuming that focus should be set with either the gdpr cookie banner or donateWrapper\n// If any flow use a different main component, should update here\nexport const setFocus = () => {\n const elementWrapper =\n document.getElementById('gdprCookieContent_wrapper') ||\n document.getElementById('donateWrapper');\n\n if (elementWrapper) {\n // If there is no focusable element, will get text element\n const focusable =\n elementWrapper.querySelectorAll(\n 'button:not([hidden]),[href]:not([hidden]), input:not([hidden]), select:not([hidden]), textarea:not([hidden]), [tabindex]:not([tabindex=\"-1\"]):not([hidden])'\n ) ||\n elementWrapper.querySelectorAll('p:not([hidden]), span:not([hidden])');\n\n const firstFocusableEl = getFirstNonHiddenFocusableEl(focusable);\n\n if (firstFocusableEl) {\n firstFocusableEl.style.outline = 'none';\n firstFocusableEl.focus();\n\n firstFocusableEl.onkeydown = function () {\n firstFocusableEl.style.outline = 'thin dotted';\n firstFocusableEl.style.outline = '5px auto -webkit-focus-ring-color';\n firstFocusableEl.style.outlineOffset = '-2px';\n };\n\n firstFocusableEl.onblur = function () {\n firstFocusableEl.style.outline = 'none';\n };\n }\n }\n};\n\nexport const hideSpinnerOverlay = () => {\n hide('.spinneroverlay');\n};\n\nexport const updateDonation = (redirecturl, clearSavedFormData) => {\n const data = {\n token: templateData.token,\n amount: appStore.getDonationAmount(),\n donationAmountType:\n appStore.getDonationAmountType() === 'preset' ? 'preset' : 'userinput',\n currencyCode: templateData.donationCode,\n donationNote: appStore.getDonationNote() || '',\n recurring: appStore.getDonationRecurring(),\n addCardError: appStore.getAddCardError(),\n giftAidItFlag: appStore.getGiftaidItFlagStatus(),\n selectedProgram: appStore.getSelectedProgram(),\n selectedPresetButtonId: appStore.getSelectedPresetButtonId(),\n selectedRecurringFrequency: appStore.getSelectedRecurringFrequency(),\n };\n\n if (templateData.coverFeeEnabled) {\n data.feePayer = isOptInCoverFee() ? 'consumer' : 'merchant';\n data.feeCurr = appStore.getDonationCode();\n data.feeAmount = appStore.getFeeAmount();\n data.rawAmount = appStore.getAmountBeforeFee();\n }\n\n if (templateData.anonymousEnabled) {\n data.anonymousStatus = appStore.getAnonymousStatus();\n }\n\n if (clearSavedFormData) {\n data.clearSavedFormData = clearSavedFormData;\n }\n\n showSpinnerOverlay();\n let updateUrl = `/donate/update/donation`;\n if (templateData.token) {\n updateUrl = `${updateUrl}?token=${templateData.token}`;\n }\n fetcher(updateUrl, {\n method: 'POST',\n body: JSON.stringify(data),\n })\n .then((result) => {\n if (result && result.status === 401) {\n const failureUrl = '/donate/?token=' + templateData.token;\n window.location.href = failureUrl;\n return;\n }\n\n showSpinnerOverlay();\n window.location.href = redirecturl;\n })\n .catch(() => {\n showSpinnerOverlay();\n // On juno update failure, redirecting to landing page\n // Juno token will be re-validated and will handle following cases\n // Case 1: Display generic error page for expired token\n // Case 2: Start new flow, if token is valid.\n const failureUrl = '/donate/?token=' + templateData.token;\n window.location.href = failureUrl;\n });\n};\n\n/*\n * Handles for loaging any CAL event.\n */\nexport const logCalEvent = (message) => {\n fetcher('/donate/event/logger', {\n method: 'POST',\n body: JSON.stringify({\n message,\n }),\n });\n};\n\n/*\n * Handles for redirect to UL.\n */\nexport const handleLogIn = () => {\n const donationAmount = appStore.getDonationAmount();\n\n if (isAmountGreaterThanZero(donationAmount)) {\n let url = `/donate/member?token=${templateData.token}`;\n if (getParameterByName(FROMUL_QUERY_PARAM) === 'true') {\n url = `${url}&${FROMUL_QUERY_PARAM}=true`;\n }\n if (getParameterByName(FROMUOB_QUERY_PARAM) === 'true') {\n url = `${url}&${FROMUOB_QUERY_PARAM}=true`;\n }\n const sdkMeta = templateData.sdkMeta;\n const targetMeta = getParameterByName('targetMeta') || '';\n\n if (sdkMeta) {\n url = `${url}&${SDKMETA_QUERY_PARAM}=${sdkMeta}`;\n }\n if (targetMeta) {\n url = `${url}&targetMeta=${targetMeta}`;\n }\n\n updateDonation(url);\n } else {\n addShake();\n }\n};\n\n/*\n * Handles for redirect to guest.\n */\nexport const handleGuestCountryChange = (url) => {\n updateDonation(url, true);\n};\n\n/*\n * Handles if token is reused to access donate app to make second payment.\n */\nexport const handleTokenReuse = () => {\n const paymentStatus = templateData.paymentStatus || '';\n const token = templateData.token;\n if (paymentStatus === 'complete') {\n window.location.href = `/donate/paymentComplete?token=${token}`;\n }\n};\n\nexport const removeDuplicateErrors = (errorMessages = []) => {\n return errorMessages.reduce((uniqueErr, errMsg) => {\n if (!uniqueErr.some((errMsgObj) => errMsgObj.value === errMsg.value)) {\n uniqueErr.push(errMsg);\n }\n return uniqueErr;\n }, []);\n};\n\nexport const parseErrorResponse = (errors, errorMessages) => {\n let messages = [],\n allErrorCodes = errors.details;\n\n for (const i in allErrorCodes) {\n const code = allErrorCodes[i].name,\n message = errorMessages[code];\n if (message) {\n messages.push({\n key: i,\n value: message,\n });\n }\n }\n messages = removeDuplicateErrors(messages);\n\n if (messages.length === 0) {\n const message = errorMessages.GENERIC_ERROR;\n if (message) {\n messages.push({\n key: 0,\n value: message,\n });\n }\n }\n return messages;\n};\n\nexport const parseValErrResp = (errors, dump, GENERIC_ERROR) => {\n const messages = [],\n allErrorCodes = errors.errorData || [];\n for (const allError in allErrorCodes) {\n const code =\n allErrorCodes[allError].errorCode || allErrorCodes[allError].code,\n message = dump[code];\n\n if (message) {\n messages.push({\n key: allError,\n value: message,\n });\n }\n }\n\n if (messages.length === 0) {\n const message = dump[GENERIC_ERROR];\n if (message) {\n messages.push({\n key: 0,\n value: message,\n });\n }\n }\n return messages;\n};\n\nexport const getErrFields = (errors) => {\n const allFields = [],\n allErrorCodes = errors.errorData || [];\n for (const allError in allErrorCodes) {\n allFields.push({\n key: allError,\n type: allErrorCodes[allError].code,\n fields: allErrorCodes[allError].fields,\n });\n }\n\n if (allFields.length === 0) {\n allFields.push({\n key: 0,\n type: 'VALIDATION_ERROR',\n });\n }\n\n return allFields;\n};\n\n/**\n * Checks whether minimum donation restriction should be enforced.\n * @return {Boolean} true if currency code is USD\n */\nexport const shouldEnforceMinimumDonation = () => {\n // @TODO: Check for corpIp\n // TemplateData.isCorpIp\n if (\n templateData.donationAmountEditable &&\n ['USD'].indexOf(templateData.donationCode) >= 0\n ) {\n return true;\n }\n return false;\n};\n\n/**\n * Gets minimum donation for current currency\n * @return {Number} 1 for USD, 0 otherwise\n */\nexport const getMinimumDonation = () => {\n // @TODO: Check for corpIp\n // && !TemplateData.isCorpIp\n if (['USD'].indexOf(templateData.donationCode) >= 0) {\n return 1;\n }\n return 0;\n};\n\n/**\n * Validates the donation amount restriction for USD\n * @return { Boolean } Returns false if validation fails, true otherwise\n */\nexport const validateDonationAmountForUS = () => {\n if (shouldEnforceMinimumDonation()) {\n const donationAmount = appStore.getDonationAmount() || 0;\n const minimumDonation = getMinimumDonation();\n if (donationAmount < minimumDonation) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Checks whether to show the promotion for HurricaneHarvey or not\n * Please note: Currently disabled. Always returns false.\n */\nexport const shouldShowHurricaneHarveyPromotion = () => {\n return false;\n // Check merchant and user country\n // const userCountry = templateData.country;\n // const userLanguage = templateData.language;\n\n // return userCountry === 'US' && userLanguage === 'en';\n};\n\n/**\n * Sets country and locale in the provided string\n * @param {String} str String to set country and locale on\n * @param {String} country Country code like 'AU', 'US'\n * @param {String} locale locale code like 'en_AU', en_US'\n * @return {String} Original string with country and locale\n */\nexport const setCountryAndLocale = (str) => {\n str = str.replace(new RegExp('{country}', 'g'), templateData.country);\n str = str.replace(\n new RegExp('{locale}', 'g'),\n `${templateData.language}_${templateData.country}`\n );\n str = str.replace(new RegExp('{brand}', 'g'), templateData.brand);\n str = str.replace(new RegExp('{language}', 'g'), templateData.language);\n return str;\n};\n\nexport const isLTR = () => {\n const { contextLocalityDir } = templateData;\n return contextLocalityDir === 'ltr';\n};\n\nexport const getPPCCStatus = () => {\n const { merchantPpccStatus } = templateData;\n return merchantPpccStatus\n ? merchantPpccStatus.toUpperCase()\n : merchantPpccStatus;\n};\n\nexport const waitForElementToDisplay = (selector, time, callback) => {\n if (document.querySelector(selector) !== null) {\n callback(); // eslint-disable-line\n } else {\n setTimeout(function () {\n waitForElementToDisplay(selector, time, callback);\n }, time);\n }\n};\n\nexport const observeUntilEventObserved = (targetNode, options, callback) => {\n const mutationObserver = new MutationObserver(function (mutations, observer) {\n callback(observer);\n });\n\n mutationObserver.observe(targetNode, options);\n};\n\nexport const getInitialDataInDom = () => {\n const initialDataInDom = document.getElementById('initialData');\n if (initialDataInDom) {\n return JSON.parse(initialDataInDom.innerHTML || '{}');\n }\n};\n\n// export default {\n// \taddShake: addShake,\n// \tupdateDonation: updateDonation,\n// \tlogCalEvent: logCalEvent,\n// \thandleLogIn: handleLogIn,\n// \thandleGuestCountryChange: handleGuestCountryChange,\n// \thandleTokenReuse: handleTokenReuse,\n// \tremoveErrors: removeErrors,\n// \tserializeFormData: serializeFormData,\n// \tparseErrorResponse: parseErrorResponse,\n// \tparseValErrResp: parseValErrResp,\n// \tgetErrFields: getErrFields,\n// \tisLTR,\n// \tgetPPCCStatus,\n// \tshouldEnforceMinimumDonation,\n// \tvalidateDonationAmountForUS,\n// \tshouldShowHurricaneHarveyPromotion,\n// \tsetCountryAndLocale,\n// \tshowSpinnerOverlay,\n// \thideSpinnerOverlay\n// }\n","import templateData from './getTemplateData';\nimport { isExternalFlow } from './productIntegrationUtils';\nimport _get from 'lodash/get';\n\nexport function isInContext() {\n return isPopupMode();\n}\n\nexport function onComplete(postBackData) {\n const data = _get(postBackData, 'postBackData') || {};\n\n const transactionDetails = {\n tx: data.txn_id,\n st: data.payment_status,\n amt: data.mc_gross,\n cc: data.mc_currency,\n cm: data.custom_data,\n item_number: data.item_number,\n item_name: data.item_name,\n };\n // Add token if it is an external flow\n // so that they can call the GET TOKEN API\n if (isExternalFlow()) {\n transactionDetails.token = templateData.token;\n }\n if (window && window.xprops && window.xprops.onComplete) {\n window.xprops.onComplete({\n ...transactionDetails,\n });\n }\n}\n\nexport function onCancel(redirectUrl) {\n if (window && window.xprops && window.xprops.onCancel) {\n window.xprops.onCancel({\n redirectUrl,\n });\n }\n}\n\nexport function closeWindow() {\n if (window && window.xprops && window.xprops.close) {\n window.xprops.close();\n }\n}\n\n/**\n * Returns true if Donate is being rendered inside an iframe\n */\nexport function isIframeMode() {\n return window.parent !== window;\n}\n\nexport function isSdkMode() {\n return Boolean(templateData.sdkMeta || templateData.targetMeta);\n}\n\n/**\n * Returns true if window was opened by window.opener such as for pop-up windows.\n *\n */\nexport function isPopupMode() {\n // eslint-disable-next-line no-extra-boolean-cast\n if (Boolean(window.xprops)) {\n return isSdkMode() && Boolean(window.opener);\n }\n\n if (templateData.isdesktop) {\n return (\n isSdkMode() && Boolean(window.opener) && window && window.outerWidth < 650\n );\n }\n\n // default\n return isSdkMode() && Boolean(window.opener);\n}\n/**\n * We are in SDK Mode but we do not have window.xprops so this is FullPageRedirection Mode\n */\nexport function isFullPageRedirectionMode() {\n return isSdkMode() && Boolean(!window.xprops);\n}\n\nexport function isMobileOrInContext() {\n return isPopupMode() || templateData.ismobile || templateData.istablet;\n}\n\nexport function isMobileOrTablet() {\n return templateData.ismobile || templateData.istablet;\n}\n\nexport function isMWebNoCancelURL() {\n return !isInContext() && isMobileOrTablet() && !templateData.charityCancelUrl;\n}\n\nexport function isMWebNoReturnURL() {\n return !isInContext() && isMobileOrTablet() && !templateData.charityReturnUrl;\n}\n\nexport function isNotFullScreen() {\n var isNotAtMaxWidth = window.screen.availWidth - window.outerWidth > 0;\n var isNotAtMaxHeight = window.screen.availHeight - window.outerHeight > 0;\n return isNotAtMaxHeight && isNotAtMaxWidth;\n}\n","import { getInitialData } from './formator';\nimport get from 'lodash/get';\nimport getContent from 'pp-react-l10n';\n\nconst cache = {};\n\nexport const getTouchpoint = (touchpointCode) => {\n if (cache[touchpointCode]) {\n return cache[touchpointCode];\n }\n const personalizedMessages = getInitialData().personalizedMessages || [];\n\n for (const touchpoint of personalizedMessages) {\n if (touchpoint.touchpoint_code === touchpointCode) {\n cache[touchpointCode] = touchpoint;\n return touchpoint;\n }\n }\n return null;\n};\n\nexport const getPersonalizedMessages = (\n touchpointCode,\n { merge = false, isHtml = true, includeImpressionUrl = false } = {}\n) => {\n const touchpoint = getTouchpoint(touchpointCode);\n if (!touchpoint || !touchpoint.messages) {\n return merge ? [] : {};\n }\n\n if (merge) {\n const messages = [];\n touchpoint.messages.forEach((message) => {\n if (message.content?.json) {\n Object.keys(message.content.json)\n .sort()\n .forEach((contentKey) => {\n if (isHtml) {\n messages.push(\n getContent(\n `personalized.${touchpointCode}.${contentKey}`,\n null,\n {\n useHTML: true,\n }\n ),\n ' '\n );\n } else {\n messages.push(message.content.json[contentKey]);\n }\n });\n }\n });\n return messages;\n }\n\n let messages = {};\n touchpoint.messages.forEach((message) => {\n if (message.content?.json) {\n Object.keys(message.content.json).forEach((contentKey) => {\n messages[contentKey] = isHtml\n ? getContent(`personalized.${touchpointCode}.${contentKey}`, null, {\n useHTML: true,\n })\n : message.content.json[contentKey];\n });\n }\n if (includeImpressionUrl) {\n messages = {\n content: messages,\n trackingDetails: {\n impressionUrl: message.tracking_details.impression_url,\n },\n };\n }\n });\n return messages;\n};\n\nexport const hasPersonalizedMessages = (touchpointCode) => {\n const touchpoint = getTouchpoint(touchpointCode);\n return touchpoint?.messages[0]?.content?.json;\n};\n\nexport const getPersonalizedMessagesAsContentLoaderStandard = () => {\n const personalizedMessages = getInitialData().personalizedMessages || [];\n const result = {};\n for (const touchpoint of personalizedMessages) {\n result[touchpoint.touchpoint_code] = get(\n touchpoint,\n 'messages[0].content.json',\n {}\n );\n }\n return result;\n};\n","import { fetcher } from './domUtils';\nimport templateData from './getTemplateData';\nimport _get from 'lodash/get';\nimport * as DonateAppActions from '../actions/AppActions';\n\nconst MERCHANT_PPCC_CONFIRMED_STATUS = 'CONFIRMED';\n\nexport const loadPPCCStatus = () => {\n return fetcher(`/donate/api/ppcc/?token=${templateData.token}`)\n .then((response) => response.json())\n .then((result) => {\n const isPPCC =\n _get(result, 'data.PPCC', '') === MERCHANT_PPCC_CONFIRMED_STATUS;\n DonateAppActions.updatePPCCStatus(isPPCC);\n })\n .catch(() => {});\n};\n\nexport const loadPPCCSetupStatus = () => {\n return fetcher('/donate/api/setupFlow/ppcc')\n .then((response) => response.json())\n .then((result) => {\n return _get(result, 'data.clientData.ppccSetupStatus', '');\n })\n .catch(() => {});\n};\n","import { EVENT_NAME, PRODUCT } from './constants';\nimport TemplateData from './getTemplateData';\nimport AppStore from '../stores/AppStore';\nimport { formatCurrencyWithSymbol } from './formator';\nimport { getPersonalizedMessages } from './personalizedMessages';\nimport { GN_CONTENT_TOUCHPOINT } from './constants';\nimport { isInContext } from './inContextDonation';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from './worldReadyUtils';\nimport { getParameterByName } from './queryStringHelper';\n\nexport const isGNC = () =>\n TemplateData.product === PRODUCT.GENEROSITY_NETWORK_CHARITIES;\nexport const isGN = () => TemplateData.product === PRODUCT.GENEROSITY_NETWORK;\nexport const isBrandedCampaign = () =>\n TemplateData.product === PRODUCT.BRANDED_CAMPAIGN;\nexport const isPPFundraising = () =>\n TemplateData.product === PRODUCT.PP_FUNDRAISING;\nexport const isCampaigns = () =>\n TemplateData.product === PRODUCT.DONATE_BUTTON_CAMPAIGN;\nexport const isPPListedCampaign = () =>\n TemplateData.product === PRODUCT.PAYPAL_FUNDRAISER_LISTED_CAMPAIGN;\nexport const isPPUnlistedCampaign = () =>\n TemplateData.product === PRODUCT.PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN;\n\n// TODO: isGN is considered as isPPCampaign. Later we need to remove isGN completely.\nexport const isPPCampaign = () =>\n isPPListedCampaign() || isPPUnlistedCampaign() || isGN();\n\nexport const isCheckoutRail = () => isGNC() || isPPFundraising();\nexport const isSendMoneyRail = () => isPPCampaign() || isBrandedCampaign();\n\nexport const isExternalFlow = () =>\n isGNC() || isPPCampaign() || isBrandedCampaign() || isPPFundraising();\n\nexport const prepareOrderParams = () => {\n const worldReady = getWorldReady();\n\n return {\n amount: AppStore.getDonationAmount(),\n addressSharingConsent: false,\n currencyCode: AppStore.getDonationCode(),\n currencySymbol: AppStore.getDonationSymbol(),\n donationAmountType:\n AppStore.getDonationAmountType() === 'preset' ? 'preset' : 'userinput',\n donationNote: AppStore.getDonationNote() || '',\n recurring: AppStore.getDonationRecurring(),\n selectedProgram: AppStore.getSelectedProgram(),\n selectedPresetButtonId: AppStore.getSelectedPresetButtonId(),\n token: TemplateData.token,\n anonymousStatus: AppStore.getAnonymousStatus(),\n ppgfMessage: new MessageFormat(worldReady, {\n id: 'clients.generosityNetworkCharities.ppgfMessage',\n }).format(),\n directMessage: new MessageFormat(worldReady, {\n id: 'clients.generosityNetworkCharities.directMessage',\n }).format(),\n isInContext: isInContext(),\n };\n};\n\nexport const getMaximumDonationAlertMessage = (limitReason) => {\n const formatedMaximumAmount = formatCurrencyWithSymbol({\n value: Number(TemplateData.maximumDonationAmount),\n currency: TemplateData.maximumDonationCurrency,\n });\n\n const worldReady = getWorldReady();\n return new MessageFormat(worldReady, {\n id:\n limitReason === 'cip'\n ? 'landing.cip.amountError'\n : 'clients.generosityNetworkCharities.maximumAmountAlert',\n }).format({ amount: formatedMaximumAmount });\n};\n\nexport const getPersonalizedNoteToPayeeLabel = () => {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n return psMessages?.noteToPayeeLabel;\n};\n\nexport const getPersonalizedNoteToPayeeTextboxCommentLabel = () => {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n return psMessages?.noteToPayeeTextboxCommentLabel;\n};\n\nexport const getPersonalizedAnonymousContent = () => {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n if (isCampaigns()) {\n psMessages.anonymousLabel = 'Donate anonymously';\n psMessages.anonymousTooltip =\n 'Your name won’t appear on the fundraiser page and your name and email won’t be shared with the charity. Only the organizer will see your name.';\n }\n return {\n label: psMessages?.anonymousLabel,\n tooltip: psMessages?.anonymousTooltip,\n };\n};\n\nexport const getDismissEventName = () => {\n const url = window.location.href;\n\n if (url.includes('confirmation') || url.includes('pending')) {\n return EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED;\n } else if (url.includes('guest')) {\n return EVENT_NAME.DW_GIVING_GUEST_FORM_DISMISS_PRESSED;\n } else if (url.includes('member')) {\n return EVENT_NAME.DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED;\n }\n return EVENT_NAME.DW_GIVING_DONATE_SETUP_DISMISS_PRESSED;\n};\n\nexport const isAndroidWebView = () => {\n return getParameterByName('_fpti.platform') === 'android';\n};\n","export function getParameterByName(name, url) {\n if (!url) {\n url = window.location.href;\n }\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n\n if (!results[2]) {\n return '';\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n\nexport function getParameterByNameFromURL(name, url) {\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n\n if (!results[2]) {\n return '';\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n\nexport function getValuesFromULState(keys, url) {\n const queryStringObj = {};\n keys.forEach((key) => {\n queryStringObj[key] = getParameterByName(key, url);\n });\n return queryStringObj;\n}\n\nexport function getParametersFromUrl(url) {\n if (!url) {\n url = window.location.href;\n }\n\n if (url.indexOf('?') >= 0) {\n let queryString = /[^?]*$/.exec(url)[0]; // eslint-disable-line\n return JSON.parse(\n '{\"' +\n decodeURI(queryString)\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(new RegExp('=', 'g'), '\":\"') +\n '\"}'\n );\n }\n return {};\n}\n","// See WR documentation: https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about.html\n\nimport {\n WorldReady,\n NumberFormat,\n CurrencyFormat,\n PhoneNumberFormat,\n DateInputMaskFormat,\n RelativeTimeFormat,\n DateTimeFormat,\n} from '@paypalcorp/worldready';\n\nlet worldReady;\nconst getLocale = () => {\n const { country = 'US', language = 'en' } =\n JSON.parse(document.getElementById('templateData').innerHTML) || {};\n return `${language}-${country}`;\n};\n\nexport const initializeWorldReady = () => {\n if (!worldReady) {\n const worldReadyData = JSON.parse(\n document.getElementById('worldReady').textContent\n );\n WorldReady.load(worldReadyData);\n // WorldReady has loaded!\n\n const locale = getLocale();\n worldReady = new WorldReady(locale);\n }\n};\n\n/**\n * It returns a WorldReady instance\n * @returns a WorldReady instance.\n */\nexport const getWorldReady = () => {\n return worldReady;\n};\n\n/**\n * It takes a number and returns a localized number string\n * @param value - The number to format.\n * @param [options] - An object with the following properties: { maximumFractionDigits }\n * Example input: 1000\n * Example output: '1,000.00'\n */\nexport const formatNumber = (value, options = {}) =>\n new NumberFormat(worldReady, options).format(value);\n\n/**\n * It takes a string, and returns a number\n * @param value - The value to be formatted.\n * @param [options] - An object with the following properties:\n * Example input: '1,000.00'\n * Example output: 1000\n */\nexport const wrNormalizeNumber = (value, options = {}) =>\n new NumberFormat(worldReady, options).parse(value);\n\n/**\n * It takes a value and an options object, and returns a formatted currency string\n * @param value - The value to format.\n * @param options - An object containing the following properties: { currency, maximumFractionDigits, style }\n * Example input: 1000, currency: 'USD'\n * Example output: '$1,000.00'\n */\nexport const formatCurrency = (value, options) =>\n options && new CurrencyFormat(worldReady, options).format(value);\n\n/**\n * It takes a number and an options object, and returns an array of objects\n * @param value - The value to be formatted.\n * @param options - An object with the following properties: { style }\n * Input: 1234.5\n * Output: [\n * { type: \"currencySymbol\", value: \"$\" },\n * { type: \"integer\", value: \"1\" },\n * { type: \"group\", value: \",\" },\n * { type: \"integer\", value: \"234\" },\n * { type: \"decimal\", value: \".\" },\n * { type: \"fraction\", value: \"50\" },\n * { type: \"literal\", value: \" \" },\n * { type: \"currencyCode\", value: \"USD\" }\n * ] (considering locale is en-US)\n */\nexport const formatCurrencyToParts = (value, options) =>\n options && new CurrencyFormat(worldReady, options).formatToParts(value);\n\n/**\n * \"If the options object has a phoneRegion property, and the phoneObject is truthy, then format the\n * phoneObject using the PhoneNumberFormat class.\"\n *\n * The PhoneNumberFormat class is a class that I wrote to format phone numbers. It's not part of the\n * Google libphonenumber library\n * @param [options] - An object with the following properties:\n * @param phoneObject - The phone number object returned by the parsePhoneNumberFromString function.\n * Input: { countryCode: \"1\", nationalNumber: \"4088430088\" }\n * Output: \"+1 408-843-0088\" (considering phoneRegion is US)\n */\nexport const formatPhoneNumber = (options = {}, phoneObject) =>\n options.phoneRegion &&\n phoneObject &&\n new PhoneNumberFormat(options).format(phoneObject);\n\n/**\n * It takes a phone number and a phone region and returns a parsed phone number\n * @param options - The options object that you pass to the PhoneNumberFormat constructor.\n * @param phoneNumber - The phone number to parse.\n * Input: \"+1 408-843-0088\" (considering phoneRegion is US)\n * Output: { countryCode: \"1\", nationalNumber: \"4088430088\" }\n */\nexport const parsePhoneNumber = (options, phoneNumber) =>\n options.phoneRegion &&\n phoneNumber &&\n new PhoneNumberFormat(options).parse(phoneNumber);\n\n/**\n * It returns a new instance of the DateInputMaskFormat class, which is a class that extends the\n * InputMaskFormat class\n * @param options - An object with the following properties:\n * Input: { style: 'date-short' }\n * Output: \"mm/dd/yy\" (considering locale is en-US)\n */\nexport const getDateMaskFormat = (options) =>\n new DateInputMaskFormat(worldReady, options).format();\n\n/**\n * It returns a string that represents the relative time between the given date and the current time\n * @param date - The date to format.\n * @param options - An object with the following properties:\n */\nexport const getRelativeTime = (date, options) =>\n new RelativeTimeFormat(worldReady, options).format(date);\n\n/**\n * It takes a date and an optional options object, and returns a string\n * @param date - The date to format.\n * @param [options] - An object with the following properties:\n */\nexport const formatDate = (date, options = {}) =>\n new DateTimeFormat(worldReady, options).format(date);\n\ninitializeWorldReady();\n"],"names":["changeAmount","item","AppDispatcher","handleViewAction","actionType","AppConstants","changeSymbol","changeCode","changeFormatedAmount","changeRecurring","changeSelectedRecurringFrequency","changeCoverFee","changeAnonymousStatus","changeFeeAmount","changeNote","updateDonationAmountType","donationAmountType","updateSelectedProgram","updateSelectedPresetButtonId","updatePPCCStatus","isAtLandingPage","window","location","pathname","includes","undefined","getParameterByName","WrappedComponent","props","React","ThemeProvider","theme","isAndroidWebView","PPUI4_PAYPAL_THEME","_PAYPAL_THEME","assign","Dispatcher","action","this","dispatch","source","analytics","_window","PAYPAL","instance","_window2","startClientErrorTracking","templateData","country","donationAmountEditable","selectedPresetButtonId","sessionDeprecationEnabled","trackErrorIM","_ref11","errorCode","errorMessage","fieldName","_ref11$pageSpec","pageSpec","getDefaultPageSpec","additionalData","data","updateGlobalFPTI","_defineProperty","FPTI_TAGS","ACTION","tsrce","recordError","trackError","_objectSpread","isExternalFlow","eventName","EVENT_NAME","DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED","screen","SCREEN_NAME","DW_GIVING_DONATE_SETUP_SCREEN","DW_GIVING_DONATE_GUEST_FORM_SCREEN","ERR_FIELD","ERR_CODE","ECCD","ERPG","ERR_DESC","getDonationAmount","trackPageIM","_ref17","onceData","globalData","fromSetup","arguments","length","recordImpression","trackPageLoad","trackLinkClick","linkName","_ref33","_ref33$pageSpec","recordClick","trackClick","LINK","PAGE_LINK","concat","page","PAGE_GROUP_LINK","pgrp","IMPRESSION","e","PAGE_SPEC","LANDING_PAGE","tmpl","GUEST_FORM","GUEST_SUCCESS_PAGE","GUEST_SIGNUP_SUCCESS_PAGE","GUEST_PENDING_PAGE","GUEST_FAILURE_PAGE","url","ONBOARDING_GUEST_FORM","comp","ONBOARDING_GUEST_SUCCESS_PAGE","ONBOARDING_GUEST_PENDING_PAGE","MEMBER_SUCCESS_PAGE","MEMBER_PENDING_PAGE","MEMBER_FAILURE_PAGE","RECURRING_SUCCESS_PAGE","MEMBER_REVIEW_PAGE","CROSS_BORDER_PAGE","THREE_DS_IFRAME","THREE_DS_IFRAME_ONBRD","UNILATERAL_ERROR_PAGE","CAPTURE_ORDER_PAGE","WEBSCR_ERROR_PAGE","GENERIC_ERROR_PAGE","CRS_ERROR_PAGE","LINK_NAME","ACCOUNT_HOME","ANONYMOUS_CHECKBOX","ANONYMOUS_TOOLTIP","BACK","CANCEL","CHANGE_COUNTRY","COVER_FEE_CHECKBOX","CURRENCY_CONVERSION","DONE","GUEST_FORM_PAYMENT_SUBMIT_BUTTON","NOT_YOU","NOTE_PAD","ONBOARDING_FORM_PAYMENT_SUBMIT_BUTTON","PRESET_AMOUNT","PROGRAM_SELECTED","RECURRING_CHECKBOX","REPORT_LINK","RETURN","SOCIAL_SHARE","SOCIAL_SHARE_DISMISS","UNIFIED_LOGIN","VOUCHER","VOUCHER_PRINT","VOUCHER_SHARE","LIKE","UNLIKE","ACCOUNT_TYPE","AMOUNT","AMOUNT_EDIT_ALLOWED","AUTH_STATE","CAMPAIGN","CAMPAIGN_ID","CHALLENGE_END_TIME","CHALLENGE_START_TIME","CHALLENGE_STATUS","CHARITY_NAME","CHECKBOX","COUNTRY","CONTINGENCY_RESOLVED","CURRENCY","DONOR_IP_COUNTRY","ENABLED_FREQUENCY","EXPERIMENT_ID","FEE_AMOUNT","FEE_CURRENCY","FEE_PAYER","FI_NETWORK","FI_ID","FI_OPERATION","FI_TYPE","FLOW","MODULE","NONANONYMOUS","NPID","NOTE_ALLOWED","NOTE_ADDED","INTEGRATION_IDENTIFIER","IS_CVV_SENT","IS_RECURRING","IS_SIGNUP","IS_3DS_ELIGIBLE","ORDER_ID","OFFER_TYPE","PAGE_NAME","PAGE_GROUP","PRODUCT","RESP_DURATION","SPACE_KEY","SCREEN","SELECTED_PRESET_BUTTON_ID","SENDER_ID","SELECTED_FREQUENCY","STATUS","STATUS_CODE","PROCESS_STATUS","SWITCH","TOKEN","THREE_DS_DCC_START_TIME","THREE_DS_DCC_END_TIME","THREE_DS_LOOKUP_END_TIME","THREE_DS_LOOKUP_START_TIME","THREE_DS_REF_ID","THREE_DS_RESP_DURATION","THREE_DS_SPINNER_START_TIME","THREE_DS_SPINNER_END_TIME","THREE_DS_VERSION","TREATMENT_ID","TXN_ID","UI_TYPE","URL","UOB_BUNDLE_TYPE","VERSION","FEATURE","SOURCE","UPDATE_ID","DISMISS_METHOD","COUNT","STATE","AMOUNT_TYPE","ENCR_RCVR_ID","MERCHANT_EMAIL","NP_ID","RECURRING_VISUAL_EXPERIMENT","FEATURES","CTF","RECURRING","PRESET","ANONYMOUS","CHARITY_NOTE","DONATION_AMOUNT_EDITABLE","GUEST","GIFT_AID","MAILING_ADDRESS","SOCIAL_SHARE_PREFERENCE","FPTI_VALUES","SPACE_KEY_ID","anonymousEnabled","coverFeeEnabled","donationAmount","fptPageName","donationCode","donationName","donorIpCountry","feeAmount","feeCurr","feePayer","npid","product","productId","token","integrationIdentifier","recurringEnabled","supportedRecurringFrequencies","amount","AppStore","addFeature","feature","fpti","split","href","isOnboardingFlow","_find","indexOf","Spinner","_Component","_classCallCheck","_callSuper","_inherits","_createClass","key","value","LoadingSpinner","size","Component","withTheme","reactLazyPreload","importStatement","lazyComponent","reactLazy","preload","FallbackSpinner","useEffect","showSpinnerOverlay","headerHtml","useSelector","state","_state$application","application","globalNavHeaderHtml","loginHandler","event","preventDefault","trackEventWithData","FPTI_SPEC","LANDING_PAGE_HEADER_LOGIN_CL","handleLoginHelper","history","signupHandler","LANDING_PAGE_HEADER_SIGNUP_CL","handleSignupHelper","loginButton","document","querySelector","signupButtons","querySelectorAll","addEventListener","list","fn","i","len","addEventListenerList","removeEventListener","removeEventListenerList","dangerouslySetInnerHTML","__html","footerHtml","globalNavFooterHtml","initializeWorldReady","setContainerMarginsBefore","store","getStore","PartnerTermsMerchantV3","ButtonOverviewV3","DonationPagesManager","PartnerTermsCustomerV3","ButtonFactoryWizardV3","CampaignsWizard","CampaignOverview","FullPageError","App","Router","Suspense","fallback","Switch","Route","exact","path","component","Redirect","to","render","_extends","isEditing","isDuplicating","ReactDOM","Provider","WorldReadyContextProvider","locale","language","WorldReadyProvider","getElementById","GlobalNavHeader","GlobalNavFooter","hideLeaveModal","waitForElement","selector","callback","setTimeout","createBrowserHistory","getUserConfirmation","message","showLeaveModal","modalUtils","block","targetLocation","webpackPublicPath","__webpack_public_path__","BUTTON_FACTORY_BUSY","BUTTON_FACTORY_DRAFT_BUSY","INITIALIZE_WIZARD","WIZARD_CONTINUE","WIZARD_BACK","WIZARD_SET_CURRENT_PAGE","GET_BUTTON_DATA_SUCCESS","GET_BUTTON_DATA_ERROR","CREATE_BUTTON_SUCCESS","CREATE_BUTTON_ERROR","EDIT_BUTTON_SUCCESS","EDIT_BUTTON_ERROR","UPDATE_CODE_SNIPPET","SHOW_LOGIN_MODAL","HIDE_LOGIN_MODAL","SHOW_ACTIONABLE_ERROR_MODAL","HIDE_ACTIONABLE_ERROR_MODAL","SHOW_UNACTIONABLE_ERROR_MODAL","HIDE_UNACTIONABLE_ERROR_MODAL","SHOW_LEAVE_MODAL","HIDE_LEAVE_MODAL","SET_ERROR_LOADING_IMAGE","RESET_ERROR_LOADING_IMAGE","OPEN_MOBILE_PREVIEW","CLOSE_MOBILE_PREVIEW","UPDATE_FLOW_SPEC","UPDATE_IS_MOBILE","UPDATE_BUSINESS_IMAGE_URLS","UPLOAD_BUTTON_IMAGE_ERROR","IS_DRAFT_BUTTON","transformClientFormatToServer","transformClientFormatToServerV3","goToNextStep","type","goToPreviousStep","setCurrentStep","stepNumber","payload","initializeWizard","button","busy","draftBusy","uploadImageFail","getButton","buttonId","fetcher","then","response","json","_get","flowType","getButtonVariable","_isEmpty","button_variables","push","name","SERVER_BUTTON","FLOW_TYPE","catch","err","error","saveButton","buttonData","id","updateButton","createButton","buttonDataServerFormat","status","resParams","method","body","JSON","stringify","statusText","ok","responseJson","responseJSON","merchantExperienceUrls","updateCodeSnippet","code","showLoginModal","hideLoginModal","showActionableErrorModal","hideActionableErroModal","showUnactionableErrorModal","hideUnactionableErrorModal","destroyForm","destroy","BTN_FACTORY_V3_FORM","setErrorLoadingLogoImage","resetErrorLoadingLogoImage","openMobilePreview","closeMobilePreview","updateFlowSpec","flowSpec","uploadImage","imageUrl","src","success","updateBusinessProfileLogo","updateBusinessImageUrls","isDraftButton","INITIALIZE_DESCRIPTION","CAMPAIGNS_BUSY","GET_CAMPAIGN_DATA_SUCCESS","GET_CAMPAIGN_DATA_ERROR","CREATE_CAMPAIGN_SUCCESS","CREATE_CAMPAIGN_ERROR","EDIT_CAMPAIGN_SUCCESS","EDIT_CAMPAIGN_ERROR","BANNER_ERROR","LOGO_ERROR","RICH_EDITOR_ERROR","DRAFT_CAMPAIGNS_BUSY","IS_DRAFT_CAMPAIGN","campaign","initializeDescription","description","updateBannerError","updateLogoError","updateRichEditorError","getCampaign","isDuplicated","saveCampaign","campaignData","campaignDataServer","updateCampaign","createCampaign","isDraftCampaign","SET_COUNT_DONATIONS","SET_LAST_UPDATED_DONATION_PAGE","POST_ORGANIZER_UPDATE_ERROR","POST_ORGANIZER_UPDATE_SUCCESS","EDIT_ORGANIZER_UPDATE_ERROR","EDIT_ORGANIZER_UPDATE_SUCCESS","GET_ORGANIZER_UPDATES","GET_ORGANIZER_UPDATES_ERROR","GET_ORGANIZER_UPDATES_SUCCESS","DELETE_ORGANIZER_UPDATE_SUCCESS","DELETE_ORGANIZER_UPDATE_ERROR","INCREMENT_ORGANIZER_UPDATE_COUNT","DECREMENT_ORGANIZER_UPDATE_COUNT","setLastUpdated","donationPage","getDonationPagesList","getUserType","donationPagesCount","Promise","resolve","donationPages","getOrganizerUpdates","campaignId","organizerUpdates","total","postOrganizerUpdates","update","organizerUpdate","editOrganizerUpdate","updateId","res","resJson","deleteOrganizerUpdate","incrementOrganizerUpdateCount","decrementOrganizerUpdateCount","SET_MANAGE_PAGE_INSIGHTS","getDonationInsights","timeFrame","params","days_data","start_date","startDate","end_date","endDate","URLSearchParams","_responseJson$donatio","_responseJson$data","_ref","donationInsights","_ref$hostedProductsIn","hostedProductsInsightsList","_ref$allProductsTotal","allProductsTotalAmount","_ref$hostedProductsTo","hostedProductsTotalAmount","_ref$unhostedProducts","unhostedProductsTotalAmount","_ref$formattedDonatio","formattedDonationAmounts","_ref$hasMultiCurrency","hasMultiCurrency","insightsSummary","hostedProductsInsights","primaryCurrency","userPrimaryCurrency","GET_CAMPAIGN","GET_CAMPAIGN_SUCCESS","GET_CAMPAIGN_ERROR","DELETE_CAMPAIGN","DELETE_CAMPAIGN_ERROR","DELETE_CAMPAIGN_SUCCESS","EDIT_CAMPAIGN_VALUE_ERROR","EDIT_CAMPAIGN_VALUE_SUCCESS","UPDATE_CAMPAIGN","deleteCampaign","updateCampaignStatus","CAMPAIGNS_FORM","AUTH_STATE_LOGGEDIN","BTN_FACTORY_MAX_PROGRAMS","MAX_MOBILE_WIDTH","MAX_CHARACTERS_RTE","MAX_CHARACTERS_RTE_UPDATE_FORM","CAMPAIGN_STATUS","ACTIVE","INACTIVE","COUNTRIES_AND_PERMIT_CURRENCY","BR","ERRORS","COUNTRY_NOT_SUPPORTED","COMPLIANCE","GENERIC","OFAC_HIT","RESTRICTED_ACCOUNT","RESTRICTED_IMAGE","PAYMENT_PRODUCT","PUBLIC_MONEY_POOL","DONATE_BUTTON","DONATE_BUTTON_CAMPAIGN","CROWDFUNDING_CAMPAIGNS","addParameterToURL","CREATE_DEFAULT_BUTTON","CREATE_DEFAULT_BUTTON_SUCCESS","CREATE_DEFAULT_BUTTON_ERROR","DELETE_BUTTON","DELETE_BUTTON_SUCCESS","DELETE_BUTTON_ERROR","GET_BUTTON","GET_BUTTON_SUCCESS","GET_BUTTON_ERROR","UPDATE_VOUCHER_LISTING_STATUS","UPDATE_VOUCHER_LISTING_STATUS_SUCCESS","UPDATE_VOUCHER_LISTING_STATUS_ERROR","deleteButton","offerProgramId","fetchURL","isPostCreateOrEdit","guid","fetcherURL","updateVoucherListingStatus","isToList","voucherVariant","isGmbFlow","bn","toLowerCase","getVoucherDetail","VOUCHER_TYPE_DOLLAR","VOUCHER_INPUT_FIXED","VOUCHER_TYPE_PERCENTAGE","VOUCHER_INPUT_PERCENTAGE","VOUCHER_TYPE_CUSTOM","VOUCHER_INPUT_CUSTOM","get","voucherDetails","discountTagline","sub_title","ALL_VOUCHER_TYPE_INFO","appendCdnHostName","ACCOUNT_IDENTIFIER_TYPES","AMOUNT_OPTIONS","BN","BTN_CODE_TYPE","BUSINESS","BUTTON_IMAGE_URL","BUTTON_IMAGE","BUTTON_NAME","BUTTON_VARIABLES","CANCEL_RETURN","CN","CODE","COUNTRY_CODE","COVER_FEES_OPTION","CURRENCY_CODE","DONATE_CONTEXT","RECURRING_EXTN_DATA","EMAIL_CODE","ID","IMAGE_BANNER","ITEM_NAME","ITEM_NUMBER","LANGUAGE","LC","LOGO_TARGET","LOGO_URL","NO_NOTE","NO_RECURRING","NO_SHIPPING","PROGRAMNAMES","RECURRING_OPTION","SUBTYPE","TYPE","WEBSITE_CODE","BILL_FREQ","DRAFT_VERSION","DRAFT_STEP","CLIENT_BUTTON","ACCOUNT_IDENTIFIER_TYPE","BTN_SIZE","BUSINESS_PROFILE_LOGO_URL","LISTPROGRAMS","MERCHANT_AMOUNT_1","MERCHANT_AMOUNT_2","MERCHANT_AMOUNT_3","NO_ADVANCED_VARIABLES","NO_BANNER_IMAGE","NO_CANCEL_RETURN","NOTE_LABEL","ORGANIZATION_NAME","PROGRAMINPUT","PURPOSE","RECEIVER_CURRENCY","FREQUENCIES","NO_LOGO_URL","PAYMENT_SETTINGS_LOGO_URL","SHOW_ACCEPTED_CARD_LOGOS","USE_PAYPAL_BUTTON_STYLE","property","buttonVar","buttonVariable","addButtonVariable","clientFormat","clientKey","serverFormat","serverKey","buttonSizeMap","sm","md","lg","shouldUsePayPalButtonStyle","buttonImageUrl","button_image_url","cdnHostName","getAccountIdentifierValue","isServerToClient","isLoggedIn","isLoggedInUser","authState","getServerProps","accountIdentifier","checkIfOldButton","transformServerFormatToClient","isHosted","_includes","userType","noShipping","noNote","useFullPageExperience","bannerImageUrl","isEmpty","countryCode","test","exec","getButtonSize","logoFieldValues","serverFormatButton","_serverFormatButton$b","businessProfileLogoUrl","businessImageUrls","paymentSettingsLogoUrl","logoUrl","logoTarget","version","noLogoImage","LOGO_TARGET_PROFILE","_serverFormatButton$m","LOGO_TARGET_BUTTON","LOGO_TARGET_NOLOGO","getLogoUrlFieldValues","supportedVariables","getSupportedVariables","extraVariablesView","formatVariablesForTextArea","noAdvancedVariables","unsupportedVariables","getUnsupportedVariables","formatNumber","Number","coverFees","recurringOption","isOldButton","noRecurring","getRecurringOption","parse","getSupportedRecurringFrequencies","amountType","merchAmount1","merchAmount2","merchAmount3","programNames","v0Program","isMerchantIdEnabled","isProgramEnabled","enableProgram","isMerchantPresetAmountEnabled","enableMerchantPresetAmount","isRecurringEnabled","enableRecurring","noCancelReturn","noLogo","accountIdentifierValue","normalizeNumber","toUpperCase","every","billingFrequencies","billing_frequency","buttonSize","showAcceptedCardLogos","buttonImage","usePaypalButtonStyle","buttonImageProps","button_image","getDonateButtonImageUrl","noBannerImage","extraVariables","parseTextAreaValue","_each","variable","mapServerFieldToClientField","server_field","field","_findKey","SERVER_CAMPAIGN","CAMPAIGN_TYPE","EVENT_TYPE","EVENT_TITLE","EVENT_URL","EVENT_DESCRIPTION","EVENT_DESCRIPTION_RICH_TEXT","CREATOR_ID","PARTICIPANTS","PARTICIPANT_TYPE","PARTICIPANT_VALUE","CATEGORIES","POSTAL_CODE","START_TIME","END_TIME","TEMPLATE_DATA","TRANSACTION_SUMMARY","TOTAL_AMOUNT","TOTAL_NUMBER_OF_TRANSACTIONS","TID","IS_TARGET_REACHED","DONATION_LIMIT_REACHED","NET_AMOUNT","URLS","BANNER_URL","CANCEL_URL","RETURN_URL","DISPLAY_PROPERTIES","RECURRING_SELECTION","ANONYMOUS_SELECTION","COVER_FEES","NOTE","SHIPPING_OPTION","PREVIEW_TYPE","DONATION_UNITS","TARGET_AMOUNT","VALUE","EMBED_WIDGET","TIME_UPDATED","HAS_END_TIME","METADATA","DRAFT_META","CLIENT_CAMPAIGN","unsafeFields","ESCAPED_CHARS","deserializeUnsafeCharacters","text","rules","result","x","replaceAll","getFromTransactionSummary","transactionSummary","getFromTemplateData","urlsObj","displayPropObj","donationUnitsObj","map","amountObj","draftMetaObj","addToTemplateData","_serverFormat$busines","deserializeCampaignFields","richTextDescription","_toConsumableArray","formattedDate","Date","setHours","numericTargetAmount","lastUpdatedTimestamp","lastUpdateTimeInUtc","toUTCString","templateDataJson","LOGO_TARGET_CAMPAIGN","getLogoVariable","parseInt","amountArrayFromServer","shouldShowAcceptedCardLogos","eodTime","getEndOfDayTime","getButtonImageAndUrl","amountArray","templateDataString","donateButtonVariables","allSupportedButtonVariables","getNames","buttonVariables","_map","getButtonVariables","names","isSupportedVariable","getExtraVariables","buttonVariableNames","_difference","extraVariableNames","unsupportedVariableNames","supportedVariableNames","_intersection","join","textAreaValue","variables","input","slice","_last","_head","serverProps","countryAndLanguageDetails","selectedCountry","languages","defaultButton","accountIdentifierType","allowPrograms","amountValue","business","email","buttonName","receiverName","coverFeesEnabled","frequencies","itemNumber","getOptionsForLanguageField","listPrograms","merchantAmount1","merchantAmount2","merchantAmount3","purpose","receiverCurrency","uploadNewLogo","draftVersion","draftStep","defaultState","currentStep","totalSteps","isMobilePreviewOpen","isDraft","getFormattedButton","Object","offerProgram","initialState","formattedButton","buttonFactoryV3","clientSideState","getNextStep","getPreviousStep","isButtonCreated","isButtonEdited","customVariable","errorLoadingLogoImage","formattedCampaign","startTime","currencyCode","campaignType","eventType","eventTitle","eventUrl","cancelReturn","return","anonymousSelection","note","previewType","postalCode","categories","TotalAmount","transactionCount","participants","tid","targetReached","donationLimitReached","netAmount","hasEndTime","endTime","getDefaultEndTime","template_data","targetAmount","imgButtonStylesError","noPaypalButtonStyles","noEmbedWidget","embedWidget","image","draftMeta","timeUpdated","bannerImageError","logoImageError","getFormattedCampaign","campaigns","keys","getClientSideStateByCountry","_campaign$start_time","_formattedCampaign$dr","_action$payload","start_time","isCampaignCreated","richEditorError","EMAIL_CONFIRM_RESEND","EMAIL_SEND_SUCCESS","EMAIL_SEND_SUCCESS_RESET","EMAIL_SEND_ERROR","CHECK_EMAIL_CONFIRMED","CHECK_EMAIL_CONFIRMED_RESPONSE","CHECK_EMAIL_CONFIRMED_ERROR","SET_VERIFY_EMAIL_MODAL_OPEN","UPDATE_MESSAGE","UPDATE_STEP","SHOW_UNKNOWN_ERROR_OCCURED","HIDE_UNKNOWN_ERROR_OCCURED","SHOW_COUNTRY_NOT_SUPPORTED","HIDE_COUNTRY_NOT_SUPPORTED","TOGGLE_ADD_VOUCHER","UPDATE_VOUCHER_DETAILS","UPDATE_VOUCHER_ZIPCODE","UPDATE_AGREEMENT","ADD_MERCHANT_FOOTER","UPDATE_SELECTED_VOUCHER_TYPE","receivableCurrency","currency","displayValue","defaultOrganizerUpdate","subject","children","postOrganizerUpdateError","editOrganizerUpdateError","getOrganizerUpdateError","deleteOrganizerUpdateError","isEmailConfirmed","countryNotSupported","unknownError","_state$organizerUpdat","organizerUpdateList","organizerUpdatesLoader","totalOrganizerUpdatesCount","_state$organizerUpdat2","fou_id","filter","ppccSetupStatus","bnCode","showVoucherFlow","step","addVoucher","selectedVoucherType","allVoucherTypeInfo","voucherInfo","partnerButtons","offerProgramCode","shortUrl","getHost","isSending","confirmEmailSent","emailSendError","verifyEmailModalOpen","checkIfEmailConfirmedError","voucherType","voucherValue","typeToUpdate","voucherInfoIndexToUpdate","findIndex","updatedVoucherInfo","tagline","details","splice","zipcode","isOnAgreement","merchantFooter","serverToClientCampaign","buttonManagerV3","serverToClientButton","count","donationPagesState","lastUpdated","_state$application2","_state$application3","form","reduxFormReducer","middlewares","thunkMiddleware","process","env","reduxStore","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","trace","traceLimit","compose","createStore","rootReducer","applyMiddleware","apply","formatAmount","wrNormalizeNumber","formatCurrencyAsISOFormat","formatCurrency","style","formatCurrencyNoDecimals","format","options","maximumFractionDigits","displayCurrency","_ref$noDecimals","noDecimals","numericAmount","formatNumberDecimals","roundUpCurrency","number","roundedUpValue","Math","ceil","spec","fptiData","recordEvent","event_name","trackEventWithGlobalData","applicationState","getState","getReceiverCountry","WIZARD_TOTAL_STEPS","isHostedFlow","getWizardTotalSteps","getPageUrl","pageNumber","currentPath","isUnhostedFlow","allLanguages","countriesByCode","languageCodes","_keys","languageCode","setTitleCase","getOptionsForCountriesField","countryCodes","getFlowType","isDonateButton","isDonateLink","getStepUrl","currentLocation","targetStep","search","replace","isMobileOrTablet","innerWidth","isTablet","getEncryptedAccountNum","_serverProps$accountI","encrypted_account_number","isGuestFormPreview","showSpinner","reload","renderURL","hostname","isCsamHit","_error$details","issue","scrollToWizardsTop","isMobile","scrollTo","wizardContainer","getElementsByClassName","scrollTop","calculateAspectRatioToFit","imageWidth","imageHeight","containerWidth","containerHeight","containerAspectRatio","min","cc","large","small","getCharityName","isCampaignEnded","isNaN","isCampaign","str","txt","charAt","substr","serverPropsData","innerHTML","console","warn","getImageSize","fileSize","messages","MEGABYTE","KILOBYTE","megabyte","kilobyte","date","setMinutes","setSeconds","sameDay","today","dateToCompare","getFullYear","getMonth","getDay","convertDateToUserTimezone","timeZone","utcDate","formatDate","parseDateOnly","isLongDateFormat","setDate","getDate","formatDateIntl","_Intl","optionsObj","year","month","day","Intl","DateTimeFormat","resolvedOptions","getCurrentYearStartDate","currentYear","toISOString","getCurrentDate","getLastYearStartDate","lastYear","getLastYearEndDate","getElapsedDays","round","abs","getRemainingDays","getFormattedTimeOnlyFromUnix","unixTime","toLocaleTimeString","hour","minute","isCampaignFlow","MANAGE_PAGE","OVERVIEW_PAGE","CAMPAIGN_OVERVIEW_PAGE","WIZARD_STEP_ONE_HOSTED_PAGE","WIZARD_STEP_TWO_HOSTED_PAGE","WIZARD_STEP_THREE_HOSTED_PAGE","WIZARD_STEP_FOUR_HOSTED_PAGE","WIZARD_STEP_ONE_UNHOSTED_PAGE","WIZARD_STEP_TWO_UNHOSTED_PAGE","WIZARD_STEP_THREE_UNHOSTED_PAGE","WIZARD_STEP_FOUR_CAMPAIGN","WIZARD_STEP_ONE_CAMPAIGN","WIZARD_STEP_TWO_CAMPAIGN","WIZARD_STEP_THREE_CAMPAIGN","flow","CAMPAIGN_FLOW","DEFAULT_FPTI_DATA","charityName","receiver_country","account_type","encr_cust_id","LANDING_PAGE_DEFAULT_DATA","MANAGE_PAGE_DEFAULT_DATA","CONFIGURE_DONATION_PAGE_DEFAULT_DATA","WIZARD_STEP_FOUR_UNHOSTED_PAGE","EXPERIENCE_SETUP_PAGE_DEFAULT_DATA","SET_AMOUNT_PAGE_DEFAULT_DATA","ADVANCED_SETTINGS_PAGE_DEFAULT_DATA","OVERVIEW_PAGE_DEFAULT_DATA","CLICK","ERROR","ACTIVITY","LANDING_PAGE_IM","LANDING_PAGE_ORG_UPDATES_MODULE_IM","LANDING_PAGE_LOGIN_CL","LANDING_PAGE_SIGNUP_CL","MANAGE_PAGE_IM","MANAGE_TABLE_PAGE_UPDATE","MANAGE_PAGE_CREATE_LINK_CL","MANAGE_PAGE_CREATE_CAMPAIGN_CL","MANAGE_PAGE_CREATE_BUTTON_CL","MANAGE_PAGE_MANAGE_CAMPAIGN_CL","MANAGE_PAGE_MANAGE_BUTTON_CL","MANAGE_PAGE_ACCOUNT_UPGRADE_CL","MANAGE_PAGE_INFO_OPTIONS_CL","MANAGE_PAGE_INFO_OPTIONS_CLOSED_CL","MANAGE_PAGE_INFO_OPTIONS_IM","MANAGE_PAGE_INFO_LINK_PRESSED","MANAGE_PAGE_INFO_BUTTON_PRESSED","MANAGE_PAGE_INFO_CAMPAIGN_PRESSED","MANAGE_PAGE_FEEDBACK_BUTTON_CL","CONFIGURE_DONATION_PAGE_IM","CONFIGURE_DONATION_PAGE_NAV_CL","CONFIGURE_DONATION_PAGE_BACK","CONFIGURE_DONATION_PAGE_FEEDBACK_CL","CONFIGURE_DONATION_PAGE_FINISH_CL","CONFIGURE_DONATION_PAGE_ERROR_DISPLAY","CONFIGURE_BUTTON_PAGE_CONTINUE_CL","CONFIGURE_BUTTON_PAGE_CANCEL_CL","CONFIGURE_DONATION_PAGE_CANCEL_CL","CONFIGURE_BUTTON_PAGE_NAV_BACK_CL","CONFIGURE_BUTTON_PAGE_FEEDBACK_CL","CONFIGURE_BUTTON_PAGE_CHANGE_LOGO_CL","CONFIGURE_BUTTON_PAGE_LOGO_UPDATED","EXPERIENCE_SETUP_PAGE_IM","EXPERIENCE_SETUP_PAGE_CANCEL_CL","EXPERIENCE_SETUP_PAGE_CONTINUE_CL","EXPERIENCE_SETUP_PAGE_ERROR_DISPLAY","EXPERIENCE_SETUP_PAGE_BACK_CL","EXPERIENCE_SETUP_PAGE_NAV_BACK_CL","EXPERIENCE_SETUP_PAGE_FEEDBACK_CL","EXPERIENCE_SETUP_PAGE_PREVIEW_TAB_CL","EXPERIENCE_SETUP_PAGE_UPLOAD_LOGO_CL","UPLOAD_LOGO_MODAL_IM","UPLOAD_BUTTON_IMAGE_SAVE_CL","UPLOAD_LOGO_MODAL_SAVE_CL","UPLOAD_LOGO_MODAL_IMAGE_UPDATED","UPLOAD_LOGO_MODAL_CHECKBOX_CL","UPLOAD_LOGO_MODAL_DISMISS_CL","EXPERIENCE_SETUP_PAGE_UPLOAD_BACKGROUND_IMG_CL","UPLOAD_BACKGROUND_IMG_MODAL_IM","UPLOAD_BACKGROUND_IMG_MODAL_SAVE_CL","UPLOAD_BACKGROUND_IMG_MODAL_IMAGE_UPDATED","UPLOAD_BACKGROUND_IMG_MODAL_DISMISS_CL","UPLOAD_BACKGROUND_IMG_MODAL_DISMISS_ERROR","SET_AMOUNT_PAGE_IM","SET_AMOUNT_PAGE_CONTINUE_CL","SET_AMOUNT_PAGE_FINISH_CL","SET_AMOUNT_PAGE_BACK_CL","SET_AMOUNT_PAGE_NAV_BACK_CL","SET_AMOUNT_PAGE_FEEDBACK_CL","SET_AMOUNT_ERROR_DISPLAY","SET_AMOUNT_PAGE_PREVIEW_TAB_CL","ADVANCED_SETTINGS_PAGE_IM","ADVANCED_SETTINGS_PAGE_FINISH_CL","ADVANCED_SETTINGS_PAGE_ERROR_DISPLAY","ADVANCED_SETTINGS_PAGE_BACK_CL","ADVANCED_SETTINGS_PAGE_NAV_BACK_CL","ADVANCED_SETTINGS_PAGE_FEEDBACK_CL","ADVANCED_SETTINGS_PAGE_PREVIEW_TAB_CL","OVERVIEW_PAGE_IM","OVERVIEW_PAGE_SUCCESS_IM","CAMPAIGN_OVERVIEW_PAGE_RISK_SUCCESS_IM","CAMPAIGN_OVERVIEW_PAGE_RISK_DENY_IM","CAMPAIGN_OVERVIEW_PAGE_RISK_SERVER_ERROR_IM","CAMPAIGN_OVERVIEW_PAGE_STEPUP_SUCCESS_IM","CAMPAIGN_OVERVIEW_PAGE_STEPUP_DENY_IM","CAMPAIGN_OVERVIEW_PAGE_STEPUP_SERVER_ERROR_IM","DONATE_CAMPAIGN_STEPUP_REDIRECT","BUTTON_OVERVIEW_PAGE_RISK_SUCCESS_IM","BUTTON_OVERVIEW_PAGE_RISK_DENY_IM","BUTTON_OVERVIEW_PAGE_RISK_SERVER_ERROR_IM","BUTTON_OVERVIEW_PAGE_STEPUP_SUCCESS_IM","BUTTON_OVERVIEW_PAGE_STEPUP_DENY_IM","BUTTON_OVERVIEW_PAGE_STEPUP_SERVER_ERROR_IM","DONATE_BUTTON_STEPUP_REDIRECT","OVERVIEW_PAGE_FINISH_CL","OVERVIEW_ERROR_FINISH_CL","OVERVIEW_PAGE_BUTTON_INTERSITIAL_IM","OVERVIEW_PAGE_CAMPAIGN_INTERSITIAL_IM","OVERVIEW_PAGE_LINK_INTERSITIAL_IM","OVERVIEW_PAGE_CREATE_QRC_INTERSITIAL_IM","OVERVIEW_PAGE_ORG_UPDATES_IM","OVERVIEW_PAGE_ORG_UPDATES_LIST_IM","OVERVIEW_PAGE_ORG_UPDATES_DETAIL_IM","OVERVIEW_PAGE_ORG_UPDATES_CREATE_IM","page_variant","OVERVIEW_PAGE_ORG_UPDATES_EDIT_IM","OVERVIEW_PAGE_ORG_UPDATES_SHARE_IM","OVERVIEW_PAGE_ORG_UPDATES_CONFIRM_DELETE_IM","OVERVIEW_PAGE_ORG_UPDATES_CREATE_SUCCESS_AC","OVERVIEW_PAGE_ORG_UPDATES_DELETE_SUCCESS_AC","OVERVIEW_PAGE_ORG_UPDATES_CREATE_GENERIC_ERROR_AC","OVERVIEW_PAGE_SUCCESS_BANNER_IM","OVERVIEW_PAGE_SUCCESS_BANNER_SAVED_BUTTON_CL","OVERVIEW_PAGE_SUCCESS_BANNER_DISMISS_CL","OVERVIEW_PAGE_BACK_CL","OVERVIEW_PAGE_EDIT_NAME_CL","OVERVIEW_PAGE_SAVE_NAME_CL","OVERVIEW_PAGE_EDIT_CL","OVERVIEW_PAGE_PREVIEW_CL","OVERVIEW_PAGE_POST_UPDATE_CL","OVERVIEW_PAGE_LIST_POST_UPDATE_CL","OVERVIEW_PAGE_LIST_ITEM_PRESSED_CL","OVERVIEW_PAGE_POST_UPDATE_LINK_CL","OVERVIEW_PAGE_UPDATE_EDIT_PRESSED_CL","OVERVIEW_PAGE_UPDATE_POST_PRESSED_CL","OVERVIEW_PAGE_UPDATE_SAVE_PRESSED_CL","OVERVIEW_PAGE_UPDATE_DELETE_PRESSED_CL","OVERVIEW_PAGE_UPDATE_POST_CANCEL_PRESSED_CL","OVERVIEW_PAGE_UPDATE_EDIT_CANCEL_PRESSED_CL","OVERVIEW_PAGE_UPDATE_SHARE_CHANNERL_PRESSED_CL","OVERVIEW_PAGE_UPDATE_DELETE_CONFIRM_PRESSED_CL","OVERVIEW_PAGE_UPDATE_DELETE_KEEP_PRESSED_CL","OVERVIEW_PAGE_UPDATE_START_OVER_PRESSED_CL","OVERVIEW_PAGE_UPDATE_TRY_AGAIN_PRESSED_CL","OVERVIEW_PAGE_UPDATE_FORM_ERROR_AC","OVERVIEW_PAGE_PREVIEW_DISMISS_CL","OVERVIEW_PAGE_DUPLICATE_CL","OVERVIEW_PAGE_DELETE_CL","OVERVIEW_PAGE_SHARE_CL","OVERVIEW_PAGE_COPY_LINK_CL","OVERVIEW_PAGE_COPY_BUTTON_CL","OVERVIEW_PAGE_COPY_WIDGET_CL","OVERVIEW_PAGE_DOWNLOAD_QRC_CL","OVERVIEW_PAGE_FEEDBACK_CL","OVERVIEW_PAGE_SHAREABLE_LINK","OVERVIEW_PAGE_QR_CODE","OVERVIEW_PAGE_DONATE_BUTTON","OVERVIEW_PAGE_CAMPAIGN_CARD","OVERVIEW_PAGE_SHOW_MORE_UPDATES_CL","OVERVIEW_PAGE_SHOW_PREVIOUS_UPDATES_CL","OVERVIEW_PAGE_DISMISS_UPDATES_LIST_SHEET_CL","dismiss_method","OVERVIEW_PAGE_DISMISS_UPDATES_DETAIL_SHEET_CL","OVERVIEW_PAGE_DISMISS_UPDATES_CREATE_SHEET_CL","OVERVIEW_PAGE_DISMISS_UPDATES_DELETE_SHEET_CL","OVERVIEW_PAGE_DISMISS_UPDATES_SHARE_SHEET_CL","OVERVIEW_PAGE_DISMISS_BUTTON_INTERSITIAL_CL","OVERVIEW_PAGE_DISMISS_CAMPAIGN_INTERSITIAL_CL","OVERVIEW_PAGE_DISMISS_LINK_INTERSITIAL_CL","OVERVIEW_PAGE_DISMISS_QRC_INTERSITIAL_CL","PRODUCT_UPDATE_EXPERIENCE_MODAL_IM","PRODUCT_UPDATE_EXPERIENCE_MODAL_SIDE_SCROLL_CL","PRODUCT_UPDATE_EXPERIENCE_MODAL_DISMISS_CL","ACTIONABLE_ERROR_MODAL_IM","ACTIONABLE_ERROR_MODAL_REVIEW_CL","ACTIONABLE_ERROR_MODAL_START_OVER_CL","ACTIONABLE_ERROR_MODAL_DISMISS_CL","FIELD_LEVEL_ERROR_IM","ERROR_INTERACTION_IM","ERROR_INTERACTION_LINK_CL","ERROR_INTERACTION_DISMISS_CL","ALERT_MODAL_IM","ALERT_MODAL_CONFIRM_CL","ALERT_MODAL_CANCEL_CL","ALERT_MODAL_FINISH_CL","ALERT_MODAL_SAVE_CL","ALERT_MODAL_DELETE_CL","ALERT_MODAL_TRY_AGAIN_CL","ALERT_MODAL_QUIT_CL","ALERT_MODAL_DISMISS_CL","ACCOUNT_RESTRICTED_PAGE_IM","DONATE_SETUP_ACTION_OCURRED","DONATE_SETUP_SUCCESS_CLOSE_REOPEN_CAMPAIGN","MANAGE_STATISTICS_MODULE_IM","MANAGE_STATISTICS_UNSAVED_TOOLTIP_IM","MANAGE_STATISTICS_UNSAVED_TOOLTIP_CL","MANAGE_TIMEFRAME_DROPDOWN_CL","MANAGE_TIMEFRAME_LIST_IM","MANAGE_TIMEFRAME_SELECTION_CL","MANAGE_CURRENCY_BREAKDOWN_CL","MANAGE_CURRENCY_BREAKDOWN_SHEET_IM","MANAGE_ZERO_RAISED_MODULE_IM","MANAGE_ZERO_RAISED_MODULE_SHARE_CL","MANAGE_PAGE_EDIT_CL","MANAGE_PAGE_DELETE_CL","FULL_PAGE_ERROR","MANAGE_SUMMARY_MODULE_ERROR_IM","MANAGE_SUMMARY_MODULE_RETRY_CL","MANAGE_TABLE_INSIGHT_ERROR_IM","MANAGE_TABLE_INSIGHT_RETRY_CL","DONATE_SETUP_BANNER_SHOWN","DONATE_SETUP_BANNER_CLICKED","DONATE_SETUP_WELCOME_CARD_SHOWN","DONATE_SETUP_WELCOME_CARD_CLICKED","SET_AMOUNT_PAGE_SAVE_IM","EXPERIENCE_SETUP_PAGE_SAVE_IM","ADVANCED_SETTINGS_PAGE_SAVE_IM","CONFIGURE_DONATION_PAGE_SAVE_IM","SET_AMOUNT_PAGE_SAVE_CL","EXPERIENCE_SETUP_PAGE_SAVE_CL","ADVANCED_SETTINGS_PAGE_SAVE_CL","CONFIGURE_DONATION_PAGE_SAVE_CL","SET_AMOUNT_PAGE_SAVE_ERROR_IM","EXPERIENCE_SETUP_PAGE_SAVE_ERROR_IM","ADVANCED_SETTINGS_PAGE_SAVE_ERROR_IM","CONFIGURE_DONATION_PAGE_SAVE_ERROR_IM","DONATE_SETUP_WIZARD_PROJECT_NAME_SHOWN","DONATE_SETUP_WIZARD_PROJECT_NAME_UPDATED","DONATE_SETUP_NO_BUTTON_PENDING_CONTENT_SHOWN","DONATE_SETUP_VERIFIED_FIRST_TIME_VISIT_CONTENT_SHOWN","DONATE_SETUP_PENDING_BANNER_SHOWN","DONATE_SETUP_PENDING_BANNER_CLICKED","EXTEND_SESSION","QUIT","RETRY_SAVE","DELETE","CLOSE_CAMPAIGN","REOPEN_CAMPAIGN","DUPLICATE","EDIT_PAGE","FINISH_PAGE","PUBLISH_PAGE","CONFIGURE_BUTTON","EXPERIENCE_SETUP","SET_AMOUNT","ADVANCED_SETTINGS","MANAGE","SUCCESS","RTE_FPTI_ACTION_SPEC","DONATE_SETUP_ADD_LINK_IMP","DONATE_SETUP_ADD_LINK_CL","DONATE_SETUP_ADD_LINK_CANCEL","DONATE_SETUP_ADD_LINK_DISMISS","DONATE_SETUP_ADD_LINK_ERROR","DONATE_SETUP_ADD_VIDEO_IMP","DONATE_SETUP_ADD_VIDEO_CL","DONATE_SETUP_ADD_VIDEO_CANCEL","DONATE_SETUP_ADD_VIDEO_DISMISS","EXPAND_TEXT_EDITOR","ERROR_TEXT_EDITOR","DONATE_SETUP_ADD_VIDEO_ERROR","getReactButtonsContainerMarginTopExtension","setContainerMargins","merchantHeader","reactButtonsContainer","reactButtonsContainerMarginTop","offsetHeight","margin","STAGE_HOSTNAME","_window$location","host","protocol","serverPropsNode","serverPropsJSON","addClass","hideSpinner","removeClass","_alldata","create","DonationStore","EventEmitter","prototype","emitChange","emit","getAllData","toString","getDonationSymbol","symbol","getDonationCode","getFormatedAmount","formatedAmount","getDonationNote","getDonationRecurring","recurring","getSelectedRecurringFrequency","selectedRecurringFrequency","getRecurringModalStatus","recurringModalStatus","getAnonymousStatus","anonymousStatus","getCoverFeeOptInStatus","coverFee","getFeeAmount","getFormatedFeeAmount","formatedFeeAmount","getAmountBeforeFee","amountBeforeFee","getConfirmation","confirmation","getPostBackData","postBackData","getCurrentPage","currentPage","getServerErros","serverErrors","getPaymentError","paymentError","getSignUpError","signUpError","getFundingOptions","fundingOptions","getEmail","getBillingAddress","billingAddress","getUserCountry","getDonationAmountType","getGiftaidItFlagStatus","giftAidItFlag","getShareAddress","shareAddress","getAddCardError","addCardError","getGiftAidItExtraAmount","DonationConstants","getSelectedProgram","selectedProgram","getSelectedPresetButtonId","getCardSpec","cardSpec","getFormData","formData","getThreeDSContingency","threeDSContingency","getLanguageSelectorState","languageSelectorState","getOrderStatus","orderStatus","getPPCCStatus","ppccStatus","dispatcherIndex","register","_action$item$selected","trim","keyMirror","require","module","exports","CHANGE_AMOUNT","CHANGE_SYMBOL","CHANGE_CODE","CHANGE_RECURRING","CHANGE_RECURRING_FREQUENCY","CHANGE_COVER_FEE","CHANGE_FEE_AMOUNT","CHANGE_FORMATED_FEE_AMOUNT","CHANGE_AMOUNT_BEFORE_FEE","CHANGE_ANONYMOUS_STATUS","RP_MODAL_CLOSED","GIFT_AID_IT","CHANGE_FORMATED_AMOUNT","CHANGE_NOTE","CHANGE_CARD_NUMBER","CHANGE_EXP_DATE","CHANGE_SECURITY_CODE","CHANGE_CARD_SPEC","CHANGE_FIRST_NAME","CHANGE_LAST_NAME","CHANGE_ADDRESS","CHANGE_PHONE","CHANGE_EMAIL","CHANGE_PASSWORD","SHOW_LANGUAGE_SELECTOR","UPDATE_CONFIRMATION","POST_BACK_DATA","UPDATE_CURRENT_PAGE","UPDATE_SERVER_ERRORS","PAYMENT_ERROR","UPDATE_SIGN_UP_ERROR","FUNDING_OPTIONS","EMAIL","BILLING_ADDRESS","UPDATE_DONATION_AMOUNT_TYPE","ENABLE_PRESET_AMOUNTS","CHANGE_SHARE_ADDRESS","ADD_CARD_ERROR","UPDATE_SELECTED_PROGRAM","SAVE_FORM_DATA","UPDATE_THREEDS_DATA","UPDATE_SELECTED_PRESET_BUTTON_ID","UPDATE_ORDER_STATUS","UPDATE_PPCC_STATUS","EMAIL_REX","DEFAULT_CARD_SPEC","fields","ccNumber","required","pattern","maxlength","expirationDate","csc","minlength","DONATE_GIFTAID_IT_EXTRA_AMOUNT","PPGF_DISCLAIMER_TOUCHPOINT","GN_CONTENT_TOUCHPOINT","NNA_CONTENT_TOUCHPOINT","BRANDED_CAMPAIGN","GENEROSITY_NETWORK","GENEROSITY_NETWORK_CHARITIES","PP_FUNDRAISING","WPS_DONATION","PAYPAL_FUNDRAISER_LISTED_CAMPAIGN","PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN","PRODUCT_TYPE","DBUTTON","DBUTTONC","SEND_MONEY_RECURRING_DONATION","DW_GIVING_DONATE_SETUP_SCREEN_SHOWN","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","DW_GIVING_DONATE_SETUP_NEXT_PRESSED","DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","DW_GIVING_DONATE_SETUP_TERMS_PRESSED","DW_GIVING_DONATE_SETUP_DISMISS_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED","DW_GIVING_GUEST_FORM_SCREEN_SHOWN","DW_GIVING_GUEST_FORM_DONATE_PRESSED","DW_GIVING_GUEST_FORM_DISMISS_PRESSED","DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED","DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED","DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED","DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN","DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN","DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED","DW_GIVING_SHARE_SCREEN_SHOWN","DW_GIVING_SHARE_CHANNEL_PRESSED","DW_GIVING_SHARE_DISMISS_PRESSED","DW_GIVING_REDIRCT_SCREEN_SHOWN","DW_GIVING_REDIRCT_OPEN_PRESSED","DW_GIVING_REDIRCT_DISMISS_PRESSED","DONATION_PAYMENT_VIEW_LANDING_DONATE_PRESSED","DONATION_PAYMENT_VIEW_LANDING_PAYPAL_PRESSED","DONATION_PAYMENT_VIEW_LANDING_CARD_PRESSED","DONATION_PAYMENT_VIEW_LANDING_FREQUENCY_PRESSED","DONATION_PAYMENT_GUEST_FORM_DONATE_PRESSED","DONATION_ANONYMOUS_CHECKBOX_CHECK_PRESSED","DONATION_ANONYMOUS_CHECKBOX_UNCHECK_PRESSED","DONATION_CONFIRMATION_PAGE_IMP","DONATE_THREE_DS_DDC_START","DONATE_THREE_DS_DDC_COMPLETE","DONATE_THREE_DS_DDC_FAILURE","DONATE_THREE_DS_LOOKUP_START","DONATE_THREE_DS_LOOKUP_COMPLETE","DONATE_THREE_DS_IFRAME_SHOWN","DONATE_THREE_DS_PROOCEED_TO_PAYMENT","DONATE_LANDING_SCREEN_SHOWN","DONATE_REVIEW_SCREEN_SHOWN","DONATE_GUEST_FORM_SCREEN_SHOWN","DONATE_SUCCESS_SHARE_MESSAGE","DONATE_SUCCESS_MERCHANT_SITE_PRESSED","DONATE_LANDING_MERCHANT_SITE_PRESSED","DONATE_GUEST_REVIEW_PROCESS_DONATE_CLICK","DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN","DONATE_MATCH_SOCIAL_SHARE_SCREEN_SHOWN","DONATE_LANDING_UPDATES_MODULE_SHOWN","DONATE_LANDING_UPDATES_READ_MORE_PRESSED","DONATE_LANDING_UPDATES_SHOW_MORE_PRESSED","DONATE_LANDING_UPDATES_LIKE_PRESSED","DONATE_LANDING_UPDATES_LIKE_PRESSED_COMPLETED","DONATE_LANDING_UPDATES_LIST_SHOWN","DONATE_LANDING_UPDATES_LIST_LIKE_PRESSED","DONATE_LANDING_UPDATES_LIST_SELECTION_PRESSED","DONATE_LANDING_UPDATES_LIST_DISMISS_PRESSED","DONATE_LANDING_UPDATES_DETAIL_VIEW_SHOWN","DONATE_LANDING_UPDATES_DETAIL_LIKE_PRESSED","DONATE_LANDING_UPDATES_DETAIL_DISMISS_PRESSED","DONATE_LANDING_UPDATES_LOGIN_VIEW_SHOWN","DONATE_LANDING_UPDATES_LOGIN_BUTTON_PRESSED","DONATE_LANDING_UPDATES_LOGIN_SIGNUP_PRESSED","DONATE_LANDING_UPDATES_LOGIN_DISMISS_PRESSED","DONATE_LANDING_UPDATES_LOADING_ERROR_SHOWN","DONATE_LANDING_UPDATES_LOADING_ERROR_RETRY_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_SET_FAV_CHARITY_MODULE_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODULE_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_INSIGHTS_MODULE_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_SET_FAVORITE_CHARITY_ERROR","DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_SHOWN","DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_PRESSED","DONATE_DONOR_VIEW_REPORT_MERCHANT_PRESSED","FPTI_PRODUCT","KEY_DOWN","TAB","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","SPACE","ENTER","AU_CRS","ABORTED","FAILURE","ABORTED_STATUS_CODE","FAILURE_STATUS_CODE","SUCCESS_STATUS_CODE","SINGLE_TAX_RESIDENCY","MULTI_TAX_RESIDENCY","ALLOWED_IMAGE_TYPES","MAX_IMAGE_SIZE","BTN_IMAGE_MAX_FILE_SIZE","ALLOWED_FILE_EXTENSIONS","IMG_SCALE_SIZE","WIDTH_STEP_1","WIDTH_BANNER","WIDTH_LOGO","WIDTH_CAMPAIGN","INSTRUMENT_TYPES","HOLDING","PAYMENT_CARD","PAYMENT_TOKEN","BANK_ACCOUNT","CREDIT","UNKNOWN","PAYMENT_CARDS","VISA","MASTERCARD","MASTER_CARD","MAESTRO","AMEX","DISCOVER","JCB","CHINA_UNION_PAY","CDN_HOST_NAME","MERCHANT_PPCC_CONFIRMED_STATUS","FULL","VARIANT_VALUEPROP_1","VARIANT_VALUEPROP_2","VARIANT_VALUEPROP_3","APP_ID","ORGANIZER_UPDATES","INITIAL_UPDATES_COUNT","MAX_UPDATES_PER_PAGE","MAX_CHARACTERS_SUBJECT","MAX_ORGANIZER_UPDATES","ACTIONS","SHOW_UPDATE_DETAIL_VIEW","SHOW_UPDATE_LIST","ORGANIZER_UPDATE_SINGLE_UPDATE_ERROR","INTERNAL_ERROR","DNW_UNHANDLED_ERROR","POST_DONATION_MODULES","SET_FAVORITE_CHARITY","CREATE_FUNDRAISER","GIVING_SUMMARY","SHARE","polyfillFetch","fetchPolyfill","show","display","elementsToShow","classNames","elementsSelected","_elementsSelected$i$c","classList","add","_elementsSelected$i$c2","remove","csrf","dataset","createEvent","initEvent","dispatchEvent","headers","fetch","returnPath","pushState","handleErrors","getElement","selectorOrElement","obj","HTMLElement","_typeof","nodeType","ownerDocument","isElement","_noOpFunction","safeScrollElement","element","safeScrollWindow","scrollElementTo","scrollY","top","behavior","pageYOffset","__getInitialData","initialDataNode","initialDataJSON","getInitialData","rawTemplateData","giftAid","_set","webscrData","giftAidAddress","localsMessagesNode","content","locals","personalized","getPersonalizedMessagesAsContentLoaderStandard","init","decodeURIComponent","er","donationId","_templateData$presetA3","_templateData$presetA","donorCoversFee","rawAmount","AppActions","donationSymbol","donationNote","recurringStatus","enablePresetAmounts","presetAmounts","donateContext","amount_type","amount_options","_templateData$presetA2","ppccLookupRequired","loadPPCCStatus","waitTextEl","focus","outline","onkeydown","outlineOffset","keyCode","activeElement","merchantPpccStatus","isInContext","isPopupMode","isSdkMode","Boolean","sdkMeta","targetMeta","xprops","opener","isdesktop","outerWidth","cache","getTouchpoint","touchpointCode","_step","_iterator","_createForOfIteratorHelper","personalizedMessages","s","n","done","touchpoint","touchpoint_code","f","getPersonalizedMessages","_ref$merge","merge","_ref$isHtml","isHtml","_ref$includeImpressio","includeImpressionUrl","forEach","_message$content","sort","contentKey","getContent","useHTML","_message$content2","trackingDetails","impressionUrl","tracking_details","impression_url","_step2","_iterator2","isPPCC","DonateAppActions","loadPPCCSetupStatus","isGNC","TemplateData","isBrandedCampaign","isPPFundraising","isCampaigns","isPPCampaign","results","RegExp","worldReady","worldReadyData","textContent","WorldReady","load","_ref$country","_ref$language","getWorldReady","NumberFormat","CurrencyFormat","formatCurrencyToParts","formatToParts"],"sourceRoot":""}