{"version":3,"sources":["webpack:///./guest-payment-components/DonateGiftAidHowItWorksOverlay.js","webpack:///./guest-payment-components/DonateGiftAid.js","webpack:///./components/amount/amountValidationError.js","webpack:///./components/amount/calculator.js","webpack:///./components/amount/PresetAmountRow.js","webpack:///./components/amountWrapper.js","webpack:///./react-card-security-code/index.js","webpack:///./components/threeDS/ThreeDSSpinner.js","webpack:///./components/threeDS/ThreeDSDeviceDataCollection.js","webpack:///./components/threeDS/ThreeDSIframe.js","webpack:///./components/threeDS/ThreeDSContainer.js","webpack:///./components/guest/WithDonate.js","webpack:///./utility/card-utils.js","webpack:///./components/NoteFieldError.js","webpack:///./components/note.js","webpack:///./components/anonymousDonation/anonymousCheckbox.js","webpack:///./utility/bootstrap.js","webpack:///./components/nextButton.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/lib/geoUtils.js","webpack:///./components/landing/OneTouchNextButton.js","webpack:///./components/guestButton.js","webpack:///./components/recurring-checkbox/RecurringInfo.js","webpack:///./components/recurring-checkbox/recurring-checkbox.js","webpack:///./components/programs/Programs.js","webpack:///./components/recurring-checkbox/RecurringOverlay.js","webpack:///./components/NotTaxDeductibleLegalText.js","webpack:///./components/coverFee/coverFeeCheckbox.js","webpack:///./pages/landing/landing.js","webpack:///./components/WhosDonatedBanner.js","webpack:///./components/Flyout.js","webpack:///./components/hooks/useInterval.js","webpack:///./utility/donorWall.js","webpack:///./utility/isMobile.js","webpack:///./setup/clientConstants.js","webpack:///./pages/landing/campaignLanding.js","webpack:///./containers/cvv-component.js","webpack:///./pages/guest/guestReviewComponents/PaymentInformation.js","webpack:///./components/currencyConversion/CurrencyConversionModal.js","webpack:///./utility/accessibilityUtils.js","webpack:///./pages/guest/guestReviewComponents/CrossBorder.js","webpack:///./pages/guest/guestReviewComponents/FeePricing.js","webpack:///./pages/guest/GuestReview.js","webpack:///./pages/guest/confirmation.js","webpack:///./pages/error/FullPageError.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/lazyLoader.js"],"names":["styles","StyleSheet","create","modalContent","maxWidth","margin","okButton","marginTop","msgMargin","DonateGiftAidHowItWorksOverlay","props","orgName","React","createElement","_Sheet","className","overpanel","title","isOpen","onClose","closeOverlay","hideLogo","closeOnBackgroundClick","id","concat","css","_Row","_Col","src","appendCdnHostName","_HeadingText","size","Message","_BodyText","_Button","onClick","propTypes","PropTypes","string","bool","func","DonateGiftAid","_ref","isAlreadyEnrolled","isChecked","handleGiftAidOption","addressData","showAddress","giftaidInfo","_useState","useState","_useState2","_slicedToArray","showHelp","setShowHelp","_useState3","_useState4","checked","setChecked","_useState5","_useState6","isHowItWorksOverlayOpen","setIsHowItWorksOverlayOpen","donateGiftPercentage","donationCode","amount","useEffect","giftaidAmount","openHowItWorksOverlay","alt","BodyText","currency","formatAmount","value","normalizeNumber","extraAmount","type","tertiary","_Checkbox","label","name","onChange","env","checkedValue","target","_CaptionText","strong","fullName","address1","address2","city","state","zip","openOverlay","any","object","isMember","STYLES","error","color","PAYPAL_THEME","sysColorUnselectedContrast","fontSize","criticalIcon","position","marginRight","AmountValidationError","_Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","_this$props","this","errorSourceField","errorString","errorCode","trackErrorIM","errorMessage","fieldName","CriticalIcon","style","_objectSpread","role","data-testid","Component","donationAmount","messages","localsMessages","container","padding","zIndex","calcRow","display","width","verticalAlign","calcRowLeft","calcRowRight","calcLabel","inputCol","input","outlineOffset","paddingLeft","inputLeft","paddingRight","inputRight","fromCode","right","top","height","borderTop","borderRight","borderBottom","toCode","lineHeight","conversion","textAlign","paddingTop","disabled","opacity","inputCurrencyLeft","marginLeft","hasError","Calculator","_React$Component","_this","call","_defineProperty","_assertThisInitialized","symbol","currencySymbols","setState","fromSymbol","length","document","getElementById","ev","callback","val","match","validateAmount","handleFromChange","handleToChange","handleFromCurrencyChange","setFromSymbol","event","handleAmountFocus","replace","decimalPoint","_ref$label","_ref$label2","youDonate","charityGet","youDonateLabel","charityGetLabel","conversionLabel","placeholder","getLocalizedAmount","fromAmount","toAmount","conversionRate","calcLabelStyle","toError","fromDisabled","bind","onFocus","availableCurrencies","map","c","toDisabled","charityAmountSymbol","toErrorMessage","array","isRequired","PresetAmountRow","worldready","useContext","WorldReadyContext","presetOther","MessageFormat","format","placeholderOtherAmount","templateData","presetAmounts","setPresetAmounts","AppStore","getDonationAmountType","getDonationAmount","selectedOption","setSelectedOption","showOtherAmount","setShowOtherAmount","_useState7","charityAmount","_useState8","amountFieldValue","setAmountFieldValue","handlePresetAmountClick","indexValue","indexOf","trackSelectedPresetAmount","handleAmountChange","hideValidationError","AppActions","amountBeforeFee","getAmountBeforeFee","isOptInCoverFee","shouldSelectPresetAmount","values","charityAmountCode","result","presetOptions","isRightSymbol","formatAmountFromServerDNW","noDecimals","secondaryLabel","_toConsumableArray","Fragment","_PresetAmounts","showValidationError","validationErrorMessage","isPreview","isAmountEditable","validationErrorCode","AmountWrapper","dispatcherCharityAmount","AppDispatcher","register","payload","action","actionType","_payload$action","_payload$action2$item","item","_payload$action2$item3","addFeature","FEATURES","DONATION_AMOUNT_EDITABLE","unregister","window","location","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","catch","source","exchange_rate","isCalculator","setAppAmount","isAtLandingPage","setFeeAmountInStore","updateFeeAmount","optOutCoverFee","setAmountTypeFpti","snapshot","userAmount","charityDisabled","getConversion","_ref2","getConversionRate","currencyCode","_ref3","userDisabled","_ref4","presetAmountsCondition","TemplateData","enablePresetAmounts","isGuestReviewPage","PRESET","validateDonationAmount","worldReady","getWorldReady","selectedRecurringFrequency","_ref5","parse","innerHTML","currencyLists","currencies","symbols","html","getElementsByTagName","directionality","getAttribute","donorIpCountry","US","getDonationCode","isEditable","donationAmountEditable","getDonationSymbol","donationDecimalPoint","nextProps","shouldShowPresetAmounts","renderPresetAmounts","handleUserAmountChange","handleUserCurrencyChange","handleCharityAmountChange","_SingleAmount","currencySymbol","handleAmount","clientMetadata","__getInitialData","handleTrackError","getDonationRecurring","getRecurringLabel","CardSecurityCode","_len","args","Array","_key","showIsRequiredError","securityCode","handleCheckForValue","handleChangeSecurityCode","cardSpec","fields","csc","required","handleFocus","handleBlur","cscSpecs","_TextInput","maxLength","maxlength","pattern","onBlur","errorText","dir","helperText","cardSpecPropType","LOADING_GIF_SOURCE","spinnerAlign","cardImg","ThreeDSSpinner","fundingOptions","getFundingOptions","_get","network","getPaymentCardNetwork","myData","getAllData","_isEmpty","cardType","toLowerCase","hideSpinnerOverlay","setNetworkDetails","context","contextType","withTheme","ThreeDSDeviceDataCollection","data","exception","messageType","onDDCComplete","trackThreeDsDdcFailure","FPTI_TAGS","STATUS","console","log","onThreeDSDDCComplete","contingencies","_find","addEventListener","handleDDCEvent","threeDS2ReferenceId","getThreeDSParams","three_ds_reference_id","refs","submit","e","removeEventListener","_this$getThreeDSParam2","deviceDataCollectionUrl","device_data_collection_url","jwt","ref","withRouter","ThreeDSIframe","handleIframeMessage","confirmationStatus","additionalData","CHALLENGE_STATUS","trackThreeDSIframeIM","threeDSRespDuration","CHALLENGE_END_TIME","Date","getTime","onStepUpAuthComplete","hideModal","element","formRef","setTimeout","requestTextMsgFmt","threeDS2Contingency","getThreeDSContingency","redirectLink","md","redirectMethod","requestText","frameBorder","setFormRef","submitForm","CHALLENGE_START_TIME","hideTitle","getModalBody","icon","ThreeDSContainer","_fptiData","showThreeDSDeviceDataCollection","threeDSDCCEndTime","fptiData","THREE_DS_DCC_START_TIME","threeDSDCCStartTime","THREE_DS_DCC_END_TIME","THREE_DS_SPINNER_START_TIME","THREE_DS_SPINNER_END_TIME","trackThreeDsDdcComplete","resolveThreeDSContingency","trackThreeDsLookupStart","THREE_DS_LOOKUP_START_TIME","token","onboardingEnabled","_trackThreeDsLookupCo","hideThreeDSSpinner","threeDSContingency","resolved","trackThreeDsLookupComplete","timestamp","THREE_DS_LOOKUP_END_TIME","CONTINGENCY_RESOLVED","URL","ACTION","onThreeDSStepUpAuthNotRequired","showThreeDSIframe","hideThreeDSIframe","onThreeDSFailure","onThreeDSStepUpAuthSuccess","onThreeDSStepUpAuthFailure","showThreeDSSpinner","onRef","_fptiData2","startTime","trackThreeDsDdcStart","Portal","handleThreeDSDDCComplete","handleThreeDSStepUpAuthComplete","toggleSpinner","initialData","getInitialData","ERROR_ELEMENT_SELECTOR","join","withDonate","WrappedComponent","_class","country","DonateAppActions","trackLinkClick","LINK_NAME","CHANGE_COUNTRY","COUNTRY","_templateData$signUp","signUp","url","handleGuestCountryChange","isSpinner","showSpinnerOverlay","scrollElementIntoView","language","note","getDonationNote","fundingOptionId","email","getEmail","billingAddress","getBillingAddress","giftAidItFlag","getGiftaidItFlagStatus","card","getSelectedRecurringFrequency","code","history","push","status","href","clientState","encodeURIComponent","confirmationData","startCustomCPLTrackingForConfirmationPage","objectOrArrayToQueryString","confirmation","isOfacPending","isEmpty","cartUrl","orderToken","donateToken","payerID","selectedCountry","getFormData","formData","getParametersFromUrl","showErrorOnLoad","errorMsgs","serverErrors","_extends","handleCountryChange","handleScrollToError","getDonateGuestUrl","getInitialFormData","saveFormData","doFulfilment","captureOrder","createOrder","defaultCardSpec","ccNumber","expirationDate","minlength","getSpecificCardSpec","cardNumber","cardTypes","RegExp","autodetect","test","PAYMENT_CARDS","NoteFieldError","NoteComponent","lengthLimit","campaignsLabel","providedLabel","isCampaigns","charityNoteEnabled","charityNoteLabel","donationNote","setDonationNote","initialNoteLabel","showLabel","setShowLabel","showError","setShowError","noteLabel","setNoteLabel","textAreaEl","useRef","isNoteTextPresent","current","focus","isNotePreview","contextLocalityDir","isExternalFlow","htmlFor","NOTE_PAD","eventName","EVENT_NAME","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","_IconButton","svgIconComponent","_AddIcon","buttonType","aria-hidden","_TextArea","maxRows","minRows","showCharacterCounter","maxCharacters","addClass","removeClass","trim","AnonymousCheckbox","content","optInStatus","handleAnonymousDonationChange","ANONYMOUS","tooltip","checkboxStatus","anonymousStatus","labelIcon","_Tooltip","description","onOpen","ANONYMOUS_TOOLTIP","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","setAttribute","NextButtonComponent","branded","handleNext","getCdnHostName","OneTouchNextButton","GuestButton","GUEST","secondary","handleGuest","RecurringInfo","_Alert","orgname","donationName","isLTR","isLeftToRight","isContinue","wrapper","centered","justifyContent","toolWrapper","paddingBottom","animationWrapper","animationContainer","transform","recurringButton","borderRadius","marginBottom","borderOnly","background","divider","dividerContent","backgroundColor","verticalCentered","alignItems","RecurringCheckBox","dispatcherToken","updateAmount","RECURRING","continue","formatedAmount","showhelp","chkBxStatus","loadAnimation","recurring","RECURRING_CHECKBOX","CHECKBOX","handleChange","__html","_this2","loadBodyMovin","isAnimating","animationData","heartsAnimationData","bodymovinLibrary","bodymovin","renderer","loop","autoplay","destroy","helperTextType","helperMessage","getHelperTextContent","sanitizeOrgName","defaultProps","Programs","programNames","isDisabled","selectedProgram","handleSelect","programLabelMsgFmt","isArray","getProgramOptions","options","forEach","programName","primaryText","programOption","findIndex","program","appStore","getSelectedProgram","DropdownMenu","PROGRAM_SELECTED","CAMPAIGN","RecurringOverlay","closeRecurringOverlay","onMakeOneTimeDonation","onContinue","secondDialogLabel","dialogp2","center","isInContext","BackButton","handleClose","noCloseButton","containerClassName","noThanks_closeModal","disclaimerWrapper","disclaimer","disclaimerCaptionText","NotTaxDeductibleLegalText","dispatcherMessages","isPPCC","setIsPPCC","AppConstants","CoverFeeCheckbox","handleCoverFeeChange","formatedFeeAmount","CTF","_DonateCheckbox","checkbox_content","coverFee","LandingPageComponent","_templateData$donateC","_templateData$support","onload","cpl","CPL_PAGE_SPEC","LANDING_PAGE","currentPage","paymentStatus","setEnabledRecurringFrequency","supportedRecurringFrequencies","recurringStatus","coverFeeOptInStatus","restoreDonationAmount","trackLandingPageIM","noteFieldDisplayed","shouldShowNote","recurringEnabled","waitForOnload","isLoggedInUser","registerAppDispatcherMessages","amountUtils","trackDonateWithCardClick","is_recurring","fee_type","coverFeeEnabled","addShake","preventDefault","recurringModalStatus","memberMandatory","openRecurringOverlay","validateAmountAndNavigateToGuestPage","PAYPAL","analytics","startCPLTracking","page","uicomp","uitype","trackDonateWithPayPalClick","handleLogIn","trackNextClickForCheckout","orderParams","prepareOrderParams","feeAmount","getFeeAmount","computeAmountAfterFee","updateDonationAmount","_validationResult","_validationResult2","validationResult","donateDisabled","rpContinue","anonymousOptInStatus","trackAnonymousCheckboxClick","trackCoverFeeCheckboxClick","getFormatedFeeAmount","isRecurringOverlayOpen","isOldButtonFactory","shouldRenderRecurringCheckbox","selectedTabIdx","rpContentHelper","totalAmount","Number","formattedTotalAmount","subHeaderLabel","isCheckoutRail","handleNextForCheckout","isAuthenticated","NextButton","showNoteCondition","CHARITY_NOTE","personalizedMessages","getPersonalizedMessages","GN_CONTENT_TOUCHPOINT","amountRaised","campaignTotalAmountRaised","campaignStatus","campaignTargetAmount","campaignEndTime","tabIdx","handleRecurringChange","trackRecurringFrequencySelectionClick","selectFrequencyTab","getCoverFeeOptInStatus","anonymousStatusInStore","getAnonymousStatus","hasLogo","charityName","donationId","guestRedirectUrl","supportedRecurringHelperText","recurringHelpText","recurringLabel","isAuthenticatedUser","donateContext","program_names","isVoucherFlow","offerProgram","feePayer","anonymousEnabled","hasDisclaimer","hasPersonalizedMessages","classNames","gn_donate_wrapper","bannerUrl","donate_wrapper","context_gn_wrapper","shouldShowUserBanner","mobile_view","isMobileOrInContext","_this$state$supported","showUserBanner","showSupportText","shouldShowSupportText","showNoDonationText","shouldShowNoDonationText","freq","isMonthlyOnly","shouldRenderRecurringSegmentedController","receiverCountryEligible","landingClass","UserDetailsBanner","userDetails","CloseButton","inverse","DonateHeader","isLanding","_this2$state$supporte","campaigns","_SegmentedController","tabs","option","panelId","_SegmentedControllerPanel","tabId","updateConversionSataus","renderProgramsDropdown","getPersonalizedAnonymousContent","getPersonalizedNoteToPayeeLabel","selectedFrequencyCheckbox","showNote","selectedTab","OfferDetail","success","renderDisclaimer","renderDonateButtons","VoucherFlowDisclaimer","hasPartnerSource","handleRecurringOverlayContinue","handleRecurringOverlayMakeOneTimeDonation","Disclaimer","getPersonalizedContent","CancelAndReturn","ReceiverEligibilityErrorTile","organizationName","returnUrl","charityReturnUrl","LandingPage","withWorldReady","Landing","_React$Component2","_super2","_this3","displayLanding","currentState","business","hostedButtonId","campaignId","search","handleTokenReuse","addTokenToUrlIfMissing","WhosDonatedBanner","_contributionsList5","numberOfContributors","contributionsList","isLoading","_contributionsList","_contributionsList$","_contributionsList2","_contributionsList2$","donorName","donor_name","donatedAmount","donor","_contributionsList3","_contributionsList3$","_contributionsList4","_contributionsList4$","donorOneName","donorTwoName","formatNumber","slice","_AvatarStack","_data$photos","_data$photos$","showAnonymousAvatar","shareDonorInfo","_DonorAvatar","photo","photos","isAnonymousAvatar","number","Flyout","_randomContribution$p","_randomContribution$p2","delay","intervalRef","savedCallback","startShowing","setStartShowing","showFlyouts","setShowFlyouts","randomContribution","setRandomContribution","getRandomContribution","max","Math","floor","random","flyoutTimer","clearTimeout","setInterval","clearInterval","hideInterval","currency_code","formatFeatured","contributions","totalContributions","formattedList","first","find","badge","toUpperCase","selfItem","getIsMobile","innerWidth","LandingDonorWall","reactLazy","LandingRichTextDisplay","OrganizerUpdates","_templateData$donatio","isPaymentCardOpen","setIsPaymentCardOpen","targetAmount","campaignTotalNumberOfTxn","amountRaisedWithCurrencySymbol","roundUpAndFormatCurrency","featured","list","setContributionsList","contributionsError","setContributionsError","setCurrentPage","_useState9","_useState10","setIsLoading","_useState11","_useState12","retry","setRetry","_useState13","_useState14","enableReadMore","setEnableReadMore","_useState15","_useState16","_useState17","_useState18","descriptionHeight","setDescriptionHeight","_useState19","_useState20","_useState21","_useState22","originalDescriptionHeight","setOriginalDescriptionHeight","_useState23","_useState24","stickToTop","_useHasScrolledToPosition","isMobile","setIsMobile","throttledFn","throttle","useIsMobile","fetchData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_result$contributions","_result$contributions2","_result$contributions3","_result$contributions4","_result$contributions5","wrap","_context","prev","next","productId","sent","stop","handleShowMore","goalAmtWithCurrencySymbol","campaignGoalTitle","goalAmount","getCampaignMessage","formatObj","advancedEndDateBadgeContent","minute","minutes","hour","hours","day","days","month","months","year","years","endsInContent","duration","unit","endedContent","date","renderEndDateBadge","_AdvancedEndDateBadge","endTime","currentTime","formatDate","parseDateOnly","renderTitle","_Title","campaignTitle","renderGoalProgressMeter","_GoalProgressMeter","round","toString","steps","headerClasses","sticky","renderDonorWall","_contributionsList$li","endDate","totalNumberOfTransactions","paginationLimit","setHours","renderContributionsError","stickyHeader","social_title","getSocialMessage","incrementDescription","incrementedHeight","_CampaignImage","_Card","Content","PPCC","maxHeight","descriptionContainer","clientHeight","Suspense","fallback","_LoadingSpinner","campaignDescription","ConfirmationSocialShare","social","emailSubject","emailBody","mobileText","facebookMessage","twitterMessage","whatsappMessage","copyLinkHeader","copyLinkSubheaderBefore","copyLinkSubheader","copiedText","copyText","subheader","shareGeneric","donationEmail","lg","trackDonateLandingButtonClick","mobileFixedHeight","wrapperClassName","skipFormFocus","CVVComponent","getCardSpec","errorMessageCSC","handleSecurityCodeChange","fieldRequired","fieldInvalid","newErrorState","validateInputValue","_this$state$cardSpec$","cscLen","cscMax","cscLabel","handleFieldFocus","handleFieldBlur","PaymentInformation","paymentDigits","paymentType","issuer","isPaypalCurrencyConversion","funds","paymentLogo","setPaymentLogo","transformText","str","charAt","_source$payment_card$","_source$payment_card","_source$payment_card$2","payment_card","thumbnail_logo_url","CDN_HOST_NAME","CreditCardIcon","split","CaptionText","Badge","CurrencyConversionOption","Card","isSelected","aria-checked","tabIndex","handleOptionSelection","onKeyDown","doFunction","which","KEY_DOWN","SPACE","ENTER","checkKeyPressed","PaypalAppIcon","rate","as","CheckmarkBackgroundIcon","CurrencyConversionModal","withPaypaltitle","withPaypalRate","withPaypalmessage","withCardtitle","withCardmessage","CURRENCY_CONVERSION_OPTIONS","isPayPalSelected","setPaypalSelected","Sheet","HeadingText","Button","ISSUER","CrossBorder","fundingSources","lastFundingSource","tags","currencyConversionOption","getLocalizedCurrency","stateCurrency","hasFees","inCurrency","outCurrency","currencyConversionOpen","setCurrencyConversionOpen","CURRENCY_CONVERSION","pageSpec","PAGE_SPEC","CROSS_BORDER_PAGE","sources","_includes","getUserCountry","finally","handleCurrencyConversionClick","FeePricing","_feeAmounts$payment_a","_feeAmounts$payment_a2","_feeAmounts$total_fee","_feeAmounts$total_fee2","_feeAmounts$total_amo","_feeAmounts$total_amo2","feeAmounts","openHelperSheet","setOpenHelperSheet","paymentAmount","payment_amount","totalFee","total_fee","totalAmountPaid","total_amount_paid","_QuestionSmIcon","getGiftAidItExtraAmount","GuestReview","spinnerOverlay","endCPLTracking","observeUntilEventObserved","attributes","observer","disconnect","totalDecimals","parseFloat","maximumFractionDigits","newAmount","formatCurrencyAsString","showCurrencyConversionModal","isCurrencyConversionModalOpen","showCVVField","cvv","childCVVInfo","getElementsByClassName","processDonation","threeDSContainer","initializeThreeDS","_this$state$securityC","trackGuestReviewPageDonateClick","isCvvSend","giftAidState","_this$state$securityC2","track3DSProceedToPayment","isRecurring","stateConversionWithPayPal","getStateForConversionWithPayPal","amountDecimalPoint","endCustomCPLTracking","_fundingSources$payme","_fundingSources$payme2","_fundingOptions$curre","_fundingOptions$curre2","_fundingOptions$curre3","paymentNetwork","last_4","currency_conversion","fundsIn","funds_in","fundsOut","funds_out","fee_amount","paymentCard","issuerName","inAmount","inSymbol","outAmount","outSymbol","currencyConversion","fundingCode","getStateForConversionWithIssuer","currencyConversionType","paymentCardId","preferences","payment_card_id","validity","consentShareAddress","getShareAddress","hasCvvContingency","isCvvContingencyResolved","updateFundingOptionsState","giftaidFlag","isGiftaiditEnabled","form","isPPUnlistedCampaign","MessageWithHTML","handleDonateClick","handleThreeDSStepUpAuthSuccess","handleThreeDSFailure","GuestConfirmationPending","withPageTrack","withPostTransactionRequest","PendingView","GuestConfirmationSuccess","SuccessView","body2","linkLabel","handleLinkClick","buttonLabel","handleButtonClick","_ref$showCloseButton","showCloseButton","_ref$centerBody","centerBody","_Link","PaymentError","ERROR_CODE","getPaymentError","trackErrorPageIM","GUEST_FAILURE_PAGE","WENT_WRONG","TEMP_GLITCH","tryagain","getErrorMessage","customerServiceLink","FullPageError","handleTryAgain","UnilateralError","UNILATERAL_ERROR_PAGE","noAccountErrorMessage","align","Illustration","ConfirmationBody","message","ThreeDSError","ConfirmationTitle","CaptureOrder","orderStatus","getOrderStatus","authState","isMemberFlow","isOneTouchUser","handlePaymentSuccess","handleConfirmation","flow","trackCaptureOrderPageIM","accessToken","isSubmitted","backBtnVisible","responseData","wTransactionEntry","requestError","timerCount","CancelAndReturnOrder","waitForXProps","xprops","close","charityCancelUrl","_templateData$localit","locality","_templateData$localit3","setShouldRTL","currentUserState","isUnilateralAccount","GuestPage","reactLazyPreload","FallbackSpinner","userCookied","isOneTouch","isGNC","isPPCampaign","preload","parseUrlQuery","signup","CookiedUserPage","getPageToRender","CampaignLandingPage","CampaignLanding","RouterWithWorldReady","Router","Switch","Route","exact","path","component","CancelAndRedirectOrder","Review","MemberConfirmationSuccess","MemberConfirmationPending","Footer","ReactDOM","render","all","loadScript","loadSlickProgressiveOnboarding","scriptPath","reject","nonce","script","appendChild","onerror","readyState","importStatement","lazyComponent"],"mappings":"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","file":"donate.423ddb5585c59bfaa933.bundle.js","sourcesContent":["import React from 'react';\nimport { Sheet, BodyText, Button, HeadingText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport PropTypes from 'prop-types';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport { appendCdnHostName } from '../utility/geoUtils';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst styles = StyleSheet.create({\n modalContent: {\n maxWidth: 600,\n margin: '0 auto',\n },\n okButton: {\n marginTop: 36,\n },\n msgMargin: {\n marginTop: '24px',\n },\n});\n\nexport default function DonateGiftAidHowItWorksOverlay(props) {\n const { orgName } = props;\n\n return (\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n
\n \n
\n \n
\n
\n
\n
\n \n );\n}\n\nDonateGiftAidHowItWorksOverlay.propTypes = {\n orgName: PropTypes.string,\n isOpen: PropTypes.bool,\n closeOverlay: PropTypes.func,\n};\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect } from 'react';\nimport { Checkbox, CaptionText, Button } from '@paypalcorp/pp-react';\nimport DonateGiftAidHowItWorksOverlay from './DonateGiftAidHowItWorksOverlay';\nimport { appendCdnHostName } from '../utility/geoUtils';\nimport { BodyText } from '@paypalcorp/pp-react-text';\nimport { Message } from '@paypalcorp/worldready-react';\nimport { normalizeNumber, formatAmount } from '../utility/formator';\n\nconst DonateGiftAid = ({\n isAlreadyEnrolled,\n isChecked,\n handleGiftAidOption,\n addressData,\n showAddress,\n giftaidInfo,\n}) => {\n const [showHelp, setShowHelp] = useState(isChecked);\n const [checked, setChecked] = useState(isChecked);\n const [isHowItWorksOverlayOpen, setIsHowItWorksOverlayOpen] = useState(false);\n const { donateGiftPercentage, donationCode, amount, orgName } = giftaidInfo;\n\n useEffect(() => {\n if (isAlreadyEnrolled) {\n setShowHelp(false);\n }\n }, [isAlreadyEnrolled]);\n\n const handleCheckbox = (env) => {\n const checkedValue = env.target.checked;\n setChecked(checkedValue);\n setShowHelp(checkedValue);\n handleGiftAidOption(checkedValue);\n };\n\n const openHowItWorksOverlay = () => {\n setIsHowItWorksOverlayOpen(true);\n };\n\n const closeHowItWorksOverlay = () => {\n setIsHowItWorksOverlayOpen(false);\n };\n\n const getGiftAidExtraAmount = () => {\n const giftaidAmount = donateGiftPercentage * normalizeNumber(amount);\n return formatAmount({ value: giftaidAmount, currency: donationCode });\n };\n\n const getPaymentAmount = () =>\n formatAmount({ value: normalizeNumber(amount), currency: donationCode });\n\n return (\n
\n
\n \n \n {getPaymentAmount()}}\n extraAmount={{getGiftAidExtraAmount()}}\n />\n \n \n \n \n\n {isAlreadyEnrolled && (\n
\n \n \n \n \n
\n )}\n {!isAlreadyEnrolled && (\n }\n name=\"giftaidCheckbox\"\n id=\"giftaidCheckbox\"\n className=\"inline-block\"\n onChange={handleCheckbox}\n checked={checked}\n />\n )}\n\n {showHelp && (\n
\n
\n \n \n \n
\n {showAddress && (\n
\n \n \n \n
    \n
  • {addressData.fullName}
  • \n
  • {addressData.address1}
  • \n
  • {addressData.address2}
  • \n
  • {addressData.city}
  • \n
  • \n {addressData.state}, {addressData.zip}\n
  • \n
\n
\n )}\n
\n \n \n \n
\n
\n )}\n\n \n
\n
\n );\n};\n\nDonateGiftAid.propTypes = {\n isAlreadyEnrolled: PropTypes.bool,\n showAddress: PropTypes.bool,\n addressData: PropTypes.any,\n isChecked: PropTypes.bool,\n handleGiftAidOption: PropTypes.func,\n giftaidInfo: PropTypes.object,\n isMember: PropTypes.bool,\n};\n\nexport default DonateGiftAid;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CriticalIcon } from '@paypalcorp/pp-react-icons';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react-theme';\nimport { trackErrorIM } from '../../fpti/fpti';\n\nconst { sysColorUnselectedContrast } = PAYPAL_THEME;\n\nconst STYLES = {\n error: {\n color: sysColorUnselectedContrast,\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\n trackErrorIM({\n errorCode: errorCode || 'DONATION_AMOUNT_VALIDATION_ERROR',\n errorMessage: errorString,\n fieldName: errorSourceField,\n });\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 { 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 const padding = symbol.length * 10 + 10;\n document.getElementById('fromAmount').style.paddingLeft = `${padding}px`;\n };\n\n validateAmount = (ev, callback) => {\n const val = ev.target.value;\n const 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 const 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, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { PresetAmounts } from '@paypalcorp/donate-react';\nimport templateData from '../../utility/getTemplateData';\nimport * as AppActions from '../../actions/AppActions';\nimport AppStore from '../../stores/AppStore';\nimport {\n isOptInCoverFee,\n shouldSelectPresetAmount,\n} from '../coverFee/feeUtils';\nimport { formatAmountFromServerDNW, isRightSymbol } from './amountUtils';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { trackSelectedPresetAmount } from '../../fpti/helper';\n\nfunction PresetAmountRow(props) {\n const worldready = useContext(WorldReadyContext);\n const presetOther = new MessageFormat(worldready, {\n id: 'common.amount.amount.presetOther',\n }).format();\n const placeholderOtherAmount = new MessageFormat(worldready, {\n id: 'common.amount.amount.placeholderOtherAmount',\n }).format();\n\n const getSelectedOption = () => {\n if (AppStore.getDonationAmountType() === 'preset') {\n return AppStore.getDonationAmount();\n } else if (AppStore.getDonationAmountType() === 'userinput') {\n return 'Other';\n }\n return '';\n };\n\n const [presetAmounts, setPresetAmounts] = useState(\n templateData.presetAmounts\n ),\n [selectedOption, setSelectedOption] = useState(getSelectedOption()),\n [showOtherAmount, setShowOtherAmount] = useState(\n AppStore.getDonationAmountType() === 'userinput' ? true : false\n ),\n [amountFieldValue, setAmountFieldValue] = useState(props.charityAmount);\n\n const handlePresetAmountClick = (value) => {\n setSelectedOption(value);\n\n const indexValue = presetAmounts.indexOf(value);\n\n trackSelectedPresetAmount(indexValue >= 0 ? indexValue : 'other');\n if (value !== 'Other') {\n // To be consistent with the hero currency component\n // we need to update donationAmount in store with only\n // normalized number\n props.handleAmountChange(value);\n // Highlight the selected button\n setShowOtherAmount(false);\n setPresetAmounts(templateData.presetAmounts);\n // Clear the errors from amount field\n props.hideValidationError();\n\n AppActions.updateDonationAmountType('preset');\n } else {\n props.handleAmountChange('');\n AppActions.updateSelectedPresetButtonId('other');\n AppActions.updateDonationAmountType('userinput');\n setShowOtherAmount(true);\n }\n };\n\n useEffect(() => {\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 setAmountFieldValue('');\n handlePresetAmountClick(amountBeforeFee);\n } else {\n setAmountFieldValue(amountBeforeFee);\n }\n }\n }, []);\n\n const handleAmountChange = (amount) => {\n if (amount > 0) {\n props.handleAmountChange(amount);\n }\n };\n\n const getPresetOptions = (values, symbol, charityAmountCode) => {\n const result = values.map((value) => {\n let amountDisplayValue;\n\n if (isRightSymbol()) {\n amountDisplayValue = symbol\n ? `${formatAmountFromServerDNW(value, {\n noDecimals: true,\n })} ${symbol}`\n : `${formatAmountFromServerDNW(value, {\n noDecimals: true,\n })}`;\n } else {\n amountDisplayValue = symbol\n ? `${symbol} ${formatAmountFromServerDNW(value, {\n noDecimals: true,\n })}`\n : `${formatAmountFromServerDNW(value, {\n noDecimals: true,\n })}`;\n }\n\n return {\n label: amountDisplayValue,\n secondaryLabel: charityAmountCode,\n value,\n };\n });\n return [...result, { label: presetOther, value: 'Other' }];\n };\n\n const presetOptions = getPresetOptions(\n presetAmounts,\n props.charityAmountSymbol,\n props.charityAmountCode\n );\n\n return (\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 '@paypalcorp/donate-react';\nimport { BodyText } from '@paypalcorp/pp-react';\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';\nimport { __getInitialData } from '../utility/formator';\nimport { trackErrorIM } from '../fpti/fpti';\nimport { addFeature, setAmountTypeFpti } from '../fpti/helper';\nimport { FEATURES } from '../fpti/fptiConstants';\nimport { getWorldReady } from '../utility/worldReadyUtils';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nclass AmountWrapper extends React.Component {\n constructor(props) {\n super(props);\n const currencyObj = JSON.parse(\n document.getElementById('currencyLists').innerHTML || {}\n );\n const { currencies: currencyLists, symbols: currencySymbols } =\n currencyObj || {};\n const html = document.getElementsByTagName('html')[0];\n this.directionality = html.getAttribute('dir');\n\n const userCountry = TemplateData.donorIpCountry;\n const availableCurrencies = currencyLists[userCountry] || currencyLists.US;\n const userAmountCode = availableCurrencies[0];\n const charityAmountCode = AppStore.getDonationCode();\n const isEditable = !!TemplateData.donationAmountEditable;\n // let showCBCalculator = TemplateData.pxp && TemplateData.pxp.calculator && TemplateData.pxp.calculator.experiment || false;\n\n const 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 if (this.state.isAmountEditable) {\n addFeature(FEATURES.DONATION_AMOUNT_EDITABLE);\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 const 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 setAmountTypeFpti('other');\n AppActions.updateDonationAmountType('userinput');\n }\n }\n };\n\n handleAmountFocus() {\n this.props.onFocus();\n }\n\n handleUserAmountChange = (amount) => {\n const snapshot = {\n userAmount: amount,\n charityDisabled: true,\n };\n const 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 const snapshot = {\n userAmountCode: currencyCode,\n charityDisabled: true,\n };\n const 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 const snapshot = {\n charityAmount: amount,\n userDisabled: true,\n };\n const 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 handleTrackError = (errorCode, errorString, errorSourceField) => {\n trackErrorIM({\n errorCode: errorCode || 'DONATION_AMOUNT_VALIDATION_ERROR',\n errorMessage: errorString,\n fieldName: errorSourceField,\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\n const presetAmountsCondition =\n TemplateData.enablePresetAmounts &&\n !this.state.isCalculator &&\n !this.isGuestReviewPage();\n\n if (presetAmountsCondition) {\n addFeature(FEATURES.PRESET);\n }\n\n return presetAmountsCondition;\n };\n\n renderPresetAmounts = () => {\n return (\n \n );\n };\n\n getRecurringLabel = () => {\n const worldReady = getWorldReady();\n switch (this.props.selectedRecurringFrequency) {\n case 'Week':\n return new MessageFormat(worldReady, {\n id: 'guest.guestForm.label.perWeek',\n }).format();\n case 'Month':\n return new MessageFormat(worldReady, {\n id: 'guest.guestForm.label.perMonth',\n }).format();\n case 'Year':\n return new MessageFormat(worldReady, {\n id: 'guest.guestForm.label.perYear',\n }).format();\n default:\n return null;\n }\n };\n\n render() {\n if (this.shouldShowPresetAmounts()) {\n return (\n
\n {this.renderPresetAmounts()}\n
\n );\n }\n\n return (\n
\n {this.state.isCalculator ? (\n \n ) : (\n <>\n \n \n {AppStore.getDonationRecurring() === 'checked' && (\n {this.getRecurringLabel()}\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 selectedRecurringFrequency: PropTypes.string,\n};\n\nexport default AmountWrapper;\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 const { errorMessage } = this.props;\n\n return (\n
\n \n
\n );\n }\n}\n\nexport default CardSecurityCode;\n","import React, { Component } from 'react';\nimport AppStore from '../../stores/AppStore';\nimport _get from 'lodash/get';\nimport { getPaymentCardNetwork } from '../../utility/card-utils';\nimport { StyleSheet, css } from 'aphrodite';\nimport _isEmpty from 'lodash/isEmpty';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport { appendCdnHostName } from '../../utility/geoUtils';\nimport withTheme from '../../components/withTheme';\nimport { BodyText, HeadingText } from '@paypalcorp/pp-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\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 const 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 const worldReady = this.context;\n return (\n
\n
\n
\n {/*
*/}\n
\n \n
\n \n {new MessageFormat(worldReady, {\n id: 'common.threeDSecure.confirmingWith',\n }).format({\n network: this.state.network,\n })}\n \n
\n {this.state.cardImg ? (\n \"Card\n ) : (\n ''\n )}\n
\n
\n \n {new MessageFormat(worldReady, {\n id: 'common.threeDSecure.wontTakeLong',\n }).format()}\n \n \n {new MessageFormat(worldReady, {\n id: 'common.threeDSecure.DoNotCloseOrRefresh',\n }).format()}\n \n
\n
\n
\n
\n );\n }\n}\n\nThreeDSSpinner.contextType = WorldReadyContext;\n\nexport default withTheme(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';\nimport { trackThreeDsDdcFailure } from '../../fpti/fpti';\nimport { FPTI_TAGS } from '../../fpti/fptiConstants';\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 return (\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {}\n );\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\n const messageType = _get(data, 'MessageType', '');\n if (messageType === 'profile.completed') {\n this.onDDCComplete(event);\n } else {\n trackThreeDsDdcFailure({\n [FPTI_TAGS.STATUS]: messageType,\n });\n console.log('DDC not completed with message type: ', messageType);\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.contextType = WorldReadyContext;\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 withTheme(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 { fetcher } from '../../utility/domUtils';\nimport { FPTI_TAGS } from '../../fpti/fptiConstants';\nimport templateData from '../../utility/getTemplateData';\nimport {\n trackThreeDsDdcComplete,\n trackThreeDsDdcStart,\n trackThreeDsLookupComplete,\n trackThreeDsLookupStart,\n} from '../../fpti/fpti';\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 const startTime = new Date().getTime();\n this.setState({\n showThreeDSDeviceDataCollection: true,\n showThreeDSSpinner: true,\n threeDSDCCStartTime: startTime,\n });\n\n const fptiData = {\n [FPTI_TAGS.THREE_DS_DCC_START_TIME]: startTime,\n [FPTI_TAGS.THREE_DS_SPINNER_START_TIME]: startTime,\n };\n trackThreeDsDdcStart(fptiData);\n }\n\n handleThreeDSDDCComplete = () => {\n this.setState({\n showThreeDSDeviceDataCollection: false,\n });\n\n const threeDSDCCEndTime = new Date().getTime();\n const fptiData = {\n [FPTI_TAGS.THREE_DS_DCC_START_TIME]: this.state.threeDSDCCStartTime,\n [FPTI_TAGS.THREE_DS_DCC_END_TIME]: threeDSDCCEndTime,\n [FPTI_TAGS.THREE_DS_SPINNER_START_TIME]: this.state.threeDSDCCStartTime,\n [FPTI_TAGS.THREE_DS_SPINNER_END_TIME]: threeDSDCCEndTime,\n };\n trackThreeDsDdcComplete(fptiData);\n this.resolveThreeDSContingency();\n };\n\n resolveThreeDSContingency = () => {\n trackThreeDsLookupStart({\n [FPTI_TAGS.THREE_DS_LOOKUP_START_TIME]: new Date().getTime(),\n });\n\n fetcher('/donate/guest/resolve-threeds-contingency', {\n method: 'POST',\n body: JSON.stringify({\n token: templateData.token,\n onboardingEnabled: templateData.onboardingEnabled,\n }),\n })\n .then((response) => response.json())\n .then((result) => {\n this.hideThreeDSSpinner();\n\n const threeDSContingency = _get(result, 'data.threeDSContingency');\n const resolved = _get(threeDSContingency, 'threeDSContingencyResolved');\n\n trackThreeDsLookupComplete({\n timestamp: {\n [FPTI_TAGS.THREE_DS_LOOKUP_END_TIME]: new Date().getTime(),\n },\n [FPTI_TAGS.CONTINGENCY_RESOLVED]: resolved,\n [FPTI_TAGS.URL]: _get(\n threeDSContingency,\n 'threeDS2Contingency.3d_secure_redirect_link'\n ),\n [FPTI_TAGS.ACTION]: _get(\n threeDSContingency,\n 'threeDS2Contingency.action'\n ),\n });\n\n if (resolved) {\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, 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, { Component } from 'react';\nimport templateData from '../../utility/getTemplateData';\nimport {\n handleGuestCountryChange,\n hideSpinnerOverlay,\n showSpinnerOverlay,\n} from '../../utility/helper';\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';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from '../../utility/worldReadyUtils';\n\nconst initialData = getInitialData();\n\nconst ERROR_ELEMENT_SELECTOR = [\n '.vx_has-error-with-message',\n '.service_error_holder',\n].join();\n\nfunction withDonate(WrappedComponent) {\n const worldReady = getWorldReady();\n\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 if (country !== this.country) {\n this.toggleSpinner(true);\n DonateAppActions.changeCountry({\n country: country,\n });\n this.country = country;\n\n // Beacons for country change\n trackLinkClick(LINK_NAME.CHANGE_COUNTRY, {\n additionalData: {\n [FPTI_TAGS.COUNTRY]: country,\n },\n });\n\n const { token, signUp = false } = templateData;\n const url = signUp\n ? `/donate?token=${token}&signup=true&country.x=${country}`\n : `/donate?token=${token}&country.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 const 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 const errorCode = 'WSM_TRANSACTION_FAILED_DUE_TO_INVALID_CARD_DATA';\n const errorMsgs = [\n {\n key: 0,\n value: new MessageFormat(worldReady, {\n id: `errors.service.${errorCode}`,\n }).format(),\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 token: templateData.token,\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 onboardingEnabled: templateData.onboardingEnabled,\n selectedRecurringFrequency: AppStore.getSelectedRecurringFrequency(),\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(\n `/donate/error/payment?token=${templateData.token}`\n );\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 const 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 confirmationData = result.data.confirmationData || {};\n const { selectedRecurringFrequency } = confirmationData;\n const queryParams = objectOrArrayToQueryString({\n token,\n selectedRecurringFrequency,\n });\n\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(\n `/donate/error/payment?token=${templateData.token}`\n );\n }\n })\n .catch(() => {\n this.toggleSpinner(false);\n this.props.history.push(\n `/donate/error/payment?token=${templateData.token}`\n );\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(\n `/donate/error/payment?token=${templateData.token}`\n );\n }\n })\n .catch(() => {\n this.toggleSpinner(false);\n this.props.history.push(\n `/donate/error/payment?token=${templateData.token}`\n );\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","/**\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 { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from './worldReadyUtils';\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 (const card in cardTypes) {\n const 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 const worldReady = getWorldReady();\n switch (source.network) {\n case PAYMENT_CARDS.VISA:\n return new MessageFormat(worldReady, {\n id: 'common.fundingTypes.fundingType.visa',\n }).format();\n case PAYMENT_CARDS.MASTERCARD:\n case PAYMENT_CARDS.MASTER_CARD:\n return new MessageFormat(worldReady, {\n id: 'common.fundingTypes.fundingType.mastercard',\n }).format();\n case PAYMENT_CARDS.MAESTRO:\n return new MessageFormat(worldReady, {\n id: 'common.fundingTypes.fundingType.maestro',\n }).format();\n case PAYMENT_CARDS.AMEX:\n return new MessageFormat(worldReady, {\n id: 'common.fundingTypes.fundingType.amex',\n }).format();\n case PAYMENT_CARDS.DISCOVER:\n return new MessageFormat(worldReady, {\n id: 'common.fundingTypes.fundingType.discover',\n }).format();\n case PAYMENT_CARDS.CHINA_UNION_PAY:\n return new MessageFormat(worldReady, {\n id: 'common.fundingTypes.fundingType.china_union_pay',\n }).format();\n default:\n return source.network;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CriticalIcon } from '@paypalcorp/pp-react-icons';\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, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport templateData from '../utility/getTemplateData';\nimport * as AppActions from '../actions/AppActions';\nimport AppStore from '../stores/AppStore';\nimport { addClass, removeClass } from '../utility/domUtils';\nimport {\n isExternalFlow,\n isCampaigns,\n} from '../utility/productIntegrationUtils';\nimport isEmpty from 'lodash/isEmpty';\nimport { EVENT_NAME } from '../utility/constants';\nimport { IconButton, TextArea, BodyText, AddIcon } from '@paypalcorp/pp-react';\nimport NoteFieldError from './NoteFieldError';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nconst MAX_CHAR_LIMIT = 250;\n\nfunction NoteComponent(props) {\n const worldReady = useContext(WorldReadyContext);\n\n const label = new MessageFormat(worldReady, {\n id: 'common.note.note.label',\n }).format();\n const lengthLimit = new MessageFormat(worldReady, {\n id: 'common.note.note.error.lengthLimit',\n }).format();\n const campaignsLabel = new MessageFormat(worldReady, {\n id: 'common.note.note.campaigns.label',\n }).format();\n\n let providedLabel = isCampaigns() ? campaignsLabel : label;\n\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 const isNoteTextPresent = donationNote.length > 0 ? true : false;\n\n useEffect(() => {\n if (!showLabel && !isEmpty(textAreaEl)) {\n textAreaEl.current.focus();\n }\n }, [showLabel]);\n useEffect(() => {\n if (isNoteTextPresent) {\n setShowLabel(false);\n }\n }, []);\n useEffect(() => {\n if (props.isNotePreview) {\n setNoteLabel(initialNoteLabel);\n }\n }, [initialNoteLabel]);\n\n const directionality = templateData.contextLocalityDir;\n\n const handleClick = () => {\n trackLinkClick(LINK_NAME.NOTE_PAD, {\n eventName: isExternalFlow()\n ? EVENT_NAME.DW_GIVING_DONATE_SETUP_COMMENT_PRESSED\n : '',\n });\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 setShowLabel(true);\n }\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 \n );\n}\n\nNoteComponent.propTypes = {\n label: PropTypes.string,\n isNotePreview: PropTypes.bool,\n};\n\nexport default NoteComponent;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport * as AppActions from '../../actions/AppActions';\nimport { Checkbox, Tooltip } from '@paypalcorp/pp-react';\nimport { EVENT_NAME } from '../../utility/constants';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FEATURES, LINK_NAME } from '../../fpti/fptiConstants';\nimport { addFeature } from '../../fpti/helper';\n\nconst AnonymousCheckbox = ({\n content,\n optInStatus,\n handleAnonymousDonationChange,\n}) => {\n useEffect(() => {\n addFeature(FEATURES.ANONYMOUS);\n }, []);\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 trackLinkClick(LINK_NAME.ANONYMOUS_TOOLTIP, {\n eventName: 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","function setDonateLoaded() {\n document.getElementsByTagName('body')[0].setAttribute('donate-loaded', true);\n}\n\nsetDonateLoaded();\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@paypalcorp/pp-react';\nimport { appendCdnHostName } from '../../../lib/geoUtils';\nimport { Message } from '@paypalcorp/worldready-react';\n\nclass NextButtonComponent extends React.Component {\n render() {\n return (\n \n \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 location from '@paypalcorp/instance-location';\n\nexport const appendCdnHostName = (url) => {\n return `https://${location.getCdnHostName()}${url}`;\n};\n\nexport const getCdnHostName = () => {\n return `https://${location.getCdnHostName()}`;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@paypalcorp/pp-react';\nimport { Message } from '@paypalcorp/worldready-react';\n\nclass OneTouchNextButton extends React.Component {\n render() {\n return (\n \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 { Button } from '@paypalcorp/pp-react';\nimport { addFeature } from '../fpti/helper';\nimport { FEATURES } from '../fpti/fptiConstants';\nimport { Message } from '@paypalcorp/worldready-react';\n\nclass GuestButton extends React.Component {\n componentDidMount() {\n addFeature(FEATURES.GUEST);\n }\n\n render() {\n return (\n \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 from 'react';\nimport PropTypes from 'prop-types';\nimport { BodyText, Alert } from '@paypalcorp/pp-react';\nimport { Message } from '@paypalcorp/worldready-react';\nexport default function RecurringInfo({ orgName, amount }) {\n return (\n \n \n {orgName}}\n />\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 AppActions from '../../actions/AppActions';\nimport AppStore from '../../stores/AppStore';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport TemplateData from '../../utility/getTemplateData';\nimport { isLTR as isLeftToRight } from '../../utility/helper';\nimport { loadBodyMovin } from '../../utility/lazyLoader';\nimport { formatAmount } from '../../utility/formator';\nimport { sanitizeOrgName } from '../../utility/domUtils';\nimport RecurringInfo from './RecurringInfo';\nimport { Checkbox, Tooltip, Modal } from '@paypalcorp/pp-react';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FEATURES, FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport { addFeature } from '../../fpti/helper';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nconst orgname = TemplateData.donationName ? TemplateData.donationName : '';\nconst isLTR = isLeftToRight();\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 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 addFeature(FEATURES.RECURRING);\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(() => {\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 const animationData = window.heartsAnimationData;\n const bodymovinLibrary = window.bodymovin;\n if (!bodymovinLibrary || !animationData) {\n return;\n }\n this.setState({\n isAnimating: true,\n });\n\n bodymovinLibrary.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 bodymovinLibrary.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\n trackLinkClick(LINK_NAME.RECURRING_CHECKBOX, {\n additionalData: {\n [FPTI_TAGS.CHECKBOX]: chkBxStatus,\n },\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 getHelperTextContent = (type) => {\n switch (type) {\n case 'Trmt_cause:wps::donate:donor:recurring_helper_text':\n return 'common.recurring-checkbox.recurring_checkbox.helper_text';\n case 'Trmt_cause:wps::donate:donor:recurring_helper_text_2':\n return 'common.recurring-checkbox.recurring_checkbox.helper_text_2';\n case 'Trmt_cause:wps::donate:donor:recurring_helper_text_3':\n return 'common.recurring-checkbox.recurring_checkbox.helper_text_3';\n case 'Trmt_cause:wps::donate:donor:recurring_helper_text_4':\n return 'common.recurring-checkbox.recurring_checkbox.helper_text_4';\n default:\n return '';\n }\n };\n\n render() {\n const worldReady = this.context;\n const checked = { checked: false };\n if (this.props.status) {\n checked.checked = true;\n }\n if (this.props.helperTextType) {\n const helperMessage = this.getHelperTextContent(\n this.props.helperTextType\n );\n if (helperMessage) {\n checked.helperText = new MessageFormat(worldReady, {\n id: helperMessage,\n }).format();\n }\n }\n return (\n \n \n \n
\n {isContinue ? (\n
\n \n {new MessageFormat(worldReady, {\n id: 'common.recurring-checkbox.rp.perMonth',\n }).format()}\n \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.contextType = WorldReadyContext;\n\nRecurringCheckBox.propTypes = {\n handleChange: PropTypes.func,\n status: PropTypes.bool,\n continue: PropTypes.bool,\n helperTextType: PropTypes.string,\n};\n\nRecurringCheckBox.defaultProps = {\n handleChange: () => {},\n};\n\nexport default RecurringCheckBox;\n","import React, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { DropdownMenu } from '@paypalcorp/pp-react-dropdown-menu';\nimport * as AppActions from '../../actions/AppActions';\nimport appStore from '../../stores/AppStore';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nconst Programs = ({ programNames, isDisabled }) => {\n const worldReady = useContext(WorldReadyContext);\n const [selectedProgram, handleSelect] = useState('');\n const programLabelMsgFmt = new MessageFormat(worldReady, {\n id: 'common.programs.programs.optional',\n });\n // programNames is coming as a string sometimes\n // Convert it to an array\n if (programNames && !Array.isArray(programNames)) {\n programNames = [programNames];\n }\n\n const getProgramOptions = () => {\n const options = [];\n programNames.forEach((programName) => {\n options.push({\n primaryText: programName,\n value: programName,\n });\n });\n\n return options;\n };\n\n const updateProgramId = (event) => {\n const {\n target: { value },\n } = event;\n handleSelect(value);\n AppActions.updateSelectedProgram(value);\n trackLinkClick(LINK_NAME.PROGRAM_SELECTED, {\n additionalData: {\n [FPTI_TAGS.CAMPAIGN]: value,\n },\n });\n };\n\n useEffect(() => {\n if (isDisabled) {\n handleSelect(programNames[0]);\n }\n }, [JSON.stringify(programNames)]);\n\n useEffect(() => {\n if (isDisabled) {\n return;\n }\n\n let programOption = getProgramOptions().findIndex(\n (program) => program.primaryText === appStore.getSelectedProgram()\n );\n programOption = programOption === -1 ? 0 : programOption;\n handleSelect(programNames[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 { Button, Sheet, HeadingText, BodyText } from '@paypalcorp/pp-react';\nimport TemplateData from '../../utility/getTemplateData';\nimport PropTypes from 'prop-types';\nimport { appendCdnHostName } from '../../utility/geoUtils';\nimport { sanitizeOrgName } from '../../utility/domUtils';\nimport BackButton from '../../components/BackButton';\nimport { isInContext } from '../../utility/inContextDonation';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport {\n Message,\n Context as WorldReadyContext,\n} from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nconst orgname = TemplateData.donationName ? TemplateData.donationName : '';\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 secondDialogLabel;\n\n switch (this.props.selectedRecurringFrequency) {\n case 'WEEK':\n secondDialogLabel = 'dialogp2Week';\n break;\n case 'YEAR':\n secondDialogLabel = 'dialogp2Year';\n break;\n default:\n secondDialogLabel = 'dialogp2';\n break;\n }\n\n const dialogp2MsgFmt = new MessageFormat(this.context, {\n id: `common.recurring-checkbox.rp.${secondDialogLabel}`,\n });\n const dialogp2 = dialogp2MsgFmt.format({\n orgName: sanitizeOrgName(orgname),\n });\n\n return (\n : null\n }\n noCloseButton={isInContext()}\n isOpen={this.props.isOpen}\n onClose={this.handleClose}\n closeOnBackgroundClick={false}\n className=\"recurring-signup-overpanel\"\n containerClassName={`${\n isInContext() ? 'incontext-guest-recurring' : ''\n }`}\n >\n
\n
\n \n \n
\n \n
\n \n
\n \n \n \n \n \n \n \n\n \n \n
\n
\n
\n \n \n \n
\n
\n
\n {dialogp2}\n
\n
\n
\n \n \n \n
\n
\n \n
\n\n
\n \n \n \n \n \n\n \n \n \n \n \n \n \n
\n
\n
\n \n );\n }\n}\nRecurringOverlay.contextType = WorldReadyContext;\nRecurringOverlay.propTypes = {\n closeRecurringOverlay: PropTypes.func,\n onMakeOneTimeDonation: PropTypes.func,\n onContinue: PropTypes.func,\n isOpen: PropTypes.bool,\n selectedRecurringFrequency: PropTypes.string,\n};\n\nexport default RecurringOverlay;\n","import React, { useEffect, useState } from 'react';\nimport { CaptionText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport AppDispatcher from '../dispatcher/AppDispatcher';\nimport * as AppConstants from '../utility/constants';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst styles = StyleSheet.create({\n disclaimerWrapper: {\n maxWidth: 350,\n margin: 'auto',\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 const [isPPCC, setIsPPCC] = useState(undefined);\n let dispatcherMessages;\n const registerAppDispatcherMessages = () => {\n dispatcherMessages = AppDispatcher.register((payload) => {\n if (\n payload.action &&\n payload.action.actionType === AppConstants.UPDATE_PPCC_STATUS\n ) {\n setIsPPCC(payload.action.item);\n }\n });\n };\n\n useEffect(() => {\n registerAppDispatcherMessages();\n return function cleanup() {\n AppDispatcher.unregister(dispatcherMessages);\n };\n }, []);\n if (isPPCC || isPPCC === undefined) return null;\n return (\n
\n \n \n \n
\n );\n}\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport * as AppActions from '../../actions/AppActions';\nimport { DonateCheckbox } from '@paypalcorp/donate-react';\nimport { addFeature } from '../../fpti/helper';\nimport { FEATURES } from '../../fpti/fptiConstants';\nimport { Message } from '@paypalcorp/worldready-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 useEffect(() => {\n addFeature(FEATURES.CTF);\n }, []);\n\n return (\n {formatedFeeAmount}}\n />\n }\n value={optInStatus}\n onChange={handleChange}\n checked={optInStatus}\n disabled={isDisabled || false}\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 '../../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 { formatAmount, normalizeNumber } from '../../utility/formator';\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';\nimport PropTypes from 'prop-types';\nimport {\n handleLogIn,\n addShake,\n handleTokenReuse,\n hideSpinnerOverlay,\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 {\n isOldButtonFactory,\n hasPartnerSource,\n} from '../../utility/getTemplateData';\nimport { isCampaigns } from '../../utility/productIntegrationUtils';\nimport { loadBodyMovin, waitForOnload } from '../../utility/lazyLoader';\nimport _isEmpty from 'lodash/isEmpty';\nimport Programs from '../../components/programs/Programs';\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 withDonate from '../../components/guest/WithDonate';\nimport withTheme from '../../components/withTheme';\nimport AnonymousCheckbox from '../../components/anonymousDonation/anonymousCheckbox';\nimport {\n getPersonalizedAnonymousContent,\n getPersonalizedNoteToPayeeLabel,\n isCheckoutRail,\n isExternalFlow,\n prepareOrderParams,\n} from '../../utility/productIntegrationUtils';\nimport NoteComponent from '../../components/note';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n trackAnonymousCheckboxClick,\n trackCoverFeeCheckboxClick,\n trackDonateWithCardClick,\n trackDonateWithPayPalClick,\n trackLandingPageIM,\n trackNextClickForCheckout,\n trackRecurringFrequencySelectionClick,\n} from '../../fpti/fpti';\nimport { CPL_PAGE_SPEC, FEATURES } from '../../fpti/fptiConstants';\nimport classNames from 'classnames';\nimport {\n BodyText,\n HeadingText,\n CaptionText,\n SegmentedController,\n SegmentedControllerPanel,\n} from '@paypalcorp/pp-react';\nimport { addFeature, setEnabledRecurringFrequency } from '../../fpti/helper';\nimport withWorldReady from '../../components/withWorldReady';\nimport {\n Message,\n Context as WorldReadyContext,\n} from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from '../../utility/worldReadyUtils';\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 let selectedTabIdx = '';\n if (templateData.supportedRecurringFrequencies) {\n switch (AppStore.getSelectedRecurringFrequency()) {\n case 'Week':\n selectedTabIdx =\n templateData.supportedRecurringFrequencies.indexOf('WEEK');\n break;\n case 'Month':\n selectedTabIdx =\n templateData.supportedRecurringFrequencies.indexOf('MONTH');\n break;\n case 'Year':\n selectedTabIdx =\n templateData.supportedRecurringFrequencies.indexOf('YEAR');\n break;\n default:\n selectedTabIdx =\n templateData.supportedRecurringFrequencies.indexOf('ONE_TIME');\n break;\n }\n }\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 supportedRecurringFrequencies: templateData.supportedRecurringFrequencies,\n supportedRecurringHelperText: templateData.supportedRecurringHelperText,\n recurringHelpText: '',\n recurringLabel: 'Make this a monthly donation',\n rpContinue: false,\n isAuthenticated: isAuthenticatedUser(),\n memberMandatory: templateData.memberMandatory,\n programNames:\n templateData.donateContext?.program_names || templateData.programNames,\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 selectedTabIdx: selectedTabIdx,\n };\n }\n\n componentDidMount = () => {\n window.onload = function () {\n setTimeout(function () {\n cpl.logPerformance(CPL_PAGE_SPEC.LANDING_PAGE);\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 // Adds recurring feature if there is more than one supported frequency\n setEnabledRecurringFrequency();\n\n if (templateData?.supportedRecurringFrequencies?.length > 1) {\n addFeature(FEATURES.RECURRING);\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 trackLandingPageIM({ noteFieldDisplayed: this.shouldShowNote() });\n\n // Pre-load bodyMovin\n if (templateData.recurringEnabled) {\n waitForOnload().then(() => {\n loadBodyMovin();\n });\n }\n\n if (!isLoggedInUser()) {\n AppActions.showLanguageSelector(true);\n }\n\n // Register for App Dispatcher Messages\n this.registerAppDispatcherMessages();\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 trackDonateWithCardClick({\n noteFieldDisplayed: this.shouldShowNote(),\n fptiData: {\n is_recurring: this.state.recurringStatus ? 'on' : 'off',\n fee_type: this.state.coverFeeEnabled ? 'offset' : 'none',\n },\n });\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 (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 // 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 if (amountUtils.isAmountGreaterThanZero(donationAmount)) {\n trackDonateWithPayPalClick({\n noteFieldDisplayed: this.shouldShowNote(),\n fptiData: {\n is_recurring: this.state.recurringStatus ? 'on' : 'off',\n fee_type: this.state.coverFeeEnabled ? 'offset' : 'none',\n },\n });\n handleLogIn();\n }\n };\n\n handleNextForCheckout = (event) => {\n event.preventDefault();\n if (!this.validateDonationAmount()) {\n return;\n }\n\n trackNextClickForCheckout({ noteFieldDisplayed: this.shouldShowNote() });\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 =\n amountUtils.validateMinimumDonationAmount('common.amount');\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 };\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 trackAnonymousCheckboxClick(status);\n };\n\n handleCoverFeeChange = (status = false) => {\n this.setState({ coverFeeOptInStatus: status });\n trackCoverFeeCheckboxClick(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 renderDisclaimer = (shouldRenderRecurringCheckbox = false) => {\n if (shouldRenderRecurringCheckbox) {\n return null;\n }\n if (\n this.state.supportedRecurringFrequencies &&\n this.state.supportedRecurringFrequencies[this.state.selectedTabIdx] ===\n 'ONE_TIME'\n ) {\n return null;\n }\n let rpContentHelper = null;\n switch (\n this.state.supportedRecurringFrequencies &&\n this.state.supportedRecurringFrequencies[this.state.selectedTabIdx]\n ) {\n case 'WEEK':\n rpContentHelper = 'helpText1Week';\n break;\n case 'MONTH':\n rpContentHelper = 'helpText1Month';\n break;\n case 'YEAR':\n rpContentHelper = 'helpText1Year';\n break;\n default:\n rpContentHelper = null;\n break;\n }\n\n if (rpContentHelper) {\n let totalAmount = 0;\n if (this.state.coverFeeOptInStatus) {\n totalAmount =\n +Number(AppStore.getDonationAmount()) +\n +normalizeNumber(AppStore.getFeeAmount());\n } else {\n totalAmount = +Number(AppStore.getDonationAmount());\n }\n\n const formattedTotalAmount = formatAmount({\n currency: templateData.donationCode,\n value: totalAmount,\n });\n\n return (\n \n \n \n );\n }\n return null;\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 const showNoteCondition =\n templateData.charityNoteEnabled &&\n !this.state.recurringStatus &&\n isExternalFlow();\n\n if (showNoteCondition) {\n addFeature(FEATURES.CHARITY_NOTE);\n }\n\n return showNoteCondition;\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 return classNames({\n gn_donate_wrapper: templateData.bannerUrl,\n donate_wrapper: !templateData.bannerUrl,\n context_gn_wrapper: isInContext(),\n 'user-banner': shouldShowUserBanner(),\n mobile_view: isMobileOrInContext(),\n });\n }\n\n shouldShowSupportText = () => {\n const amountRaised = templateData.campaignTotalAmountRaised || '0';\n const campaignStatus = templateData.campaignStatus;\n return (\n campaignStatus === 'INACTIVE' &&\n +amountRaised >= +templateData.campaignTargetAmount\n );\n };\n\n shouldShowNoDonationText = () => {\n const amountRaised = templateData.campaignTotalAmountRaised || '0';\n const campaignStatus = templateData.campaignStatus;\n return (\n campaignStatus === 'INACTIVE' &&\n ((!templateData.campaignEndTime && amountRaised === '0') ||\n templateData.campaignEndTime !== '')\n );\n };\n\n selectFrequencyTab = (e, tabIdx) => {\n let selectedRecurringFrequency = '';\n switch (this.state.supportedRecurringFrequencies[tabIdx]) {\n case 'ONE_TIME':\n selectedRecurringFrequency = null;\n break;\n case 'WEEK':\n selectedRecurringFrequency = 'Week';\n break;\n case 'MONTH':\n selectedRecurringFrequency = 'Month';\n break;\n case 'YEAR':\n selectedRecurringFrequency = 'Year';\n break;\n }\n AppActions.changeSelectedRecurringFrequency({ selectedRecurringFrequency });\n if (this.state.supportedRecurringFrequencies[tabIdx] === 'ONE_TIME') {\n AppActions.changeRecurring({\n recurring: 'unchecked',\n });\n } else {\n AppActions.changeRecurring({\n recurring: 'checked',\n });\n this.handleRecurringChange(true);\n }\n this.setState({ selectedTabIdx: tabIdx });\n trackRecurringFrequencySelectionClick();\n };\n\n selectedFrequencyCheckbox = (status = false) => {\n this.selectFrequencyTab(undefined, status ? 1 : 0);\n };\n\n render() {\n const { recurringEnabled } = this.state;\n const showUserBanner = shouldShowUserBanner();\n const showSupportText = this.shouldShowSupportText();\n const showNoDonationText = this.shouldShowNoDonationText();\n const worldReady = getWorldReady();\n const supportedRecurringFrequencies =\n this.state.supportedRecurringFrequencies?.map((freq) => {\n switch (freq) {\n case 'ONE_TIME':\n return new MessageFormat(worldReady, {\n id: 'common.recurring-checkbox.rp.frequency.oneTime',\n }).format();\n case 'WEEK':\n return new MessageFormat(worldReady, {\n id: 'common.recurring-checkbox.rp.frequency.weekly',\n }).format();\n case 'YEAR':\n return new MessageFormat(worldReady, {\n id: 'common.recurring-checkbox.rp.frequency.yearly',\n }).format();\n default:\n return new MessageFormat(worldReady, {\n id: 'common.recurring-checkbox.rp.frequency.monthly',\n }).format();\n }\n }) || [];\n const isMonthlyOnly =\n templateData.supportedRecurringFrequencies &&\n templateData.supportedRecurringFrequencies.length === 2 &&\n templateData.supportedRecurringFrequencies.indexOf('MONTH') >= 0;\n const shouldRenderRecurringCheckbox =\n recurringEnabled &&\n (supportedRecurringFrequencies.length === 0 || isMonthlyOnly);\n const shouldRenderRecurringSegmentedController =\n supportedRecurringFrequencies &&\n supportedRecurringFrequencies.length > 1 &&\n !shouldRenderRecurringCheckbox;\n\n if (!templateData.receiverCountryEligible) {\n return (\n \n \n \n );\n }\n\n return (\n
\n
\n {showUserBanner && !showNoDonationText && !showSupportText ? (\n \n ) : null}\n {isExternalFlow() && }\n \n {(() => {\n switch (true) {\n case showSupportText:\n return (\n \n \n \n );\n case showNoDonationText:\n return (\n \n \n \n );\n default:\n return (\n \n {shouldRenderRecurringSegmentedController && (\n ({\n label: option,\n id: `${option}-id`,\n panelId: `${option}-panelid`,\n }))}\n onClick={this.selectFrequencyTab}\n className=\"frequency-options\"\n >\n {supportedRecurringFrequencies.map((option) => (\n \n ))}\n \n )}\n \n {this.renderProgramsDropdown()}\n {!isCampaigns() && this.state.anonymousEnabled && (\n \n )}\n {this.shouldShowNote() && (\n \n )}\n {this.state.coverFeeEnabled && (\n \n )}\n {shouldRenderRecurringCheckbox && (\n \n )}\n {this.state.isVoucherFlow && (\n \n )}\n {this.renderDisclaimer(shouldRenderRecurringCheckbox)}\n {this.renderDonateButtons()}\n {this.state.isVoucherFlow && }\n {hasPartnerSource() && !this.state.isVoucherFlow && (\n \n )}\n \n {this.state.hasDisclaimer && (\n \n )}\n
\n );\n }\n })()}\n
\n \n \n );\n }\n}\n\nLandingPageComponent.propTypes = {\n history: PropTypes.object,\n};\n\nLandingPageComponent.contextType = WorldReadyContext;\n\nconst LandingPage = withRouter(\n withWorldReady(withDonate(withTheme(LandingPageComponent)))\n);\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 const campaignId = getParameterByName('campaign_id');\n\n if (!token && !business && !hostedButtonId && !campaignId) {\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\nLanding.propTypes = {\n history: PropTypes.object,\n};\n\nexport default withRouter(Landing);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { AvatarStack } from '@paypalcorp/pp-react';\nimport { DonorAvatar } from '@paypalcorp/donate-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { formatNumber, getWorldReady } from '../utility/worldReadyUtils';\nimport _isEmpty from 'lodash/isEmpty';\n\nconst WhosDonatedBanner = ({\n numberOfContributors,\n contributionsList,\n isLoading,\n}) => {\n let label;\n const worldReady = getWorldReady();\n\n if (numberOfContributors === 1) {\n const donorName = contributionsList?.[0]?.donor_name;\n const donatedAmount = contributionsList?.[0]?.amount;\n // checking for anonymous contributor\n label = _isEmpty(donorName)\n ? new MessageFormat(worldReady, {\n id: `landing.campaigns.oneAnonymousDonorMessage`,\n }).format()\n : new MessageFormat(worldReady, {\n id: `landing.campaigns.oneDonorMessage`,\n }).format({\n donor: donorName,\n amount: donatedAmount,\n });\n } else if (numberOfContributors === 2) {\n const donorOneName = contributionsList?.[0]?.donor_name;\n const donorTwoName = contributionsList?.[1]?.donor_name;\n // checking if any one of contributors is an anonymous contributor\n label =\n _isEmpty(donorOneName) || _isEmpty(donorTwoName)\n ? new MessageFormat(worldReady, {\n id: `landing.campaigns.donorMessage`,\n }).format({\n numberOfContributors: formatNumber(numberOfContributors),\n })\n : new MessageFormat(worldReady, {\n id: `landing.campaigns.twoDonorsMessage`,\n }).format({\n donorOneName: donorOneName,\n donorTwoName: donorTwoName,\n });\n } else {\n label = new MessageFormat(worldReady, {\n id: `landing.campaigns.donorMessage`,\n }).format({\n numberOfContributors: formatNumber(numberOfContributors),\n });\n contributionsList = contributionsList.slice(0, 3);\n }\n return (\n <>\n {!isLoading && contributionsList?.length > 0 && (\n \n {contributionsList.map((data, index) => {\n const showAnonymousAvatar = !data.shareDonorInfo;\n return (\n \n );\n })}\n \n )}\n \n );\n};\n\nWhosDonatedBanner.propTypes = {\n numberOfContributors: PropTypes.number,\n contributionsList: PropTypes.array,\n isLoading: PropTypes.bool,\n};\n\nexport default WhosDonatedBanner;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport useInterval from './hooks/useInterval';\nimport { formatAmount, normalizeNumber } from '../utility/formator';\nimport { BodyText } from '@paypalcorp/pp-react';\nimport { DonorAvatar } from '@paypalcorp/donate-react';\nimport { Message } from '@paypalcorp/worldready-react';\n\nfunction getRandomInt(max) {\n return Math.floor(Math.random() * max);\n}\n\nfunction Flyout({ contributionsList }) {\n const [startShowing, setStartShowing] = useState(false);\n const [showFlyouts, setShowFlyouts] = useState(false);\n const [randomContribution, setRandomContribution] = useState({});\n\n function getRandomContribution() {\n return contributionsList[getRandomInt(contributionsList.length)];\n }\n\n // Start showing flyouts after 10s\n useEffect(() => {\n const flyoutTimer = setTimeout(() => {\n setStartShowing(true);\n setShowFlyouts(true);\n setRandomContribution(getRandomContribution());\n }, 10000);\n return () => clearTimeout(flyoutTimer);\n }, []);\n\n // Get a new contribution and show flyout every 90s\n // Needs useInterval so that the contributionsList gets updated when more are loaded\n useInterval(\n () => {\n setShowFlyouts(true);\n setRandomContribution(getRandomContribution());\n },\n startShowing ? 90000 : null\n );\n\n // Hide flyout every 10s after setting showFlyouts to true\n useEffect(() => {\n if (showFlyouts) {\n const hideInterval = setTimeout(() => {\n setShowFlyouts(false);\n }, 10000);\n return () => clearTimeout(hideInterval);\n }\n }, [showFlyouts]);\n\n function getFlyoutText() {\n if (randomContribution.donor_name) {\n return (\n \n {formatAmount({\n value: normalizeNumber(randomContribution.amount),\n currency: randomContribution.currency_code,\n })}\n \n }\n />\n );\n } else if (randomContribution.shareDonorInfo === false) {\n return (\n \n {formatAmount({\n value: normalizeNumber(randomContribution.amount),\n currency: randomContribution.currency_code,\n })}\n \n }\n />\n );\n }\n }\n\n if (!startShowing || isEmpty(randomContribution)) {\n return null;\n }\n\n return (\n
\n
\n \n
\n {getFlyoutText()}\n
\n );\n}\n\nFlyout.propTypes = {\n contributionsList: PropTypes.array,\n};\n\nexport default Flyout;\n","import React, { useRef, useEffect } from 'react';\n\nexport default function useInterval(callback, delay) {\n const intervalRef = useRef(null);\n const savedCallback = useRef(callback);\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n const tick = () => savedCallback.current();\n if (typeof delay === 'number') {\n intervalRef.current = window.setInterval(tick, delay);\n return () => window.clearInterval(intervalRef.current);\n }\n }, [delay]);\n return intervalRef;\n}\n","/*\n Regular order is: SELF > TOP > FIRST.\n For donations > 10, TOP should be shown, if is the same person as SELF or FIRST then display TOP only\n For donations <= 10, if SELF is the same person as FIRST then FIRST should displayed only\n*/\nexport function formatFeatured(contributions, totalContributions) {\n const formattedList = [];\n\n if (contributions.length === 0) {\n return formattedList;\n }\n\n const first = contributions.find((c) => c.badge.toUpperCase() === 'FIRST');\n const top = contributions.find((c) => c.badge.toUpperCase() === 'TOP');\n const selfItem = contributions.find((c) => c.badge.toUpperCase() === 'SELF');\n\n if (selfItem) {\n if (selfItem?.id !== top?.id && selfItem?.id !== first?.id) {\n formattedList.push(selfItem);\n }\n }\n if (top && totalContributions > 10) {\n formattedList.push(top);\n }\n if (first) {\n if (first?.id !== top?.id) {\n formattedList.push(first);\n }\n }\n\n return formattedList;\n}\n","import { useEffect, useState } from 'react';\nimport { MAX_MOBILE_WIDTH } from '../setup/clientConstants';\nimport { throttle } from 'lodash';\n\nconst getIsMobile = () => window.innerWidth < MAX_MOBILE_WIDTH;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState(getIsMobile());\n\n useEffect(() => {\n const onResize = () => {\n setIsMobile(getIsMobile());\n };\n\n const throttledFn = throttle(onResize, 200);\n\n window.addEventListener('resize', throttledFn);\n\n return () => {\n window.removeEventListener('resize', throttledFn);\n };\n });\n\n return isMobile;\n}\n","export const BTN_FACTORY_FORM = 'buttonFactory';\nexport const BTN_FACTORY_V3_FORM = 'buttonFactoryV3';\nexport const CAMPAIGNS_FORM = 'campaigns';\nexport const AUTH_STATE_ANONYMOUS = 'ANONYMOUS';\nexport const AUTH_STATE_LOGGEDIN = 'LOGGEDIN';\nexport const BTN_FACTORY_MAX_PROGRAMS = 10;\nexport const BTN_FACTORY_MAX_LENGTH_PROGRAMS = 127;\nexport const MAX_MOBILE_WIDTH = 1024;\nexport const MAX_CHARACTERS_RTE = 2500;\nexport const MAX_CHARACTERS_RTE_UPDATE_FORM = 1000;\n\nexport const CAMPAIGN_STATUS = {\n ACTIVE: 'ACTIVE',\n INACTIVE: 'INACTIVE',\n};\n\nexport const COUNTRIES_AND_PERMIT_CURRENCY = {\n BR: 'BRL',\n};\n\nexport const ERRORS = {\n COUNTRY_NOT_SUPPORTED: 'COUNTRY_NOT_SUPPORTED',\n COMPLIANCE: 'COMPLIANCE',\n GENERIC: 'GENERIC',\n OFAC_HIT: 'OFAC_CAMPAIGN_SCAN_HIT',\n RESTRICTED_ACCOUNT: 'RESTRICTED_ACCOUNT',\n RESTRICTED_IMAGE: 'RESTRICTED_IMAGE',\n};\n\nexport const PAYMENT_PRODUCT = {\n PUBLIC_MONEY_POOL: 'PUBLIC_MONEY_POOL',\n DONATE_BUTTON: 'DONATE_BUTTON',\n DONATE_BUTTON_CAMPAIGN: 'DONATE_BUTTON_CAMPAIGN',\n CROWDFUNDING_CAMPAIGNS: 'CROWDFUNDING_CAMPAIGNS',\n};\n","import React, { Suspense, useEffect, useState, useContext } from 'react';\nimport templateData from '../../utility/getTemplateData';\nimport PPCC from '../../components/ppcc/ppcc';\nimport {\n Card,\n Col,\n Button,\n Sheet,\n LoadingSpinner,\n BodyText,\n HeadingText,\n} from '@paypalcorp/pp-react';\nimport classNames from 'classnames';\n\nimport {\n GoalProgressMeter,\n useHasScrolledToPosition,\n CampaignImage,\n Title,\n AdvancedEndDateBadge,\n} from '@paypalcorp/donate-react';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport Landing from './landing';\nimport withTheme from '../../components/withTheme';\nimport {\n roundUpAndFormatCurrency,\n parseDateOnly,\n} from '../../utility/formator';\nimport { lazy as reactLazy } from 'react';\nimport { addClass } from '../../utility/domUtils';\nimport WhosDonatedBanner from '../../components/WhosDonatedBanner';\nimport Flyout from '../../components/Flyout';\nimport { fetcher } from '../../utility/domUtils';\nimport { formatFeatured } from '../../utility/donorWall';\nimport ConfirmationSocialShare from '../../confirmation/ConfirmationSocialShare';\nimport {\n trackDonateLandingButtonClick,\n trackUpdatesReadMorePressed,\n} from '../../fpti/fpti';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nimport { Message } from '@paypalcorp/worldready-react';\nimport { useIsMobile } from '../../utility/isMobile';\n\nconst LandingDonorWall = reactLazy(() =>\n import(\n /* webpackChunkName: \"LandingDonorWall\" */ '../../components/LandingDonorWall'\n )\n);\n\nconst LandingRichTextDisplay = reactLazy(() =>\n import(\n /* webpackChunkName: \"LandingRichTextDisplay\" */ '../../components/LandingRichTextDisplay'\n )\n);\n\nconst OrganizerUpdates = reactLazy(() =>\n import(\n /* webpackChunkName: \"LandingOrgUpdates\" */ '../../components/organizerUpdates/OrganizerUpdates'\n )\n);\n\nconst MAX_HEIGHT_BANNER = 380;\nconst MAX_HEIGHT_DESCRIPTION = 800;\nconst MAX_VISIBLE_TRANSACTION_PAGES = 100;\n\nfunction isCampaignEnded(endDate) {\n return (\n endDate && new Date().setHours(0, 0, 0, 0) > endDate?.setHours(0, 0, 0, 0)\n );\n}\n\nconst CampaignLanding = () => {\n const worldReady = useContext(WorldReadyContext);\n const [isPaymentCardOpen, setIsPaymentCardOpen] = useState(false);\n const amountRaised = templateData.campaignTotalAmountRaised || '0';\n const campaignStatus = templateData.campaignStatus;\n const targetAmount = templateData.campaignTargetAmount;\n const campaignEndTime = templateData.campaignEndTime;\n const campaignTotalNumberOfTxn = templateData.campaignTotalNumberOfTxn;\n const amountRaisedWithCurrencySymbol = roundUpAndFormatCurrency(\n amountRaised,\n templateData.donationCode\n );\n const donationName = templateData.donationName ?? '';\n const [contributionsList, setContributionsList] = useState({\n featured: [],\n list: [],\n });\n const [contributionsError, setContributionsError] = useState(false);\n const [currentPage, setCurrentPage] = useState(1);\n const [isLoading, setIsLoading] = useState(true);\n const [retry, setRetry] = useState(0);\n const [enableReadMore, setEnableReadMore] = useState(true);\n const [enableReadMoreUpdate, setEnableReadMoreUpdate] = useState(true);\n const [descriptionHeight, setDescriptionHeight] = useState(\n MAX_HEIGHT_DESCRIPTION\n );\n const [updateHeight, setUpdateHeight] = useState(MAX_HEIGHT_DESCRIPTION);\n const [originalDescriptionHeight, setOriginalDescriptionHeight] = useState(0);\n const [newUpdateHeight, setNewUpdateHeight] = useState(0);\n\n const stickToTop = useHasScrolledToPosition(650);\n\n const isMobile = useIsMobile();\n\n useEffect(() => {\n const fetchData = async () => {\n const result = await fetcher(\n `/donate/api/donorwall/${templateData.productId}/${currentPage}/10`\n ).then((response) => response.json());\n if (result.contributions) {\n setContributionsList({\n featured:\n contributionsList.featured.length !== 0\n ? contributionsList.featured\n : formatFeatured(\n result?.contributions?.contributions?.featured,\n campaignTotalNumberOfTxn\n ),\n list: [\n ...contributionsList.list,\n ...(result?.contributions?.contributions?.list ?? []),\n ],\n });\n } else {\n setContributionsError(true);\n }\n setIsLoading(false);\n };\n\n setIsLoading(true);\n setContributionsError(false);\n fetchData();\n }, [currentPage, retry]);\n\n const handleShowMore = () => {\n setCurrentPage(currentPage + 1);\n };\n\n useEffect(() => {\n addClass('#mainWrapper header.donate_global_nav', ['hide-header']);\n addClass('#donateWrapper', ['is-landing']);\n hideSpinnerOverlay();\n }, []);\n\n const goalAmtWithCurrencySymbol = roundUpAndFormatCurrency(\n targetAmount,\n templateData.donationCode\n );\n\n const campaignGoalTitle = new MessageFormat(worldReady, {\n id: 'common.campaigns.campaignGoal.title',\n }).format({\n goalAmount: goalAmtWithCurrencySymbol,\n });\n\n const getCampaignMessage = (id, formatObj = undefined) =>\n new MessageFormat(worldReady, {\n id: `landing.campaigns.${id}`,\n }).format(formatObj);\n\n const advancedEndDateBadgeContent = {\n minute: getCampaignMessage('minute'),\n minutes: getCampaignMessage('minutes'),\n hour: getCampaignMessage('hour'),\n hours: getCampaignMessage('hours'),\n day: getCampaignMessage('day'),\n days: getCampaignMessage('days'),\n month: getCampaignMessage('month'),\n months: getCampaignMessage('months'),\n year: getCampaignMessage('year'),\n years: getCampaignMessage('years'),\n endsInContent: getCampaignMessage('endsInContent', {\n duration: '{duration}',\n unit: '{unit}',\n }),\n endedContent: getCampaignMessage('endedContent', { date: '{date}' }),\n };\n\n const renderEndDateBadge = () => (\n
\n \n
\n );\n\n const renderTitle = (size) => (\n
\n \n </div>\n );\n\n const renderGoalProgressMeter = () => (\n <div className=\"wrapper-progress-meter\">\n <GoalProgressMeter\n max={targetAmount}\n value={Math.round(amountRaised).toString()}\n steps={amountRaisedWithCurrencySymbol}\n title={campaignGoalTitle}\n className=\"goal-progress-meter\"\n />\n </div>\n );\n\n const renderAvatarStack = () => (\n <div className=\"wrapper-avatar-stack\">\n <WhosDonatedBanner\n numberOfContributors={campaignTotalNumberOfTxn}\n contributionsList={contributionsList.list}\n isLoading={isLoading}\n />\n </div>\n );\n\n const renderDonationName = () => (\n <div className=\"wrapper-donation-name\">\n <BodyText>\n {donationName}\n <PPCC />\n </BodyText>\n </div>\n );\n\n const headerClasses = classNames({\n 'preview-header': true,\n sticky: stickToTop,\n });\n\n const renderHeader = () => (\n <div className=\"wrapper-header\">\n {renderEndDateBadge()}\n {renderTitle('lg')}\n {renderAvatarStack()}\n {renderDonationName()}\n {renderGoalProgressMeter()}\n </div>\n );\n\n const renderDonorWall = () => {\n return (\n <>\n <LandingDonorWall\n contributionsList={contributionsList}\n isLoading={isLoading}\n currentPage={currentPage}\n handleShowMore={handleShowMore}\n totalNumberOfTransactions={campaignTotalNumberOfTxn}\n paginationLimit={MAX_VISIBLE_TRANSACTION_PAGES}\n />\n {campaignStatus === 'ACTIVE' &&\n !isCampaignEnded(new Date(campaignEndTime)) &&\n contributionsList?.list?.length >= 10 ? (\n <Flyout contributionsList={contributionsList.list} />\n ) : null}\n </>\n );\n };\n\n const renderContributionsError = () => {\n return (\n <div style={{ textAlign: 'center' }}>\n <BodyText>\n <Message id=\"landing.campaigns.contributions.error.title\" />\n </BodyText>\n <BodyText style={{ color: '#515354' }}>\n <Message id=\"landing.campaigns.contributions.error.body\" />\n </BodyText>\n <Button\n tertiary\n onClick={() => {\n setRetry(retry + 1);\n }}\n >\n <Message id=\"landing.campaigns.contributions.error.cta\" />\n </Button>\n </div>\n );\n };\n\n const renderContributions = () => {\n if (!contributionsError) {\n return renderDonorWall();\n } else if (currentPage === 1) {\n return renderContributionsError();\n }\n\n return (\n <>\n {renderDonorWall()}\n {renderContributionsError()}\n </>\n );\n };\n\n const stickyHeader = stickToTop && (\n <div className={headerClasses}>\n <div className=\"wrapper-header\">\n {renderEndDateBadge()}\n {renderTitle('sm')}\n {renderGoalProgressMeter()}\n </div>\n </div>\n );\n\n const personalizedMessages = {\n social_title: new MessageFormat(worldReady, {\n id: 'landing.social.subheader',\n }).format(),\n };\n\n const getSocialMessage = (id, params) => {\n return new MessageFormat(worldReady, {\n id: `landing.social.${id}`,\n }).format(params);\n };\n\n function buildSocialMessages() {\n return {\n social: {\n emailSubject: getSocialMessage('emailSubject', {\n donationName: '{donationName}',\n }),\n emailBody: getSocialMessage('emailBody', {\n donationName: '{donationName}',\n url: '{url}',\n }),\n mobileText: getSocialMessage('mobileText', {\n donationName: '{donationName}',\n }),\n facebookMessage: getSocialMessage('facebookMessage', {\n donationName: '{donationName}',\n url: '{url}',\n }),\n twitterMessage: getSocialMessage('twitterMessage', {\n donationName: '{donationName}',\n }),\n whatsappMessage: getSocialMessage('whatsappMessage', {\n donationName: '{donationName}',\n }),\n copyLinkHeader: getSocialMessage('copyLinkHeader'),\n copyLinkSubheaderBefore: getSocialMessage('copyLinkSubheaderBefore'),\n copyLinkSubheader: getSocialMessage('copyLinkSubheader'),\n copiedText: getSocialMessage('copiedText'),\n copyText: getSocialMessage('copyText'),\n subheader: getSocialMessage('subheader'),\n shareGeneric: getSocialMessage('shareGeneric'),\n },\n };\n }\n\n const socialContent = () => {\n return (\n <div className=\"social-share-wrapper\">\n <HeadingText\n size=\"sm\"\n style={{ textAlign: `${!isMobile ? 'left' : 'center'}` }}\n >\n <Message id=\"landing.social.shareGeneric\" />\n </HeadingText>\n <ConfirmationSocialShare\n campaignId={templateData.productId}\n messages={buildSocialMessages()}\n personalizedMessages={personalizedMessages}\n email={templateData.donationEmail}\n orgName={templateData.charityName}\n isLanding={true}\n />\n </div>\n );\n };\n\n const incrementDescription = (event) => {\n event.preventDefault();\n setDescriptionHeight((height) => {\n const incrementedHeight = height + MAX_HEIGHT_DESCRIPTION;\n if (incrementedHeight >= originalDescriptionHeight)\n setEnableReadMore(false);\n return incrementedHeight;\n });\n };\n\n const incrementUpdate = (event) => {\n trackUpdatesReadMorePressed();\n event.preventDefault();\n setUpdateHeight((height) => {\n const incrementedHeight = height + MAX_HEIGHT_DESCRIPTION;\n if (incrementedHeight >= newUpdateHeight) {\n setEnableReadMoreUpdate(false);\n }\n return incrementedHeight;\n });\n };\n\n const renderReadMore = () =>\n originalDescriptionHeight >= MAX_HEIGHT_DESCRIPTION &&\n enableReadMore && (\n <div className=\"campaign-read-more\">\n <Button tertiary onClick={incrementDescription}>\n <Message id=\"landing.campaigns.readMore\" />\n </Button>\n </div>\n );\n\n const renderReadMoreUpdate = () => {\n if (newUpdateHeight >= MAX_HEIGHT_DESCRIPTION && enableReadMoreUpdate) {\n return (\n <div className=\"campaign-read-more\">\n <Button tertiary onClick={incrementUpdate}>\n <Message id=\"landing.campaigns.readMore\" />\n </Button>\n </div>\n );\n }\n };\n\n return (\n <div className=\"campaign-landing-container\">\n <CampaignImage\n className=\"campaign-landing-banner\"\n src={templateData.bannerUrl}\n />\n {!isMobile && stickyHeader}\n <div className=\"content-container\">\n <div className=\"campaignDetails\" data-testid=\"campaignDetails\">\n <Card.Content>\n <div className=\"campaign-title\">{renderHeader()}</div>\n <div\n className=\"campaign-description\"\n style={{\n maxHeight:\n originalDescriptionHeight >= MAX_HEIGHT_DESCRIPTION\n ? descriptionHeight + 'px'\n : 'unset',\n }}\n >\n <div\n ref={(descriptionContainer) =>\n descriptionContainer &&\n setOriginalDescriptionHeight(\n descriptionContainer.clientHeight\n )\n }\n >\n <Suspense\n fallback={\n <LoadingSpinner size=\"md\" style={{ margin: '0 auto' }} />\n }\n >\n <LandingRichTextDisplay\n campaignDescription={templateData.campaignDescription}\n />\n </Suspense>\n </div>\n {renderReadMore()}\n </div>\n <Suspense\n fallback={\n <LoadingSpinner size=\"md\" style={{ margin: '120px auto' }} />\n }\n >\n <OrganizerUpdates />\n </Suspense>\n <Suspense\n fallback={\n <LoadingSpinner size=\"md\" style={{ margin: '120px auto' }} />\n }\n >\n {renderContributions()}\n </Suspense>\n {campaignTotalNumberOfTxn > 0 && socialContent()}\n </Card.Content>\n </div>\n {!isMobile ? (\n <div className=\"paymentCard\">\n <Landing />\n </div>\n ) : (\n <>\n <Col lg=\"12\" className=\"mobileDonate\">\n <Button\n onClick={() => {\n setIsPaymentCardOpen(!isPaymentCardOpen);\n trackDonateLandingButtonClick({ noteFieldDisplayed: null });\n }}\n >\n <Message id=\"landing.campaigns.donateButton\" />\n </Button>\n </Col>\n <Sheet\n isOpen={isPaymentCardOpen}\n onClose={() => {}}\n title={new MessageFormat(worldReady, {\n id: 'landing.campaigns.donateButton',\n }).format()}\n mobileFixedHeight=\"90\"\n className=\"mobilePreview darkBackground\"\n wrapperClassName=\"mobilePreview-wrapper\"\n skipFormFocus\n >\n <Landing />\n </Sheet>\n </>\n )}\n </div>\n </div>\n );\n};\n\nexport default withTheme(CampaignLanding);\n","import React from 'react';\nimport CardSecurityCode from '../react-card-security-code';\nimport AppStore from '../stores/AppStore';\nimport * as AppActions from '../actions/AppActions';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\n\nclass CVVComponent extends React.Component {\n constructor() {\n super();\n this.state = {\n securityCode: '',\n cardSpec: AppStore.getCardSpec().cardSpec,\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, worldReady) {\n let newErrorState = {};\n\n if (value) {\n newErrorState = {\n [fieldName]: this.validateInputValue(\n value,\n fieldName,\n fieldInvalid,\n worldReady\n ),\n };\n } else {\n newErrorState = {\n [fieldName]: new MessageFormat(worldReady, {\n id: `errors.service.${fieldRequired}`,\n }).format(),\n };\n }\n\n this.setState(newErrorState);\n }\n\n /*\n * Validate input\n */\n validateInputValue(value, fieldName, fieldInvalid, worldReady) {\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 new MessageFormat(worldReady, {\n id: `errors.service.${fieldInvalid}`,\n }).format();\n }\n }\n\n return '';\n }\n\n render() {\n const cscLabel = new MessageFormat(this.context, {\n id: 'guest.guestForm.label.csc',\n }).format();\n\n return (\n <div className=\"cvv_component\" id=\"cvv_component\">\n <div className=\"cvv_field\">\n <CardSecurityCode\n showIsRequiredError={true}\n label={cscLabel}\n placeholder={new MessageFormat(this.context, {\n id: 'guest.guestForm.label.cscplaceholder',\n }).format()}\n errorMessage={this.state.errorMessageCSC}\n handleChangeSecurityCode={(value) =>\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 this.context\n )\n }\n cardSpec={this.state.cardSpec}\n helperText={new MessageFormat(this.context, {\n id: 'guest.guestForm.label.cscnote',\n }).format({\n csc: cscLabel.toLowerCase(),\n })}\n />\n </div>\n </div>\n );\n }\n}\n\nCVVComponent.contextType = WorldReadyContext;\n\nexport default CVVComponent;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { CDN_HOST_NAME } from '../../../utility/constants';\nimport { BodyText, CaptionText } from '@paypalcorp/pp-react-text';\nimport { CreditCardIcon } from '@paypalcorp/pp-react-icons';\nimport _isEmpty from 'lodash/isEmpty';\nimport { Badge } from '@paypalcorp/pp-react-badge';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst PaymentInformation = ({\n source,\n paymentDigits,\n paymentType,\n issuer,\n isPaypalCurrencyConversion,\n funds,\n cardType,\n}) => {\n const [paymentLogo, setPaymentLogo] = useState('');\n\n const transformText = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n };\n\n const getIssuer = () => {\n return issuer?.toLowerCase().split(' ').map(transformText).join(' ');\n };\n\n useEffect(() => {\n let cardImg = source?.payment_card?.issuer?.thumbnail_logo_url ?? null;\n if (\n cardImg === null ||\n _isEmpty(cardImg) ||\n typeof cardImg === 'undefined'\n ) {\n cardImg = `${CDN_HOST_NAME}/digitalassets/c/consumer/p2p/funding-sources/${cardType}.png`;\n }\n setPaymentLogo(cardImg);\n }, []);\n\n return (\n <div className=\"cb-payment-information ppvx_justify-content-between\">\n <div className=\"payment-info\">\n {!_isEmpty(paymentLogo) ? (\n <img src={paymentLogo} className=\"payment-logo\" aria-hidden=\"true\" />\n ) : (\n <CreditCardIcon size=\"xl2\" />\n )}\n <div className=\"pay-info\">\n {issuer && <BodyText>{getIssuer()}</BodyText>}\n <CaptionText className=\"funding-info\">\n <Message\n id=\"guest.crossBorder.label.paymentInformation\"\n type={paymentType}\n number={paymentDigits}\n />\n </CaptionText>\n {!isPaypalCurrencyConversion && (\n <Badge type=\"success\">\n <Message id=\"guest.crossBorder.label.preferred\" />\n </Badge>\n )}\n </div>\n </div>\n <BodyText>{funds}</BodyText>\n </div>\n );\n};\n\nPaymentInformation.propTypes = {\n fundingOptions: PropTypes.object,\n paymentDigits: PropTypes.string,\n paymentType: PropTypes.string,\n issuer: PropTypes.string,\n funds: PropTypes.string,\n isPaypalCurrencyConversion: PropTypes.bool,\n source: PropTypes.object,\n cardType: PropTypes.string,\n};\n\nexport default PaymentInformation;\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { CURRENCY_CONVERSION_OPTIONS } from '../../pages/guest/GuestReview';\nimport { Card } from '@paypalcorp/pp-react-card';\nimport { Sheet } from '@paypalcorp/pp-react-modal';\nimport { IconButton } from '@paypalcorp/pp-react';\nimport { BodyText, CaptionText, HeadingText } from '@paypalcorp/pp-react-text';\nimport { PaypalAppIcon, CreditCardIcon } from '@paypalcorp/pp-react-icons';\nimport { CheckmarkBackgroundIcon } from '@paypalcorp/pp-react-icons';\nimport { Button } from '@paypalcorp/pp-react-buttons';\nimport { checkKeyPressed } from '../../utility/accessibilityUtils';\nimport {\n Context as WorldReadyContext,\n Message,\n} from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nconst CurrencyConversionOption = (props) => {\n const getOptionIcon = (type) => {\n if (type === 'paypal-app') {\n return (\n <IconButton\n buttonType=\"secondary\"\n size=\"xl\"\n name={type}\n svgIconComponent={PaypalAppIcon}\n />\n );\n } else if (type === 'credit-cards') {\n return (\n <IconButton\n buttonType=\"secondary\"\n size=\"xl\"\n name={type}\n svgIconComponent={CreditCardIcon}\n />\n );\n }\n };\n\n return (\n <Card\n className={`${props.className} ${\n props.isSelected ? 'show-highlight' : 'border-default'\n }`}\n role=\"checkbox\"\n aria-checked={props.isSelected}\n tabIndex=\"0\"\n onClick={props.handleOptionSelection}\n onKeyDown={(e) =>\n checkKeyPressed(e, () => {\n props.handleOptionSelection();\n })\n }\n >\n <Card.Content>\n <div className=\"conversion-tile\">\n {getOptionIcon(props.type)}\n <div className=\"content\">\n <BodyText className=\"title\" strong>\n {props.title}\n </BodyText>\n {props.rate && <CaptionText strong>{props.rate}</CaptionText>}\n <CaptionText as=\"span\">{props.description}</CaptionText>\n </div>\n <CheckmarkBackgroundIcon\n className={`icon-check ${!props.isSelected && 'hide-icon'}`}\n size=\"sm\"\n />\n </div>\n </Card.Content>\n </Card>\n );\n};\n\nCurrencyConversionOption.propTypes = {\n isSelected: PropTypes.bool,\n title: PropTypes.string,\n rate: PropTypes.string,\n description: PropTypes.string,\n className: PropTypes.string,\n handleOptionSelection: PropTypes.func,\n type: PropTypes.string,\n};\n\nconst CurrencyConversionModal = (props) => {\n const worldready = useContext(WorldReadyContext);\n const { selectedOption, exchangeRate } = props;\n const withPaypaltitle = new MessageFormat(worldready, {\n id: 'guest.crossBorder.label.withPaypal.title',\n }).format();\n const withPaypalRate = new MessageFormat(worldready, {\n id: 'guest.crossBorder.label.withPayPal.rate',\n }).format({\n amount: exchangeRate,\n });\n const withPaypalmessage = new MessageFormat(worldready, {\n id: 'guest.crossBorder.label.withPayPal.message',\n }).format();\n const withCardtitle = new MessageFormat(worldready, {\n id: 'guest.crossBorder.label.withCard.title',\n }).format();\n const withCardmessage = new MessageFormat(worldready, {\n id: 'guest.crossBorder.label.withCard.message',\n }).format();\n const [isPayPalSelected, setPaypalSelected] = useState(\n selectedOption === CURRENCY_CONVERSION_OPTIONS.PAYPAL\n );\n\n const handleClose = () => {\n props.hideModal();\n };\n\n const handleNextButton = () => {\n props.handleOptionSelection(\n isPayPalSelected\n ? CURRENCY_CONVERSION_OPTIONS.PAYPAL\n : CURRENCY_CONVERSION_OPTIONS.ISSUER\n );\n };\n\n return (\n <Sheet\n className=\"currency-conversion-modal\"\n title=\"\"\n hideTitle={true}\n isOpen={props.isOpen}\n onClose={handleClose}\n >\n <HeadingText size=\"lg\" className=\"text-center title\">\n <Message id=\"guest.crossBorder.label.modalTitle\" />\n </HeadingText>\n <BodyText className=\"text-center subTitle\">\n <Message id=\"guest.crossBorder.label.modalSubTitle\" />\n </BodyText>\n\n <CurrencyConversionOption\n isSelected={isPayPalSelected}\n title={withPaypaltitle}\n rate={withPaypalRate}\n description={withPaypalmessage}\n handleOptionSelection={() => setPaypalSelected(true)}\n className=\"option-paypal\"\n type=\"paypal-app\"\n />\n <CurrencyConversionOption\n isSelected={!isPayPalSelected}\n title={withCardtitle}\n description={withCardmessage}\n handleOptionSelection={() => setPaypalSelected(false)}\n className=\"option-card\"\n type=\"credit-cards\"\n />\n <div className=\"text-center\">\n <Button className=\"btn-sheet-wide\" onClick={handleNextButton}>\n <Message id=\"guest.crossBorder.label.modalButton\" />\n </Button>\n </div>\n </Sheet>\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 { 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, { useState } from 'react';\nimport AppStore from '../../../stores/AppStore';\nimport PropTypes from 'prop-types';\nimport { BodyText, CaptionText, Button } from '@paypalcorp/pp-react';\nimport {\n showSpinnerOverlay,\n hideSpinnerOverlay,\n} from '../../../utility/helper';\nimport { trackLinkClick } from '../../../fpti/fpti';\nimport { LINK_NAME, PAGE_SPEC } from '../../../fpti/fptiConstants';\nimport CurrencyConversionModal from '../../../components/currencyConversion/CurrencyConversionModal';\nimport _get from 'lodash/get';\nimport _includes from 'lodash/includes';\nimport { Message } from '@paypalcorp/worldready-react';\n\nconst CrossBorder = ({\n isPaypalCurrencyConversion,\n funds,\n getFundingOptions,\n currencyConversionOption,\n getLocalizedCurrency,\n stateCurrency,\n hasFees,\n}) => {\n const fundingOptions = AppStore.getFundingOptions();\n const DYNAMIC_CURRENCY_CONVERSION_TAG = 'DYNAMIC_CURRENCY_CONVERSION';\n\n const rate = `${getLocalizedCurrency(\n '1.00',\n stateCurrency.inCurrency\n )}= ${getLocalizedCurrency(\n stateCurrency.exchangeRate,\n stateCurrency.outCurrency,\n 4\n )}`;\n\n const [currencyConversionOpen, setCurrencyConversionOpen] = useState(false);\n\n const handleOptionSelection = (option) => {\n if (currencyConversionOption !== option) {\n setCurrencyConversionOpen(false);\n showSpinnerOverlay();\n getFundingOptions(option).finally(() => {\n hideSpinnerOverlay();\n });\n } else {\n setTimeout(() => {\n setCurrencyConversionOpen(false);\n }, 300);\n }\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 const shouldShowCurrencyConversionOptions = () => {\n const fundingSources = fundingOptions.sources || [];\n const lastFundingSource = fundingSources[fundingSources.length - 1];\n const tags = _get(lastFundingSource, 'tags');\n return _includes(tags, DYNAMIC_CURRENCY_CONVERSION_TAG);\n };\n\n return (\n <>\n {!hasFees && (\n <div className=\"total-donation\">\n <BodyText strong>\n <Message id=\"guest.crossBorder.label.youllDonate\" />\n </BodyText>\n <BodyText strong>{funds}</BodyText>\n </div>\n )}\n\n <div className=\"change-conversion\">\n <BodyText>\n {isPaypalCurrencyConversion ? (\n <Message id=\"guest.crossBorder.label.withPaypal.title\" />\n ) : (\n <Message id=\"guest.crossBorder.label.withCard.title\" />\n )}\n </BodyText>\n <Button\n tertiary\n onClick={() => {\n trackLinkClick(LINK_NAME.CURRENCY_CONVERSION, {\n pageSpec: PAGE_SPEC.CROSS_BORDER_PAGE,\n });\n setCurrencyConversionOpen(true);\n }}\n >\n <Message id=\"guest.crossBorder.label.changeCurrencyButton\" />\n </Button>\n </div>\n {isPaypalCurrencyConversion && (\n <CaptionText>\n <Message id=\"guest.crossBorder.label.conversion\" amount={rate} />\n </CaptionText>\n )}\n\n {shouldShowCurrencyConversionOptions() && (\n <div className=\"conversion-message\">\n {isPaypalCurrencyConversion ? (\n <CaptionText>\n {AppStore.getUserCountry() === 'US' ? (\n <Message id=\"guest.crossBorder.label.spread\" />\n ) : (\n <Message id=\"guest.crossBorder.label.fee\" />\n )}\n </CaptionText>\n ) : null}\n </div>\n )}\n\n <CurrencyConversionModal\n isOpen={currencyConversionOpen}\n exchangeRate={rate}\n handleOptionSelection={handleOptionSelection}\n hideModal={() => setCurrencyConversionOpen(false)}\n selectedOption={currencyConversionOption}\n />\n </>\n );\n};\n\nCrossBorder.propTypes = {\n isPaypalCurrencyConversion: PropTypes.bool,\n funds: PropTypes.string,\n handleCurrencyConversionClick: PropTypes.func,\n exchangeRate: PropTypes.string,\n hasFees: PropTypes.bool,\n};\n\nexport default CrossBorder;\n","import React, { useContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n BodyText,\n IconButton,\n QuestionSmIcon,\n Sheet,\n Button,\n} from '@paypalcorp/pp-react';\nimport {\n Message,\n Context as WorldReadyContext,\n} from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nconst FeePricing = ({ feeAmounts, getLocalizedCurrency }) => {\n const worldReady = useContext(WorldReadyContext);\n const [openHelperSheet, setOpenHelperSheet] = useState(false);\n\n const paymentAmount = getLocalizedCurrency(\n feeAmounts?.payment_amount?.value || '0.00',\n feeAmounts?.payment_amount?.currency || 'USD'\n );\n\n const totalFee = getLocalizedCurrency(\n feeAmounts?.total_fee?.value || '0.00',\n feeAmounts?.total_fee?.currency || 'USD'\n );\n\n const totalAmountPaid = getLocalizedCurrency(\n feeAmounts?.total_amount_paid?.value || '0.00',\n feeAmounts?.total_amount_paid?.currency || 'USD'\n );\n\n return (\n <>\n <div className=\"fee-donation\">\n <BodyText>\n <Message id=\"guest.reviewFees.donation\" />\n </BodyText>\n <BodyText>{paymentAmount}</BodyText>\n </div>\n <div className=\"fee-donation\">\n <BodyText className=\"pricing-fee\">\n <Message id=\"guest.reviewFees.fee\" />\n <IconButton\n className=\"tooltip-icon-button\"\n buttonType=\"tertiary\"\n svgIconComponent={QuestionSmIcon}\n size=\"sm\"\n onClick={() => setOpenHelperSheet(true)}\n >\n <Message id=\"guest.reviewFees.helperTitle\" />\n </IconButton>\n </BodyText>\n <BodyText>{totalFee}</BodyText>\n </div>\n <div className=\"fee-donation\">\n <BodyText strong>\n <Message id=\"guest.reviewFees.total\" />\n </BodyText>\n <BodyText strong>{totalAmountPaid}</BodyText>\n </div>\n\n <Sheet\n className=\"pricing-helper-sheet\"\n id=\"pricing-helper-sheet\"\n title={new MessageFormat(worldReady, {\n id: 'guest.reviewFees.helperTitle',\n }).format()}\n hideTitle={false}\n isOpen={openHelperSheet}\n onClose={() => setOpenHelperSheet(false)}\n >\n <BodyText className=\"helper-text-description\">\n <Message id=\"guest.reviewFees.helperDescription\" />\n </BodyText>\n <div className=\"button-link\">\n <Button\n as=\"a\"\n target=\"_blank\"\n href=\"/webapps/mpp/paypal-fees\"\n role=\"button\"\n secondary\n >\n <Message id=\"guest.reviewFees.helperButton\" />\n </Button>\n </div>\n </Sheet>\n </>\n );\n};\n\nFeePricing.propTypes = {\n feeAmounts: PropTypes.object,\n getLocalizedCurrency: PropTypes.func,\n};\n\nexport default FeePricing;\n","import React from 'react';\nimport AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport TemplateData from '../../utility/getTemplateData';\nimport PropTypes from 'prop-types';\nimport { showSpinnerOverlay, hideSpinnerOverlay } from '../../utility/helper';\nimport CancelAndReturn from '../../components/cancelAndReturn';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _find from 'lodash/find';\nimport DonateGiftAid from '../../guest-payment-components/DonateGiftAid';\nimport { formatCurrencyAsString } from '../../utility/formator';\nimport { withRouter } from 'react-router-dom';\nimport { observeUntilEventObserved } from '../../utility/helper';\nimport { fetcher } from '../../utility/domUtils';\nimport CVVComponent from '../../containers/cvv-component';\nimport withDonate from '../../components/guest/WithDonate';\nimport withTheme from '../../components/withTheme';\nimport ThreeDSContainer from '../../components/threeDS/ThreeDSContainer';\nimport {\n Alert,\n Button,\n BodyText,\n CaptionText,\n Row,\n Col,\n} from '@paypalcorp/pp-react';\nimport CloseButton from '../../components/CloseButton';\nimport BackButton from '../../components/BackButton';\nimport DonateHeader from '../../components/common/DonateHeader';\nimport PaymentInformation from './guestReviewComponents/PaymentInformation';\nimport CrossBorder from './guestReviewComponents/CrossBorder';\nimport FeePricing from './guestReviewComponents/FeePricing';\nimport {\n isExternalFlow,\n isPPUnlistedCampaign,\n} from '../../utility/productIntegrationUtils';\nimport { isInContext } from '../../utility/inContextDonation';\nimport {\n track3DSProceedToPayment,\n trackErrorIM,\n trackGuestReviewPageDonateClick,\n trackLinkClick,\n} from '../../fpti/fpti';\nimport { LINK_NAME, PAGE_SPEC } from '../../fpti/fptiConstants';\nimport withWorldReady from '../../components/withWorldReady';\nimport {\n Message,\n Context as WorldReadyContext,\n} from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport MessageWithHTML from '../../components/MessageWithHtml';\n\nconst donateGiftPercentage = AppStore.getGiftAidItExtraAmount();\n\nexport const CURRENCY_CONVERSION_OPTIONS = {\n PAYPAL: 'PAYPAL',\n ISSUER: 'ISSUER',\n};\n\nclass GuestReview extends React.Component {\n constructor(props) {\n super(props);\n\n const 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 selectedRecurringFrequency: AppStore.getSelectedRecurringFrequency(),\n };\n this.getFundingOptions = this.getFundingOptions.bind(this);\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 const fundingOptions = AppStore.getFundingOptions();\n const myData = AppStore.getAllData() || {};\n const cardType = _get(myData, 'cardSpec.cardSpec.type', '')\n .replace(/[.,_]|\\s\\(.*\\)/g, '')\n .replace(/[\\s_]/g, '-')\n .toLowerCase();\n const [fundingSources] = fundingOptions ? fundingOptions.sources : [];\n let paymentNetwork = fundingSources.payment_card.network.toLowerCase();\n paymentNetwork =\n paymentNetwork.charAt(0).toUpperCase() + paymentNetwork.slice(1);\n const paymentDigits = fundingSources.payment_card.last_4;\n let paymentType = (fundingSources?.payment_card?.type ?? '').toLowerCase();\n paymentType =\n paymentType && paymentType.charAt(0).toUpperCase() + paymentType.slice(1);\n const issuer = fundingSources.payment_card.issuer.name;\n const exchangeRate = parseFloat(\n fundingOptions.currency_conversion?.exchange_rate || '0.00'\n ).toString();\n const fundsIn = fundingOptions.currency_conversion?.funds_in || '0.00';\n const fundsOut = fundingOptions.currency_conversion?.funds_out || '0.00';\n const feeAmounts = fundingOptions.fee_amount || null;\n const amount = this.getLocalizedCurrency(\n fundingSources.payment_card.amount.value,\n fundingSources.payment_card.amount.currency\n );\n\n return {\n exchangeRate,\n paymentCard: `${paymentNetwork} x-${paymentDigits}`,\n paymentDigits,\n paymentType,\n source: fundingSources,\n issuerName: issuer,\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 cardType,\n feeAmounts,\n currencyConversion: fundingOptions.currency_conversion,\n fundingCode: !_isEmpty(fundingOptions.currency_conversion)\n ? 'CROSS_BORDER'\n : 'PAYER_FEE',\n currencyCode: fundingOptions.currencyCode,\n amount,\n };\n }\n\n getStateForConversionWithIssuer() {\n const fundingOptions = AppStore.getFundingOptions();\n const [fundingSources] = fundingOptions ? fundingOptions.sources : [];\n const amount = this.getLocalizedCurrency(\n fundingSources.payment_card.amount.value,\n fundingSources.payment_card.amount.currency\n );\n const symbol = AppStore.getDonationSymbol();\n const currency = AppStore.getDonationCode();\n const feeAmounts = fundingOptions.fee_amount || null;\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 currencyConversion: fundingOptions.currency_conversion,\n feeAmounts,\n };\n }\n\n updateFundingOptionsState() {\n const 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, totalDecimals = 2) => {\n const formatedAmount = {\n value: parseFloat(amount).toFixed(totalDecimals),\n currency: currency,\n maximumFractionDigits: totalDecimals,\n };\n const newAmount = formatCurrencyAsString(formatedAmount);\n return newAmount;\n };\n\n handleCurrencyConversionClick = () => {\n trackLinkClick(LINK_NAME.CURRENCY_CONVERSION, {\n pageSpec: PAGE_SPEC.CROSS_BORDER_PAGE,\n });\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 const 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 return;\n }\n\n // All contingencies resolved\n this.processDonation();\n };\n\n processDonation = () => {\n showSpinnerOverlay();\n\n trackGuestReviewPageDonateClick({\n isCvvSend: this.state.securityCode?.length > 0,\n });\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 getFundingOptions(currencyConversionType) {\n let fundingOptions = AppStore.getFundingOptions();\n const fundingSources = fundingOptions.sources || [];\n const lastFundingSource = fundingSources[fundingSources.length - 1];\n const paymentCardId = _get(lastFundingSource, 'payment_card.id');\n\n return fetcher('/donate/guest/fundingOptions', {\n method: 'POST',\n body: JSON.stringify({\n amount: 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 token: TemplateData.token,\n onboardingEnabled: TemplateData.onboardingEnabled,\n }),\n })\n .then((response) => response.json())\n .then((result) => {\n console.log('getFundingOptions result :: ', result);\n\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 trackErrorIM({\n errorCode: currencyConversionType,\n errorMessage: 'FUNDING_OPTIONS_EMPTY_CROSSBORDER',\n });\n this.props.history.push(\n `/donate/error/payment?token=${TemplateData.token}`\n );\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 this.setState({\n showCVVField: hasCvvContingency && !isCvvContingencyResolved,\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(\n `/donate/error/payment?token=${TemplateData.token}`\n );\n })\n .finally(() => {\n hideSpinnerOverlay();\n });\n }\n\n handleSecurityCodeChange = (securityCode) => {\n this.setState({\n securityCode: securityCode,\n });\n };\n\n handleThreeDSStepUpAuthSuccess = () => {\n this.props.toggleSpinner(true);\n\n track3DSProceedToPayment({\n isCvvSend: this.state.securityCode?.length > 0,\n });\n\n this.props.doFulfilment({\n securityCode: this.state.securityCode,\n });\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 worldReady = this.context;\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\n const giftaidFlag = AppStore.getGiftaidItFlagStatus();\n\n const getRecurringLabel = () => {\n switch (this.state.selectedRecurringFrequency) {\n case 'Week':\n return 'donateNowRec.weekly';\n case 'Month':\n return 'donateNowRec.monthly';\n case 'Year':\n return 'donateNowRec.yearly';\n default:\n return 'donateNowRec.monthly';\n }\n };\n\n const { showCVVField } = this.state;\n\n return (\n <div\n className={`${\n TemplateData.bannerUrl ? 'gn_donate_wrapper' : 'donate_wrapper'\n } ${isInContext() ? 'context_gn_wrapper' : ''}`}\n >\n <DonateHeader />\n {showCVVField && (\n <Row className=\"alert-container mb-8\">\n <Alert type=\"warning\">\n <Message\n id=\"guest.guestForm.label.cscwarning\"\n csc={new MessageFormat(worldReady, {\n id: 'guest.guestForm.label.csc',\n })\n .format()\n .toLowerCase()}\n />\n </Alert>\n </Row>\n )}\n {isExternalFlow() && (\n <>\n <BackButton inverse />\n <CloseButton inverse />\n </>\n )}\n\n <div id=\"crossBorderContainer\" className=\"cross-border\">\n {TemplateData.isGiftaiditEnabled && (\n <DonateGiftAid\n isAlreadyEnrolled={giftaidFlag}\n showAddress={false}\n addressData=\"\"\n isChecked={giftaidFlag}\n handleGiftAidOption={this.handleGiftAidOption}\n giftaidInfo={{\n currency: this.state.outSymbol,\n amount: this.state.outAmount,\n orgName: this.state.subHeaderLabel,\n donateGiftPercentage: donateGiftPercentage,\n donationCode: AppStore.getDonationCode(),\n }}\n />\n )}\n <Row>\n <Col form=\"full\">\n <BodyText style={{ margin: '28px 0' }}>\n <Message id=\"guest.crossBorder.label.donatingFrom\" />\n </BodyText>\n </Col>\n </Row>\n <PaymentInformation\n fundingOptions={AppStore.getFundingOptions()}\n paymentDigits={this.state.paymentDigits}\n paymentType={this.state.paymentType}\n source={this.state.source}\n issuer={this.state.issuerName}\n isPaypalCurrencyConversion={\n this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL\n }\n funds={this.state.amount}\n cardType={this.state.cardType}\n />\n\n {showCVVField && (\n <CVVComponent\n onRef={(ref) => (this.childCVVInfo = ref)}\n handleSecurityCodeChange={this.handleSecurityCodeChange}\n />\n )}\n\n {isPPUnlistedCampaign() && !_isEmpty(this.state.feeAmounts) && (\n <FeePricing\n feeAmounts={this.state.feeAmounts}\n getLocalizedCurrency={this.getLocalizedCurrency}\n />\n )}\n\n {this.state.fundingCode === 'CROSS_BORDER' && (\n <CrossBorder\n hasFees={!_isEmpty(this.state.feeAmounts)}\n isPaypalCurrencyConversion={\n this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL\n }\n funds={\n this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL\n ? inAmount\n : this.state.amount\n }\n getFundingOptions={this.getFundingOptions}\n currencyConversionOption={this.state.currencyConversionOption}\n getLocalizedCurrency={this.getLocalizedCurrency}\n setSelectedOption={(currencyConversionType) =>\n this.setState({\n currencyConversionOption: currencyConversionType,\n })\n }\n stateCurrency={{\n inCurrency: this.state.inCurrency,\n exchangeRate: this.state.exchangeRate,\n amountDecimalPoint: this.state.amountDecimalPoint,\n inSymbol: this.state.inSymbol,\n outCurrency: this.state.outCurrency,\n }}\n />\n )}\n\n <div className=\"legal-text text-center\">\n <CaptionText>\n <MessageWithHTML\n id=\"guest.crossBorder.label.policies\"\n country={TemplateData.country}\n />\n </CaptionText>\n </div>\n\n <div className=\"text-center\">\n <Button\n className=\"btn-wide\"\n id=\"donate-button\"\n disabled={this.props.disabled}\n onClick={this.handleDonateClick}\n >\n {this.state.isRecurring ? (\n <Message\n id={`guest.guestForm.label.${getRecurringLabel()}`}\n amount={outAmount}\n />\n ) : (\n <Message id=\"guest.guestForm.label.donatenow\" />\n )}\n </Button>\n </div>\n <div className=\"cross-border-cancel-return\">\n <CancelAndReturn />\n </div>\n\n <ThreeDSContainer\n onThreeDSStepUpAuthNotRequired={this.handleThreeDSStepUpAuthSuccess}\n onThreeDSStepUpAuthSuccess={this.handleThreeDSStepUpAuthSuccess}\n onThreeDSStepUpAuthFailure={this.handleThreeDSFailure}\n onThreeDSFailure={this.handleThreeDSFailure}\n onRef={(ref) => (this.threeDSContainer = ref)}\n />\n </div>\n </div>\n );\n }\n}\n\nGuestReview.propTypes = {\n doFulfilment: PropTypes.func,\n history: PropTypes.object,\n toggleSpinner: PropTypes.func,\n disabled: PropTypes.bool,\n};\n\nGuestReview.contextType = WorldReadyContext;\n\nexport default withRouter(withWorldReady(withDonate(withTheme(GuestReview))));\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, { useEffect } from 'react';\nimport { HeadingText, BodyText, Link, Button } from '@paypalcorp/pp-react';\nimport CloseButton from '../../components/CloseButton';\nimport {\n isInContext,\n isMobileOrInContext,\n} from '../../utility/inContextDonation';\nimport withTheme from '../../components/withTheme';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport { addClass } from '../../utility/domUtils';\n\nfunction FullPageError({\n title,\n body,\n body2,\n linkLabel,\n handleLinkClick,\n buttonLabel,\n handleButtonClick,\n showCloseButton = false,\n centerBody = false,\n}) {\n useEffect(() => {\n if (isInContext()) {\n addClass('#mainWrapper header.donate_global_nav', ['hide-header']);\n }\n }, []);\n return (\n <div\n className={`donate_wrapper ${\n isMobileOrInContext() ? 'mobile_view' : ''\n } ${isInContext() ? 'gn_donate_wrapper' : ''} fullPageError`}\n >\n {isExternalFlow() && showCloseButton && <CloseButton />}\n <HeadingText size=\"sm\" className=\"title\">\n {title}\n </HeadingText>\n {body ? (\n <BodyText className={`body ${centerBody ? 'text-center' : ''}`}>\n {body}\n </BodyText>\n ) : null}\n {body2 ? (\n <BodyText className={`body ${centerBody ? 'text-center' : ''}`}>\n {body2}\n </BodyText>\n ) : null}\n\n {buttonLabel ? (\n <Button secondary onClick={handleButtonClick} className=\"cta\">\n {buttonLabel}\n </Button>\n ) : null}\n\n {linkLabel ? (\n <Link className=\"cta\" onClick={handleLinkClick}>\n {linkLabel}\n </Link>\n ) : null}\n </div>\n );\n}\n\nexport default withTheme(FullPageError);\n","import React from 'react';\nimport AppStore from '../../stores/AppStore';\nimport { withRouter } from 'react-router-dom';\nimport withTheme from '../../components/withTheme';\nimport templateData from '../../utility/getTemplateData';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport { trackErrorPageIM } from '../../fpti/fpti';\nimport { PAGE_SPEC } from '../../fpti/fptiConstants';\nimport { addClass, removeClass } from '../../utility/domUtils';\nimport FullPageError from './FullPageError';\nimport MessageWithHTML from '../../components/MessageWithHtml';\nimport {\n Context as WorldReadyContext,\n Message,\n} from '@paypalcorp/worldready-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\n\nclass PaymentError extends React.Component {\n static contextType = WorldReadyContext;\n\n constructor() {\n super();\n this.state = {};\n }\n\n getErrorMessage = (id, params) => {\n return new MessageFormat(this.context, {\n id: `errors.paymentError.error.${id}`,\n }).format(params);\n };\n\n componentDidMount = () => {\n addClass('#mainWrapper', ['full-page-error']);\n hideSpinnerOverlay();\n const ERROR_CODE = AppStore.getPaymentError() || '';\n trackErrorPageIM({\n pageSpec: PAGE_SPEC.GUEST_FAILURE_PAGE,\n errorCode: ERROR_CODE,\n });\n };\n\n componentWillUnmount() {\n removeClass('#mainWrapper', ['full-page-error']);\n }\n\n handleTryAgain = () => {\n this.props.history.push(`/donate?token=${templateData.token}`);\n };\n\n render() {\n const ERROR_CODE = AppStore.getPaymentError() || '';\n\n let WENT_WRONG = '',\n TEMP_GLITCH = '',\n tryagain = '';\n\n const hideButton = ERROR_CODE === 'WSM_PAYER_LIMIT_EXCEEDED';\n\n switch (ERROR_CODE) {\n case 'WSM_PAYMENT_DENIED':\n WENT_WRONG = <Message id=\"errors.paymentError.error.DID_NOT_WORK\" />;\n TEMP_GLITCH = (\n <Message id=\"errors.paymentError.error.DIFF_CREDIT_DEBIT\" />\n );\n tryagain = <Message id=\"errors.paymentError.label.trydiffcard\" />;\n break;\n case 'WSM_CANNOT_PAY_SELF':\n WENT_WRONG = (\n <Message id=\"errors.paymentError.error.WSM_CANNOT_PAY_SELF_H\" />\n );\n TEMP_GLITCH = this.getErrorMessage('WSM_CANNOT_PAY_SELF', {\n ['data.htmlTagsProps.name']: templateData.donationName,\n }).replace('{data.htmlTagsProps.name}', templateData.donationName);\n break;\n case 'WSM_PAYER_LIMIT_EXCEEDED':\n WENT_WRONG = (\n <Message id=\"errors.paymentError.error.AmountLimitBreachError\" />\n );\n TEMP_GLITCH = (\n <MessageWithHTML\n id=\"errors.paymentError.error.CustomerCareMessage\"\n customerServiceLink={'/selfhelp/home'}\n />\n );\n break;\n default:\n break;\n }\n\n return (\n <div>\n <FullPageError\n title={\n WENT_WRONG ||\n 'We’re sorry that we are experiencing temporary difficulties.'\n }\n body={\n TEMP_GLITCH ||\n 'Please try again later. We apologize for the inconvenience.'\n }\n buttonLabel={hideButton ? null : tryagain || 'Return to PayPal'}\n handleButtonClick={this.handleTryAgain}\n showCloseButton={true}\n />\n </div>\n );\n }\n}\n\nexport default withRouter(withTheme(PaymentError));\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport withTheme from '../../components/withTheme';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport Illustration from '../../components/illustrations/Illustration';\nimport ConfirmationBody from '../../confirmation/ConfirmationBody';\nimport { isMobileOrInContext } from '../../utility/inContextDonation';\nimport { trackErrorPageIM } from '../../fpti/fpti';\nimport { PAGE_SPEC } from '../../fpti/fptiConstants';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react';\nclass UnilateralError extends React.Component {\n constructor() {\n super();\n this.state = {};\n }\n\n componentDidMount = () => {\n hideSpinnerOverlay();\n\n trackErrorPageIM({\n pageSpec: PAGE_SPEC.UNILATERAL_ERROR_PAGE,\n errorCode: 'UNILATERAL_ERROR',\n });\n };\n\n render() {\n const noAccountErrorMessage = new MessageFormat(this.context, {\n id: 'errors.paymentError.noAccountError',\n }).format();\n return (\n <div\n className={`donate_wrapper confirmation ${\n isMobileOrInContext() ? 'mobile_view' : ''\n }`}\n >\n <Row align=\"center\">\n <Illustration type=\"warning\" />\n </Row>\n <Row>\n <Col className=\"text-center\">\n <ConfirmationBody\n message={\n noAccountErrorMessage === 'errors.paymentError.noAccountError'\n ? \"We can't complete this donation. The receiver doesn't have a valid PayPal account.\"\n : noAccountErrorMessage\n }\n />\n </Col>\n </Row>\n </div>\n );\n }\n}\nUnilateralError.contextType = WorldReadyContext;\nexport default withRouter(withTheme(UnilateralError));\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport withTheme from '../../components/withTheme';\nimport templateData 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/productIntegrationUtils';\nimport CloseButton from '../../components/CloseButton';\nimport { Row, Col } from '@paypalcorp/pp-react';\nimport { Message } from '@paypalcorp/worldready-react';\nimport withWorldReady from '../../components/withWorldReady';\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 return (\n <div>\n <div\n className={`donate_wrapper confirmation ${\n isMobileOrInContext() ? 'mobile_view' : ''\n }`}\n >\n {isExternalFlow() && <CloseButton />}\n <Row>\n <Col align=\"center\">\n <Illustration type=\"warning\" />\n </Col>\n </Row>\n <Row>\n <Col className=\"text-center\">\n <ConfirmationTitle\n message={<Message id=\"errors.threeDSError.errorMessage\" />}\n />\n </Col>\n </Row>\n <Row>\n <Col className=\"text-center\">\n <ConfirmationBody\n message={<Message id=\"errors.threeDSError.tryAgain\" />}\n />\n </Col>\n </Row>\n\n <Row>\n <Col className=\"text-center\">\n <Button\n className=\"btn-wide\"\n id=\"tryAgain\"\n onClick={this.handleTryAgain}\n >\n <Message id=\"errors.threeDSError.tryCard\" />\n </Button>\n </Col>\n </Row>\n </div>\n </div>\n );\n }\n}\n\nexport default withWorldReady(withRouter(withTheme(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 AppStore from '../stores/AppStore';\nimport _get from 'lodash/get';\nimport templateData from '../utility/getTemplateData';\nimport { isLoggedInUser, isOneTouchUser } from '../utility/authUtils';\nimport { trackCaptureOrderPageIM } from '../fpti/fpti';\nimport withWorldReady from './withWorldReady';\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 const { orderStatus } = AppStore.getOrderStatus() || {};\n const { token } = templateData;\n\n if (orderStatus === 'COMPLETED') {\n window.location.href = `/donate/paymentComplete?token=${token}`;\n return;\n }\n\n this.props\n .captureOrder(orderToken, donateToken, payerID)\n .then((response) => response.json())\n .then((result) => {\n const confirmationNumber =\n _get(result, 'data.confirmationData.confirmationNumber') ||\n _get(result, 'data.confirmationData.postBackData.txn_id');\n if (!confirmationNumber) {\n this.props.history.push(`/donate/error/payment?token=${token}`);\n return;\n }\n\n AppActions.updateOrderStatus({ orderStatus: 'COMPLETED' });\n\n const authState = _get(result, 'authState');\n const isMemberFlow =\n isLoggedInUser(authState) || isOneTouchUser(authState);\n const confirmationData = _get(result, 'data.confirmationData', {});\n this.handlePaymentSuccess(confirmationData, isMemberFlow);\n })\n .catch(() => {\n this.props.history.push(`/donate/error/payment?token=${token}`);\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\n trackCaptureOrderPageIM({\n flow,\n confirmationData: response,\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 withWorldReady(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 CampaignLanding from '../pages/landing/campaignLanding';\nimport Review from './../pages/guest/GuestReview';\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';\nimport { addClass, removeClass } from '../utility/domUtils';\nimport {\n isGNC,\n isPPCampaign,\n isCampaigns,\n} from '../utility/productIntegrationUtils';\nimport withWorldReady from '../components/withWorldReady';\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 (!(isGNC() || isPPCampaign())) {\n addClass('#mainWrapper', ['landing-page']);\n }\n\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 componentWillUnmount() {\n if (!(isGNC() || isPPCampaign())) {\n removeClass('#mainWrapper', ['landing-page']);\n }\n }\n\n getPageToRender() {\n // If `signup` param is present, render GuestPage\n const isSignupRoute = !!parseUrlQuery().signup;\n if (isSignupRoute) {\n return <GuestPage />;\n }\n return <CookiedUserPage />;\n }\n\n render() {\n return <div>{this.getPageToRender()}</div>;\n }\n}\n\nfunction CampaignLandingPage() {\n const getPageToRender = () => {\n // If `signup` param is present, render GuestPage\n const isSignupRoute = !!parseUrlQuery().signup;\n if (isSignupRoute) {\n return <GuestPage />;\n }\n return <CampaignLanding />;\n };\n\n return <>{getPageToRender()}</>;\n}\n\nconst MainRouter = () => (\n <Router history={history}>\n <Suspense fallback={<FallbackSpinner />}>\n <Switch>\n <Route\n exact\n path=\"/donate\"\n component={isCampaigns() ? CampaignLandingPage : LandingPage}\n />\n <Route exact path=\"/donate/capture\" component={CaptureOrder} />\n <Route\n exact\n path=\"/donate/orders/cancel\"\n component={CancelAndRedirectOrder}\n />\n <Route exact path=\"/donate/guest\" component={GuestPage} />\n <Route exact path=\"/donate/guest/crossborder\" component={Review} />\n <Route\n exact\n path=\"/donate/guest/confirmation\"\n component={GuestConfirmationSuccess}\n />\n <Route\n exact\n path=\"/donate/guest/pending\"\n component={GuestConfirmationPending}\n />\n <Route\n exact\n path=\"/donate/member/confirmation\"\n component={MemberConfirmationSuccess}\n />\n <Route\n exact\n path=\"/donate/member/pending\"\n component={MemberConfirmationPending}\n />\n <Route exact path=\"/donate/error/payment\" component={PaymentError} />\n <Route\n exact\n path=\"/donate/error/noaccount\"\n component={UnilateralError}\n />\n <Route exact path=\"/donate/error/threeDS\" component={ThreeDSError} />\n </Switch>\n </Suspense>\n <Footer />\n </Router>\n);\n\nconst RouterWithWorldReady = withWorldReady(MainRouter);\n\nReactDOM.render(\n <RouterWithWorldReady />,\n document.getElementById('donateWrapper')\n);\n","import TemplateData from './getTemplateData';\nimport { lazy as reactLazy } from 'react';\nimport { trackErrorIM } from '../fpti/fpti';\n\n/**\n * Loads bodymovin and hearts animation json\n */\nexport function loadBodyMovin() {\n if (\n typeof window.bodymovin !== 'undefined' &&\n typeof window.heartsAnimationData !== 'undefined'\n ) {\n return Promise.resolve([window.bodymovin, window.heartsAnimationData]);\n }\n return Promise.all([\n loadScript(\n 'https://www.paypalobjects.com/donate/bodymovin/bodymovin.min.js'\n ),\n loadScript('https://www.paypalobjects.com/donate/bodymovin/hearts.js'),\n ]).catch((error) => {\n trackErrorIM({\n errorCode: 'LAZY_LOAD_FAILED',\n errorMessage: error,\n fieldName: 'bodymovin',\n });\n });\n}\n\n/**\n * Load Progressive Onboarding component (Slick Version)\n */\nexport function loadSlickProgressiveOnboarding() {\n return Promise.all([\n import(\n /* webpackChunkName: 'ProgressiveonboardingSlick' */ 'portableonboarding'\n ),\n ]).catch((error) => {\n trackErrorIM({\n errorCode: 'LAZY_LOAD_FAILED',\n errorMessage: error,\n fieldName: 'progressive_slick',\n });\n });\n}\n\n// eslint-disable-next-line\nfunction loadScript(scriptPath) {\n return new Promise((resolve, reject) => {\n const nonce = TemplateData.nonce;\n var script = document.createElement('script');\n document.getElementsByTagName('head')[0].appendChild(script);\n script.onload = function (params) {\n resolve(params);\n };\n script.onerror = function (params) {\n reject(params);\n };\n script.nonce = nonce;\n script.src = scriptPath;\n });\n}\n\nexport function waitForOnload() {\n return new Promise((resolve) => {\n if (document.readyState === 'complete') {\n resolve();\n } else {\n window.addEventListener('load', () => {\n resolve();\n });\n }\n });\n}\n\n/**\n * Lazy load a React component and add preload option\n */\nexport function reactLazyPreload(importStatement) {\n const lazyComponent = reactLazy(importStatement);\n lazyComponent.preload = importStatement;\n return lazyComponent;\n}\n"],"sourceRoot":""}