{"version":3,"sources":["webpack:///./guest-payment-components/DonateGiftAidHowItWorksOverlay.js","webpack:///./guest-payment-components/DonateGiftAid.js","webpack:///./confirmation/ConfirmationTitle.js","webpack:///./components/amount/calculator.js","webpack:///./components/amount/PresetAmountButton.js","webpack:///./components/amount/PresetAmountButtons.js","webpack:///./components/amount/AmountCondensed.js","webpack:///./components/amount/PresetAmountRow.js","webpack:///./components/amountWrapper.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:///./components/amount/SingleAmount.js","webpack:///./react-card-security-code/index.js","webpack:///./components/recurring-checkbox/RecurringInfo.js","webpack:///./components/recurring-checkbox/recurring-checkbox.js","webpack:///./utility/fixPpReactToolTip.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:///./components/threeDS/ThreeDSSpinner.js","webpack:///./components/threeDS/ThreeDSDeviceDataCollection.js","webpack:///./components/threeDS/ThreeDSIframe.js","webpack:///./components/threeDS/ThreeDSContainer.js","webpack:///./pages/error/receiverEligibilityError.js","webpack:///./components/BackButton.js","webpack:///./utility/urlUtils.js","webpack:///./components/guest/WithDonate.js","webpack:///./components/GN/bannerHeader.js","webpack:///./utility/card-utils.js","webpack:///./components/NoteFieldError.js","webpack:///./components/note.js","webpack:///./components/voucherFlowDisclaimer.js","webpack:///./components/amount/amountValidationError.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/bootstrap.js","webpack:///./utility/cpl.js","webpack:///./components/Disclaimer.js","webpack:///./components/nextButton.js","webpack:///./components/landing/OneTouchNextButton.js","webpack:///./components/guestButton.js","webpack:///./components/programs/Programs.js","webpack:///./components/programs/ProgramsContainer.js","webpack:///./components/recurring-checkbox/RecurringOverlay.js","webpack:///./components/NotTaxDeductibleLegalText.js","webpack:///./components/coverFee/coverFeeCheckbox.js","webpack:///./components/anonymousDonation/anonymousCheckbox.js","webpack:///./pages/landing/landing.js","webpack:///./components/currencyConversion/CurrencyConversionModal.js","webpack:///./containers/cvv-component.js","webpack:///./pages/guest/crossBorder.js","webpack:///./pages/guest/confirmation.js","webpack:///./pages/error/paymentError.js","webpack:///./pages/error/UnilateralError.js","webpack:///./pages/error/threeDSError.js","webpack:///./components/CaptureOrder.js","webpack:///./components/CancelAndRedirectOrder.js","webpack:///./routes/router.js","webpack:///./utility/languageSelector.js","webpack:///./components/languageSelectorMenu.js","webpack:///./components/footer/footerLinks.js","webpack:///./components/footer/footer.js","webpack:///./dispatcher/AppDispatcher.js","webpack:///./utility/lazyLoader.js","webpack:///./confirmation/ConfirmationBody.js","webpack:///./confirmation/withPostTransactionRequest.js","webpack:///./utility/authUtils.js","webpack:///./components/cancelAndReturn.js","webpack:///./components/CloseButton.js","webpack:///./styles/colors.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":["styles","StyleSheet","create","modalContent","maxWidth","margin","okButton","marginTop","msgMargin","DonateGiftAidHowItWorksOverlay","props","content","className","overpanel","title","isOpen","onClose","closeOverlay","hideLogo","closeOnBackgroundClick","id","css","size","howitworks","modalp1","modalp2","modalp3","modalp4","onClick","ok","propTypes","PropTypes","object","bool","func","centered","display","justifyContent","toolCheckbox","overflow","helpIcon","position","color","cursor","textDecoration","top","giftaidit","padding","border","borderRadius","width","imgWrapper","showHelp","marginLeft","textAlign","giftaidNote","marginBottom","fontSize","pTag","showAddres","borderBottom","paddingBottom","listUnstyled","listStyle","liTag","successIcon","paddingRight","background","boxShadow","modalHeader","alreadyEnabled","updateGiftAidDeclaration","borderTop","paddingTop","DonateGiftAid","event","preventDefault","setState","isHowItWorksOverlayOpen","linkWithIcon","focus","label","handleTipClick","href","ref","el","name","state","showhelp","isAlreadyEnrolled","isChecked","handleGiftAidOption","bind","ev","target","checked","this","__html","contentMsg","src","appendCdnHostName","alt","extraCost","createLabel","alreadyDone","isMember","optGiftaid","onChange","applyGiftAid","showAddress","strong","taxpayer","addressData","fullName","address1","address2","city","zip","confirmNote","openOverlay","openHowItWorksOverlay","closeHowItWorksOverlay","React","Component","any","ConfirmationTitle","style","message","string","messages","localsMessages","STYLES","container","zIndex","calcRow","verticalAlign","calcRowLeft","calcRowRight","calcLabel","inputCol","input","outlineOffset","paddingLeft","inputLeft","inputRight","fromCode","right","height","borderRight","toCode","lineHeight","conversion","disabled","opacity","inputCurrencyLeft","hasError","Calculator","symbol","currencySymbols","fromSymbol","length","document","getElementById","callback","val","value","match","validateAmount","handleFromChange","handleToChange","handleFromCurrencyChange","setFromSymbol","handleAmountFocus","amount","replace","decimalPoint","youDonate","charityGet","youDonateLabel","charityGetLabel","conversionLabel","placeholder","getLocalizedAmount","fromAmount","toAmount","conversionRate","calcLabelStyle","toError","fromDisabled","type","onFocus","availableCurrencies","map","c","key","toDisabled","charityAmountSymbol","errorString","toErrorMessage","errorSourceField","donationAmount","array","isRequired","buttonStyles","amountBtn","defaultColor","backgroundColor","colors","primaryLightBlue","primaryBlue","borderColor","highlightedColor","defaultBtn","highlightedBtn","currencyStyle","whiteSpace","currencyCodeStyle","PresetAmountButton","addSelectedPresetButton","AppActions","handleAmountBtnClick","rightSymbol","formatAmountFromServerDNW","charityAmountCode","amountDisplayValue","getCurrencyParts","$","selected","btnClasses","classNames","formattedAmount","getAmountDisplayValue","amountFontSize","getAmountFontSize","handleClick","data-testid","oneOfType","number","PresetAmountButtons","handlePresetAmountClick","_map","amounts","index","normalizedAmount","getNormalizedNumber","selectedAmount","currencyString","black","left","amountCondensed","moneyInput","inputField","minimumError","AmountCondensed","handleAmount","amountUtils","code","displayValue","moveCursorToTheEnd","charCode","stringValue","getDisplayValue","firstParts","amountBeforeFee","AppStore","getAmountBeforeFee","shouldSelectPresetAmount","isOptInCoverFee","getAmountPlaceHolder","nextProps","node","setTimeout","setSelectionRange","isExternalFlow","externalOtherAmount","placeholderOtherAmount","showValidationError","displayedAmount","inputStyles","autoComplete","onKeyPress","handleKeyPress","handleChange","handleFocus","onBlur","handleBlur","isEditable","validationErrorMessage","errorContainer","PresetAmountRow","presetAmounts","templateData","page","window","location","indexOf","isPresetAmountSelected","donationAmountType","getDonationAmountType","parseFloat","getDonationAmount","FPT","fireEventForPresetAmountClick","hideValidationError","handleAmountChange","checkValue","clearSuggestedAmountSelection","amountFieldValue","charityAmount","isInContext","isAmountEditable","errorCode","validationErrorCode","AmountWrapper","AppDispatcher","unregister","dispatcherCharityAmount","pathname","includes","undefined","getParameterByName","isNaN","exchangeRate","base_currency_code","userAmountCode","quote_amount","toFixed","params","getConversionRequest","_debounce","st","par","fn","queryParams","fromCountry","userCountry","fromCurrency","toCurrency","normalizeAmount","conversionStatus","Promise","resolve","fetcher","method","body","JSON","stringify","then","response","json","result","catch","source","exchange_rate","isCalculator","setAppAmount","isAtLandingPage","setFeeAmountInStore","updateFeeAmount","optOutCoverFee","snapshot","userAmount","charityDisabled","getConversion","getConversionRate","currencyCode","userDisabled","TemplateData","enablePresetAmounts","isGuestReviewPage","validateDonationAmount","parse","innerHTML","currencyLists","currencies","symbols","donorIpCountry","US","getDonationCode","donationAmountEditable","getDonationSymbol","donationDecimalPoint","register","payload","action","actionType","item","shouldShowPresetAmounts","renderPresetAmounts","handleUserAmountChange","handleUserCurrencyChange","handleCharityAmountChange","SingleAmount","changeAmount","handleViewAction","AppConstants","changeSymbol","changeCode","changeFormatedAmount","changeRecurring","changeRecurringModalStatus","changeCoverFee","changeAnonymousStatus","changeFeeAmount","changeFormatedFeeAmount","changeAmountBeforeFee","changeNote","changeCountry","updateConfirmation","updateCurrentPage","updateServerErrors","updatePaymentError","updateFundingOptions","updateEmail","updateBillingAddress","updateDonationAmountType","updateGiftaidItFlag","updateShareAddress","updateAddCardError","updateSelectedProgram","changeCardSpec","saveFormData","updateSelectedPresetButtonId","updateThreeDSData","showLanguageSelector","polyfillFetch","url","options","fetchPolyfill","sanitizeInPlace","dompurify","sanitize","IN_PLACE","sanitizeURL","dirtyNode","createElement","setAttribute","clean","getAttribute","e","show","selector","elementsToShow","querySelectorAll","i","hide","elementsToHide","objectOrArrayToQueryString","arrOrObj","prefix","s","add","r20","encodeURIComponent","Array","buildParams","join","obj","l","rbracket","test","addClass","elementsSelected","classList","removeClass","remove","csrf","querySelector","dataset","headers","fetch","handleErrors","status","returnPath","renderURL","history","pushState","reload","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","scroll","cdnHostName","shouldRTL","PayPalStyleSheet","cssInJSObject","rest","rtlConvertInline","setShouldRTL","newVal","rtlConvert","contextLocalityDir","addShake","showSpinnerOverlay","waitTextEl","outline","onkeydown","keyCode","activeElement","setFocus","elements","elementWrapper","focusable","firstFocusableEl","find","onblur","hideSpinnerOverlay","updateDonation","redirecturl","clearSavedFormData","appStore","data","token","normalizeNumber","donationCode","donationNote","getDonationNote","recurring","getDonationRecurring","addCardError","getAddCardError","giftAidItFlag","getGiftaidItFlagStatus","selectedProgram","getSelectedProgram","selectedPresetButtonId","getSelectedPresetButtonId","coverFeeEnabled","feePayer","feeCurr","feeAmount","getFeeAmount","rawAmount","anonymousEnabled","anonymousStatus","getAnonymousStatus","failureUrl","handleLogIn","isAmountGreaterThanZero","sdkMeta","targetMeta","handleGuestCountryChange","handleTokenReuse","paymentStatus","parseErrorResponse","errors","errorMessages","allErrorCodes","details","push","uniqueErrorMsgs","reduce","uniqueErr","errMsg","some","errMsgObj","removeDuplicateErrors","GENERIC_ERROR","parseValErrResp","dump","errorData","allError","getErrFields","allFields","fields","isLTR","getPPCCStatus","merchantPpccStatus","toUpperCase","waitForElementToDisplay","time","observeUntilEventObserved","targetNode","MutationObserver","mutations","observer","observe","getInitialDataInDom","initialDataInDom","PendingWarning","xs","Illustration","PendingView","pending","pending2","pendingNna","bodyMessage","isNna","country","ConfirmationView","accountMessage","accountLink","engamentText","illustration","ConfirmationBody","handleRedirect","orgName","returnTo","returnTextMember","withConfirmationData","withConfirmationMessages","illustrations","critical","success","warning","cause_success","pp_fundraising_success","extraLarge","large","medium","small","max","ariaHidden","classes","aria-hidden","ReturnToMerchantLink","returnLabel","organizationName","returnUrl","singleAmountInput","inputWidth","inputFontSize","updateAmountField","inputResize","aria-label","readOnly","pattern","CardSecurityCode","showIsRequiredError","securityCode","handleCheckForValue","handleChangeSecurityCode","cardSpec","csc","required","cscSpecs","errorMessage","maxLength","maxlength","errorText","dir","helperText","cardSpecPropType","getRecurringInfoContent","getContent","RecurringInfo","useHTML","orgname","donationName","isLeftToRight","texts","isContinue","wrapper","toolWrapper","toolCheckboxWrapper","toolBlurb","tipIcon","fontWeight","helpWrapper","helpTxt","helpP","helpP2","perMonth","splitterDiv","splitterP","columnLeft","float","columnRight","animationWrapper","animationContainer","transform","recurringButton","borderOnly","divider","dividerContent","verticalCentered","alignItems","RecurringCheckBox","continue","dispatcherToken","currency","formatedAmount","formatAmount","chkBxStatus","loadAnimation","checkbox","tooltipButton","updateAmount","getElementsByClassName","Object","values","btn","loadBodyMovin","bodymovin","animationData","isAnimating","renderer","loop","autoplay","destroy","rp","recurring_label","shouldLeftAlignRecurringCheckbox","description","tooltipp2","tooltipp1","hasRecurringHelp","defaultProps","webpackPublicPath","__webpack_public_path__","isPopupMode","onComplete","postBackData","_get","transactionDetails","tx","txn_id","payment_status","amt","mc_gross","cc","mc_currency","cm","custom_data","item_number","item_name","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","locals","personalized","getPersonalizedMessagesAsContentLoaderStandard","init","charityName","er","donationId","donorCoversFee","toString","formatCurrency","coverFee","formatedFeeAmount","donationSymbol","note","donateContext","amount_type","amount_options","isOldButtonFactory","templateName","console","warn","localsAllMessages","parseMessages","guestLocalsMessages","guestMessages","guestsignup","passwordWarnings","cpfWarnings","nationalIds","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","isPartnerFlow","hasPartnerSource","Avatar","thumbnailUrl","PROFILE_PHOTO_PLACEHOLDER","UserDetailsBanner","firstName","getOneTouchMessage","isOneTouchUser","trackLinkClickWithData","authState","logout","getHardLogoutUrl","userDetails","profilePhotoUrl","loggedInMessage","createLoggedInMessage","isLandingPage","viewName","BackButton","handleNotYouLinkClick","banner","notYou","nnaExperienceStatus","pxp","showNnaExp","experiment","memberMandatory","getCoverFeeOptInStatus","computeAmountAfterFee","formatedAmountValue","formatInputAmount","totalAmount","flatFee","feeRate","formatedFeeAmountValue","updateDonationAmount","restoreDonationAmount","threeDSText","LOADING_GIF_SOURCE","spinnerAlign","cardImg","ThreeDSSpinner","fundingOptions","getFundingOptions","network","getPaymentCardNetwork","myData","getAllData","cardType","toLowerCase","setNetworkDetails","confirmingWith","ThreeDSDeviceDataCollection","exception","onDDCComplete","onThreeDSDDCComplete","contingencies","_find","addEventListener","handleDDCEvent","threeDS2ReferenceId","getThreeDSParams","three_ds_reference_id","refs","submit","log","removeEventListener","deviceDataCollectionUrl","device_data_collection_url","jwt","withRouter","ThreeDSIframe","handleIframeMessage","confirmationStatus","error","threeDSRespDuration","challenge_end_time","Date","getTime","fpti","pgrp","onStepUpAuthComplete","hideModal","formRef","threeDS2Contingency","getThreeDSContingency","redirectLink","md","redirectMethod","requestText","frameBorder","setFormRef","submitForm","challenge_start_time","getModalBody","icon","ThreeDSContainer","showThreeDSDeviceDataCollection","threeDSDCCEndTime","dcc_start_time","threeDSDCCStartTime","dcc_end_time","spinner_start_time","spinner_end_time","resolveThreeDSContingency","lookup_start_time","lookup_end_time","threeDSContingency","hideThreeDSSpinner","onThreeDSStepUpAuthNotRequired","showThreeDSIframe","hideThreeDSIframe","onThreeDSFailure","onThreeDSStepUpAuthSuccess","onThreeDSStepUpAuthFailure","showThreeDSSpinner","onRef","startTime","handleThreeDSDDCComplete","handleThreeDSStepUpAuthComplete","toggleSpinner","ReceiverEligibilityErrorTile","receiveDonationNotAllowed","useHistory","initialData","isProgressive","onboardingEnabled","selectedCountry","button","iconName","event_name","getDismissEventName","hideLandingPage","charityCancelUrl","currentState","finally","back","parseUrlQuery","search","_fromPairs","_compact","slice","split","getInitialData","serviceErrorMessages","ERROR_ELEMENT_SELECTOR","withDonate","WrappedComponent","DonateAppActions","signUp","isSpinner","language","fundingOptionId","email","getEmail","billingAddress","getBillingAddress","card","clientState","confirmationData","startCustomCPLTrackingForConfirmationPage","confirmation","isOfacPending","isEmpty","cartUrl","orderToken","donateToken","payerID","getFormData","formData","showErrorOnLoad","errorMsgs","serverErrors","handleCountryChange","handleScrollToError","getDonateGuestUrl","getInitialFormData","doFulfilment","captureOrder","createOrder","bannerType","logoBanner","BannerHeader","children","Banner","bannerURL","backgroundImage","logoURL","initialLogo","initialColor","ImgLogo","isGN","InititalsLogo","IconLogo","arrayOf","fundingTypes","defaultCardSpec","ccNumber","expirationDate","minlength","getSpecificCardSpec","cardNumber","cardTypes","autodetect","PAYMENT_CARDS","NoteFieldError","role","NoteComponent","lengthLimit","providedLabel","charityNoteEnabled","charityNoteLabel","useState","setDonationNote","initialNoteLabel","showLabel","setShowLabel","showError","setShowError","noteLabel","setNoteLabel","textAreaEl","useRef","useEffect","current","directionality","htmlFor","EVENT_NAME","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","maxRows","minRows","showCharacterCounter","maxCharacters","trim","disclaimerWrapper","disclaimer","VoucherFlowDisclaimer","grey700","criticalIcon","marginRight","AmountValidationError","errorObj","fieldId","DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED","SCREEN_NAME","DW_GIVING_DONATE_SETUP_SCREEN","DW_GIVING_DONATE_GUEST_FORM_SCREEN","error_desc","error_code","activity","tile","flexDirection","image","text","link","ReengagementTile","Content","clickEvent","tabIndex","onKeyDown","doFunction","which","KEY_DOWN","SPACE","ENTER","checkKeyPressed","descriptionLink","ConfirmationMyAccount","secondary","getSocialCampaign","hostedButtonId","socialTitle","emailSubject","emailBody","mobileText","facebookMessage","twitterMessage","whatsappMessage","copyLinkHeader","copyLinkSubheader","copyText","copiedText","domain","paypalHostName","shareableUrl","mobile","mobileTitle","facebook","facebookMessenger","whatsapp","twitter","copyLink","copyLinkCopy","copyLinkCopied","sheet","SocialShareEmail","handleAnalytics","linkTitle","grey600","iconLink","SocialShareMobile","handleMobileClick","SocialShareFacebook","handleSocialLinkClick","SocialShareMessenger","SocialShareWhatsapp","SocialShareTwitter","SocialShareCopyLink","handleOpenCopyModal","ShareIllustration","xmlns","viewBox","fill","d","copyToClipboard","sourceId","range","selection","sourceElement","navigator","userAgent","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","select","execCommand","copyLinkFieldContainer","inContext","inContextCopyLinkHeight","maxHeight","copyLinkField","borderStyle","copyLinkTextarea","resize","wordBreak","copyLinkFieldCopied","copyLinkFieldIconContainer","alignSelf","copyLinkFieldIcons","minWidth","notCopied","copied","copyLinkDescription","CopyLink","analytics","isCopied","setIsCopied","setPadding","copyRef","clientWidth","queryCommandSupported","copy","socialContainer","shareMenu","copyLinkModal","copyLinkContainer","SocialShare","shareUrl","socialCampaign","isMobile","isModalOpen","setIsModalOpen","isShareMenuOpen","setIsShareMenuOpen","encodedUrl","emailUrl","facebookUrl","fbMessengerUrl","whatsappUrl","twitterUrl","socialShareAltText","isActionMenu","renderMode","socialItems","itemLeft","messenger","open","share","handleMobileSocialShareButtonClick","DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED","DW_GIVING_SHARE_SCREEN_SHOWN","handleSocialShareSheetClose","DW_GIVING_SHARE_DISMISS_PRESSED","align","onSelection","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","offer","OfferConfirmation","txnId","SignUpAlert","signUpStatus","successMessage","failMessage","ConfirmationReturnText","returnText","ConfirmationReturnTo","returnto","PostTransaction","hideSuccessPage","redirect","shouldShowSpinner","syncReturnUrl","redirectUrl","postBackForm","postdata","postBackArray","keys","forEach","isRedirecting","allowRedirect","stopRedirect","handleKeyDown","keyPressed","TAB","UP_ARROW","LEFT_ARROW","DOWN_ARROW","RIGHT_ARROW","redirectText","form","defaultValue","ConfirmationRedirect","autoRedirectMethod","autoRedirectUrl","DoneLink","doneContent","eventName","DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED","autoRedirect","footer","isSignUp","isVoucherFlow","signUpProps","showMyAccount","endCustomCPLTrackingForConfirmationPage","gn_donate_wrapper","isGNC","context_gn_wrapper","donate_wrapper","mobile_view","ppf","isPPFundraising","CloseButton","isDarkButton","success_subheader","socialSharePreference","donationEmail","doneButton","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","donateGiftPercentage","getGiftAidItExtraAmount","finalUrl","donatedAmount","getConfirmation","displayMyAccount","showAccountOverview","returnAutoRedirect","charityReturnUrl","returnMethod","signUpSuccess","extraDonateAmount","getExtraDonateAmount","getConfirmationData","griffinPhoneHandler","griffin","metadata","__getInitialData","clientMetadata","initGriffinPhone","initGriffin","getGriffin","getGriffinPhoneHandler","initialDataNode","initialDataJSON","_getAmountValue","currencyParts","_","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","exchangeRateDecimalPoints","decimal","_includes","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","getFormatedAmount","getRecurringModalStatus","recurringModalStatus","getFormatedFeeAmount","getPostBackData","getCurrentPage","currentPage","getServerErros","getPaymentError","paymentError","getSignUpError","signUpError","getUserCountry","getShareAddress","shareAddress","DonationConstants","getCardSpec","getLanguageSelectorState","languageSelectorState","dispatcherIndex","ConfirmationCheckmark","bannerUrl","ConfirmationAmount","ConfirmationAmountGiftAid","ConfirmationMessage","SuccessView","AccountMessage","AccountLink","EngamentText","hideLeaveModal","createBrowserHistory","getUserConfirmation","showLeaveModal","waitForElement","modalUtils","block","targetLocation","offerWrapper","accordionWrapper","backgroundClip","offerDivider","offerHeader","messageFrom","OfferDetail","row","click","clientOfferType","businessName","subTitle","offerTextAmount","formattedValue","formatOfferTextAmount","titleMessage","aMessageFrom","messagefrombusiness","heading","as","dangerouslySetInnerHTML","createMarkup","cache","getTouchpoint","touchpointCode","touchpoint","touchpoint_code","merge","sort","contentKey","hasPersonalizedMessages","get","withCurrentPageUpdate","MemberConfirmationPending","withPostTransactionRequest","MemberConfirmationRecurring","MemberConfirmationSuccess","getElementsByTagName","logPerformance","PAYPAL","networkInfo","deviceAndNetworkInfo","connection","screen_width","innerWidth","documentElement","screen_height","innerHeight","clientHeight","network_effectiveType","effectiveType","logPerformanceData","tt","performance","timing","loadEventEnd","navigationStart","view","t11","now","et","pt","ru","referrer","cd","colorDepth","sw","sh","dw","devicePixelRatio","dh","bw","bh","startCPLTracking","uicomp","uitype","endCPLTracking","Disclaimer","setContent","terms","pop","DW_GIVING_DONATE_SETUP_TERMS_PRESSED","sm","NextButtonComponent","buttonnext","next","handleNext","OneTouchNextButton","GuestButton","debitorcredit","handleGuest","Programs","programNames","isDisabled","selectedIdx","handleSelect","getProgramOptions","programName","primaryText","programOption","findIndex","program","programs","optional","selectedItemIndex","campaign","ProgramsContainer","RecurringOverlay","closeRecurringOverlay","onMakeOneTimeDonation","onContinue","signupHeader","dialogp1","dialogp2","dialogp3","continueBtn","noThanksBtn","handleClose","noThanks_closeModal","disclaimerCaptionText","NotTaxDeductibleLegalText","landing","mayNotBeTaxDeductible","CoverFeeCheckbox","handleCoverFeeChange","optInStatus","checkboxStatus","AnonymousCheckbox","handleAnonymousDonationChange","tooltip","labelIcon","onOpen","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","LandingPageComponent","recurringStatus","openRecurringOverlay","validateAmountAndNavigateToGuestPage","DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED","DW_GIVING_DONATE_SETUP_NEXT_PRESSED","orderParams","prepareOrderParams","donateDisabled","rpContinue","anonymousOptInStatus","nonanonymous","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED","coverFeeOptInStatus","isRecurringOverlayOpen","isCheckoutRail","handleNextForCheckout","isAuthenticated","shouldShowUserBanner","anonymousStatusInStore","hasLogo","subHeaderLabel","guestRedirectUrl","recurringEnabled","recurringHelpText","recurringLabel","isAuthenticatedUser","program_names","hasDisclaimer","onload","cpl","addTracking","isLoggedInUser","registerAppDispatcherMessages","noteFieldDisplayed","shouldShowNote","DW_GIVING_DONATE_SETUP_SCREEN_SHOWN","dispatcherMessages","showUserBanner","receiverCountryEligible","landingClass","DonateHeader","updateConversionSataus","renderProgramsDropdown","handleRecurringChange","showNote","getPersonalizedAnonymousContent","getPersonalizedNoteToPayeeLabel","renderDonateButtons","getPPCCConfirmation","handleRecurringOverlayContinue","handleRecurringOverlayMakeOneTimeDonation","LandingPage","Landing","displayLanding","business","addTokenToUrlIfMissing","modal","modalDialog","modalTitle","optionTitle","linkBlue","optionDetails","bodyText","boldText","closeBtn","iconCustom","conversionOption","SuccessCheckmarkIcon","CurrencyConversionOption","isSelected","handleOptionSelection","rate","CurrencyConversionModal","option","selectedOption","isPayPalSelected","CURRENCY_CONVERSION_OPTIONS","modalSubTitle","withPaypal","withPayPal","ISSUER","withCard","data-tabindex","data-role","data-backdrop","renderCloseButton","CVVComponent","errorMessageCSC","handleSecurityCodeChange","fieldName","fieldRequired","fieldInvalid","newErrorState","validateInputValue","cscLen","cscMax","cscplaceholder","cscLabel","cscnote","handleFieldFocus","handleFieldBlur","giftAidText","giftAidTextObj","giftAidIt","donateBtnContainer","donateBtn","centralFormWrapper","donationSeparator","formTopLabelBold","formLabelLeft","formLabelRight","formLabelLeftConv","formLabelRightConv","formLabelCenter","formLabelRateLeft","formLabelRateRight","policyMsg","labelFont","currencyConversionOptionsLink","CrossBorder","spinnerOverlay","attributes","disconnect","showCurrencyConversionModal","isCurrencyConversionModalOpen","showCVVField","cvv","childCVVInfo","threeDSContainer","initializeThreeDS","processDonation","giftAidState","extraCostText","outSymbol","outAmount","extraAmount","beforeOption","currencyConversionOption","hideCurrencyConversionModal","lastFundingSource","getLastFundingSource","tags","isRecurring","stateConversionWithPayPal","getStateForConversionWithPayPal","amountDecimalPoint","endCustomCPLTracking","sources","fundingSources","paymentNetwork","payment_card","charAt","paymentDigits","last_4","currency_conversion","fundsIn","funds_in","fundsOut","funds_out","paymentCard","inAmount","inCurrency","inSymbol","outCurrency","getStateForConversionWithIssuer","paymentCardId","currencyConversionType","preferences","payment_card_id","validity","consentShareAddress","hasCvvContingency","isCvvContingencyResolved","showCVVComponent","hideCVVComponent","updateFundingOptionsState","Fragment","spread","fee","handleCurrencyConversionClick","currencyConversionOptions","getLocalizedCurrency","donateNowRecurring","formattedDonationAmount","updateGiftAidComponent","cscwarning","isGiftaiditEnabled","donatingFrom","youllDonate","convertsTo","renderConversionRateInfo","shouldShowCurrencyConversionOptions","renderCurrencyConversionOptionsLink","handleDonateClick","donatenow","handleThreeDSStepUpAuthSuccess","handleThreeDSFailure","GuestConfirmationPending","GuestConfirmationSuccess","PaymentError","ERROR_CODE","WSM_CANNOT_PAY_SELF","WENT_WRONG","TEMP_GLITCH","tryagain","DID_NOT_WORK","DIFF_CREDIT_DEBIT","trydiffcard","L2","WSM_CANNOT_PAY_SELF_H","handleTryAgain","noAccountErrorMessage","UnilateralError","ThreeDSError","tryAgain","tryCard","CaptureOrder","isMemberFlow","handlePaymentSuccess","handleConfirmation","pageTrack","order_id","orderId","accessToken","isSubmitted","backBtnVisible","responseData","wTransactionEntry","requestError","timerCount","locality","currentUserState","isUnilateralAccount","GuestPage","reactLazyPreload","FallbackSpinner","userCookied","isOneTouch","preload","signup","getPageToRender","ReactDOM","render","fallback","exact","path","component","waitForXProps","languagesList","LanguageSelector","lang_options","setIsOpen","currentLanguage","languageCode","lang","languageName","getCurrentLangName","locale","updatedUrl","urlParams","updatePageLanguageByLocale","getLocale","getFooterContent","Help","Security","ReportInappropriateContent","Feedback","handleQualtrics","Imprint","CopyRight","currentYear","getFullYear","Privacy","Legal","Policy","CombinedFinancialServicesText","Footer","isLanguageSelectorEnabled","setIsLanguageSelectorEnabled","fluid","showFeedbackExp","reloadQualtrics","Dispatcher","dispatch","all","loadProgressiveOnboarding","loadSlickProgressiveOnboarding","importStatement","lazyComponent","reactLazy","postTransactionUrl","a","serverRequest","isComponentMounted","guestSignUp","recurringConfirmationId","_isFunction","abort","abortRequestPostTransaction","requestPostTransaction","getForcedLoginUrlWithoutOt","forcedLoginUrlWithoutOt","hardLogoutUrl","fromUL","CancelAndReturn","cancelurl","displayMe","getCancelAndReturnContent","handleCancel","secondaryBlue","gray1","lightestGray","MIN_INPUT_WIDTH","DEFAULT_INPUT_FONTSIZE","digits","negativeDigits","parseInt","amountLengthValid","allowedKeys","isKeyAllowed","getMinimumDonationErrorMessage","formattedDollarOne","minimumDonationUSShort","minimumDonationUS","validateMinimumDonationAmount","minimumDonationAmount","Math","validateMaximumDonationAmount","maximumDonationAmount","getMaximumDonationAlertMessage","normalizedNumber","getInputWidth","getComputedStyle","getFontSize","spanElem","fontFamily","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","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_DISMISS_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","FPTI_PRODUCT","AU_CRS","STATUS","ABORTED","FAILURE","SUCCESS","ABORTED_STATUS_CODE","FAILURE_STATUS_CODE","SUCCESS_STATUS_CODE","SINGLE_TAX_RESIDENCY","MULTI_TAX_RESIDENCY","gncMessages","product","isBrandedCampaign","addressSharingConsent","currencySymbol","ppgfMessage","directMessage","formatedMaximumAmount","maximumDonationCurrency","maximumAmountAlert","noteToPayeeLabel","anonymousLabel","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","prop14","erfd","prop15","eccd","prop29","version","tsrce","prop28","fireBeacon","prop","isLink","arguments","startClientErrorTracking","parseFPTIValue","fptiData","nameValues","pairs","fee_payer","fee_amt","fee_curr","urlToFptiMapping","getPgrp","windowUrl","trackError","trackPage","custKey","custValue","tmpl","trackPageWithData","offer_type","addPxpTags","trackLinkClick","eventType","err","trackErrorWithData","trackFieldError","addFi","fundingOpts","fi_id","fi_type","sel_fmx_tp","fi_operation","buttonId","opsel","add3DSInitData","is_3ds_eligible","add3DSRespDuration","resp_duration","add3DSChallengeStatus","challenge_status","addDonationAmount","trackFeeData","trackDonationAmount","addOnboardingBundleType","onboardingBundleType","trackIntegrationType","ui_type","trackNoteData","is_allow_note","has_note","trackAnonymousData","trackAmountEditability","allow_amount_edit","trackEventName","trackExternalFlowData","integration_identifier","integrationIdentifier","acct_cntry","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","shouldShowDonationId","centedImage","CharityLogo","logoUrl","altText","HeaderDNW","GNCSubheader","organization","GNSubheader","GNHeader"],"mappings":"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","file":"donate.3cbc4820a52f40543b2e.bundle.js","sourcesContent":["import React from 'react';\nimport { Modal, BodyText, Button, HeadingText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport PropTypes from 'prop-types';\n\nconst styles = StyleSheet.create({\n\tmodalContent: {\n\t\tmaxWidth: 600,\n\t\tmargin: '0 auto'\n\t},\n\tokButton: {\n\t\tmarginTop: 36\n\t},\n\tmsgMargin: {\n\t\tmarginTop: '24px'\n\t}\n});\n\nexport default function DonateGiftAidHowItWorksOverlay(props) {\n\tconst {\n\t\tcontent\n\t} = props;\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.howitworks}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp1}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp2}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp3}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp4}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\nDonateGiftAidHowItWorksOverlay.propTypes = {\n\tcontent: PropTypes.object,\n\tisOpen: PropTypes.bool,\n\tcloseOverlay: PropTypes.func\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { StyleSheet, css } from 'aphrodite';\nimport { Checkbox, CaptionText, Link, Icon } from '@paypalcorp/pp-react';\nimport DonateGiftAidHowItWorksOverlay from './DonateGiftAidHowItWorksOverlay';\nimport { appendCdnHostName } from '../utility/geoUtils';\n\nconst styles = StyleSheet.create({\n\tcentered: {\n\t\tdisplay: 'flex',\n\t\tjustifyContent: 'center'\n\t},\n\ttoolCheckbox: {\n\t\t':before': {\n\t\t\toverflow: 'hidden',\n\t\t},\n\t},\n\thelpIcon: {\n\t\tposition: 'relative',\n\t\tcolor: '#005EA6',\n\t\tcursor: 'pointer',\n\t\ttextDecoration: 'none',\n\t\ttop: 3\n\t},\n\tgiftaidit: {\n\t\tpadding: '25px 35px',\n\t\tborder: '1px solid #ccc',\n\t\tborderRadius: 8,\n\t\twidth: '100%',\n\t\tmargin: '10px auto 15px auto',\n\t\tmaxWidth: 400\n\t},\n\timgWrapper: {\n\t\tdisplay: 'block',\n\t\tmargin: '0px auto 8px auto'\n\t},\n\tshowHelp: {\n\t\tcolor: '#848b8e',\n\t\tmarginTop: 15,\n\t\tmarginLeft: 42,\n\t\ttextAlign: 'left'\n\t},\n\t\tgiftaidNote: {\n\t\tmarginBottom: 20,\n\t\tfontSize: 14,\n\t\ttextAlign: 'left' \n\t},\n\tpTag: {\n\t\tfontSize: 14,\n\t\tmarginBottom: 15,\n\t\ttextAlign: 'left'\n\t},\n\tshowAddres: {\n\t\tmarginTop: 15,\n\t\tmarginLeft: 42,\n\t\tcolor: '#2c2e2f',\n\t\tborderBottom: '1px solid #ccc',\n\t\tpaddingBottom: 13,\n\t\ttextAlign: 'left'\n\t},\n\tlistUnstyled: {\n\t\tmargin: 0,\n\t\tlistStyle: 'none'\n\t},\n\tliTag: {\n\t\tmarginBottom: 2\n\t},\n\tsuccessIcon: {\n\t\tmarginLeft: -5,\n\t\tpaddingRight: 5,\n\t\tcolor: '#00cf92'\n\t},\n\tmodalContent: {\n\t\tbackground: 'none',\n\t\tboxShadow: 'none'\n\t},\n\tmodalHeader: {\n\t\ttextAlign: 'right'\n\t},\n\talreadyEnabled: {\n\t\ttextAlign: 'left',\n\t\tfontSize: 14,\n\t\tdisplay: 'flex'\n\t},\n\tupdateGiftAidDeclaration: {\n\t\tborderTop: '1px solid #ccc',\n\t\tpaddingTop: 15,\n\t\tfontSize: 14\n\t}\n});\n\nclass DonateGiftAid extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tshowhelp: this.props.isAlreadyEnrolled ? false : this.props.isChecked,\n\t\t\tisChecked: this.props.isChecked || false,\n\t\t\tisHowItWorksOverlayOpen: false\n\t\t};\n\t\tthis.handleGiftAidOption = this.handleGiftAidOption.bind(this);\n\t}\t\n\n\thandleGiftAidOption(ev) {\n\t\tlet isChecked = ev.target.checked;\n\t\tthis.setState({\n\t\t\tshowhelp: isChecked,\n\t\t\tisChecked: isChecked\n\t\t});\n\t\tthis.props.handleGiftAidOption(isChecked);\n\t}\n\n\tcreateMarkup(content) {\n\t\treturn {\n\t\t\t__html: content\n\t\t};\n\t}\n\n\thandleTipClick = () => {\n\t\tevent.preventDefault();\n\t\tthis.setState({\n\t\t\tisHowItWorksOverlayOpen: true\n\t\t});\n\t\tthis.linkWithIcon.focus();\n\t}\n\n\tcreateLabel = (label) => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\t{label}\n\t\t\t\t\t \n\t\t\t\t\t\t {this.linkWithIcon = el}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t);\n\t}\n\n\topenHowItWorksOverlay = () => {\n\t\tthis.setState({\n\t\t\tisHowItWorksOverlayOpen: true\n\t\t})\n\t}\n\n\tcloseHowItWorksOverlay = () => {\n\t\tthis.setState({\n\t\t\tisHowItWorksOverlayOpen: false\n\t\t})\n\t}\n\n\trender () {\n\n\t\tlet contentMsg = this.props.contentMsg;\n\n\t\treturn (\n
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\"giftaidit\"\n\t\t\t\t\t\t\t/\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{contentMsg.extraCost}\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t{(this.props.isAlreadyEnrolled) &&
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{this.createLabel(contentMsg.alreadyDone)}\n\t\t\t\t\t\t\t\t{this.props.isMember && {contentMsg.updateGiftAidDeclaration}}\n\t\t\t\t\t\t\t
}\n\n\t\t\t\t\t\t\t{(!this.props.isAlreadyEnrolled) &&\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t{this.state.showhelp &&
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{contentMsg.applyGiftAid}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{this.props.showAddress &&
\n\t\t\t\t\t\t\t\t\t{contentMsg.taxpayer}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.fullName}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.address1}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.address2}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.city}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.state}, {this.props.addressData.zip}
  • \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{contentMsg.confirmNote}\n\t\t\t\t\t\t\t\t{this.props.isMember && {contentMsg.updateGiftAidDeclaration}}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
}\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n );\n\t}\n}\n\nDonateGiftAid.propTypes = {\t\n\tisAlreadyEnrolled: PropTypes.bool,\n\tshowAddress: PropTypes.bool,\n\taddressData: PropTypes.any,\n\tisChecked: PropTypes.bool,\n\thandleGiftAidOption: PropTypes.func,\n\tcontentMsg: PropTypes.object,\n\tisMember: PropTypes.bool,\n};\n\nexport default DonateGiftAid;","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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport AmountValidationError from './amountValidationError.js';\n\nconst messages = localsMessages('guest/crossBorder');\n\nconst STYLES = {\n container: {\n padding: '30px 0 30px 0',\n zIndex: 1,\n },\n calcRow: {\n display: 'inline-block',\n width: '40%',\n verticalAlign: 'top',\n },\n calcRowLeft: {\n margin: '0 1% 0 9%',\n },\n calcRowRight: {\n margin: '0 9% 0 1%',\n },\n calcLabel: {\n padding: '0 0 8px 5px',\n },\n inputCol: {\n position: 'relative',\n },\n input: {\n outlineOffset: '-1px',\n fontSize: 14,\n paddingLeft: 20,\n },\n inputLeft: {\n paddingRight: '100px',\n },\n inputRight: {\n paddingRight: '60px',\n },\n fromCode: {\n position: 'absolute',\n right: '1px',\n top: '1px',\n height: '40px',\n width: '90px',\n borderTop: 0,\n borderRight: 0,\n borderBottom: 0,\n },\n toCode: {\n position: 'absolute',\n right: '15px',\n top: 0,\n lineHeight: '42px',\n },\n conversion: {\n textAlign: 'center',\n paddingTop: '30px',\n },\n disabled: {\n opacity: '0.5',\n },\n inputCurrencyLeft: {\n position: 'absolute',\n marginTop: 12,\n marginLeft: 10,\n fontSize: 14,\n },\n hasError: {\n color: 'red',\n },\n};\n\nclass Calculator extends React.Component {\n constructor() {\n super();\n const { label: { youDonate, charityGet, conversion } = {} } =\n messages || {};\n this.state = {\n youDonateLabel: youDonate,\n charityGetLabel: charityGet,\n conversionLabel: conversion,\n };\n }\n\n componentDidMount() {\n this.setFromSymbol(this.props.toCode);\n }\n\n setFromSymbol = (toCode) => {\n const symbol =\n (this.props.currencySymbols && this.props.currencySymbols[toCode]) || '';\n this.setState({\n fromSymbol: symbol,\n });\n\n let padding = symbol.length * 10 + 10;\n document.getElementById('fromAmount').style.paddingLeft = `${padding}px`;\n };\n\n validateAmount = (ev, callback) => {\n let val = ev.target.value;\n let rgx = /^[0-9]*[.|,]?[0-9]?[0-9]?$/;\n\n if (val === '.' || val === ',' || !val.match(rgx)) {\n return;\n }\n callback(val);\n };\n\n handleFromChange = (ev) => {\n this.validateAmount(ev, this.props.handleFromChange);\n };\n\n handleToChange = (ev) => {\n this.validateAmount(ev, this.props.handleToChange);\n };\n\n handleFromCurrencyChange = (ev) => {\n let val = ev.target.value;\n this.props.handleFromCurrencyChange(val);\n this.setFromSymbol(val);\n };\n\n handleAmountFocus = (event) => {\n this.props.handleAmountFocus(event);\n };\n\n getLocalizedAmount = (amount) => {\n return `${amount}`.replace(/[.|,]/i, this.props.decimalPoint);\n };\n\n render() {\n const placeholder = this.getLocalizedAmount('0.00');\n const fromAmount = this.getLocalizedAmount(this.props.fromAmount);\n const toAmount = this.getLocalizedAmount(this.props.toAmount);\n const conversionRate = `${this.getLocalizedAmount('1.00')} ${\n this.props.fromCode\n } = ${this.getLocalizedAmount(this.props.conversionRate)} ${\n this.props.toCode\n }`;\n\n const calcLabelStyle = {\n ...STYLES.calcLabel,\n ...(this.props.toError ? STYLES.hasError : {}),\n };\n\n return (\n \n
\n \n
{this.state.youDonateLabel}
\n
\n
\n \n {this.state.fromSymbol}\n \n \n
\n \n {this.props.availableCurrencies.map((c) => (\n \n ))}\n \n
\n
\n \n
{this.state.charityGetLabel}
\n
\n
\n \n {this.props.charityAmountSymbol}\n \n \n
\n {this.props.toCode}\n
\n {this.props.toError && (\n \n )}\n \n \n\n {this.props.conversionRate && (\n \n {this.state.conversionLabel} {conversionRate}\n \n )}\n \n );\n }\n}\n\nCalculator.propTypes = {\n availableCurrencies: PropTypes.array.isRequired,\n currencySymbols: PropTypes.object.isRequired,\n decimalPoint: PropTypes.string.isRequired,\n conversionRate: PropTypes.string.isRequired,\n fromAmount: PropTypes.string.isRequired,\n fromCode: PropTypes.string.isRequired,\n fromDisabled: PropTypes.bool.isRequired,\n toAmount: PropTypes.string.isRequired,\n toCode: PropTypes.string.isRequired,\n toDisabled: PropTypes.bool.isRequired,\n handleFromChange: PropTypes.func.isRequired,\n handleFromCurrencyChange: PropTypes.func.isRequired,\n handleToChange: PropTypes.func.isRequired,\n charityAmountSymbol: PropTypes.string,\n handleAmountFocus: PropTypes.func,\n toError: PropTypes.bool,\n toErrorMessage: PropTypes.string,\n};\n\nexport default Calculator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport colors from '../../styles/colors';\nimport { formatAmountFromServerDNW } from './amountUtils';\nimport { getCurrencyParts } from '../../utility/formator';\nimport { Button } from '@paypalcorp/pp-react';\nimport { addSelectedPresetButton } from '../../utility/fpt';\nimport * as AppActions from '../../actions/AppActions';\n\nconst buttonStyles = {\n amountBtn: {\n height: '48px',\n padding: 0,\n borderRadius: '5px',\n border: '1px solid #0070BA',\n fontSize: '16px',\n textDecoration: 'none',\n },\n defaultColor: {\n backgroundColor: 'white',\n color: colors.primaryLightBlue,\n ':hover': {\n color: colors.primaryBlue,\n borderColor: colors.primaryBlue,\n boxShadow: `0 0 0 1px ${colors.primaryBlue} inset`,\n },\n ':active': {\n color: colors.primaryBlue,\n borderColor: colors.primaryBlue,\n boxShadow: `0 0 0 1px ${colors.primaryBlue} inset`,\n },\n ':focus': {\n color: colors.primaryBlue,\n borderColor: colors.primaryBlue,\n boxShadow: `0 0 0 1px ${colors.primaryBlue} inset`,\n ':after': {\n borderRadius: '5px',\n },\n },\n },\n highlightedColor: {\n backgroundColor: colors.primaryLightBlue,\n color: 'white',\n ':focus:after': {\n borderRadius: '5px',\n },\n },\n};\n\nconst STYLES = StyleSheet.create({\n defaultBtn: {\n ...buttonStyles.amountBtn,\n ...buttonStyles.defaultColor,\n },\n highlightedBtn: {\n ...buttonStyles.amountBtn,\n ...buttonStyles.highlightedColor,\n },\n currencyStyle: {\n whiteSpace: 'nowrap', // Do not wrap amount to next line\n },\n currencyCodeStyle: {\n fontSize: 11,\n marginTop: -4,\n },\n});\n\nclass PresetAmountButton extends React.Component {\n constructor(props) {\n super(props);\n const [firstParts = {}] = getCurrencyParts();\n const rightSymbol = firstParts.$ !== 'symbol';\n this.state = {\n rightSymbol,\n };\n }\n\n handleClick = (event, value) => {\n addSelectedPresetButton(this.props.id);\n AppActions.updateSelectedPresetButtonId(this.props.id);\n this.props.handleAmountBtnClick(event, value);\n };\n\n getAmountDisplayValue = () => {\n let amountDisplayValue;\n if (this.state.rightSymbol) {\n amountDisplayValue = this.props.symbol\n ? `${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )} ${this.props.symbol}`\n : `${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )}`;\n } else {\n amountDisplayValue = this.props.symbol\n ? `${this.props.symbol}${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )}`\n : `${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )}`;\n }\n return amountDisplayValue;\n };\n\n getAmountFontSize = (amountDisplayValue) => {\n if (amountDisplayValue.length < 11) {\n return '15px';\n }\n return '12px';\n };\n\n render() {\n const { selected } = this.props;\n const btnClasses = classNames({\n [css(STYLES.highlightedBtn)]: selected,\n [css(STYLES.defaultBtn)]: !selected,\n });\n const formattedAmount = formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n );\n const amountDisplayValue = this.getAmountDisplayValue();\n const amountFontSize = this.getAmountFontSize(amountDisplayValue);\n\n return (\n this.handleClick(event, formattedAmount)}\n >\n \n {amountDisplayValue}\n \n
\n {this.props.charityAmountCode}\n
\n \n );\n }\n}\n\nPresetAmountButton.propTypes = {\n id: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n selected: PropTypes.bool,\n symbol: PropTypes.string,\n handleAmountBtnClick: PropTypes.func.isRequired,\n charityAmountCode: PropTypes.string,\n};\n\nexport default PresetAmountButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _map from 'lodash/map';\nimport PresetAmountButton from './PresetAmountButton';\nimport { getNormalizedNumber } from './amountUtils';\n\nclass PresetAmountButtons extends React.Component {\n handleClick(event, value) {\n this.props.handlePresetAmountClick(event, value);\n }\n\n render() {\n return (\n
\n
\n {_map(this.props.amounts, (amount, index) => {\n const normalizedAmount =\n '' + getNormalizedNumber(this.props.selectedAmount);\n const isSelected = amount === normalizedAmount;\n return (\n \n );\n })}\n
\n
\n );\n }\n}\n\nPresetAmountButtons.propTypes = {\n amounts: PropTypes.array,\n handlePresetAmountClick: PropTypes.func,\n selectedAmount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n symbol: PropTypes.string,\n charityAmountCode: PropTypes.string,\n};\n\nexport default PresetAmountButtons;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getCurrencyParts, getAmountPlaceHolder } from '../../utility/formator';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport colors from '../../styles/colors';\nimport * as amountUtils from './amountUtils';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { TextInput } from '@paypalcorp/pp-react';\nimport AppStore from '../../stores/AppStore';\nimport {\n isOptInCoverFee,\n shouldSelectPresetAmount,\n} from '../coverFee/feeUtils';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\n\nlet messages = localsMessages('common/amount');\n\nconst STYLES = StyleSheet.create({\n currencyString: {\n position: 'absolute',\n 'font-size': '16px',\n 'line-height': '1',\n color: colors.black,\n zIndex: 1,\n top: '14px',\n left: '8px',\n },\n amountCondensed: {\n display: 'inline-block',\n margin: '0 auto',\n width: '100%',\n },\n moneyInput: {\n width: '142px',\n maxWidth: '282px',\n margin: '0 0 0 10px',\n\n '@media (max-width: 736px)': {\n width: '100%',\n margin: '0 auto',\n },\n },\n inputField: {\n fontSize: '13px',\n height: '3.1rem',\n width: '140px',\n },\n\n minimumError: {\n ':nth-child(1n) > input': {\n border: `2px solid #d20000`,\n },\n },\n});\n\nclass AmountCondensed extends React.Component {\n constructor(props) {\n super(props);\n const [firstParts = {}] = getCurrencyParts(),\n // In case user opts in for cover fee and goes back to\n // landing page from guest page, we need to restore back\n // user's original entered amount\n amountBeforeFee = AppStore.getAmountBeforeFee(),\n isCustomAmount = !shouldSelectPresetAmount(amountBeforeFee),\n shouldRestoreAmount =\n isCustomAmount && amountBeforeFee && isOptInCoverFee(),\n amount = shouldRestoreAmount ? amountBeforeFee : this.props.amount,\n displayValue = this.getDisplayValue(amount);\n\n this.state = {\n displayValue,\n amount: amount || '',\n symbol: this.props.symbol || '',\n code: this.props.code || '',\n rightSymbol: firstParts.$ !== 'symbol',\n placeholder: getAmountPlaceHolder(),\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.amount !== nextProps.amount) {\n this.setState({\n amount: nextProps.amount,\n });\n\n if (!nextProps.amount) {\n this.setState({\n displayValue: '',\n });\n }\n }\n }\n\n /**\n * Returns amount converted to readable format\n * Converts \"1.00\"\n * @return {[type]} [description]\n */\n getDisplayValue(amount) {\n // let amount = inputAmount || this.state.amount;\n if (!amount) {\n return '';\n }\n let displayValue;\n if (this.props.symbol) {\n displayValue = `${this.props.symbol}${amount} ${this.props.code}`;\n } else {\n displayValue = `${amount} ${this.props.code}`;\n }\n return displayValue;\n }\n\n moveCursorToTheEnd(node) {\n if (node) {\n setTimeout(() => {\n const { length } = node.value;\n node.setSelectionRange(length, length);\n });\n }\n }\n\n handleFocus = (event) => {\n if (!this.state.amount) {\n this.props.handleAmount(amountUtils.formatAmount('', this.props.code));\n }\n this.setState({\n displayValue: '',\n });\n this.props.handleAmountFocus();\n this.moveCursorToTheEnd(event.target);\n };\n\n handleKeyPress = (event) => {\n if (!amountUtils.isKeyAllowed(event.charCode)) {\n return;\n }\n };\n\n handleChange = (event) => {\n const { value } = event.target;\n if (!amountUtils.amountLengthValid(value)) {\n return;\n }\n const stringValue = amountUtils.formatAmount(value, this.props.code);\n this.setState({ amount: stringValue });\n this.props.handleAmount(stringValue);\n };\n\n handleBlur = (event) => {\n const amount = this.state.amount;\n this.setState({\n displayValue: this.getDisplayValue(amount),\n });\n };\n\n handleClick = ({ target }) => this.moveCursorToTheEnd(target);\n\n render() {\n const placeholder = isExternalFlow()\n ? messages.amount.externalOtherAmount\n : messages.amount.placeholderOtherAmount;\n const amount = `${this.state.amount}`;\n const hasError = !!this.props.showValidationError;\n const displayedAmount = this.state.displayValue\n ? this.state.displayValue\n : amount;\n\n const inputStyles = css(\n STYLES.inputField,\n STYLES.moneyInput,\n hasError && STYLES.minimumError\n );\n\n return (\n \n );\n }\n}\n\nAmountCondensed.propTypes = {\n name: PropTypes.string,\n label: PropTypes.string,\n value: PropTypes.string,\n amount: PropTypes.string,\n symbol: PropTypes.string,\n code: PropTypes.string,\n decimalPoint: PropTypes.string,\n isEditable: PropTypes.bool,\n handleAmount: PropTypes.func,\n showValidationError: PropTypes.bool,\n validationErrorMessage: PropTypes.string,\n handleAmountFocus: PropTypes.func,\n};\n\nexport default AmountCondensed;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PresetAmountButtons from './PresetAmountButtons';\nimport AmountCondensed from './AmountCondensed';\nimport AmountValidationError from './amountValidationError.js';\nimport templateData from '../../utility/getTemplateData';\nimport * as AppActions from '../../actions/AppActions';\nimport AppStore from '../../stores/AppStore';\nimport { StyleSheet, css } from 'aphrodite';\nimport * as FPT from '../../utility/fpt';\nimport {\n isOptInCoverFee,\n shouldSelectPresetAmount,\n} from '../coverFee/feeUtils';\nimport { isInContext } from '../../utility/inContextDonation';\n\nconst STYLES = StyleSheet.create({\n errorContainer: {\n 'text-align': 'center',\n 'margin-top': '5px',\n },\n});\n\nclass PresetAmountRow extends React.Component {\n constructor(props) {\n super(props);\n this.presetAmounts = templateData.presetAmounts;\n this.page =\n window.location.href.indexOf('guest') > -1 ? 'guest' : 'landing';\n this.state = {\n presetAmounts: this.presetAmounts,\n isPresetAmountSelected: templateData.donationAmountType === 'preset',\n selectedAmount:\n AppStore.getDonationAmountType() === 'preset'\n ? parseFloat(AppStore.getDonationAmount(), 10)\n : '',\n };\n }\n\n componentDidMount() {\n // In case user opts in for cover fee and goes back to\n // landing page from guest page, we need to restore back\n // user's original entered amount\n const amountBeforeFee = AppStore.getAmountBeforeFee();\n if (amountBeforeFee && isOptInCoverFee()) {\n if (shouldSelectPresetAmount(amountBeforeFee)) {\n this.handlePresetAmountClick({}, amountBeforeFee);\n }\n }\n }\n\n fireEventForPresetAmountClick(amount) {\n FPT.trackLinkClickWithData('presetAmount', {\n amount: amount,\n page: this.page,\n });\n }\n\n handlePresetAmountClick(event, value) {\n const presetAmounts = this.presetAmounts;\n const selectedAmount = value;\n\n this.fireEventForPresetAmountClick(selectedAmount);\n\n // Highlight the selected button\n this.setState({\n isPresetAmountSelected: true,\n presetAmounts,\n selectedAmount,\n });\n // Clear the errors from amount field\n this.props.hideValidationError();\n\n AppActions.updateDonationAmountType('preset');\n this.props.handleAmountChange(`${selectedAmount}`);\n }\n\n clearSuggestedAmountSelection() {\n this.setState({\n selectedAmount: '',\n });\n }\n\n handleAmountChange(amount) {\n let checkValue = parseFloat(amount.replace(',', '.').replace(' ', ''));\n\n if (AppStore.getDonationAmountType() === 'preset' && checkValue > 0) {\n FPT.addSelectedPresetButton('other');\n this.clearSuggestedAmountSelection();\n AppActions.updateSelectedPresetButtonId('other');\n AppActions.updateDonationAmountType('userinput');\n this.props.handleAmountChange('0.00');\n FPT.trackLinkClick('presetAmount', {\n page: this.page,\n });\n }\n if (checkValue > 0) {\n this.props.handleAmountChange(amount);\n }\n }\n\n handleAmountFocus() {\n this.props.handleAmountFocus();\n }\n\n render() {\n const isPresetAmountSelected =\n AppStore.getDonationAmountType() === 'preset';\n const amountFieldValue = isPresetAmountSelected\n ? ''\n : this.props.charityAmount;\n\n return (\n \n
\n
\n
\n \n
\n
\n \n
\n
\n {this.props.showValidationError ? (\n \n \n
\n ) : (\n  \n )}\n \n \n );\n }\n}\n\nPresetAmountRow.propTypes = {\n hideValidationError: PropTypes.func,\n handleAmountChange: PropTypes.func,\n handleAmountFocus: PropTypes.func,\n charityAmount: PropTypes.string,\n showValidationError: PropTypes.bool,\n charityAmountSymbol: PropTypes.string,\n charityAmountCode: PropTypes.string,\n decimalPoint: PropTypes.string,\n isAmountEditable: PropTypes.bool,\n validationErrorMessage: PropTypes.string,\n validationErrorCode: PropTypes.string,\n};\nexport default PresetAmountRow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _debounce from 'lodash/debounce';\nimport AppStore from '../stores/AppStore';\nimport * as AppActions from '../actions/AppActions';\nimport TemplateData from '../utility/getTemplateData';\nimport { fetcher } from '../utility/domUtils';\nimport SingleAmount from '../components/amount/SingleAmount';\nimport Calculator from '../components/amount/calculator';\nimport PresetAmountRow from './amount/PresetAmountRow';\nimport {\n setFeeAmountInStore,\n optOutCoverFee,\n isAtLandingPage,\n isOptInCoverFee,\n} from './coverFee/feeUtils';\nimport AppDispatcher from '../dispatcher/AppDispatcher';\nimport { getParameterByName } from '../utility/queryStringHelper';\n\nclass AmountWrapper extends React.Component {\n constructor(props) {\n super(props);\n\n const currencyObj = JSON.parse(\n document.getElementById('currencyLists').innerHTML || {}\n );\n const { currencies: currencyLists, symbols: currencySymbols } =\n currencyObj || {};\n\n let userCountry = TemplateData.donorIpCountry;\n let availableCurrencies = currencyLists[userCountry] || currencyLists.US;\n let userAmountCode = availableCurrencies[0];\n let charityAmountCode = AppStore.getDonationCode();\n let isEditable = !!TemplateData.donationAmountEditable;\n // let showCBCalculator = TemplateData.pxp && TemplateData.pxp.calculator && TemplateData.pxp.calculator.experiment || false;\n\n let isCalculator = false;\n // Disabled Calculator\n // let isCalculator =\n // \tisEditable &&\n // \tuserAmountCode !== charityAmountCode &&\n // \t(showCBCalculator || TemplateData.isCorpIp);\n\n this.state = {\n charityAmountCode,\n charityAmount: AppStore.getDonationAmount() || '',\n charityAmountSymbol: AppStore.getDonationSymbol(),\n charityDisabled: false,\n\n userCountry,\n userAmountCode,\n userAmount: '',\n userDisabled: false,\n\n availableCurrencies,\n currencySymbols,\n isCalculator,\n decimalPoint: TemplateData.donationDecimalPoint || '.',\n conversionRate: '',\n isAmountEditable: isEditable,\n\n showValidationError: props.showValidationError || false,\n validationErrorMessage: props.validationErrorMessage || '',\n validationErrorCode: props.validationErrorCode || '',\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.showValidationError !== nextProps.showValidationError) {\n this.setState({\n showValidationError: nextProps.showValidationError,\n validationErrorMessage: nextProps.validationErrorMessage,\n validationErrorCode: nextProps.validationErrorCode,\n });\n }\n }\n\n componentDidMount() {\n // Watch for amount change for the case that donor opts in to cover fee\n // and clicks back button to go back to landing page\n // as we need to restore donor's original entered amount\n this.dispatcherCharityAmount = AppDispatcher.register((payload) => {\n if (payload.action && payload.action.actionType === 'CHANGE_AMOUNT') {\n const { action: { item: { amount = 0 } = {} } = {} } = payload;\n this.setState({\n charityAmount: amount,\n });\n }\n });\n }\n\n componentWillUnmount = () => {\n AppDispatcher.unregister(this.dispatcherCharityAmount);\n };\n\n isGuestReviewPage = () => {\n return (\n window.location.pathname.includes('guest') ||\n ![undefined, null].includes(getParameterByName('signup'))\n );\n };\n\n normalizeAmount = (amount) => {\n return isNaN(amount) ? 0 : amount;\n };\n\n setAppAmount = (amount) => {\n AppActions.changeAmount({\n amount,\n });\n };\n\n getConversionRate = (state, exchangeRate) => {\n let rate =\n exchangeRate.base_currency_code === state.userAmountCode\n ? exchangeRate.quote_amount\n : 1 / exchangeRate.quote_amount;\n return rate.toFixed(2);\n };\n\n getConversionRequest = (state, params, callback) => {\n this.getConversionRequest = _debounce((st, par, fn) => {\n const queryParams = {\n fromCountry: st.userCountry,\n fromCurrency: st.userAmountCode,\n toCurrency: st.charityAmountCode,\n ...par,\n };\n\n if (queryParams.fromAmount) {\n queryParams.fromAmount = this.normalizeAmount(queryParams.fromAmount);\n } else {\n queryParams.toAmount = this.normalizeAmount(queryParams.toAmount);\n }\n const url = '/donate/calculate-foreign-exchange';\n this.props.conversionStatus(true);\n Promise.resolve(\n fetcher(url, {\n method: 'POST',\n body: JSON.stringify(queryParams),\n })\n )\n .then((response) => response.json())\n .then(({ result }) => {\n this.props.conversionStatus(false);\n fn(result);\n })\n .catch(() => {\n this.props.conversionStatus(false);\n let amount = queryParams.fromAmount || queryParams.toAmount || '';\n amount += '';\n fn({\n target: { value: amount },\n source: { value: amount },\n exchange_rate: {\n base_currency_code: queryParams.userAmountCode,\n quote_amount: 1,\n },\n });\n });\n }, 500);\n\n this.getConversionRequest(state, params, callback);\n };\n\n /*\n * getConversion\n * Getting conversion rate for calculator\n */\n getConversion = (state, params, fn) => {\n // Conversion is only required for calculator\n if (state.isCalculator) {\n this.getConversionRequest(state, params, fn);\n } else {\n const amount = params.fromAmount || params.toAmount || '';\n fn({\n target: { value: amount },\n source: { value: amount },\n exchange_rate: {\n base_currency_code: state.userAmountCode,\n quote_amount: 1,\n },\n });\n }\n };\n\n handleAmountChange = (amount) => {\n this.setState({ charityAmount: amount });\n this.setAppAmount(amount);\n\n // let recurringStatus = AppStore.getDonationRecurring() === 'checked';\n // if (recurringStatus) {\n // if (isAmountGreaterThanZero(amount)) {\n // $('#donateNowAmt').html(this.state.charityAmountSymbol + amount);\n // } else {\n // $('#donateNowAmt').html(' ');\n // }\n // }\n\n if (isAtLandingPage()) {\n // Compute fee amount and update store\n setFeeAmountInStore();\n // Let landing page know that fee amount displayed needs to be updated\n this.props.updateFeeAmount();\n } else {\n // Since user updates the amount in the guest page\n // we should opt user out for cover the fee in case\n // they go back to landing page\n if (isOptInCoverFee()) {\n optOutCoverFee();\n }\n\n // In case user selects a preset button but update the amount\n // in review page, the donation amount type should now be\n // \"userinput\"\n if (AppStore.getDonationAmountType() === 'preset') {\n AppActions.updateDonationAmountType('userinput');\n }\n }\n };\n\n handleAmountFocus() {\n this.props.onFocus();\n }\n\n handleUserAmountChange = (amount) => {\n let snapshot = {\n userAmount: amount,\n charityDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n fromAmount: state.userAmount,\n },\n ({ target, exchange_rate }) => {\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n charityAmount: target.value,\n charityDisabled: false,\n });\n this.setAppAmount(target.value);\n }\n );\n };\n\n handleUserCurrencyChange = (currencyCode) => {\n let snapshot = {\n userAmountCode: currencyCode,\n charityDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n fromAmount: state.userAmount,\n },\n ({ target, exchange_rate }) => {\n state.charityAmount = target.value;\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n charityAmount: state.charityAmount,\n charityDisabled: false,\n });\n this.setAppAmount(target.value);\n }\n );\n };\n\n handleCharityAmountChange = (amount) => {\n let snapshot = {\n charityAmount: amount,\n userDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n toAmount: state.charityAmount,\n },\n ({ source, exchange_rate }) => {\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n userAmount: source.value,\n userDisabled: false,\n });\n this.setAppAmount(state.charityAmount);\n }\n );\n };\n\n shouldShowPresetAmounts = () => {\n // Should only show preset amount options in landing\n // page not review page to make the experience consistent\n // with member flow. It works better for cover the fees as well\n return (\n TemplateData.enablePresetAmounts &&\n !this.state.isCalculator &&\n !this.isGuestReviewPage()\n );\n };\n\n renderPresetAmounts = () => {\n return (\n \n );\n };\n\n render() {\n if (this.shouldShowPresetAmounts()) {\n return
{this.renderPresetAmounts()}
;\n }\n\n return (\n
\n {this.state.isCalculator ? (\n \n ) : (\n \n )}\n
\n );\n }\n}\n\nAmountWrapper.propTypes = {\n conversionStatus: PropTypes.func,\n showValidationError: PropTypes.bool,\n hideValidationError: PropTypes.func,\n validationErrorMessage: PropTypes.string,\n validationErrorCode: PropTypes.string,\n validateDonationAmount: PropTypes.func,\n onFocus: PropTypes.func,\n updateFeeAmount: PropTypes.func,\n};\n\nexport default AmountWrapper;\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 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 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 * 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' ? true : false;\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getCurrencyParts, getAmountPlaceHolder } from '../../utility/formator';\nimport { addShake } from '../../utility/helper';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport AmountValidationError from './amountValidationError.js';\nimport * as amountUtils from './amountUtils';\nimport { moveCursorToTheEnd } from '../../utility/domUtils';\nimport AppStore from '../../stores/AppStore';\nimport { isAtLandingPage, isOptInCoverFee } from '../coverFee/feeUtils';\n\nlet messages = localsMessages('common/amount');\n\nclass SingleAmount extends React.Component {\n constructor(props) {\n super(props);\n const [firstParts = {}] = getCurrencyParts();\n const { amount = '', symbol = '', code = '' } = this.props;\n const rightSymbol = firstParts.$ !== 'symbol';\n this.state = {\n amount,\n symbol,\n code,\n rightSymbol,\n placeholder: getAmountPlaceHolder(),\n inputWidth: amountUtils.MIN_INPUT_WIDTH,\n inputFontSize: amountUtils.DEFAULT_INPUT_FONTSIZE,\n };\n }\n\n componentDidMount() {\n if (this.props.isEditable && this.singleAmountInput) {\n setTimeout(() => {\n if (this.singleAmountInput) {\n this.singleAmountInput.focus();\n }\n // Placeholder does not work good in IE\n // So call update to show value - 0.00(US)\n if (this.state.amount === '') {\n this.updateAmountField();\n }\n }, 500);\n }\n this.inputResize();\n\n // In case user opts in for cover fee and goes back to\n // landing page from guest page, we need to restore back\n // user's original entered amount\n const amountBeforeFee = AppStore.getAmountBeforeFee();\n if (amountBeforeFee && isOptInCoverFee() && isAtLandingPage()) {\n this.updateAmountField(amountBeforeFee);\n }\n }\n\n handleFocus = (event) => {\n moveCursorToTheEnd(this.singleAmountInput);\n this.props.handleAmountFocus();\n };\n\n handleClick = (eventName) => {\n moveCursorToTheEnd(this.singleAmountInput);\n };\n\n handleKeyPress = (event) => {\n if (!amountUtils.isKeyAllowed(event.charCode)) {\n addShake();\n return;\n }\n };\n\n inputResize = () => {\n let inputWidth;\n\n try {\n inputWidth = amountUtils.getInputWidth(\n this.singleAmountInput,\n this.state.amount\n );\n } catch (e) {\n inputWidth = amountUtils.MIN_INPUT_WIDTH;\n }\n // \"Fixed\" amount is rendered before the CSS is loaded and hence the\n // reported width is lesser than actual. Add a few pixels to fix that.\n if (!this.props.isEditable) {\n inputWidth += 20;\n }\n\n this.setState({\n inputWidth,\n inputFontSize: amountUtils.getFontSize(this.state.amount),\n });\n };\n\n handleChange = (event) => {\n let val = event.target.value;\n this.updateAmountField(val);\n };\n\n updateAmountField = (val) => {\n if (!amountUtils.amountLengthValid(val)) {\n addShake();\n return;\n }\n\n const stringValue = amountUtils.formatAmount(val, this.props.code);\n\n this.setState({ amount: stringValue }, () => {\n this.inputResize();\n });\n this.props.handleAmount(stringValue);\n };\n\n render() {\n const label = (messages.amount && messages.amount.label) || '';\n\n return (\n
\n
\n
\n {!this.state.rightSymbol && (\n
\n \n {this.state.symbol}\n \n
\n )}\n (this.singleAmountInput = input)}\n name=\"donationAmount\"\n autoComplete=\"off\"\n id=\"currencyAmount\"\n data-testid=\"currencyAmount\"\n placeholder={this.state.placeholder}\n pattern=\"[0-9]*\"\n value={this.state.amount}\n onKeyPress={this.handleKeyPress}\n onChange={this.handleChange}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n className=\"amount_number validate\"\n />\n {this.state.rightSymbol && (\n
\n \n {this.state.symbol}\n \n
\n )}\n
\n
\n

