{"version":3,"sources":["webpack:///./confirmation/ConfirmationTitle.js","webpack:///./actions/AppActions.js","webpack:///./utility/polyfillFetch.js","webpack:///./utility/domUtils.js","webpack:///./utility/geoUtils.js","webpack:///./utility/paypalAphrodite.js","webpack:///./utility/helper.js","webpack:///./components/PendingWarning.js","webpack:///./confirmation/PendingView.js","webpack:///./components/illustrations/Illustration.js","webpack:///./components/returnToMerchant.js","webpack:///./routes/publicPath.js","webpack:///./components/withTheme.js","webpack:///./utility/inContextDonation.js","webpack:///./utility/queryStringHelper.js","webpack:///./utility/getTemplateData.js","webpack:///./utility/ppccUtils.js","webpack:///./components/onetouch/UserDetailsBanner.js","webpack:///./utility/nna.js","webpack:///./utility/worldReadyUtils.js","webpack:///./components/coverFee/feeUtils.js","webpack:///./pages/error/receiverEligibilityError.js","webpack:///./utility/productIntegrationUtils.js","webpack:///./components/BackButton.js","webpack:///./utility/urlUtils.js","webpack:///./components/GN/bannerHeader.js","webpack:///./fpti/helper.js","webpack:///./components/withWorldReady.js","webpack:///./fpti/analytics.js","webpack:///./fpti/fpti.js","webpack:///./components/voucherFlowDisclaimer.js","webpack:///./confirmation/ConfirmationTransactionId.js","webpack:///./components/offerSaveButton.js","webpack:///./components/offerConfirmation.js","webpack:///./components/guest/SignUpAlert.js","webpack:///./confirmation/ConfirmationReturnText.js","webpack:///./confirmation/ConfirmationReturnTo.js","webpack:///./pages/confirmation/postTransaction.js","webpack:///./confirmation/ConfirmationRedirect.js","webpack:///./confirmation/DoneLink.js","webpack:///./confirmation/ConfirmationView.js","webpack:///./confirmation/withConfirmationMessages.js","webpack:///./confirmation/withConfirmationData.js","webpack:///./utility/formator.js","webpack:///./confirmation/withPageTrack.js","webpack:///./stores/AppStore.js","webpack:///./confirmation/ConfirmationCheckmark.js","webpack:///./confirmation/ConfirmationAmount.js","webpack:///./confirmation/ConfirmationAmountGiftAid.js","webpack:///./confirmation/ConfirmationMessage.js","webpack:///./confirmation/SuccessView.js","webpack:///./setup/utils/modalUtils.js","webpack:///./routes/configureHistory.js","webpack:///./components/offerDetail.js","webpack:///./utility/personalizedMessages.js","webpack:///./confirmation/withCurrentPageUpdate.js","webpack:///./pages/member/confirmation.js","webpack:///./components/ppcc/ppcc.js","webpack:///./utility/cpl.js","webpack:///./components/Disclaimer.js","webpack:///./components/MessageWithHtml.js","webpack:///./utility/languageSelector.js","webpack:///./components/languageSelectorMenu.js","webpack:///./components/footer/footerLinks.js","webpack:///./components/footer/footer.js","webpack:///./dispatcher/AppDispatcher.js","webpack:///./confirmation/ConfirmationBody.js","webpack:///./confirmation/withPostTransactionRequest.js","webpack:///./utility/authUtils.js","webpack:///./components/cancelAndReturn.js","webpack:///./fpti/fptiConstants.js","webpack:///./components/CloseButton.js","webpack:///./components/amount/amountUtils.js","webpack:///./utility/constants.js","webpack:///./utility/getSocialCampaign.js","webpack:///./components/socialShare/socialShareEmail.js","webpack:///./components/socialShare/socialShareMobile.js","webpack:///./components/socialShare/socialShareFacebook.js","webpack:///./components/socialShare/socialShareMessenger.js","webpack:///./components/socialShare/socialShareWhatsapp.js","webpack:///./components/socialShare/socialShareTwitter.js","webpack:///./components/socialShare/socialShareCopyLink.js","webpack:///./setup/lib/copyToClipBoard.js","webpack:///./components/CopyLink.js","webpack:///./components/socialShare/socialShare.js","webpack:///./confirmation/ConfirmationSocialShare.js","webpack:///./components/subHeader.js","webpack:///./components/CharityLogo.js","webpack:///./components/headerDNW.js","webpack:///./components/GN/GNCSubheader.js","webpack:///./components/GN/GNSubheader.js","webpack:///./components/GN/gnHeader.js","webpack:///./components/common/DonateHeader.js"],"names":["ConfirmationTitle","props","size","style","margin","message","propTypes","PropTypes","string","changeAmount","item","AppDispatcher","handleViewAction","actionType","AppConstants","changeSymbol","changeCode","changeFormatedAmount","changeRecurring","changeSelectedRecurringFrequency","changeRecurringModalStatus","changeCoverFee","changeAnonymousStatus","changeFeeAmount","changeFormatedFeeAmount","changeAmountBeforeFee","changeNote","changeCountry","updateConfirmation","updateCurrentPage","updateServerErrors","updatePaymentError","updateFundingOptions","updateEmail","updateBillingAddress","updateDonationAmountType","donationAmountType","updateGiftaidItFlag","updateShareAddress","updateAddCardError","updateSelectedProgram","changeCardSpec","saveFormData","updateSelectedPresetButtonId","updateThreeDSData","showLanguageSelector","updateOrderStatus","updatePPCCStatus","polyfillFetch","url","options","fetchPolyfill","sanitizeInPlace","node","dompurify","sanitize","IN_PLACE","sanitizeURL","dirtyNode","document","createElement","setAttribute","clean","getAttribute","sanitizeOrgName","input","replace","e","show","selector","display","elementsToShow","querySelectorAll","i","length","hide","elementsToHide","objectOrArrayToQueryString","arrOrObj","prefix","s","add","name","r20","key","value","val","encodeURIComponent","Array","buildParams","join","obj","l","rbracket","test","addClass","classNames","elementsSelected","classList","removeClass","remove","fetcher","csrf","querySelector","dataset","fireEvent","headers","window","fetch","location","href","indexOf","then","response","handleErrors","status","returnPath","renderURL","pathname","history","pushState","reload","eventName","event","createEvent","initEvent","dispatchEvent","getElement","selectorOrElement","HTMLElement","nodeType","ownerDocument","isElement","scrollElementIntoView","element","scrollIntoView","behavior","_noOpFunction","safeScrollElement","scrollTo","getPosition","xPosition","yPosition","offsetLeft","scrollLeft","clientLeft","offsetTop","scrollTop","clientTop","offsetParent","x","y","scrollY","Number","isNaN","scroll","top","appendCdnHostName","templateData","cdnHostName","shouldRTL","PayPalStyleSheet","StyleSheet","create","cssInJSObject","rest","rtlConvertInline","setShouldRTL","newVal","rtlConvert","contextLocalityDir","addShake","setTimeout","showSpinnerOverlay","waitTextEl","getElementById","focus","outline","onkeydown","outlineOffset","keyCode","activeElement","preventDefault","setFocus","elements","elementWrapper","focusable","firstFocusableEl","find","el","type","onblur","hideSpinnerOverlay","updateDonation","redirecturl","clearSavedFormData","data","token","amount","appStore","getDonationAmount","getDonationAmountType","currencyCode","donationCode","donationNote","getDonationNote","recurring","getDonationRecurring","addCardError","getAddCardError","giftAidItFlag","getGiftaidItFlagStatus","selectedProgram","getSelectedProgram","selectedPresetButtonId","getSelectedPresetButtonId","selectedRecurringFrequency","getSelectedRecurringFrequency","coverFeeEnabled","feePayer","isOptInCoverFee","feeCurr","getDonationCode","feeAmount","getFeeAmount","rawAmount","getAmountBeforeFee","anonymousEnabled","anonymousStatus","getAnonymousStatus","updateUrl","method","body","JSON","stringify","catch","failureUrl","handleLogIn","donationAmount","isAmountGreaterThanZero","getParameterByName","sdkMeta","targetMeta","handleGuestCountryChange","handleTokenReuse","paymentStatus","parseErrorResponse","errors","errorMessages","messages","allErrorCodes","details","push","uniqueErrorMsgs","reduce","uniqueErr","errMsg","some","errMsgObj","removeDuplicateErrors","GENERIC_ERROR","parseValErrResp","dump","errorData","allError","errorCode","code","getErrFields","allFields","fields","isLTR","waitForElementToDisplay","time","callback","observeUntilEventObserved","targetNode","MutationObserver","mutations","observer","observe","getInitialDataInDom","initialDataInDom","parse","innerHTML","PendingWarning","align","Illustration","PendingView","worldReady","useContext","WorldReadyContext","bodyMessage","isNna","country","MessageFormat","id","format","ConfirmationView","illustration","xs","className","ConfirmationBody","handleRedirect","func","orgName","returnTo","returnTextMember","withConfirmationData","withConfirmationMessages","withTheme","illustrations","critical","success","warning","cause_success","pp_fundraising_success","send_bubble_hearts","document_colored","donate","share","heart","STYLES","extraLargeDWEB","width","extraLargeInContext","extraLarge","height","large","medium","short","small","max","ariaHidden","classes","css","src","aria-hidden","bool","ReturnToMerchantLink","returnLabel","organizationName","returnUrl","label","onClick","trackLinkClick","LINK_NAME","RETURN","webpackPublicPath","__webpack_public_path__","WrappedComponent","theme","isInContext","isPopupMode","onComplete","postBackData","_get","transactionDetails","tx","txn_id","st","payment_status","amt","mc_gross","cc","mc_currency","cm","custom_data","item_number","item_name","isExternalFlow","xprops","closeWindow","close","isIframeMode","parent","isSdkMode","Boolean","opener","isdesktop","outerWidth","isFullPageRedirectionMode","isMobileOrInContext","ismobile","istablet","isMobileOrTablet","isMWebNoCancelURL","charityCancelUrl","isMWebNoReturnURL","charityReturnUrl","isNotFullScreen","isNotAtMaxWidth","screen","availWidth","availHeight","outerHeight","results","RegExp","exec","decodeURIComponent","getParametersFromUrl","queryString","decodeURI","rawTemplateData","_isEmpty","giftAid","_set","webscrData","giftAidAddress","localsMessagesNode","content","locals","personalized","getPersonalizedMessagesAsContentLoaderStandard","init","charityName","er","donationId","donorCoversFee","isAtLandingPage","toString","AppActions","coverFee","formatedFeeAmount","formatAmount","currency","symbol","donationSymbol","note","recurringStatus","recurringEnabled","enablePresetAmounts","presetAmounts","donateContext","amount_type","amount_options","map","includes","isOldButtonFactory","currencyLists","localsMessages","templateName","console","warn","localsAllMessages","path","replaceAll","parseMessages","guestLocalsMessages","getWorldReady","guestMessages","guestsignup","nationalIds","_map","createAccountPreProps","mainTitle","mainBlurb","itsFreeLine","mainTitle2","createAccountCheckboxContent","createAccountHelp1","label1","label2","legalBlurbHTML","legalBlurbWithFeeInformationDoc","incentiveTitle","incentiveCreateAccountCheckboxContent","incentiveTerms","labeldob","labelnationality","dobPattern","dobHelp","labelocc","legalOnlyHTML","consentBlurbHTML","labelNationalIdType","labelNationalIdNumber","defaultIdType","passwordWarnings","_MISMATCH","_IS_NULL","_TOO_SHORT","_TOO_LONG","_CONTAINS_REPEATED_CHARACTERS","_CONTAINS_NUMBER_SEQUENCE","_CONTAINS_LETTER_SEQUENCE","_CONTAINS_NUMBER_LETTER_SEQUENCE","_IS_BLACKLISTED","_CONTAINS_SPACES","_HAS_ILLEGAL_CHARACTERS","_LEGAL_CHECKBOX","_REQUIRED_DOB","_INVALID_DOB","_OCCUPATION","_NATIONALITY","_HINT1","_HINT2","_HINT3","_NATIONAL_ID_TYPE","_NATIONAL_ID_NUMBER","createAccountPost","pplogo","mainTitle1","mainTitle3","notNow","buttonText","ca","locale","brand","language","cp","path2","toUpperCase","cpf","warnings","_REQUIRED_CPF","_INVALID_CPF","guestLabels","guestHelp","help","guestCaptcha","captcha","getCurrencySymbol","symbols","ppccLookupRequired","json","result","isPPCC","DonateAppActions","isPartnerFlow","hasPartnerSource","UserDetailsBanner","firstName","isOneTouchUser","sup","innerMessage","NOT_YOU","additionalData","FPTI_TAGS","AUTH_STATE","authState","VERSION","sessionDeprecationEnabled","logout","getHardLogoutUrl","state","bannerUrl","showCCErrorMessage","backgroundImageExists","this","gn_user_details_banner","gn_user_details_banner_no_border","user_details_banner","user_details_banner_no_border","userDetails","profilePhotoUrl","thumbnailUrl","loggedInMessage","createLoggedInMessage","isLandingPage","viewName","shouldShowBackButton","determineUserDetailsBannerClass","inverse","hasBanner","generic","handleNotYouLinkClick","Component","object","nnaExperienceStatus","pxp","showNnaExp","experiment","memberMandatory","AppStore","initializeWorldReady","worldReadyData","textContent","WorldReady","load","log","getCoverFeeOptInStatus","undefined","computeAmountAfterFee","parseFloat","normalizeNumber","setFeeAmountInStore","flatFee","feeRate","TemplateData","formatedFeeAmountValue","formatInputAmount","updateDonationAmount","formatedAmount","restoreDonationAmount","optOutCoverFee","shouldSelectPresetAmount","ReceiverEligibilityErrorTile","data-testid","isGNC","product","PRODUCT","GENEROSITY_NETWORK_CHARITIES","isBrandedCampaign","BRANDED_CAMPAIGN","isPPFundraising","PP_FUNDRAISING","isCampaigns","DONATE_BUTTON_CAMPAIGN","isPPUnlistedCampaign","PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN","isPPCampaign","PAYPAL_FUNDRAISER_LISTED_CAMPAIGN","GENEROSITY_NETWORK","isCheckoutRail","prepareOrderParams","addressSharingConsent","currencySymbol","getDonationSymbol","ppgfMessage","directMessage","getMaximumDonationAlertMessage","formatedMaximumAmount","formatCurrencyWithSymbol","maximumDonationAmount","maximumDonationCurrency","getPersonalizedNoteToPayeeLabel","psMessages","getPersonalizedMessages","GN_CONTENT_TOUCHPOINT","isHtml","noteToPayeeLabel","getPersonalizedAnonymousContent","anonymousLabel","anonymousTooltip","tooltip","getDismissEventName","EVENT_NAME","DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED","DW_GIVING_GUEST_FORM_DISMISS_PRESSED","DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED","DW_GIVING_DONATE_SETUP_DISMISS_PRESSED","BackButton","useHistory","initialData","isProgressive","onboardingEnabled","selectedCountry","buttonBack","svgIconComponent","BACK","hideLandingPage","currentState","finally","buttonType","parseUrlQuery","search","queryParams","_fromPairs","_compact","slice","split","bannerType","logoBanner","banner","backgroundBanner","bannerv2","mobileBanner","BannerHeader","children","Banner","bannerURL","backgroundImage","Avatar","logoURL","initialLogo","initialColor","ImgLogo","InititalsLogo","IconLogo","oneOfType","arrayOf","isRequired","donationName","donorIpCountry","fptPageName","npid","productId","integrationIdentifier","supportedRecurringFrequencies","getUiType","AMOUNT","getFeeDataFromTemplateData","FEE_PAYER","FEE_AMOUNT","FEE_CURRENCY","getFeeData","NONANONYMOUS","getNoteData","NOTE_ALLOWED","noteFieldDisplayed","NOTE_ADDED","getRecurringStatus","IS_RECURRING","getEnabledRecurringFrequency","ENABLED_FREQUENCY","SELECTED_FREQUENCY","getFeePayer","addFeature","feature","fpti","FEATURE","getLandingPageData","PAGE_SPEC","LANDING_PAGE","getThreeDSData","fundingOpts","getFundingOptions","contingencies","threeDSContingency","_find","action","FI_ID","FI_TYPE","FI_NETWORK","FI_OPERATION","IS_3DS_ELIGIBLE","THREE_DS_VERSION","THREE_DS_REF_ID","URL","getExternalFlowData","FPTI_PRODUCT","FLOW","INTEGRATION_IDENTIFIER","DONOR_IP_COUNTRY","ACCOUNT_TYPE","isLoggedInUser","CURRENCY","CAMPAIGN_ID","NPID","CHARITY_NAME","getToken","TOKEN","updateGlobalRespDuration","respDuration","globalRespDuration","resp_duration","Object","assign","updateGlobalFPTI","getDefaultPageSpec","isOnboardingFlow","pageSpec","page","ONBOARDING_GUEST_SUCCESS_PAGE","GUEST_SUCCESS_PAGE","ONBOARDING_GUEST_PENDING_PAGE","GUEST_PENDING_PAGE","ONBOARDING_GUEST_FORM","GUEST_FORM","getConfirmationData","confirmationData","TXN_ID","confirmationNumber","SENDER_ID","payer_id","orderId","ORDER_ID","isOfacPending","DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN","DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN","withWorldReady","analytics","PAYPAL","instance","startClientErrorTracking","trackEventWithData","spec","ACTION","fptiData","tsrce","recordEvent","event_name","trackPageLoad","globalData","onceData","fromSetup","recordImpression","trackClick","recordClick","donationAmountEditable","trackLandingPageIM","shouldTrackExternalFlowData","DW_GIVING_DONATE_SETUP_SCREEN_SHOWN","DONATE_LANDING_SCREEN_SHOWN","SELECTED_PRESET_BUTTON_ID","UI_TYPE","AMOUNT_EDIT_ALLOWED","SOURCE","trackRecurringFrequencySelectionClick","DONATION_PAYMENT_VIEW_LANDING_FREQUENCY_PRESSED","trackGuestFormIM","isOnboarding","DW_GIVING_GUEST_FORM_SCREEN_SHOWN","DONATE_GUEST_FORM_SCREEN_SHOWN","OFFER_TYPE","trackMemberReviewPageIM","statusCode","fromUOB","STATUS","STATUS_CODE","DONATE_REVIEW_SCREEN_SHOWN","MEMBER_REVIEW_PAGE","trackErrorIM","errorMessage","fieldName","recordError","trackError","DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED","SCREEN_NAME","DW_GIVING_DONATE_SETUP_SCREEN","DW_GIVING_DONATE_GUEST_FORM_SCREEN","ERR_FIELD","ERR_CODE","ECCD","ERPG","ERR_DESC","trackThreeDSIframeIM","threeDSRespDuration","confirmationStatus","THREE_DS_IFRAME_ONBRD","THREE_DS_IFRAME","THREE_DS_RESP_DURATION","CHALLENGE_STATUS","DONATE_THREE_DS_IFRAME_SHOWN","trackConfirmationPageIM","isSignUp","flow","IS_SIGNUP","DONATION_CONFIRMATION_PAGE_IMP","trackSocialShareIM","enableMatchSocialShare","DONATE_MATCH_SOCIAL_SHARE_SCREEN_SHOWN","DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN","trackCaptureOrderPageIM","pgrp","CAPTURE_ORDER_PAGE","PAGE_NAME","PAGE_GROUP","trackErrorPageIM","trackPageIM","trackAnonymousCheckboxClick","LINK","ANONYMOUS_CHECKBOX","CHECKBOX","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED","DONATION_ANONYMOUS_CHECKBOX_CHECK_PRESSED","DONATION_ANONYMOUS_CHECKBOX_UNCHECK_PRESSED","trackCoverFeeCheckboxClick","COVER_FEE_CHECKBOX","trackDonateWithCardClick","DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED","DONATION_PAYMENT_VIEW_LANDING_CARD_PRESSED","trackDonateWithPayPalClick","DW_GIVING_DONATE_SETUP_NEXT_PRESSED","DONATION_PAYMENT_VIEW_LANDING_PAYPAL_PRESSED","trackNextClickForCheckout","trackSignupChekboxClick","SWITCH","trackPaymentSubmitClick","isNNA","link","DW_GIVING_GUEST_FORM_DONATE_PRESSED","DONATION_PAYMENT_GUEST_FORM_DONATE_PRESSED","GUEST_FORM_PAYMENT_SUBMIT_BUTTON","trackOnbrdPaymentSubmitClick","isCvvSent","IS_CVV_SENT","linkName","PAGE_LINK","PAGE_GROUP_LINK","trackThreeDsDdcStart","DONATE_THREE_DS_DDC_START","trackThreeDsDdcComplete","DONATE_THREE_DS_DDC_COMPLETE","trackThreeDsDdcFailure","DONATE_THREE_DS_DDC_FAILURE","trackThreeDsLookupStart","DONATE_THREE_DS_LOOKUP_START","trackThreeDsLookupComplete","timestamp","DONATE_THREE_DS_LOOKUP_COMPLETE","trackDonateLandingButtonClick","DONATION_PAYMENT_VIEW_LANDING_DONATE_PRESSED","trackGuestReviewPageDonateClick","isCvvSend","DONATE_GUEST_REVIEW_PROCESS_DONATE_CLICK","track3DSProceedToPayment","DONATE_THREE_DS_PROOCEED_TO_PAYMENT","trackOrganizerUpdatesLoad","isPopulated","DONATE_LANDING_UPDATES_MODULE_SHOWN","STATE","LOADING_STATES","POPULATED","EMPTY","trackUpdatesReadMorePressed","DONATE_LANDING_UPDATES_READ_MORE_PRESSED","trackUpdatesShowMorePressed","DONATE_LANDING_UPDATES_SHOW_MORE_PRESSED","trackUpdatesLikePressed","updateId","positiveLike","likesCount","DONATE_LANDING_UPDATES_LIKE_PRESSED","DONATE_LANDING_UPDATES_LIKE_PRESSED_COMPLETED","UPDATE_ID","LIKE","UNLIKE","COUNT","trackOrganizerUpdatesListIM","count","DONATE_LANDING_UPDATES_LIST_SHOWN","trackUpdatesListSelectionPressed","DONATE_LANDING_UPDATES_LIST_SELECTION_PRESSED","trackUpdatesListLikePressed","DONATE_LANDING_UPDATES_LIST_LIKE_PRESSED","trackUpdatesListDismissPressed","reason","dismissMethod","CLOSE_SHEET_REASONS","BACKDROP_CLICK","DISMISS_METHODS","BACKGROUND","CLOSE","DONATE_LANDING_UPDATES_LIST_DISMISS_PRESSED","DISMISS_METHOD","trackUpdatesDetailDismissPressed","DONATE_LANDING_UPDATES_DETAIL_DISMISS_PRESSED","trackUpdatesLoginDismissPressed","DONATE_LANDING_UPDATES_LOGIN_DISMISS_PRESSED","trackUpdatesDetailIM","DONATE_LANDING_UPDATES_DETAIL_VIEW_SHOWN","trackUpdatesLoginIM","DONATE_LANDING_UPDATES_LOGIN_VIEW_SHOWN","trackUpdatesLoginButtonPressed","DONATE_LANDING_UPDATES_LOGIN_BUTTON_PRESSED","trackUpdatesLoginSignupPressed","DONATE_LANDING_UPDATES_LOGIN_SIGNUP_PRESSED","trackUpdatesLoadingError","DONATE_LANDING_UPDATES_LOADING_ERROR_SHOWN","sysColorUnselectedContrast","styles","disclaimerWrapper","maxWidth","disclaimer","VoucherFlowDisclaimer","color","lineBreak","ConfirmationTransactionId","transactionId","saveButton","justifyContent","OfferSaveButton","print","VOUCHER_PRINT","title","text","navigator","VOUCHER_SHARE","printPage","offerProgram","txnStatement","sharePage","handleClick","fontSize","React","OfferConfirmation","textAlign","txnId","SignUpAlert","useState","hideAlert","setHideAlert","buttonCloseMsgFmt","handleCloseButton","signUpStatus","closeButtonLabel","closeButton","successMessage","failMessage","ConfirmationReturnText","confirmation_reciept_wrapper","is_mobile","confirmationReceiptWrapper","returnText","ConfirmationReturnTo","DONATE_SUCCESS_MERCHANT_SITE_PRESSED","redirectUrl","returnto","PostTransaction","allowRedirect","setState","isRedirecting","removeEventListener","stopRedirect","handleKeyDown","keyPressed","which","KEY_DOWN","TAB","UP_ARROW","LEFT_ARROW","DOWN_ARROW","RIGHT_ARROW","hideSuccessPage","redirect","shouldShowSpinner","syncReturnUrl","redirectMethod","postBackForm","submit","redirectText","context","ref","form","postBackArray","defaultValue","postdata","keys","forEach","addEventListener","isEmpty","defaultProps","contextType","ConfirmationRedirect","autoRedirectMethod","autoRedirectUrl","DoneLink","doneContent","DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED","DONE","getSocialMessage","params","autoRedirect","footer","hostedButtonId","isVoucherFlow","signUpProps","personalizedMessages","campaignId","useEffect","endCustomCPLTrackingForConfirmationPage","isSocialShareLoading","setIsSocialShareLoading","setEnableMatchSocialShare","social","emailSubject","emailBody","mobileText","facebookMessage","twitterMessage","whatsappMessage","copyLinkHeader","copyLinkSubheaderBefore","copyLinkSubheader","copiedText","copyText","subheader","shareGeneric","shareWithMatch","unhosted","socialShareMessages","setSocialShareMessages","generalSocialShareMessages","matchSocialShareMessages","clientData","enableNewSocialSharingMsg","gn_donate_wrapper","donate_wrapper","confirmation","mobile_view","mobile_view_without_return_message","ppf","CloseButton","success_subheader","socialSharePreference","FEATURES","SOCIAL_SHARE_PREFERENCE","isLoading","flexDirection","padding","ConfirmationSocialShare","email","donationEmail","renderedView","CmHOC","giftaidFrequencyLabel","giftaidFlag","isSuccessView","rp_status","success_header","yourDonation","campaignTitle","frequencyLabel","receiptId","getPersonalizedContent","getReturnTextLabel","getReturnTextMemberLabel","getReturnToLabel","getTxnIdLabel","yourRPdonation","getYourRPDonationLabel","giftAidConfText","getGiftAidConfText","getYourDonationLabel","getSignupProps","orgSuccess","getOrgSuccess","donateGiftPercentage","getGiftAidItExtraAmount","finalUrl","donatedAmount","toFixed","getConfirmation","displayMyAccount","showAccountOverview","returnAutoRedirect","returnMethod","signUpSuccess","extraDonateAmount","getExtraDonateAmount","showMyAccount","griffinPhoneHandler","griffin","griffinRelativeTime","griffinDate","metadata","__getInitialData","clientMetadata","initGriffinPhone","initGriffin","date","initGriffinDate","timeZone","initGriffinRelativeTime","getGriffin","getGriffinPhoneHandler","getGriffinDate","getGriffinRelativeTime","initialDataNode","initialDataJSON","_getAmountValue","getCurrencyParts","currencyParts","getInitialData","formatNormalizedAmount","formatCurrency","CURRENCY_FORMAT","formatPercentage","formatNumber","parts","formatCurrencyNoDecimals","NUMBER_FORMAT","maximumFractionDigits","number","formatCurrencyAsString","prototype","hasOwnProperty","call","formatPhone","countryCode","nationalNumber","formatAsTyped","validatePhone","normalizedPhone","normalizePhoneNumber","validationResult","validatePhoneNumber","getPhoneNumberWithoutCountryCode","phoneNumber","firstSpaceIndex","substr","getDateFormat","dateMetadata","pattern","exchangeRateDecimalPoints","decimalPoint","exchangeRate","decimal","_includes","values","totalDecimals","index","formatRelativeDate","utcDate","Date","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","formatRelativeTime","unit","getTimeZone","getRemainingDays","now","Math","ceil","roundUpAndFormatCurrency","roundedUpValue","round","parseDateOnly","setHours","formatDate","withPageTrack","confData","isGuestUpgrade","updatedFlow","updatedResult","tag","tmpl","_alldata","field","DonationStore","EventEmitter","emitChange","emit","getAllData","getFormatedAmount","getRecurringModalStatus","recurringModalStatus","getFormatedFeeAmount","amountBeforeFee","getPostBackData","getCurrentPage","currentPage","getServerErros","serverErrors","getPaymentError","paymentError","getSignUpError","signUpError","fundingOptions","getEmail","getBillingAddress","billingAddress","getUserCountry","getShareAddress","shareAddress","DonationConstants","getCardSpec","cardSpec","getFormData","formData","getThreeDSContingency","getLanguageSelectorState","languageSelectorState","getOrderStatus","orderStatus","getPPCCStatus","ppccStatus","dispatcherIndex","register","payload","trim","ConfirmationCheckmark","illustrationSize","ConfirmationAmount","ConfirmationAmountGiftAid","GIFT_AID","ConfirmationMessage","role","SuccessView","hideLeaveModal","createBrowserHistory","getUserConfirmation","showLeaveModal","waitForElement","modalUtils","block","targetLocation","offerWrapper","paddingBottom","accordionWrapper","marginRight","marginLeft","backgroundColor","backgroundClip","offerDivider","borderColor","offerHeader","wordBreak","messageFrom","paddingTop","description","OfferDetail","rightSymbol","$","row","click","__html","VOUCHER","clientOfferType","businessName","subTitle","offerTextAmount","formattedValue","formatOfferTextAmount","aMessageFrom","titleMessage","amountText","heading","as","dangerouslySetInnerHTML","createMarkup","cache","getTouchpoint","touchpointCode","touchpoint","touchpoint_code","merge","includeImpressionUrl","sort","contentKey","getContent","useHTML","trackingDetails","impressionUrl","tracking_details","impression_url","hasPersonalizedMessages","get","withCurrentPageUpdate","MemberConfirmationPending","withPostTransactionRequest","MemberConfirmationRecurring","MemberConfirmationSuccess","PPCC","dispatcherMessages","isHeader","showTooltip","setShowTooltip","toolTipMsgFmt","unregister","verifiedIcon","logPerformance","startTime","networkInfo","deviceAndNetworkInfo","connection","screen_width","innerWidth","documentElement","clientWidth","screen_height","innerHeight","clientHeight","network_effectiveType","effectiveType","logPerformanceData","tt","performance","timing","loadEventEnd","navigationStart","view","t11","et","pt","ru","referrer","cd","colorDepth","sw","sh","dw","devicePixelRatio","dh","bw","bh","error","startCustomCPLTrackingForConfirmationPage","startCPLTracking","uicomp","uitype","endCPLTracking","Disclaimer","setContent","terms","pop","DW_GIVING_DONATE_SETUP_TERMS_PRESSED","array","MessageWithHTML","messageFormatter","DOMPurify","languagesList","LanguageSelector","lang_options","isOpen","setIsOpen","currentLanguage","languageCode","lang","languageName","getCurrentLangName","onSelection","updatedUrl","urlParams","clientState","updatePageLanguageByLocale","getLocale","onClose","Help","secondary","target","Security","ReportInappropriateContent","countryForReportLink","Feedback","handleQualtrics","Imprint","CopyRight","currentYear","getFullYear","Privacy","Legal","Policy","CombinedFinancialServicesText","isLanguageSelectorEnabled","setIsLanguageSelectorEnabled","footer_in_context","mobile_footer","footer_container","mobile_footer_container","fluid","md","REPORT_LINK","reloadQualtrics","Dispatcher","dispatch","source","marginBottom","postTransactionUrl","serverRequest","isComponentMounted","guestSignUp","recurringConfirmationId","_isFunction","abort","abortRequestPostTransaction","requestPostTransaction","getForcedLoginUrlWithoutOt","forcedLoginUrlWithoutOt","hardLogoutUrl","isAuthenticatedUser","shouldShowUserBanner","fromUL","CancelAndReturn","CANCEL","DONATE_LANDING_MERCHANT_SITE_PRESSED","cancelurl","displayMe","isLanding","pp_cancel_btn_wrapper","is_landing","isGuest","cancelButtonWrapperClass","handleCancel","GUEST_SIGNUP_SUCCESS_PAGE","GUEST_FAILURE_PAGE","comp","MEMBER_SUCCESS_PAGE","MEMBER_PENDING_PAGE","MEMBER_FAILURE_PAGE","RECURRING_SUCCESS_PAGE","CROSS_BORDER_PAGE","UNILATERAL_ERROR_PAGE","WEBSCR_ERROR_PAGE","GENERIC_ERROR_PAGE","CRS_ERROR_PAGE","CPL_PAGE_SPEC","TESLA_GUEST_FORM","ACCOUNT_HOME","ANONYMOUS_TOOLTIP","CHANGE_COUNTRY","CURRENCY_CONVERSION","NOTE_PAD","ONBOARDING_FORM_PAYMENT_SUBMIT_BUTTON","PRESET_AMOUNT","PROGRAM_SELECTED","RECURRING_CHECKBOX","SOCIAL_SHARE","SOCIAL_SHARE_DISMISS","UNIFIED_LOGIN","CAMPAIGN","CHALLENGE_END_TIME","CHALLENGE_START_TIME","COUNTRY","CONTINGENCY_RESOLVED","EXPERIMENT_ID","RESP_DURATION","SCREEN","THREE_DS_DCC_START_TIME","THREE_DS_DCC_END_TIME","THREE_DS_LOOKUP_END_TIME","THREE_DS_LOOKUP_START_TIME","THREE_DS_SPINNER_START_TIME","THREE_DS_SPINNER_END_TIME","TREATMENT_ID","UOB_BUNDLE_TYPE","CLOSE_BUTTON","ESC","SWIPE_DOWN","CTF","RECURRING","PRESET","ANONYMOUS","CHARITY_NOTE","DONATION_AMOUNT_EDITABLE","GUEST","MAILING_ADDRESS","isDarkButton","formatAmountFromServerDNW","noDecimals","digits","negativeDigits","digitsAfterDecimalPoint","parseInt","getMinimumDonationErrorMessage","formattedDollarOne","validateMinimumDonationAmount","minimumDonationAmount","showValidationError","validationErrorMessage","validationErrorCode","validateMaximumDonationAmount","getNormalizedNumber","normalizedNumber","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","ccNumber","required","maxlength","expirationDate","csc","minlength","DONATE_GIFTAID_IT_EXTRA_AMOUNT","PPGF_DISCLAIMER_TOUCHPOINT","NNA_CONTENT_TOUCHPOINT","PRODUCT_TYPE","DBUTTON","DBUTTONC","SEND_MONEY_RECURRING_DONATION","DONATE_BUTTON","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","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","DONATE_SUCCESS_SHARE_MESSAGE","DONATE_LANDING_UPDATES_DETAIL_LIKE_PRESSED","DONATE_LANDING_UPDATES_LOADING_ERROR_RETRY_PRESSED","SPACE","ENTER","AU_CRS","ABORTED","FAILURE","SUCCESS","ABORTED_STATUS_CODE","FAILURE_STATUS_CODE","SUCCESS_STATUS_CODE","SINGLE_TAX_RESIDENCY","MULTI_TAX_RESIDENCY","ALLOWED_IMAGE_TYPES","MAX_IMAGE_SIZE","KILOBYTE","MEGABYTE","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","getSocialCampaign","socialTitle","domain","paypalHostName","shareableUrl","mobile","mobileTitle","facebook","facebookMessenger","whatsapp","twitter","copyLink","copyLinkCopy","copyLinkCopied","sheet","SocialShareEmail","handleAnalytics","linkTitle","iconLink","SocialShareMobile","handleMobileClick","SocialShareFacebook","handleSocialLinkClick","SocialShareMessenger","SocialShareWhatsapp","SocialShareTwitter","SocialShareCopyLink","handleOpenCopyModal","copyToClipboard","sourceId","range","selection","sourceElement","userAgent","match","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","setSelectionRange","readOnly","select","execCommand","sysColorBackgroundSurfaceHover","PAYPAL_THEME","sysColorPrimaryMain","copyLinkFieldContainer","borderBottom","paddingLeft","paddingRight","inContext","inContextCopyLinkHeight","maxHeight","copyLinkField","alignItems","border","borderStyle","copyLinkTextarea","resize","overflow","flex","copyLinkFieldIconContainer","zIndex","alignSelf","copyLinkFieldIcons","lineHeight","cursor","minWidth","notCopied","background","copied","copyLinkDescription","CopyLink","isCopied","setIsCopied","setPadding","copyRef","useRef","current","queryCommandSupported","copy","sysColorBackgroundHighContrast","socialContainer","socialContainerMobile","shareMenu","copyLinkModal","copyLinkContainer","marginTop","SocialShare","shareUrl","socialCampaign","isMobile","isModalOpen","setIsModalOpen","isShareMenuOpen","setIsShareMenuOpen","encodedUrl","appId","emailUrl","facebookUrl","fbMessengerUrl","whatsappUrl","twitterUrl","socialShareAltText","isActionMenu","renderMode","socialItems","itemLeft","messenger","position","opacity","open","handleMobileSocialShareButtonClick","handleSocialShareSheetClose","toLowerCase","handleMenuSelection","containerClassName","handleSocialAnalytics","getTitleMessages","socialMessages","socialShareUrl","merchantId","headerClasses","externalFlow","social_title","success_share_button","flexWrap","rowGap","SubHeader","OName","purposeLabel","donateto","support","formatOrgName","formattedDonationName","formattedOrgName","formattedDonationId","hasLogo","subHeaderClasses","getFormattedOrgName","shouldShowOrgName","strong","shouldShowDonationId","centedImage","CharityLogo","logoUrl","altText","sm","alt","HeaderDNW","subHeaderLabel","data-test-id","GNCSubheader","purpose","level","organization","GNSubheader","GNHeader","DonateHeader"],"mappings":"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","file":"donate~member.8e37a2e3e7cbdacdc8ba.bundle.js","sourcesContent":["import React from 'react';\nimport { HeadingText } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\n\nexport default function ConfirmationTitle(props) {\n return (\n \n {props.message}\n \n );\n}\n\nConfirmationTitle.propTypes = {\n message: PropTypes.string,\n};\n","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 { 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 let 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 let 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 templateData from './getTemplateData';\n\nexport const appendCdnHostName = (url) => {\n return `${templateData.cdnHostName}${url}`;\n};\n","/*\n * paypalphrodite = paypal + aphrodite\n * This is our little wrapper around aphrodite so we can customize it.\n * In particular it allows us to\n */\n\nimport { css, StyleSheet } from 'aphrodite';\nimport rtlConvert from 'rtl-css-js';\nimport templateData from './getTemplateData';\n\nlet shouldRTL = false;\n// instead of aphrodite's StyleSheet, expose our own\nconst PayPalStyleSheet = { ...StyleSheet, create: customCreate };\n\nfunction setShouldRTL(newVal) {\n shouldRTL = newVal;\n}\n\nfunction customCreate(cssInJSObject, ...rest) {\n return StyleSheet.create(rtlConvertInline(cssInJSObject), ...rest);\n}\n\nfunction rtlConvertInline(cssInJSObject) {\n if (shouldRTL) {\n return rtlConvert(cssInJSObject);\n }\n return cssInJSObject;\n}\n\nfunction initializeRtl() {\n const { contextLocalityDir = '' } = templateData || {};\n setShouldRTL(!(contextLocalityDir === 'ltr'));\n}\n\ninitializeRtl();\n\nexport { setShouldRTL, rtlConvertInline, css, PayPalStyleSheet as StyleSheet };\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 let 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 let 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 showSpinnerOverlay();\n // console.log('DATA result', result);\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 let 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 let 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 let uniqueErrorMsgs = errorMessages.reduce((uniqueErr, errMsg) => {\n if (!uniqueErr.some((errMsgObj) => errMsgObj.value === errMsg.value)) {\n uniqueErr.push(errMsg);\n }\n return uniqueErr;\n }, []);\n return uniqueErrorMsgs;\n};\n\nexport const parseErrorResponse = (errors, errorMessages) => {\n let messages = [],\n allErrorCodes = errors.details;\n\n for (let i in allErrorCodes) {\n let 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 let 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 let messages = [],\n allErrorCodes = errors.errorData || [];\n for (let allError in allErrorCodes) {\n let 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 let 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 let allFields = [],\n allErrorCodes = errors.errorData || [];\n for (let 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 React from 'react';\nimport Illustration from './illustrations/Illustration';\nimport { Row } from '@paypalcorp/pp-react';\n\nfunction PendingWarning() {\n return (\n \n \n \n );\n}\n\nexport default PendingWarning;\n","import React, { useContext } from 'react';\nimport templateData from '../utility/getTemplateData';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport ConfirmationBody from './ConfirmationBody';\nimport ConfirmationTitle from './ConfirmationTitle';\nimport ConfirmationView from './ConfirmationView';\nimport PendingWarning from '../components/PendingWarning';\nimport PropTypes from 'prop-types';\nimport withConfirmationData from './withConfirmationData';\nimport withConfirmationMessages from './withConfirmationMessages';\nimport withTheme from '../components/withTheme';\nimport isNna from '../utility/nna';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nfunction PendingView(props) {\n const worldReady = useContext(WorldReadyContext);\n\n const bodyMessage = isNna(templateData.country)\n ? new MessageFormat(worldReady, {\n id: 'confirmation.pending.label.pendingNna',\n }).format()\n : new MessageFormat(worldReady, {\n id: 'confirmation.pending.label.pending2',\n }).format();\n\n const PendingMessage = () => (\n <>\n \n \n \n \n \n \n \n \n \n \n \n );\n\n return (\n }\n message={}\n />\n );\n}\n\nPendingView.propTypes = {\n handleRedirect: PropTypes.func,\n orgName: PropTypes.string,\n returnTo: PropTypes.string,\n returnTextMember: PropTypes.string,\n};\n\nexport default withConfirmationData(\n withConfirmationMessages(withTheme(PendingView), 'pending')\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport classNames from 'classnames';\nimport { appendCdnHostName } from '../../utility/geoUtils';\n\nconst illustrations = {\n critical: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/empty-critical.svg'\n ),\n 'more-info': appendCdnHostName('/paypal-ui/illustrations/svg/more-info.svg'),\n 'credit-cards': appendCdnHostName(\n '/paypal-ui/illustrations/svg/credit-cards.svg'\n ),\n success: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/empty-success.svg'\n ),\n warning: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/empty-warning.svg'\n ),\n cause_success: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/cause-success-desktop.svg'\n ),\n pp_fundraising_success: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/cause-success-mobile.svg'\n ),\n send_bubble_hearts: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/send-bubble-hearts.svg'\n ),\n document: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/document.svg'\n ),\n document_colored: appendCdnHostName(\n '/paypal-ui/pictograms/multicolored/svg/documents.svg'\n ),\n donate: appendCdnHostName(\n '/paypal-ui/pictograms/multicolored/svg/donate.svg'\n ),\n share: appendCdnHostName('/paypal-ui/pictograms/multicolored/svg/share.svg'),\n heart: appendCdnHostName('/paypal-ui/pictograms/multicolored/svg/heart.svg'),\n};\n\nconst STYLES = StyleSheet.create({\n extraLargeDWEB: {\n width: 392,\n },\n extraLargeInContext: {\n width: 343,\n },\n extraLarge: {\n width: 336,\n height: 168,\n },\n large: {\n width: 144,\n },\n medium: {\n width: 108,\n },\n short: {\n width: 96,\n },\n small: {\n width: 72,\n },\n max: {\n width: '100%',\n },\n});\n\nexport default function Illustration({\n type,\n size,\n className,\n ariaHidden,\n ...rest\n}) {\n if (!size) {\n size = 'large';\n }\n\n const classes = classNames(className, {\n [css(STYLES.extraLargeDWEB)]: size === 'extraLargeDWEB',\n [css(STYLES.extraLargeInContext)]: size === 'extraLargeInContext',\n [css(STYLES.extraLarge)]: size === 'extraLarge',\n [css(STYLES.large)]: size === 'large',\n [css(STYLES.medium)]: size === 'medium',\n [css(STYLES.short)]: size === 'short',\n [css(STYLES.small)]: size === 'small',\n [css(STYLES.max)]: size === 'max',\n });\n\n return (\n \n );\n}\n\nIllustration.propTypes = {\n type: PropTypes.string,\n size: PropTypes.string,\n className: PropTypes.string,\n ariaHidden: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@paypalcorp/pp-react';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\n\nconst ReturnToMerchantLink = ({ returnLabel, organizationName, returnUrl }) => {\n const label = returnLabel.replace('{orgName}', organizationName);\n\n const handleReturnToMerchant = () => {\n trackLinkClick(LINK_NAME.RETURN);\n\n if (returnUrl.indexOf('http') !== 0 && returnUrl.indexOf('//') !== 0) {\n returnUrl = '//' + returnUrl;\n }\n window.location.href = returnUrl;\n };\n\n return {label};\n};\n\nReturnToMerchantLink.propTypes = {\n returnLabel: PropTypes.string,\n organizationName: PropTypes.string,\n returnUrl: PropTypes.string,\n};\n\nexport default ReturnToMerchantLink;\n","if (window.webpackPublicPath) {\n __webpack_public_path__ = window.webpackPublicPath; // eslint-disable-line no-undef\n}\n","import React from 'react';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react';\nimport { ThemeProvider } from '@emotion/react';\n\nfunction withTheme(WrappedComponent, theme = 'v2') {\n const ThemedComponent = (props) => {\n return (\n \n \n \n );\n };\n return ThemedComponent;\n}\n\nexport default withTheme;\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 var isNotAtFullScreen = isNotAtMaxHeight && isNotAtMaxWidth;\n return isNotAtFullScreen;\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 let 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","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 const data = parseMessages(templateName);\n return data;\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 (let ca in createAccountPreProps) {\n if (!createAccountPreProps[ca]) continue;\n if (typeof createAccountPreProps[ca] === 'string') {\n let 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 (let cp in createAccountPreProps[ca]) {\n let 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 (let ca in createAccountPost) {\n if (!createAccountPost[ca]) continue;\n if (typeof createAccountPost[ca] === 'string') {\n let 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 (let cp in createAccountPost[ca]) {\n let 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 { 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 const isPPCC = _get(result, 'data.clientData.ppccSetupStatus', '');\n return isPPCC;\n })\n .catch(() => {});\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@paypalcorp/pp-react-links';\nimport { BodyText } from '@paypalcorp/pp-react-text';\nimport templateData from '../../utility/getTemplateData';\nimport { showSpinnerOverlay } from '../../utility/helper';\nimport { getHardLogoutUrl, isOneTouchUser } from '../../utility/authUtils';\nimport { sanitize } from '../../utility/domUtils';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport BackButton from '../BackButton';\nimport { isInContext } from '../../utility/inContextDonation';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\nimport _isEmpty from 'lodash/isEmpty';\nimport classNames from 'classnames';\nimport { Avatar } from '@paypalcorp/pp-react';\nimport { Message } from '@paypalcorp/worldready-react';\n\nclass UserDetailsBanner extends Component {\n constructor(props) {\n super(props);\n this.state = {\n bannerUrl: templateData.bannerUrl,\n showCCErrorMessage: templateData.showCCErrorMessage,\n };\n }\n static propTypes = {\n userDetails: PropTypes.object,\n };\n\n createLoggedInMessage = (firstName) => {\n return isOneTouchUser() ? (\n {innerMessage}}\n firstName={sanitize(firstName)}\n />\n ) : (\n \n );\n };\n\n handleNotYouLinkClick = () => {\n showSpinnerOverlay();\n trackLinkClick(LINK_NAME.NOT_YOU, {\n additionalData: {\n [FPTI_TAGS.AUTH_STATE]: templateData.authState,\n [FPTI_TAGS.VERSION]: templateData.sessionDeprecationEnabled\n ? 'V2'\n : 'V1',\n },\n });\n this.logout();\n };\n\n logout = () => {\n window.location.href = getHardLogoutUrl();\n };\n\n determineUserDetailsBannerClass() {\n let backgroundImageExists = !_isEmpty(this.state.bannerUrl);\n return classNames({\n gn_user_details_banner: isExternalFlow() && !backgroundImageExists,\n gn_user_details_banner_no_border:\n isExternalFlow() && backgroundImageExists,\n user_details_banner: !isExternalFlow() && !backgroundImageExists,\n user_details_banner_no_border: !isExternalFlow() && backgroundImageExists,\n });\n }\n\n render() {\n const { userDetails = {} } = this.props;\n const firstName = userDetails.firstName || '';\n const profilePhotoUrl = userDetails.thumbnailUrl;\n const loggedInMessage = this.createLoggedInMessage(firstName);\n const isLandingPage = templateData.viewName === 'landing';\n const shouldShowBackButton =\n ((isInContext() && !this.state.showCCErrorMessage) || isExternalFlow()) &&\n !isLandingPage;\n\n return (\n
\n {shouldShowBackButton && (\n \n )}\n \n
\n
\n {loggedInMessage}\n
\n \n \n \n
\n
\n
\n
\n );\n }\n}\nexport default UserDetailsBanner;\n","import { isExternalFlow } from './productIntegrationUtils';\nimport templateData from './getTemplateData';\nimport AppStore from '../stores/AppStore';\n\nfunction isNna(country) {\n return (\n ['US'].indexOf(country) >= 0 &&\n templateData.nnaExperienceStatus &&\n !isExternalFlow() &&\n templateData?.pxp?.showNnaExp?.experiment &&\n !templateData.memberMandatory &&\n AppStore.getDonationRecurring() !== 'checked'\n );\n}\n\nexport default isNna;\n","import templateData from './getTemplateData';\nimport { WorldReady } from '@paypalcorp/worldready';\n\nlet worldReady;\n\nconst getLocale = () => {\n const { country = 'US', language = 'en' } = templateData;\n return `${language}-${country}`;\n};\n\nexport const initializeWorldReady = () => {\n let worldReadyData = JSON.parse(\n document.getElementById('worldReady').textContent\n );\n WorldReady.load(worldReadyData);\n console.log('WorldReady has loaded!');\n\n const locale = getLocale();\n worldReady = new WorldReady(locale);\n};\n\nexport const getWorldReady = () => {\n return worldReady;\n};\n","import AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport {\n formatAmount,\n formatInputAmount,\n normalizeNumber,\n} 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 }),\n formatedFeeAmountValue = formatInputAmount({\n value: feeAmount,\n currency: currencyCode,\n });\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, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { HeadingText } from '@paypalcorp/pp-react';\nimport ReturnToMerchantLink from '../../components/returnToMerchant';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport CloseButton from '../../components/CloseButton';\nimport {\n Message,\n Context as WorldReadyContext,\n} from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nconst ReceiverEligibilityErrorTile = ({ organizationName, returnUrl }) => {\n const worldReady = useContext(WorldReadyContext);\n\n return (\n <>\n {isExternalFlow() && }\n \n \n \n \n {returnUrl && (\n \n )}\n \n \n );\n};\n\nReceiverEligibilityErrorTile.propTypes = {\n organizationName: PropTypes.string,\n returnUrl: PropTypes.string,\n};\n\nexport default ReceiverEligibilityErrorTile;\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';\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 = () => {\n const formatedMaximumAmount = formatCurrencyWithSymbol({\n value: TemplateData.maximumDonationAmount,\n currency: TemplateData.maximumDonationCurrency,\n });\n\n const worldReady = getWorldReady();\n const alertMessage = new MessageFormat(worldReady, {\n id: 'clients.generosityNetworkCharities.maximumAmountAlert',\n }).format({ amount: formatedMaximumAmount });\n\n return alertMessage;\n};\n\nexport const getPersonalizedNoteToPayeeLabel = () => {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n return psMessages?.noteToPayeeLabel;\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","import React, { useContext } from 'react';\nimport { IconButton, ArrowLeftIcon } from '@paypalcorp/pp-react';\nimport templateData from '../utility/getTemplateData';\nimport { useHistory } from 'react-router-dom';\nimport { fetcher } from '../utility/domUtils';\nimport {\n getInitialDataInDom,\n hideSpinnerOverlay,\n showSpinnerOverlay,\n} from '../utility/helper';\nimport { getDismissEventName } from '../utility/productIntegrationUtils';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nexport default function BackButton(props) {\n const worldReady = useContext(WorldReadyContext);\n const history = useHistory();\n const initialData = getInitialDataInDom();\n const isProgressive =\n (templateData.onboardingEnabled && initialData.selectedCountry !== 'RU') ||\n false;\n const buttonBack = new MessageFormat(worldReady, {\n id: 'common.header.button.back',\n }).format();\n\n const clearGuestSession = () => {\n showSpinnerOverlay();\n fetcher('/donate/guest/sessionLogout', {\n method: 'POST',\n }).finally(() => {\n hideSpinnerOverlay();\n history.push('/donate?token=' + templateData.token);\n });\n };\n\n const navigateBack = () => {\n trackLinkClick(LINK_NAME.BACK, {\n eventName: getDismissEventName(),\n });\n\n if (templateData.hideLandingPage) {\n window.location.href = templateData.charityCancelUrl;\n } else if (templateData.viewName === 'member') {\n window.location.href = '/donate?token=' + templateData.token;\n } else {\n // currentState is populated with the guest url on country change, which hides the landing page.\n // Therefore removing guest url from currentState on back button click, to enable displayLanding\n templateData.currentState = '';\n\n if (isProgressive) {\n // In tesla form if user ends up on the guest page again due to any on-boarding error, the user auth_state is IDENTIFIED,\n // so on back button click we need to logout the user, before user starts a new guest session\n clearGuestSession();\n } else {\n history.push('/donate?token=' + templateData.token);\n }\n }\n };\n\n return (\n \n {buttonBack}\n \n );\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CausesIcon } from '@paypalcorp/pp-react-icons';\nimport { isPPCampaign } from '../../utility/productIntegrationUtils';\n\nconst bannerType = {\n logoBanner: 'logo-banner', // Styles for banner with logo or Avatar\n banner: 'banner', // Styles for banner without logo or avatar\n backgroundBanner: 'bg-banner', // Styles for banner without logo or avatar\n bannerv2: 'banner-v2', // Styles for banner without logo or avatar after repaint for PPUI 2.0.\n mobileBanner: 'mobile-banner',\n};\n\nconst BannerHeader = ({ type, children }) => {\n return
{children}
;\n};\n\nexport const BackgroundBanner = ({ bannerURL }) => {\n return ;\n};\n\nexport const Banner = ({ bannerURL }) => {\n return (\n \n );\n};\n\nexport const Avatar = ({ logoURL, initialLogo, initialColor }) => {\n if (logoURL !== '') {\n return ;\n }\n if (isPPCampaign()) {\n return (\n \n );\n }\n return ;\n};\n\nconst ImgLogo = ({ logoURL }) => {\n return (\n
\n \n
\n );\n};\n\nconst InititalsLogo = ({ initialLogo, initialColor }) => {\n return (\n \n {initialLogo}\n \n );\n};\n\nconst IconLogo = () => {\n return (\n \n \n \n );\n};\n\nBannerHeader.propTypes = {\n type: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]).isRequired,\n};\n\nAvatar.propTypes = {\n logoURL: PropTypes.string,\n initialLogo: PropTypes.string,\n initialColor: PropTypes.string,\n};\n\nBackgroundBanner.propTypes = {\n bannerURL: PropTypes.string,\n};\n\nBanner.propTypes = {\n bannerURL: PropTypes.string,\n};\n\nImgLogo.propTypes = {\n logoURL: PropTypes.string,\n};\n\nInititalsLogo.propTypes = {\n initialLogo: PropTypes.string,\n initialColor: PropTypes.string,\n};\n\nexport default BannerHeader;\n","import {\n isSdkMode,\n isPopupMode,\n isFullPageRedirectionMode,\n} from '../utility/inContextDonation';\nimport { FPTI_TAGS, PAGE_SPEC } 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 { EVENT_NAME, FPTI_PRODUCT } 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 onboardingEnabled,\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 getEnabledRecurringFrequency = () => {\n if (recurringEnabled) {\n return {\n [FPTI_TAGS.ENABLED_FREQUENCY]:\n supportedRecurringFrequencies?.length > 0\n ? supportedRecurringFrequencies.join(',')\n : 'Monthly',\n };\n }\n};\n\nexport const getSelectedRecurringFrequency = () => {\n return {\n [FPTI_TAGS.SELECTED_FREQUENCY]: AppStore.getSelectedRecurringFrequency(),\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 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 = Object.assign(\n {},\n globalRespDuration,\n respDuration\n );\n};\n\nexport const updateGlobalFPTI = (data) => {\n window.fpti = {\n ...window.fpti,\n ...data,\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 onboardingEnabled\n ? PAGE_SPEC.ONBOARDING_GUEST_FORM\n : PAGE_SPEC.GUEST_FORM;\n } else if (url.indexOf('/donate') > -1) {\n return PAGE_SPEC.LANDING_PAGE;\n }\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 ...getFeePayer(),\n };\n};\n","import React from 'react';\nimport { ContextProvider as WorldReadyContextProvider } from '@paypalcorp/worldready-react';\nimport { WorldReadyProvider } from '@paypalcorp/pp-react-worldready';\nimport templateData from './../utility/getTemplateData';\nimport { initializeWorldReady } from '../utility/worldReadyUtils';\n\ninitializeWorldReady();\n\nfunction withWorldReady(\n WrappedComponent,\n locale = `${templateData?.language || 'en'}-${templateData?.country || 'US'}`\n) {\n const WrapperComponent = (props) => {\n return (\n \n \n \n \n \n );\n };\n return WrapperComponent;\n}\n\nexport default withWorldReady;\n","import { FPTI_TAGS } from './fptiConstants';\nimport { updateGlobalFPTI } from './helper';\n\nlet 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 getEnabledRecurringFrequency,\n getSelectedRecurringFrequency,\n updateGlobalFPTI,\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 onboardingEnabled,\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 ...getEnabledRecurringFrequency(),\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 ...getEnabledRecurringFrequency(),\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 = ({ status, statusCode }) => {\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 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 ...(onboardingEnabled\n ? { ...PAGE_SPEC.THREE_DS_IFRAME_ONBRD }\n : { ...PAGE_SPEC.THREE_DS_IFRAME }),\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 [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATION_CONFIRMATION_PAGE_IMP,\n };\n const onceData = {};\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackSocialShareIM = ({ enableMatchSocialShare }) => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: enableMatchSocialShare\n ? EVENT_NAME.DONATE_MATCH_SOCIAL_SHARE_SCREEN_SHOWN\n : EVENT_NAME.DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN,\n };\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]: 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 ...getEnabledRecurringFrequency(),\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 ...getEnabledRecurringFrequency(),\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 };\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 delete data?.timestamp;\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","import React from 'react';\nimport { PAYPAL_THEME, CaptionText, Link } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst { sysColorUnselectedContrast } = PAYPAL_THEME;\n\nconst styles = StyleSheet.create({\n disclaimerWrapper: {\n maxWidth: 415,\n margin: '24px auto 0',\n },\n disclaimer: {\n margin: 'auto',\n },\n});\n\nexport default function VoucherFlowDisclaimer() {\n return (\n
\n \n }\n link={(innerMessage) => (\n \n {innerMessage}\n \n )}\n />\n \n
\n );\n}\n","import React from 'react';\nimport { CaptionText, Col, Row } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\n\nfunction ConfirmationTransactionId(props) {\n return (\n \n \n \n {props.transactionId}\n \n \n \n );\n}\n\nConfirmationTransactionId.propTypes = {\n transactionId: PropTypes.string,\n};\n\nexport default ConfirmationTransactionId;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, DownloadIcon } from '@paypalcorp/pp-react';\nimport TemplateData from '../utility/getTemplateData';\nimport { StyleSheet, css } from 'aphrodite';\nimport _get from 'lodash/get';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst styles = StyleSheet.create({\n saveButton: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: 'auto',\n maxWidth: 415,\n '@media (max-width: 576px)': {\n justifyContent: 'center',\n },\n },\n});\n\nclass OfferSaveButton extends React.Component {\n printPage = () => {\n window.print();\n trackLinkClick(LINK_NAME.VOUCHER_PRINT);\n };\n\n sharePage = ({ title, text }) => {\n navigator.share({\n title,\n text,\n });\n trackLinkClick(LINK_NAME.VOUCHER_SHARE);\n };\n\n handleClick = (event) => {\n event.preventDefault();\n if (TemplateData.isdesktop || !navigator.share) {\n this.printPage();\n } else {\n const { offerProgram, txnStatement } = this.props;\n this.sharePage({\n title: _get(offerProgram, 'subTitle'),\n text: `${txnStatement} ${_get(offerProgram, 'description')}`,\n });\n }\n };\n\n render() {\n return (\n
\n
\n \n {' '}\n \n \n
\n
\n );\n }\n}\n\nOfferSaveButton.propTypes = {\n offerProgram: PropTypes.object.isRequired,\n txnStatement: PropTypes.string,\n};\n\nexport default OfferSaveButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { BodyText } from '@paypalcorp/pp-react-text';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport OfferDetail from './offerDetail';\nimport OfferSaveButton from './offerSaveButton';\nimport { Message } from '@paypalcorp/worldready-react';\n\nclass OfferConfirmation extends React.Component {\n render() {\n const { offerProgram } = this.props;\n return (\n
\n \n \n
\n \n \n \n
\n \n
\n \n \n
\n );\n }\n}\n\nOfferConfirmation.propTypes = {\n offerProgram: PropTypes.object.isRequired,\n txnId: PropTypes.string,\n};\n\nexport default OfferConfirmation;\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert } from '@paypalcorp/pp-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nconst className = 'sign_up_alert';\n\nconst SignUpAlert = (props) => {\n const worldReady = useContext(WorldReadyContext);\n const [hideAlert, setHideAlert] = useState(false);\n\n const buttonCloseMsgFmt = new MessageFormat(worldReady, {\n id: 'common.header.button.close',\n });\n\n const handleCloseButton = () => {\n setHideAlert(true);\n };\n if (props.signUpStatus && !hideAlert) {\n return (\n \n {props.successMessage}\n \n );\n }\n\n return (\n <>\n {!hideAlert && (\n \n {props.failMessage}\n \n )}\n \n );\n};\n\nSignUpAlert.propTypes = {\n signUpStatus: PropTypes.bool,\n successMessage: PropTypes.string,\n failMessage: PropTypes.string,\n};\n\nexport default SignUpAlert;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { BodyText } from '@paypalcorp/pp-react-text';\nimport { isExternalFlow } from '../utility/productIntegrationUtils';\nimport classNames from 'classnames';\nimport { isMobileOrTablet } from '../utility/inContextDonation';\n\nexport class ConfirmationReturnText extends Component {\n confirmationReceiptWrapper() {\n return classNames({\n confirmation_reciept_wrapper: true,\n is_mobile: isMobileOrTablet(),\n });\n }\n\n render() {\n if (isExternalFlow()) {\n return null;\n }\n\n return (\n
\n \n {this.props.returnText}\n \n
\n );\n }\n}\n\nexport default ConfirmationReturnText;\n\nConfirmationReturnText.propTypes = {\n returnText: PropTypes.string,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@paypalcorp/pp-react-links';\nimport { isExternalFlow } from '../utility/productIntegrationUtils';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { EVENT_NAME } from '../utility/constants';\n\nexport class ConfirmationReturnTo extends Component {\n constructor(props) {\n super(props);\n }\n\n redirectUrl = () => {\n trackLinkClick('merchant_redirect', {\n eventName: EVENT_NAME.DONATE_SUCCESS_MERCHANT_SITE_PRESSED,\n });\n this.props.handleRedirect();\n };\n\n render() {\n if (isExternalFlow()) {\n return null;\n }\n\n return (\n
\n \n {this.props.returnto}\n \n
\n );\n }\n}\n\nexport default ConfirmationReturnTo;\n\nConfirmationReturnTo.propTypes = {\n returnto: PropTypes.string,\n handleRedirect: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport templateData from '../../utility/getTemplateData';\nimport { showSpinnerOverlay } from '../../utility/helper';\nimport { fetcher } from '../../utility/domUtils';\nimport _get from 'lodash/get';\nimport { isInContext } from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport isEmpty from 'lodash/isEmpty';\nimport { KEY_DOWN } from '../../utility/constants';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nclass PostTransaction extends React.Component {\n constructor(props) {\n super(props);\n const { postdata = {}, syncReturnUrl = '' } = this.props || {};\n\n let postBackArray = [];\n\n Object.keys(postdata).forEach(function (key) {\n postBackArray.push({\n name: key,\n value: postdata[key],\n });\n });\n\n this.state = {\n orgName: this.props.orgName,\n redirectMethod: this.props.method,\n redirectUrl: this.props.action,\n syncReturnUrl,\n postBackArray,\n isRedirecting: false,\n allowRedirect: true,\n };\n }\n\n componentDidMount() {\n const { hideSuccessPage } = templateData;\n const { syncReturnUrl, redirectUrl } = this.state;\n document.addEventListener('mousedown', this.stopRedirect, true);\n document.addEventListener('keydown', this.handleKeyDown, true);\n\n // Disable redirection to merchant when DNW is in popup mode\n if (!isInContext() && (!isEmpty(syncReturnUrl) || !isEmpty(redirectUrl))) {\n this.setState({\n isRedirecting: true,\n });\n\n setTimeout(\n () => {\n const { allowRedirect } = this.state;\n if (allowRedirect) {\n this.handleRedirect();\n }\n },\n hideSuccessPage ? 1000 : 15000\n );\n }\n\n // No need to handle refresh case\n // As user will be automatically redirected back\n // In case if some is required, listening to UPDATE_CONFIRMATION\n // AppDispatcher.register(function(payload) {\n //\t if (payload.action && (payload.action.actionType === 'UPDATE_CONFIRMATION')) {}\n // });\n }\n\n stopRedirect = () => {\n const { allowRedirect } = this.state;\n if (allowRedirect) {\n this.setState({\n allowRedirect: false,\n isRedirecting: false,\n });\n }\n document.removeEventListener('mousedown', this.stopRedirect, true);\n document.removeEventListener('keydown', this.handleKeyDown, true);\n };\n\n handleKeyDown = (event) => {\n const keyPressed = event.which;\n if (\n KEY_DOWN.TAB === keyPressed ||\n KEY_DOWN.UP_ARROW === keyPressed ||\n KEY_DOWN.LEFT_ARROW === keyPressed ||\n KEY_DOWN.DOWN_ARROW === keyPressed ||\n KEY_DOWN.RIGHT_ARROW === keyPressed\n ) {\n this.stopRedirect();\n }\n };\n\n /*\n * handleRedirect\n */\n handleRedirect = () => {\n const { hideSuccessPage } = templateData;\n\n if (hideSuccessPage) {\n this.redirect();\n return;\n }\n\n if (this.shouldShowSpinner()) {\n showSpinnerOverlay();\n }\n fetcher('/donate/sessionlogout').finally(() => {\n this.redirect();\n });\n };\n\n shouldShowSpinner = () => {\n let { syncReturnUrl = '', redirectUrl = '' } = this.state || {};\n if (\n isExternalFlow() &&\n templateData.ismobile &&\n templateData.hideLandingPage &&\n !syncReturnUrl.includes('http') &&\n !redirectUrl.includes('http')\n ) {\n return false;\n } else {\n return true;\n }\n };\n\n redirect = () => {\n let {\n syncReturnUrl = '',\n redirectUrl = '',\n redirectMethod = '',\n } = this.state || {};\n\n if (redirectMethod === 'POST' && syncReturnUrl) {\n this.postBackForm.submit();\n } else if (redirectMethod === 'GET' && syncReturnUrl) {\n if (\n syncReturnUrl.indexOf('http') !== 0 &&\n syncReturnUrl.indexOf('//') !== 0 &&\n !isExternalFlow()\n ) {\n syncReturnUrl = '//' + syncReturnUrl;\n }\n window.location.href = syncReturnUrl;\n } else {\n if (\n redirectUrl.indexOf('http') !== 0 &&\n redirectUrl.indexOf('//') !== 0 &&\n !isExternalFlow()\n ) {\n redirectUrl = '//' + redirectUrl;\n }\n window.location.href = redirectUrl;\n }\n };\n\n render = () => {\n if (this.state.orgName && this.state.isRedirecting) {\n const { orgName } = this.state;\n let redirectText = new MessageFormat(this.context, {\n id: 'confirmation.postTransaction.label.redirectText',\n }).format({ orgName });\n document.getElementById('spinnerText').innerHTML = redirectText;\n }\n\n return (\n
\n {\n this.postBackForm = form;\n }}\n >\n {' '}\n {this.state.postBackArray.map(function (obj) {\n return (\n \n );\n })}\n \n
\n );\n };\n}\n\nPostTransaction.propTypes = {\n method: PropTypes.string,\n action: PropTypes.string,\n orgName: PropTypes.string,\n syncReturnUrl: PropTypes.string.isRequired,\n};\n\nPostTransaction.defaultProps = {\n method: 'GET',\n};\nPostTransaction.contextType = WorldReadyContext;\n\nexport default PostTransaction;\n","import React from 'react';\nimport ConfirmationReturnText from './ConfirmationReturnText';\nimport ConfirmationReturnTo from './ConfirmationReturnTo';\nimport PostTransaction from '../pages/confirmation/postTransaction';\n\nexport default function ConfirmationRedirect({\n autoRedirectMethod,\n autoRedirectUrl,\n handleRedirect,\n orgName,\n postBackData,\n returnText,\n returnTo,\n syncReturnUrl,\n}) {\n return (\n <>\n \n \n \n \n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from '@paypalcorp/pp-react-links';\nimport { isInContext, closeWindow } from '../utility/inContextDonation';\nimport { EVENT_NAME } from '../utility/constants';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\n\nconst DoneLink = ({ doneContent, syncReturnUrl, redirectUrl }) => {\n const handleClose = () => {\n const eventName = EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED;\n trackLinkClick(LINK_NAME.DONE, {\n eventName,\n });\n\n if (isInContext()) {\n closeWindow();\n }\n\n if (syncReturnUrl) {\n window.location.href = syncReturnUrl;\n } else {\n window.location.href = redirectUrl;\n }\n };\n\n return (\n
\n \n {doneContent}\n \n
\n );\n};\n\nDoneLink.propTypes = {\n doneContent: PropTypes.string,\n syncReturnUrl: PropTypes.string,\n redirectUrl: PropTypes.string,\n};\n\nexport default DoneLink;\n","import React, { useState, useEffect, useContext } from 'react';\nimport TemplateData from '../utility/getTemplateData';\nimport { BodyText, Avatar, Row } from '@paypalcorp/pp-react';\nimport ConfirmationSocialShare from './ConfirmationSocialShare';\nimport ConfirmationTransactionId from './ConfirmationTransactionId';\nimport OfferConfirmation from '../components/offerConfirmation';\nimport PropTypes from 'prop-types';\nimport SignUpAlert from '../components/guest/SignUpAlert';\nimport VoucherFlowDisclaimer from '../components/voucherFlowDisclaimer';\nimport ConfirmationRedirect from './ConfirmationRedirect';\nimport { endCustomCPLTrackingForConfirmationPage } from '../utility/cpl';\nimport {\n isInContext,\n isMobileOrInContext,\n onComplete,\n isMWebNoReturnURL,\n} from '../utility/inContextDonation';\nimport { isPPFundraising } from '../utility/productIntegrationUtils';\nimport CloseButton from '../components/CloseButton';\nimport classNames from 'classnames';\nimport DoneLink from './DoneLink';\nimport { BannerImage } from '@paypalcorp/donate-react';\nimport { isCampaigns } from '../utility/productIntegrationUtils';\nimport { addFeature } from '../fpti/helper';\nimport { FEATURES } from '../fpti/fptiConstants';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { fetcher } from '../utility/domUtils';\nconst SOCIAL_EXP_GET = '/donate/api/socialExperiment/';\n\nfunction ConfirmationView(props) {\n const worldReady = useContext(WorldReadyContext);\n const getSocialMessage = (id, params) => {\n return new MessageFormat(worldReady, {\n id: isCampaigns()\n ? `landing.social.${id}`\n : `confirmation.confirmation.social.${id}`,\n }).format(params);\n };\n const {\n autoRedirect,\n autoRedirectUrl,\n autoRedirectMethod,\n footer,\n handleRedirect,\n hostedButtonId,\n illustration,\n isSignUp,\n isVoucherFlow,\n message,\n offerProgram,\n orgName,\n postBackData,\n returnTo,\n returnText,\n signUpProps,\n syncReturnUrl,\n txnId,\n personalizedMessages,\n isExternalFlow,\n campaignId,\n amount,\n } = props;\n\n useEffect(() => {\n endCustomCPLTrackingForConfirmationPage();\n }, []);\n\n useEffect(() => {\n onComplete(postBackData);\n }, []);\n\n const [isSocialShareLoading, setIsSocialShareLoading] = useState(\n !!props.hostedButtonId\n );\n const [enableMatchSocialShare, setEnableMatchSocialShare] = useState(false);\n\n const [socialShareMessages, setSocialShareMessages] = useState({\n social: {\n emailSubject: getSocialMessage('emailSubject', {\n donationName: '{donationName}',\n }),\n emailBody: getSocialMessage('emailBody', {\n donationName: '{donationName}',\n url: '{url}',\n }),\n mobileText: getSocialMessage('mobileText', {\n donationName: '{donationName}',\n }),\n facebookMessage: getSocialMessage('facebookMessage', {\n donationName: '{donationName}',\n url: '{url}',\n }),\n twitterMessage: getSocialMessage('twitterMessage', {\n donationName: '{donationName}',\n }),\n whatsappMessage: getSocialMessage('whatsappMessage', {\n donationName: '{donationName}',\n }),\n copyLinkHeader: getSocialMessage('copyLinkHeader'),\n copyLinkSubheaderBefore: getSocialMessage('copyLinkSubheaderBefore'),\n copyLinkSubheader: getSocialMessage('copyLinkSubheader'),\n copiedText: getSocialMessage('copiedText'),\n copyText: getSocialMessage('copyText'),\n subheader: getSocialMessage('subheader'),\n shareGeneric: getSocialMessage('shareGeneric'),\n shareWithMatch: getSocialMessage('shareWithMatch'),\n ...(!isCampaigns()\n ? {\n unhosted: {\n emailSubject: getSocialMessage('unhosted.emailSubject'),\n emailBody: getSocialMessage('unhosted.emailBody', {\n url: '{url}',\n }),\n mobileText: getSocialMessage('unhosted.mobileText'),\n facebookMessage: getSocialMessage('unhosted.facebookMessage'),\n twitterMessage: getSocialMessage('unhosted.twitterMessage'),\n whatsappMessage: getSocialMessage('unhosted.whatsappMessage', {\n url: '{url}',\n }),\n },\n }\n : {}),\n },\n });\n\n useEffect(() => {\n // For A/B Testing the general share content vs. the match content for hosted button\n if (hostedButtonId) {\n const generalSocialShareMessages = {\n social: {\n ...socialShareMessages.social,\n copyLinkHeader: getSocialMessage('copyLinkHeaderNew'),\n copyLinkSubheader: getSocialMessage('generalShareCopyLinkSubHeader'),\n emailSubject: getSocialMessage('generalShareMsgEmailSubject', {\n donationName: '{donationName}',\n }),\n emailBody: getSocialMessage('generalShareEmailBody', {\n donationName: '{donationName}',\n url: '{url}',\n }),\n facebookMessage: getSocialMessage('generalShareFacebookMessage', {\n donationName: '{donationName}',\n }),\n twitterMessage: getSocialMessage('generalShareTwitterMessage', {\n donationName: '{donationName}',\n }),\n whatsappMessage: getSocialMessage('generalShareWhatsappMessage', {\n donationName: '{donationName}',\n }),\n },\n };\n\n const matchSocialShareMessages = {\n social: {\n ...socialShareMessages.social,\n copyLinkHeader: getSocialMessage('copyLinkHeaderNew'),\n copyLinkSubheader: getSocialMessage(\n 'matchMyDonationCopyLinkSubHeader'\n ),\n emailSubject: getSocialMessage('matchMyDonationEmailSubject', {\n donationName: '{donationName}',\n }),\n emailBody: getSocialMessage('matchMyDonationEmailBody', {\n amount: `${amount}`,\n donationName: '{donationName}',\n url: '{url}',\n }),\n facebookMessage: getSocialMessage('matchMyDonationFacebookMessage', {\n amount: `${amount}`,\n donationName: '{donationName}',\n }),\n twitterMessage: getSocialMessage('matchMyDonationTwitterMessage', {\n amount: `${amount}`,\n donationName: '{donationName}',\n }),\n whatsappMessage: getSocialMessage('matchMyDonationWhatsappMessage', {\n amount: `${amount}`,\n donationName: '{donationName}',\n }),\n },\n };\n\n fetcher(`${SOCIAL_EXP_GET}?token=${TemplateData.token}`)\n .then((response) => response.json())\n .then((result) => {\n // Show match social share content if elmo falls under test group\n if (result?.data?.clientData?.enableNewSocialSharingMsg) {\n setSocialShareMessages(matchSocialShareMessages);\n setEnableMatchSocialShare(true);\n } else {\n setSocialShareMessages(generalSocialShareMessages);\n }\n setIsSocialShareLoading(false);\n })\n .catch(() => {\n setSocialShareMessages(generalSocialShareMessages);\n setIsSocialShareLoading(false);\n });\n }\n }, []);\n\n const socialShareLoadingShimmer = () => {\n return (\n
\n \n \n \n \n \n \n \n \n \n
\n );\n };\n\n function showSocialShare() {\n if (TemplateData.socialSharePreference) {\n addFeature(FEATURES.SOCIAL_SHARE_PREFERENCE);\n return isSocialShareLoading ? (\n socialShareLoadingShimmer()\n ) : (\n \n );\n }\n\n return null;\n }\n\n function confirmationClass() {\n return classNames(\n {\n gn_donate_wrapper: TemplateData.bannerUrl,\n donate_wrapper: !TemplateData.bannerUrl,\n confirmation: !TemplateData.bannerUrl,\n },\n { mobile_view: isMobileOrInContext() },\n {\n mobile_view_without_return_message: isMWebNoReturnURL(),\n },\n { ppf: isPPFundraising() }\n );\n }\n\n return (\n
\n {isSignUp && }\n
\n {isExternalFlow && }\n {TemplateData.bannerUrl ? (\n \n ) : (\n
{illustration}
\n )}\n
\n {message}\n\n {isExternalFlow && personalizedMessages.success_subheader ? (\n \n {personalizedMessages.success_subheader}\n \n ) : null}\n\n {isVoucherFlow && (\n \n )}\n\n {isVoucherFlow && }\n\n {showSocialShare()}\n\n {!isExternalFlow && (\n \n )}\n\n {isExternalFlow && (\n \n )}\n
\n
\n {!isInContext() && autoRedirect && autoRedirectUrl && (\n \n )}\n {footer}\n
\n );\n}\n\nConfirmationView.propTypes = {\n amount: PropTypes.string,\n autoRedirectMethod: PropTypes.string,\n autoRedirect: PropTypes.bool,\n autoRedirectUrl: PropTypes.string,\n footer: PropTypes.object,\n handleRedirect: PropTypes.func,\n hostedButtonId: PropTypes.string,\n isVoucherFlow: PropTypes.bool,\n illustration: PropTypes.object,\n isSignUp: PropTypes.bool,\n message: PropTypes.object,\n offerProgram: PropTypes.object,\n orgName: PropTypes.string,\n postBackData: PropTypes.object,\n redirect: PropTypes.func,\n returnTo: PropTypes.string,\n returnText: PropTypes.string,\n signUpProps: PropTypes.object,\n syncReturnUrl: PropTypes.string,\n txnId: PropTypes.string,\n personalizedMessages: PropTypes.object,\n isExternalFlow: PropTypes.bool,\n isOfacPending: PropTypes.bool,\n campaignId: PropTypes.string,\n};\n\nexport default ConfirmationView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getPersonalizedMessages } from '../utility/personalizedMessages';\nimport { GN_CONTENT_TOUCHPOINT } from '../utility/constants';\nimport isNna from '../utility/nna';\nimport templateData from '../utility/getTemplateData';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport MessageWithHTML from '../components/MessageWithHtml';\n\nexport default function withConfirmationMessages(\n WrappedComponent,\n renderedView\n) {\n class CmHOC extends React.Component {\n static propTypes = {\n amount: PropTypes.string,\n confirmationNumber: PropTypes.string,\n giftaidFlag: PropTypes.bool,\n isVoucherFlow: PropTypes.bool,\n orgName: PropTypes.string,\n postBackData: PropTypes.object,\n rp_status: PropTypes.bool,\n signUpStatus: PropTypes.bool,\n receiptId: PropTypes.string,\n isExternalFlow: PropTypes.bool,\n isCampaigns: PropTypes.bool,\n personalizedMessages: PropTypes.object,\n selectedRecurringFrequency: PropTypes.string,\n };\n\n isSuccessView = () => renderedView === 'success';\n\n getGiftAidConfText = () => {\n let giftaidFrequencyLabel = 'giftAidRecurring';\n switch (this.props.selectedRecurringFrequency) {\n case 'Week':\n giftaidFrequencyLabel = 'giftAidRecurringWeek';\n break;\n case 'Year':\n giftaidFrequencyLabel = 'giftAidRecurringYear';\n break;\n default:\n giftaidFrequencyLabel = 'giftAidRecurring';\n break;\n }\n if (this.props.giftaidFlag && this.isSuccessView()) {\n return new MessageFormat(this.context, {\n id: `confirmation.confirmation.label.${\n this.props.rp_status ? giftaidFrequencyLabel : 'giftAid'\n }`,\n }).format();\n }\n return '';\n };\n\n getYourDonationLabel = (personalizedMessages) => {\n if (this.props.isExternalFlow && personalizedMessages.success_header) {\n return personalizedMessages.success_header.replace(\n '',\n this.props.amount\n );\n }\n\n let yourDonation = (\n \n );\n\n if (this.props.isVoucherFlow) {\n yourDonation =\n (\n \n ) || yourDonation;\n }\n\n return yourDonation;\n };\n\n getYourRPDonationLabel = () => {\n let frequencyLabel = 'yourRPdonation';\n switch (this.props.selectedRecurringFrequency) {\n case 'Week':\n frequencyLabel = 'yourRPdonationWeek';\n break;\n case 'Year':\n frequencyLabel = 'yourRPdonationYear';\n break;\n default:\n frequencyLabel = 'yourRPdonation';\n break;\n }\n return (\n \n );\n };\n\n getReturnTextLabel = () => {\n let returnText = new MessageFormat(this.context, {\n id: `confirmation.${\n this.isSuccessView ? 'confirmation' : 'pending'\n }.label.returnText`,\n }).format({ orgName: this.props.orgName });\n return returnText;\n };\n\n getReturnTextMemberLabel = () => {\n let returnTextMember = !this.isSuccessView\n ? new MessageFormat(this.context, {\n id: 'confirmation.pending.label.returnTextMember',\n }).format({ orgName: this.props.orgName })\n : '';\n return returnTextMember;\n };\n\n getReturnToLabel = () => {\n let returnTo = new MessageFormat(this.context, {\n id: `confirmation.${\n this.isSuccessView ? 'confirmation' : 'pending'\n }.label.returnto`,\n }).format({ orgName: this.props.orgName });\n return returnTo;\n };\n\n getTxnIdLabel = () => {\n let id = this.props.rp_status\n ? this.props.confirmationNumber\n : this.props.receiptId;\n id = id || this.props.confirmationNumber;\n\n let txnId = new MessageFormat(this.context, {\n id: `confirmation.${\n this.isSuccessView ? 'confirmation' : 'pending'\n }.label.txnId`,\n }).format({ txnId: id });\n return txnId;\n };\n\n getSignupProps = () => {\n return {\n signUpStatus: this.props.signUpStatus,\n successMessage:\n isNna(templateData.country) && this.isSuccessView()\n ? new MessageFormat(this.context, {\n id: 'confirmation.confirmation.label.successMessageNna',\n }).format()\n : new MessageFormat(this.context, {\n id: `confirmation.${\n this.isSuccessView ? 'confirmation' : 'pending'\n }.label.successMessage`,\n }).format(),\n failMessage: new MessageFormat(this.context, {\n id: `confirmation.${\n this.isSuccessView ? 'confirmation' : 'pending'\n }.label.failMessage`,\n }).format(),\n };\n };\n\n getPersonalizedContent = () => {\n if (this.props.isExternalFlow) {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n\n if (psMessages.success_subheader) {\n psMessages.success_subheader = psMessages.success_subheader.replace(\n '',\n this.props.amount\n );\n }\n return psMessages;\n }\n return {};\n };\n\n getOrgSuccess = () => (\n \n );\n\n render() {\n const personalizedMessages = this.getPersonalizedContent();\n const returnText = this.getReturnTextLabel();\n const returnTextMember = this.getReturnTextMemberLabel();\n const returnTo = this.getReturnToLabel();\n const txnId = this.getTxnIdLabel();\n const yourRPdonation = this.getYourRPDonationLabel();\n const giftAidConfText = this.getGiftAidConfText();\n const yourDonation = this.getYourDonationLabel(personalizedMessages);\n const signUpProps = this.getSignupProps();\n const orgSuccess = this.getOrgSuccess();\n\n return (\n \n );\n }\n }\n\n CmHOC.contextType = WorldReadyContext;\n return CmHOC;\n}\n","import React from 'react';\nimport { hideSpinnerOverlay, setFocus } from '../utility/helper';\nimport AppStore from '../stores/AppStore';\nimport TemplateData from '../utility/getTemplateData';\nimport {\n isExternalFlow,\n isCampaigns,\n} from '../utility/productIntegrationUtils';\n\nconst donateGiftPercentage = AppStore.getGiftAidItExtraAmount();\n\nexport default function withConfirmationData(WrappedComponent) {\n return class extends React.Component {\n constructor(props) {\n super(props);\n this.confirmationData = this.getConfirmationData();\n }\n\n handleRedirect = () => {\n let finalUrl = this.confirmationData.autoRedirectUrl;\n\n if (this.confirmationData.syncReturnUrl) {\n finalUrl = this.confirmationData.syncReturnUrl;\n }\n\n if (\n finalUrl.indexOf('http') !== 0 &&\n finalUrl.indexOf('//') !== 0 &&\n !isExternalFlow()\n ) {\n finalUrl = '//' + finalUrl;\n }\n\n window.location.href = finalUrl;\n };\n\n getExtraDonateAmount = (giftaidFlag, donatedAmount) => {\n return giftaidFlag\n ? TemplateData.donationSymbol +\n (donatedAmount * donateGiftPercentage - donatedAmount).toFixed(2)\n : '';\n };\n\n getConfirmationData = () => {\n const confirmationData =\n AppStore.getConfirmation() || TemplateData.confirmationData || {};\n let result = {};\n result.amount = confirmationData.amount || '';\n result.confirmationNumber = confirmationData.confirmationNumber || '';\n result.postBackData = confirmationData || {};\n result.displayMyAccount = confirmationData.showAccountOverview || false;\n result.orgName = TemplateData.donationName\n ? TemplateData.donationName\n : '';\n result.receiptId = confirmationData.receiptId;\n result.isOfacPending = confirmationData.isOfacPending;\n\n result.autoRedirect = TemplateData.returnAutoRedirect !== '';\n result.autoRedirectUrl = TemplateData.charityReturnUrl\n ? TemplateData.charityReturnUrl\n : '';\n result.autoRedirectMethod = TemplateData.returnMethod\n ? TemplateData.returnMethod\n : '';\n result.syncReturnUrl = confirmationData.syncReturnUrl || '';\n\n result.isSignUp = confirmationData.isSignUp || false;\n result.signUpStatus = confirmationData.signUpSuccess || false;\n result.isVoucherFlow = TemplateData.isVoucherFlow;\n result.offerProgram = TemplateData.offerProgram;\n result.hostedButtonId = TemplateData.hostedButtonId || '';\n result.campaignId = TemplateData.productId || '';\n result.isExternalFlow = isExternalFlow();\n result.isCampaigns = isCampaigns();\n\n result.handleRedirect = this.handleRedirect;\n result.rp_status = AppStore.getDonationRecurring() === 'checked';\n result.giftaidFlag = AppStore.getGiftaidItFlagStatus();\n result.selectedRecurringFrequency =\n AppStore.getSelectedRecurringFrequency();\n result.donatedAmount = AppStore.getDonationAmount();\n\n result.extraDonateAmount = this.getExtraDonateAmount(\n result.giftaidFlag,\n result.donatedAmount\n );\n result.showMyAccount =\n result.displayMyAccount &&\n !result.isVoucherFlow &&\n !result.autoRedirect;\n\n return result;\n };\n\n componentDidMount = () => {\n hideSpinnerOverlay();\n setFocus();\n };\n\n render() {\n return ;\n }\n };\n}\n","import { createHandler as initGriffin } from 'griffin-paypal/number';\nimport { createHandler as initGriffinPhone } from 'griffin-paypal/phone';\nimport { createHandler as initGriffinDate } from 'griffin-paypal/date';\nimport { createHandler as initGriffinRelativeTime } from 'griffin-paypal/relative-time';\nimport _includes from 'lodash/includes';\nlet griffinPhoneHandler;\nlet griffin;\nlet griffinRelativeTime;\nlet griffinDate;\n\ntry {\n const metadata = __getInitialData().clientMetadata;\n if (metadata) {\n griffinPhoneHandler = initGriffinPhone(metadata);\n griffin = initGriffin(metadata);\n\n /* date and relativeTime metadata is only used by campaigns and we need to\n check if metadata from server-side is available sine templateData.product\n is not available at this point */\n griffinDate = metadata.griffin?.date && initGriffinDate(metadata);\n griffinRelativeTime =\n metadata.griffin?.timeZone && initGriffinRelativeTime(metadata);\n }\n} catch (e) {\n console.log(e);\n}\n\nexport function getGriffin() {\n return griffin;\n}\n\nexport function getGriffinPhoneHandler() {\n return griffinPhoneHandler;\n}\n\nexport function getGriffinDate() {\n return griffinDate;\n}\n\nexport function getGriffinRelativeTime() {\n return griffinRelativeTime;\n}\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 const initialData = JSON.parse(initialDataJSON); // parse the JSON strings to JavaScript objects\n return initialData;\n } catch (e) {\n console.warn('ERROR:donate:initialData', e);\n return {};\n }\n}\n\n/*\n * _getAmountValue\n * {Array} griffin currency parts\n */\nlet _getAmountValue = function (params) {\n var amount = params && params.find((item) => item.type === 'value');\n return amount && amount.value;\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 (!amount.value && amount.value !== 0) {\n return '';\n }\n return griffin?.formatCurrency(\n {\n value: amount.value,\n currency: amount.currency,\n },\n griffin.CURRENCY_FORMAT\n );\n}\n\n/**\n * formatAmount\n * {amount} { currency, value }\n */\nexport function formatAmount(amount) {\n if (!amount.value && amount.value !== 0) {\n return '';\n }\n return griffin?.formatCurrency(\n {\n value: normalizeNumber(amount.value),\n currency: amount.currency,\n },\n griffin.CURRENCY_FORMAT\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 griffin?.formatNumber(value, { style: 'percent' });\n}\n\n/**\n * Format currency\n * @constructor\n * @param {string} currency\n * @param {string} value\n */\nexport function formatCurrency(params) {\n if (!params.value || !params.currency) {\n return '';\n }\n // Only if __getInitialData().clientMetadata exists.\n // Member does not require to load griffin client, getting amount from p2p iframe.\n if (!__getInitialData().clientMetadata) {\n return params.value;\n }\n let response = griffin?.formatCurrency(\n {\n value: params.value,\n currency: params.currency,\n },\n griffin.CURRENCY_FORMAT.parts()\n );\n\n return _getAmountValue(response);\n}\n\nexport function formatCurrencyNoDecimals(params) {\n if (!params.value) {\n return '';\n }\n // Only if __getInitialData().clientMetadata exists.\n // Member does not require to load griffin client, getting amount from p2p iframe.\n if (!__getInitialData().clientMetadata) {\n return params.value;\n }\n\n var options = griffin.NUMBER_FORMAT;\n options.maximumFractionDigits = 0;\n\n let formattedCurrency = griffin?.formatNumber(params.value, options);\n\n return formattedCurrency;\n}\n\nexport function formatNumber(number) {\n return griffin?.formatNumber(number);\n}\n\nexport function formatCurrencyAsString(params) {\n if (!params.value || !params.currency) {\n return '';\n }\n // Only if __getInitialData().clientMetadata exists.\n // Member does not require to load griffin client, getting amount from p2p iframe.\n if (!__getInitialData().clientMetadata) {\n return params.value;\n }\n\n var options = params.format ? params.format : griffin.CURRENCY_FORMAT;\n if (Object.prototype.hasOwnProperty.call(params, 'maximumFractionDigits')) {\n options.maximumFractionDigits = params.maximumFractionDigits;\n }\n\n let response = griffin?.formatCurrency(\n {\n value: params.value,\n currency: params.currency,\n },\n options\n );\n return response;\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 (!amount && amount !== 0) {\n return '';\n }\n return griffin?.normalizeNumber(amount);\n}\n\n/**\n * formatInputAmount\n * {string} amount\n */\nexport function formatInputAmount(amount) {\n if (!amount.value) {\n return '';\n }\n\n return _getAmountValue(\n griffin?.formatCurrency(\n {\n value: normalizeNumber(amount.value),\n currency: amount.currency,\n },\n griffin.CURRENCY_FORMAT.parts()\n ) || []\n );\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(countryCode, nationalNumber) {\n if (!griffinPhoneHandler) {\n return nationalNumber;\n }\n\n const phoneObj = {\n countryCode,\n };\n\n try {\n const formattedPhone = griffinPhoneHandler.formatAsTyped(\n nationalNumber,\n phoneObj\n );\n return formattedPhone;\n } catch (e) {\n // Happens when phone number contains invalid characters\n return '';\n }\n}\n\nexport function validatePhone(countryCode, nationalNumber) {\n if (!griffinPhoneHandler) {\n return false;\n }\n\n try {\n const normalizedPhone =\n griffinPhoneHandler.normalizePhoneNumber(nationalNumber);\n\n if (!normalizedPhone || normalizedPhone.errors) {\n return false;\n }\n\n const validationResult =\n griffinPhoneHandler.validatePhoneNumber(normalizedPhone);\n if (validationResult && validationResult.errors) {\n return false;\n }\n return true;\n } catch (e) {\n console.log('e ', 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.substr(firstSpaceIndex + 1);\n}\n\nexport function getDateFormat() {\n var initialData = __getInitialData();\n var dateFormat =\n (initialData.dateMetadata && initialData.dateMetadata.pattern) ||\n 'DD/MM/YY';\n\n return dateFormat.toUpperCase();\n}\n\nexport function exchangeRateDecimalPoints(amount, decimalPoint, symbol) {\n let exchangeRate = amount;\n let decimal = _includes(exchangeRate, decimalPoint) // checks that exchange rate actually contains the decimal point that it's receiving from the the api call\n ? decimalPoint\n : '.';\n let values = exchangeRate ? exchangeRate.split(decimal)[1].split('') : 0; // splits the value so that it can get all of the numbers after the decimal place and put them in an array ex. 0.00541 => [0, 0, 5, 4, 1]\n let totalDecimals = 0;\n for (let index = 0; index < values.length; index++) {\n if (values[index] > 0) {\n totalDecimals = index + 2;\n break;\n }\n }\n amount = parseFloat(amount).toFixed(totalDecimals);\n return `${symbol}${amount}`.replace(\n // replaces the decimal just to show it for the expected country\n /[.|,]/i,\n decimalPoint\n );\n}\n\nexport function formatCurrencyWithSymbol(params) {\n return griffin?.formatCurrency(params, griffin.CURRENCY_FORMAT);\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 griffinRelativeTime?.formatRelativeTime(utcDate, {\n unit: 'day',\n timeZone: griffinDate.getTimeZone(),\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.round(amount);\n let options = griffin?.CURRENCY_FORMAT || {};\n options.maximumFractionDigits = 0;\n return griffin?.formatCurrency({ value: roundedUpValue, currency }, options);\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 griffinDate?.formatDate(date, { timeZone: 'Etc/UTC' });\n}\n","import React from 'react';\nimport AppStore from '../stores/AppStore';\nimport TemplateData from '../utility/getTemplateData';\nimport { trackConfirmationPageIM } from '../fpti/fpti';\n\nconst PAGE_TRACK_TAG = 'main:donate:wps:';\n\nexport default function withPageTrack(WrappedComponent, flow, result) {\n return class extends React.Component {\n componentDidMount() {\n const confData = AppStore.getConfirmation() || {};\n let isGuestUpgrade = false;\n let updatedFlow = flow;\n let updatedResult = result;\n\n if (flow !== 'member') {\n isGuestUpgrade =\n confData.showAccountOverview ||\n confData.signUpSuccess ||\n TemplateData.fptPageName === 'guestULSignUp';\n\n if (TemplateData.onboardingEnabled) {\n updatedFlow = 'signup';\n }\n }\n\n if (isGuestUpgrade) {\n updatedResult = 'upgrade';\n }\n\n let tag = `${PAGE_TRACK_TAG}${updatedFlow}:${updatedResult}`;\n trackConfirmationPageIM({\n isSignUp: isGuestUpgrade,\n pageSpec: {\n pgrp: tag,\n page: `${tag}:web::`,\n tmpl: `${tag}:web::`,\n },\n flow,\n confirmationData: confData,\n });\n }\n\n render() {\n return ;\n }\n };\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\nlet _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","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Illustration from '../components/illustrations/Illustration';\nimport {\n isPPCampaign,\n isGNC,\n isPPFundraising,\n} from '../utility/productIntegrationUtils';\nimport BannerHeader, { Banner } from '../components/GN/bannerHeader';\nimport templateData from '../utility/getTemplateData';\nimport classNames from 'classnames';\nimport {\n isMobileOrInContext,\n isInContext,\n isMobileOrTablet,\n} from '../utility/inContextDonation';\n\nexport class ConfirmationCheckmark extends Component {\n illustrationSize() {\n return classNames({\n max: isMobileOrTablet(),\n extraLarge: isPPFundraising(),\n extraLargeInContext: isInContext(),\n extraLargeDWEB: !isPPFundraising() && !isMobileOrInContext(),\n });\n }\n\n render() {\n return (\n
\n \n
\n {isPPCampaign() || isGNC() ? (\n \n \n \n ) : (\n
\n \n
\n )}\n
\n
\n );\n }\n}\n\nexport default ConfirmationCheckmark;\n\nConfirmationCheckmark.propTypes = {\n confirmationNumber: PropTypes.string,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { HeadingText } from '@paypalcorp/pp-react';\n\nclass ConfirmationAmount extends Component {\n render() {\n return (\n \n {this.props.message}\n \n );\n }\n}\nexport default ConfirmationAmount;\n\nConfirmationAmount.propTypes = {\n message: PropTypes.object,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { BodyText } from '@paypalcorp/pp-react';\nimport { addFeature } from '../fpti/helper';\nimport { FEATURES } from '../fpti/fptiConstants';\n\nexport class ConfirmationAmountGiftAid extends Component {\n componentDidMount() {\n addFeature(FEATURES.GIFT_AID);\n }\n\n render() {\n return (\n \n {' '}\n + {this.props.extraDonateAmount} {this.props.giftAid}\n \n );\n }\n}\n\nexport default ConfirmationAmountGiftAid;\n\nConfirmationAmountGiftAid.propTypes = {\n extraDonateAmount: PropTypes.string,\n giftAid: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ConfirmationAmount from './ConfirmationAmount';\nimport ConfirmationAmountGiftAid from './ConfirmationAmountGiftAid';\nimport { BodyText } from '@paypalcorp/pp-react';\nimport { isCampaigns } from '../utility/productIntegrationUtils';\n\nconst ConfirmationMessage = ({\n yourDonation,\n giftaidFlag,\n extraDonateAmount,\n giftAid,\n orgSuccess,\n}) => {\n return (\n
\n \n {giftaidFlag && (\n \n )}\n {isCampaigns() && orgSuccess && (\n \n {orgSuccess}\n \n )}\n
\n );\n};\n\nConfirmationMessage.propTypes = {\n yourDonation: PropTypes.object,\n giftaidFlag: PropTypes.bool,\n extraDonateAmount: PropTypes.string,\n giftAid: PropTypes.string,\n orgSuccess: PropTypes.object,\n};\n\nexport default ConfirmationMessage;\n","import React, { useEffect } from 'react';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport ConfirmationCheckmark from './ConfirmationCheckmark';\nimport ConfirmationMessage from './ConfirmationMessage';\nimport ConfirmationView from './ConfirmationView';\nimport withConfirmationData from './withConfirmationData';\nimport withConfirmationMessages from './withConfirmationMessages';\nimport withTheme from '../components/withTheme';\nimport PropTypes from 'prop-types';\nimport * as AppActions from '../actions/AppActions';\nimport { addClass } from '../utility/domUtils';\nimport { isInContext } from '../utility/inContextDonation';\n\nfunction SuccessView(props) {\n const {\n confirmationNumber,\n extraDonateAmount,\n giftAidConfText,\n giftaidFlag,\n rp_status,\n yourDonation,\n yourRPdonation,\n orgSuccess,\n } = props;\n\n // Disabling 'Pull to Refresh' to thwart POST requests to /donate/guest/confirmation logged in calkibana.\n useEffect(() => {\n document.body.classList?.add('no-pulltorefresh');\n }, []);\n\n useEffect(() => {\n AppActions.showLanguageSelector(false);\n }, []);\n\n useEffect(() => {\n if (isInContext) {\n addClass('#mainWrapper', ['in-context-success-page']);\n }\n }, []);\n\n const SuccessMessage = () => (\n \n \n \n \n \n );\n\n return (\n \n }\n message={}\n />\n );\n}\n\nSuccessView.propTypes = {\n confirmationNumber: PropTypes.string,\n extraDonateAmount: PropTypes.string,\n giftAidConfText: PropTypes.string,\n giftaidFlag: PropTypes.bool,\n rp_status: PropTypes.bool,\n returnTo: PropTypes.string,\n returnText: PropTypes.string,\n yourRPdonation: PropTypes.object,\n yourDonation: PropTypes.object,\n orgSuccess: PropTypes.object,\n};\n\nexport default withConfirmationData(\n withConfirmationMessages(withTheme(SuccessView), 'success')\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/utils/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 console.log('stay-and-finish clicked');\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport {\n Accordion,\n AccordionRow,\n RewardsIcon,\n Divider,\n CaptionText,\n} from '@paypalcorp/pp-react';\nimport { getCurrencySymbol } from '../utility/getTemplateData';\nimport {\n getCurrencyParts,\n formatCurrencyAsString,\n formatPercentage,\n} from '../utility/formator';\nimport { sanitize } from '../utility/domUtils';\n\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nconst styles = StyleSheet.create({\n offerWrapper: {\n paddingBottom: '20px',\n maxWidth: 415,\n margin: 'auto',\n },\n success: {\n paddingBottom: '8px',\n },\n accordionWrapper: {\n marginRight: 0,\n marginLeft: 0,\n backgroundColor: '#f5fbfe',\n backgroundClip: 'content-box',\n },\n offerDivider: {\n borderColor: '#BFDBEE',\n margin: 0,\n },\n offerHeader: {\n display: 'flex',\n justifyContent: 'flex-start',\n wordBreak: 'keep-all',\n },\n messageFrom: {\n paddingTop: '10px',\n paddingBottom: '10px',\n },\n description: {\n paddingBottom: '10px',\n },\n});\n\nfunction formatOfferTextAmount(value, currencyCode, type = 'MONETARY') {\n const isAmtPercent = type === 'PERCENTAGE';\n const formattedValue = (value / 100).toFixed(2);\n const amountOpts = { currency: currencyCode, value: formattedValue };\n\n return isAmtPercent\n ? formatPercentage(formattedValue)\n : formatCurrencyAsString(amountOpts);\n}\n\nclass OfferDetail extends React.Component {\n constructor(props) {\n super(props);\n let rightSymbol;\n try {\n const [firstParts = {}] = getCurrencyParts();\n rightSymbol = firstParts.$ !== 'symbol';\n } catch (e) {\n rightSymbol = false;\n }\n this.state = {\n rightSymbol,\n };\n }\n\n componentDidMount() {\n const row = document.getElementById('offerAccordion-row1');\n if (row) {\n row.click();\n }\n }\n\n createMarkup(content) {\n return {\n __html: content,\n };\n }\n\n handleClick() {\n trackLinkClick(LINK_NAME.VOUCHER);\n }\n\n getAmountDisplayValue = ({ value, currencyCode }) => {\n let amountDisplayValue;\n if (this.state.rightSymbol) {\n amountDisplayValue = `${value}${getCurrencySymbol(currencyCode)}`;\n } else {\n amountDisplayValue = `${getCurrencySymbol(currencyCode)}${value}`;\n }\n return amountDisplayValue;\n };\n\n render() {\n const {\n offerProgram: {\n clientOfferType,\n businessName,\n subTitle,\n description,\n type,\n value,\n currencyCode,\n },\n success,\n } = this.props;\n\n const isCustomOffer = clientOfferType && clientOfferType === 'CUSTOM';\n const offerTextAmount = formatOfferTextAmount(value, currencyCode, type);\n let title = new MessageFormat(this.context, {\n id: 'common.offerdetail.offer.title',\n });\n let aMessageFrom = new MessageFormat(this.context, {\n id: 'common.offerdetail.offer.messagefrombusiness',\n }).format({\n businessName: sanitize(businessName),\n });\n const titleMessage = isCustomOffer\n ? sanitize(subTitle)\n : title.format({ amountText: offerTextAmount });\n // const additonalMessage = messages.offer.receive.replace('{amountText}', offerTextAmountOff);\n if (titleMessage && description) {\n let heading = (\n
\n
\n \n
\n \n
\n );\n return (\n \n this.handleClick()}\n >\n \n \n \n
\n

\n {`\"${description}\"`}

\n
\n
\n
\n \n \n );\n }\n return null;\n }\n}\n\nOfferDetail.propTypes = {\n offerProgram: PropTypes.object.isRequired,\n success: PropTypes.bool,\n};\n\nOfferDetail.contextType = WorldReadyContext;\nexport default OfferDetail;\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 (let 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 (let 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 React from 'react';\nimport * as AppActions from '../actions/AppActions';\n\nexport default function withCurrentPageUpdate(WrappedComponent, currentPage) {\n return class WithCurrentPageUpdate extends React.Component {\n componentDidMount() {\n AppActions.updateCurrentPage({\n currentPage: currentPage,\n });\n }\n\n render() {\n return ;\n }\n };\n}\n","import React from 'react';\nimport withCurrentPageUpdate from '../../confirmation/withCurrentPageUpdate';\nimport withPageTrack from '../../confirmation/withPageTrack';\nimport withPostTransactionRequest from '../../confirmation/withPostTransactionRequest';\nimport PendingView from '../../confirmation/PendingView';\nimport SuccessView from '../../confirmation/SuccessView';\n\nconst PAGE_UPDATE_TAG = 'memberConfirmation';\nconst POST_TRANSACTION_URL = '/donate/member/postTransaction';\nconst FLOW = 'member';\n\nexport const MemberConfirmationPending = withPageTrack(\n withCurrentPageUpdate(\n withPostTransactionRequest(PendingView, POST_TRANSACTION_URL),\n PAGE_UPDATE_TAG\n ),\n FLOW,\n 'pending'\n);\n\nexport const MemberConfirmationRecurring = withPageTrack(\n withCurrentPageUpdate(SuccessView, 'MemberRecurringConfirmation'),\n FLOW,\n 'success'\n);\n\nexport const MemberConfirmationSuccess = withPageTrack(\n withCurrentPageUpdate(\n withPostTransactionRequest(SuccessView, POST_TRANSACTION_URL),\n PAGE_UPDATE_TAG\n ),\n FLOW,\n 'success'\n);\n","import React, { useEffect, useState, useContext } from 'react';\nimport { Tooltip } from '@paypalcorp/pp-react';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport * as AppConstants from '../../utility/constants';\nimport AppStore from '../../stores/AppStore';\nimport PropTypes from 'prop-types';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nfunction PPCC({ isHeader }) {\n const worldReady = useContext(WorldReadyContext);\n const [showTooltip, setShowTooltip] = useState(AppStore.getPPCCStatus());\n const toolTipMsgFmt = new MessageFormat(worldReady, {\n id: 'common.ppcc.ppcc.tooltip',\n });\n let dispatcherMessages;\n const registerAppDispatcherMessages = () => {\n dispatcherMessages = AppDispatcher.register((payload) => {\n if (\n payload.action &&\n payload.action.actionType === AppConstants.UPDATE_PPCC_STATUS\n ) {\n setShowTooltip(payload.action.item);\n }\n });\n };\n\n useEffect(() => {\n registerAppDispatcherMessages();\n return function cleanup() {\n AppDispatcher.unregister(dispatcherMessages);\n };\n }, []);\n\n if (!showTooltip) {\n return null;\n }\n return (\n \n );\n}\n\nPPCC.propTypes = {\n isHeader: PropTypes.bool,\n};\n\nexport default PPCC;\n","/*\n * Returns the interval between navigationStart and current time\n */\nconst getTimeToInteract = () => {\n const startTime = window?.performance?.timing?.navigationStart;\n // send the difference only when startTime is available\n\n return startTime ? Date.now() - startTime : 0;\n};\n\n/*\n * Function that returns the page load time\n */\nconst getPageLoadTime = () => {\n const time = window?.performance?.timing || {};\n\n // send the difference only when time is available\n return time ? time.loadEventEnd - time.navigationStart : 0;\n};\n\nconst getDeviceAndNetworkInfo = () => {\n const networkInfo = window?.navigator?.connection || {};\n\n return {\n screen_width: window?.innerWidth || document?.documentElement?.clientWidth, // fallback to clientWidth to support ie\n screen_height:\n window?.innerHeight || document?.documentElement?.clientHeight, // fallback to clientHeight to support ie\n network_effectiveType: networkInfo?.effectiveType, // 2g, 3g, wifi , etc calculated from downlink and etc\n };\n};\n\n/**\n *\n * @param { action, uicomp, uitype, page } params\n */\n\nexport const logPerformance = (params) => {\n if (!window?.PAYPAL?.analytics?.logPerformance) {\n return;\n }\n\n const deviceAndNetworkInfo = getDeviceAndNetworkInfo(),\n logPerformanceData = {\n ...params,\n tt: getPageLoadTime(), // tt - The whole process of navigation and page load\n view: {\n t11: getTimeToInteract(),\n et: deviceAndNetworkInfo?.network_effectiveType, // network connection type\n pt: document.title, // page title\n ru: document.referrer, // referrer\n cd: window.screen.colorDepth, // screenColorDepth\n sw: window.screen.width, // screenWidth\n sh: window.screen.height, // screenHeight\n dw: window.screen.width * (window.devicePixelRatio || 1), // deviceWidth\n dh: window.screen.height * (window.devicePixelRatio || 1), // deviceHeight\n bw: deviceAndNetworkInfo?.screen_width, // browserWidth\n bh: deviceAndNetworkInfo?.screen_height, // browserHeight\n },\n };\n\n try {\n window.PAYPAL.analytics.logPerformance(logPerformanceData);\n } catch (error) {\n console.log('Error populating log performance data: ', error);\n }\n};\n\nexport const startCustomCPLTrackingForConfirmationPage = () => {\n const page = `${window.fpti.page.split('success:')[0]}confirmationView:web:`;\n window.PAYPAL.analytics.startCPLTracking({\n page,\n action: 'confirmation_page_loaded',\n uicomp: 'confirmationView',\n uitype: 'page',\n });\n};\n\nexport const endCustomCPLTrackingForConfirmationPage = () => {\n const page = `${window.fpti.page.split('success:')[0]}confirmationView:web:`;\n window.PAYPAL.analytics.endCPLTracking({\n page,\n action: 'confirmation_page_loaded',\n uicomp: 'confirmationView',\n uitype: 'page',\n });\n};\n","import React, { useEffect, useState } from 'react';\nimport { CaptionText } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport { EVENT_NAME } from '../utility/constants';\nimport { trackLinkClick } from '../fpti/fpti';\n\nexport default function Disclaimer(props) {\n const [content, setContent] = useState(null);\n\n useEffect(() => {\n setContent(props.content);\n }, []);\n\n useEffect(() => {\n const terms = document.querySelectorAll(\n 'div[data-testid=\"disclaimer-content\"] > span > a'\n );\n if (terms?.length > 0 && props.content) {\n // terms is a NodeList of type object\n for (let i = 0; i < terms.length; i++) {\n terms[i].addEventListener('click', () => {\n const link = terms[i].href?.split('/').pop();\n trackLinkClick(link, {\n eventName: EVENT_NAME.DW_GIVING_DONATE_SETUP_TERMS_PRESSED,\n });\n });\n }\n }\n }, [content]);\n\n if (isEmpty(content)) {\n return null;\n }\n\n return (\n \n {content}\n \n );\n}\n\nDisclaimer.propTypes = {\n content: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.string,\n PropTypes.element,\n ]),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from '../utility/worldReadyUtils';\nimport * as DOMPurify from 'dompurify';\n\nfunction MessageWithHTML({ id, ...rest }) {\n const worldReady = getWorldReady();\n const messageFormatter = new MessageFormat(worldReady, {\n id,\n });\n\n return (\n \n );\n}\n\nMessageWithHTML.propTypes = {\n id: PropTypes.string,\n};\n\nexport default MessageWithHTML;\n","import templateData from './getTemplateData';\nimport { getParameterByName } from './queryStringHelper';\nconst languagesList = templateData.languagesList;\n\nexport function getCurrentLangName() {\n const languageCode = templateData.language;\n let currentLanguage = 'English';\n languagesList.forEach((lang) => {\n const languageName = lang.split('-')[0];\n const locale = lang.split('-')[1];\n if (locale.split('_')[0] === languageCode) {\n currentLanguage = languageName;\n }\n });\n\n return currentLanguage;\n}\n\nexport function getLanguageOptions() {\n const lang_options = [];\n languagesList.forEach((lang) => {\n const languageName = lang.split('-')[0];\n lang_options.push({\n title: languageName,\n });\n });\n\n return lang_options;\n}\n\nexport function updatePageLanguageByLocale(locale) {\n const urlParams = `token=${templateData.token}&locale.x=${locale}`;\n const isOnGuestForm =\n window.location.href.indexOf('/guest') > 0 ||\n ![undefined, null].includes(getParameterByName('signup'));\n\n let updatedUrl;\n if (isOnGuestForm) {\n const clientState = encodeURIComponent(`/donate/guest?${urlParams}`);\n updatedUrl = `/donate/?${urlParams}&clientState=${clientState}`;\n } else {\n updatedUrl = `${window.location.href.split('?')[0]}?${urlParams}`;\n }\n\n window.location.href = updatedUrl;\n}\n","import React, { useState } from 'react';\nimport { ActionMenu, Button, ChevronUpIcon } from '@paypalcorp/pp-react';\nimport templateData from '../utility/getTemplateData';\nimport { showSpinnerOverlay } from '../utility/helper';\nimport {\n getCurrentLangName,\n updatePageLanguageByLocale,\n getLanguageOptions,\n} from '../utility/languageSelector';\n\nconst languagesList = templateData.languagesList;\n\nexport default function LanguageSelector() {\n const [isOpen, setIsOpen] = useState(false);\n const currentLanguage = getCurrentLangName();\n const options = getLanguageOptions();\n\n if (!options) return null;\n\n const openMenu = () => {\n setIsOpen(!isOpen);\n };\n\n const closeMenu = () => {\n setIsOpen(false);\n };\n\n const getLocale = (index) => {\n const lang = languagesList[index];\n const locale = `${lang.split('-')[1].split('_')[0]}_${\n templateData.country\n }`;\n return locale;\n };\n\n const selectMenuItem = (index) => {\n showSpinnerOverlay();\n const locale = getLocale(index);\n updatePageLanguageByLocale(locale);\n };\n\n return (\n
\n \n \n
\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Col, Row, Link } from '@paypalcorp/pp-react';\nimport { Message } from '@paypalcorp/worldready-react';\nimport templateData from '../../utility/getTemplateData';\nimport MessageWithHTML from '../MessageWithHtml';\n\nexport const Help = () => (\n
  • \n \n \n \n
  • \n);\n\nexport const Security = () => (\n
  • \n \n \n \n
  • \n);\nexport const ReportInappropriateContent = () => (\n
  • \n \n \n \n
  • \n);\n\nexport const Feedback = (props) => (\n
  • \n \n \n \n
  • \n);\n\nexport const Imprint = () => (\n
  • \n \n \n \n
  • \n);\n\nexport const CopyRight = () => (\n
  • \n

    \n \n

    \n
  • \n);\n\nexport const Privacy = () => (\n
  • \n

    \n \n \n \n

    \n
  • \n);\n\nexport const Legal = () => (\n
  • \n

    \n \n \n \n

    \n
  • \n);\n\nexport const Policy = () => (\n
  • \n

    \n \n \n \n

    \n
  • \n);\n\nexport const CombinedFinancialServicesText = () => (\n \n \n
    \n (\n \n {innerMessage}\n \n )}\n />\n
    \n \n
    \n);\n\nFeedback.propTypes = {\n handleQualtrics: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport { Container, Row, Col } from '@paypalcorp/pp-react';\nimport LanguageSelector from '../languageSelectorMenu';\nimport {\n Help,\n Security,\n Feedback,\n ReportInappropriateContent,\n Imprint,\n CopyRight,\n Privacy,\n Policy,\n Legal,\n CombinedFinancialServicesText,\n} from './footerLinks';\nimport templateData from '../../utility/getTemplateData';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport AppStore from '../../stores/AppStore';\nimport {\n isNotFullScreen,\n isInContext,\n isMobileOrTablet,\n} from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { LINK_NAME } from '../../fpti/fptiConstants';\nimport classNames from 'classnames';\nimport withTheme from '../withTheme';\n\nfunction Footer() {\n const [isLanguageSelectorEnabled, setIsLanguageSelectorEnabled] =\n useState(false);\n\n if (isExternalFlow() && isInContext() && isNotFullScreen()) {\n return null;\n }\n\n useEffect(() => {\n setIsLanguageSelectorEnabled(AppStore.getLanguageSelectorState());\n\n const dispatcherMessages = AppDispatcher.register((payload) => {\n if (payload.action?.actionType === 'SHOW_LANGUAGE_SELECTOR') {\n const { item } = payload.action;\n setIsLanguageSelectorEnabled(item);\n }\n });\n\n return () => {\n AppDispatcher.unregister(dispatcherMessages);\n };\n }, []);\n\n const handleQualtrics = () => {\n window.PAYPAL?.analytics?.reloadQualtrics(\n 'donatenodeweb-consumer-qualtrics'\n );\n };\n\n const trackReportLink = () => {\n trackLinkClick(LINK_NAME.REPORT_LINK);\n };\n\n const footerClass = () => {\n return classNames({\n footer_in_context: isInContext() && isNotFullScreen,\n mobile_footer: isMobileOrTablet(),\n });\n };\n\n const footerContainerClass = () => {\n return classNames({\n footer_container: true,\n mobile_footer_container: isMobileOrTablet(),\n });\n };\n\n return (\n
    \n \n \n \n
      \n \n \n \n \n\n {/* Austria, Switzerland, Germany Imprint Link */}\n {['AT', 'CH', 'DE'].includes(templateData.country) && }\n
    \n \n\n {isLanguageSelectorEnabled && (\n \n \n \n )}\n
    \n \n \n
      \n
      \n \n
      \n
      \n \n \n \n
      \n
    \n \n
    \n\n {/* Australia Combined Financial Services Guide and Product Disclosure Statement */}\n {templateData.country === 'AU' && }\n
    \n
    \n );\n}\n\nexport default withTheme(Footer);\n","import { Dispatcher } from 'flux';\nimport assign from 'object-assign';\n\nlet 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 React from 'react';\nimport { BodyText } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\n\nexport default function ConfirmationTitle(props) {\n return {props.message};\n}\n\nConfirmationTitle.propTypes = {\n message: PropTypes.string,\n};\n","import React from 'react';\nimport { hideSpinnerOverlay, setFocus } from '../utility/helper';\nimport _isFunction from 'lodash/isFunction';\nimport AppStore from '../stores/AppStore';\nimport { fetcher } from '../utility/domUtils';\nimport templateData from '../utility/getTemplateData';\n\nexport default function withPostTransactionRequest(\n WrappedComponent,\n postTransactionUrl\n) {\n return class WithPostTransactionRequest extends React.Component {\n componentDidMount() {\n this.isComponentMounted = true;\n this.requestPostTransaction();\n }\n\n requestPostTransaction = async () => {\n const { token } = templateData;\n this.serverRequest = fetcher(postTransactionUrl, {\n method: 'POST',\n body: JSON.stringify({\n token: token,\n onboardingEnabled: templateData.onboardingEnabled,\n }),\n })\n .then((response) => response.json())\n .then((response) => {\n hideSpinnerOverlay();\n setFocus();\n if (response.data.confirmationData) {\n if (this.isComponentMounted) {\n // Dont call setState on an unmounted component\n this.setState({\n amount:\n response.data.confirmationData.amount ||\n AppStore.getDonationAmount(),\n guestSignUp:\n response.data.confirmationData.guestSignUp || false,\n displayMyAccount:\n response.data.confirmationData.showAccountOverview || false,\n confirmationNumber:\n response.data.confirmationData.confirmationNumber || '',\n receiptId: response.data.confirmationData.receiptId || '',\n recurringConfirmationId:\n response.data.confirmationData.recurringConfirmationId || '',\n });\n }\n }\n });\n };\n\n abortRequestPostTransaction = () => {\n this.isComponentMounted = false;\n if (this.serverRequest && _isFunction(this.serverRequest.abort)) {\n this.serverRequest.abort();\n }\n };\n\n componentWillUnmount = () => {\n this.abortRequestPostTransaction();\n };\n\n render() {\n return ;\n }\n };\n}\n","import templateData from '../utility/getTemplateData';\nimport { getParameterByName } from './queryStringHelper';\n\nconst REMEMBERED_AUTH_STATE = 'REMEMBERED';\nconst LOGGEDIN_AUTH_STATE = 'LOGGEDIN';\nconst FROMUL_QUERY_PARAM = 'fromUL';\n\nexport function getForcedLoginUrlWithoutOt() {\n return templateData.forcedLoginUrlWithoutOt;\n}\n\nexport function getHardLogoutUrl(force = false) {\n return templateData.hardLogoutUrl;\n}\n\nexport function isOneTouchUser() {\n return templateData.authState === REMEMBERED_AUTH_STATE;\n}\n\nexport function isLoggedInUser() {\n return templateData.authState === LOGGEDIN_AUTH_STATE;\n}\n\nexport function isAuthenticatedUser() {\n return isOneTouchUser() || isLoggedInUser();\n}\n\nexport function shouldShowUserBanner() {\n if (isOneTouchUser()) {\n return true;\n }\n\n const fromUL = getParameterByName(FROMUL_QUERY_PARAM) || '';\n\n if (!fromUL && isLoggedInUser()) {\n return true;\n }\n\n if (fromUL === 'true' && isLoggedInUser()) {\n return false;\n }\n\n // Default to not showing the banner\n return false;\n}\n","import React from 'react';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\nimport { EVENT_NAME } from '../utility/constants';\nimport { isExternalFlow } from '../utility/productIntegrationUtils';\nimport TemplateData from '../utility/getTemplateData';\nimport { isInContext, isMobileOrTablet } from '../utility/inContextDonation';\nimport classNames from 'classnames';\nimport { CancelAndReturnUrl } from '@paypalcorp/donate-react';\nimport { Col } from '@paypalcorp/pp-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nclass CancelAndReturn extends React.Component {\n static contextType = WorldReadyContext;\n\n constructor() {\n super();\n this.state = {\n displayMe: TemplateData.charityCancelUrl ? true : false,\n };\n this.isLanding = TemplateData.viewName === 'landing';\n }\n\n handleCancel = () => {\n trackLinkClick(LINK_NAME.CANCEL, {\n eventName: EVENT_NAME.DONATE_LANDING_MERCHANT_SITE_PRESSED,\n });\n let cancelurl = TemplateData.charityCancelUrl;\n if (cancelurl.indexOf('http') != 0 && cancelurl.indexOf('//') != 0) {\n cancelurl = '//' + cancelurl;\n }\n window.location.href = cancelurl;\n };\n\n cancelButtonWrapperClass() {\n return classNames({\n 'text-center': true,\n pp_cancel_btn_wrapper: true,\n is_mobile: isMobileOrTablet(),\n is_landing: this.isLanding && !this.props.isGuest,\n });\n }\n\n render() {\n if (isExternalFlow() || isInContext()) {\n return null;\n }\n\n return (\n
    \n {this.state.displayMe && (\n \n \n \n
    \n \n )}\n \n );\n }\n}\n\nexport default CancelAndReturn;\n","export 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 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 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 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};\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","import React from 'react';\nimport { IconButton, CloseIcon } from '@paypalcorp/pp-react';\nimport { closeWindow, isInContext } from '../utility/inContextDonation';\nimport TemplateData from '../utility/getTemplateData';\nimport { getDismissEventName } from '../utility/productIntegrationUtils';\nimport { Message } from '@paypalcorp/worldready-react';\nimport PropTypes from 'prop-types';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\n\nexport default function CloseButton(props) {\n const handleClose = () => {\n trackLinkClick(LINK_NAME.CANCEL, {\n eventName: getDismissEventName(),\n });\n if (isInContext()) {\n closeWindow();\n return;\n }\n window.location.href = TemplateData.charityCancelUrl;\n };\n\n return (\n \n \n \n );\n}\n\nCloseButton.propTypes = {\n isDarkButton: PropTypes.bool,\n};\n","import TemplateData from '../../utility/getTemplateData';\nimport {\n formatCurrency,\n formatCurrencyAsString,\n normalizeNumber,\n getGriffin,\n formatCurrencyNoDecimals,\n} from '../../utility/formator';\nimport _get from 'lodash/get';\nimport AppStore from '../../stores/AppStore';\nimport {\n getMaximumDonationAlertMessage,\n isExternalFlow,\n} from '../../utility/productIntegrationUtils';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from '../../utility/worldReadyUtils';\n\nexport const MIN_INPUT_WIDTH = 91;\nexport const DEFAULT_INPUT_FONTSIZE = 44;\n\n/**\n * This is a copy of the function \"formatAmountFromServer\" from\n * \"public/js/buttons/utils/amountUtils.js\"\n */\nexport function formatAmountFromServerDNW(\n value,\n currency,\n { noDecimals = false } = {}\n) {\n let griffin = getGriffin();\n const digits = _get(griffin, `metadata.currencyInfo[${currency}].digits`);\n const negativeDigits = `-${digits}`;\n\n if (value.indexOf('.') < 0) {\n if (digits === 2) {\n value = `${value}.00`;\n }\n if (digits === 1) {\n value = `${value}.0`;\n }\n } else {\n const digitsAfterDecimalPoint = value.split('.')[1].length;\n if (digitsAfterDecimalPoint === 1 && digits === 2) {\n value = `${value}0`;\n }\n }\n\n value = value.replace(/[^0-9]/g, '') || 0;\n value = parseInt(value, 10).toString();\n\n if (value.length === 1) {\n value = `00${value}`;\n } else if (value.length === 2) {\n value = `0${value}`;\n }\n // else if (value.length > MAX_AMOUNT_LENGTH) {\n // \tvalue = value.substr(0, MAX_AMOUNT_LENGTH);\n // }\n\n // Some currencies (eg: JPY) do not have decimal points\n if (digits > 0) {\n value = `${value.slice(0, negativeDigits)}.${value.slice(negativeDigits)}`;\n }\n\n if (\n isExternalFlow() ||\n (noDecimals && value.slice(negativeDigits) === '00')\n ) {\n return formatCurrencyNoDecimals({ value });\n }\n\n return formatCurrency({ value, currency });\n}\n\nexport function formatAmount(value = '', currency) {\n value = value.replace(/[^0-9]/g, '') || 0;\n value = parseInt(value, 10).toString();\n\n if (value.length === 1) {\n value = `00${value}`;\n } else if (value.length === 2) {\n value = `0${value}`;\n }\n\n let griffin = getGriffin();\n const digits = _get(\n griffin,\n `metadata.currencyInfo[${TemplateData.donationCode}].digits`\n );\n const negativeDigits = `-${digits}`;\n\n // Some currencies (eg: JPY) do not have decimal points\n if (digits > 0) {\n value = `${value.slice(0, negativeDigits)}.${value.slice(negativeDigits)}`;\n }\n\n return formatCurrency({ value, currency });\n}\n\nexport function amountLengthValid(value = '') {\n const val = value.replace(/[^0-9]/g, '') || 0;\n\n if (val.length > 9) {\n return false;\n }\n return true;\n}\n\nconst allowedKeys = [16, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57];\nexport function isKeyAllowed(keyCode) {\n return allowedKeys.indexOf(keyCode) > -1;\n}\n\nexport function getMinimumDonationErrorMessage(id, amount = 1) {\n const worldReady = getWorldReady();\n\n const formattedDollarOne = formatCurrencyAsString({\n value: amount,\n currency: TemplateData.donationCode,\n maximumFractionDigits: 0,\n });\n\n return new MessageFormat(worldReady, {\n id: `${id}.error.minimumDonationUS`,\n }).format({ amount: formattedDollarOne });\n}\n\n/**\n * 1. Validate donation amount against the minimum donation amount\n * configured by clients or the $1 requirement for US, whichever is larger\n * 2. Validate if amount is greater than 0\n */\n\nexport function validateMinimumDonationAmount(id) {\n // Get client configured minimum donation from token\n let minimumDonationAmount = Number(TemplateData.minimumDonationAmount) || 0;\n if (TemplateData.donationCode === 'USD') {\n // For US donations, set the minimum amount limit as the lager amount\n // of the client's configuration and $1\n minimumDonationAmount = Math.max(minimumDonationAmount, 1);\n }\n\n const worldReady = getWorldReady();\n const donationAmount = Number(AppStore.getDonationAmount());\n\n let showValidationError = false,\n validationErrorMessage = '',\n validationErrorCode = '';\n if (\n donationAmount !== '' &&\n minimumDonationAmount > 0 &&\n donationAmount < minimumDonationAmount\n ) {\n showValidationError = true;\n validationErrorMessage = getMinimumDonationErrorMessage(\n id,\n minimumDonationAmount\n );\n validationErrorCode = 'MINIMUM_DONATION_AMOUNT_VALIDATION_ERROR';\n } else if (donationAmount <= 0 || donationAmount === '') {\n showValidationError = true;\n validationErrorMessage = new MessageFormat(worldReady, {\n id: `${id}.error.amount`,\n }).format();\n validationErrorCode = 'MINIMUM_DONATION_AMOUNT_VALIDATION_ERROR';\n }\n return {\n showValidationError,\n validationErrorMessage,\n validationErrorCode,\n };\n}\n\nexport function validateMaximumDonationAmount() {\n const maximumDonationAmount = Number(TemplateData.maximumDonationAmount) || 0;\n const donationAmount = Number(AppStore.getDonationAmount());\n let showValidationError = false,\n validationErrorMessage = '',\n validationErrorCode = '';\n if (maximumDonationAmount > 0 && donationAmount > maximumDonationAmount) {\n showValidationError = true;\n validationErrorMessage = getMaximumDonationAlertMessage();\n validationErrorCode = 'MAXIMUM_DONATION_AMOUNT_VALIDATION_ERROR';\n }\n return { showValidationError, validationErrorMessage, validationErrorCode };\n}\n\nexport function isAmountGreaterThanZero(amount) {\n return Number(amount) > 0;\n}\n\n/**\n * Returns griffin-normalized number or zero\n */\nexport function getNormalizedNumber(amount) {\n try {\n if (!amount) {\n return 0;\n }\n\n const normalizedNumber = normalizeNumber(amount);\n\n if (isNaN(normalizedNumber)) {\n return 0;\n }\n\n if (typeof normalizedNumber !== 'number' && normalizedNumber.errors) {\n return 0;\n }\n\n return normalizedNumber;\n } catch (e) {\n return 0;\n }\n}\n\n/**\n * Gets the width of the input field\n * @param {HTMLElement} input The input element\n * @param {String} text Value of the input element\n * @return {Number} Width of the input element\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 let { fontWeight } = currentStyles;\n let 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\nconst DIGITS_TO_FONT_SIZE_MAPPING = {\n 8: 42,\n 9: 40,\n 10: 38,\n};\nexport function getFontSize(value) {\n let 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","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\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_guest_review_process_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 },\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: 616,\n WIDTH_LOGO: 400,\n WIDTH_CAMPAIGN: 864,\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};\n","import { isExternalFlow } from './productIntegrationUtils';\nimport templateData from './getTemplateData';\nimport { isInContext } from './inContextDonation';\n\n// eslint-disable-next-line max-params\nfunction getSocialCampaign(\n messages,\n orgName,\n hostedButtonId,\n campaignId,\n socialTitle,\n email\n) {\n const {\n emailSubject = '',\n emailBody = '',\n mobileText = '',\n facebookMessage = '',\n twitterMessage = '',\n whatsappMessage = '',\n copyLinkHeader = '',\n copyLinkSubheaderBefore = '',\n copyLinkSubheader = '',\n copyText = '',\n copiedText = '',\n } = messages || {};\n const domain = templateData.paypalHostName;\n\n const shareableUrl =\n // eslint-disable-next-line no-nested-ternary\n hostedButtonId\n ? `${domain}/donate/?hosted_button_id=${hostedButtonId}&source=url`\n : campaignId\n ? `${domain}/donate/?campaign_id=${campaignId}&source=url`\n : `${domain}/donate/?business=${email}&source=url`;\n\n const socialCampaign = {\n email: true,\n emailSubject: encodeURIComponent(\n emailSubject.replace('{donationName}', orgName)\n ),\n emailBody: encodeURIComponent(\n emailBody\n .replace(new RegExp('
    ', 'g'), '\\r\\n')\n .replace('{donationName}', orgName)\n .replace('{url}', shareableUrl)\n ),\n mobile: true,\n mobileTitle: encodeURIComponent(\n emailSubject.replace('{donationName}', orgName)\n ),\n mobileText: mobileText.replace('{donationName}', orgName),\n facebook: true,\n facebookMessage: facebookMessage\n .replace('{donationName}', orgName)\n .replace('{url}', shareableUrl),\n facebookMessenger: true,\n whatsapp: true,\n whatsappMessage: encodeURIComponent(\n whatsappMessage\n .replace(new RegExp('
    ', 'g'), '\\r\\n')\n .replace('{donationName}', orgName)\n ),\n twitter: true,\n twitterMessage: twitterMessage.replace('{donationName}', orgName),\n copyLink: isInContext() && isExternalFlow() ? false : true,\n copyLinkHeader,\n copyLinkSubheaderBefore,\n copyLinkSubheader,\n copyLinkCopy: copyText,\n copyLinkCopied: copiedText,\n title: socialTitle,\n sheet: messages.sheet,\n };\n\n return socialCampaign;\n}\n\nexport default getSocialCampaign;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, EmailIcon } from '@paypalcorp/pp-react';\n\nfunction SocialShareEmail({ url, handleAnalytics, linkTitle }) {\n const mailToHandle = () => {\n handleAnalytics('email');\n window.location.href = url;\n };\n\n return (\n \n {linkTitle}\n \n );\n}\n\nSocialShareEmail.propTypes = {\n url: PropTypes.string,\n handleAnalytics: PropTypes.func,\n linkTitle: PropTypes.string,\n};\n\nexport default SocialShareEmail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, PhoneIcon } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\n\nconst styles = StyleSheet.create({\n iconLink: {\n marginRight: '0.375rem',\n },\n});\n\nfunction SocialShareMobile({ handleMobileClick, linkTitle }) {\n return (\n \n {linkTitle}\n \n );\n}\n\nSocialShareMobile.propTypes = {\n handleMobileClick: PropTypes.func,\n linkTitle: PropTypes.string,\n color: PropTypes.color,\n};\n\nexport default SocialShareMobile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, ShareFacebookIcon } from '@paypalcorp/pp-react';\n\nfunction SocialShareFacebook({ url, handleSocialLinkClick, linkTitle }) {\n return (\n handleSocialLinkClick(url, 'facebook')}\n data-testid=\"social-share-facebook\"\n size=\"sm\"\n buttonType=\"secondary\"\n svgIconComponent={ShareFacebookIcon}\n >\n {linkTitle}\n \n );\n}\n\nSocialShareFacebook.propTypes = {\n url: PropTypes.string,\n handleSocialLinkClick: PropTypes.func,\n linkTitle: PropTypes.string,\n};\n\nexport default SocialShareFacebook;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, ShareMessengerIcon } from '@paypalcorp/pp-react';\n\nfunction SocialShareMessenger({ url, handleSocialLinkClick, linkTitle }) {\n return (\n handleSocialLinkClick(url, 'messenger')}\n data-testid=\"social-share-messenger\"\n size=\"sm\"\n buttonType=\"secondary\"\n svgIconComponent={ShareMessengerIcon}\n >\n {linkTitle}\n \n );\n}\n\nSocialShareMessenger.propTypes = {\n url: PropTypes.string,\n handleSocialLinkClick: PropTypes.func,\n linkTitle: PropTypes.string,\n color: PropTypes.string,\n};\n\nexport default SocialShareMessenger;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, ShareWhatsappIcon } from '@paypalcorp/pp-react';\n\nfunction SocialShareWhatsapp({ url, handleSocialLinkClick, linkTitle }) {\n return (\n handleSocialLinkClick(url, 'whatsapp')}\n data-testid=\"social-share-whatsapp\"\n size=\"sm\"\n buttonType=\"secondary\"\n svgIconComponent={ShareWhatsappIcon}\n >\n {linkTitle}\n \n );\n}\n\nSocialShareWhatsapp.propTypes = {\n url: PropTypes.string,\n handleSocialLinkClick: PropTypes.func,\n linkTitle: PropTypes.string,\n};\n\nexport default SocialShareWhatsapp;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, ShareTwitterIcon } from '@paypalcorp/pp-react';\n\nfunction SocialShareTwitter({ url, handleSocialLinkClick, linkTitle }) {\n return (\n handleSocialLinkClick(url, 'twitter')}\n data-testid=\"social-share-twitter\"\n size=\"sm\"\n buttonType=\"secondary\"\n svgIconComponent={ShareTwitterIcon}\n >\n {linkTitle}\n \n );\n}\n\nSocialShareTwitter.propTypes = {\n url: PropTypes.string,\n handleSocialLinkClick: PropTypes.func,\n linkTitle: PropTypes.string,\n color: PropTypes.string,\n};\n\nexport default SocialShareTwitter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, LinkIcon } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\n\nconst styles = StyleSheet.create({\n iconLink: {\n marginRight: '0.375rem',\n },\n});\n\nfunction SocialShareCopyLink({ handleOpenCopyModal, linkTitle }) {\n return (\n \n {linkTitle}\n \n );\n}\n\nSocialShareCopyLink.propTypes = {\n url: PropTypes.string,\n handleOpenCopyModal: PropTypes.func,\n linkTitle: PropTypes.string,\n color: PropTypes.string,\n};\n\nexport default SocialShareCopyLink;\n","export function copyToClipboard(sourceId) {\n let range;\n let selection;\n const sourceElement = document.getElementById(sourceId);\n const isIOS = navigator.userAgent.match(/ipad|iphone/gi);\n if (isIOS) {\n range = document.createRange();\n range.selectNodeContents(sourceElement);\n selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n sourceElement.setSelectionRange(0, 999999);\n sourceElement.readOnly = 'true';\n } else {\n sourceElement.select();\n sourceElement.readOnly = 'true';\n }\n document.execCommand('copy');\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, CheckmarkBackgroundSmIcon } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from '../utility/paypalAphrodite';\nimport { copyToClipboard } from '../setup/lib/copyToClipBoard';\nimport { isInContext } from '../utility/inContextDonation';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react-theme';\n\nconst { sysColorBackgroundSurfaceHover, sysColorPrimaryMain } = PAYPAL_THEME;\n\nconst styles = StyleSheet.create({\n copyLinkFieldContainer: {\n borderBottom: '1px dashed #CBD2D6',\n margin: '20px 0px 30px',\n fontSize: 14,\n '@media @tabletAndMobile': {\n paddingLeft: 0,\n paddingRight: 0,\n },\n ':last-child': {\n borderBottom: 'none',\n },\n },\n inContext: {\n padding: 0,\n maxWidth: 420,\n margin: '0 auto',\n },\n inContextCopyLinkHeight: {\n height: 60,\n maxHeight: 60,\n },\n copyLinkField: {\n backgroundColor: sysColorBackgroundSurfaceHover,\n alignItems: 'center',\n border: '0px',\n borderStyle: 'dotted',\n paddingRight: '12px',\n display: 'flex',\n },\n copyLinkTextarea: {\n backgroundColor: sysColorBackgroundSurfaceHover,\n height: 'auto',\n maxHeight: 60,\n margin: '16px',\n marginRight: '30px',\n fontSize: '1.1rem',\n border: 'none',\n resize: 'none',\n overflow: 'hidden',\n width: '100%',\n outline: 'none',\n wordBreak: 'break-all',\n ':hover': {\n overflow: 'auto',\n },\n flex: 4,\n },\n copyLinkFieldIconContainer: {\n display: 'flex',\n flexDirection: 'row-reverse',\n zIndex: 5,\n alignSelf: 'stretch',\n alignItems: 'center',\n flex: 1,\n },\n copyLinkFieldIcons: {\n lineHeight: '1rem',\n cursor: 'pointer',\n minWidth: '4rem',\n },\n notCopied: {\n background: 'none',\n color: sysColorPrimaryMain,\n },\n copied: {\n borderColor: '#018065',\n backgroundColor: '#018065',\n color: 'white',\n },\n copyLinkDescription: {\n padding: '8px 16px 20px',\n },\n});\n\nfunction CopyLink({ url, analytics, messages }) {\n const [isCopied, setIsCopied] = useState(false);\n const [padding, setPadding] = useState('16px');\n const copyRef = useRef(null);\n useEffect(() => {\n if (copyRef.current) {\n // hacky padding to center text in a textarea\n const current = copyRef.current;\n const innerHTML = current.innerHTML;\n if (!innerHTML || innerHTML.length > 48 || current.clientWidth < 195) {\n setPadding('0');\n return;\n }\n setPadding('3% 0px');\n }\n }, []);\n\n function handleCopyToClipBoard() {\n copyToClipboard('copy-link-text');\n if (analytics) {\n analytics('copy_link');\n }\n setIsCopied(true);\n setTimeout(() => {\n setIsCopied(false);\n }, 3000);\n }\n\n return (\n typeof document !== 'undefined' &&\n document.queryCommandSupported('copy') && (\n \n \n \n {url}\n \n
    \n {isCopied ? (\n \n \n \n ) : (\n \n {messages.copy}\n \n )}\n
    \n \n \n )\n );\n}\n\nCopyLink.propTypes = {\n url: PropTypes.string,\n analytics: PropTypes.func,\n messages: PropTypes.object,\n};\n\nCopyLink.defaultProps = {\n analytics: null,\n};\n\nexport default CopyLink;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Dialog,\n BodyText,\n CaptionText,\n ActionMenu,\n Button,\n ShareFacebookIcon,\n EmailIcon,\n ShareMessengerIcon,\n ShareWhatsappIcon,\n ShareTwitterIcon,\n LinkIcon,\n CheckmarkBackgroundSmIcon,\n} from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport SocialShareEmail from './socialShareEmail';\nimport SocialShareMobile from './socialShareMobile';\nimport SocialShareFacebook from './socialShareFacebook';\nimport SocialShareMessenger from './socialShareMessenger';\nimport SocialShareWhatsapp from './socialShareWhatsapp';\nimport SocialShareTwitter from './socialShareTwitter';\nimport SocialShareCopyLink from './socialShareCopyLink';\nimport Illustration from '../illustrations/Illustration';\nimport CopyLink from '../CopyLink';\nimport { isInContext, isMobileOrTablet } from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport { EVENT_NAME } from '../../utility/constants';\nimport { copyToClipboard } from '../../setup/lib/copyToClipBoard';\nimport templateData from '../../utility/getTemplateData';\nimport { trackLinkClick, trackPageIM } from '../../fpti/fpti';\nimport { FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react-theme';\nimport { isCampaigns } from '../../utility/productIntegrationUtils';\nimport { Col } from '@paypalcorp/pp-react';\n\nconst { sysColorBackgroundHighContrast } = PAYPAL_THEME;\n\nconst styles = StyleSheet.create({\n socialContainer: {\n display: 'flex',\n ':nth-child(1n) > *': {\n marginRight: 10,\n },\n },\n socialContainerMobile: {\n marginLeft: 10,\n },\n shareMenu: {\n flexDirection: 'column',\n },\n copyLinkModal: {\n paddingBottom: 30,\n },\n copyLinkContainer: {\n margin: '0 0 60px',\n },\n copyLinkHeader: {\n color: sysColorBackgroundHighContrast,\n marginTop: 20,\n marginBottom: 0,\n fontSize: '1.6rem',\n },\n copyLinkSubheader: {\n color: sysColorBackgroundHighContrast,\n marginTop: 28,\n marginRight: 'auto',\n fontSize: '1.15rem',\n },\n});\n\nexport default function SocialShare({\n shareUrl,\n socialCampaign,\n isMobile,\n ...props\n}) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isShareMenuOpen, setIsShareMenuOpen] = useState(false);\n const [isCopied, setIsCopied] = useState(false);\n\n const encodedUrl = encodeURIComponent(shareUrl);\n const appId = '321983581337375';\n const emailUrl = `mailto:?subject=${socialCampaign.emailSubject}&body=${socialCampaign.emailBody}`;\n const facebookUrl = `https://www.facebook.com/dialog/share?app_id=${appId}&display=popup"e=${socialCampaign.facebookMessage}&href=${encodedUrl}`;\n const fbMessengerUrl = isMobile\n ? `fb-messenger://share/?link=${encodedUrl}&app_id=${appId}"e=${socialCampaign.facebookMessage}`\n : `https://www.facebook.com/dialog/send?app_id=${appId}&display=popup&link=${encodedUrl}&redirect_uri=${templateData.paypalHostName}`;\n const whatsappUrl = `https://${\n isMobile ? 'api' : 'web'\n }.whatsapp.com/send?&text=${socialCampaign.whatsappMessage}%20${encodedUrl}`;\n const twitterUrl = `https://twitter.com/intent/tweet?url=${encodedUrl}&text=${socialCampaign.twitterMessage}`;\n const socialShareAltText = socialCampaign.title;\n const isActionMenu = props.renderMode === 'sheet' ? true : false;\n const socialItems = isActionMenu ? generateMenuOptions() : [];\n\n function handleSocialLinkClick(url, type) {\n window.open(\n url,\n 'popup',\n 'toolbar=0,status=0,width=640,height=340,scrollable=true'\n );\n handleAnalytics(`social_share_${type}`);\n }\n\n function handleOpenCopyModal() {\n setIsModalOpen(true);\n }\n\n function handleMobileClick() {\n if (navigator.share) {\n navigator.share({\n title: socialCampaign.mobileTitle,\n text: socialCampaign.mobileText,\n url: shareUrl,\n });\n } else {\n window.open(\n shareUrl,\n 'popup',\n 'toolbar=0,status=0,width=640,height=340,scrollable=true'\n );\n }\n handleAnalytics('mobile_share');\n }\n\n function handleMenuSelection(index) {\n if (socialItems[index].type === 'copy_link') {\n copyToClipboard('copy-link-text');\n setIsCopied(true);\n handleAnalytics('copy_link');\n\n setTimeout(() => {\n setIsCopied(false);\n }, 3000);\n } else {\n if (socialItems[index].type === 'email') {\n handleAnalytics('email');\n window.open(socialItems[index].url);\n } else if (socialItems[index].type === 'mobile_share') {\n handleMobileClick();\n } else {\n handleSocialLinkClick(\n socialItems[index].url,\n socialItems[index].title.toLowerCase()\n );\n }\n setIsCopied(false);\n setIsShareMenuOpen(false);\n }\n }\n\n function handleAnalytics(type) {\n if (props.analytics) {\n props.analytics(type);\n }\n }\n\n function generateMenuOptions() {\n let options = [];\n\n if (socialCampaign.email) {\n options.push({\n title: socialCampaign.sheet.email,\n url: emailUrl,\n type: 'email',\n itemLeft: (\n \n ),\n });\n }\n if (socialCampaign.facebook) {\n options.push({\n title: socialCampaign.sheet.facebook,\n url: facebookUrl,\n type: 'facebook',\n itemLeft: (\n \n ),\n });\n }\n if (socialCampaign.twitter) {\n options.push({\n title: socialCampaign.sheet.twitter,\n url: twitterUrl,\n type: 'twitter',\n itemLeft: (\n \n ),\n });\n }\n if (socialCampaign.facebookMessenger) {\n options.push({\n title: socialCampaign.sheet.messenger,\n url: fbMessengerUrl,\n type: 'messenger',\n itemLeft: (\n \n ),\n });\n }\n if (socialCampaign.whatsapp) {\n options.push({\n title: socialCampaign.sheet.whatsapp,\n url: whatsappUrl,\n type: 'whatsapp',\n itemLeft: (\n \n ),\n });\n }\n if (socialCampaign.copyLink) {\n options.push({\n title: (\n <>\n {socialCampaign.sheet.copyLink}\n {isCopied ? (\n <>\n \n \n {socialCampaign.copyLinkCopied}\n \n \n ) : null}\n \n ),\n type: 'copy_link',\n itemLeft: (\n <>\n \n {shareUrl}\n \n \n \n ),\n });\n }\n\n return options;\n }\n\n function handleMobileSocialShareButtonClick() {\n setIsShareMenuOpen(true);\n\n trackLinkClick(LINK_NAME.SOCIAL_SHARE, {\n eventName: EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED,\n });\n\n trackPageIM({\n pageSpec: {\n pgrp: window.fpti.pgrp,\n page: `${window.fpti.pgrp}:mobile::`,\n },\n additionalData: {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DW_GIVING_SHARE_SCREEN_SHOWN,\n },\n });\n }\n\n function handleSocialShareSheetClose() {\n setIsShareMenuOpen(false);\n setIsCopied(false);\n trackLinkClick(LINK_NAME.SOCIAL_SHARE_DISMISS, {\n eventName: EVENT_NAME.DW_GIVING_SHARE_DISMISS_PRESSED,\n });\n }\n\n function mobileSocialShare() {\n return (\n <>\n \n handleMenuSelection(index)}\n options={socialItems}\n >\n \n );\n }\n\n function regularSocialShare() {\n return (\n <>\n {socialCampaign.email && (\n \n )}\n {navigator.share && socialCampaign.mobile && (\n \n )}\n {socialCampaign.facebook && (\n \n )}\n {socialCampaign.facebookMessenger && (\n \n )}\n {socialCampaign.whatsapp && (\n \n )}\n {socialCampaign.twitter && (\n \n )}\n {socialCampaign.copyLink && (\n \n )}\n \n );\n }\n\n return (\n <>\n \n {isActionMenu ? mobileSocialShare() : regularSocialShare()}\n \n {isInContext() && isExternalFlow() ? (\n
    \n \n
    \n ) : null}\n {socialCampaign.copyLink && (\n setIsModalOpen(false)}\n >\n \n \n \n\n \n {socialCampaign.copyLinkHeader}\n \n \n {isCampaigns()\n ? socialCampaign.copyLinkSubheaderBefore\n : socialCampaign.copyLinkSubheader}\n \n
    \n
    \n \n
    \n
    \n \n )}\n \n );\n}\n\nSocialShare.propTypes = {\n shareUrl: PropTypes.string,\n socialCampaign: PropTypes.object,\n};\n\nSocialShare.defaultProps = {\n align: 'center',\n handleAnalytics: null,\n};\n","import React, { useContext, useEffect } from 'react';\nimport { BodyText, PAYPAL_THEME } from '@paypalcorp/pp-react';\nimport getSocialCampaign from '../utility/getSocialCampaign';\nimport TemplateData from '../utility/getTemplateData';\nimport SocialShare from '../components/socialShare/socialShare';\nimport _isEmpty from 'lodash/isEmpty';\nimport { isInContext } from '../utility/inContextDonation';\nimport {\n isExternalFlow,\n isCampaigns,\n} from '../utility/productIntegrationUtils';\nimport { EVENT_NAME } from '../utility/constants';\nimport classNames from 'classnames';\nimport { trackLinkClick, trackSocialShareIM } from '../fpti/fpti';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nconst { sysColorPrimaryMain, sysColorUnselectedContrast } = PAYPAL_THEME;\n\nexport default function ConfirmationSocialShare(props) {\n const worldReady = useContext(WorldReadyContext);\n const {\n email,\n hostedButtonId,\n orgName,\n messages: { social },\n personalizedMessages,\n campaignId,\n isLanding = false,\n enableMatchSocialShare = false,\n } = props;\n const copy = new MessageFormat(worldReady, {\n id: 'common.copyLink.label.copy',\n }).format(),\n copied = new MessageFormat(worldReady, {\n id: 'common.copyLink.label.copied',\n }).format();\n const handleSocialAnalytics = (type) => {\n trackLinkClick(type, {\n eventName: isExternalFlow()\n ? EVENT_NAME.DW_GIVING_SHARE_CHANNEL_PRESSED\n : EVENT_NAME.DONATE_SUCCESS_SHARE_MESSAGE,\n });\n };\n\n const getTitleMessages = (id) => {\n return new MessageFormat(worldReady, {\n id: `common.socialShareMessage.${id}`,\n }).format();\n };\n\n useEffect(() => {\n if (hostedButtonId) {\n trackSocialShareIM({ enableMatchSocialShare });\n }\n }, []);\n\n const title = {\n email: getTitleMessages('title.email'),\n facebook: getTitleMessages('title.facebook'),\n whatsapp: getTitleMessages('title.whatsapp'),\n messenger: getTitleMessages('title.messenger'),\n twitter: getTitleMessages('title.twitter'),\n copyLink: getTitleMessages('title.copyLink'),\n mobile: getTitleMessages('title.mobile'),\n },\n sheet = {\n email: getTitleMessages('sheet.email'),\n facebook: getTitleMessages('sheet.facebook'),\n whatsapp: getTitleMessages('sheet.whatsapp'),\n messenger: getTitleMessages('sheet.messenger'),\n twitter: getTitleMessages('sheet.twitter'),\n copyLink: getTitleMessages('sheet.copyLink'),\n mobile: getTitleMessages('sheet.mobile'),\n };\n\n let socialMessages;\n\n if (!_isEmpty(personalizedMessages)) {\n socialMessages = {\n ...social,\n ...personalizedMessages,\n copyLinkCopy: copy,\n copyLinkCopied: copied,\n sheet,\n };\n } else if (hostedButtonId) {\n socialMessages = {\n ...social,\n copyLinkCopy: copy,\n copyLinkCopied: copied,\n sheet,\n };\n } else {\n socialMessages = {\n ...social,\n ...social.unhosted,\n copyLinkCopy: copy,\n copyLinkCopied: copied,\n sheet,\n };\n }\n\n const socialCampaign = getSocialCampaign(\n socialMessages,\n orgName,\n hostedButtonId,\n campaignId,\n title,\n email\n );\n\n const getSocialShareHeader = () => {\n if (personalizedMessages.social_title) {\n return personalizedMessages.social_title;\n } else if (isCampaigns()) {\n return social.shareGeneric;\n } else if (_isEmpty(personalizedMessages)) {\n // Show generic message for hosted button control group\n return hostedButtonId && !enableMatchSocialShare\n ? social.shareGeneric\n : social.shareWithMatch;\n }\n };\n\n const generateSocialShareUrl = () => {\n if (isExternalFlow()) {\n return TemplateData.shareUrl;\n } else if (hostedButtonId) {\n return `${TemplateData.paypalHostName}/donate/?hosted_button_id=${hostedButtonId}&source=url`;\n } else if (campaignId) {\n return `${TemplateData.paypalHostName}/donate/?campaign_id=${campaignId}&source=url`;\n } else if (email) {\n return `${TemplateData.paypalHostName}/donate/?business=${email}&source=url`;\n } else if (TemplateData.merchantId) {\n return `${TemplateData.paypalHostName}/donate/?business=${TemplateData.merchantId}&source=url`;\n }\n };\n\n const socialShareUrl = generateSocialShareUrl();\n\n const colors = {\n facebook: '#007AFF',\n twitter: '#64D2FF',\n };\n\n const headerClasses = classNames('text-center', 'social_share_header', {\n inContext: isInContext(),\n externalFlow: isExternalFlow(),\n 'campaign-landing': isCampaigns() && isLanding && !TemplateData.ismobile,\n });\n\n const getShareStyles = () => {\n if (isInContext() && isExternalFlow()) {\n return { marginBottom: '28px' };\n } else if (isCampaigns() && isLanding) {\n return { marginBottom: '48px', flexWrap: 'wrap', rowGap: '14px' };\n }\n return { marginBottom: '74px' };\n };\n\n const getColor = () => {\n if (isInContext() && isExternalFlow()) {\n return sysColorUnselectedContrast;\n }\n return sysColorPrimaryMain;\n };\n\n return (\n <>\n {getSocialShareHeader()}\n {TemplateData.ismobile && isExternalFlow() ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport templateData, { isOldButtonFactory } from '../utility/getTemplateData';\nimport { BodyText, HeadingText, CaptionText } from '@paypalcorp/pp-react';\nimport PPCC from './ppcc/ppcc';\nimport { Title } from '@paypalcorp/donate-react';\nimport { Container, Row, Col } from '@paypalcorp/pp-react-grid';\nimport classNames from 'classnames';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nclass SubHeader extends React.Component {\n constructor() {\n super();\n this.state = {\n isVoucherFlow: templateData.isVoucherFlow,\n };\n }\n\n formatOrgName() {\n let { label, orgName } = this.props;\n label = label && label.toString().replace(/\\s/g, '').toUpperCase();\n let OName = orgName && orgName.toString().replace(/\\s/g, '').toUpperCase();\n return label.includes(OName) ? '' : orgName;\n }\n\n shouldShowDonationId() {\n if (this.props.page === 'member' || this.props.page === 'crossborder') {\n return true;\n }\n return isOldButtonFactory();\n }\n\n getFormattedOrgName(purposeLabel, orgName) {\n if (!this.state.isVoucherFlow) {\n return `${orgName}`;\n }\n return orgName;\n }\n\n render() {\n let donateto = new MessageFormat(this.context, {\n id: 'common.subHeader.label.donateto',\n }).format();\n let support = new MessageFormat(this.context, {\n id: 'common.subHeader.label.support',\n }).format();\n let purposeLabel = new MessageFormat(this.context, {\n id: 'common.subHeader.label.purpose',\n }).format();\n\n let donationName = this.props.label;\n let orgName = this.formatOrgName();\n let donationId = this.props.donationId;\n let { formattedDonationName, formattedOrgName, formattedDonationId } = {};\n let isLanding = this.props.isLanding;\n let isCampaigns = this.props.isCampaigns;\n const hasLogo = this.props.hasLogo;\n\n const subHeaderClasses = classNames(\n 'donate_sub_header',\n 'donate-main-content',\n 'donate-main-content-with-no-margin',\n {\n 'org-content': !hasLogo && isCampaigns(),\n }\n );\n\n if (donationName === orgName) {\n formattedDonationName = donationName;\n formattedOrgName = '';\n } else {\n formattedDonationName = donationName;\n }\n\n if (orgName && !donationId) {\n if (donationName !== orgName) {\n formattedOrgName = this.getFormattedOrgName(purposeLabel, orgName);\n }\n }\n\n if (!orgName && donationId) {\n formattedDonationId = `${donationId}`;\n }\n\n if (orgName && donationId) {\n if (donationName !== orgName) {\n formattedDonationId = donationId;\n formattedOrgName = this.getFormattedOrgName(purposeLabel, orgName);\n } else {\n formattedOrgName = '';\n formattedDonationId = `${donationId}`;\n }\n }\n\n let shouldShowOrgName = isCampaigns()\n ? !isLanding\n : formattedOrgName && isLanding;\n\n return (\n \n {!isCampaigns() && (\n \n \n {isLanding ? (\n \n {this.state.isVoucherFlow ? support : donateto}\n \n ) : (\n \n {this.state.isVoucherFlow ? support : donateto}\n \n )}\n \n \n )}\n\n \n \n \n {!isCampaigns() && isLanding ? (\n \n {formattedDonationName}\n \n \n ) : (\n \n {formattedDonationName}\n \n \n )}\n \n \n \n {shouldShowOrgName &&\n (isCampaigns() ? (\n \n ) : (\n {formattedOrgName}\n ))}\n\n {formattedDonationId && this.shouldShowDonationId() && (\n \n {formattedDonationId}\n \n )}\n \n );\n }\n}\n\nSubHeader.propTypes = {\n label: PropTypes.string.isRequired,\n orgName: PropTypes.string.isRequired,\n donationId: PropTypes.string,\n page: PropTypes.string,\n isLanding: PropTypes.bool,\n isCampaigns: PropTypes.func,\n hasLogo: PropTypes.bool,\n};\n\nSubHeader.contextType = WorldReadyContext;\nexport default SubHeader;\n","import React from 'react';\nimport templateData from '../utility/getTemplateData';\nimport { StyleSheet, css } from 'aphrodite';\nimport { Container, Row, Col } from '@paypalcorp/pp-react-grid';\n\nconst styles = StyleSheet.create({\n centedImage: {\n maxWidth: 300,\n maxHeight: 60,\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginBottom: 25,\n marginTop: 24,\n },\n});\n\nclass CharityLogo extends React.Component {\n constructor() {\n super();\n const logoUrl = templateData.logoUrl || '';\n this.state = {\n bannerUrl: logoUrl.includes('https') ? logoUrl : false,\n altText: templateData.donationName || '',\n };\n }\n\n render() {\n return (\n \n \n \n
    \n {this.state.bannerUrl ? (\n \n ) : null}\n
    \n \n
    \n
    \n );\n }\n}\n\nexport default CharityLogo;\n","import SubHeader from './subHeader';\nimport CharityLogo from './CharityLogo';\nimport React from 'react';\nimport templateData from '../utility/getTemplateData';\nimport PropTypes from 'prop-types';\nimport { isCampaigns } from '../utility/productIntegrationUtils';\nimport { BannerImage } from '@paypalcorp/donate-react';\n\nconst HeaderDNW = ({ isLanding }) => {\n const hasLogo = templateData.hasLogo,\n donationId = templateData.donationId,\n orgName = templateData.charityName ?? '',\n subHeaderLabel = templateData.donationName ?? '',\n bannerUrl = templateData.bannerUrl ?? '';\n\n const displayBannerImage = () => {\n if (bannerUrl) {\n if (isLanding && isCampaigns()) {\n return null;\n }\n return (\n \n );\n }\n return null;\n };\n\n return (\n
    \n {displayBannerImage()}\n {hasLogo && }\n \n
    \n );\n};\n\nHeaderDNW.propTypes = {\n isLanding: PropTypes.bool,\n};\n\nexport default HeaderDNW;\n","import React from 'react';\nimport { CaptionText, HeadingText } from '@paypalcorp/pp-react-text';\nimport { CausesIcon } from '@paypalcorp/pp-react-icons';\nimport PropTypes from 'prop-types';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst GNCSubheader = ({ organizationName, purpose }) => {\n return (\n
    \n
    \n \n {purpose}\n \n
    \n \n \n \n \n
    \n
    \n
    \n );\n};\n\nGNCSubheader.propTypes = {\n organizationName: PropTypes.string,\n purpose: PropTypes.string,\n};\n\nexport default GNCSubheader;\n","import React from 'react';\nimport { CaptionText, HeadingText } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst GNSubheader = ({ organizationName, purpose }) => {\n return (\n
    \n
    \n \n {organizationName}}\n />\n \n \n {purpose}\n \n
    \n
    \n );\n};\n\nGNSubheader.propTypes = {\n organizationName: PropTypes.string,\n purpose: PropTypes.string,\n};\n\nexport default GNSubheader;\n","import React from 'react';\nimport BannerHeader, { Avatar, Banner } from './bannerHeader';\nimport { isGNC, isPPCampaign } from '../../utility/productIntegrationUtils';\nimport GNCSubheader from './GNCSubheader';\nimport GNSubheader from './GNSubheader';\nimport templateData from '../../utility/getTemplateData';\n\nconst GNHeader = () => {\n const organizationName = templateData.donationName,\n purpose = templateData.charityName,\n bannerUrl = templateData.bannerUrl,\n logoUrl = templateData.logoUrl,\n initialColor = templateData.initialColor,\n initialLogo = templateData.initialLogo;\n\n return (\n
    \n \n \n \n \n {isGNC() && (\n \n )}\n {isPPCampaign() && (\n \n )}\n
    \n );\n};\n\nexport default GNHeader;\n","import React from 'react';\nimport HeaderDNW from '../headerDNW';\nimport GNHeader from '../GN/gnHeader';\nimport PropTypes from 'prop-types';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\n\nconst DonateHeader = ({ isLanding }) => {\n return (\n
    \n {isExternalFlow() ? (\n \n ) : (\n \n )}\n
    \n );\n};\n\nDonateHeader.propTypes = {\n isLanding: PropTypes.bool,\n};\n\nexport default DonateHeader;\n"],"sourceRoot":""}