{"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:///./utility/inContextDonation.js","webpack:///./utility/queryStringHelper.js","webpack:///./utility/getTemplateData.js","webpack:///./components/Avatar.js","webpack:///./components/onetouch/UserDetailsBanner.js","webpack:///./utility/nna.js","webpack:///./components/coverFee/feeUtils.js","webpack:///./pages/error/receiverEligibilityError.js","webpack:///./components/BackButton.js","webpack:///./utility/urlUtils.js","webpack:///./components/GN/bannerHeader.js","webpack:///./components/voucherFlowDisclaimer.js","webpack:///./buttons/components/illustration/Illustration.js","webpack:///./confirmation/ReengagementTile.js","webpack:///./utility/accessibilityUtils.js","webpack:///./confirmation/ConfirmationMyAccount.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:///./components/socialShare/shareIllustration.js","webpack:///./buttons/lib/copyToClipBoard.js","webpack:///./components/CopyLink.js","webpack:///./components/socialShare/socialShare.js","webpack:///./confirmation/ConfirmationSocialShare.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:///./buttons/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:///./utility/cpl.js","webpack:///./components/Disclaimer.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:///./components/CloseButton.js","webpack:///./components/amount/amountUtils.js","webpack:///./utility/constants.js","webpack:///./utility/externalIntegrationUtils.js","webpack:///./vendor/verbose-logger/index.js","webpack:///./vendor/analytics/index.js","webpack:///./utility/fpt.js","webpack:///./components/ppcc.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","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","polyfillFetch","url","options","fetchPolyfill","moveCursorToTheEnd","node","length","value","setSelectionRange","sanitizeInPlace","dompurify","sanitize","IN_PLACE","sanitizeURL","dirtyNode","document","createElement","setAttribute","clean","getAttribute","sanitizeOrgName","input","replace","e","show","selector","display","elementsToShow","querySelectorAll","i","hide","elementsToHide","objectOrArrayToQueryString","arrOrObj","prefix","s","add","name","r20","key","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","amount","appStore","getDonationAmount","data","token","normalizeNumber","getDonationAmountType","currencyCode","donationCode","donationNote","getDonationNote","recurring","getDonationRecurring","addCardError","getAddCardError","giftAidItFlag","getGiftaidItFlagStatus","selectedProgram","getSelectedProgram","selectedPresetButtonId","getSelectedPresetButtonId","coverFeeEnabled","feePayer","isOptInCoverFee","feeCurr","getDonationCode","feeAmount","getFeeAmount","rawAmount","getAmountBeforeFee","anonymousEnabled","anonymousStatus","getAnonymousStatus","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","getPPCCStatus","merchantPpccStatus","toUpperCase","waitForElementToDisplay","time","callback","observeUntilEventObserved","targetNode","MutationObserver","mutations","observer","observe","getInitialDataInDom","initialDataInDom","parse","innerHTML","PendingWarning","xs","className","Illustration","localsMessages","PendingView","label","pending","pending2","pendingNna","bodyMessage","isNna","country","ConfirmationView","accountMessage","accountLink","engamentText","illustration","ConfirmationBody","handleRedirect","func","orgName","returnTo","returnTextMember","withConfirmationData","withConfirmationMessages","illustrations","critical","success","warning","cause_success","pp_fundraising_success","STYLES","extraLarge","width","height","large","medium","small","max","ariaHidden","classes","css","src","aria-hidden","bool","ReturnToMerchantLink","returnLabel","organizationName","returnUrl","onClick","FPT","webpackPublicPath","__webpack_public_path__","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","isFullPageRedirectionMode","isMobileOrInContext","ismobile","istablet","isNotFullScreen","isNotAtMaxWidth","screen","availWidth","outerWidth","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","toString","AppActions","formatCurrency","currency","coverFee","formatedFeeAmount","formatAmount","symbol","donationSymbol","note","enablePresetAmounts","presetAmounts","donateContext","amount_type","amount_options","map","includes","currencyLists","isOldButtonFactory","templateName","console","warn","localsAllMessages","parseMessages","guestLocalsMessages","guestMessages","guestsignup","passwordWarnings","cpfWarnings","nationalIds","_map","createAccountPreProps","mainTitle","mainBlurb","itsFreeLine","mainTitle2","createAccountCheckboxContent","createAccountHelp1","expcreateAccountHelpContent","label1","explabel1","label2","explabel2","legalBlurbHTML","legalBlurbWithFeeInformationDoc","incentive","labeldob","labelnationality","dobPattern","dobHelp","labelocc","legalOnlyHTML","consentBlurbHTML","labelNationalIdType","labelNationalIdNumber","defaultIdType","_MISMATCH","MISMATCH","_IS_NULL","IS_NULL","_TOO_SHORT","TOO_SHORT","_TOO_LONG","TOO_LONG","_CONTAINS_REPEATED_CHARACTERS","CONTAINS_REPEATED_CHARACTERS","_CONTAINS_NUMBER_SEQUENCE","CONTAINS_NUMBER_SEQUENCE","_CONTAINS_LETTER_SEQUENCE","CONTAINS_LETTER_SEQUENCE","_CONTAINS_NUMBER_LETTER_SEQUENCE","CONTAINS_NUMBER_LETTER_SEQUENCE","_IS_BLACKLISTED","IS_BLACKLISTED","_CONTAINS_SPACES","CONTAINS_SPACES","_HAS_ILLEGAL_CHARACTERS","HAS_ILLEGAL_CHARACTERS","_LEGAL_CHECKBOX","LEGAL_CHECKBOX","_REQUIRED_DOB","REQUIRED_DOB","_INVALID_DOB","INVALID_DOB","_MUST_18_DOB","MUST_18_DOB","_HELP_DOB","HELP_DOB","_OCCUPATION","OCCUPATION","_NATIONALITY","NATIONALITY","_HINT1","HINT1","_HINT2","HINT2","_HINT3","HINT3","_NATIONAL_ID_TYPE","_NATIONAL_ID_NUMBER","createAccountPost","pplogo","mainTitle1","expmainTitle2","mainTitle3","expmainTitle3","notNow","buttonText","agreeanddonate","cpf","warnings","_REQUIRED_CPF","REQUIRED_CPF","_INVALID_CPF","INVALID_CPF","guestLabels","guestHelp","help","guestCaptcha","captcha","getCurrencySymbol","symbols","isPartnerFlow","hasPartnerSource","Avatar","thumbnailUrl","isRequired","PROFILE_PHOTO_PLACEHOLDER","UserDetailsBanner","firstName","getOneTouchMessage","getContent","isOneTouchUser","useHTML","trackLinkClickWithData","authState","logout","getHardLogoutUrl","this","userDetails","profilePhotoUrl","loggedInMessage","createLoggedInMessage","isLandingPage","viewName","BackButton","handleNotYouLinkClick","banner","notYou","Component","object","nnaExperienceStatus","pxp","showNnaExp","experiment","memberMandatory","AppStore","getCoverFeeOptInStatus","isAtLandingPage","undefined","computeAmountAfterFee","formatedAmountValue","formatInputAmount","totalAmount","setFeeAmountInStore","flatFee","feeRate","parseFloat","TemplateData","formatedFeeAmountValue","updateDonationAmount","formatedAmount","restoreDonationAmount","optOutCoverFee","shouldSelectPresetAmount","ReceiverEligibilityErrorTile","error","receiveDonationNotAllowed","data-testid","useHistory","initialData","isProgressive","onboardingEnabled","selectedCountry","button","iconName","event_name","getDismissEventName","hideLandingPage","charityCancelUrl","currentState","finally","back","parseUrlQuery","search","queryParams","_fromPairs","_compact","slice","split","bannerType","logoBanner","backgroundBanner","BannerHeader","children","BackgroundBanner","bannerURL","Banner","backgroundImage","logoURL","initialLogo","initialColor","ImgLogo","isGN","InititalsLogo","IconLogo","oneOfType","arrayOf","styles","disclaimerWrapper","maxWidth","border","disclaimer","VoucherFlowDisclaimer","color","activity","tile","padding","container","flexDirection","marginBottom","marginLeft","image","description","text","marginTop","link","cursor","ReengagementTile","Content","clickEvent","tabIndex","onKeyDown","doFunction","which","KEY_DOWN","SPACE","ENTER","checkKeyPressed","descriptionLink","ConfirmationMyAccount","secondary","marginRight","textAlign","getSocialCampaign","hostedButtonId","socialTitle","email","emailSubject","emailBody","mobileText","facebookMessage","twitterMessage","whatsappMessage","copyLinkHeader","copyLinkSubheader","copyText","copiedText","domain","paypalHostName","shareableUrl","mobile","mobileTitle","facebook","facebookMessenger","whatsapp","twitter","copyLink","copyLinkCopy","copyLinkCopied","title","sheet","SocialShareEmail","handleAnalytics","linkTitle","grey600","iconLink","SocialShareMobile","handleMobileClick","role","SocialShareFacebook","handleSocialLinkClick","target","SocialShareMessenger","SocialShareWhatsapp","SocialShareTwitter","SocialShareCopyLink","handleOpenCopyModal","ShareIllustration","xmlns","viewBox","fill","transform","d","copyToClipboard","sourceId","range","selection","sourceElement","navigator","userAgent","match","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","readOnly","select","execCommand","copyLinkFieldContainer","borderBottom","fontSize","paddingLeft","paddingRight","inContext","inContextCopyLinkHeight","maxHeight","copyLinkField","alignItems","backgroundColor","borderStyle","copyLinkTextarea","resize","overflow","wordBreak","copyLinkFieldCopied","copyLinkFieldIconContainer","zIndex","alignSelf","copyLinkFieldIcons","lineHeight","minWidth","notCopied","background","copied","borderColor","copyLinkDescription","CopyLink","analytics","useState","isCopied","setIsCopied","setPadding","copyRef","useRef","useEffect","current","clientWidth","queryCommandSupported","id","ref","copy","defaultProps","socialContainer","shareMenu","copyLinkModal","paddingBottom","copyLinkContainer","SocialShare","shareUrl","socialCampaign","isMobile","isModalOpen","setIsModalOpen","isShareMenuOpen","setIsShareMenuOpen","encodedUrl","emailUrl","facebookUrl","fbMessengerUrl","whatsappUrl","twitterUrl","socialShareAltText","isActionMenu","renderMode","socialItems","itemLeft","messenger","position","opacity","open","share","handleMobileSocialShareButtonClick","EVENT_NAME","DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED","fpti","pgrp","DW_GIVING_SHARE_SCREEN_SHOWN","handleSocialShareSheetClose","DW_GIVING_SHARE_DISMISS_PRESSED","justifyContent","align","isOpen","onClose","onSelection","index","toLowerCase","handleMenuSelection","copyLinkMessages","ConfirmationSocialShare","socialMessages","social","personalizedMessages","handleSocialAnalytics","DW_GIVING_SHARE_CHANNEL_PRESSED","unhosted","socialShareUrl","headerClasses","externalFlow","social_title","shareContentExp","shareWithMatch","shareGeneric","success_share_button","ConfirmationTransactionId","transactionId","saveButton","OfferSaveButton","print","isdesktop","printPage","offerProgram","txnStatement","sharePage","handleClick","offer","React","OfferConfirmation","txnId","SignUpAlert","signUpStatus","successMessage","failMessage","ConfirmationReturnText","returnText","ConfirmationReturnTo","returnto","PostTransaction","hideSuccessPage","redirect","shouldShowSpinner","state","syncReturnUrl","redirectUrl","redirectMethod","postBackForm","submit","postdata","postBackArray","Object","keys","forEach","action","isRedirecting","allowRedirect","stopRedirect","bind","handleKeyDown","addEventListener","isEmpty","setState","removeEventListener","keyPressed","TAB","UP_ARROW","LEFT_ARROW","DOWN_ARROW","RIGHT_ARROW","redirectText","form","defaultValue","ConfirmationRedirect","autoRedirectMethod","autoRedirectUrl","DoneLink","doneContent","DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED","autoRedirect","footer","isSignUp","isVoucherFlow","signUpProps","showMyAccount","endCustomCPLTrackingForConfirmationPage","gn_donate_wrapper","bannerUrl","context_gn_wrapper","isGNC","donate_wrapper","confirmation","mobile_view","ppf","isPPFundraising","CloseButton","isDarkButton","isOfacPending","success_subheader","socialSharePreference","donationEmail","doneButton","WrappedComponent","renderedView","giftaidFlag","rp_status","giftAidRecurring","success_header","yourDonation","confirmationNumber","receiptId","successMessageNna","psMessages","getPersonalizedMessages","GN_CONTENT_TOUCHPOINT","isHtml","getPersonalizedContent","getReturnTextLabel","getReturnTextMemberLabel","getReturnToLabel","getTxnIdLabel","yourRPdonation","getYourRPDonationLabel","giftAidConfText","getGiftAidConfText","getYourDonationLabel","getSignupProps","number","donateGiftPercentage","getGiftAidItExtraAmount","finalUrl","confirmationData","donatedAmount","toFixed","getConfirmation","result","displayMyAccount","showAccountOverview","donationName","returnAutoRedirect","charityReturnUrl","returnMethod","signUpSuccess","extraDonateAmount","getExtraDonateAmount","getConfirmationData","griffinPhoneHandler","griffin","metadata","__getInitialData","clientMetadata","initGriffinPhone","initGriffin","log","getGriffin","getGriffinPhoneHandler","initialDataNode","initialDataJSON","_getAmountValue","params","getCurrencyParts","currencyParts","getInitialData","getAmountPlaceHolder","$","_","CURRENCY_FORMAT","formatPercentage","formatNumber","parts","formatCurrencyNoDecimals","NUMBER_FORMAT","maximumFractionDigits","formatCurrencyAsString","formatPhone","countryCode","nationalNumber","formatAsTyped","validatePhone","normalizedPhone","normalizePhoneNumber","validationResult","validatePhoneNumber","getPhoneNumberWithoutCountryCode","phoneNumber","firstSpaceIndex","substr","getDateFormat","dateMetadata","pattern","exchangeRateDecimalPoints","decimalPoint","exchangeRate","decimal","_includes","values","totalDecimals","formatCurrencyWithSymbol","withPageTrack","flow","confData","fptPageName","tag","fptiPayload","trid","account_type","DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN","DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN","_alldata","field","DonationStore","assign","EventEmitter","prototype","emitChange","emit","getAllData","getDonationSymbol","getFormatedAmount","getRecurringModalStatus","recurringModalStatus","getFormatedFeeAmount","amountBeforeFee","getPostBackData","getCurrentPage","currentPage","getServerErros","serverErrors","getPaymentError","paymentError","getSignUpError","signUpError","getFundingOptions","fundingOptions","getEmail","getBillingAddress","billingAddress","getUserCountry","getShareAddress","shareAddress","DonationConstants","getCardSpec","cardSpec","getFormData","formData","getThreeDSContingency","threeDSContingency","getLanguageSelectorState","languageSelectorState","dispatcherIndex","register","payload","trim","ConfirmationCheckmark","ConfirmationAmount","ConfirmationAmountGiftAid","ConfirmationMessage","getElementsByClassName","SuccessView","AccountMessage","AccountLink","EngamentText","hideLeaveModal","createBrowserHistory","getUserConfirmation","showLeaveModal","waitForElement","modalUtils","block","targetLocation","offerWrapper","accordionWrapper","backgroundClip","offerDivider","offerHeader","messageFrom","paddingTop","OfferDetail","rightSymbol","row","click","__html","clientOfferType","businessName","subTitle","offerTextAmount","formattedValue","formatOfferTextAmount","titleMessage","aMessageFrom","messagefrombusiness","heading","as","dangerouslySetInnerHTML","createMarkup","cache","getTouchpoint","touchpointCode","touchpoint","touchpoint_code","merge","includeImpressionUrl","json","sort","contentKey","trackingDetails","impressionUrl","tracking_details","impression_url","hasPersonalizedMessages","get","withCurrentPageUpdate","MemberConfirmationPending","withPostTransactionRequest","MemberConfirmationRecurring","MemberConfirmationSuccess","logPerformance","PAYPAL","startTime","networkInfo","deviceAndNetworkInfo","connection","screen_width","innerWidth","documentElement","screen_height","innerHeight","clientHeight","network_effectiveType","effectiveType","logPerformanceData","tt","performance","timing","loadEventEnd","navigationStart","view","t11","Date","now","et","pt","ru","referrer","cd","colorDepth","sw","sh","dw","devicePixelRatio","dh","bw","bh","startCustomCPLTrackingForConfirmationPage","page","startCPLTracking","uicomp","uitype","endCPLTracking","Disclaimer","setContent","terms","pop","DW_GIVING_DONATE_SETUP_TERMS_PRESSED","sm","array","languagesList","LanguageSelector","lang_options","setIsOpen","currentLanguage","languageCode","language","lang","languageName","getCurrentLangName","icon","locale","updatedUrl","urlParams","clientState","updatePageLanguageByLocale","getLocale","getFooterContent","Help","Security","ReportInappropriateContent","Feedback","handleQualtrics","Imprint","CopyRight","currentYear","getFullYear","Privacy","Legal","Policy","CombinedFinancialServicesText","Footer","isLanguageSelectorEnabled","setIsLanguageSelectorEnabled","dispatcherMessages","unregister","fluid","md","showFeedbackExp","reloadQualtrics","Dispatcher","dispatch","source","postTransactionUrl","a","serverRequest","isComponentMounted","guestSignUp","recurringConfirmationId","_isFunction","abort","abortRequestPostTransaction","requestPostTransaction","getForcedLoginUrlWithoutOt","forcedLoginUrlWithoutOt","hardLogoutUrl","isLoggedInUser","isAuthenticatedUser","shouldShowUserBanner","fromUL","CancelAndReturn","cancelurl","displayMe","getCancelAndReturnContent","handleCancel","MIN_INPUT_WIDTH","DEFAULT_INPUT_FONTSIZE","formatAmountFromServerDNW","digits","negativeDigits","parseInt","amountLengthValid","allowedKeys","isKeyAllowed","getMinimumDonationErrorMessage","formattedDollarOne","errorMessage","minimumDonationUSShort","minimumDonationUS","validateMinimumDonationAmount","minimumDonationAmount","Math","showValidationError","validationErrorMessage","validationErrorCode","validateMaximumDonationAmount","maximumDonationAmount","getMaximumDonationAlertMessage","getNormalizedNumber","normalizedNumber","getInputWidth","fontWeight","getComputedStyle","getFontSize","spanElem","fontFamily","left","appendChild","getBoundingClientRect","removeChild","DIGITS_TO_FONT_SIZE_MAPPING","6","7","8","9","10","digitCount","module","exports","CHANGE_AMOUNT","CHANGE_SYMBOL","CHANGE_CODE","CHANGE_RECURRING","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_COUNTRY","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","EMAIL_REX","DEFAULT_CARD_SPEC","ccNumber","required","maxlength","expirationDate","csc","minlength","DONATE_GIFTAID_IT_EXTRA_AMOUNT","PPGF_DISCLAIMER_TOUCHPOINT","NNA_CONTENT_TOUCHPOINT","PRODUCT","BRANDED_CAMPAIGN","GENEROSITY_NETWORK","GENEROSITY_NETWORK_CHARITIES","PP_FUNDRAISING","DW_GIVING_DONATE_SETUP_SCREEN_SHOWN","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","DW_GIVING_DONATE_SETUP_NEXT_PRESSED","DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","DW_GIVING_DONATE_SETUP_DISMISS_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED","DW_GIVING_GUEST_FORM_SCREEN_SHOWN","DW_GIVING_GUEST_FORM_DONATE_PRESSED","DW_GIVING_GUEST_FORM_DISMISS_PRESSED","DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED","DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED","DW_GIVING_REDIRCT_SCREEN_SHOWN","DW_GIVING_REDIRCT_OPEN_PRESSED","DW_GIVING_REDIRCT_DISMISS_PRESSED","DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED","SCREEN_NAME","DW_GIVING_DONATE_SETUP_SCREEN","DW_GIVING_DONATE_GUEST_FORM_SCREEN","FPTI_PRODUCT","AU_CRS","STATUS","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","gncMessages","product","isBrandedCampaign","isCheckoutRail","prepareOrderParams","addressSharingConsent","currencySymbol","ppgfMessage","directMessage","formatedMaximumAmount","maximumDonationCurrency","maximumAmountAlert","getPersonalizedNoteToPayeeLabel","noteToPayeeLabel","getPersonalizedAnonymousContent","anonymousLabel","tooltip","anonymousTooltip","neff","isEnabled","noop","t","tl","emptyAnalytics","recordClick","recordImpression","Analytics","trackLinkWithData","linkName","pageGroup","pageName","trackType","trackLink","transactionDetailsLinks","logger","prop26","prop25","eVar25","pglk","prop27","pgln","erpg","error_desc","prop14","erfd","fieldId","prop15","eccd","error_code","prop29","version","tsrce","prop28","fireBeacon","exception","prop","isLink","arguments","startClientErrorTracking","parseFPTIValue","fptiData","nameValues","pairs","addSelectedPresetButton","fee_payer","fee_amt","fee_curr","urlToFptiMapping","getPgrp","windowUrl","trackError","trackPage","custKey","custValue","tmpl","trackPageWithData","offer_type","addPxpTags","trackLinkClick","eventType","err","trackErrorWithData","trackFieldError","errorObj","addFi","fundingOpts","fi_id","fi_type","sel_fmx_tp","fi_operation","buttonId","opsel","add3DSInitData","is_3ds_eligible","contingencies","_find","add3DSRespDuration","resp_duration","add3DSChallengeStatus","challenge_status","addDonationAmount","trackFeeData","trackDonationAmount","addOnboardingBundleType","onboardingBundleType","trackIntegrationType","ui_type","trackNoteData","is_allow_note","noteFieldDisplayed","has_note","trackAnonymousData","nonanonymous","trackAmountEditability","allow_amount_edit","donationAmountEditable","trackEventName","trackExternalFlowData","integration_identifier","integrationIdentifier","acct_cntry","donorIpCountry","productId","campaign_id","npid","crid","charityname","trackOfferType","offerType","getOfferType","trackToken","trackSignupOption","user_opts_signup","trackAuCrs","statusCode","status_code","baseLayerContainer","centeringContainer","PPCC","ppcc","verifiedIcon","isToolTipOpen","SubHeader","donateto","support","purpose","purposeLabel","OName","formatOrgName","formattedDonationName","formattedOrgName","formattedDonationId","getFormattedOrgName","strong","shouldShowDonationId","centedImage","CharityLogo","logoUrl","altText","alt","HeaderDNW","hasLogo","subHeaderLabel","GNCSubheader","organization","GNSubheader","GNHeader","DonateHeader"],"mappings":"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","file":"donate~member.92532a1bf818da38e308.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 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","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 * 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 { normalizeNumber } from './formator';\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';\n\nconst FROMUL_QUERY_PARAM = 'fromUL';\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 const amount = appStore.getDonationAmount();\n let data = {\n token: templateData.token,\n amount: normalizeNumber(amount),\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 };\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 fetcher('/donate/update/donation', {\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 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 let paymentStatus = templateData.paymentStatus || '';\n if (paymentStatus === 'complete') {\n window.location.href = '/donate/paymentComplete';\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 { Col } from '@paypalcorp/pp-react';\n\nfunction PendingWarning() {\n return (\n \n \n \n );\n}\n\nexport default PendingWarning;\n","import React from 'react';\nimport templateData, { localsMessages } 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 isNna from '../utility/nna';\n\nconst messages = localsMessages('confirmation/pending');\n\nfunction PendingView(props) {\n const { label } = messages;\n const { pending, pending2, pendingNna } = label;\n\n const bodyMessage = isNna(templateData.country) ? pendingNna : pending2;\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(PendingView, messages, '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('/paypal-ui/illustrations/svg/critical.svg'),\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('/paypal-ui/illustrations/svg/success.svg'),\n warning: appendCdnHostName('/paypal-ui/illustrations/svg/warning.svg'),\n cause_success: appendCdnHostName('/donate/Cause_Success_compressed.png'),\n pp_fundraising_success: appendCdnHostName(\n '/paypal-ui/illustrations/focused/svg/cause-success-mobile.svg'\n ),\n};\n\nconst STYLES = StyleSheet.create({\n extraLarge: {\n width: 336,\n height: 168,\n },\n large: {\n width: 144,\n },\n medium: {\n width: 108,\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.extraLarge)]: size === 'extraLarge',\n [css(STYLES.large)]: size === 'large',\n [css(STYLES.medium)]: size === 'medium',\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 * as FPT from '../utility/fpt';\n\nconst ReturnToMerchantLink = ({ returnLabel, organizationName, returnUrl }) => {\n const label = returnLabel.replace('{orgName}', organizationName);\n\n const handleReturnToMerchant = () => {\n FPT.trackLinkClick('return_to_merchant');\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 templateData from './getTemplateData';\nimport { isExternalFlow } from './externalIntegrationUtils';\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 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 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, formatCurrency, normalizeNumber } 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';\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\n const presetAmounts = templateData.presetAmounts || [];\n return presetAmounts.map(Number).includes(normalizeNumber(amount));\n};\n\n/**\n * Attempting update default value for amount in flux store\n */\nconst donorCoversFee = templateData.feePayer === 'consumer';\nconst donationAmount = donorCoversFee\n ? normalizeNumber(templateData.rawAmount.toString())\n : templateData.donationAmount.toString();\nAppActions.changeAmount({\n amount: formatCurrency({\n value: donationAmount,\n currency: templateData.donationCode,\n }),\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\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 (templateData.donationAmountType === 'preset') {\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 return localsAllMessages[templateName] || localsAllMessages;\n } catch (e) {\n console.warn('Please attach locales to DOM');\n return {};\n }\n}\n\n/**\n * Attempting to get all data from template\n */\nexport default templateData;\n\n/**\n * Attempting to grab all locals messages\n */\nexport function localsMessages(templateName) {\n return parseMessages(templateName);\n}\n\n/**\n * Attempting to grab all locals messages for guest billing page\n */\nexport function guestLocalsMessages() {\n const guestMessages = localsMessages('guest/guestForm') || {};\n const guestsignup = guestMessages.guestsignup || {};\n const passwordWarnings = guestMessages.passwordWarnings || {};\n const cpfWarnings = guestMessages.cpfWarnings || {};\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 incentive: guestsignup.incentive,\n\n labeldob: guestsignup.labeldob,\n labelnationality: guestsignup.labelnationality,\n dobPattern: guestsignup.dobPattern,\n dobHelp: guestsignup.dobPattern && guestsignup.dobPattern.toUpperCase(),\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\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 _MUST_18_DOB: passwordWarnings.MUST_18_DOB,\n _HELP_DOB: passwordWarnings.HELP_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 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 const cpf = {\n label: guestsignup.cpf,\n warnings: {\n _REQUIRED_CPF: cpfWarnings.REQUIRED_CPF,\n _INVALID_CPF: cpfWarnings.INVALID_CPF,\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\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 React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Avatar = ({ thumbnailUrl }) => {\n return (\n
\n \n
\n );\n};\n\nAvatar.propTypes = {\n thumbnailUrl: PropTypes.string.isRequired,\n};\n\nexport default Avatar;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Avatar from '../Avatar';\nimport { Link } from '@paypalcorp/pp-react-links';\nimport templateData, { localsMessages } from '../../utility/getTemplateData';\nimport { showSpinnerOverlay } from '../../utility/helper';\nimport { getHardLogoutUrl, isOneTouchUser } from '../../utility/authUtils';\nimport { trackLinkClickWithData } from '../../utility/fpt';\nimport { sanitize } from '../../utility/domUtils';\nimport getContent from 'pp-react-l10n';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport BackButton from '../BackButton';\nimport { appendCdnHostName } from '../../utility/geoUtils';\nimport { isInContext } from '../../utility/inContextDonation';\n\nconst messages = localsMessages('common/oneTouch');\nconst PROFILE_PHOTO_PLACEHOLDER = appendCdnHostName(\n '/images/shared/icon_profile_placeholder@2x.png'\n);\n\nclass UserDetailsBanner extends Component {\n static propTypes = {\n userDetails: PropTypes.object,\n };\n\n createLoggedInMessage = (firstName) => {\n const getOneTouchMessage = getContent('locals')('common/oneTouch');\n return isOneTouchUser()\n ? getOneTouchMessage(\n 'banner.oneTouchGreeting',\n {\n firstName: sanitize(firstName),\n },\n { useHTML: true }\n )\n : getOneTouchMessage('banner.fullLoginGreeting', {\n firstName: sanitize(firstName),\n });\n };\n\n handleNotYouLinkClick = () => {\n showSpinnerOverlay();\n trackLinkClickWithData('not-you', {\n authState: templateData.authState,\n });\n this.logout();\n };\n\n logout = () => {\n window.location.href = getHardLogoutUrl();\n };\n\n render() {\n const { userDetails = {} } = this.props;\n const firstName = userDetails.firstName || '';\n const profilePhotoUrl =\n userDetails.thumbnailUrl || PROFILE_PHOTO_PLACEHOLDER;\n const loggedInMessage = this.createLoggedInMessage(firstName);\n const isLandingPage = templateData.viewName === 'landing';\n\n return (\n \n {(isInContext() || isExternalFlow()) && !isLandingPage && (\n \n )}\n \n
\n
\n
{loggedInMessage}
\n
\n \n {messages.banner.notYou}\n \n
\n
\n
\n \n );\n }\n}\nexport default UserDetailsBanner;\n","import { isExternalFlow } from './externalIntegrationUtils';\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 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';\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 return !isGuestReviewPage;\n};\n\nexport const computeFeeAmount = () => {\n const donationAmount = normalizeNumber(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 currency = AppStore.getDonationCode(),\n formatedAmountValue = formatInputAmount({\n value: donationAmount,\n currency,\n }),\n totalAmount =\n normalizeNumber(formatedAmountValue) + normalizeNumber(feeAmount),\n formatedTotalAmountValue = formatInputAmount({\n value: totalAmount,\n currency,\n });\n\n return formatedTotalAmountValue;\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\n const presetAmounts = TemplateData.presetAmounts;\n return presetAmounts.map(Number).includes(normalizeNumber(amount));\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Tile, HeadingText } from '@paypalcorp/pp-react';\nimport Illustration from '../../components/illustrations/Illustration';\nimport ReturnToMerchantLink from '../../components/returnToMerchant';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport CloseButton from '../../components/CloseButton';\n\nconst ReceiverEligibilityErrorTile = ({\n errorMessages,\n organizationName,\n returnUrl,\n}) => {\n const {\n error: { receiveDonationNotAllowed } = {},\n label: { returnTo } = {},\n } = ({} = errorMessages);\n\n return (\n <>\n {isExternalFlow() && }\n \n \n {receiveDonationNotAllowed}\n {returnUrl && (\n \n )}\n \n \n );\n};\n\nReceiverEligibilityErrorTile.propTypes = {\n errorMessages: PropTypes.object,\n organizationName: PropTypes.string,\n returnUrl: PropTypes.string,\n};\n\nexport default ReceiverEligibilityErrorTile;\n","import React from 'react';\nimport { IconButton } 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 * as FPT from '../utility/fpt';\nimport { getDismissEventName } from '../utility/externalIntegrationUtils';\nimport { localsMessages } from '../utility/getTemplateData';\n\nconst messages = localsMessages('common/header');\n\nexport default function BackButton() {\n const history = useHistory();\n const initialData = getInitialDataInDom();\n const isProgressive =\n (templateData.onboardingEnabled && initialData.selectedCountry !== 'RU') ||\n false;\n const { button } = ({} = messages || {});\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 FPT.trackLinkClickWithData('back', {\n event_name: 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 {button.back}\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 { V2CausesIcon } from '@paypalcorp/pp-react-icons';\nimport { isGN } from '../../utility/externalIntegrationUtils';\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};\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 (isGN()) {\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 React from 'react';\nimport { grey600, CaptionText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\n\nimport getContent from 'pp-react-l10n';\n\nconst styles = StyleSheet.create({\n disclaimerWrapper: {\n maxWidth: 415,\n margin: '24px auto 0',\n '.ppvx_accordion__row': { border: 'none' },\n },\n disclaimer: {\n margin: 'auto',\n },\n});\n\nexport default function VoucherFlowDisclaimer() {\n return (\n
\n \n {getContent('locals')('buttons/partner')('voucher.legal', null, {\n useHTML: true,\n })}\n \n
\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { css, StyleSheet } from 'aphrodite';\nimport classNames from 'classnames';\nimport { appendCdnHostName } from '../../../utility/geoUtils';\n\nconst illustrations = {\n critical: appendCdnHostName('/paypal-ui/illustrations/svg/critical.svg'),\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('/paypal-ui/illustrations/svg/success.svg'),\n warning: appendCdnHostName('/paypal-ui/illustrations/svg/warning.svg'),\n activity: appendCdnHostName('/paypal-ui/illustrations/svg/activity.svg'),\n};\n\nconst STYLES = StyleSheet.create({\n large: {\n width: 96,\n },\n small: {\n width: 72,\n },\n});\n\nexport default function Illustration({\n type,\n size = 'large',\n className,\n ariaHidden,\n ...rest\n}) {\n const classes = classNames(className, {\n [css(STYLES.large)]: size === 'large',\n [css(STYLES.small)]: size === 'small',\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, { Component } from 'react';\nimport { StyleSheet, css } from 'aphrodite';\nimport { Tile, Link } from '@paypalcorp/pp-react';\nimport Illustration from '../buttons/components/illustration/Illustration';\nimport PropTypes from 'prop-types';\nimport { checkKeyPressed } from '../utility/accessibilityUtils';\n\nconst styles = StyleSheet.create({\n tile: {\n padding: '0px 0px 0px 0px',\n },\n container: {\n display: 'flex',\n flexDirection: 'row',\n marginBottom: '6px',\n marginLeft: '5%',\n },\n image: {\n width: '50px',\n },\n description: {\n marginLeft: '3%',\n },\n text: {\n marginTop: '0px',\n marginBottom: '0px',\n },\n link: {\n cursor: 'pointer',\n },\n});\n\nclass ReengagementTile extends Component {\n render() {\n return (\n \n \n \n
\n

\n {this.props.description}\n

\n checkKeyPressed(e, this.props.clickEvent)}\n >\n {this.props.descriptionLink}\n \n
\n \n \n );\n }\n}\n\nReengagementTile.propTypes = {\n clickEvent: PropTypes.func,\n description: PropTypes.string,\n type: PropTypes.string,\n descriptionLink: PropTypes.string,\n};\nexport default ReengagementTile;\n","import { KEY_DOWN } from './constants';\n\nexport function checkKeyPressed(event, doFunction) {\n if (event.which === KEY_DOWN.SPACE || event.which === KEY_DOWN.ENTER) {\n return doFunction();\n }\n}\n","import React from 'react';\nimport * as FPT from '../utility/fpt';\nimport { BodyText, Divider } from '@paypalcorp/pp-react';\nimport ReengagementTile from './ReengagementTile';\n\nexport default function ConfirmationMyAccount(props) {\n const { engamentText, link, message } = props;\n\n const handleMyAccount = () => {\n FPT.trackLinkClick('myAccount');\n window.location.href = '/myaccount';\n };\n\n return (\n <>\n \n \n {engamentText}\n \n \n \n );\n}\n","import { isExternalFlow } from './externalIntegrationUtils';\nimport templateData from './getTemplateData';\nimport { isInContext } from './inContextDonation';\n\nfunction getSocialCampaign(\n messages,\n orgName,\n hostedButtonId,\n socialTitle,\n email\n) {\n const {\n emailSubject = '',\n emailBody = '',\n mobileText = '',\n facebookMessage = '',\n twitterMessage = '',\n whatsappMessage = '',\n copyLinkHeader = '',\n copyLinkSubheader = '',\n copyText = '',\n copiedText = '',\n } = messages || {};\n const domain = templateData.paypalHostName;\n\n const shareableUrl = hostedButtonId\n ? `${domain}/donate/?hosted_button_id=${hostedButtonId}&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.replace('{donationName}', orgName),\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 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 { Link, ShareEmailIcon } from '@paypalcorp/pp-react';\nimport { grey600 } from '@paypalcorp/pp-react-colors';\nfunction SocialShareEmail({\n url,\n handleAnalytics,\n linkTitle,\n color = grey600,\n}) {\n return (\n handleAnalytics('email-share')}\n style={{ color }}\n title={linkTitle}\n data-testid=\"social-share-email\"\n >\n \n \n );\n}\n\nSocialShareEmail.propTypes = {\n url: PropTypes.string,\n handleAnalytics: PropTypes.func,\n linkTitle: PropTypes.string,\n color: PropTypes.string,\n};\n\nexport default SocialShareEmail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ShareMobileIcon } from '@paypalcorp/pp-react';\nimport { grey600 } from '@paypalcorp/pp-react-colors';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\n\nconst styles = StyleSheet.create({\n iconLink: {\n cursor: 'pointer',\n marginRight: '0.375rem',\n },\n});\n\nfunction SocialShareMobile({ handleMobileClick, linkTitle, color = grey600 }) {\n return (\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 { Link, ShareFacebookIcon } from '@paypalcorp/pp-react';\nimport { grey600 } from '@paypalcorp/pp-react-colors';\n\nfunction SocialShareFacebook({\n url,\n handleSocialLinkClick,\n linkTitle,\n color = grey600,\n}) {\n return (\n handleSocialLinkClick(url, 'facebook')}\n title={linkTitle}\n style={{ color }}\n data-testid=\"social-share-facebook\"\n >\n \n \n );\n}\n\nSocialShareFacebook.propTypes = {\n url: PropTypes.string,\n handleSocialLinkClick: PropTypes.func,\n linkTitle: PropTypes.string,\n color: PropTypes.string,\n};\n\nexport default SocialShareFacebook;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, ShareMessengerIcon } from '@paypalcorp/pp-react';\nimport { grey600 } from '@paypalcorp/pp-react-colors';\n\nfunction SocialShareMessenger({\n url,\n handleSocialLinkClick,\n linkTitle,\n color = grey600,\n}) {\n return (\n handleSocialLinkClick(url, 'messenger')}\n title={linkTitle}\n style={{ color }}\n data-testid=\"social-share-messenger\"\n >\n \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 { Link, ShareWhatsappIcon } from '@paypalcorp/pp-react';\nimport { grey600 } from '@paypalcorp/pp-react-colors';\n\nfunction SocialShareWhatsapp({\n url,\n handleSocialLinkClick,\n linkTitle,\n color = grey600,\n}) {\n return (\n handleSocialLinkClick(url, 'whatsapp')}\n title={linkTitle}\n style={{ color }}\n data-testid=\"social-share-whatsapp\"\n >\n \n \n );\n}\n\nSocialShareWhatsapp.propTypes = {\n url: PropTypes.string,\n handleSocialLinkClick: PropTypes.func,\n linkTitle: PropTypes.string,\n color: PropTypes.string,\n};\n\nexport default SocialShareWhatsapp;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, ShareTwitterIcon } from '@paypalcorp/pp-react';\nimport { grey600 } from '@paypalcorp/pp-react-colors';\n\nfunction SocialShareTwitter({\n url,\n handleSocialLinkClick,\n linkTitle,\n color = grey600,\n}) {\n return (\n handleSocialLinkClick(url, 'twitter')}\n title={linkTitle}\n style={{ color }}\n data-testid=\"social-share-twitter\"\n >\n \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 { ShareLinkIcon } from '@paypalcorp/pp-react';\nimport { grey600 } from '@paypalcorp/pp-react-colors';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\n\nconst styles = StyleSheet.create({\n iconLink: {\n cursor: 'pointer',\n marginRight: '0.375rem',\n },\n});\n\nfunction SocialShareCopyLink({\n handleOpenCopyModal,\n linkTitle,\n color = grey600,\n}) {\n return (\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","import React from 'react';\n\nfunction ShareIllustration() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default ShareIllustration;\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, Icon } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from '../utility/paypalAphrodite';\nimport { copyToClipboard } from '../buttons/lib/copyToClipBoard';\nimport { isInContext } from '../utility/inContextDonation';\n\nconst styles = StyleSheet.create({\n copyLinkFieldContainer: {\n borderBottom: '1px dashed #CBD2D6',\n padding: '16px 16px 24px',\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 alignItems: 'center',\n backgroundColor: '#F5FBFE',\n border: '1px dotted #979797',\n borderStyle: 'dotted',\n padding: '0px 12px',\n margin: '5px 0px',\n display: 'flex',\n },\n copyLinkTextarea: {\n height: 'auto',\n maxHeight: 60,\n margin: 'auto',\n backgroundColor: '#F5FBFE',\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 },\n copyLinkFieldCopied: {\n backgroundColor: '#F5FDFB',\n },\n copyLinkFieldIconContainer: {\n display: 'flex',\n flexDirection: 'row-reverse',\n zIndex: 5,\n alignSelf: 'stretch',\n alignItems: 'center',\n marginLeft: 6,\n },\n copyLinkFieldIcons: {\n lineHeight: '1rem',\n cursor: 'pointer',\n minWidth: '5rem',\n },\n '.ppvx_icon-check-circle-alt': {\n fontSize: 12,\n },\n notCopied: {\n color: '#0070BA',\n background: 'none',\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('0px');\n const copyRef = useRef(null);\n\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 Modal,\n BodyText,\n CaptionText,\n ActionMenu,\n Button,\n ShareFacebookIcon,\n ShareEmailIcon,\n ShareMessengerIcon,\n ShareWhatsappIcon,\n ShareTwitterIcon,\n ShareLinkIcon,\n CheckCircleAltIcon,\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 ShareIllustration from './shareIllustration';\nimport CopyLink from '../CopyLink';\nimport { isInContext } from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport * as FPT from '../../utility/fpt';\nimport { EVENT_NAME } from '../../utility/constants';\nimport { copyToClipboard } from '../../buttons/lib/copyToClipBoard';\nimport templateData from '../../utility/getTemplateData';\n\nconst styles = StyleSheet.create({\n socialContainer: {\n display: 'flex',\n ':nth-child(1n) > *': {\n marginRight: 12,\n },\n },\n shareMenu: {\n flexDirection: 'column',\n },\n copyLinkModal: {\n paddingBottom: 30,\n },\n copyLinkContainer: {\n marginRight: 0,\n marginLeft: 24,\n },\n copyLinkHeader: {\n marginTop: 24,\n marginBottom: 0,\n },\n copyLinkSubheader: {\n marginTop: 12,\n marginRight: 'auto',\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 = `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: encodedUrl,\n });\n } else {\n window.open(\n encodedUrl,\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-share');\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 FPT.trackLinkClickWithData('social_share', {\n event_name: EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED,\n });\n FPT.trackPageWithData(window.fpti.pgrp, `${window.fpti.pgrp}:mobile::`, {\n event_name: EVENT_NAME.DW_GIVING_SHARE_SCREEN_SHOWN,\n });\n }\n\n function handleSocialShareSheetClose() {\n setIsShareMenuOpen(false);\n setIsCopied(false);\n FPT.trackLinkClickWithData('close_social_share', {\n event_name: 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 {socialCampaign.copyLinkHeader}\n \n \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 from 'react';\nimport * as FPT from '../utility/fpt';\nimport { blue600, BodyText, grey600 } from '@paypalcorp/pp-react';\nimport getSocialCampaign from '../utility/getSocialCampaign';\nimport TemplateData, { localsMessages } from '../utility/getTemplateData';\nimport SocialShare from '../components/socialShare/socialShare';\nimport _isEmpty from 'lodash/isEmpty';\nimport { isInContext } from '../utility/inContextDonation';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\nimport { EVENT_NAME } from '../utility/constants';\nimport classNames from 'classnames';\n\nconst { label: copyLinkMessages } = localsMessages('common/copyLink');\nconst { title = {}, sheet = {} } = localsMessages('common/socialShareMessage');\n\nexport default function ConfirmationSocialShare(props) {\n const {\n email,\n hostedButtonId,\n orgName,\n messages: { social },\n personalizedMessages,\n } = props;\n const { copy, copied } = copyLinkMessages;\n const handleSocialAnalytics = (type) => {\n if (isExternalFlow()) {\n FPT.trackLinkClickWithData(type, {\n event_name: EVENT_NAME.DW_GIVING_SHARE_CHANNEL_PRESSED,\n });\n } else {\n FPT.trackLinkClick(type);\n }\n };\n\n let socialMessages;\n\n if (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 title,\n email\n );\n\n const getSocialShareHeader = () => {\n if (personalizedMessages.social_title) {\n return personalizedMessages.social_title;\n } else if (_isEmpty(personalizedMessages)) {\n return TemplateData.pxp.shareContentExp.experiment\n ? social.shareWithMatch\n : social.shareGeneric;\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 (email) {\n return `${TemplateData.paypalHostName}/donate/?business=${email}&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 });\n\n return (\n <>\n {getSocialShareHeader()}\n {TemplateData.ismobile && isExternalFlow() ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from 'react';\nimport { CaptionText, Col, grey600, 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, Icon } from '@paypalcorp/pp-react';\nimport TemplateData, { localsMessages } from '../utility/getTemplateData';\nimport { StyleSheet, css } from 'aphrodite';\nimport _get from 'lodash/get';\nimport * as FPT from '../utility/fpt';\n\nlet messages = localsMessages('common/offerdetail');\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 FPT.trackLinkClick('voucherprint');\n };\n\n sharePage = ({ title, text }) => {\n navigator.share({\n title,\n text,\n });\n FPT.trackLinkClick('vouchershare');\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 {messages.offer.button.text}\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 { localsMessages } from '../utility/getTemplateData';\nimport OfferDetail from './offerDetail';\nimport OfferSaveButton from './offerSaveButton';\n\nconst messages = localsMessages('confirmation/confirmation');\n\nclass OfferConfirmation extends React.Component {\n render() {\n const { offerProgram } = this.props;\n return (\n
\n
\n
\n \n {messages.label.offer}\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 from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert } from '@paypalcorp/pp-react';\n\nconst className = 'sign_up_alert';\n\nclass SignUpAlert extends React.Component {\n render() {\n if (this.props.signUpStatus) {\n return (\n \n {this.props.successMessage}\n \n );\n }\n\n return (\n \n {this.props.failMessage}\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/externalIntegrationUtils';\n\nexport class ConfirmationReturnText extends Component {\n render() {\n if (isExternalFlow()) {\n return null;\n }\n\n return (\n
\n {this.props.returnText}\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/externalIntegrationUtils';\n\nexport class ConfirmationReturnTo extends Component {\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, { localsMessages } 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/externalIntegrationUtils';\nimport isEmpty from 'lodash/isEmpty';\nimport { KEY_DOWN } from '../../utility/constants';\n\nconst messages = localsMessages('confirmation/postTransaction') || {};\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 this.stopRedirect = this.stopRedirect.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\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 let redirectText = _get(messages, 'label.redirectText');\n\n redirectText = redirectText.replace('{orgName}', this.state.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};\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 * as FPT from '../utility/fpt';\nimport { EVENT_NAME } from '../utility/constants';\n\nconst DoneLink = ({ doneContent, syncReturnUrl, redirectUrl }) => {\n const handleClose = () => {\n const eventName = EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED;\n FPT.trackLinkClickWithData('done', {\n event_name: 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, { useEffect } from 'react';\nimport TemplateData from '../utility/getTemplateData';\nimport { BodyText } from '@paypalcorp/pp-react';\nimport ConfirmationMyAccount from './ConfirmationMyAccount';\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} from '../utility/inContextDonation';\nimport {\n isGN,\n isGNC,\n isPPFundraising,\n} from '../utility/externalIntegrationUtils';\nimport CloseButton from '../components/CloseButton';\nimport classNames from 'classnames';\nimport DoneLink from './DoneLink';\nimport BannerHeader, { Banner } from '../components/GN/bannerHeader.js';\n\nfunction ConfirmationView(props) {\n const {\n accountLink,\n accountMessage,\n autoRedirect,\n autoRedirectUrl,\n autoRedirectMethod,\n engamentText,\n footer,\n handleRedirect,\n hostedButtonId,\n illustration,\n isSignUp,\n isVoucherFlow,\n message,\n messages,\n offerProgram,\n orgName,\n postBackData,\n returnTo,\n returnText,\n signUpProps,\n showMyAccount,\n syncReturnUrl,\n txnId,\n personalizedMessages,\n isExternalFlow,\n } = props;\n\n useEffect(() => {\n endCustomCPLTrackingForConfirmationPage();\n }, []);\n\n useEffect(() => {\n onComplete(postBackData);\n }, []);\n\n function showSocialShare() {\n if (TemplateData.socialSharePreference) {\n return (\n \n );\n }\n return null;\n }\n\n function confirmationClass() {\n return classNames(\n {\n gn_donate_wrapper: TemplateData.bannerUrl,\n context_gn_wrapper: isGN() || isGNC(),\n donate_wrapper: !TemplateData.bannerUrl,\n confirmation: !TemplateData.bannerUrl,\n },\n { mobile_view: isMobileOrInContext() },\n { ppf: isPPFundraising() }\n );\n }\n\n return (\n
\n {isSignUp && }\n
\n {isExternalFlow && }\n {TemplateData.bannerUrl ? (\n \n \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 {showMyAccount && (\n \n )}\n \n )}\n\n {isExternalFlow && (\n \n )}\n
\n
\n {!isInContext() && autoRedirect && autoRedirectUrl && (\n \n )}\n {footer}\n
\n );\n}\n\nConfirmationView.propTypes = {\n accountLink: PropTypes.string,\n accountMessage: PropTypes.string,\n autoRedirectMethod: PropTypes.string,\n autoRedirect: PropTypes.bool,\n autoRedirectUrl: PropTypes.string,\n engamentText: 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 messages: 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 showMyAccount: PropTypes.bool,\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};\n\nexport default ConfirmationView;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport getContent from 'pp-react-l10n';\nimport { getPersonalizedMessages } from '../utility/personalizedMessages';\nimport { GN_CONTENT_TOUCHPOINT } from '../utility/constants';\nimport isNna from '../utility/nna';\nimport templateData from '../utility/getTemplateData';\n\nexport default function withConfirmationMessages(\n WrappedComponent,\n messages,\n renderedView\n) {\n return class extends React.Component {\n static propTypes = {\n amount: PropTypes.number,\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 personalizedMessages: PropTypes.object,\n };\n\n getGiftAidConfText = (label) => {\n if (this.props.giftaidFlag) {\n return this.props.rp_status ? label.giftAidRecurring : label.giftAid;\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 = getContent('locals')('confirmation/confirmation')(\n 'label.yourdonation',\n { amount: this.props.amount, orgName: this.props.orgName },\n {\n useHTML: true,\n }\n );\n if (this.props.isVoucherFlow) {\n yourDonation =\n getContent('locals')('confirmation/confirmation')(\n 'label.voucher.yourdonation',\n { amount: this.props.amount, orgName: this.props.orgName },\n {\n useHTML: true,\n }\n ) || yourDonation;\n }\n\n return yourDonation;\n };\n\n getYourRPDonationLabel = () =>\n getContent('locals')('confirmation/confirmation')(\n 'label.yourRPdonation',\n { amount: this.props.amount, orgName: this.props.orgName },\n { useHTML: true }\n );\n\n getReturnTextLabel = (label) => {\n let returnText = label.returnText;\n returnText =\n returnText && returnText.replace('{orgName}', this.props.orgName);\n return returnText;\n };\n\n getReturnTextMemberLabel = (label) => {\n let returnTextMember = label.returnTextMember;\n returnTextMember =\n returnTextMember &&\n returnTextMember.replace('{orgName}', this.props.orgName);\n return returnTextMember;\n };\n\n getReturnToLabel = (label) => {\n let returnTo = label.returnto;\n returnTo = returnTo && returnTo.replace('{orgName}', this.props.orgName);\n return returnTo;\n };\n\n getTxnIdLabel = (label) => {\n let txnId = label.txnId;\n let id = this.props.rp_status\n ? this.props.confirmationNumber\n : this.props.receiptId;\n id = id || this.props.confirmationNumber;\n\n txnId = txnId && txnId.replace('{txnId}', id);\n return txnId;\n };\n\n getSignupProps = (label) => {\n return {\n signUpStatus: this.props.signUpStatus,\n successMessage:\n isNna(templateData.country) && renderedView !== 'pending'\n ? label.successMessageNna\n : label.successMessage,\n failMessage: label.failMessage,\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 render() {\n const { label = {} } = messages || {};\n const personalizedMessages = this.getPersonalizedContent();\n const returnText = this.getReturnTextLabel(label);\n const returnTextMember = this.getReturnTextMemberLabel(label);\n const returnTo = this.getReturnToLabel(label);\n const txnId = this.getTxnIdLabel(label);\n const yourRPdonation = this.getYourRPDonationLabel();\n const giftAidConfText = this.getGiftAidConfText(label);\n const yourDonation = this.getYourDonationLabel(personalizedMessages);\n const signUpProps = this.getSignupProps(label);\n\n return (\n \n );\n }\n };\n}\n","import React from 'react';\nimport { hideSpinnerOverlay, setFocus } from '../utility/helper';\nimport AppStore from '../stores/AppStore';\nimport TemplateData from '../utility/getTemplateData';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\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.isExternalFlow = isExternalFlow();\n\n result.handleRedirect = this.handleRedirect;\n result.rp_status = AppStore.getDonationRecurring() === 'checked';\n result.giftaidFlag = AppStore.getGiftaidItFlagStatus();\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 _includes from 'lodash/includes';\nlet griffinPhoneHandler;\nlet griffin;\n\ntry {\n const metadata = __getInitialData().clientMetadata;\n if (metadata) {\n griffinPhoneHandler = initGriffinPhone(metadata);\n griffin = initGriffin(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\n/**\n * Grabs the griffin metadata\n */\nfunction __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\n/**\n * formatAmount\n * {amount} { currency, value }\n */\nexport function formatAmount(amount) {\n if (!amount.value) {\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 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 let response = griffin?.formatCurrency(\n {\n value: params.value,\n currency: params.currency,\n },\n griffin.CURRENCY_FORMAT\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) {\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.split(decimal)[1].split(''); // 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","import React from 'react';\nimport * as FPT from '../utility/fpt';\nimport AppStore from '../stores/AppStore';\nimport TemplateData from '../utility/getTemplateData';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\nimport { EVENT_NAME } from '../utility/constants';\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 const isSignUp = confData.showAccountOverview || false;\n\n if (isSignUp || TemplateData.fptPageName === 'guestULSignUp') {\n flow = 'signup';\n }\n\n let tag = `${PAGE_TRACK_TAG}${flow}:${result}`;\n const fptiPayload = {\n trid: confData.confirmationNumber || '',\n account_type: flow,\n amount: confData.postBackData?.mc_gross,\n currency: confData.postBackData?.mc_currency,\n };\n FPT.trackToken();\n if (isExternalFlow()) {\n FPT.trackExternalFlowData();\n fptiPayload.event_name = confData.isOfacPending\n ? EVENT_NAME.DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN\n : EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN;\n FPT.trackPageWithData(tag, `${tag}:web::`, fptiPayload);\n } else {\n FPT.trackPageWithData(tag, `${tag}:web::`, fptiPayload);\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 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 dispatcherIndex: AppDispatcher.register(function (payload) {\n var action = payload.action;\n var amount,\n recurring,\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\n switch (action.actionType) {\n case DonationConstants.CHANGE_AMOUNT:\n amount = action.item.amount.trim();\n if (amount !== '') {\n create('amount', amount);\n DonationStore.emitChange();\n }\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:\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 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 isGN,\n isGNC,\n isPPFundraising,\n} from '../utility/externalIntegrationUtils';\nimport BannerHeader, { Banner } from '../components/GN/bannerHeader';\nimport templateData from '../utility/getTemplateData';\n\nexport class ConfirmationCheckmark extends Component {\n render() {\n return (\n
\n \n
\n {isGN() || 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';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\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 { HeadingText } from '@paypalcorp/pp-react';\n\nexport class ConfirmationAmountGiftAid extends Component {\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, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ConfirmationAmount from './ConfirmationAmount';\nimport ConfirmationAmountGiftAid from './ConfirmationAmountGiftAid';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\n\nconst ConfirmationMessage = ({\n yourDonation,\n giftaidFlag,\n extraDonateAmount,\n giftAid,\n}) => {\n useEffect(() => {\n if (!isExternalFlow()) {\n const confirmationHeader = document.getElementsByClassName(\n 'confirmation_header'\n );\n confirmationHeader[0].focus();\n }\n }, []);\n\n return (\n
\n \n {giftaidFlag && (\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};\n\nexport default ConfirmationMessage;\n","import React, { useEffect } from 'react';\nimport { localsMessages } from '../utility/getTemplateData';\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 PropTypes from 'prop-types';\nimport * as AppActions from '../actions/AppActions';\n\nconst messages = localsMessages('confirmation/confirmation');\n\nfunction SuccessView(props) {\n const {\n confirmationNumber,\n extraDonateAmount,\n giftAidConfText,\n giftaidFlag,\n rp_status,\n yourDonation,\n yourRPdonation,\n } = props;\n\n useEffect(() => {\n AppActions.showLanguageSelector(false);\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.string,\n rp_status: PropTypes.bool,\n returnTo: PropTypes.string,\n returnText: PropTypes.string,\n yourRPdonation: PropTypes.object,\n yourDonation: PropTypes.object,\n};\n\nexport default withConfirmationData(\n withConfirmationMessages(SuccessView, messages, '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 '../buttons/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 { StyleSheet, css } from 'aphrodite';\nimport {\n Accordion,\n AccordionRow,\n Icon,\n Divider,\n CaptionText,\n} from '@paypalcorp/pp-react';\nimport { localsMessages, getCurrencySymbol } from '../utility/getTemplateData';\nimport {\n getCurrencyParts,\n formatCurrencyAsString,\n formatPercentage,\n} from '../utility/formator';\nimport { sanitize } from '../utility/domUtils';\n\nimport * as FPT from '../utility/fpt';\n\nlet messages = localsMessages('common/offerdetail');\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 FPT.trackLinkClick('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 const titleMessage = isCustomOffer\n ? sanitize(subTitle)\n : messages.offer.title.replace('{amountText}', offerTextAmount);\n const aMessageFrom = messages.offer.messagefrombusiness.replace(\n '{businessName}',\n sanitize(businessName)\n );\n // const additonalMessage = messages.offer.receive.replace('{amountText}', offerTextAmountOff);\n\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\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 = withCurrentPageUpdate(\n SuccessView,\n 'MemberRecurringConfirmation'\n);\n\nexport const MemberConfirmationSuccess = withCurrentPageUpdate(\n withPostTransactionRequest(SuccessView, POST_TRANSACTION_URL),\n PAGE_UPDATE_TAG\n);\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 { Col, Row, CaptionText } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport * as FPT from '../utility/fpt';\nimport { EVENT_NAME } from '../utility/constants';\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 FPT.trackDonationAmount();\n FPT.trackLinkClickWithData(link, {\n event_name: 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 \n \n {content}\n \n \n \n );\n}\n\nDisclaimer.propTypes = {\n content: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.string,\n PropTypes.element,\n ]),\n};\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, Icon } 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 getContent from 'pp-react-l10n';\nimport PropTypes from 'prop-types';\nimport { Col, Row } from '@paypalcorp/pp-react';\nconst getFooterContent = getContent('locals')('common/footerDonate');\n\nexport const Help = () => (\n
  • {getFooterContent('link.help', null, { useHTML: true })}
  • \n);\n\nexport const Security = () => (\n
  • {getFooterContent('link.security', null, { useHTML: true })}
  • \n);\nexport const ReportInappropriateContent = () => (\n
  • {getFooterContent('link.report', null, { useHTML: true })}
  • \n);\n\nexport const Feedback = (props) => (\n
  • \n \n {getFooterContent('link.feedback', null)}\n \n
  • \n);\n\nexport const Imprint = () => (\n
  • \n {getContent('locals')('common/footerDonateImprint')('link.imprint', null, {\n useHTML: true,\n })}\n
  • \n);\n\nexport const CopyRight = () => (\n
  • \n

    \n {getFooterContent(\n 'footer.copyright',\n { currentYear: new Date().getFullYear() },\n { useHTML: true }\n )}\n

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

    \n {getFooterContent('link.privacy', null, { useHTML: true })}\n

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

    \n {getFooterContent('link.legal', null, { useHTML: true })}\n

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

    \n {getFooterContent('link.policies', null, { useHTML: true })}\n

    \n
  • \n);\n\nexport const CombinedFinancialServicesText = () => (\n \n \n
    \n {getFooterContent('link.auCombinedFinancialServicesText', null, {\n useHTML: true,\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 * as FPT from '../../utility/fpt';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport AppStore from '../../stores/AppStore';\nimport { isNotFullScreen, isInContext } from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\n\nexport default function 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 FPT.trackLinkClick('reportInappropriateContent');\n };\n\n return (\n \n \n \n \n
      \n \n \n \n {templateData?.pxp?.showFeedbackExp?.experiment && (\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 {/* Australia Combined Financial Services Guide and Product Disclosure Statement */}\n {templateData.country === 'AU' && }\n
    \n \n );\n}\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';\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 this.serverRequest = fetcher(postTransactionUrl, {\n method: 'POST',\n body: JSON.stringify({}),\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 getContent from 'pp-react-l10n';\nimport React from 'react';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\nimport * as FPT from '../utility/fpt';\nimport TemplateData from '../utility/getTemplateData';\nimport { isInContext, closeWindow } from '../utility/inContextDonation';\n\nclass CancelAndReturn extends React.Component {\n constructor() {\n super();\n this.state = {\n displayMe: TemplateData.charityCancelUrl ? true : false,\n };\n }\n\n handleCancel = () => {\n FPT.trackLinkClick('cancel');\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 render() {\n const getCancelAndReturnContent = getContent('locals')(\n 'common/cancelAndReturn'\n );\n\n if (isExternalFlow() || isInContext()) {\n return null;\n }\n\n return (\n
    \n {this.state.displayMe && (\n \n \n {getCancelAndReturnContent('label.return', {\n orgName: TemplateData.donationName,\n })}\n \n
    \n )}\n \n );\n }\n}\n\nexport default CancelAndReturn;\n","import React from 'react';\nimport { IconButton } from '@paypalcorp/pp-react';\nimport { closeWindow, isInContext } from '../utility/inContextDonation';\nimport TemplateData from '../utility/getTemplateData';\nimport * as FPT from '../utility/fpt';\nimport { getDismissEventName } from '../utility/externalIntegrationUtils';\nimport { localsMessages } from '../utility/getTemplateData';\nimport PropTypes from 'prop-types';\n\nconst messages = localsMessages('common/header');\n\nexport default function CloseButton({ isDarkButton = false }) {\n const { button } = ({} = messages || {});\n\n const handleClose = () => {\n FPT.trackLinkClickWithData('cancel', {\n event_name: getDismissEventName(),\n });\n if (isInContext()) {\n closeWindow();\n return;\n }\n window.location.href = TemplateData.charityCancelUrl;\n };\n\n return (\n \n {button.close}\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/externalIntegrationUtils';\n\nexport const MIN_INPUT_WIDTH = 105;\nexport const DEFAULT_INPUT_FONTSIZE = 55;\n\n/**\n * This is a copy of the function \"formatAmountFromServer\" from\n * \"public/js/buttons/utils/amountUtils.js\"\n */\nexport function formatAmountFromServerDNW(value, currency) {\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 (isExternalFlow()) {\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(messages, amount = 1) {\n const formattedDollarOne = formatCurrencyAsString({\n value: amount,\n currency: 'USD',\n });\n\n let errorMessage = TemplateData.enablePresetAmounts\n ? messages.error.minimumDonationUSShort\n : messages.error.minimumDonationUS;\n\n errorMessage = errorMessage.replace('{amount}', formattedDollarOne);\n return errorMessage;\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(messages) {\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 const donationAmount = normalizeNumber(AppStore.getDonationAmount());\n let showValidationError = false,\n validationErrorMessage = '',\n validationErrorCode = '';\n if (minimumDonationAmount > 0 && donationAmount < minimumDonationAmount) {\n showValidationError = true;\n validationErrorMessage = getMinimumDonationErrorMessage(\n messages,\n minimumDonationAmount\n );\n validationErrorCode = 'MINIMUM_DONATION_AMOUNT_VALIDATION_ERROR';\n } else if (donationAmount <= 0) {\n // Equivalent for isAmountGreaterThanZero(amount)\n showValidationError = true;\n validationErrorMessage = messages.error.amount;\n validationErrorCode = 'MINIMUM_DONATION_AMOUNT_VALIDATION_ERROR';\n }\n return { showValidationError, validationErrorMessage, validationErrorCode };\n}\n\nexport function validateMaximumDonationAmount() {\n const maximumDonationAmount = Number(TemplateData.maximumDonationAmount) || 0;\n const donationAmount = normalizeNumber(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 const normalizedDonationAmount = getNormalizedNumber(amount);\n return normalizedDonationAmount > 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-Light';\n spanElem.style.fontWeight = fontWeight || '200';\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 6: 55,\n 7: 47,\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 < 6) {\n return DEFAULT_INPUT_FONTSIZE;\n }\n\n return DIGITS_TO_FONT_SIZE_MAPPING[`${digitCount}`] || 55;\n}\n","module.exports = {\n CHANGE_AMOUNT: 'CHANGE_AMOUNT',\n CHANGE_SYMBOL: 'CHANGE_SYMBOL',\n CHANGE_CODE: 'CHANGE_CODE',\n CHANGE_RECURRING: 'CHANGE_RECURRING',\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 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 },\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 },\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 },\n};\n","import { EVENT_NAME, PRODUCT } from './constants';\nimport TemplateData, { localsMessages } from './getTemplateData';\nimport AppStore from '../stores/AppStore';\nimport { formatCurrencyWithSymbol, normalizeNumber } from './formator';\nimport { getPersonalizedMessages } from './personalizedMessages';\nimport { GN_CONTENT_TOUCHPOINT } from './constants';\nimport { isInContext } from './inContextDonation';\n\nconst gncMessages = localsMessages('clients/generosityNetworkCharities');\n\nexport const isGNC = () =>\n TemplateData.product === PRODUCT.GENEROSITY_NETWORK_CHARITIES;\nexport const isGN = () => TemplateData.product === PRODUCT.GENEROSITY_NETWORK;\nexport const isBrandedCampaign = () =>\n TemplateData.product === PRODUCT.BRANDED_CAMPAIGN;\nexport const isPPFundraising = () =>\n TemplateData.product === PRODUCT.PP_FUNDRAISING;\n\nexport const isCheckoutRail = () => isGNC() || isPPFundraising();\nexport const isSendMoneyRail = () => isGN() || isBrandedCampaign();\n\nexport const isExternalFlow = () =>\n isGNC() || isGN() || isBrandedCampaign() || isPPFundraising();\n\nexport const prepareOrderParams = () => ({\n amount: normalizeNumber(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: gncMessages?.ppgfMessage,\n directMessage: gncMessages?.directMessage,\n isInContext: isInContext(),\n});\n\nexport const getMaximumDonationAlertMessage = () => {\n const formatedMaximumAmount = formatCurrencyWithSymbol({\n value: TemplateData.maximumDonationAmount,\n currency: TemplateData.maximumDonationCurrency,\n });\n const alertMessage = gncMessages.maximumAmountAlert.replace(\n '{amount}',\n formatedMaximumAmount\n );\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 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","/**\n * Simple Client-Side Logger\n *\n * Respects the \"verbose-logger\" feature flag.\n */\n\nimport neff from 'neff';\n\n// default log function is a noop\nexport let log = () => {};\n\n// if you have \"verbose-logger\" feature enabled\n// you get logging in your console instead.\nif (neff.isEnabled('verbose-logging') && window.console) {\n log = (...args) => console.log(...args); // eslint-disable-line no-console\n}","/**\n * @fileOverview Analytics – link and error tracking\n * @name Analytics Widget\n * @author dquock, jamuferguson\n *\n * This file is a wrapper around site catalyst and fpti\n * and allows us to easily fire off tracking calls to\n * both at the same time.\n *\n * Primarily referenced in our global page handler \"global.es6\"\n */\n\nimport * as logger from '../verbose-logger';\n\n// store for later\nconst noop = () => {};\n\n// safely shadow these globals\nlet s = window.s || { t: noop, tl: noop };\nlet PAYPAL = window.PAYPAL;\n\n// NOTE: it's not safe to shadow window.fpti at the module level\n// because it gets reset after 500ms in pa.js (see: pageTracking.dust)\n\n// instantiate the view (with a backup for mocks mode)\nlet emptyAnalytics = { recordClick: noop, recordImpression: noop };\nlet analytics = PAYPAL && PAYPAL.analytics ? new PAYPAL.analytics.Analytics() : emptyAnalytics;\n\n// Start client side error tracking\nPAYPAL &&\nPAYPAL.analytics &&\nPAYPAL.analytics.startClientErrorTracking && PAYPAL.analytics.startClientErrorTracking();\n\n// can access FPTI performance info from PAYPAL.analytics.perf\n// https://dev.paypal.com/wiki/General/FPTI-PerformanceTracking\n\n/*************\n * Public API\n *************/\n\n/**\n * Simple back button tracking\n */\nexport function trackBackButton() {\n trackAction('back');\n}\n\n/**\n * Adding new data - pxp data\n */\nexport function addPxpTags(data = {}) {\n try {\n Object.assign(window.fpti, data);\n }\n catch (exception) {\n logger.log('Analytis Exception Found:', exception);\n }\n}\n\n/**\n * Wrapper around trackLink that lets us send additional FPTI keys\n * @param linkName - the link name for the trackLink call\n * @param pageGroup - the page group for the trackLink call\n * @param {String} pageName - The actual page name (prev. pageName2)\n * @param data - key value pairs we want to send to FPTI then remove\n */\nexport function trackLinkWithData(linkName, pageGroup, pageName, data, trackType) {\n let fpti = window.fpti || {};\n\n // apply extra fields to window.fpti\n Object.assign(fpti, data);\n\n trackLink(linkName, pageGroup, pageName, trackType);\n\n // remove those additional keys\n Object.keys(data).forEach((key) => {\n delete fpti[key];\n });\n}\n\n/**\n * Set FPTI/SC variables and fire page tracking beacons\n *\n * @param {String} pageGroup - The page group (prev. pageName)\n * @param {String} pageName - The actual page name (prev. pageName2)\n */\nexport function trackPage(pageGroup, pageName, custKey, custValue) {\n\n let fpti = {\n data:{}\n };\n\n logger.log('Recording analytics:', [pageGroup, pageName, custKey, custValue]);\n\n // set pageNames\n fpti.data.page = s.prop25 = s.eVar25 = pageName;\n fpti.data.pgrp = s.pageName = pageGroup;\n\tfpti.data.tmpl = pageName;\n\n\tif ( custKey && custValue){\n\t\tfpti.data[custKey] = custValue;\n\t}\n\n // clear out error props, in case they exist\n fpti.data.erpg = fpti.data.error_desc = fpti.data.message = s.prop14 = undefined; // error message\n fpti.data.erfd = fpti.data.fieldId = s.prop15 = undefined; // form field with error (field1|field2|field3)\n fpti.data.eccd = fpti.data.error_code = fpti.data.code = s.prop29 = undefined; // error code\n fpti.data.screen = undefined;\n fpti.data.version = 'fixathon';\n fpti.data.tsrce = 'donatenodeweb';\n\n try {\n\t\tfireBeacon(fpti);\n } catch (exception) {\n logger.log('Analytis Exception Found:', exception);\n }\n}\n\n/**\n * Set FPTI/SC variables and fire page tracking beacons with data\n *\n * @param {String} pageGroup - The page group (prev. pageName)\n * @param {String} pageName - The actual page name (prev. pageName2)\n */\nexport function trackPageWithData(pageGroup, pageName, data = {}) {\n\n let fpti = {\n data: {}\n };\n\n logger.log('Recording analytics:', [pageGroup, pageName, data]);\n \n // set pageNames\n fpti.data.page = s.prop25 = s.eVar25 = pageName;\n fpti.data.pgrp = s.pageName = pageGroup;\n fpti.data.tmpl = pageName;\n \n Object.assign(fpti.data, data);\n\n // clear out error props, in case they exist\n fpti.data.erpg = fpti.data.error_desc = fpti.data.message = s.prop14 = undefined; // error message\n fpti.data.erfd = fpti.data.fieldId = s.prop15 = undefined; // form field with error (field1|field2|field3)\n fpti.data.eccd = fpti.data.error_code = fpti.data.code = s.prop29 = undefined; // error code\n fpti.data.screen = undefined;\n fpti.data.version = 'fixathon';\n fpti.data.tsrce = 'donatenodeweb';\n\n try {\n\t\tfireBeacon(fpti);\n } catch (exception) {\n logger.log('Analytis Exception Found:', exception);\n }\n\n delete window.fpti.offer_type;\n}\n\nexport function trackErrorWithData(pageGroup, pageName, data = {}) {\n\tlet fpti = {\n\t\tdata: {}\n\t};\n\n\tlogger.log('Recording analytics:', [pageGroup, pageName, data]);\n\tconst { message, fieldId, code } = data\n\n\t// set pageNames\n\tfpti.data.page = s.prop25 = s.eVar25 = pageName;\n\tfpti.data.pgrp = s.pageName = pageGroup;\n\tfpti.data.tmpl = pageName;\n\n Object.assign(fpti.data, data);\n\n\t//set error props\n\tfpti.data.erpg = fpti.data.error_desc = fpti.data.message = s.prop14 = message; // error message\n\tfpti.data.erfd = fpti.data.fieldId = s.prop15 = fieldId; // form field with error (field1|field2|field3)\n\tfpti.data.eccd = fpti.data.error_code = fpti.data.code = s.prop29 = code; // error code\n\tfpti.data.tsrce = 'donatenodeweb';\n fpti.data.offer_type = undefined; // this function is somehow assigning offer_type for some scenario, clear the value to be safe. \n\n\ttry {\n\t\tfireBeacon(fpti);\n\t} catch (exception) {\n\t\tlogger.log('Analytis Exception Found:', exception);\n\t}\n\n // remove those additional keys\n Object.keys(data).forEach((key) => {\n delete window.fpti[key];\n });\n}\n\n\n/**\n * Set FPTI/SC variables and fire tracking beacons\n *\n * @param {String} linkName - The name of the link\n * @param {String} pageGroup - The page group (prev. pageName)\n * @param {String} pageName - The actual page name (prev. pageName2)\n * @param {String} trackType - i.e \"link\"\n * @param {String} transactionDetailsLinks\n */\nexport function trackLink(linkName, pageGroup, pageName, trackType, transactionDetailsLinks) {\n\n let fpti = {\n data: {\n ...window.fpti,\n }\n };\n\n logger.log('Recording analytics:', [linkName, pageGroup, pageName, trackType, transactionDetailsLinks]);\n\n // set linkname\n fpti.data.link = s.prop26 = linkName;\n\n // set pageNames\n fpti.data.page = s.prop25 = s.eVar25 = pageName;\n fpti.data.pglk = s.prop27 = `${pageGroup}|${linkName}`;\n fpti.data.pgln = `${pageName}|${linkName}`;\n fpti.data.pgrp = s.pageName = pageGroup;\n\n // clear out error props, in case they exist\n fpti.data.erpg = fpti.data.error_desc = fpti.data.message = s.prop14 = undefined; // error message\n fpti.data.erfd = fpti.data.fieldId = s.prop15 = undefined; // form field with error (field1|field2|field3)\n fpti.data.eccd = fpti.data.error_code = fpti.data.code = s.prop29 = undefined; // error code\n fpti.data.screen = undefined;\n fpti.data.version = 'fixathon';\n fpti.data.tsrce = 'donatenodeweb';\n\n if (transactionDetailsLinks) {\n // prop28 is the sc var for transaction details links when\n // selecting a transaction (link1|link2|link3)\n s.prop28 = transactionDetailsLinks;\n }\n\n try {\n switch (trackType) {\n case 'link':\n fireBeacon(fpti, s.prop26, true);\n break;\n\n default:\n fireBeacon(fpti);\n break;\n }\n } catch (exception) {\n logger.log('Analytis Exception Found:', exception);\n }\n\n // set attrs for automation\n // $('#analytics').attr('data-pagename', pageName)\n //\t.attr('data-c25', pageName2)\n //\t.attr('data-c27', s.prop27)\n //\t.attr('data-c28', s.prop28)\n //\t.attr('data-v56', s.eVar56);\n\n}\n\n/**\n * Link tracking\n * @param {Object} event - click event || the clicked jQuery object of the input used to submit a form\n * if event isn't defined or is null, explicitly specify params\n * @param {String} linkName - name attribute from the link\n * @param {String} pageGroup - data-pagename the link is going to\n * @param {String} pageName - data-pagename2 the link is going to\n * @param {String} trackType - page-level or not\n * @param {String} transactionDetailsLinks - activity transaction details links\n */\nexport function trackElement($element) {\n let linkName = $element.attr('name') || $element && $element.html();\n let pageGroup = $element.data('pagename') || s.pageName;\n let trackType = $element.data('track-type') || 'link';\n let pageName = $element.data('pagename2') || `${pageGroup}:::${trackType}`;\n let transactionDetailsLinks = $element.data('transactiondetailslinks');\n trackLink(linkName, pageGroup, pageName, trackType, transactionDetailsLinks);\n}\n\n/**\n *\tTracks errors\n *\t@param {Object} error - The object containing the props to set\n */\nexport function trackError (error) { // eslint-disable-line consumerweb/param-names\n\n let fpti = {\n data:{},\n };\n\n logger.log('Recording analytics:', error);\n\n const { message, fieldId, code } = error;\n\n // set error props\n fpti.data.erpg = fpti.data.error_desc = fpti.data.message = s.prop14 = message; // error message\n\tfpti.data.erfd = fpti.data.fieldId = s.prop15 = fieldId; // form field with error (field1|field2|field3)\n\tfpti.data.eccd = fpti.data.error_code = fpti.data.code = s.prop29 = code; // error code\n fpti.data.tsrce = 'donatenodeweb';\n\n fireBeacon(fpti);\n\n // set attrs for automation\n // $('#analytics').attr('data-pagename', s.pageName)\n //\t.attr('data-c25', s.prop25)\n //\t.attr('data-c27', s.prop27);\n}\n\n/**\n *\tTracks link on a page\n *\tkeeps the pagenames the same, but tracks the link\n *\t@param {String} linkName linkName to track\n */\nexport function trackAction (linkName) {\n\n let fpti = {\n data:{}\n };\n\n logger.log('Recording analytics:', linkName);\n\n // set linkname\n fpti.data.link = s.prop26 = linkName;\n fpti.data.pglk = s.prop27 = `${s.pageName}|${linkName}`;\n\n // clear out error props, in case they exist\n fpti.data.erpg = fpti.data.error_desc = fpti.data.message = s.prop14 = undefined; // error message\n fpti.data.erfd = fpti.data.fieldId = s.prop15 = undefined; // form field with error (field1|field2|field3)\n fpti.data.eccd = fpti.data.error_code = fpti.data.code = s.prop29 = undefined; // error code\n fpti.data.screen = undefined;\n fpti.data.tsrce = 'donatenodeweb';\n\n fireBeacon(fpti, s.prop26, true);\n\n // set attr for automation\n // $('#analytics').attr('data-c27', s.prop27);\n}\n\n/**************\n * Private API\n **************/\n\n/**\n * Set FPTI/SC variables and fire tracking beacons\n * @param {String} prop - Prop value to record\n * @param {Boolean} isLink - whether to record it as an link click or a page transition\n */\nfunction fireBeacon(fpti={}, prop, isLink) { \n if (isLink && arguments.length > 1) {\n s.tl(true, 'o', prop); // micro/link tracking\n analytics.recordClick(fpti); // fpti beacon\n } else {\n s.t(); // fire page-level link tracking event\n analytics.recordImpression(fpti); // fpti beacon\n }\n}\n","import * as analytics from '../vendor/analytics/index';\nimport { getParameterByName } from './queryStringHelper';\nimport templateData from './getTemplateData';\nimport _get from 'lodash/get';\nimport _find from 'lodash/find';\nimport { isOptInCoverFee } from '../components/coverFee/feeUtils';\nimport {\n isSdkMode,\n isPopupMode,\n isFullPageRedirectionMode,\n} from './inContextDonation';\nimport AppStore from '../stores/AppStore';\nimport { normalizeNumber } from './formator';\nimport isEmpty from 'lodash/isEmpty';\nimport { EVENT_NAME, FPTI_PRODUCT, SCREEN_NAME } from './constants';\nimport {\n isExternalFlow,\n isGNC,\n isPPFundraising,\n} from './externalIntegrationUtils';\nimport { isLoggedInUser } from './authUtils';\n\nif (templateData.selectedPresetButtonId) {\n addSelectedPresetButton(templateData.selectedPresetButtonId);\n}\n\nif (templateData.feePayer) {\n window.fpti.fee_payer = templateData.feePayer;\n window.fpti.fee_amt = templateData.feeAmount;\n window.fpti.fee_curr = templateData.feeCurr;\n window.fpti.amount = normalizeNumber(templateData.donationAmount);\n}\n\nfunction parseFPTIValue(key) {\n let fptiData;\n try {\n fptiData = JSON.parse(document.getElementById('fptiData').innerHTML || {});\n } catch (e) {\n fptiData = {};\n }\n let nameValues = [];\n let pairs = decodeURIComponent(fptiData).split('&');\n let i;\n for (i = 0; i < pairs.length; i++) {\n let parts = pairs[i].split('=');\n nameValues[parts[0]] = parts[1];\n }\n return nameValues[key];\n}\n\nconst urlToFptiMapping = [\n {\n url: '/donate/guest/crossborder',\n pgrp: 'main:donate:wps:guest:crossborder',\n },\n { url: '/donate/error/payment', pgrp: 'main:donate:wps:guest:failure' },\n { url: '/donate/member/success', pgrp: 'main:donate:wps:member:success' },\n {\n url: '/donate/member/confirmation-rec',\n pgrp: 'main:donate:wps:member:success',\n },\n {\n url: '/donate/member/confirmation',\n pgrp: 'main:donate:wps:member:success',\n },\n { url: '/donate/member/pending', pgrp: 'main:donate:wps:member:pending' },\n { url: '/donate/member/error', pgrp: 'main:donate:wps:member:failure' },\n { url: '/donate/member', pgrp: 'main:donate:wps:member:review' },\n];\n\nfunction getPgrp() {\n try {\n const windowUrl = window.location.href;\n const signup = getParameterByName('signup');\n if (signup) {\n return 'main:donate:wps:signup:signupform';\n }\n\n for (let i = 0; i < urlToFptiMapping.length; i++) {\n if (windowUrl.indexOf(urlToFptiMapping[i].url) > -1) {\n return urlToFptiMapping[i].pgrp;\n }\n }\n\n if (windowUrl.indexOf('/donate/guest/confirmation') > -1) {\n if (templateData.fptPageName === 'guestULSignUp') {\n return 'main:donate:wps:signup:success';\n }\n return 'main:donate:wps:guest:success';\n }\n\n if (windowUrl.indexOf('/donate/guest/pending') > -1) {\n if (templateData.fptPageName === 'guestULSignUp') {\n return 'main:donate:wps:signup:pending';\n }\n return 'main:donate:wps:guest:pending';\n }\n\n // Last of the guest pages\n if (windowUrl.indexOf('/donate/guest') > -1) {\n return 'main:donate:wps:guest:guestform';\n }\n\n // Last check. Is it landing page?\n if (windowUrl.indexOf('/donate') > -1) {\n return 'main:donate:wps::landing';\n }\n } catch (error) {\n trackError({\n message: 'FPTI_PGRP_ERROR',\n code: window.location.href,\n error,\n });\n }\n\n // No pages matched. Use value sent by server\n return {\n pgrp: parseFPTIValue('pgrp'),\n page: parseFPTIValue('page'),\n };\n}\n\nexport function trackPage(pageGroup, pageName, custKey, custValue) {\n analytics.trackPage(pageGroup, pageName, custKey, custValue);\n}\n\nexport function trackPageWithData(pageGroup, pageName, data) {\n analytics.trackPageWithData(pageGroup, pageName, data);\n}\n\nexport function addPxpTags(data) {\n analytics.addPxpTags(data);\n}\n\nexport function trackLinkClick(eventType) {\n const pgrp = getPgrp();\n analytics.trackLink(eventType, pgrp, `${pgrp}:web::`, 'link');\n}\n\nexport function trackLinkClickWithData(eventType, data) {\n const pgrp = getPgrp();\n analytics.trackLinkWithData(eventType, pgrp, `${pgrp}:web::`, data, 'link');\n}\n\nexport function trackButtonClick(eventType) {\n const pgrp = getPgrp();\n analytics.trackLink(eventType, pgrp, `${pgrp}:web::`, 'link');\n}\n\nexport function trackButtonClickWithData(eventType, data) {\n const pgrp = getPgrp();\n analytics.trackLinkWithData(eventType, pgrp, `${pgrp}:web::`, data, 'link');\n}\n\nexport function trackError(err) {\n analytics.trackError(err);\n}\n\nexport function trackErrorWithData(data) {\n const pgrp = getPgrp();\n analytics.trackErrorWithData(pgrp, `${pgrp}:web::`, data);\n}\n\nexport function trackFieldError(fieldId, errorCode, errorMessage) {\n const errorObj = {\n message: errorMessage,\n fieldId,\n code: errorCode,\n };\n if (isExternalFlow()) {\n errorObj.event_name =\n EVENT_NAME.DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED;\n errorObj.screen = SCREEN_NAME.DW_GIVING_DONATE_GUEST_FORM_SCREEN;\n errorObj.error_desc = errorMessage;\n errorObj.error_code = errorCode;\n }\n trackErrorWithData(errorObj);\n}\n\nexport function addFi(fundingOpts, pageGroup, pageName) {\n window.fpti.fi_id = _get(fundingOpts, 'id');\n // payment card type\n window.fpti.fi_type = _get(fundingOpts, 'sources[0].payment_card.type');\n // payment card network\n window.fpti.sel_fmx_tp = _get(fundingOpts, 'sources[0].payment_card.network');\n window.fpti.fi_operation = 'add_card';\n trackPage(pageGroup, pageName);\n}\n\nexport function addSelectedPresetButton(buttonId) {\n window.fpti.opsel = buttonId;\n}\n\nexport function add3DSInitData(fundingOpts, pageGroup, pageName) {\n window.fpti.is_3ds_eligible = true;\n window.fpti['3ds_version'] = '3DS2.0';\n\n const contingencies = _get(fundingOpts, 'contingencies') || [];\n const threeDSContingency =\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {};\n window.fpti['3ds_ref_id'] = _get(threeDSContingency, 'three_ds_reference_id');\n trackPage(pageGroup, pageName);\n}\n\nexport function add3DSRespDuration(data, pageGroup, pageName) {\n let resp_duration = window.fpti.resp_duration || {};\n resp_duration = Object.assign({}, resp_duration, data);\n window.fpti.resp_duration = resp_duration;\n trackPage(pageGroup, pageName);\n}\n\nexport function add3DSChallengeStatus(data) {\n window.fpti.challenge_status = data;\n}\n\nexport function addDonationAmount(amount, pageGroup, pageName) {\n window.fpti.amount = amount;\n trackPage(pageGroup, pageName);\n}\n\nexport function trackFeeData() {\n window.fpti.fee_payer = isOptInCoverFee() ? 'consumer' : 'merchant';\n window.fpti.fee_amt = AppStore.getFeeAmount();\n window.fpti.fee_curr = AppStore.getDonationCode();\n trackDonationAmount();\n}\n\nexport function addOnboardingBundleType(type = 'full') {\n window.fpti.onboardingBundleType = type;\n}\n\nexport function trackIntegrationType() {\n const isSdkTxn = isSdkMode();\n if (!isSdkTxn) {\n window.fpti.ui_type = 'full_page';\n return;\n }\n if (isPopupMode()) {\n window.fpti.ui_type = 'popup';\n } else if (isFullPageRedirectionMode()) {\n window.fpti.ui_type = 'popup_blocked';\n }\n}\n\nexport function trackNoteData(data) {\n window.fpti.is_allow_note = data?.noteFieldDisplayed || false;\n window.fpti.has_note = !isEmpty(AppStore.getDonationNote());\n}\n\nexport function trackAnonymousData() {\n window.fpti.nonanonymous = AppStore.getAnonymousStatus() === 'unchecked';\n}\n\nexport function trackAmountEditability() {\n window.fpti.allow_amount_edit = templateData.donationAmountEditable;\n}\n\nexport function trackEventName(eventName) {\n window.fpti.event_name = eventName;\n}\n\nexport function trackExternalFlowData() {\n window.fpti.product = FPTI_PRODUCT;\n window.fpti.flow = templateData.product;\n window.fpti.integration_identifier = templateData.integrationIdentifier;\n window.fpti.acct_cntry = templateData.donorIpCountry;\n window.fpti.account_type = isLoggedInUser() ? 'member' : 'guest';\n window.fpti.currency = templateData.donationCode;\n\n if (!isEmpty(templateData.productId)) {\n window.fpti.campaign_id = templateData.productId;\n }\n\n if (!isEmpty(templateData.npid)) {\n window.fpti.crid = templateData.npid;\n }\n\n if (isGNC() || isPPFundraising()) {\n window.fpti.charityname = templateData.donationName;\n }\n}\n\nexport function trackDonationAmount() {\n window.fpti.amount = normalizeNumber(AppStore.getDonationAmount());\n}\n\nexport function trackOfferType(offerType) {\n if (offerType === undefined) {\n delete window.fpti.offer_type;\n } else {\n window.fpti.offer_type = offerType;\n }\n}\n\nexport function getOfferType() {\n return window.fpti.offer_type;\n}\n\nexport function trackToken() {\n window.fpti.token = templateData.token;\n}\n\nexport function trackSignupOption(isSignUp) {\n window.fpti.user_opts_signup = isSignUp;\n}\n\nexport function trackAuCrs(status, statusCode) {\n window.fpti.status = status;\n window.fpti.status_code = statusCode;\n}\n","import React, { Component } from 'react';\nimport { localsMessages } from '../utility/getTemplateData';\nimport { Tooltip } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from '../utility/paypalAphrodite';\n\nconst messages = localsMessages('common/ppcc');\n\nconst styles = StyleSheet.create({\n baseLayerContainer: {\n position: 'absolute',\n },\n\n centeringContainer: {\n position: 'absolute',\n top: -7,\n left: -2,\n },\n});\n\nexport default class PPCC extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isToolTipOpen: false,\n };\n }\n\n render = () => {\n return (\n \n \n \n \n \n );\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport templateData, {\n localsMessages,\n isOldButtonFactory,\n} from '../utility/getTemplateData';\nimport { getPPCCStatus } from '../utility/helper';\nimport { BodyText, HeadingText } from '@paypalcorp/pp-react';\nimport PPCC from './ppcc';\n\nconst MERCHANT_PPCC_CONFIRMED_STATUS = 'CONFIRMED';\nconst messages = localsMessages('common/subHeader');\n\nclass SubHeader extends React.Component {\n constructor() {\n super();\n const {\n label: { donateto = '', support = '', purpose: purposeLabel = '' } = {},\n } = messages || {};\n this.state = {\n donateto,\n support,\n purposeLabel,\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 = '', support = '', purposeLabel = '' } = this.state;\n let donationName = this.props.label;\n let orgName = this.formatOrgName();\n let donationId = this.props.donationId;\n let { formattedDonationName, formattedOrgName, formattedDonationId } = {};\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 return (\n
    \n
    \n
    \n \n {this.state.isVoucherFlow ? support : donateto}\n \n
    \n
    \n\n
    \n
    \n \n \n {formattedDonationName}\n {getPPCCStatus() === MERCHANT_PPCC_CONFIRMED_STATUS ? (\n \n ) : null}\n \n
    \n
    \n
    \n\n {formattedOrgName && (\n
    \n \n {formattedOrgName}\n \n
    \n )}\n\n {formattedDonationId && this.shouldShowDonationId() && (\n
    \n \n {formattedDonationId}\n \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};\n\nexport default SubHeader;\n","import React from 'react';\nimport templateData from '../utility/getTemplateData';\nimport { StyleSheet, css } from 'aphrodite';\n\nconst styles = StyleSheet.create({\n centedImage: {\n maxWidth: 300,\n maxHeight: 120,\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginBottom: 20,\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 {this.state.bannerUrl ? (\n \n ) : null}\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 BannerHeader, { BackgroundBanner } from './GN/bannerHeader.js';\n\nconst HeaderDNW = () => {\n const hasLogo = templateData.hasLogo,\n donationId = templateData.donationId,\n orgName = templateData.charityName ?? '',\n subHeaderLabel = templateData.donationName ?? '',\n bannerUrl = templateData.bannerUrl ?? '';\n\n return (\n
    \n {bannerUrl && (\n \n \n \n )}\n {hasLogo && }\n \n
    \n );\n};\n\nexport default HeaderDNW;\n","import React from 'react';\nimport { CaptionText, HeadingText } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\nimport getContent from 'pp-react-l10n';\n\nconst GNCSubheader = ({ organizationName, purpose }) => {\n return (\n
    \n
    \n \n {purpose}\n \n \n {getContent('locals')('common/subHeader')(\n 'label.supportingOrganization',\n { organization: organizationName }\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 getContent from 'pp-react-l10n';\n\nconst GNSubheader = ({ organizationName, purpose }) => {\n return (\n
    \n
    \n \n {getContent('locals')('common/subHeader')(\n 'label.donateToOrganization',\n { organization: organizationName },\n { useHTML: true }\n )}\n \n {purpose}\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, isGN } from '../../utility/externalIntegrationUtils';\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 {isGN() && (\n \n )}\n
    \n );\n};\n\nexport default GNHeader;\n","import React from 'react';\nimport HeaderDNW from '../headerDNW';\nimport GNHeader from '../GN/gnHeader';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\n\nconst DonateHeader = () => {\n return
    {isExternalFlow() ? : }
    ;\n};\n\nexport default DonateHeader;\n"],"sourceRoot":""}