\n {this.state.code}\n

\n {this.props.showValidationError && (\n
\n \n
\n )}\n
\n );\n }\n}\n\nSingleAmount.propTypes = {\n name: PropTypes.string,\n label: PropTypes.string,\n value: PropTypes.string,\n amount: PropTypes.string,\n symbol: PropTypes.string,\n code: PropTypes.string,\n decimalPoint: PropTypes.string,\n isEditable: PropTypes.bool,\n handleAmount: PropTypes.func,\n showValidationError: PropTypes.bool,\n validationErrorMessage: PropTypes.string,\n validationErrorCode: PropTypes.string,\n handleAmountFocus: PropTypes.func,\n};\n\nexport default SingleAmount;\n","/**\n * Card security code input used for adding a card\n */\nimport React from 'react';\nimport { TextInput } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\n\nimport { cardSpecPropType } from 'prop-validators';\n\nclass CardSecurityCode extends React.Component {\n static propTypes = {\n cardSpec: cardSpecPropType,\n label: PropTypes.string.isRequired,\n errorMessage: PropTypes.string,\n handleChangeSecurityCode: PropTypes.func.isRequired,\n handleFocus: PropTypes.func,\n handleBlur: PropTypes.func,\n dir: PropTypes.string,\n helperText: PropTypes.string,\n };\n\n static defaultProps = {\n handleFocus: () => {},\n handleBlur: () => {},\n };\n\n state = { value: '', showIsRequiredError: false };\n\n /**\n * Handle changing the csc\n * @param {String} securityCode - the csc\n * @return {String} securityCode - numbers only\n */\n handleChangeSecurityCode = ({ target: { value: securityCode } }) => {\n securityCode = securityCode.replace(/\\D+/g, '');\n this.setState({ value: securityCode });\n this.handleCheckForValue(securityCode);\n this.props.handleChangeSecurityCode(securityCode);\n return securityCode;\n };\n\n /**\n * Check for a security code value\n * If the field is required, we should show that this field needs a value\n * @param {String} securityCode - the csc\n */\n handleCheckForValue = (securityCode) => {\n const cscSpecs = this.props.cardSpec.fields.csc;\n const isRequired = cscSpecs.required;\n this.setState({ showIsRequiredError: isRequired && !securityCode });\n };\n\n /**\n * Call parent's handleFocus\n * @param {String} securityCode - the csc\n */\n handleFocus = (securityCode) => {\n this.props.handleFocus(securityCode);\n };\n\n /**\n * Check for a security code value and call parent's handleBlur\n * @param {String} securityCode - the csc\n */\n handleBlur = ({ target: { value: securityCode } }) => {\n this.handleCheckForValue(securityCode);\n this.props.handleBlur(securityCode);\n };\n\n render() {\n const cscSpecs = this.props.cardSpec.fields.csc;\n // let helpText = '●'.repeat(cscSpecs.maxlength)\n let { errorMessage } = this.props;\n\n return (\n
\n \n
\n );\n }\n}\n\nexport default CardSecurityCode;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CaptionText, Alert } from '@paypalcorp/pp-react';\nimport getContent from 'pp-react-l10n';\n\nconst getRecurringInfoContent = getContent('locals')(\n 'common/recurring-checkbox'\n);\n\nexport default function RecurringInfo({ orgName, amount }) {\n return (\n \n \n {getRecurringInfoContent(\n 'rp.helpText1',\n { orgName: orgName, amount: amount },\n { useHTML: true }\n )}\n \n {getRecurringInfoContent('rp.helpText2')}\n \n \n );\n}\n\nRecurringInfo.propTypes = {\n orgName: PropTypes.string,\n amount: PropTypes.string,\n};\n","/* eslint-disable */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport * as FPT from '../../utility/fpt';\nimport * as AppActions from '../../actions/AppActions';\nimport AppStore from '../../stores/AppStore';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport TemplateData, { localsMessages } from '../../utility/getTemplateData';\nimport { isLTR as isLeftToRight } from '../../utility/helper';\nimport { loadBodyMovin } from '../../utility/lazyLoader';\nimport { formatAmount } from '../../utility/formator';\nimport { sanitize } from '../../utility/domUtils';\nimport RecurringInfo from './RecurringInfo';\nimport { Checkbox, Tooltip, Modal } from '@paypalcorp/pp-react';\nimport { preventFormSubmitOnTooltipClick } from '../../utility/fixPpReactToolTip';\n\nconst orgname = TemplateData.donationName ? TemplateData.donationName : '';\nconst isLTR = isLeftToRight();\nlet texts = localsMessages('common/recurring-checkbox');\nlet textsOr = localsMessages('common/orLine');\nlet isContinue = false;\n\nconst styles = StyleSheet.create({\n wrapper: {},\n centered: {\n display: 'flex',\n justifyContent: 'center',\n },\n toolWrapper: {\n display: 'inline-block',\n position: 'relative',\n margin: '0',\n paddingBottom: '10px',\n },\n toolCheckboxWrapper: {\n position: 'absolute',\n width: 'inherit',\n display: 'inline',\n },\n toolCheckbox: {\n ':before': {\n overflow: 'hidden',\n },\n },\n toolBlurb: {\n fontSize: '15px',\n lineHeight: '20px',\n marginLeft: '40px',\n position: 'relative',\n zIndex: 2,\n },\n tipIcon: {\n position: 'relative',\n color: '#005EA6',\n cursor: 'pointer',\n textDecoration: 'none',\n },\n helpIcon: {\n textDecoration: 'none',\n color: '#50c7f9',\n fontWeight: 600,\n },\n helpWrapper: {},\n helpTxt: {\n border: '1px solid #50c7f9',\n lineHeight: '1.8',\n textAlign: 'left',\n borderRadius: 6,\n padding: '15px 10px 5px',\n display: 'flex',\n width: '100%',\n maxWidth: 460,\n margin: '0 auto 25px auto',\n },\n helpP: {\n fontSize: 14,\n },\n helpP2: {\n fontSize: 14,\n },\n perMonth: {\n fontSize: 15,\n position: 'relative',\n top: '-5px',\n },\n splitterDiv: {\n width: '100%',\n overflow: 'hidden',\n padding: '8px',\n },\n splitterP: {\n fontSize: 15,\n marginBottom: 15,\n display: 'inline',\n },\n columnLeft: {\n width: 20,\n float: 'left',\n },\n columnRight: {\n maxWidth: 360, // container 400px, padding 8 + 8 px, leftMargin 20px\n width: '90%',\n marginLeft: 30,\n marginBottom: 8,\n lineHeight: 1.3,\n },\n animationWrapper: {\n width: '100%',\n position: 'absolute',\n height: 125,\n marginTop: -125,\n },\n animationContainer: {\n transform: isLTR ? 'scaleX(1)' : 'scaleX(-1)',\n height: 250,\n width: 250,\n marginLeft: -35,\n },\n recurringButton: {\n width: '100%',\n padding: 20,\n borderRadius: '3rem',\n fontSize: 15,\n marginBottom: 0,\n },\n borderOnly: {\n background: 'transparent',\n color: '#0070ba',\n },\n divider: {\n position: 'relative',\n borderBottom: '1px solid #ccc',\n textAlign: 'center',\n margin: '0 0 20px',\n },\n dividerContent: {\n position: 'relative',\n textAlign: 'center',\n backgroundColor: '#fff',\n display: 'inline-block',\n margin: 0,\n top: 9,\n padding: '0 10px',\n fontSize: 18,\n },\n verticalCentered: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\nclass RecurringCheckBox extends React.Component {\n constructor(props) {\n super(props);\n const amount = AppStore.getDonationAmount() || '';\n const currency = AppStore.getDonationCode() || '';\n this.state = {\n showhelp: this.props.status,\n formatedAmount: formatAmount({ currency: currency, value: amount }),\n };\n }\n\n componentDidMount() {\n this.dispatcherToken = AppDispatcher.register((payload) => {\n if (payload.action && payload.action.actionType === 'CHANGE_AMOUNT') {\n const { action: { item: { amount = 0 } = {} } = {} } = payload;\n this.updateAmount(amount);\n }\n });\n\n preventFormSubmitOnTooltipClick();\n }\n\n componentWillUnmount = () => {\n isContinue = this.props.continue;\n AppDispatcher.unregister(this.dispatcherToken);\n };\n\n loadAnimation(display) {\n if (!display) {\n return;\n }\n loadBodyMovin().then(([bodymovin, animationData]) => {\n // Animation is displayed after bodymovin files are downloaded\n // On slow connections, user may click the checkbox a few times before\n // the JS files are downloaded\n if (this.state.isAnimating) {\n return;\n }\n this.setState({\n isAnimating: true,\n });\n bodymovin.loadAnimation({\n // eslint-disable-line\n container: document.getElementById('animationContainer'),\n renderer: 'svg',\n loop: 1,\n autoplay: true,\n animationData,\n });\n // Destroying with timeout\n setTimeout(() => {\n bodymovin.destroy(); // eslint-disable-line\n this.setState({\n isAnimating: false,\n });\n }, 1000);\n });\n }\n\n updateAmount = (value) => {\n const currency = AppStore.getDonationCode() || '';\n this.setState({ formatedAmount: formatAmount({ currency, value }) });\n };\n\n handleChange = (ev) => {\n let { showhelp } = this.state;\n let isChecked = ev.target.checked;\n let chkBxStatus = isChecked ? 'checked' : 'unchecked';\n\n this.loadAnimation(isChecked);\n\n AppActions.changeRecurring({\n recurring: chkBxStatus,\n });\n FPT.trackLinkClickWithData('recurringChkBx', {\n checkbox: chkBxStatus,\n });\n\n this.props.handleChange(isChecked);\n\n this.setState({ showhelp: (showhelp = !showhelp) });\n };\n\n createMarkup = (content) => {\n return { __html: content };\n };\n\n render() {\n let { recurring_label, perMonth } = texts.rp;\n\n const checked = { checked: false };\n if (this.props.status) {\n checked.checked = true;\n }\n\n const shouldLeftAlignRecurringCheckbox =\n TemplateData.coverFeeEnabled || TemplateData.anonymousEnabled;\n\n return (\n \n \n {isContinue ? (\n
\n {perMonth}\n
\n ) : (\n \n
\n \n
\n \n
\n \n \n
\n \n \n )}\n \n {this.props.status && !isContinue && (\n
\n \n
\n )}\n \n );\n }\n}\n\nRecurringCheckBox.propTypes = {\n handleChange: PropTypes.func,\n hasRecurringHelp: PropTypes.bool,\n status: PropTypes.bool,\n continue: PropTypes.bool,\n};\n\nRecurringCheckBox.defaultProps = {\n handleChange: () => {},\n};\n\nexport default RecurringCheckBox;\n","export function preventFormSubmitOnTooltipClick() {\n let tooltipButton = document.getElementsByClassName('ppvx_tooltip__icon');\n Object.values(tooltipButton).map((btn) => {\n btn.type = 'button';\n });\n}\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';\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 {isExternalFlow() && !isLandingPage && }\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, { Component } from 'react';\nimport AppStore from '../../stores/AppStore';\nimport _get from 'lodash/get';\nimport { getPaymentCardNetwork } from '../../utility/card-utils';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { StyleSheet, css } from 'aphrodite';\nimport _isEmpty from 'lodash/isEmpty';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport { appendCdnHostName } from '../../utility/geoUtils';\n\nlet threeDSText = localsMessages('common/threeDSecure');\n\nconst LOADING_GIF_SOURCE = appendCdnHostName(\n '/ui-web/money-icons/partnerships/mbLoader_256_sm.gif'\n);\n\nconst STYLES = StyleSheet.create({\n spinnerAlign: {\n margin: '30px auto 30px',\n },\n cardImg: {\n marginTop: '24px',\n },\n});\n\nclass ThreeDSSpinner extends Component {\n constructor(props) {\n super(props);\n this.state = {\n cardImg: null,\n network: null,\n };\n }\n\n setNetworkDetails = () => {\n const fundingOptions = AppStore.getFundingOptions();\n let cardImg = _get(\n fundingOptions,\n 'sources[0].payment_card.issuer.thumbnail_logo_url'\n );\n let network = getPaymentCardNetwork(\n _get(fundingOptions, 'sources[0].payment_card')\n );\n let myData = AppStore.getAllData() || {};\n if (\n cardImg === null ||\n _isEmpty(cardImg) ||\n typeof cardImg === 'undefined'\n ) {\n const cardType = _get(myData, 'cardSpec.cardSpec.type', '')\n .replace(/[.,_]|\\s\\(.*\\)/g, '')\n .replace(/[\\s_]/g, '-')\n .toLowerCase();\n cardImg = appendCdnHostName(\n `/digitalassets/c/consumer/p2p/funding-sources/${cardType}.png`\n );\n }\n if (\n network === null ||\n _isEmpty(network) ||\n typeof network === 'undefined'\n ) {\n network = myData.cardSpec.cardSpec.type.replace(/[_]/g, ' ');\n }\n this.setState({ cardImg, network });\n };\n\n componentDidMount() {\n // Hide the donate spinner in the background\n // to prevent double spinners\n hideSpinnerOverlay();\n this.setNetworkDetails();\n }\n\n render() {\n let confirmingWithText = _get(\n threeDSText,\n 'confirmingWith',\n \"We're confirming your info with {network}\"\n );\n const confirmingWith = confirmingWithText.replace(\n new RegExp('{network}', 'g'),\n this.state.network\n );\n\n return (\n
\n
\n
\n {/*
*/}\n
\n \n
\n

{confirmingWith}

\n
\n {this.state.cardImg ? (\n \"Card\n ) : (\n ''\n )}\n
\n

\n
\n
\n
\n );\n }\n}\n\nexport default ThreeDSSpinner;\n","import React, { Component } from 'react';\nimport AppStore from '../../stores/AppStore';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport _find from 'lodash/find';\n\nclass ThreeDSDeviceDataCollection extends Component {\n static propTypes = {\n onThreeDSDDCComplete: PropTypes.func,\n };\n\n getThreeDSParams() {\n const fundingOptions = AppStore.getFundingOptions();\n const contingencies = _get(fundingOptions, 'contingencies') || [];\n const threeDSContingency =\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {};\n\n return threeDSContingency;\n }\n\n componentDidMount() {\n // 'message' is passed after 3DS Submit is completed\n window.addEventListener('message', this.handleDDCEvent);\n\n const { three_ds_reference_id: threeDS2ReferenceId } =\n this.getThreeDSParams();\n\n if (this.refs[threeDS2ReferenceId]) {\n try {\n this.refs[threeDS2ReferenceId].submit();\n } catch (e) {\n console.log('e ', e);\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('message', this.handleDDCEvent);\n }\n\n handleDDCEvent = (event) => {\n const eventOrigin = _get(event, 'origin', '');\n if (eventOrigin.includes('cardinalcommerce.com')) {\n let data = null;\n try {\n data = JSON.parse(event.data);\n } catch (exception) {\n // Error handler incase parsing goes wrong\n data = {};\n }\n if (_get(data, 'MessageType', '') === 'profile.completed') {\n this.onDDCComplete(event);\n }\n }\n };\n\n onDDCComplete = (event) => {\n this.props.onThreeDSDDCComplete(event);\n };\n\n render() {\n const {\n device_data_collection_url: deviceDataCollectionUrl,\n jwt,\n three_ds_reference_id: threeDS2ReferenceId,\n } = this.getThreeDSParams();\n\n if (!deviceDataCollectionUrl) {\n return null;\n }\n\n return (\n
\n \n
\n \n );\n };\n\n render() {\n return (\n \n {this.getModalBody()}\n \n );\n }\n}\n\nThreeDSIframe.propTypes = {\n onStepUpAuthComplete: PropTypes.func,\n icon: PropTypes.string,\n hideModal: PropTypes.func,\n isOpen: PropTypes.bool,\n onClose: PropTypes.func,\n};\nexport default ThreeDSIframe;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Portal } from 'react-portal';\nimport ThreeDSSpinner from './ThreeDSSpinner';\nimport ThreeDSDeviceDataCollection from './ThreeDSDeviceDataCollection';\nimport ThreeDSIframe from './ThreeDSIframe';\nimport * as AppActions from '../../actions/AppActions';\nimport _get from 'lodash/get';\nimport * as FPT from '../../utility/fpt';\nimport { fetcher } from '../../utility/domUtils';\n\nclass ThreeDSContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showThreeDSIframe: false,\n showThreeDSSpinner: false,\n showThreeDSDeviceDataCollection: false,\n threeDSDCCStartTime: null,\n };\n }\n\n componentDidMount() {\n this.props.onRef(this);\n }\n\n componentWillUnmount() {\n this.props.onRef(undefined);\n }\n\n initializeThreeDS() {\n let startTime = new Date().getTime();\n this.setState({\n showThreeDSDeviceDataCollection: true,\n showThreeDSSpinner: true,\n threeDSDCCStartTime: startTime,\n });\n\n const threeDSRespDuration = {\n dcc_start_time: startTime,\n spinner_start_time: startTime,\n };\n FPT.add3DSRespDuration(\n threeDSRespDuration,\n window.fpti.pgrp,\n window.fpti.page\n );\n }\n\n handleThreeDSDDCComplete = () => {\n this.setState({\n showThreeDSDeviceDataCollection: false,\n });\n\n const threeDSDCCEndTime = new Date().getTime();\n const threeDSRespDuration = {\n dcc_start_time: this.state.threeDSDCCStartTime,\n dcc_end_time: threeDSDCCEndTime,\n spinner_start_time: this.state.threeDSDCCStartTime,\n spinner_end_time: threeDSDCCEndTime,\n };\n FPT.add3DSRespDuration(\n threeDSRespDuration,\n window.fpti.pgrp,\n window.fpti.page\n );\n\n this.resolveThreeDSContingency();\n };\n\n resolveThreeDSContingency = () => {\n const lookup_start_time = new Date().getTime();\n\n fetcher('/donate/guest/resolve-threeds-contingency', {\n method: 'POST',\n })\n .then((response) => response.json())\n .then((result) => {\n const threeDSRespDuration = {\n lookup_start_time: lookup_start_time,\n lookup_end_time: new Date().getTime(),\n };\n FPT.add3DSRespDuration(\n threeDSRespDuration,\n window.fpti.pgrp,\n window.fpti.page\n );\n\n const threeDSContingency = _get(result, 'data.threeDSContingency');\n\n this.hideThreeDSSpinner();\n if (_get(threeDSContingency, 'threeDSContingencyResolved')) {\n // 3DS Contingency resolved without StepUp Auth\n this.props.onThreeDSStepUpAuthNotRequired();\n\n return;\n }\n // Save threeDS data and show 3DS iframe\n AppActions.updateThreeDSData(threeDSContingency);\n this.showThreeDSIframe();\n })\n .catch((e) => {\n // Clear 3DS data\n AppActions.updateThreeDSData({});\n this.hideThreeDSIframe();\n this.props.onThreeDSFailure();\n });\n };\n\n handleThreeDSStepUpAuthComplete = ({ confirmationStatus = false, error }) => {\n if (confirmationStatus && confirmationStatus === 'threeDS-success') {\n this.props.onThreeDSStepUpAuthSuccess();\n } else {\n this.props.onThreeDSStepUpAuthFailure();\n return;\n }\n };\n\n showThreeDSIframe = () => {\n this.setState({\n showThreeDSIframe: true,\n });\n };\n\n hideThreeDSIframe = () => {\n this.setState({\n showThreeDSIframe: false,\n });\n };\n\n showThreeDSSpinner = () => {\n this.setState({\n showThreeDSSpinner: true,\n });\n };\n hideThreeDSSpinner = () => {\n this.setState({\n showThreeDSSpinner: false,\n });\n };\n\n render() {\n return (\n
\n {this.state.showThreeDSSpinner && (\n \n \n \n )}\n\n {this.state.showThreeDSDeviceDataCollection && (\n \n )}\n\n {this.state.showThreeDSIframe && (\n \n )}\n
\n );\n }\n}\n\nThreeDSContainer.propTypes = {\n onThreeDSStepUpAuthNotRequired: PropTypes.func,\n onThreeDSStepUpAuthSuccess: PropTypes.func,\n onThreeDSStepUpAuthFailure: PropTypes.func,\n onThreeDSFailure: PropTypes.func,\n onRef: PropTypes.func,\n toggleSpinner: PropTypes.func,\n};\n\nexport default ThreeDSContainer;\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, { Component } from 'react';\nimport templateData, { localsMessages } from '../../utility/getTemplateData';\nimport {\n handleGuestCountryChange,\n hideSpinnerOverlay,\n showSpinnerOverlay,\n} from '../../utility/helper';\nimport * as FPT from '../../utility/fpt';\nimport * as DonateAppActions from '../../actions/AppActions';\nimport { getInitialData } from '../../utility/formator';\nimport AppStore from '../../stores/AppStore';\nimport { getParametersFromUrl } from '../../utility/queryStringHelper';\nimport PropTypes from 'prop-types';\nimport { startCustomCPLTrackingForConfirmationPage } from '../../utility/cpl';\nimport {\n fetcher,\n scrollElementIntoView,\n objectOrArrayToQueryString,\n} from '../../utility/domUtils';\nimport isEmpty from 'lodash/isEmpty';\n\nconst initialData = getInitialData();\nconst serviceErrorMessages = localsMessages('errors/service');\n\nconst ERROR_ELEMENT_SELECTOR = [\n '.vx_has-error-with-message',\n '.service_error_holder',\n].join();\n\nfunction withDonate(WrappedComponent) {\n return class extends Component {\n static propTypes = {\n history: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n this.country = initialData.selectedCountry;\n }\n\n handleCountryChange = (country) => {\n this.toggleSpinner(true);\n\n if (country !== this.country) {\n DonateAppActions.changeCountry({\n country: country,\n });\n this.country = country;\n\n // Beacons for country change\n FPT.trackLinkClickWithData('changeCountry', { country: country });\n\n let { token, signUp = false } = templateData;\n let url = signUp\n ? `/donate?token=${token}&signup=true&country.x=${country}&locale.x=${country}`\n : `/donate?token=${token}&country.x=${country}&locale.x=${country}&countryChange=true&clientState=/donate/guest?token=${token}`;\n\n handleGuestCountryChange(url);\n }\n };\n\n /*\n * showing and hiding spinner\n */\n toggleSpinner = (isSpinner = false) => {\n if (isSpinner) {\n showSpinnerOverlay();\n } else {\n hideSpinnerOverlay();\n }\n };\n\n // handles scrolling screen to the error\n handleScrollToError = () => {\n scrollElementIntoView(ERROR_ELEMENT_SELECTOR);\n return;\n };\n\n getDonateGuestUrl = () => {\n const { token, country, language } = templateData;\n\n let url = `/donate/guest?token=${token}`;\n if (country) {\n url = url + `&country.x=${country}`;\n }\n\n if (country && language) {\n url = url + `&locale.x=${country}_${language}`;\n }\n\n return url;\n };\n\n getFormData() {\n return AppStore.getFormData();\n }\n\n saveFormData(formData) {\n DonateAppActions.saveFormData(formData);\n }\n\n showErrorOnLoad() {\n const url = window.location.href;\n let params = getParametersFromUrl(url);\n\n if (params.showErrorOnLoad) {\n if (params.showErrorOnLoad === 'fulfillment') {\n // TODO: update error code to the actual fullfilment error code\n let errorCode = 'WSM_TRANSACTION_FAILED_DUE_TO_INVALID_CARD_DATA';\n let errorMsgs = [\n {\n key: 0,\n value: serviceErrorMessages[errorCode],\n },\n ];\n\n // adding delay to wait for the dispatcher to get registered in ServerErrors\n setTimeout(\n () =>\n DonateAppActions.updateServerErrors({ serverErrors: errorMsgs }),\n 250\n );\n }\n // delete params.showErrorOnLoad;\n\n // const query = $.param(params);\n // const cleanedUrl = `/donate/guest/?${query}`;\n // window.history.replaceState({}, document.title, cleanedUrl);\n }\n }\n\n doFulfilment = (params = {}) => {\n const { securityCode } = params;\n this.toggleSpinner(true);\n\n fetcher('/donate/guest/fullfilment', {\n method: 'POST',\n body: JSON.stringify({\n note: AppStore.getDonationNote(),\n fundingOptionId: AppStore.getFundingOptions().id,\n email: AppStore.getEmail(),\n billingAddress: AppStore.getBillingAddress(),\n giftAidItFlag: AppStore.getGiftaidItFlagStatus() || false,\n card: { securityCode },\n }),\n })\n .then((response) => response.json())\n .then((result) => {\n if (result.code === 'WSM_PAYMENT_DENIED') {\n this.toggleSpinner(false);\n this.props.history.push('/donate/error/payment');\n return;\n } else if (result.status === 'redirect') {\n this.toggleSpinner(false);\n window.location.href = result.url;\n return;\n } else if (\n result.code === 'WSM_TRANSACTION_FAILED_DUE_TO_INVALID_CARD_DATA'\n ) {\n // fulfillment error\n const { token, country } = templateData;\n\n let clientState = encodeURIComponent(\n `/donate/guest?token=${token}&showErrorOnLoad=fulfillment`\n );\n window.location.href = `/donate?token=${token}&country.x=${country}&locale.x=${country}&clientState=${clientState}`;\n return;\n } else if (result.data && result.data.confirmationData) {\n startCustomCPLTrackingForConfirmationPage();\n this.toggleSpinner(false);\n const { token } = templateData;\n const queryParams = objectOrArrayToQueryString({ token });\n let confirmationData = result.data.confirmationData || {};\n DonateAppActions.updateConfirmation({\n confirmation: confirmationData,\n });\n if (confirmationData.isOfacPending) {\n this.props.history.push(`/donate/guest/pending?${queryParams}`);\n } else {\n this.props.history.push(\n `/donate/guest/confirmation?${queryParams}`\n );\n }\n } else {\n this.toggleSpinner(false);\n this.props.history.push('/donate/error/payment');\n }\n })\n .catch(() => {\n this.toggleSpinner(false);\n this.props.history.push('/donate/error/payment');\n });\n };\n\n createOrder = (params) => {\n const token = templateData.token;\n\n fetcher(`/donate/orders?dtoken=${token}`, {\n method: 'POST',\n body: JSON.stringify(params),\n })\n .then((response) => response.json())\n .then((result) => {\n console.log('result ', result);\n\n if (!isEmpty(result.cartUrl)) {\n window.location.href = result.cartUrl;\n } else {\n this.props.history.push('/donate/error/payment');\n }\n })\n .catch(() => {\n this.toggleSpinner(false);\n this.props.history.push('/donate/error/payment');\n });\n };\n\n captureOrder = (orderToken, donateToken, payerID) => {\n return fetcher(\n `/donate/orders/${orderToken}/capture?dtoken=${donateToken}&PayerID=${payerID}`,\n {\n method: 'POST',\n }\n );\n };\n\n render() {\n return (\n \n );\n }\n };\n}\n\nexport default withDonate;\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};\n\nconst BannerHeader = ({ type, children }) => {\n return
{children}
;\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\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","/**\n * Card Utilities\n * For use with linking a card\n *\n * - get card type [visa, mastercard, amex, discover, maestro, unionpay] based on the card number\n */\nimport { localsMessages } from './getTemplateData';\nimport _get from 'lodash/get';\n\nconst fundingTypes = localsMessages('common/fundingTypes');\n\nexport const defaultCardSpec = {\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\n/**\n * Get the card type based on the card number\n * @param {Object} cardSpecs - the card specifications based on user's locale\n * @param {String} cardNumber - the valid card number (numbers only)\n * @return {Object} cardType - the card type specs for a specific card\n */\nexport function getSpecificCardSpec({ cardTypes }, cardNumber) {\n cardNumber = cardNumber.replace(/\\D+/g, '');\n\n for (let card in cardTypes) {\n let cardSpec = cardTypes[card];\n if (\n new RegExp(`^${cardSpec.fields.ccNumber.autodetect}$`).test(cardNumber)\n ) {\n return cardSpec;\n }\n }\n return defaultCardSpec;\n}\n\nconst PAYMENT_CARDS = {\n VISA: 'VISA',\n MASTERCARD: 'MASTERCARD',\n MASTER_CARD: 'MASTER_CARD',\n MAESTRO: 'MAESTRO',\n AMEX: 'AMEX',\n DISCOVER: 'DISCOVER',\n JCB: 'JCB',\n CHINA_UNION_PAY: 'CHINA_UNION_PAY',\n};\n\nexport function getPaymentCardNetwork(source) {\n switch (source.network) {\n case PAYMENT_CARDS.VISA:\n return _get(fundingTypes, 'fundingType.visa');\n case PAYMENT_CARDS.MASTERCARD:\n case PAYMENT_CARDS.MASTER_CARD:\n return _get(fundingTypes, 'fundingType.mastercard');\n case PAYMENT_CARDS.MAESTRO:\n return _get(fundingTypes, 'fundingType.maestro');\n case PAYMENT_CARDS.AMEX:\n return _get(fundingTypes, 'fundingType.amex');\n case PAYMENT_CARDS.DISCOVER:\n return _get(fundingTypes, 'fundingType.discover');\n case PAYMENT_CARDS.CHINA_UNION_PAY:\n return _get(fundingTypes, 'fundingType.china_union_pay');\n default:\n return source.network;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@paypalcorp/pp-react';\n\nexport default function NoteFieldError(props) {\n const errorText = props.errorText;\n\n if (!errorText) {\n return null;\n }\n return (\n
\n \n \n \n {errorText}\n \n \n
\n );\n}\n\nNoteFieldError.propTypes = {\n errorText: PropTypes.string,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport templateData, { localsMessages } from '../utility/getTemplateData';\nimport * as AppActions from '../actions/AppActions';\nimport AppStore from '../stores/AppStore';\nimport { addClass, removeClass } from '../utility/domUtils';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\nimport isEmpty from 'lodash/isEmpty';\nimport * as FPT from '../utility/fpt';\nimport { EVENT_NAME } from '../utility/constants';\nimport { IconButton, TextArea, Divider } from '@paypalcorp/pp-react';\nimport NoteFieldError from './NoteFieldError';\n\nlet messages = localsMessages('common/note');\nconst MAX_CHAR_LIMIT = 250;\n\nfunction NoteComponent(props) {\n let { label = '', error: { lengthLimit = '' } = {} } = messages.note;\n\n let providedLabel = label;\n if (templateData.charityNoteEnabled && templateData.charityNoteLabel) {\n providedLabel = templateData.charityNoteLabel;\n }\n\n if (props.label) {\n providedLabel = props.label;\n }\n\n const [donationNote, setDonationNote] = useState(\n AppStore.getDonationNote() || templateData.donationNote || ''\n );\n const initialNoteLabel = isEmpty(donationNote) ? providedLabel : donationNote;\n\n const [showLabel, setShowLabel] = useState(true);\n const [showError, setShowError] = useState(false);\n const [noteLabel, setNoteLabel] = useState(initialNoteLabel);\n const textAreaEl = useRef(null);\n\n useEffect(() => {\n if (!showLabel && !isEmpty(textAreaEl)) {\n textAreaEl.current.focus();\n }\n }, [showLabel]);\n\n const directionality = templateData.contextLocalityDir;\n\n const handleClick = () => {\n if (isExternalFlow()) {\n FPT.trackEventName(EVENT_NAME.DW_GIVING_DONATE_SETUP_COMMENT_PRESSED);\n }\n FPT.trackDonationAmount();\n FPT.trackLinkClick('note_pad');\n setShowLabel(false);\n };\n\n const handleBlur = (event) => {\n const note = event.target.value;\n\n // Remove all whitespaces\n if (!isEmpty(note) && !isEmpty(note.trim())) {\n AppActions.changeNote({ note });\n setNoteLabel(note);\n } else {\n AppActions.changeNote({ note: '' });\n setNoteLabel(providedLabel);\n }\n setShowLabel(true);\n };\n\n const showNoteFieldError = () => {\n setShowError(true);\n };\n\n const hideNoteFieldError = () => {\n setShowError(false);\n };\n\n const handleOnChange = (event) => {\n const value = event.target.value;\n setDonationNote(value);\n\n if (value && value.length >= MAX_CHAR_LIMIT) {\n addClass('.note_wrap', ['animated', 'shake']);\n setTimeout(() => {\n removeClass('.note_wrap', ['animated', 'shake']);\n }, 1000);\n showNoteFieldError();\n } else {\n hideNoteFieldError();\n }\n };\n\n return (\n
\n \n {showLabel ? (\n \n ) : (\n
\n \n
\n )}\n\n {showError && showLabel && }\n
\n {isExternalFlow() && }\n \n );\n}\n\nNoteComponent.propTypes = {\n label: PropTypes.string,\n};\n\nexport default NoteComponent;\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, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport * as FPT from '../../utility/fpt';\nimport { Icon } from '@paypalcorp/pp-react-icons';\nimport { grey700 } from '@paypalcorp/pp-react-colors';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport { EVENT_NAME, SCREEN_NAME } from '../../utility/constants';\n\nconst STYLES = {\n error: {\n color: grey700,\n fontSize: '13px',\n },\n criticalIcon: {\n color: '#D20000',\n position: 'relative',\n fontSize: 'unset',\n marginRight: '5px',\n },\n};\n\n/**\n * Component for displaying amount validation error message\n */\nclass AmountValidationError extends Component {\n componentDidMount() {\n const { errorSourceField, errorString, errorCode } = this.props;\n const errorObj = {\n message: errorString,\n fieldId: errorSourceField,\n code: errorCode || 'DONATION_AMOUNT_VALIDATION_ERROR',\n };\n FPT.trackDonationAmount();\n if (isExternalFlow()) {\n errorObj.event_name =\n EVENT_NAME.DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED;\n errorObj.screen = window.fpti?.page?.includes('landing')\n ? SCREEN_NAME.DW_GIVING_DONATE_SETUP_SCREEN\n : SCREEN_NAME.DW_GIVING_DONATE_GUEST_FORM_SCREEN;\n errorObj.error_desc = errorString;\n errorObj.error_code = errorCode;\n }\n FPT.trackErrorWithData(errorObj);\n }\n render() {\n const { errorString } = this.props;\n\n if (!errorString) {\n return null;\n }\n\n return (\n \n \n \n {errorString}\n \n \n );\n }\n}\n\nAmountValidationError.propTypes = {\n errorString: PropTypes.string,\n errorSourceField: PropTypes.string,\n errorCode: PropTypes.string,\n donationAmount: PropTypes.string,\n};\n\nexport default AmountValidationError;\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';\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: isGN() || isGNC(),\n context_gn_wrapper: isGN() || isGNC(),\n donate_wrapper: !(isGN() || isGNC()),\n confirmation: !(isGN() || isGNC()),\n },\n { mobile_view: isMobileOrInContext() },\n { ppf: isPPFundraising() }\n );\n }\n\n return (\n
\n {isSignUp && }\n
\n {isExternalFlow && }\n
{illustration}
\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';\n\nconst ConfirmationMessage = ({\n yourDonation,\n giftaidFlag,\n extraDonateAmount,\n giftAid,\n}) => {\n useEffect(() => {\n const confirmationHeader = document.getElementsByClassName(\n 'confirmation_header'\n );\n confirmationHeader[0].focus();\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 } = {}\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 const 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 });\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","function setDonateLoaded() {\n document.getElementsByTagName('body')[0].setAttribute('donate-loaded', true);\n}\n\nsetDonateLoaded();\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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../utility/getTemplateData';\nimport { Button } from '@paypalcorp/pp-react';\nconst messages = localsMessages('common/nextButton');\n\nclass NextButtonComponent extends React.Component {\n render() {\n const buttonnext = messages.button && messages.button.next;\n\n return (\n
\n \n {buttonnext}\n \n
\n );\n }\n}\n\nNextButtonComponent.propTypes = {\n label: PropTypes.string,\n disabled: PropTypes.bool,\n handleNext: PropTypes.func,\n};\n\nexport default NextButtonComponent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { Button } from '@paypalcorp/pp-react';\nconst messages = localsMessages('common/oneTouch');\n\nclass OneTouchNextButton extends React.Component {\n render() {\n const buttonnext = messages.button && messages.button.next;\n\n return (\n
\n \n {buttonnext}\n \n
\n );\n }\n}\n\nOneTouchNextButton.propTypes = {\n label: PropTypes.string,\n disabled: PropTypes.bool,\n handleNext: PropTypes.func,\n};\n\nexport default OneTouchNextButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../utility/getTemplateData';\nimport { Button } from '@paypalcorp/pp-react';\nconst messages = localsMessages('guest/guestButton');\n\nclass GuestButton extends React.Component {\n render() {\n const { label: { debitorcredit = '' } = {} } = messages;\n return (\n
\n \n {debitorcredit}\n \n
\n );\n }\n}\n\nGuestButton.propTypes = {\n label: PropTypes.string,\n disabled: PropTypes.bool,\n handleGuest: PropTypes.func,\n};\n\nexport default GuestButton;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { DropdownMenu } from '@paypalcorp/pp-react-dropdown-menu';\nimport * as FPT from '../../utility/fpt';\nimport * as AppActions from '../../actions/AppActions';\nimport appStore from '../../stores/AppStore';\nconst messages = localsMessages('common/programs');\n\nconst Programs = ({ programNames, isDisabled }) => {\n const [selectedIdx, handleSelect] = useState(0);\n\n const getProgramOptions = () => {\n const options = [];\n programNames.forEach((programName) => {\n options.push({\n primaryText: programName,\n });\n });\n\n return options;\n };\n\n const updateProgramId = (index) => {\n handleSelect(index);\n const selectedProgram = index === -1 ? '' : programNames[index];\n AppActions.updateSelectedProgram(selectedProgram);\n FPT.trackLinkClickWithData('campaignSelected', {\n campaign: selectedProgram,\n });\n };\n\n useEffect(() => {\n let programOption = getProgramOptions().findIndex(\n (program) => program.primaryText === appStore.getSelectedProgram()\n );\n programOption = programOption === -1 ? 0 : programOption;\n handleSelect(programOption);\n AppActions.updateSelectedProgram(programNames[programOption]);\n }, []);\n\n return (\n \n );\n};\n\nPrograms.propTypes = {\n programNames: PropTypes.array,\n isDisabled: PropTypes.bool,\n};\n\nexport default Programs;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Programs from './Programs';\n\nclass ProgramsContainer extends Component {\n static propTypes = {\n programNames: PropTypes.array,\n };\n\n render() {\n return (\n
\n
\n \n
\n
\n );\n }\n}\nexport default ProgramsContainer;\n","import React, { Component } from 'react';\nimport { Button, Modal, HeadingText, BodyText } from '@paypalcorp/pp-react';\nimport TemplateData, { localsMessages } from '../../utility/getTemplateData';\nimport { sanitize } from '../../utility/domUtils';\nimport PropTypes from 'prop-types';\nimport { appendCdnHostName } from '../../utility/geoUtils';\nlet texts = localsMessages('common/recurring-checkbox');\n\nconst orgname = TemplateData.donationName ? TemplateData.donationName : '';\n\nexport class RecurringOverlay extends Component {\n handleClose = () => {\n this.props.closeRecurringOverlay();\n };\n\n noThanks_closeModal = (event) => {\n this.props.onMakeOneTimeDonation();\n };\n\n onContinue = (event) => {\n this.props.onContinue();\n };\n\n render() {\n let {\n rp: {\n signupHeader,\n dialogp1,\n dialogp2,\n dialogp3,\n continueBtn,\n noThanksBtn,\n } = {},\n } = texts || {};\n\n dialogp1 = dialogp1 && dialogp1.replace('{orgName}', sanitize(orgname));\n\n return (\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n {signupHeader}\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n {dialogp1}\n
\n
\n
\n {dialogp2}\n
\n
\n
\n {dialogp3}\n
\n
\n
\n
\n\n
\n
\n
\n \n
\n
\n\n
\n
\n \n {noThanksBtn}\n \n
\n
\n
\n
\n
\n \n );\n }\n}\n\nRecurringOverlay.propTypes = {\n closeRecurringOverlay: PropTypes.func,\n onMakeOneTimeDonation: PropTypes.func,\n onContinue: PropTypes.func,\n isOpen: PropTypes.bool,\n};\n\nexport default RecurringOverlay;\n","import React from 'react';\nimport { CaptionText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport { localsMessages } from '../utility/getTemplateData';\n\nconst messages = localsMessages('buttons/partner') || {};\n\nconst styles = StyleSheet.create({\n disclaimerWrapper: {\n maxWidth: 350,\n margin: 'auto',\n '.ppvx_accordion__row': { border: 'none' },\n },\n disclaimer: {\n margin: 'auto',\n },\n disclaimerCaptionText: {\n marginTop: 12,\n color: '#687173',\n textAlign: 'center',\n },\n});\n\nexport default function NotTaxDeductibleLegalText() {\n return (\n
\n \n {messages.landing.mayNotBeTaxDeductible}\n \n
\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as AppActions from '../../actions/AppActions';\nimport getContent from 'pp-react-l10n';\nimport { Checkbox } from '@paypalcorp/pp-react';\n\nconst CoverFeeCheckbox = ({\n handleCoverFeeChange,\n optInStatus,\n formatedFeeAmount,\n isDisabled,\n}) => {\n const handleChange = (event) => {\n const isChecked = event.target.checked,\n checkboxStatus = isChecked ? 'checked' : 'unchecked';\n\n AppActions.changeCoverFee({\n coverFee: checkboxStatus,\n });\n\n handleCoverFeeChange(isChecked);\n };\n\n return (\n
\n \n
\n );\n};\n\nCoverFeeCheckbox.propTypes = {\n handleCoverFeeChange: PropTypes.func,\n optInStatus: PropTypes.bool,\n formatedFeeAmount: PropTypes.string,\n isDisabled: PropTypes.bool,\n};\n\nexport default CoverFeeCheckbox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as AppActions from '../../actions/AppActions';\nimport { Checkbox, Tooltip } from '@paypalcorp/pp-react';\nimport * as FPT from '../../utility/fpt';\nimport { EVENT_NAME } from '../../utility/constants';\n\nconst AnonymousCheckbox = ({\n content,\n optInStatus,\n handleAnonymousDonationChange,\n}) => {\n const handleChange = (event) => {\n const isChecked = event.target.checked,\n checkboxStatus = isChecked ? 'checked' : 'unchecked';\n\n AppActions.changeAnonymousStatus({\n anonymousStatus: checkboxStatus,\n });\n\n handleAnonymousDonationChange(isChecked);\n };\n\n const trackTooltipOpen = () => {\n FPT.trackDonationAmount();\n FPT.trackLinkClickWithData('anonymousTooltip', {\n event_name: EVENT_NAME.DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED,\n });\n };\n\n return (\n \n \n )\n }\n />\n \n );\n};\n\nAnonymousCheckbox.propTypes = {\n content: PropTypes.object,\n optInStatus: PropTypes.bool,\n handleAnonymousDonationChange: PropTypes.func,\n};\n\nexport default AnonymousCheckbox;\n","import React from 'react';\nimport '../../utility/csrf';\nimport AmountWrapper from '../../components/amountWrapper';\nimport NextButton from '../../components/nextButton';\nimport OneTouchNextButton from '../../components/landing/OneTouchNextButton';\nimport CancelAndReturn from '../../components/cancelAndReturn';\nimport GuestButton from '../../components/guestButton';\nimport RecurringCheckBox from '../../components/recurring-checkbox/recurring-checkbox';\nimport UserDetailsBanner from '../../components/onetouch/UserDetailsBanner';\nimport OfferDetail from '../../components/offerDetail';\nimport Disclaimer from '../../components/Disclaimer';\nimport VoucherFlowDisclaimer from '../../components/voucherFlowDisclaimer';\nimport CloseButton from '../../components/CloseButton';\nimport ReceiverEligibilityErrorTile from '../error/receiverEligibilityError';\nimport {\n isInContext,\n isMobileOrInContext,\n} from '../../utility/inContextDonation';\nimport DonateHeader from '../../components/common/DonateHeader';\n\nimport templateData from '../../utility/getTemplateData';\nimport {\n hasPersonalizedMessages,\n getPersonalizedMessages,\n} from '../../utility/personalizedMessages';\n\nimport AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport * as cpl from '../../utility/cpl';\nimport { GN_CONTENT_TOUCHPOINT } from '../../utility/constants';\n\nimport {\n handleLogIn,\n addShake,\n handleTokenReuse,\n hideSpinnerOverlay,\n getPPCCStatus,\n showSpinnerOverlay,\n} from '../../utility/helper';\nimport {\n isAuthenticatedUser,\n shouldShowUserBanner,\n isLoggedInUser,\n} from '../../utility/authUtils';\nimport * as amountUtils from '../../components/amount/amountUtils';\n\nimport { withRouter } from 'react-router-dom';\nimport * as FPT from '../../utility/fpt';\nimport {\n localsMessages,\n isOldButtonFactory,\n hasPartnerSource,\n} from '../../utility/getTemplateData';\nimport { loadBodyMovin } from '../../utility/lazyLoader';\nimport _isEmpty from 'lodash/isEmpty';\nimport ProgramsContainer from '../../components/programs/ProgramsContainer';\nimport RecurringOverlay from '../../components/recurring-checkbox/RecurringOverlay';\nimport _get from 'lodash/get';\nimport NotTaxDeductibleLegalText from '../../components/NotTaxDeductibleLegalText';\nimport { getParameterByName } from '../../utility/queryStringHelper';\nimport CoverFeeCheckbox from '../../components/coverFee/coverFeeCheckbox';\nimport {\n computeAmountAfterFee,\n isOptInCoverFee,\n restoreDonationAmount,\n updateDonationAmount,\n setFeeAmountInStore,\n} from '../../components/coverFee/feeUtils';\nimport { normalizeNumber } from '../../utility/formator';\nimport withDonate from '../../components/guest/WithDonate';\nimport AnonymousCheckbox from '../../components/anonymousDonation/anonymousCheckbox';\nimport {\n getPersonalizedAnonymousContent,\n getPersonalizedNoteToPayeeLabel,\n isCheckoutRail,\n isExternalFlow,\n prepareOrderParams,\n} from '../../utility/externalIntegrationUtils';\nimport NoteComponent from '../../components/note';\nimport isEmpty from 'lodash/isEmpty';\nimport { EVENT_NAME } from '../../utility/constants';\n\nconst messages = localsMessages('common/amount');\nconst errorMessages = localsMessages('errors/landingerror');\nconst MERCHANT_PPCC_CONFIRMED_STATUS = 'CONFIRMED';\n\nclass LandingPageComponent extends React.Component {\n constructor(props) {\n super(props);\n const optInStatus = AppStore.getCoverFeeOptInStatus();\n const anonymousStatusInStore = AppStore.getAnonymousStatus();\n const anonymousOptInStatus = !isEmpty(anonymousStatusInStore)\n ? anonymousStatusInStore === 'checked'\n : templateData.anonymousStatus || false;\n\n this.state = {\n hasLogo: templateData.hasLogo,\n subHeaderLabel: templateData.donationName,\n orgName: templateData.charityName,\n donationId: templateData.donationId,\n guestRedirectUrl: templateData.guestRedirectUrl,\n donateDisabled: false,\n recurringEnabled: templateData.recurringEnabled,\n recurringStatus: templateData.recurringStatus === 'checked',\n recurringHelpText: '',\n recurringLabel: 'Make this a monthly donation',\n rpContinue: false,\n isAuthenticated: isAuthenticatedUser(),\n memberMandatory: templateData.memberMandatory,\n programNames: templateData.donateContext.program_names,\n isRecurringOverlayOpen: false,\n isVoucherFlow: templateData.isVoucherFlow,\n offerProgram: templateData.offerProgram,\n coverFeeEnabled: templateData.coverFeeEnabled,\n coverFeeOptInStatus:\n optInStatus !== undefined\n ? optInStatus === 'checked'\n : templateData.feePayer === 'consumer',\n feeAmount: '',\n formatedFeeAmount: '',\n anonymousEnabled: templateData.anonymousEnabled,\n anonymousOptInStatus,\n hasDisclaimer: hasPersonalizedMessages(GN_CONTENT_TOUCHPOINT),\n };\n }\n\n getPPCCConfirmation() {\n return getPPCCStatus() === MERCHANT_PPCC_CONFIRMED_STATUS;\n }\n\n componentDidMount() {\n window.onload = function () {\n setTimeout(function () {\n cpl.logPerformance({\n action: 'landing_page_loaded',\n uicomp: 'landingPageComponent',\n uitype: 'page',\n page: 'main:donate:wps::landing:landingPageComponent:web::',\n });\n }, 0);\n };\n\n AppActions.updateCurrentPage({ currentPage: 'landing' });\n\n // Do not hide spinner if coming to page with already completed payment token\n if (templateData.paymentStatus !== 'complete') {\n hideSpinnerOverlay();\n }\n\n // Checking for recurring status if coming from guest page\n if (AppStore.getDonationRecurring() === 'checked') {\n this.setState({ recurringStatus: true });\n }\n\n // Checking for cover fee preference if coming from guest page\n if (isOptInCoverFee()) {\n this.setState({ coverFeeOptInStatus: true });\n restoreDonationAmount();\n }\n\n setFeeAmountInStore();\n this.updateFeeAmount();\n\n // Pre-load bodyMovin\n if (templateData.recurringEnabled) {\n loadBodyMovin();\n }\n\n this.addTracking();\n\n if (templateData.anonymousEnabled) {\n FPT.trackAnonymousData();\n }\n\n if (!isLoggedInUser()) {\n AppActions.showLanguageSelector(true);\n }\n\n // Register for App Dispatcher Messages\n this.registerAppDispatcherMessages();\n }\n\n addTracking() {\n FPT.trackIntegrationType();\n FPT.trackNoteData({ noteFieldDisplayed: this.shouldShowNote() });\n FPT.trackAmountEditability();\n\n if (isExternalFlow()) {\n FPT.trackEventName(EVENT_NAME.DW_GIVING_DONATE_SETUP_SCREEN_SHOWN);\n FPT.trackExternalFlowData();\n }\n }\n\n componentWillUnmount() {\n AppDispatcher.unregister(this.dispatcherMessages);\n }\n\n registerAppDispatcherMessages() {\n this.dispatcherMessages = AppDispatcher.register((payload) => {\n if (payload.action && payload.action.actionType === 'CHANGE_RECURRING') {\n const checked = _get(payload.action, 'item', 'unchecked');\n this.setState({\n recurringStatus: checked === 'checked',\n });\n }\n });\n }\n\n getFPTDATA = () => {\n return {\n amount: AppStore.getDonationAmount(),\n code: AppStore.getDonationCode(),\n symbol: AppStore.getDonationSymbol(),\n };\n };\n\n validateAmountAndNavigateToGuestPage = () => {\n let donationAmount = AppStore.getDonationAmount();\n\n if (amountUtils.isAmountGreaterThanZero(donationAmount)) {\n this.props.history.push(`/donate/guest?token=${templateData.token}`);\n } else {\n addShake();\n }\n };\n\n handleGuest = (event) => {\n event.preventDefault();\n AppActions.changeRecurringModalStatus({\n recurringModalStatus: 'notclosed',\n });\n let donationAmount = this.getDonationAmount();\n if (!this.validateDonationAmount()) {\n return;\n }\n\n if (templateData.coverFeeEnabled) {\n FPT.trackFeeData();\n }\n if (templateData.anonymousEnabled) {\n FPT.trackAnonymousData();\n }\n if (isExternalFlow()) {\n FPT.trackNoteData();\n }\n\n if (amountUtils.isAmountGreaterThanZero(donationAmount)) {\n const isRecurringChecked = this.state.recurringStatus;\n\n if (isRecurringChecked && !this.state.memberMandatory) {\n this.openRecurringOverlay();\n } else {\n this.validateAmountAndNavigateToGuestPage();\n }\n\n FPT.trackDonationAmount();\n // Tracking click event with data. 'Pay by card with amount'\n if (isExternalFlow()) {\n FPT.trackLinkClickWithData('donateWithCard', {\n event_name:\n EVENT_NAME.DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED,\n });\n } else {\n FPT.trackLinkClick('donateWithCard');\n }\n\n // Start CPL tracking to get measurements to load guest form\n window.PAYPAL.analytics.startCPLTracking({\n page: 'main:donate:wps:guest:guestform:guestFormComponent:web::',\n action: 'guest_form_loaded',\n uicomp: 'guestForm',\n uitype: 'component',\n });\n }\n };\n\n handleNext = (event) => {\n event.preventDefault();\n if (!this.validateDonationAmount()) {\n return;\n }\n\n let donationAmount = this.getDonationAmount(),\n normalizedAmount = normalizeNumber(donationAmount);\n\n if (templateData.coverFeeEnabled) {\n FPT.trackFeeData();\n }\n if (templateData.anonymousEnabled) {\n FPT.trackAnonymousData();\n }\n if (isExternalFlow()) {\n FPT.trackNoteData();\n }\n\n if (amountUtils.isAmountGreaterThanZero(donationAmount)) {\n if (isExternalFlow()) {\n FPT.trackDonationAmount();\n FPT.trackLinkClickWithData('donateWithPayPal', {\n event_name: EVENT_NAME.DW_GIVING_DONATE_SETUP_NEXT_PRESSED,\n });\n } else {\n FPT.trackLinkClick('donateWithPayPal');\n }\n }\n FPT.addDonationAmount(normalizedAmount, window.fpti.pgrp, window.fpti.page);\n\n handleLogIn();\n };\n\n handleNextForCheckout = (event) => {\n event.preventDefault();\n if (!this.validateDonationAmount()) {\n return;\n }\n\n let donationAmount = AppStore.getDonationAmount();\n\n FPT.trackNoteData();\n if (templateData.anonymousEnabled) {\n FPT.trackAnonymousData();\n }\n FPT.addDonationAmount(donationAmount, window.fpti.pgrp, window.fpti.page);\n FPT.trackLinkClickWithData('donateViaCheckout', {\n event_name: EVENT_NAME.DW_GIVING_DONATE_SETUP_NEXT_PRESSED,\n });\n\n showSpinnerOverlay();\n const orderParams = prepareOrderParams();\n this.props.createOrder(orderParams);\n };\n\n getDonationAmount = () => {\n let donationAmount = AppStore.getDonationAmount();\n\n if (isOptInCoverFee()) {\n const feeAmount = AppStore.getFeeAmount();\n // backup user's original entered amount in store\n AppActions.changeAmountBeforeFee({ amountBeforeFee: donationAmount });\n\n if (feeAmount) {\n donationAmount = computeAmountAfterFee(donationAmount, feeAmount);\n updateDonationAmount(donationAmount);\n }\n }\n\n return donationAmount;\n };\n\n hideValidationError = () => {\n this.setState({\n showValidationError: false,\n });\n };\n\n validateDonationAmount = () => {\n let validationResult = amountUtils.validateMinimumDonationAmount(messages);\n if (validationResult?.showValidationError) {\n this.setState(validationResult);\n addShake();\n return false;\n }\n\n validationResult = amountUtils.validateMaximumDonationAmount();\n if (validationResult?.showValidationError) {\n this.setState(validationResult);\n addShake();\n return false;\n }\n\n this.setState(validationResult);\n return true;\n };\n\n handleAmountFocus = () => {\n if (this.state.showValidationError) {\n this.hideValidationError();\n }\n };\n\n updateConversionSataus = (status = false) => {\n this.setState({ donateDisabled: status });\n };\n\n handleRecurringChange = (status = false) => {\n this.setState({ recurringStatus: status });\n console.log('status ', status);\n };\n\n handleRecurringOverlayContinue = () => {\n this.setState({ rpContinue: true });\n this.validateAmountAndNavigateToGuestPage();\n };\n\n handleRecurringOverlayMakeOneTimeDonation = () => {\n AppActions.changeRecurring({\n recurring: 'unchecked',\n });\n this.validateAmountAndNavigateToGuestPage();\n };\n\n handleAnonymousDonationChange = (status = false) => {\n this.setState({ anonymousOptInStatus: status });\n FPT.trackDonationAmount();\n FPT.trackLinkClickWithData('anonymous_checkbox', {\n checkbox: status,\n nonanonymous: !status,\n event_name: status\n ? EVENT_NAME.DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED\n : EVENT_NAME.DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED,\n });\n };\n\n handleCoverFeeChange = (status = false) => {\n this.setState({ coverFeeOptInStatus: status });\n FPT.trackFeeData();\n FPT.trackLinkClickWithData('cover_fee_checkbox', { checkbox: status });\n };\n\n updateFeeAmount = () => {\n this.setState({\n feeAmount: AppStore.getFeeAmount(),\n formatedFeeAmount: AppStore.getFormatedFeeAmount(),\n });\n };\n\n openRecurringOverlay = () => {\n this.setState({\n isRecurringOverlayOpen: true,\n });\n };\n\n closeRecurringOverlay = () => {\n this.setState({\n isRecurringOverlayOpen: false,\n });\n };\n\n renderProgramsDropdown = () => {\n if (isOldButtonFactory() || _isEmpty(this.state.programNames)) {\n return null;\n }\n\n return ;\n };\n\n renderDonateButtons = () => {\n if (isCheckoutRail()) {\n return (\n \n );\n }\n\n if (this.state.isAuthenticated) {\n return (\n \n );\n }\n\n return (\n
\n
\n \n
\n \n
\n );\n };\n\n /**\n * Should show note on landing page when charityNote is enabled\n * and recurring is disabled for client flows\n * @return {Boolean} true to show note field\n */\n shouldShowNote = () => {\n return (\n templateData.charityNoteEnabled &&\n !this.state.recurringStatus &&\n isExternalFlow()\n );\n };\n\n getPersonalizedContent = () => {\n if (isExternalFlow()) {\n const personalizedMessages = getPersonalizedMessages(\n GN_CONTENT_TOUCHPOINT\n );\n return personalizedMessages?.disclaimer;\n }\n };\n\n landingClass = () => {\n let className = '';\n if (isExternalFlow()) {\n className = 'gn_donate_wrapper ';\n } else {\n className = 'donate_wrapper ';\n }\n if (isInContext()) {\n className += 'context_gn_wrapper ';\n }\n if (shouldShowUserBanner()) {\n className += 'user-banner ';\n }\n if (isMobileOrInContext()) {\n className += 'mobile_view ';\n }\n\n return className;\n };\n\n render() {\n const showUserBanner = shouldShowUserBanner();\n\n if (!templateData.receiverCountryEligible) {\n return (\n \n \n \n );\n }\n\n return (\n
\n
\n {showUserBanner ? (\n \n ) : null}\n {isExternalFlow() && }\n \n
\n \n {this.renderProgramsDropdown()}\n {this.state.recurringEnabled && (\n \n )}\n {this.state.anonymousEnabled && (\n \n )}\n {this.shouldShowNote() && (\n \n )}\n {this.state.coverFeeEnabled && (\n \n )}\n {this.state.isVoucherFlow && (\n \n )}\n {this.renderDonateButtons()}\n {this.state.isVoucherFlow && }\n {hasPartnerSource() &&\n !this.getPPCCConfirmation() &&\n !this.state.isVoucherFlow && }\n \n {this.state.hasDisclaimer && (\n \n \n
\n )}\n
\n
\n \n \n );\n }\n}\n\nconst LandingPage = withRouter(withDonate(LandingPageComponent));\n\nclass Landing extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n displayLanding: !templateData.currentState,\n };\n }\n\n /**\n * For DIRECT(nonWebscr) and POST integrations, there will not be a token in the URL\n * This will break page refresh.\n * Hence adding token here\n */\n addTokenToUrlIfMissing() {\n const token = getParameterByName('token');\n const business = getParameterByName('business');\n const hostedButtonId = getParameterByName('hosted_button_id');\n\n if (!token && !business && !hostedButtonId) {\n this.props.history.replace({\n pathname: '/donate',\n search: `?token=${templateData.token}`,\n });\n }\n }\n\n componentDidMount() {\n if (!this.state.displayLanding) {\n this.props.history.push(templateData.currentState);\n } else {\n handleTokenReuse();\n }\n this.addTokenToUrlIfMissing();\n }\n\n render() {\n return
{this.state.displayLanding ? : null}
;\n }\n}\n\nexport default withRouter(Landing);\n","import React, { Component } from 'react';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport colors from '../../styles/colors';\nimport PropTypes from 'prop-types';\nimport { CURRENCY_CONVERSION_OPTIONS } from '../../pages/guest/crossBorder';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { Icon, Modal, Container, CaptionText } from '@paypalcorp/pp-react';\nimport Illustration from '../illustrations/Illustration';\nimport { appendCdnHostName } from '../../utility/geoUtils';\nconst messages = localsMessages('guest/crossBorder');\n\nconst styles = StyleSheet.create({\n modal: {\n background: '#f4f6f9',\n height: '100%',\n },\n modalDialog: {\n background: 'white',\n height: '100%',\n marginTop: 0,\n marginBottom: 0,\n width: 696,\n '@media (max-width: 767px)': {\n width: '100%',\n },\n },\n // Currency Conversion\n modalTitle: {\n marginTop: 0,\n fontSize: 30,\n fontWeight: 300,\n marginBottom: 14,\n },\n optionTitle: {\n color: colors.linkBlue,\n fontSize: '15px',\n fontWeight: 500,\n lineHeight: 1.33,\n textAlign: 'center',\n },\n\n optionDetails: {\n textAlign: 'center',\n },\n bodyText: {\n fontSize: '15px',\n color: '#2c2e2f',\n margin: 0,\n },\n boldText: {\n fontWeight: 500,\n },\n icon: {\n height: 34,\n width: 34,\n },\n closeBtn: {\n fontSize: 32,\n color: '#444444',\n },\n iconCustom: {\n ':before': {\n fontSize: '4rem',\n },\n color: '#00c99c',\n },\n conversionOption: {\n opacity: 0,\n position: 'absolute',\n ':focus + label': {\n outline: [\n 'hsl(216, 91%, 69%) auto 5px',\n '-webkit-focus-ring-color auto 5px',\n ],\n },\n },\n});\n\nconst SuccessCheckmarkIcon = (props) => {\n return (\n
\n \n
\n );\n};\n\nconst CurrencyConversionOption = (props) => {\n return (\n
\n props.handleOptionSelection(props.type)}\n />\n
\n \n
\n \n );\n};\n\nCurrencyConversionOption.propTypes = {\n isSelected: PropTypes.bool,\n type: PropTypes.string,\n icon: PropTypes.string,\n illustration: PropTypes.string,\n title: PropTypes.string,\n rate: PropTypes.string,\n description: PropTypes.string,\n src: PropTypes.string,\n};\n\nclass CurrencyConversionModal extends Component {\n handleOptionSelection = (option) => {\n this.props.handleOptionSelection(option);\n };\n\n handleClose = () => {\n this.props.hideModal();\n };\n\n render() {\n const { label } = messages;\n const { selectedOption, exchangeRate } = this.props;\n const isPayPalSelected =\n selectedOption === CURRENCY_CONVERSION_OPTIONS.PAYPAL;\n\n return (\n \n
\n \n
\n
\n
\n

\n {label.modalTitle}\n

\n
\n
\n
\n
\n

\n {label.modalSubTitle}\n

\n
\n
\n
\n
\n \n \n
\n
\n
\n \n );\n }\n\n render2() {\n const { label } = messages;\n const { selectedOption, exchangeRate } = this.props;\n const isPayPalSelected =\n selectedOption === CURRENCY_CONVERSION_OPTIONS.PAYPAL;\n\n return (\n \n
\n
\n {this.renderCloseButton()}\n
\n\n
\n

\n {label.modalTitle}\n

\n

\n {label.modalSubTitle}\n

\n
\n\n
\n \n \n
\n
\n
\n
\n \n );\n }\n}\n\nCurrencyConversionModal.propTypes = {\n handleOptionSelection: PropTypes.func.isRequired,\n hideModal: PropTypes.func,\n selectedOption: PropTypes.string,\n exchangeRate: PropTypes.string,\n isOpen: PropTypes.bool,\n};\n\nexport default CurrencyConversionModal;\n","import React from 'react';\nimport CardSecurityCode from '../react-card-security-code';\nimport AppStore from '../stores/AppStore';\nimport * as AppActions from '../actions/AppActions';\nimport {\n localsMessages,\n guestLocalsMessages,\n} from '../utility/getTemplateData';\n\nconst guestMessages = guestLocalsMessages('guest/guestForm');\nconst errorMessages = localsMessages('errors/service');\n\nclass CVVComponent extends React.Component {\n constructor() {\n super();\n this.state = {\n securityCode: '',\n cardSpec: AppStore.getCardSpec().cardSpec,\n // cardSpec: {\n // \"name\": \"Visa\",\n // \"type\": \"visa\",\n // \"fields\": {\n // \"ccNumber\": {\n // \"required\": true,\n // \"editable\": false,\n // \"pattern\": \"[0-9]+\",\n // \"autodetect\": \"4[0-9]*\",\n // \"maxlength\": 16,\n // \"minlength\": 13\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]{3}\",\n // \"maxlength\": 3,\n // \"minlength\": 3\n // }\n // },\n // \"logoUrl\": \"https://www.paypalobjects.com/en_US/i/logo/logo_ccVisa.gif\"\n // },\n errorMessageCSC: '',\n };\n }\n\n componentDidMount() {\n this.props.onRef(this);\n }\n\n componentWillUnmount() {\n this.props.onRef(undefined);\n }\n\n handleChangeSecurityCode(securityCode) {\n this.setState({ securityCode: securityCode });\n this.props.handleSecurityCodeChange(securityCode);\n }\n\n handleFieldFocus(fieldName) {\n this.setState({ [fieldName]: '' });\n }\n\n /*\n * Handle error message for selected field\n */\n handleFieldBlur(value, fieldName, fieldRequired, fieldInvalid) {\n let newErrorState = {};\n\n if (value) {\n newErrorState = {\n [fieldName]: this.validateInputValue(value, fieldName, fieldInvalid),\n };\n } else {\n newErrorState = { [fieldName]: errorMessages[fieldRequired] };\n }\n\n this.setState(newErrorState);\n }\n\n /*\n * Validate input\n */\n validateInputValue(value, fieldName, fieldInvalid) {\n let {\n cardSpec: {\n fields: { csc = {} },\n },\n } = this.state;\n\n if (fieldName === 'errorMessageCSC') {\n let cscLen = value && value.length;\n let cscMax = csc.maxlength;\n let cscMin = csc.minlength || cscMax;\n\n if (!(cscLen >= cscMin && cscLen <= cscMax)) {\n return errorMessages[fieldInvalid];\n }\n }\n\n return '';\n }\n\n render() {\n let { cscplaceholder, csc: cscLabel, cscnote } = guestMessages.guestLabels;\n cscnote = cscnote && cscnote.replace('{csc}', cscLabel.toLowerCase());\n\n return (\n
\n
\n \n this.handleChangeSecurityCode(value)\n }\n handleFocus={(value) => this.handleFieldFocus('errorMessageCSC')}\n handleBlur={(value) =>\n this.handleFieldBlur(\n value,\n 'errorMessageCSC',\n 'REQUIRED_SECURITY_CODE',\n 'INVALID_SECURITY_CODE'\n )\n }\n cardSpec={this.state.cardSpec}\n helperText={cscnote}\n />\n
\n
\n );\n }\n}\n\nexport default CVVComponent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport TemplateData, {\n localsMessages,\n guestLocalsMessages,\n} from '../../utility/getTemplateData';\nimport { showSpinnerOverlay, hideSpinnerOverlay } from '../../utility/helper';\nimport SingleAmount from '../../components/amount/SingleAmount';\nimport CancelAndReturn from '../../components/cancelAndReturn';\nimport _get from 'lodash/get';\nimport _includes from 'lodash/includes';\nimport _isEmpty from 'lodash/isEmpty';\nimport _find from 'lodash/find';\nimport DonateGiftAid from '../../guest-payment-components/DonateGiftAid';\nimport * as FPT from '../../utility/fpt';\nimport CurrencyConversionModal from '../../components/currencyConversion/CurrencyConversionModal';\nimport {\n normalizeNumber,\n formatCurrencyAsString,\n exchangeRateDecimalPoints,\n} from '../../utility/formator';\nimport { withRouter } from 'react-router-dom';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport {\n setCountryAndLocale,\n parseErrorResponse,\n observeUntilEventObserved,\n} from '../../utility/helper';\nimport { fetcher } from '../../utility/domUtils';\nimport CVVComponent from '../../containers/cvv-component';\nimport withDonate from '../../components/guest/WithDonate';\nimport ThreeDSContainer from '../../components/threeDS/ThreeDSContainer';\nimport {\n Alert,\n Button,\n CaptionText,\n BodyText,\n grey600,\n} from '@paypalcorp/pp-react';\nimport getContent from 'pp-react-l10n';\nimport CloseButton from '../../components/CloseButton';\nimport BackButton from '../../components/BackButton';\nimport DonateHeader from '../../components/common/DonateHeader';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport { isInContext } from '../../utility/inContextDonation';\n\nlet giftAidText = localsMessages('common/giftAidIt');\nconst donateGiftPercentage = AppStore.getGiftAidItExtraAmount();\nlet giftAidTextObj = (giftAidText && giftAidText.giftAidIt) || {};\nlet { extraCost } = giftAidTextObj;\nconst guestMessages = guestLocalsMessages('guest/guestForm');\nconst messages = localsMessages('guest/crossBorder');\nconst errorMessages = localsMessages('errors/service');\n\nconst STYLES = StyleSheet.create({\n donateBtnContainer: {\n maxWidth: '360px',\n margin: '20px auto 0px',\n },\n donateBtn: {\n marginBottom: 0,\n },\n centralFormWrapper: {\n maxWidth: '500px',\n width: '100%',\n margin: '0 auto',\n padding: '0 18px',\n },\n donationSeparator: {\n marginBottom: '25px',\n },\n formTopLabelBold: {\n fontWeight: 'bold',\n marginTop: 31,\n fontSize: 15,\n },\n formLabelLeft: {\n width: '70%',\n fontSize: 15,\n textAlign: 'left',\n },\n formLabelRight: {\n width: '30%',\n fontSize: 15,\n textAlign: 'right',\n },\n formLabelLeftConv: {\n width: '70%',\n fontSize: 12,\n textAlign: 'left',\n },\n formLabelRightConv: {\n width: '30%',\n fontSize: 12,\n textAlign: 'right',\n },\n formLabelCenter: {\n width: '100%',\n marginTop: '10px',\n textAlign: 'center',\n },\n\n formLabelRateLeft: {\n width: '70%',\n fontSize: 12,\n textAlign: 'left',\n },\n formLabelRateRight: {\n width: '30%',\n fontSize: 12,\n textAlign: 'right',\n },\n conversionRate: {\n maxWidth: '500px',\n width: '100%',\n padding: '0 18px',\n margin: '12px auto 0',\n },\n policyMsg: {\n fontSize: '0.85em',\n textAlign: 'center',\n color: '#848B8E',\n },\n labelFont: {\n fontSize: 12,\n },\n link: {\n color: '#0270ba',\n },\n currencyConversionOptionsLink: {\n paddingLeft: '12px',\n },\n});\n\nconst DYNAMIC_CURRENCY_CONVERSION_TAG = 'DYNAMIC_CURRENCY_CONVERSION';\nexport const CURRENCY_CONVERSION_OPTIONS = {\n PAYPAL: 'PAYPAL',\n ISSUER: 'ISSUER',\n};\n\nclass CrossBorder extends React.Component {\n constructor(props) {\n super(props);\n\n let isRecurring = AppStore.getDonationRecurring() === 'checked';\n const stateConversionWithPayPal = this.getStateForConversionWithPayPal();\n\n this.state = {\n subHeaderLabel: TemplateData.donationName,\n donationId: AppStore.getSelectedProgram() || TemplateData.donationId,\n orgName: TemplateData.charityName,\n amountDecimalPoint: TemplateData.donationDecimalPoint || '.',\n decimalPoint: TemplateData.donationDecimalPoint || '.',\n isRecurring,\n ...stateConversionWithPayPal,\n showCVVField: false,\n securityCode: '',\n isCurrencyConversionModalOpen: false,\n };\n }\n\n endCustomCPLTracking = () => {\n const spinnerOverlay = document.getElementById('spinnerOverlay');\n\n if (spinnerOverlay.style.display === 'none') {\n // From tesla flow we don't have the spinner\n window.PAYPAL.analytics.endCPLTracking({\n page: 'main:donate:wps:guest:crossBorder:web::',\n action: 'crossborder_page_loaded',\n uicomp: 'crossBorder',\n uitype: 'page',\n });\n } else {\n // From guest form we need to wait for the spinner to disappear\n observeUntilEventObserved(\n spinnerOverlay,\n { attributes: true },\n (observer) => {\n if (spinnerOverlay.style.display === 'none') {\n window.PAYPAL.analytics.endCPLTracking({\n page: 'main:donate:wps:guest:crossBorder:web::',\n action: 'crossborder_page_loaded',\n uicomp: 'crossBorder',\n uitype: 'page',\n });\n\n observer.disconnect();\n return;\n }\n }\n );\n }\n };\n\n componentDidMount() {\n this.endCustomCPLTracking();\n }\n\n getStateForConversionWithPayPal() {\n let fundingOptions = AppStore.getFundingOptions();\n let [fundingSources] = fundingOptions ? fundingOptions.sources : [];\n let paymentNetwork = fundingSources.payment_card.network.toLowerCase();\n paymentNetwork =\n paymentNetwork.charAt(0).toUpperCase() + paymentNetwork.slice(1);\n let paymentDigits = fundingSources.payment_card.last_4;\n let exchangeRate = parseFloat(\n fundingOptions.currency_conversion.exchange_rate\n ).toString();\n let fundsIn = fundingOptions.currency_conversion.funds_in;\n let fundsOut = fundingOptions.currency_conversion.funds_out;\n\n return {\n exchangeRate,\n paymentCard: `${paymentNetwork} x-${paymentDigits}`,\n inAmount: fundsIn.value,\n inCurrency: fundsIn.currency,\n inSymbol: fundsIn.symbol,\n outAmount: fundsOut.value,\n outCurrency: fundsOut.currency,\n outSymbol: fundsOut.symbol,\n currencyConversionOption: CURRENCY_CONVERSION_OPTIONS.PAYPAL,\n };\n }\n\n getStateForConversionWithIssuer() {\n let amount = AppStore.getDonationAmount();\n let symbol = AppStore.getDonationSymbol();\n let currency = AppStore.getDonationCode();\n\n // No currency_conversion. fundsIn and fundsOut will not be available.\n return {\n amount,\n symbol,\n currency,\n currencyConversionOption: CURRENCY_CONVERSION_OPTIONS.ISSUER,\n };\n }\n\n updateFundingOptionsState() {\n let fundingOptions = AppStore.getFundingOptions();\n if (!fundingOptions.currency_conversion) {\n this.setState(this.getStateForConversionWithIssuer());\n } else {\n this.setState(this.getStateForConversionWithPayPal());\n }\n }\n\n getLocalizedCurrency = (amount, currency) => {\n let formatedAmount = {\n value: parseFloat(amount).toFixed(2),\n currency: currency,\n };\n let newAmount = formatCurrencyAsString(formatedAmount);\n return newAmount;\n };\n\n handleCurrencyConversionClick = () => {\n FPT.trackLinkClick('showCurrencyConversionModal');\n this.showCurrencyConversionModal();\n };\n\n showCurrencyConversionModal = () => {\n this.setState({\n isCurrencyConversionModalOpen: true,\n });\n };\n\n hideCurrencyConversionModal = () => {\n this.setState({\n isCurrencyConversionModalOpen: false,\n });\n };\n\n handleDonateClick = () => {\n if (this.state.showCVVField) {\n const cvv = document.getElementById('securityCode').value;\n this.childCVVInfo.handleFieldBlur(\n cvv,\n 'errorMessageCSC',\n 'REQUIRED_SECURITY_CODE',\n 'INVALID_SECURITY_CODE'\n );\n\n let hasError =\n document.getElementsByClassName('vx_has-error-with-message').length > 0;\n if (!cvv || hasError) {\n return;\n }\n }\n const fundingOptions = AppStore.getFundingOptions();\n const contingencies = _get(fundingOptions, 'contingencies') || [];\n const threeDSContingency =\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {};\n\n if (!_isEmpty(threeDSContingency)) {\n this.threeDSContainer.initializeThreeDS();\n\n FPT.addFi(\n fundingOptions,\n 'main:donate:wps:guest:crossborder',\n 'main:donate:wps:guest:crossborder:web::'\n );\n\n return;\n }\n\n // All contingencies resolved\n this.processDonation();\n };\n\n processDonation = () => {\n showSpinnerOverlay();\n\n return this.props.doFulfilment({\n securityCode: this.state.securityCode,\n });\n };\n\n handleGiftAidOption = (giftAidState) => {\n AppActions.updateGiftaidItFlag({ giftAidItFlag: giftAidState });\n };\n\n updateGiftAidComponent = (state) => {\n const extraCostText = getContent('locals')('common/giftAidIt')(\n 'giftAidIt.extraCost',\n {\n currency: state.outSymbol,\n amount: state.outAmount,\n extraAmount: (donateGiftPercentage * state.outAmount).toFixed(2),\n },\n {\n useHTML: true,\n }\n );\n\n let modalp1 = (giftAidTextObj && giftAidTextObj.modalp1) || '',\n modalp2 = (giftAidTextObj && giftAidTextObj.modalp2) || '',\n applyGiftAid = (giftAidTextObj && giftAidTextObj.applyGiftAid) || '';\n\n modalp1 = modalp1 && modalp1.replace('{orgName}', state.subHeaderLabel);\n modalp2 = modalp2 && modalp2.replace('{orgName}', state.subHeaderLabel);\n applyGiftAid =\n applyGiftAid && applyGiftAid.replace('{orgName}', state.subHeaderLabel);\n\n giftAidTextObj.extraCost = extraCostText;\n giftAidTextObj.modalp1 = modalp1;\n giftAidTextObj.modalp2 = modalp2;\n giftAidTextObj.applyGiftAid = applyGiftAid;\n };\n\n handleOptionSelection = (option) => {\n const beforeOption = this.state.currencyConversionOption;\n this.setState(\n {\n currencyConversionOption: option,\n },\n () => {\n // Do Planning if the option has changed\n if (beforeOption !== option) {\n this.hideCurrencyConversionModal();\n showSpinnerOverlay();\n this.getFundingOptions().finally(() => {\n hideSpinnerOverlay();\n });\n } else {\n setTimeout(() => {\n this.hideCurrencyConversionModal();\n }, 300);\n }\n }\n );\n };\n\n showCVVComponent() {\n this.setState({\n showCVVField: true,\n });\n }\n\n hideCVVComponent() {\n this.setState({\n showCVVField: false,\n });\n }\n\n getFundingOptions() {\n const lastFundingSource = this.getLastFundingSource();\n const paymentCardId = _get(lastFundingSource, 'payment_card.id');\n\n const currencyConversionType = this.state.currencyConversionOption;\n\n return fetcher('/donate/guest/fundingOptions', {\n method: 'POST',\n body: JSON.stringify({\n amount: normalizeNumber(AppStore.getDonationAmount()),\n code: AppStore.getDonationCode(),\n fundingOptionId: AppStore.getFundingOptions().id,\n preferences: {\n currency_conversion: [\n {\n payment_card_id: paymentCardId,\n type: currencyConversionType,\n validity: 'TRANSACTION',\n },\n ],\n },\n consentShareAddress: AppStore.getShareAddress(),\n }),\n })\n .then((response) => response.json())\n .then((result) => {\n console.log('getFundingOptions result :: ', result);\n\n let fundingOptions;\n // The funding options data format returned by the server is\n // different for ISSUER and PAYPAL. Handle it appropriately.\n\n // For conversion with 'ISSUER'\n if (currencyConversionType === CURRENCY_CONVERSION_OPTIONS.ISSUER) {\n fundingOptions = _get(result, 'data.fundingOpt[0]');\n } else {\n // For conversion with 'PAYPAL'\n fundingOptions = _get(result, 'fundingOpts[0]');\n }\n\n // Handle error case where fundingOptions call succeeds\n // but no data is returned\n if (_isEmpty(fundingOptions)) {\n FPT.trackError({\n message: 'FUNDING_OPTIONS_EMPTY_CROSSBORDER',\n code: currencyConversionType,\n });\n this.props.history.push('/donate/error/payment');\n return;\n }\n\n // If CVV contingencies are present and has not been resolved,\n // then display cvv component\n const contingencies = _get(fundingOptions, 'contingencies');\n const hasCvvContingency = _find(contingencies, {\n action: 'CVV_REQUIRED',\n });\n const isCvvContingencyResolved = _get(\n result,\n 'data.contingencyResolutionStatus.cvvContingencyResolved',\n false\n );\n\n if (hasCvvContingency && !isCvvContingencyResolved) {\n this.showCVVComponent();\n } else {\n this.hideCVVComponent();\n }\n\n // Updating store with funding options\n AppActions.updateFundingOptions({ fundingOptions });\n\n this.updateFundingOptionsState();\n\n console.log(result);\n })\n .catch(() => {\n console.log('FAILED');\n this.props.history.push('/donate/error/payment');\n })\n .finally(() => {\n hideSpinnerOverlay();\n });\n }\n\n renderConversionRateInfo(exchangeRate, fundsOut) {\n const label = _get(messages, 'label', {});\n return (\n
\n
\n
\n \n {label.conversion} {exchangeRate}\n \n
\n
\n {fundsOut}\n
\n
\n
\n );\n }\n\n getLastFundingSource() {\n let fundingOptions = AppStore.getFundingOptions();\n const fundingSources = fundingOptions.sources || [];\n return fundingSources[fundingSources.length - 1];\n }\n\n /**\n * Returns true if currency conversion options should be displayed\n * @param {Array} fundingSources Funding Sources\n * @return {Boolean} True if currency conversion options should be displayed\n */\n shouldShowCurrencyConversionOptions = () => {\n const lastFundingSource = this.getLastFundingSource();\n const tags = _get(lastFundingSource, 'tags');\n return _includes(tags, DYNAMIC_CURRENCY_CONVERSION_TAG);\n };\n\n renderCurrencyConversionOptionsLink(label) {\n const userCountry = AppStore.getUserCountry();\n\n return (\n \n
\n
\n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL ? (\n
\n \n {userCountry === 'US' ? label.spread : label.fee}\n \n
\n ) : null}\n
\n
\n\n
\n
\n
\n \n {label.currencyConversionOptions}\n \n
\n
\n
\n
\n );\n }\n\n handleSecurityCodeChange = (securityCode) => {\n this.setState({\n securityCode: securityCode,\n });\n };\n\n handleThreeDSStepUpAuthSuccess = () => {\n this.props.toggleSpinner(true);\n this.props.doFulfilment({\n securityCode: this.state.securityCode,\n });\n };\n handleThreeDSStepUpAuthFailure = () => {\n // Unrecoverable error !!\n this.props.history.push('/donate/error/payment');\n };\n\n handleThreeDSFailure = () => {\n // Unrecoverable error !!\n this.props.history.push('/donate/error/threeDS');\n };\n\n render() {\n const inAmount = this.getLocalizedCurrency(\n this.state.inAmount,\n this.state.inCurrency\n );\n const outAmount = this.getLocalizedCurrency(\n this.state.outAmount,\n this.state.outCurrency\n );\n const fundsIn = _includes(inAmount, this.state.inCurrency)\n ? `${inAmount}`\n : `${inAmount} ${this.state.inCurrency}`;\n const fundsOut = _includes(outAmount, this.state.outCurrency)\n ? `${outAmount}`\n : `${outAmount} ${this.state.outCurrency}`;\n const exchangeRate = `${this.getLocalizedCurrency(\n '1.00',\n this.state.inCurrency\n )} = ${exchangeRateDecimalPoints(\n this.state.exchangeRate,\n this.state.amountDecimalPoint,\n this.state.inSymbol\n )} ${this.state.outCurrency}`;\n const { label = {} } = messages || {};\n let donateNowRecurring = _get(guestMessages, 'guestLabels.donatenowrec');\n donateNowRecurring =\n donateNowRecurring && donateNowRecurring.replace('{amount}', fundsOut);\n\n const formattedDonationAmount = `${\n this.state.symbol ? this.state.symbol : ''\n }${this.state.amount} ${this.state.currency}`;\n\n let giftaidFlag = AppStore.getGiftaidItFlagStatus();\n this.updateGiftAidComponent(this.state);\n\n let { csc: cscLabel, cscwarning } = guestMessages.guestLabels;\n cscwarning =\n cscwarning && cscwarning.replace('{csc}', cscLabel.toLowerCase());\n\n const { showCVVField } = this.state;\n\n return (\n \n {showCVVField && (\n
\n
\n {cscwarning}\n
\n
\n )}\n\n \n {isExternalFlow() && (\n <>\n \n \n \n )}\n\n
\n {/* */}\n\n {TemplateData.isGiftaiditEnabled && (\n \n )}\n\n
\n
\n
\n \n {label.donatingFrom}\n \n
\n
\n
\n
\n
\n {this.state.paymentCard}\n
\n
\n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL\n ? fundsIn\n : formattedDonationAmount}\n
\n
\n
\n\n
\n
\n {showCVVField && (\n (this.childCVVInfo = ref)}\n handleSecurityCodeChange={this.handleSecurityCodeChange}\n />\n )}\n
\n
\n
\n\n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL ? (\n
\n
\n
\n
\n
\n
\n {label.youllDonate}\n
\n
\n {fundsIn}\n
\n
\n
\n\n
\n
\n
\n {label.convertsTo}\n
\n
\n {fundsOut}\n
\n
\n
\n
\n
\n
\n ) : (\n
\n
\n
\n
\n {label.youllDonate}\n
\n
\n \n {formattedDonationAmount}\n \n
\n
\n
\n
\n )}\n\n
\n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL &&\n this.renderConversionRateInfo(exchangeRate, fundsOut)}\n {this.shouldShowCurrencyConversionOptions() &&\n this.renderCurrencyConversionOptionsLink(label)}\n
\n\n
\n
\n {getContent('locals')('guest/crossBorder')(\n 'label.policies',\n { country: TemplateData.country },\n { useHTML: true }\n )}\n
\n
\n\n
\n
\n\n
\n
\n \n {this.state.isRecurring ? donateNowRecurring : label.donatenow}\n \n
\n
\n
\n\n \n \n\n (this.threeDSContainer = ref)}\n />\n
\n
\n );\n }\n}\n\nexport default withRouter(withDonate(CrossBorder));\n","import withPageTrack from '../../confirmation/withPageTrack';\nimport withPostTransactionRequest from '../../confirmation/withPostTransactionRequest';\nimport PendingView from '../../confirmation/PendingView';\nimport SuccessView from '../../confirmation/SuccessView';\n\nconst FLOW = 'guest';\nconst POST_TRANSACTION_URL = '/donate/guest/postTransaction';\n\nexport const GuestConfirmationPending = withPageTrack(\n withPostTransactionRequest(PendingView, POST_TRANSACTION_URL),\n FLOW,\n 'pending'\n);\n\nexport const GuestConfirmationSuccess = withPageTrack(\n withPostTransactionRequest(SuccessView, POST_TRANSACTION_URL),\n FLOW,\n 'success'\n);\n","import React from 'react';\nimport * as FPT from '../../utility/fpt';\nimport AppStore from '../../stores/AppStore';\nimport { withRouter } from 'react-router-dom';\nimport templateData, { localsMessages } from '../../utility/getTemplateData';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport { Button } from '@paypalcorp/pp-react';\nimport Illustration from '../../components/illustrations/Illustration';\nimport ConfirmationTitle from '../../confirmation/ConfirmationTitle';\nimport ConfirmationBody from '../../confirmation/ConfirmationBody';\nimport { isMobileOrInContext } from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport CloseButton from '../../components/CloseButton';\n\nclass PaymentError extends React.Component {\n constructor() {\n super();\n this.state = {};\n }\n\n componentDidMount = () => {\n hideSpinnerOverlay();\n const ERROR_CODE = AppStore.getPaymentError() || '';\n FPT.trackPage(\n 'main:donate:wps:guest:failure',\n 'main:donate:wps:guest:failure:web::',\n 'ERROR_CODE',\n ERROR_CODE\n );\n };\n\n handleTryAgain = () => {\n this.props.history.push(`/donate?token=${templateData.token}`);\n };\n\n render() {\n const { error = {}, label = {} } = localsMessages('errors/paymentError');\n const ERROR_CODE = AppStore.getPaymentError() || '';\n\n let { WSM_CANNOT_PAY_SELF = '', WENT_WRONG, TEMP_GLITCH } = error;\n let { tryagain } = label;\n\n switch (ERROR_CODE) {\n case 'WSM_PAYMENT_DENIED':\n WENT_WRONG = error.DID_NOT_WORK;\n TEMP_GLITCH = error.DIFF_CREDIT_DEBIT;\n tryagain = label.trydiffcard;\n break;\n case 'WSM_CANNOT_PAY_SELF':\n const L2 =\n WSM_CANNOT_PAY_SELF &&\n WSM_CANNOT_PAY_SELF.replace(\n '{data.dataMerchant.name}',\n templateData.donationName\n );\n WENT_WRONG = error.WSM_CANNOT_PAY_SELF_H;\n TEMP_GLITCH = L2;\n break;\n default:\n break;\n }\n\n return (\n
\n \n {isExternalFlow() && }\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n\n
\n
\n \n {tryagain}\n \n
\n
\n
\n
\n );\n }\n}\n\nexport default withRouter(PaymentError);\n","import React from 'react';\nimport * as FPT from '../../utility/fpt';\nimport { withRouter } from 'react-router-dom';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport Illustration from '../../components/illustrations/Illustration';\nimport ConfirmationBody from '../../confirmation/ConfirmationBody';\nimport _get from 'lodash/get';\nimport { isMobileOrInContext } from '../../utility/inContextDonation';\n\nconst messages = localsMessages('errors/paymentError');\nconst noAccountErrorMessage = _get(\n messages,\n 'noAccountError',\n \"We can't complete this donation. The receiver doesn't have a valid PayPal account.\"\n);\n\nclass UnilateralError extends React.Component {\n constructor() {\n super();\n this.state = {};\n }\n\n componentDidMount = () => {\n hideSpinnerOverlay();\n FPT.trackPage(\n 'main:donate:wps:guest:unilateral',\n 'main:donate:wps:guest:unilateral:web::'\n );\n };\n\n render() {\n return (\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(UnilateralError);\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport templateData, { localsMessages } from '../../utility/getTemplateData';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport { Button } from '@paypalcorp/pp-react';\nimport Illustration from '../../components/illustrations/Illustration';\nimport ConfirmationTitle from '../../confirmation/ConfirmationTitle';\nimport ConfirmationBody from '../../confirmation/ConfirmationBody';\nimport { isMobileOrInContext } from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport CloseButton from '../../components/CloseButton';\n\nclass ThreeDSError extends React.Component {\n componentDidMount = () => {\n hideSpinnerOverlay();\n };\n\n handleTryAgain = () => {\n this.props.history.push(`/donate?token=${templateData.token}`);\n };\n\n render() {\n const error = localsMessages('errors/threeDSError');\n\n return (\n
\n \n {isExternalFlow() && }\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n\n
\n
\n \n {error.tryCard}\n \n
\n
\n
\n \n );\n }\n}\n\nexport default withRouter(ThreeDSError);\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { getParameterByName } from '../utility/queryStringHelper';\nimport withDonate from './guest/WithDonate';\nimport * as AppActions from '../actions/AppActions';\nimport _get from 'lodash/get';\nimport templateData from '../utility/getTemplateData';\nimport { isLoggedInUser, isOneTouchUser } from '../utility/authUtils';\nimport * as FPT from '../utility/fpt';\nimport { EVENT_NAME } from '../utility/constants';\n\nclass CaptureOrder extends Component {\n constructor(props) {\n super(props);\n this.state = {\n token: '',\n accessToken: '',\n isSubmitted: false,\n backBtnVisible: false,\n responseData: '',\n wTransactionEntry: '',\n requestError: '',\n };\n }\n\n componentDidMount() {\n this.props.toggleSpinner(true);\n const donateToken = getParameterByName('dtoken');\n const orderToken = getParameterByName('token');\n const payerID = getParameterByName('PayerID');\n\n this.captureOrder(orderToken, donateToken, payerID);\n }\n\n captureOrder = (orderToken, donateToken, payerID) => {\n this.props\n .captureOrder(orderToken, donateToken, payerID)\n .then((response) => response.json())\n .then((result) => {\n if (_get(result, 'data.orderData.status') !== 'COMPLETED') {\n this.props.history.push('/donate/error/payment');\n return;\n }\n\n const isMemberFlow = isLoggedInUser() || isOneTouchUser();\n const confirmationData = _get(result, 'data.confirmationData', {});\n this.handlePaymentSuccess(confirmationData, isMemberFlow);\n })\n .catch(() => {\n this.props.history.push('/donate/error/payment');\n });\n };\n\n handlePaymentSuccess = (response, isMemberFlow) => {\n AppActions.updateConfirmation({ confirmation: response });\n this.handleConfirmation(response, isMemberFlow);\n };\n\n handleConfirmation = (response, isMemberFlow) => {\n const { token } = templateData;\n const flow = isMemberFlow ? 'member' : 'guest';\n const page = response.isOfacPending ? 'pending' : 'confirmation';\n const url = token\n ? `/donate/${flow}/${page}/?token=${token}`\n : `/donate/${flow}/${page}`;\n const eventName = response.isOfacPending\n ? EVENT_NAME.DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN\n : EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN;\n\n const pageTrack = `main:donate:wps:${flow}:${\n response.isOfacPending ? 'pending' : 'success'\n }`;\n FPT.trackExternalFlowData();\n FPT.trackToken();\n FPT.trackPageWithData(pageTrack, `${pageTrack}:web::`, {\n trid: response.confirmationNumber ?? '',\n event_name: eventName,\n account_type: flow,\n amount: response.postBackData?.mc_gross,\n currency: response.postBackData?.mc_currency,\n order_id: response.orderId,\n });\n\n this.props.history.push(url);\n };\n\n render() {\n return null;\n }\n}\n\nCaptureOrder.propTypes = {\n toggleSpinner: PropTypes.func,\n captureOrder: PropTypes.func,\n history: PropTypes.object,\n};\n\nexport default withDonate(CaptureOrder);\n","import { useEffect } from 'react';\nimport templateData from '../utility/getTemplateData';\n\nlet timerCount = 0;\nexport default function CancelAndReturnOrder() {\n const redirectToCancelUrl = () => {\n const { charityCancelUrl } = templateData;\n if (charityCancelUrl) {\n window.location.href = charityCancelUrl;\n }\n };\n\n useEffect(() => {\n // xprops takes a few miliseconds to be populated\n // because it has to set up the communication with host window\n // Wait a maximum of 2 seconds for the value\n waitForXProps(() => {\n // No xprops for 2 seconds\n // Maybe we are not inContext?\n // Redirect to cancel url\n redirectToCancelUrl();\n });\n }, []);\n\n function waitForXProps(callback) {\n timerCount++;\n if (timerCount > 10) {\n callback();\n return;\n }\n if (!window.xprops) {\n setTimeout(() => {\n waitForXProps(callback);\n }, 200);\n } else {\n window.xprops.close();\n }\n }\n\n return null;\n}\n","import './publicPath';\n\nimport 'consumerweb-shim';\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\nimport '../utility/bootstrap';\nimport React, { Component, Suspense, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Route, Switch, Router } from 'react-router-dom';\nimport history from './configureHistory';\nimport CookiedUserPage from './../pages/landing/landing';\nimport CrossBorder from './../pages/guest/crossBorder';\nimport {\n GuestConfirmationPending,\n GuestConfirmationSuccess,\n} from '../pages/guest/confirmation';\nimport PaymentError from './../pages/error/paymentError';\nimport UnilateralError from '../pages/error/UnilateralError';\nimport templateData from './../utility/getTemplateData';\nimport { isOneTouchUser, isAuthenticatedUser } from 'utility/authUtils';\nimport { parseUrlQuery } from '../utility/urlUtils';\nimport { setShouldRTL } from '../utility/paypalAphrodite';\nimport { showSpinnerOverlay, hideSpinnerOverlay } from '../utility/helper';\nimport ThreeDSError from '../pages/error/threeDSError';\nimport { reactLazyPreload } from '../utility/lazyLoader';\nimport CaptureOrder from '../components/CaptureOrder';\nimport CancelAndRedirectOrder from '../components/CancelAndRedirectOrder';\nimport {\n MemberConfirmationPending,\n MemberConfirmationSuccess,\n} from '../pages/member/confirmation';\nimport Footer from '../components/footer/footer';\n\nimport '../../css/ppvx.less';\nimport '../../css/ppvx-app.less';\nimport '../../css/portable-onboarding.less';\n\n// set the direction for styles (whether to convert them to RTL)\nconst { locality: { directionality = 'ltr' } = {} } = templateData;\nsetShouldRTL(directionality !== 'rtl');\n\nconst { currentUserState, isUnilateralAccount, paymentStatus } = templateData;\n\nconst GuestPage = reactLazyPreload(() =>\n import(/* webpackChunkName: \"GuestPage\" */ './../pages/guest/guest')\n);\n\nfunction FallbackSpinner() {\n useEffect(() => {\n showSpinnerOverlay();\n }, []);\n\n return <>;\n}\n\nclass LandingPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n userCookied: currentUserState === 'cookied',\n isOneTouch: isOneTouchUser(),\n };\n }\n\n componentDidMount() {\n if (isUnilateralAccount) {\n history.push('/donate/error/noaccount');\n return;\n }\n // Only hiding spinner for cookied user and if payment token status is not complete\n if (this.state.userCookied && paymentStatus !== 'complete') {\n // In case of onboarding, guest.js will hide the spinner\n if (!templateData.onboardingEnabled) {\n hideSpinnerOverlay();\n }\n }\n\n if (!isAuthenticatedUser()) {\n GuestPage.preload();\n }\n }\n\n getPageToRender() {\n // If `signup` param is present, render GuestPage\n const isSignupRoute = !!parseUrlQuery().signup;\n if (isSignupRoute) {\n return ;\n }\n return ;\n }\n\n render() {\n return
{this.getPageToRender()}
;\n }\n}\n\nReactDOM.render(\n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n