{"version":3,"sources":["webpack:///./guest-payment-components/DonateGiftAidHowItWorksOverlay.js","webpack:///./guest-payment-components/DonateGiftAid.js","webpack:///./components/amount/amountValidationError.js","webpack:///./components/amount/SingleAmount.js","webpack:///./components/amount/calculator.js","webpack:///./components/amount/PresetAmountRow.js","webpack:///./components/amountWrapper.js","webpack:///./react-card-security-code/index.js","webpack:///./components/recurring-checkbox/RecurringInfo.js","webpack:///./components/recurring-checkbox/recurring-checkbox.js","webpack:///./utility/fixPpReactToolTip.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/lodash/now.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/react-focus-lock/dist/es2015/AutoFocusInside.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/react-portal/es/utils.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/react-portal/es/Portal.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/react-portal/es/LegacyPortal.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/react-portal/es/PortalCompat.js","webpack:///./components/threeDS/ThreeDSSpinner.js","webpack:///./components/threeDS/ThreeDSDeviceDataCollection.js","webpack:///./components/threeDS/ThreeDSIframe.js","webpack:///./components/threeDS/ThreeDSContainer.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/lodash/debounce.js","webpack:///./components/guest/WithDonate.js","webpack:///./utility/card-utils.js","webpack:///./components/NoteFieldError.js","webpack:///./components/note.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./utility/bootstrap.js","webpack:///./components/nextButton.js","webpack:///./components/landing/OneTouchNextButton.js","webpack:///./components/guestButton.js","webpack:///./components/programs/Programs.js","webpack:///./components/recurring-checkbox/RecurringOverlay.js","webpack:///./components/NotTaxDeductibleLegalText.js","webpack:///./components/coverFee/coverFeeCheckbox.js","webpack:///./components/anonymousDonation/anonymousCheckbox.js","webpack:///./pages/landing/landing.js","webpack:///./components/currencyConversion/CurrencyConversionModal.js","webpack:///./utility/accessibilityUtils.js","webpack:///./containers/cvv-component.js","webpack:///./pages/guest/CrossBorder/PaymentInformation.js","webpack:///./pages/guest/crossBorder.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","webpack:////home/jenkins/agent/workspace/donate-gro-release/node_modules/prop-validators/dist/index.js"],"names":["styles","StyleSheet","create","modalContent","maxWidth","margin","okButton","marginTop","msgMargin","DonateGiftAidHowItWorksOverlay","props","content","className","overpanel","title","isOpen","onClose","closeOverlay","hideLogo","closeOnBackgroundClick","id","css","size","howitworks","modalp1","modalp2","modalp3","modalp4","onClick","ok","propTypes","PropTypes","object","bool","func","DonateGiftAid","isAlreadyEnrolled","isChecked","handleGiftAidOption","contentMsg","addressData","showAddress","useState","showHelp","setShowHelp","checked","setChecked","isHowItWorksOverlayOpen","setIsHowItWorksOverlayOpen","useEffect","openHowItWorksOverlay","src","appendCdnHostName","alt","extraCost","type","tertiary","learnMore","alreadyDone","label","optGiftaid","name","onChange","env","checkedValue","target","applyGiftAid","strong","taxpayer","fullName","address1","address2","city","state","zip","confirmNote","openOverlay","any","isMember","STYLES","error","color","grey700","fontSize","criticalIcon","position","marginRight","AmountValidationError","this","errorSourceField","errorString","errorCode","trackErrorIM","errorMessage","fieldName","style","role","data-testid","Component","string","donationAmount","messages","localsMessages","SingleAmount","moveCursorToTheEnd","singleAmountInput","handleAmountFocus","event","amountUtils","charCode","addShake","inputWidth","amount","e","isEditable","setState","inputFontSize","val","value","updateAmountField","stringValue","code","inputResize","handleAmount","getCurrencyParts","firstParts","symbol","rightSymbol","$","placeholder","getAmountPlaceHolder","setTimeout","focus","amountBeforeFee","AppStore","getAmountBeforeFee","isOptInCoverFee","isAtLandingPage","aria-label","readOnly","width","ref","input","autoComplete","pattern","onKeyPress","handleKeyPress","handleChange","handleClick","onFocus","handleFocus","showValidationError","validationErrorMessage","validationErrorCode","React","decimalPoint","container","padding","zIndex","calcRow","display","verticalAlign","calcRowLeft","calcRowRight","calcLabel","inputCol","outlineOffset","paddingLeft","inputLeft","paddingRight","inputRight","fromCode","right","top","height","borderTop","borderRight","borderBottom","toCode","lineHeight","conversion","textAlign","paddingTop","disabled","opacity","inputCurrencyLeft","marginLeft","hasError","Calculator","currencySymbols","fromSymbol","length","document","getElementById","ev","callback","match","validateAmount","handleFromChange","handleToChange","handleFromCurrencyChange","setFromSymbol","replace","youDonate","charityGet","youDonateLabel","charityGetLabel","conversionLabel","getLocalizedAmount","fromAmount","toAmount","conversionRate","calcLabelStyle","toError","fromDisabled","bind","availableCurrencies","map","c","key","toDisabled","charityAmountSymbol","toErrorMessage","array","isRequired","presetOther","placeholderOtherAmount","PresetAmountRow","templateData","presetAmounts","setPresetAmounts","getDonationAmountType","getDonationAmount","selectedOption","setSelectedOption","showOtherAmount","setShowOtherAmount","handlePresetAmountClick","handleAmountChange","hideValidationError","AppActions","shouldSelectPresetAmount","values","charityAmountCode","result","amountFieldValue","charityAmount","presetOptions","formatAmountFromServerDNW","noDecimals","secondaryLabel","isAmountEditable","checkValue","parseFloat","trackLinkClick","LINK_NAME","PRESET_AMOUNT","additionalData","FPTI_TAGS","SELECTED_PRESET_BUTTON_ID","griffin","getGriffin","clientMetadata","__getInitialData","coverFeeOptInStatus","getCoverFeeOptInStatus","isPreview","AmountWrapper","AppDispatcher","unregister","dispatcherCharityAmount","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","setFeeAmountInStore","updateFeeAmount","optOutCoverFee","snapshot","userAmount","charityDisabled","getConversion","getConversionRate","currencyCode","userDisabled","TemplateData","enablePresetAmounts","isGuestReviewPage","validateDonationAmount","parse","innerHTML","currencyLists","currencies","symbols","donorIpCountry","US","getDonationCode","donationAmountEditable","getDonationSymbol","donationDecimalPoint","nextProps","register","payload","action","actionType","item","shouldShowPresetAmounts","renderPresetAmounts","handleUserAmountChange","handleUserCurrencyChange","handleCharityAmountChange","CardSecurityCode","showIsRequiredError","securityCode","handleCheckForValue","handleChangeSecurityCode","cardSpec","fields","csc","required","handleBlur","cscSpecs","maxLength","maxlength","onBlur","errorText","dir","helperText","cardSpecPropType","getRecurringInfoContent","getContent","RecurringInfo","orgName","useHTML","orgname","donationName","isLTR","isLeftToRight","texts","isContinue","wrapper","centered","justifyContent","toolWrapper","paddingBottom","animationWrapper","animationContainer","transform","recurringButton","borderRadius","marginBottom","borderOnly","background","divider","dividerContent","backgroundColor","verticalCentered","alignItems","RecurringCheckBox","continue","dispatcherToken","currency","formatedAmount","formatAmount","showhelp","chkBxStatus","loadAnimation","recurring","RECURRING_CHECKBOX","CHECKBOX","__html","status","tooltipButton","updateAmount","getElementsByClassName","Object","btn","loadBodyMovin","isAnimating","animationData","heartsAnimationData","bodymovinLibrary","bodymovin","renderer","loop","autoplay","destroy","rp","recurring_label","perMonth","description","tooltipp2","tooltipp1","sanitizeOrgName","hasRecurringHelp","defaultProps","root","module","exports","Date","now","AutoFocusInside","_ref","children","canUseDOM","createElement","_createClass","defineProperties","i","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","_possibleConstructorReturn","self","call","ReferenceError","_React$Component","Portal","__proto__","getPrototypeOf","apply","arguments","subClass","superClass","constructor","setPrototypeOf","_inherits","defaultNode","removeChild","node","appendChild","createPortal","renderPortal","unmountComponentAtNode","portal","cloneElement","unstable_renderSubtreeIntoContainer","LegacyPortal","threeDSText","LOADING_GIF_SOURCE","spinnerAlign","cardImg","wontTakeLong","DoNotCloseOrRefresh","ThreeDSSpinner","fundingOptions","getFundingOptions","_get","network","getPaymentCardNetwork","myData","getAllData","_isEmpty","cardType","toLowerCase","hideSpinnerOverlay","setNetworkDetails","confirmingWith","RegExp","withTheme","ThreeDSDeviceDataCollection","data","exception","messageType","onDDCComplete","trackThreeDsDdcFailure","STATUS","console","log","onThreeDSDDCComplete","contingencies","_find","addEventListener","handleDDCEvent","threeDS2ReferenceId","getThreeDSParams","three_ds_reference_id","refs","submit","removeEventListener","deviceDataCollectionUrl","device_data_collection_url","jwt","withRouter","ThreeDSIframe","handleIframeMessage","confirmationStatus","CHALLENGE_STATUS","trackThreeDSIframeIM","threeDSRespDuration","CHALLENGE_END_TIME","getTime","onStepUpAuthComplete","hideModal","element","formRef","threeDS2Contingency","getThreeDSContingency","redirectLink","md","redirectMethod","requestText","frameBorder","setFormRef","submitForm","CHALLENGE_START_TIME","hideTitle","getModalBody","icon","ThreeDSContainer","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","hideThreeDSSpinner","threeDSContingency","resolved","trackThreeDsLookupComplete","timestamp","THREE_DS_LOOKUP_END_TIME","CONTINGENCY_RESOLVED","URL","ACTION","onThreeDSStepUpAuthNotRequired","showThreeDSIframe","hideThreeDSIframe","onThreeDSFailure","onThreeDSStepUpAuthSuccess","onThreeDSStepUpAuthFailure","showThreeDSSpinner","onRef","startTime","trackThreeDsDdcStart","handleThreeDSDDCComplete","handleThreeDSStepUpAuthComplete","toggleSpinner","isObject","toNumber","nativeMax","Math","max","nativeMin","min","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","flush","initialData","getInitialData","serviceErrorMessages","ERROR_ELEMENT_SELECTOR","join","withDonate","WrappedComponent","country","DonateAppActions","CHANGE_COUNTRY","COUNTRY","signUp","url","handleGuestCountryChange","isSpinner","showSpinnerOverlay","scrollElementIntoView","language","note","getDonationNote","fundingOptionId","email","getEmail","billingAddress","getBillingAddress","giftAidItFlag","getGiftaidItFlagStatus","card","history","push","href","clientState","encodeURIComponent","confirmationData","startCustomCPLTrackingForConfirmationPage","objectOrArrayToQueryString","confirmation","isOfacPending","isEmpty","cartUrl","orderToken","donateToken","payerID","selectedCountry","getFormData","formData","getParametersFromUrl","showErrorOnLoad","errorMsgs","serverErrors","handleCountryChange","handleScrollToError","getDonateGuestUrl","getInitialFormData","saveFormData","doFulfilment","captureOrder","createOrder","fundingTypes","defaultCardSpec","ccNumber","expirationDate","minlength","getSpecificCardSpec","cardNumber","cardTypes","autodetect","test","PAYMENT_CARDS","NoteFieldError","NoteComponent","lengthLimit","providedLabel","charityNoteEnabled","charityNoteLabel","donationNote","setDonationNote","initialNoteLabel","showLabel","setShowLabel","showError","setShowError","noteLabel","setNoteLabel","textAreaEl","useRef","isNoteTextPresent","current","isNotePreview","directionality","contextLocalityDir","isExternalFlow","htmlFor","NOTE_PAD","eventName","EVENT_NAME","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","iconName","buttonType","aria-hidden","maxRows","minRows","showCharacterCounter","maxCharacters","addClass","removeClass","trim","_toConsumableArray","arr","Array","isArray","arrayLikeToArray","iter","Symbol","iterator","from","unsupportedIterableToArray","getElementsByTagName","setAttribute","NextButtonComponent","buttonnext","button","next","handleNext","branded","iconComponent","OneTouchNextButton","GuestButton","debitorcredit","secondary","handleGuest","Programs","programNames","isDisabled","selectedIdx","handleSelect","getProgramOptions","forEach","programName","primaryText","programOption","findIndex","program","appStore","getSelectedProgram","programs","optional","selectedItemIndex","onSelection","index","selectedProgram","PROGRAM_SELECTED","CAMPAIGN","RecurringOverlay","closeRecurringOverlay","onMakeOneTimeDonation","onContinue","signupHeader","dialogp1","dialogp2","dialogp3","continueBtn","noThanksBtn","center","isInContext","BackButton","handleClose","noCloseButton","containerClassName","noThanks_closeModal","disclaimerWrapper","border","disclaimer","disclaimerCaptionText","NotTaxDeductibleLegalText","landing","mayNotBeTaxDeductible","CoverFeeCheckbox","handleCoverFeeChange","optInStatus","formatedFeeAmount","checkboxStatus","coverFee","AnonymousCheckbox","handleAnonymousDonationChange","tooltip","anonymousStatus","labelIcon","onOpen","ANONYMOUS_TOOLTIP","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","errorMessages","LandingPageComponent","trackDonateWithCardClick","noteFieldDisplayed","shouldShowNote","preventDefault","recurringModalStatus","recurringStatus","memberMandatory","openRecurringOverlay","validateAmountAndNavigateToGuestPage","PAYPAL","analytics","startCPLTracking","page","uicomp","uitype","trackDonateWithPayPalClick","handleLogIn","trackNextClickForCheckout","orderParams","prepareOrderParams","feeAmount","getFeeAmount","computeAmountAfterFee","updateDonationAmount","validationResult","donateDisabled","rpContinue","anonymousOptInStatus","trackAnonymousCheckboxClick","trackCoverFeeCheckboxClick","getFormatedFeeAmount","isRecurringOverlayOpen","isOldButtonFactory","isCheckoutRail","handleNextForCheckout","isAuthenticated","personalizedMessages","getPersonalizedMessages","GN_CONTENT_TOUCHPOINT","anonymousStatusInStore","getAnonymousStatus","hasLogo","subHeaderLabel","charityName","donationId","guestRedirectUrl","recurringEnabled","recurringHelpText","recurringLabel","isAuthenticatedUser","donateContext","program_names","isVoucherFlow","offerProgram","coverFeeEnabled","feePayer","anonymousEnabled","hasDisclaimer","hasPersonalizedMessages","getPPCCStatus","onload","cpl","CPL_PAGE_SPEC","LANDING_PAGE","currentPage","paymentStatus","getDonationRecurring","restoreDonationAmount","trackLandingPageIM","isLoggedInUser","registerAppDispatcherMessages","dispatcherMessages","classNames","gn_donate_wrapper","bannerUrl","donate_wrapper","context_gn_wrapper","shouldShowUserBanner","mobile_view","isMobileOrInContext","showUserBanner","receiverCountryEligible","landingClass","UserDetailsBanner","userDetails","CloseButton","inverse","DonateHeader","isLanding","updateConversionSataus","renderProgramsDropdown","getPersonalizedAnonymousContent","getPersonalizedNoteToPayeeLabel","handleRecurringChange","showNote","success","renderDonateButtons","hasPartnerSource","getPPCCConfirmation","handleRecurringOverlayContinue","handleRecurringOverlayMakeOneTimeDonation","Disclaimer","getPersonalizedContent","organizationName","returnUrl","charityReturnUrl","LandingPage","Landing","displayLanding","currentState","business","hostedButtonId","search","handleTokenReuse","addTokenToUrlIfMissing","CurrencyConversionOption","isSelected","aria-checked","tabIndex","handleOptionSelection","onKeyDown","doFunction","which","KEY_DOWN","SPACE","ENTER","checkKeyPressed","Content","spotImage","rate","as","CurrencyConversionModal","CURRENCY_CONVERSION_OPTIONS","isPayPalSelected","setPaypalSelected","modalTitle","modalSubTitle","withPaypal","withPayPal","message","withCard","ISSUER","modalButton","guestMessages","guestLocalsMessages","CVVComponent","getCardSpec","errorMessageCSC","handleSecurityCodeChange","fieldRequired","fieldInvalid","newErrorState","validateInputValue","cscLen","cscMax","guestLabels","cscplaceholder","cscLabel","cscnote","handleFieldFocus","handleFieldBlur","PaymentInformation","paymentDigits","paymentType","issuer","isPaypalCurrencyConversion","funds","crossBorderContent","paymentInformation","number","preferred","paymentLogo","setPaymentLogo","transformText","str","charAt","toUpperCase","slice","payment_card","thumbnail_logo_url","CDN_HOST_NAME","split","giftAidText","donateGiftPercentage","getGiftAidItExtraAmount","giftAidTextObj","giftAidIt","CrossBorder","spinnerOverlay","endCPLTracking","observeUntilEventObserved","attributes","observer","disconnect","formatCurrencyAsString","CURRENCY_CONVERSION","pageSpec","PAGE_SPEC","CROSS_BORDER_PAGE","showCurrencyConversionModal","isCurrencyConversionModalOpen","showCVVField","cvv","childCVVInfo","processDonation","threeDSContainer","initializeThreeDS","giftAidState","extraCostText","outSymbol","outAmount","extraAmount","option","beforeOption","currencyConversionOption","hideCurrencyConversionModal","finally","lastFundingSource","getLastFundingSource","tags","_includes","isRecurring","stateConversionWithPayPal","getStateForConversionWithPayPal","amountDecimalPoint","endCustomCPLTracking","sources","fundingSources","paymentNetwork","last_4","currency_conversion","toString","fundsIn","funds_in","fundsOut","funds_out","paymentCard","issuerName","inAmount","inCurrency","inSymbol","outCurrency","getStateForConversionWithIssuer","paymentCardId","currencyConversionType","normalizeNumber","preferences","payment_card_id","validity","consentShareAddress","getShareAddress","hasCvvContingency","isCvvContingencyResolved","showCVVComponent","hideCVVComponent","updateFundingOptionsState","getLocalizedCurrency","exchangeRateDecimalPoints","donateNowRecurring","formattedDonationAmount","giftaidFlag","updateGiftAidComponent","cscwarning","getUserCountry","isGiftaiditEnabled","donatingFrom","youllDonate","handleCurrencyConversionClick","changeCurrencyButton","shouldShowCurrencyConversionOptions","spread","fee","handleDonateClick","donatenow","handleThreeDSStepUpAuthSuccess","handleThreeDSFailure","GuestConfirmationPending","withPageTrack","withPostTransactionRequest","PendingView","GuestConfirmationSuccess","SuccessView","illustrationType","body2","linkLabel","handleLinkClick","buttonLabel","handleButtonClick","showCloseButton","centerBody","Illustration","PaymentError","ERROR_CODE","getPaymentError","trackErrorPageIM","GUEST_FAILURE_PAGE","WSM_CANNOT_PAY_SELF","WENT_WRONG","TEMP_GLITCH","tryagain","DID_NOT_WORK","DIFF_CREDIT_DEBIT","trydiffcard","L2","WSM_CANNOT_PAY_SELF_H","AmountLimitBreachError","customerServiceLink","handleTryAgain","noAccountErrorMessage","UnilateralError","UNILATERAL_ERROR_PAGE","ConfirmationBody","ThreeDSError","ConfirmationTitle","tryAgain","tryCard","CaptureOrder","orderStatus","getOrderStatus","isMemberFlow","isOneTouchUser","handlePaymentSuccess","handleConfirmation","flow","trackCaptureOrderPageIM","accessToken","isSubmitted","backBtnVisible","responseData","wTransactionEntry","requestError","timerCount","locality","setShouldRTL","currentUserState","isUnilateralAccount","GuestPage","reactLazyPreload","FallbackSpinner","userCookied","isOneTouch","isGNC","isGN","onboardingEnabled","preload","parseUrlQuery","signup","getPageToRender","ReactDOM","render","fallback","exact","path","component","waitForXProps","xprops","close","charityCancelUrl","MemberConfirmationSuccess","MemberConfirmationPending","all","loadScript","loadSlickProgressiveOnboarding","scriptPath","reject","nonce","script","onerror","importStatement","lazyComponent","reactLazy","genericPropType","propName","componentName","Error","cardSpecsPropType","cardSpecs","keys","stateListPropType","stateList","$id"],"mappings":"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","file":"donate.4e05cd2ed2031a7e91a8.bundle.js","sourcesContent":["import React from 'react';\nimport { Modal, BodyText, Button, HeadingText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport PropTypes from 'prop-types';\n\nconst styles = StyleSheet.create({\n 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 { content } = props;\n\n return (\n \n
\n
\n
\n
\n
\n {content.howitworks}\n
\n
\n
\n
\n \n {content.modalp1}\n \n
\n
\n
\n
\n \n {content.modalp2}\n \n
\n
\n
\n
\n \n {content.modalp3}\n \n
\n
\n
\n
\n \n {content.modalp4}\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n );\n}\n\nDonateGiftAidHowItWorksOverlay.propTypes = {\n content: PropTypes.object,\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';\n\nconst DonateGiftAid = ({\n isAlreadyEnrolled,\n isChecked,\n handleGiftAidOption,\n contentMsg,\n addressData,\n showAddress,\n}) => {\n const [showHelp, setShowHelp] = useState(isChecked);\n const [checked, setChecked] = useState(isChecked);\n const [isHowItWorksOverlayOpen, setIsHowItWorksOverlayOpen] = useState(false);\n\n useEffect(() => {\n if (isAlreadyEnrolled) {\n setShowHelp(false);\n }\n }, [isAlreadyEnrolled]);\n\n const handleCheckbox = (env) => {\n let 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 return (\n
\n
\n \n \n {contentMsg.extraCost}\n \n {contentMsg.learnMore}\n \n \n\n {isAlreadyEnrolled && (\n
\n \n {contentMsg.alreadyDone}\n
\n )}\n {!isAlreadyEnrolled && (\n \n )}\n\n {showHelp && (\n
\n
\n \n {contentMsg.applyGiftAid}\n \n
\n {showAddress && (\n
\n {contentMsg.taxpayer}\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 {contentMsg.confirmNote}\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 contentMsg: PropTypes.object,\n isMember: PropTypes.bool,\n};\n\nexport default DonateGiftAid;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@paypalcorp/pp-react-icons';\nimport { grey700 } from '@paypalcorp/pp-react-colors';\nimport { trackErrorIM } from '../../fpti/fpti';\n\nconst STYLES = {\n error: {\n color: grey700,\n fontSize: '13px',\n },\n criticalIcon: {\n color: '#D20000',\n position: 'relative',\n fontSize: 'unset',\n marginRight: '5px',\n },\n};\n\n/**\n * Component for displaying amount validation error message\n */\nclass AmountValidationError extends Component {\n componentDidMount() {\n const { errorSourceField, errorString, errorCode } = this.props;\n\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 { BodyText, HeadingText } from '@paypalcorp/pp-react';\nimport { getCurrencyParts, getAmountPlaceHolder } from '../../utility/formator';\nimport { addShake } from '../../utility/helper';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport AmountValidationError from './amountValidationError.js';\nimport * as amountUtils from './amountUtils';\nimport { moveCursorToTheEnd } from '../../utility/domUtils';\nimport AppStore from '../../stores/AppStore';\nimport { isAtLandingPage, isOptInCoverFee } from '../coverFee/feeUtils';\n\nlet messages = localsMessages('common/amount');\n\nclass SingleAmount extends React.Component {\n constructor(props) {\n super(props);\n const [firstParts = {}] = getCurrencyParts();\n const { amount = '', symbol = '', code = '' } = this.props;\n const rightSymbol = firstParts.$ !== 'symbol';\n this.state = {\n amount,\n symbol,\n code,\n rightSymbol,\n placeholder: getAmountPlaceHolder(),\n inputWidth: amountUtils.MIN_INPUT_WIDTH,\n inputFontSize: amountUtils.DEFAULT_INPUT_FONTSIZE,\n };\n }\n\n componentDidMount() {\n if (this.props.isEditable && this.singleAmountInput) {\n setTimeout(() => {\n if (this.singleAmountInput) {\n this.singleAmountInput.focus();\n }\n // Placeholder does not work good in IE\n // So call update to show value - 0.00(US)\n if (this.state.amount === '') {\n this.updateAmountField();\n }\n }, 500);\n }\n this.inputResize();\n\n // In case user opts in for cover fee and goes back to\n // landing page from guest page, we need to restore back\n // user's original entered amount\n const amountBeforeFee = AppStore.getAmountBeforeFee();\n if (amountBeforeFee && isOptInCoverFee() && isAtLandingPage()) {\n this.updateAmountField(amountBeforeFee);\n }\n }\n\n handleFocus = (event) => {\n moveCursorToTheEnd(this.singleAmountInput);\n this.props.handleAmountFocus();\n };\n\n handleClick = (eventName) => {\n moveCursorToTheEnd(this.singleAmountInput);\n };\n\n handleKeyPress = (event) => {\n if (!amountUtils.isKeyAllowed(event.charCode)) {\n addShake();\n return;\n }\n };\n\n inputResize = () => {\n let inputWidth;\n\n try {\n inputWidth = amountUtils.getInputWidth(\n this.singleAmountInput,\n this.state.amount\n );\n } catch (e) {\n inputWidth = amountUtils.MIN_INPUT_WIDTH;\n }\n // \"Fixed\" amount is rendered before the CSS is loaded and hence the\n // reported width is lesser than actual. Add a few pixels to fix that.\n if (!this.props.isEditable) {\n inputWidth += 20;\n }\n\n this.setState({\n inputWidth,\n inputFontSize: amountUtils.getFontSize(this.state.amount),\n });\n };\n\n handleChange = (event) => {\n let val = event.target.value;\n this.updateAmountField(val);\n };\n\n updateAmountField = (val) => {\n if (!amountUtils.amountLengthValid(val)) {\n addShake();\n return;\n }\n\n const stringValue = amountUtils.formatAmount(val, this.props.code);\n\n this.setState({ amount: stringValue }, () => {\n this.inputResize();\n });\n this.props.handleAmount(stringValue);\n };\n\n render() {\n const label = (messages.amount && messages.amount.label) || '';\n\n return (\n
\n
\n
\n {!this.state.rightSymbol && (\n
\n \n {this.state.symbol}\n \n
\n )}\n (this.singleAmountInput = input)}\n name=\"donationAmount\"\n autoComplete=\"off\"\n id=\"currencyAmount\"\n data-testid=\"currencyAmount\"\n placeholder={this.state.placeholder}\n pattern=\"[0-9]*\"\n value={this.state.amount}\n onKeyPress={this.handleKeyPress}\n onChange={this.handleChange}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n className=\"amount_number validate\"\n />\n {this.state.rightSymbol && (\n
\n \n {this.state.symbol}\n \n
\n )}\n
\n
\n \n {this.state.code}\n \n {this.props.showValidationError && (\n
\n \n
\n )}\n
\n );\n }\n}\n\nSingleAmount.propTypes = {\n name: PropTypes.string,\n label: PropTypes.string,\n value: PropTypes.string,\n amount: PropTypes.string,\n symbol: PropTypes.string,\n code: PropTypes.string,\n decimalPoint: PropTypes.string,\n isEditable: PropTypes.bool,\n handleAmount: PropTypes.func,\n showValidationError: PropTypes.bool,\n validationErrorMessage: PropTypes.string,\n validationErrorCode: PropTypes.string,\n handleAmountFocus: PropTypes.func,\n};\n\nexport default SingleAmount;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport AmountValidationError from './amountValidationError.js';\n\nconst messages = localsMessages('guest/crossBorder');\n\nconst STYLES = {\n container: {\n padding: '30px 0 30px 0',\n zIndex: 1,\n },\n calcRow: {\n display: 'inline-block',\n width: '40%',\n verticalAlign: 'top',\n },\n calcRowLeft: {\n margin: '0 1% 0 9%',\n },\n calcRowRight: {\n margin: '0 9% 0 1%',\n },\n calcLabel: {\n padding: '0 0 8px 5px',\n },\n inputCol: {\n position: 'relative',\n },\n input: {\n outlineOffset: '-1px',\n fontSize: 14,\n paddingLeft: 20,\n },\n inputLeft: {\n paddingRight: '100px',\n },\n inputRight: {\n paddingRight: '60px',\n },\n fromCode: {\n position: 'absolute',\n right: '1px',\n top: '1px',\n height: '40px',\n width: '90px',\n borderTop: 0,\n borderRight: 0,\n borderBottom: 0,\n },\n toCode: {\n position: 'absolute',\n right: '15px',\n top: 0,\n lineHeight: '42px',\n },\n conversion: {\n textAlign: 'center',\n paddingTop: '30px',\n },\n disabled: {\n opacity: '0.5',\n },\n inputCurrencyLeft: {\n position: 'absolute',\n marginTop: 12,\n marginLeft: 10,\n fontSize: 14,\n },\n hasError: {\n color: 'red',\n },\n};\n\nclass Calculator extends React.Component {\n constructor() {\n super();\n const { label: { youDonate, charityGet, conversion } = {} } =\n messages || {};\n this.state = {\n youDonateLabel: youDonate,\n charityGetLabel: charityGet,\n conversionLabel: conversion,\n };\n }\n\n componentDidMount() {\n this.setFromSymbol(this.props.toCode);\n }\n\n setFromSymbol = (toCode) => {\n const symbol =\n (this.props.currencySymbols && this.props.currencySymbols[toCode]) || '';\n this.setState({\n fromSymbol: symbol,\n });\n\n let padding = symbol.length * 10 + 10;\n document.getElementById('fromAmount').style.paddingLeft = `${padding}px`;\n };\n\n validateAmount = (ev, callback) => {\n let val = ev.target.value;\n let rgx = /^[0-9]*[.|,]?[0-9]?[0-9]?$/;\n\n if (val === '.' || val === ',' || !val.match(rgx)) {\n return;\n }\n callback(val);\n };\n\n handleFromChange = (ev) => {\n this.validateAmount(ev, this.props.handleFromChange);\n };\n\n handleToChange = (ev) => {\n this.validateAmount(ev, this.props.handleToChange);\n };\n\n handleFromCurrencyChange = (ev) => {\n let val = ev.target.value;\n this.props.handleFromCurrencyChange(val);\n this.setFromSymbol(val);\n };\n\n handleAmountFocus = (event) => {\n this.props.handleAmountFocus(event);\n };\n\n getLocalizedAmount = (amount) => {\n return `${amount}`.replace(/[.|,]/i, this.props.decimalPoint);\n };\n\n render() {\n const placeholder = this.getLocalizedAmount('0.00');\n const fromAmount = this.getLocalizedAmount(this.props.fromAmount);\n const toAmount = this.getLocalizedAmount(this.props.toAmount);\n const conversionRate = `${this.getLocalizedAmount('1.00')} ${\n this.props.fromCode\n } = ${this.getLocalizedAmount(this.props.conversionRate)} ${\n this.props.toCode\n }`;\n\n const calcLabelStyle = {\n ...STYLES.calcLabel,\n ...(this.props.toError ? STYLES.hasError : {}),\n };\n\n return (\n \n
\n \n
{this.state.youDonateLabel}
\n
\n
\n \n {this.state.fromSymbol}\n \n \n
\n \n {this.props.availableCurrencies.map((c) => (\n \n ))}\n \n
\n
\n \n
{this.state.charityGetLabel}
\n
\n
\n \n {this.props.charityAmountSymbol}\n \n \n
\n {this.props.toCode}\n
\n {this.props.toError && (\n \n )}\n \n \n\n {this.props.conversionRate && (\n \n {this.state.conversionLabel} {conversionRate}\n \n )}\n \n );\n }\n}\n\nCalculator.propTypes = {\n availableCurrencies: PropTypes.array.isRequired,\n currencySymbols: PropTypes.object.isRequired,\n decimalPoint: PropTypes.string.isRequired,\n conversionRate: PropTypes.string.isRequired,\n fromAmount: PropTypes.string.isRequired,\n fromCode: PropTypes.string.isRequired,\n fromDisabled: PropTypes.bool.isRequired,\n toAmount: PropTypes.string.isRequired,\n toCode: PropTypes.string.isRequired,\n toDisabled: PropTypes.bool.isRequired,\n handleFromChange: PropTypes.func.isRequired,\n handleFromCurrencyChange: PropTypes.func.isRequired,\n handleToChange: PropTypes.func.isRequired,\n charityAmountSymbol: PropTypes.string,\n handleAmountFocus: PropTypes.func,\n toError: PropTypes.bool,\n toErrorMessage: PropTypes.string,\n};\n\nexport default Calculator;\n","import React, { useState, useEffect } 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 { getCurrencyParts } from '../../utility/formator';\nimport { formatAmountFromServerDNW } from './amountUtils';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { getGriffin, __getInitialData } from '../../utility/formator';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\n\nlet {\n amount: { presetOther, placeholderOtherAmount },\n} = localsMessages('common/amount');\n\nfunction PresetAmountRow(props) {\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\n const handlePresetAmountClick = (value) => {\n setSelectedOption(value);\n if (value !== 'Other') {\n const selectedAmount = value;\n props.handleAmountChange(`${selectedAmount}`);\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 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 handlePresetAmountClick(amountBeforeFee);\n }\n }\n }, []);\n\n const handleAmountChange = (amount) => {\n let checkValue = parseFloat(amount.replace(',', '.').replace(' ', ''));\n\n if (AppStore.getDonationAmountType() === 'preset' && checkValue > 0) {\n AppActions.updateSelectedPresetButtonId('other');\n AppActions.updateDonationAmountType('userinput');\n props.handleAmountChange('0.00');\n trackLinkClick(LINK_NAME.PRESET_AMOUNT, {\n additionalData: {\n [FPTI_TAGS.SELECTED_PRESET_BUTTON_ID]: 'other',\n },\n });\n }\n if (checkValue > 0) {\n AppActions.updateDonationAmountType('userinput');\n props.handleAmountChange(amount);\n }\n };\n\n const handleAmountFocus = () => {\n props.handleAmountFocus();\n };\n\n const getPresetOptions = (values, symbol, charityAmountCode) => {\n const [firstParts = {}] = getCurrencyParts();\n const rightSymbol = firstParts.$ !== 'symbol';\n const result = values.map((value) => {\n let amountDisplayValue;\n if (rightSymbol) {\n amountDisplayValue = symbol\n ? `${formatAmountFromServerDNW(value, charityAmountCode, {\n noDecimals: true,\n })} ${symbol}`\n : `${formatAmountFromServerDNW(value, charityAmountCode, {\n noDecimals: true,\n })}`;\n } else {\n amountDisplayValue = symbol\n ? `${symbol}${formatAmountFromServerDNW(value, charityAmountCode, {\n noDecimals: true,\n })}`\n : `${formatAmountFromServerDNW(value, charityAmountCode, {\n noDecimals: true,\n })}`;\n }\n return {\n label: amountDisplayValue,\n secondaryLabel: charityAmountCode,\n value: formatAmountFromServerDNW(value, charityAmountCode),\n };\n });\n return [...result, { label: presetOther, value: 'Other' }];\n };\n\n const amountFieldValue =\n AppStore.getDonationAmountType() === 'preset' ? '' : props.charityAmount;\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 '../components/amount/SingleAmount';\nimport Calculator from '../components/amount/calculator';\nimport PresetAmountRow from './amount/PresetAmountRow';\nimport {\n setFeeAmountInStore,\n optOutCoverFee,\n isAtLandingPage,\n isOptInCoverFee,\n} from './coverFee/feeUtils';\nimport AppDispatcher from '../dispatcher/AppDispatcher';\nimport { getParameterByName } from '../utility/queryStringHelper';\n\nclass AmountWrapper extends React.Component {\n constructor(props) {\n super(props);\n\n const currencyObj = JSON.parse(\n document.getElementById('currencyLists').innerHTML || {}\n );\n const { currencies: currencyLists, symbols: currencySymbols } =\n currencyObj || {};\n\n let userCountry = TemplateData.donorIpCountry;\n let availableCurrencies = currencyLists[userCountry] || currencyLists.US;\n let userAmountCode = availableCurrencies[0];\n let charityAmountCode = AppStore.getDonationCode();\n let isEditable = !!TemplateData.donationAmountEditable;\n // let showCBCalculator = TemplateData.pxp && TemplateData.pxp.calculator && TemplateData.pxp.calculator.experiment || false;\n\n let isCalculator = false;\n // Disabled Calculator\n // let isCalculator =\n // \tisEditable &&\n // \tuserAmountCode !== charityAmountCode &&\n // \t(showCBCalculator || TemplateData.isCorpIp);\n\n this.state = {\n charityAmountCode,\n charityAmount: AppStore.getDonationAmount() || '',\n charityAmountSymbol: AppStore.getDonationSymbol(),\n charityDisabled: false,\n\n userCountry,\n userAmountCode,\n userAmount: '',\n userDisabled: false,\n\n availableCurrencies,\n currencySymbols,\n isCalculator,\n decimalPoint: TemplateData.donationDecimalPoint || '.',\n conversionRate: '',\n isAmountEditable: isEditable,\n\n showValidationError: props.showValidationError || false,\n validationErrorMessage: props.validationErrorMessage || '',\n validationErrorCode: props.validationErrorCode || '',\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.showValidationError !== nextProps.showValidationError) {\n this.setState({\n showValidationError: nextProps.showValidationError,\n validationErrorMessage: nextProps.validationErrorMessage,\n validationErrorCode: nextProps.validationErrorCode,\n });\n }\n }\n\n componentDidMount() {\n // Watch for amount change for the case that donor opts in to cover fee\n // and clicks back button to go back to landing page\n // as we need to restore donor's original entered amount\n this.dispatcherCharityAmount = AppDispatcher.register((payload) => {\n if (payload.action && payload.action.actionType === 'CHANGE_AMOUNT') {\n const { action: { item: { amount = 0 } = {} } = {} } = payload;\n this.setState({\n charityAmount: amount,\n });\n }\n });\n }\n\n componentWillUnmount = () => {\n AppDispatcher.unregister(this.dispatcherCharityAmount);\n };\n\n isGuestReviewPage = () => {\n return (\n window.location.pathname.includes('guest') ||\n ![undefined, null].includes(getParameterByName('signup'))\n );\n };\n\n normalizeAmount = (amount) => {\n return isNaN(amount) ? 0 : amount;\n };\n\n setAppAmount = (amount) => {\n AppActions.changeAmount({\n amount,\n });\n };\n\n getConversionRate = (state, exchangeRate) => {\n let rate =\n exchangeRate.base_currency_code === state.userAmountCode\n ? exchangeRate.quote_amount\n : 1 / exchangeRate.quote_amount;\n return rate.toFixed(2);\n };\n\n getConversionRequest = (state, params, callback) => {\n this.getConversionRequest = _debounce((st, par, fn) => {\n const queryParams = {\n fromCountry: st.userCountry,\n fromCurrency: st.userAmountCode,\n toCurrency: st.charityAmountCode,\n ...par,\n };\n\n if (queryParams.fromAmount) {\n queryParams.fromAmount = this.normalizeAmount(queryParams.fromAmount);\n } else {\n queryParams.toAmount = this.normalizeAmount(queryParams.toAmount);\n }\n const url = '/donate/calculate-foreign-exchange';\n this.props.conversionStatus(true);\n Promise.resolve(\n fetcher(url, {\n method: 'POST',\n body: JSON.stringify(queryParams),\n })\n )\n .then((response) => response.json())\n .then(({ result }) => {\n this.props.conversionStatus(false);\n fn(result);\n })\n .catch(() => {\n this.props.conversionStatus(false);\n let amount = queryParams.fromAmount || queryParams.toAmount || '';\n amount += '';\n fn({\n target: { value: amount },\n source: { value: amount },\n exchange_rate: {\n base_currency_code: queryParams.userAmountCode,\n quote_amount: 1,\n },\n });\n });\n }, 500);\n\n this.getConversionRequest(state, params, callback);\n };\n\n /*\n * getConversion\n * Getting conversion rate for calculator\n */\n getConversion = (state, params, fn) => {\n // Conversion is only required for calculator\n if (state.isCalculator) {\n this.getConversionRequest(state, params, fn);\n } else {\n const amount = params.fromAmount || params.toAmount || '';\n fn({\n target: { value: amount },\n source: { value: amount },\n exchange_rate: {\n base_currency_code: state.userAmountCode,\n quote_amount: 1,\n },\n });\n }\n };\n\n handleAmountChange = (amount) => {\n this.setState({ charityAmount: amount });\n this.setAppAmount(amount);\n\n // let recurringStatus = AppStore.getDonationRecurring() === 'checked';\n // if (recurringStatus) {\n // if (isAmountGreaterThanZero(amount)) {\n // $('#donateNowAmt').html(this.state.charityAmountSymbol + amount);\n // } else {\n // $('#donateNowAmt').html(' ');\n // }\n // }\n\n if (isAtLandingPage()) {\n // Compute fee amount and update store\n setFeeAmountInStore();\n // Let landing page know that fee amount displayed needs to be updated\n this.props.updateFeeAmount();\n } else {\n // Since user updates the amount in the guest page\n // we should opt user out for cover the fee in case\n // they go back to landing page\n if (isOptInCoverFee()) {\n optOutCoverFee();\n }\n\n // In case user selects a preset button but update the amount\n // in review page, the donation amount type should now be\n // \"userinput\"\n if (AppStore.getDonationAmountType() === 'preset') {\n AppActions.updateDonationAmountType('userinput');\n }\n }\n };\n\n handleAmountFocus() {\n this.props.onFocus();\n }\n\n handleUserAmountChange = (amount) => {\n let snapshot = {\n userAmount: amount,\n charityDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n fromAmount: state.userAmount,\n },\n ({ target, exchange_rate }) => {\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n charityAmount: target.value,\n charityDisabled: false,\n });\n this.setAppAmount(target.value);\n }\n );\n };\n\n handleUserCurrencyChange = (currencyCode) => {\n let snapshot = {\n userAmountCode: currencyCode,\n charityDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n fromAmount: state.userAmount,\n },\n ({ target, exchange_rate }) => {\n state.charityAmount = target.value;\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n charityAmount: state.charityAmount,\n charityDisabled: false,\n });\n this.setAppAmount(target.value);\n }\n );\n };\n\n handleCharityAmountChange = (amount) => {\n let snapshot = {\n charityAmount: amount,\n userDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n toAmount: state.charityAmount,\n },\n ({ source, exchange_rate }) => {\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n userAmount: source.value,\n userDisabled: false,\n });\n this.setAppAmount(state.charityAmount);\n }\n );\n };\n\n shouldShowPresetAmounts = () => {\n // Should only show preset amount options in landing\n // page not review page to make the experience consistent\n // with member flow. It works better for cover the fees as well\n return (\n TemplateData.enablePresetAmounts &&\n !this.state.isCalculator &&\n !this.isGuestReviewPage()\n );\n };\n\n renderPresetAmounts = () => {\n return (\n \n );\n };\n\n render() {\n if (this.shouldShowPresetAmounts()) {\n return (\n
\n {this.renderPresetAmounts()}\n
\n );\n }\n\n return (\n
\n {this.state.isCalculator ? (\n \n ) : (\n \n )}\n
\n );\n }\n}\n\nAmountWrapper.propTypes = {\n conversionStatus: PropTypes.func,\n showValidationError: PropTypes.bool,\n hideValidationError: PropTypes.func,\n validationErrorMessage: PropTypes.string,\n validationErrorCode: PropTypes.string,\n validateDonationAmount: PropTypes.func,\n onFocus: PropTypes.func,\n updateFeeAmount: PropTypes.func,\n};\n\nexport default AmountWrapper;\n","/**\n * Card security code input used for adding a card\n */\nimport React from 'react';\nimport { TextInput } from '@paypalcorp/pp-react';\nimport PropTypes from 'prop-types';\n\nimport { cardSpecPropType } from 'prop-validators';\n\nclass CardSecurityCode extends React.Component {\n static propTypes = {\n cardSpec: cardSpecPropType,\n label: PropTypes.string.isRequired,\n errorMessage: PropTypes.string,\n handleChangeSecurityCode: PropTypes.func.isRequired,\n handleFocus: PropTypes.func,\n handleBlur: PropTypes.func,\n dir: PropTypes.string,\n helperText: PropTypes.string,\n };\n\n static defaultProps = {\n handleFocus: () => {},\n handleBlur: () => {},\n };\n\n state = { value: '', showIsRequiredError: false };\n\n /**\n * Handle changing the csc\n * @param {String} securityCode - the csc\n * @return {String} securityCode - numbers only\n */\n handleChangeSecurityCode = ({ target: { value: securityCode } }) => {\n securityCode = securityCode.replace(/\\D+/g, '');\n this.setState({ value: securityCode });\n this.handleCheckForValue(securityCode);\n this.props.handleChangeSecurityCode(securityCode);\n return securityCode;\n };\n\n /**\n * Check for a security code value\n * If the field is required, we should show that this field needs a value\n * @param {String} securityCode - the csc\n */\n handleCheckForValue = (securityCode) => {\n const cscSpecs = this.props.cardSpec.fields.csc;\n const isRequired = cscSpecs.required;\n this.setState({ showIsRequiredError: isRequired && !securityCode });\n };\n\n /**\n * Call parent's handleFocus\n * @param {String} securityCode - the csc\n */\n handleFocus = (securityCode) => {\n this.props.handleFocus(securityCode);\n };\n\n /**\n * Check for a security code value and call parent's handleBlur\n * @param {String} securityCode - the csc\n */\n handleBlur = ({ target: { value: securityCode } }) => {\n this.handleCheckForValue(securityCode);\n this.props.handleBlur(securityCode);\n };\n\n render() {\n const cscSpecs = this.props.cardSpec.fields.csc;\n // let helpText = '●'.repeat(cscSpecs.maxlength)\n let { errorMessage } = this.props;\n\n return (\n
\n \n
\n );\n }\n}\n\nexport default CardSecurityCode;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { BodyText, Alert } from '@paypalcorp/pp-react';\nimport getContent from 'pp-react-l10n';\n\nconst getRecurringInfoContent = getContent('locals')(\n 'common/recurring-checkbox'\n);\n\nexport default function RecurringInfo({ orgName, amount }) {\n return (\n \n \n {getRecurringInfoContent(\n 'rp.helpText1',\n { orgName: orgName, amount: amount },\n { useHTML: true }\n )}\n \n \n {getRecurringInfoContent('rp.helpText2')}\n \n \n );\n}\n\nRecurringInfo.propTypes = {\n orgName: PropTypes.string,\n amount: PropTypes.string,\n};\n","/* eslint-disable */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport * as AppActions from '../../actions/AppActions';\nimport AppStore from '../../stores/AppStore';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport TemplateData, { localsMessages } from '../../utility/getTemplateData';\nimport { isLTR as isLeftToRight } from '../../utility/helper';\nimport { loadBodyMovin } from '../../utility/lazyLoader';\nimport { formatAmount } from '../../utility/formator';\nimport { sanitizeOrgName } from '../../utility/domUtils';\nimport RecurringInfo from './RecurringInfo';\nimport { Checkbox, Tooltip, Modal } from '@paypalcorp/pp-react';\nimport { preventFormSubmitOnTooltipClick } from '../../utility/fixPpReactToolTip';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\n\nconst orgname = TemplateData.donationName ? TemplateData.donationName : '';\nconst isLTR = isLeftToRight();\nlet texts = localsMessages('common/recurring-checkbox');\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 preventFormSubmitOnTooltipClick();\n }\n\n componentWillUnmount = () => {\n isContinue = this.props.continue;\n AppDispatcher.unregister(this.dispatcherToken);\n };\n\n loadAnimation(display) {\n if (!display) {\n return;\n }\n loadBodyMovin().then(() => {\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 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 render() {\n let { recurring_label, perMonth } = texts.rp;\n\n const checked = { checked: false };\n if (this.props.status) {\n checked.checked = true;\n }\n\n return (\n \n
\n {isContinue ? (\n
\n {perMonth}\n
\n ) : (\n
\n
\n \n
\n
\n
\n \n \n
\n
\n \n )}\n \n {this.props.status && !isContinue && (\n
\n \n
\n )}\n \n );\n }\n}\n\nRecurringCheckBox.propTypes = {\n handleChange: PropTypes.func,\n hasRecurringHelp: PropTypes.bool,\n status: PropTypes.bool,\n continue: PropTypes.bool,\n};\n\nRecurringCheckBox.defaultProps = {\n handleChange: () => {},\n};\n\nexport default RecurringCheckBox;\n","export function preventFormSubmitOnTooltipClick() {\n let tooltipButton = document.getElementsByClassName('ppvx_tooltip__icon');\n Object.values(tooltipButton).map((btn) => {\n btn.type = 'button';\n });\n}\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as constants from 'focus-lock/constants';\nimport { inlineProp } from './util';\n\nvar AutoFocusInside = function AutoFocusInside(_ref) {\n var disabled = _ref.disabled,\n children = _ref.children,\n className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, inlineProp(constants.FOCUS_AUTO, !disabled), {\n className: className\n }), children);\n};\n\nAutoFocusInside.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node.isRequired,\n disabled: PropTypes.bool,\n className: PropTypes.string\n} : {};\nAutoFocusInside.defaultProps = {\n disabled: false,\n className: undefined\n};\nexport default AutoFocusInside;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { canUseDOM } from './utils';\n\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n _classCallCheck(this, Portal);\n\n return _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).apply(this, arguments));\n }\n\n _createClass(Portal, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n this.defaultNode = null;\n }\n }, {\n key: 'render',\n value: function render() {\n if (!canUseDOM) {\n return null;\n }\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n return ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);\n }\n }]);\n\n return Portal;\n}(React.Component);\n\nPortal.propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};\n\nexport default Portal;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// This file is a fallback for a consumer who is not yet on React 16\n// as createPortal was introduced in React 16\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n _classCallCheck(this, Portal);\n\n return _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).apply(this, arguments));\n }\n\n _createClass(Portal, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.renderPortal();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(props) {\n this.renderPortal();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n ReactDOM.unmountComponentAtNode(this.defaultNode || this.props.node);\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n this.defaultNode = null;\n this.portal = null;\n }\n }, {\n key: 'renderPortal',\n value: function renderPortal(props) {\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n\n var children = this.props.children;\n // https://gist.github.com/jimfb/d99e0678e9da715ccf6454961ef04d1b\n if (typeof this.props.children.type === 'function') {\n children = React.cloneElement(this.props.children);\n }\n\n this.portal = ReactDOM.unstable_renderSubtreeIntoContainer(this, children, this.props.node || this.defaultNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return null;\n }\n }]);\n\n return Portal;\n}(React.Component);\n\nexport default Portal;\n\n\nPortal.propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};","import ReactDOM from 'react-dom';\n\nimport Portalv4 from './Portal';\nimport LegacyPortal from './LegacyPortal';\n\nvar Portal = void 0;\n\nif (ReactDOM.createPortal) {\n Portal = Portalv4;\n} else {\n Portal = LegacyPortal;\n}\n\nexport default Portal;","import React, { Component } from 'react';\nimport AppStore from '../../stores/AppStore';\nimport _get from 'lodash/get';\nimport { getPaymentCardNetwork } from '../../utility/card-utils';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { StyleSheet, css } from 'aphrodite';\nimport _isEmpty from 'lodash/isEmpty';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport { appendCdnHostName } from '../../utility/geoUtils';\nimport withTheme from '../../components/withTheme';\nimport { BodyText, HeadingText } from '@paypalcorp/pp-react';\n\nlet threeDSText = localsMessages('common/threeDSecure');\n\nconst LOADING_GIF_SOURCE = appendCdnHostName(\n '/ui-web/money-icons/partnerships/mbLoader_256_sm.gif'\n);\n\nconst STYLES = StyleSheet.create({\n spinnerAlign: {\n margin: '30px auto 30px',\n },\n cardImg: {\n marginTop: '24px',\n },\n});\n\nconst { wontTakeLong, DoNotCloseOrRefresh } = localsMessages(\n 'common/threeDSecure'\n);\n\nclass ThreeDSSpinner extends Component {\n constructor(props) {\n super(props);\n this.state = {\n cardImg: null,\n network: null,\n };\n }\n\n setNetworkDetails = () => {\n const fundingOptions = AppStore.getFundingOptions();\n let cardImg = _get(\n fundingOptions,\n 'sources[0].payment_card.issuer.thumbnail_logo_url'\n );\n let network = getPaymentCardNetwork(\n _get(fundingOptions, 'sources[0].payment_card')\n );\n let myData = AppStore.getAllData() || {};\n if (\n cardImg === null ||\n _isEmpty(cardImg) ||\n typeof cardImg === 'undefined'\n ) {\n const cardType = _get(myData, 'cardSpec.cardSpec.type', '')\n .replace(/[.,_]|\\s\\(.*\\)/g, '')\n .replace(/[\\s_]/g, '-')\n .toLowerCase();\n cardImg = appendCdnHostName(\n `/digitalassets/c/consumer/p2p/funding-sources/${cardType}.png`\n );\n }\n if (\n network === null ||\n _isEmpty(network) ||\n typeof network === 'undefined'\n ) {\n network = myData.cardSpec.cardSpec.type.replace(/[_]/g, ' ');\n }\n this.setState({ cardImg, network });\n };\n\n componentDidMount() {\n // Hide the donate spinner in the background\n // to prevent double spinners\n hideSpinnerOverlay();\n this.setNetworkDetails();\n }\n\n render() {\n let confirmingWithText = _get(\n threeDSText,\n 'confirmingWith',\n \"We're confirming your info with {network}\"\n );\n const confirmingWith = confirmingWithText.replace(\n new RegExp('{network}', 'g'),\n this.state.network\n );\n\n return (\n
\n
\n
\n {/*
*/}\n
\n \n
\n \n {confirmingWith}\n \n
\n {this.state.cardImg ? (\n \"Card\n ) : (\n ''\n )}\n
\n
\n {wontTakeLong}\n {DoNotCloseOrRefresh}\n
\n
\n
\n
\n );\n }\n}\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 const threeDSContingency =\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {};\n\n return threeDSContingency;\n }\n\n componentDidMount() {\n // 'message' is passed after 3DS Submit is completed\n window.addEventListener('message', this.handleDDCEvent);\n\n const { three_ds_reference_id: threeDS2ReferenceId } =\n this.getThreeDSParams();\n\n if (this.refs[threeDS2ReferenceId]) {\n try {\n this.refs[threeDS2ReferenceId].submit();\n } catch (e) {\n console.log('e ', e);\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('message', this.handleDDCEvent);\n }\n\n handleDDCEvent = (event) => {\n const eventOrigin = _get(event, 'origin', '');\n if (eventOrigin.includes('cardinalcommerce.com')) {\n let data = null;\n try {\n data = JSON.parse(event.data);\n } catch (exception) {\n // Error handler incase parsing goes wrong\n data = {};\n }\n\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.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 let 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 }),\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 = false, error }) => {\n if (confirmationStatus && confirmationStatus === 'threeDS-success') {\n this.props.onThreeDSStepUpAuthSuccess();\n } else {\n this.props.onThreeDSStepUpAuthFailure();\n return;\n }\n };\n\n showThreeDSIframe = () => {\n this.setState({\n showThreeDSIframe: true,\n });\n };\n\n hideThreeDSIframe = () => {\n this.setState({\n showThreeDSIframe: false,\n });\n };\n\n showThreeDSSpinner = () => {\n this.setState({\n showThreeDSSpinner: true,\n });\n };\n hideThreeDSSpinner = () => {\n this.setState({\n showThreeDSSpinner: false,\n });\n };\n\n render() {\n return (\n
\n {this.state.showThreeDSSpinner && (\n \n \n \n )}\n\n {this.state.showThreeDSDeviceDataCollection && (\n \n )}\n\n {this.state.showThreeDSIframe && (\n \n )}\n
\n );\n }\n}\n\nThreeDSContainer.propTypes = {\n onThreeDSStepUpAuthNotRequired: PropTypes.func,\n onThreeDSStepUpAuthSuccess: PropTypes.func,\n onThreeDSStepUpAuthFailure: PropTypes.func,\n onThreeDSFailure: PropTypes.func,\n onRef: PropTypes.func,\n toggleSpinner: PropTypes.func,\n};\n\nexport default ThreeDSContainer;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","import React, { Component } from 'react';\nimport templateData, { localsMessages } from '../../utility/getTemplateData';\nimport {\n handleGuestCountryChange,\n hideSpinnerOverlay,\n showSpinnerOverlay,\n} from '../../utility/helper';\nimport * as 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';\n\nconst initialData = getInitialData();\nconst serviceErrorMessages = localsMessages('errors/service');\n\nconst ERROR_ELEMENT_SELECTOR = [\n '.vx_has-error-with-message',\n '.service_error_holder',\n].join();\n\nfunction withDonate(WrappedComponent) {\n return class extends Component {\n static propTypes = {\n history: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n this.country = initialData.selectedCountry;\n }\n\n handleCountryChange = (country) => {\n 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 let { token, signUp = false } = templateData;\n let url = signUp\n ? `/donate?token=${token}&signup=true&country.x=${country}&locale.x=${country}`\n : `/donate?token=${token}&country.x=${country}&locale.x=${country}&countryChange=true&clientState=/donate/guest?token=${token}`;\n\n handleGuestCountryChange(url);\n }\n };\n\n /*\n * showing and hiding spinner\n */\n toggleSpinner = (isSpinner = false) => {\n if (isSpinner) {\n showSpinnerOverlay();\n } else {\n hideSpinnerOverlay();\n }\n };\n\n // handles scrolling screen to the error\n handleScrollToError = () => {\n scrollElementIntoView(ERROR_ELEMENT_SELECTOR);\n return;\n };\n\n getDonateGuestUrl = () => {\n const { token, country, language } = templateData;\n\n let url = `/donate/guest?token=${token}`;\n if (country) {\n url = url + `&country.x=${country}`;\n }\n\n if (country && language) {\n url = url + `&locale.x=${country}_${language}`;\n }\n\n return url;\n };\n\n getFormData() {\n return AppStore.getFormData();\n }\n\n saveFormData(formData) {\n DonateAppActions.saveFormData(formData);\n }\n\n showErrorOnLoad() {\n const url = window.location.href;\n let params = getParametersFromUrl(url);\n\n if (params.showErrorOnLoad) {\n if (params.showErrorOnLoad === 'fulfillment') {\n // TODO: update error code to the actual fullfilment error code\n let errorCode = 'WSM_TRANSACTION_FAILED_DUE_TO_INVALID_CARD_DATA';\n let errorMsgs = [\n {\n key: 0,\n value: serviceErrorMessages[errorCode],\n },\n ];\n\n // adding delay to wait for the dispatcher to get registered in ServerErrors\n setTimeout(\n () =>\n DonateAppActions.updateServerErrors({ serverErrors: errorMsgs }),\n 250\n );\n }\n // delete params.showErrorOnLoad;\n\n // const query = $.param(params);\n // const cleanedUrl = `/donate/guest/?${query}`;\n // window.history.replaceState({}, document.title, cleanedUrl);\n }\n }\n\n doFulfilment = (params = {}) => {\n const { securityCode } = params;\n this.toggleSpinner(true);\n\n fetcher('/donate/guest/fullfilment', {\n method: 'POST',\n body: JSON.stringify({\n 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 }),\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 let clientState = encodeURIComponent(\n `/donate/guest?token=${token}&showErrorOnLoad=fulfillment`\n );\n window.location.href = `/donate?token=${token}&country.x=${country}&locale.x=${country}&clientState=${clientState}`;\n return;\n } else if (result.data && result.data.confirmationData) {\n startCustomCPLTrackingForConfirmationPage();\n this.toggleSpinner(false);\n const { token } = templateData;\n const queryParams = objectOrArrayToQueryString({ token });\n let confirmationData = result.data.confirmationData || {};\n DonateAppActions.updateConfirmation({\n confirmation: confirmationData,\n });\n if (confirmationData.isOfacPending) {\n this.props.history.push(`/donate/guest/pending?${queryParams}`);\n } else {\n this.props.history.push(\n `/donate/guest/confirmation?${queryParams}`\n );\n }\n } else {\n this.toggleSpinner(false);\n this.props.history.push(\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 { localsMessages } from './getTemplateData';\nimport _get from 'lodash/get';\n\nconst fundingTypes = localsMessages('common/fundingTypes');\n\nexport const defaultCardSpec = {\n type: 'card',\n fields: {\n ccNumber: {\n required: true,\n pattern: '4[0-9]{12}(?:[0-9]{3})?',\n maxlength: 19,\n },\n expirationDate: {\n required: true,\n pattern: '(0[1-9]|1[012])[/]((20)[0-9]{2}|[0-9]{2})',\n maxlength: 7,\n },\n csc: {\n required: true,\n pattern: '[0-9]*',\n maxlength: 3,\n minlength: 3,\n },\n },\n};\n\n/**\n * Get the card type based on the card number\n * @param {Object} cardSpecs - the card specifications based on user's locale\n * @param {String} cardNumber - the valid card number (numbers only)\n * @return {Object} cardType - the card type specs for a specific card\n */\nexport function getSpecificCardSpec({ cardTypes }, cardNumber) {\n cardNumber = cardNumber.replace(/\\D+/g, '');\n\n for (let card in cardTypes) {\n let cardSpec = cardTypes[card];\n if (\n new RegExp(`^${cardSpec.fields.ccNumber.autodetect}$`).test(cardNumber)\n ) {\n return cardSpec;\n }\n }\n return defaultCardSpec;\n}\n\nconst PAYMENT_CARDS = {\n VISA: 'VISA',\n MASTERCARD: 'MASTERCARD',\n MASTER_CARD: 'MASTER_CARD',\n MAESTRO: 'MAESTRO',\n AMEX: 'AMEX',\n DISCOVER: 'DISCOVER',\n JCB: 'JCB',\n CHINA_UNION_PAY: 'CHINA_UNION_PAY',\n};\n\nexport function getPaymentCardNetwork(source) {\n switch (source.network) {\n case PAYMENT_CARDS.VISA:\n return _get(fundingTypes, 'fundingType.visa');\n case PAYMENT_CARDS.MASTERCARD:\n case PAYMENT_CARDS.MASTER_CARD:\n return _get(fundingTypes, 'fundingType.mastercard');\n case PAYMENT_CARDS.MAESTRO:\n return _get(fundingTypes, 'fundingType.maestro');\n case PAYMENT_CARDS.AMEX:\n return _get(fundingTypes, 'fundingType.amex');\n case PAYMENT_CARDS.DISCOVER:\n return _get(fundingTypes, 'fundingType.discover');\n case PAYMENT_CARDS.CHINA_UNION_PAY:\n return _get(fundingTypes, 'fundingType.china_union_pay');\n default:\n return source.network;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@paypalcorp/pp-react';\n\nexport default function NoteFieldError(props) {\n const errorText = props.errorText;\n\n if (!errorText) {\n return null;\n }\n return (\n
\n \n \n \n {errorText}\n \n \n
\n );\n}\n\nNoteFieldError.propTypes = {\n errorText: PropTypes.string,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport templateData, { localsMessages } from '../utility/getTemplateData';\nimport * as AppActions from '../actions/AppActions';\nimport AppStore from '../stores/AppStore';\nimport { addClass, removeClass } from '../utility/domUtils';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\nimport isEmpty from 'lodash/isEmpty';\nimport { EVENT_NAME } from '../utility/constants';\nimport { IconButton, TextArea, BodyText } from '@paypalcorp/pp-react';\nimport NoteFieldError from './NoteFieldError';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\n\nlet messages = localsMessages('common/note');\nconst MAX_CHAR_LIMIT = 250;\n\nfunction NoteComponent(props) {\n let { label = '', error: { lengthLimit = '' } = {} } = messages.note;\n\n let providedLabel = label;\n if (templateData.charityNoteEnabled && templateData.charityNoteLabel) {\n providedLabel = templateData.charityNoteLabel;\n }\n\n if (props.label) {\n providedLabel = props.label;\n }\n\n const [donationNote, setDonationNote] = useState(\n AppStore.getDonationNote() || templateData.donationNote || ''\n );\n const initialNoteLabel = isEmpty(donationNote) ? providedLabel : donationNote;\n\n const [showLabel, setShowLabel] = useState(true);\n const [showError, setShowError] = useState(false);\n const [noteLabel, setNoteLabel] = useState(initialNoteLabel);\n const textAreaEl = useRef(null);\n\n 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 arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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 { localsMessages } from '../utility/getTemplateData';\nimport { Button, V2PaypalIcon } from '@paypalcorp/pp-react';\nimport { isExternalFlow } from '../utility/externalIntegrationUtils';\nconst messages = localsMessages('common/nextButton');\n\nclass NextButtonComponent extends React.Component {\n render() {\n const buttonnext = messages.button && messages.button.next;\n\n return (\n <>\n {isExternalFlow() ? (\n \n {buttonnext}\n \n ) : (\n \n {buttonnext}\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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { Button } from '@paypalcorp/pp-react';\nconst messages = localsMessages('common/oneTouch');\n\nclass OneTouchNextButton extends React.Component {\n render() {\n const buttonnext = messages.button && messages.button.next;\n\n return (\n \n {buttonnext}\n \n );\n }\n}\n\nOneTouchNextButton.propTypes = {\n label: PropTypes.string,\n disabled: PropTypes.bool,\n handleNext: PropTypes.func,\n};\n\nexport default OneTouchNextButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../utility/getTemplateData';\nimport { Button } from '@paypalcorp/pp-react';\nconst messages = localsMessages('guest/guestButton');\n\nclass GuestButton extends React.Component {\n render() {\n const { label: { debitorcredit = '' } = {} } = messages;\n return (\n \n {debitorcredit}\n \n );\n }\n}\n\nGuestButton.propTypes = {\n label: PropTypes.string,\n disabled: PropTypes.bool,\n handleGuest: PropTypes.func,\n};\n\nexport default GuestButton;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { DropdownMenu } from '@paypalcorp/pp-react-dropdown-menu';\nimport * as AppActions from '../../actions/AppActions';\nimport appStore from '../../stores/AppStore';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { FPTI_TAGS, LINK_NAME } from '../../fpti/fptiConstants';\nconst messages = localsMessages('common/programs');\n\nconst Programs = ({ programNames, isDisabled }) => {\n const [selectedIdx, handleSelect] = useState(0);\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 });\n });\n\n return options;\n };\n\n const updateProgramId = (index) => {\n handleSelect(index);\n const selectedProgram = index === -1 ? '' : programNames[index];\n AppActions.updateSelectedProgram(selectedProgram);\n trackLinkClick(LINK_NAME.PROGRAM_SELECTED, {\n additionalData: {\n [FPTI_TAGS.CAMPAIGN]: selectedProgram,\n },\n });\n };\n\n useEffect(() => {\n let programOption = getProgramOptions().findIndex(\n (program) => program.primaryText === appStore.getSelectedProgram()\n );\n programOption = programOption === -1 ? 0 : programOption;\n handleSelect(programOption);\n AppActions.updateSelectedProgram(programNames[programOption]);\n }, []);\n\n return (\n \n );\n};\n\nPrograms.propTypes = {\n programNames: PropTypes.array,\n isDisabled: PropTypes.bool,\n};\n\nexport default Programs;\n","import React, { Component } from 'react';\nimport { Button, Sheet, HeadingText, BodyText } from '@paypalcorp/pp-react';\nimport TemplateData, { localsMessages } 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';\n\nlet texts = localsMessages('common/recurring-checkbox');\n\nconst orgname = TemplateData.donationName ? TemplateData.donationName : '';\n\nexport class RecurringOverlay extends Component {\n handleClose = () => {\n this.props.closeRecurringOverlay();\n };\n\n noThanks_closeModal = (event) => {\n this.props.onMakeOneTimeDonation();\n };\n\n onContinue = (event) => {\n this.props.onContinue();\n };\n\n render() {\n let {\n rp: {\n signupHeader,\n dialogp1,\n dialogp2,\n dialogp3,\n continueBtn,\n noThanksBtn,\n } = {},\n } = texts || {};\n\n dialogp1 =\n dialogp1 && dialogp1.replace('{orgName}', sanitizeOrgName(orgname));\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 {signupHeader}\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n {dialogp1}\n
\n
\n
\n {dialogp2}\n
\n
\n
\n {dialogp3}\n
\n
\n
\n
\n\n
\n
\n
\n \n
\n
\n\n
\n
\n \n {noThanksBtn}\n \n
\n
\n
\n
\n
\n \n );\n }\n}\n\nRecurringOverlay.propTypes = {\n closeRecurringOverlay: PropTypes.func,\n onMakeOneTimeDonation: PropTypes.func,\n onContinue: PropTypes.func,\n isOpen: PropTypes.bool,\n};\n\nexport default RecurringOverlay;\n","import React from 'react';\nimport { CaptionText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport { localsMessages } from '../utility/getTemplateData';\n\nconst messages = localsMessages('buttons/partner') || {};\n\nconst styles = StyleSheet.create({\n disclaimerWrapper: {\n maxWidth: 350,\n margin: 'auto',\n '.ppvx_accordion__row': { border: 'none' },\n },\n disclaimer: {\n margin: 'auto',\n },\n disclaimerCaptionText: {\n marginTop: 12,\n color: '#687173',\n textAlign: 'center',\n },\n});\n\nexport default function NotTaxDeductibleLegalText() {\n return (\n
\n \n {messages.landing.mayNotBeTaxDeductible}\n \n
\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as AppActions from '../../actions/AppActions';\nimport getContent from 'pp-react-l10n';\nimport { Checkbox } from '@paypalcorp/pp-react';\n\nconst CoverFeeCheckbox = ({\n handleCoverFeeChange,\n optInStatus,\n formatedFeeAmount,\n isDisabled,\n}) => {\n const handleChange = (event) => {\n const isChecked = event.target.checked,\n checkboxStatus = isChecked ? 'checked' : 'unchecked';\n\n AppActions.changeCoverFee({\n coverFee: checkboxStatus,\n });\n\n handleCoverFeeChange(isChecked);\n };\n\n return (\n \n );\n};\n\nCoverFeeCheckbox.propTypes = {\n handleCoverFeeChange: PropTypes.func,\n optInStatus: PropTypes.bool,\n formatedFeeAmount: PropTypes.string,\n isDisabled: PropTypes.bool,\n};\n\nexport default CoverFeeCheckbox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as AppActions from '../../actions/AppActions';\nimport { Checkbox, Tooltip } from '@paypalcorp/pp-react';\nimport { EVENT_NAME } from '../../utility/constants';\nimport { trackLinkClick } from '../../fpti/fpti';\nimport { LINK_NAME } from '../../fpti/fptiConstants';\n\nconst AnonymousCheckbox = ({\n content,\n optInStatus,\n handleAnonymousDonationChange,\n}) => {\n const handleChange = (event) => {\n const isChecked = event.target.checked,\n checkboxStatus = isChecked ? 'checked' : 'unchecked';\n\n AppActions.changeAnonymousStatus({\n anonymousStatus: checkboxStatus,\n });\n\n handleAnonymousDonationChange(isChecked);\n };\n\n const trackTooltipOpen = () => {\n 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","import React from 'react';\nimport '../../utility/csrf';\nimport AmountWrapper from '../../components/amountWrapper';\nimport NextButton from '../../components/nextButton';\nimport OneTouchNextButton from '../../components/landing/OneTouchNextButton';\nimport CancelAndReturn from '../../components/cancelAndReturn';\nimport GuestButton from '../../components/guestButton';\nimport RecurringCheckBox from '../../components/recurring-checkbox/recurring-checkbox';\nimport UserDetailsBanner from '../../components/onetouch/UserDetailsBanner';\nimport OfferDetail from '../../components/offerDetail';\nimport Disclaimer from '../../components/Disclaimer';\nimport VoucherFlowDisclaimer from '../../components/voucherFlowDisclaimer';\nimport CloseButton from '../../components/CloseButton';\nimport ReceiverEligibilityErrorTile from '../error/receiverEligibilityError';\nimport {\n isInContext,\n isMobileOrInContext,\n} from '../../utility/inContextDonation';\nimport DonateHeader from '../../components/common/DonateHeader';\n\nimport templateData from '../../utility/getTemplateData';\nimport {\n hasPersonalizedMessages,\n getPersonalizedMessages,\n} from '../../utility/personalizedMessages';\n\nimport AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport * as cpl from '../../utility/cpl';\nimport { GN_CONTENT_TOUCHPOINT } from '../../utility/constants';\n\nimport {\n handleLogIn,\n addShake,\n handleTokenReuse,\n hideSpinnerOverlay,\n getPPCCStatus,\n showSpinnerOverlay,\n} from '../../utility/helper';\nimport {\n isAuthenticatedUser,\n shouldShowUserBanner,\n isLoggedInUser,\n} from '../../utility/authUtils';\nimport * as amountUtils from '../../components/amount/amountUtils';\n\nimport { withRouter } from 'react-router-dom';\nimport {\n localsMessages,\n isOldButtonFactory,\n hasPartnerSource,\n} from '../../utility/getTemplateData';\nimport { loadBodyMovin } 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/externalIntegrationUtils';\nimport NoteComponent from '../../components/note';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n trackAnonymousCheckboxClick,\n trackCoverFeeCheckboxClick,\n trackDonateWithCardClick,\n trackDonateWithPayPalClick,\n trackLandingPageIM,\n trackNextClickForCheckout,\n} from '../../fpti/fpti';\nimport { CPL_PAGE_SPEC } from '../../fpti/fptiConstants';\nimport classNames from 'classnames';\n\nconst messages = localsMessages('common/amount');\nconst errorMessages = localsMessages('errors/landingerror');\nconst MERCHANT_PPCC_CONFIRMED_STATUS = 'CONFIRMED';\n\nclass LandingPageComponent extends React.Component {\n constructor(props) {\n super(props);\n const optInStatus = AppStore.getCoverFeeOptInStatus();\n const anonymousStatusInStore = AppStore.getAnonymousStatus();\n const anonymousOptInStatus = !isEmpty(anonymousStatusInStore)\n ? anonymousStatusInStore === 'checked'\n : templateData.anonymousStatus || false;\n\n this.state = {\n hasLogo: templateData.hasLogo,\n subHeaderLabel: templateData.donationName,\n orgName: templateData.charityName,\n donationId: templateData.donationId,\n guestRedirectUrl: templateData.guestRedirectUrl,\n donateDisabled: false,\n recurringEnabled: templateData.recurringEnabled,\n recurringStatus: templateData.recurringStatus === 'checked',\n recurringHelpText: '',\n recurringLabel: 'Make this a monthly donation',\n rpContinue: false,\n isAuthenticated: isAuthenticatedUser(),\n memberMandatory: templateData.memberMandatory,\n programNames:\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 };\n }\n\n getPPCCConfirmation() {\n return getPPCCStatus() === MERCHANT_PPCC_CONFIRMED_STATUS;\n }\n\n componentDidMount() {\n window.onload = function () {\n setTimeout(function () {\n cpl.logPerformance(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 // 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 loadBodyMovin();\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({ noteFieldDisplayed: this.shouldShowNote() });\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({ noteFieldDisplayed: this.shouldShowNote() });\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 = amountUtils.validateMinimumDonationAmount(messages);\n if (validationResult?.showValidationError) {\n this.setState(validationResult);\n addShake();\n return false;\n }\n\n validationResult = amountUtils.validateMaximumDonationAmount();\n if (validationResult?.showValidationError) {\n this.setState(validationResult);\n addShake();\n return false;\n }\n\n this.setState(validationResult);\n return true;\n };\n\n handleAmountFocus = () => {\n if (this.state.showValidationError) {\n this.hideValidationError();\n }\n };\n\n updateConversionSataus = (status = false) => {\n this.setState({ donateDisabled: status });\n };\n\n handleRecurringChange = (status = false) => {\n this.setState({ recurringStatus: status });\n console.log('status ', status);\n };\n\n handleRecurringOverlayContinue = () => {\n this.setState({ rpContinue: true });\n this.validateAmountAndNavigateToGuestPage();\n };\n\n handleRecurringOverlayMakeOneTimeDonation = () => {\n AppActions.changeRecurring({\n recurring: 'unchecked',\n });\n this.validateAmountAndNavigateToGuestPage();\n };\n\n handleAnonymousDonationChange = (status = false) => {\n this.setState({ anonymousOptInStatus: status });\n 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 renderDonateButtons = () => {\n if (isCheckoutRail()) {\n return (\n \n );\n }\n\n if (this.state.isAuthenticated) {\n return (\n \n );\n }\n\n return (\n
\n
\n \n
\n \n
\n );\n };\n\n /**\n * Should show note on landing page when charityNote is enabled\n * and recurring is disabled for client flows\n * @return {Boolean} true to show note field\n */\n shouldShowNote = () => {\n return (\n templateData.charityNoteEnabled &&\n !this.state.recurringStatus &&\n isExternalFlow()\n );\n };\n\n getPersonalizedContent = () => {\n if (isExternalFlow()) {\n const personalizedMessages = getPersonalizedMessages(\n GN_CONTENT_TOUCHPOINT\n );\n return personalizedMessages?.disclaimer;\n }\n };\n\n landingClass() {\n 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 render() {\n const showUserBanner = shouldShowUserBanner();\n\n if (!templateData.receiverCountryEligible) {\n return (\n \n \n \n );\n }\n\n return (\n
\n
\n {showUserBanner ? (\n \n ) : null}\n {isExternalFlow() && }\n \n
\n \n {this.renderProgramsDropdown()}\n {this.state.anonymousEnabled && (\n \n )}\n {this.shouldShowNote() && (\n \n )}\n {this.state.coverFeeEnabled && (\n \n )}\n {this.state.recurringEnabled && (\n \n )}\n {this.state.isVoucherFlow && (\n \n )}\n {this.renderDonateButtons()}\n {this.state.isVoucherFlow && }\n {hasPartnerSource() &&\n !this.getPPCCConfirmation() &&\n !this.state.isVoucherFlow && }\n \n {this.state.hasDisclaimer && (\n \n )}\n
\n
\n \n
\n );\n }\n}\n\nconst LandingPage = withRouter(withDonate(withTheme(LandingPageComponent)));\n\nclass Landing extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n displayLanding: !templateData.currentState,\n };\n }\n\n /**\n * For DIRECT(nonWebscr) and POST integrations, there will not be a token in the URL\n * This will break page refresh.\n * Hence adding token here\n */\n addTokenToUrlIfMissing() {\n const token = getParameterByName('token');\n const business = getParameterByName('business');\n const hostedButtonId = getParameterByName('hosted_button_id');\n\n if (!token && !business && !hostedButtonId) {\n this.props.history.replace({\n pathname: '/donate',\n search: `?token=${templateData.token}`,\n });\n }\n }\n\n componentDidMount() {\n if (!this.state.displayLanding) {\n this.props.history.push(templateData.currentState);\n } else {\n handleTokenReuse();\n }\n this.addTokenToUrlIfMissing();\n }\n\n render() {\n return
{this.state.displayLanding ? : null}
;\n }\n}\n\nexport default withRouter(Landing);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { CURRENCY_CONVERSION_OPTIONS } from '../../pages/guest/crossBorder';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { Tile } from '@paypalcorp/pp-react-tile';\nimport { Sheet } from '@paypalcorp/pp-react-sheet';\nimport { BodyText, CaptionText, HeadingText } from '@paypalcorp/pp-react-text';\nimport { Spot } from '@paypalcorp/pp-react-spot';\nimport { V2CheckmarkBackgroundIcon } from '@paypalcorp/pp-react-icons';\nimport { Button } from '@paypalcorp/pp-react-buttons';\nimport { checkKeyPressed } from '../../utility/accessibilityUtils';\nconst messages = localsMessages('guest/crossBorder');\n\nconst CurrencyConversionOption = (props) => {\n return (\n \n checkKeyPressed(e, () => {\n props.handleOptionSelection();\n })\n }\n >\n \n
\n \n
\n \n {props.title}\n \n {props.rate && {props.rate}}\n {props.description}\n
\n \n
\n
\n \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 spotImage: PropTypes.string,\n};\n\nconst CurrencyConversionModal = (props) => {\n const { label } = messages;\n const { selectedOption, exchangeRate } = props;\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 \n \n {label.modalTitle}\n \n \n {label.modalSubTitle}\n \n\n setPaypalSelected(true)}\n className=\"option-paypal\"\n spotImage=\"paypal-app\"\n />\n setPaypalSelected(false)}\n className=\"option-card\"\n spotImage=\"credit-cards\"\n />\n
\n \n
\n \n );\n};\n\nCurrencyConversionModal.propTypes = {\n handleOptionSelection: PropTypes.func.isRequired,\n hideModal: PropTypes.func,\n selectedOption: PropTypes.string,\n exchangeRate: PropTypes.string,\n isOpen: PropTypes.bool,\n};\n\nexport default CurrencyConversionModal;\n","import { KEY_DOWN } from './constants';\n\nexport function checkKeyPressed(event, doFunction) {\n if (event.which === KEY_DOWN.SPACE || event.which === KEY_DOWN.ENTER) {\n return doFunction();\n }\n}\n","import React from 'react';\nimport CardSecurityCode from '../react-card-security-code';\nimport AppStore from '../stores/AppStore';\nimport * as AppActions from '../actions/AppActions';\nimport {\n localsMessages,\n guestLocalsMessages,\n} from '../utility/getTemplateData';\n\nconst guestMessages = guestLocalsMessages('guest/guestForm');\nconst errorMessages = localsMessages('errors/service');\n\nclass CVVComponent extends React.Component {\n constructor() {\n super();\n this.state = {\n securityCode: '',\n cardSpec: AppStore.getCardSpec().cardSpec,\n errorMessageCSC: '',\n };\n }\n\n componentDidMount() {\n this.props.onRef(this);\n }\n\n componentWillUnmount() {\n this.props.onRef(undefined);\n }\n\n handleChangeSecurityCode(securityCode) {\n this.setState({ securityCode: securityCode });\n this.props.handleSecurityCodeChange(securityCode);\n }\n\n handleFieldFocus(fieldName) {\n this.setState({ [fieldName]: '' });\n }\n\n /*\n * Handle error message for selected field\n */\n handleFieldBlur(value, fieldName, fieldRequired, fieldInvalid) {\n let newErrorState = {};\n\n if (value) {\n newErrorState = {\n [fieldName]: this.validateInputValue(value, fieldName, fieldInvalid),\n };\n } else {\n newErrorState = { [fieldName]: errorMessages[fieldRequired] };\n }\n\n this.setState(newErrorState);\n }\n\n /*\n * Validate input\n */\n validateInputValue(value, fieldName, fieldInvalid) {\n let {\n cardSpec: {\n fields: { csc = {} },\n },\n } = this.state;\n\n if (fieldName === 'errorMessageCSC') {\n let cscLen = value && value.length;\n let cscMax = csc.maxlength;\n let cscMin = csc.minlength || cscMax;\n\n if (!(cscLen >= cscMin && cscLen <= cscMax)) {\n return errorMessages[fieldInvalid];\n }\n }\n\n return '';\n }\n\n render() {\n let { cscplaceholder, csc: cscLabel, cscnote } = guestMessages.guestLabels;\n cscnote = cscnote && cscnote.replace('{csc}', cscLabel.toLowerCase());\n\n return (\n
\n
\n \n this.handleChangeSecurityCode(value)\n }\n handleFocus={(value) => this.handleFieldFocus('errorMessageCSC')}\n handleBlur={(value) =>\n this.handleFieldBlur(\n value,\n 'errorMessageCSC',\n 'REQUIRED_SECURITY_CODE',\n 'INVALID_SECURITY_CODE'\n )\n }\n cardSpec={this.state.cardSpec}\n helperText={cscnote}\n />\n
\n
\n );\n }\n}\n\nexport default CVVComponent;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport getContent from 'pp-react-l10n';\nimport { CDN_HOST_NAME } from '../../../utility/constants';\nimport { BodyText, CaptionText } from '@paypalcorp/pp-react-text';\nimport { V2CreditcardIcon } from '@paypalcorp/pp-react-icons';\nimport _isEmpty from 'lodash/isEmpty';\nimport { Badge } from '@paypalcorp/pp-react-badge';\n\nconst PaymentInformation = ({\n source,\n paymentDigits,\n paymentType,\n issuer,\n isPaypalCurrencyConversion,\n funds,\n cardType,\n}) => {\n const crossBorderContent = getContent('locals')('guest/crossBorder');\n const paymentInformation = crossBorderContent(\n 'label.paymentInformation',\n { type: paymentType, number: paymentDigits },\n { useHTML: true }\n );\n const preferred = crossBorderContent('label.preferred');\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
\n
\n {!_isEmpty(paymentLogo) ? (\n \n ) : (\n \n )}\n
\n {issuer && {getIssuer()}}\n \n {paymentInformation}\n \n {!isPaypalCurrencyConversion && (\n {preferred}\n )}\n
\n
\n {funds}\n
\n );\n};\n\nPaymentInformation.propTypes = {\n fundingOptions: PropTypes.object,\n paymentDigits: PropTypes.number,\n paymentType: PropTypes.string,\n issuer: PropTypes.string,\n funds: PropTypes.string,\n isPaypalCurrencyConversion: PropTypes.string,\n source: PropTypes.object,\n cardType: PropTypes.string,\n};\n\nexport default PaymentInformation;\n","import React from 'react';\nimport AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport TemplateData, {\n localsMessages,\n guestLocalsMessages,\n} from '../../utility/getTemplateData';\nimport { showSpinnerOverlay, hideSpinnerOverlay } from '../../utility/helper';\nimport CancelAndReturn from '../../components/cancelAndReturn';\nimport _get from 'lodash/get';\nimport _includes from 'lodash/includes';\nimport _isEmpty from 'lodash/isEmpty';\nimport _find from 'lodash/find';\nimport DonateGiftAid from '../../guest-payment-components/DonateGiftAid';\nimport CurrencyConversionModal from '../../components/currencyConversion/CurrencyConversionModal';\nimport {\n normalizeNumber,\n formatCurrencyAsString,\n exchangeRateDecimalPoints,\n} 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 { Alert, Button, CaptionText, BodyText } from '@paypalcorp/pp-react';\nimport getContent from 'pp-react-l10n';\nimport CloseButton from '../../components/CloseButton';\nimport BackButton from '../../components/BackButton';\nimport DonateHeader from '../../components/common/DonateHeader';\nimport PaymentInformation from './CrossBorder/PaymentInformation';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport { isInContext } from '../../utility/inContextDonation';\nimport { trackErrorIM, trackLinkClick } from '../../fpti/fpti';\nimport { LINK_NAME, PAGE_SPEC } from '../../fpti/fptiConstants';\n\nlet giftAidText = localsMessages('common/giftAidIt');\nconst donateGiftPercentage = AppStore.getGiftAidItExtraAmount();\nlet giftAidTextObj = (giftAidText && giftAidText.giftAidIt) || {};\nconst guestMessages = guestLocalsMessages('guest/guestForm');\nconst messages = localsMessages('guest/crossBorder');\n\nconst DYNAMIC_CURRENCY_CONVERSION_TAG = 'DYNAMIC_CURRENCY_CONVERSION';\nexport const CURRENCY_CONVERSION_OPTIONS = {\n PAYPAL: 'PAYPAL',\n ISSUER: 'ISSUER',\n};\n\nclass CrossBorder extends React.Component {\n constructor(props) {\n super(props);\n\n let isRecurring = AppStore.getDonationRecurring() === 'checked';\n const stateConversionWithPayPal = this.getStateForConversionWithPayPal();\n\n this.state = {\n subHeaderLabel: TemplateData.donationName,\n donationId: AppStore.getSelectedProgram() || TemplateData.donationId,\n orgName: TemplateData.charityName,\n amountDecimalPoint: TemplateData.donationDecimalPoint || '.',\n decimalPoint: TemplateData.donationDecimalPoint || '.',\n isRecurring,\n ...stateConversionWithPayPal,\n showCVVField: false,\n securityCode: '',\n isCurrencyConversionModalOpen: false,\n };\n }\n\n endCustomCPLTracking = () => {\n const spinnerOverlay = document.getElementById('spinnerOverlay');\n\n if (spinnerOverlay.style.display === 'none') {\n // From tesla flow we don't have the spinner\n window.PAYPAL.analytics.endCPLTracking({\n page: 'main:donate:wps:guest:crossBorder:web::',\n action: 'crossborder_page_loaded',\n uicomp: 'crossBorder',\n uitype: 'page',\n });\n } else {\n // From guest form we need to wait for the spinner to disappear\n observeUntilEventObserved(\n spinnerOverlay,\n { attributes: true },\n (observer) => {\n if (spinnerOverlay.style.display === 'none') {\n window.PAYPAL.analytics.endCPLTracking({\n page: 'main:donate:wps:guest:crossBorder:web::',\n action: 'crossborder_page_loaded',\n uicomp: 'crossBorder',\n uitype: 'page',\n });\n\n observer.disconnect();\n return;\n }\n }\n );\n }\n };\n\n componentDidMount() {\n this.endCustomCPLTracking();\n }\n\n getStateForConversionWithPayPal() {\n let fundingOptions = AppStore.getFundingOptions();\n let myData = AppStore.getAllData() || {};\n const cardType = _get(myData, 'cardSpec.cardSpec.type', '')\n .replace(/[.,_]|\\s\\(.*\\)/g, '')\n .replace(/[\\s_]/g, '-')\n .toLowerCase();\n let [fundingSources] = fundingOptions ? fundingOptions.sources : [];\n let paymentNetwork = fundingSources.payment_card.network.toLowerCase();\n paymentNetwork =\n paymentNetwork.charAt(0).toUpperCase() + paymentNetwork.slice(1);\n let paymentDigits = fundingSources.payment_card.last_4;\n let paymentType = fundingSources.payment_card.type.toLowerCase();\n paymentType = paymentType.charAt(0).toUpperCase() + paymentType.slice(1);\n let issuer = fundingSources.payment_card.issuer.name;\n let exchangeRate = parseFloat(\n fundingOptions.currency_conversion.exchange_rate\n ).toString();\n let fundsIn = fundingOptions.currency_conversion.funds_in;\n let fundsOut = fundingOptions.currency_conversion.funds_out;\n\n return {\n exchangeRate,\n paymentCard: `${paymentNetwork} x-${paymentDigits}`,\n 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 };\n }\n\n getStateForConversionWithIssuer() {\n let amount = AppStore.getDonationAmount();\n let symbol = AppStore.getDonationSymbol();\n let currency = AppStore.getDonationCode();\n\n // No currency_conversion. fundsIn and fundsOut will not be available.\n return {\n amount,\n symbol,\n currency,\n currencyConversionOption: CURRENCY_CONVERSION_OPTIONS.ISSUER,\n };\n }\n\n updateFundingOptionsState() {\n let fundingOptions = AppStore.getFundingOptions();\n if (!fundingOptions.currency_conversion) {\n this.setState(this.getStateForConversionWithIssuer());\n } else {\n this.setState(this.getStateForConversionWithPayPal());\n }\n }\n\n getLocalizedCurrency = (amount, currency) => {\n let formatedAmount = {\n value: parseFloat(amount).toFixed(2),\n currency: currency,\n };\n let newAmount = formatCurrencyAsString(formatedAmount);\n return newAmount;\n };\n\n handleCurrencyConversionClick = () => {\n 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 let hasError =\n document.getElementsByClassName('vx_has-error-with-message').length > 0;\n if (!cvv || hasError) {\n return;\n }\n }\n const fundingOptions = AppStore.getFundingOptions();\n const contingencies = _get(fundingOptions, 'contingencies') || [];\n const threeDSContingency =\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {};\n\n if (!_isEmpty(threeDSContingency)) {\n this.threeDSContainer.initializeThreeDS();\n return;\n }\n\n // All contingencies resolved\n this.processDonation();\n };\n\n processDonation = () => {\n showSpinnerOverlay();\n\n return this.props.doFulfilment({\n securityCode: this.state.securityCode,\n });\n };\n\n handleGiftAidOption = (giftAidState) => {\n AppActions.updateGiftaidItFlag({ giftAidItFlag: giftAidState });\n };\n\n updateGiftAidComponent = (state) => {\n const extraCostText = getContent('locals')('common/giftAidIt')(\n 'giftAidIt.extraCost',\n {\n currency: state.outSymbol,\n amount: state.outAmount,\n extraAmount: (donateGiftPercentage * state.outAmount).toFixed(2),\n },\n {\n useHTML: true,\n }\n );\n\n let modalp1 = (giftAidTextObj && giftAidTextObj.modalp1) || '',\n modalp2 = (giftAidTextObj && giftAidTextObj.modalp2) || '',\n applyGiftAid = (giftAidTextObj && giftAidTextObj.applyGiftAid) || '';\n\n modalp1 = modalp1 && modalp1.replace('{orgName}', state.subHeaderLabel);\n modalp2 = modalp2 && modalp2.replace('{orgName}', state.subHeaderLabel);\n applyGiftAid =\n applyGiftAid && applyGiftAid.replace('{orgName}', state.subHeaderLabel);\n\n giftAidTextObj.extraCost = extraCostText;\n giftAidTextObj.modalp1 = modalp1;\n giftAidTextObj.modalp2 = modalp2;\n giftAidTextObj.applyGiftAid = applyGiftAid;\n };\n\n handleOptionSelection = (option) => {\n const beforeOption = this.state.currencyConversionOption;\n this.setState(\n {\n currencyConversionOption: option,\n },\n () => {\n // Do Planning if the option has changed\n if (beforeOption !== option) {\n this.hideCurrencyConversionModal();\n showSpinnerOverlay();\n this.getFundingOptions().finally(() => {\n hideSpinnerOverlay();\n });\n } else {\n setTimeout(() => {\n this.hideCurrencyConversionModal();\n }, 300);\n }\n }\n );\n };\n\n showCVVComponent() {\n this.setState({\n showCVVField: true,\n });\n }\n\n hideCVVComponent() {\n this.setState({\n showCVVField: false,\n });\n }\n\n getFundingOptions() {\n const lastFundingSource = this.getLastFundingSource();\n const paymentCardId = _get(lastFundingSource, 'payment_card.id');\n\n const currencyConversionType = this.state.currencyConversionOption;\n\n return fetcher('/donate/guest/fundingOptions', {\n method: 'POST',\n body: JSON.stringify({\n amount: normalizeNumber(AppStore.getDonationAmount()),\n code: AppStore.getDonationCode(),\n fundingOptionId: AppStore.getFundingOptions().id,\n preferences: {\n currency_conversion: [\n {\n payment_card_id: paymentCardId,\n type: currencyConversionType,\n validity: 'TRANSACTION',\n },\n ],\n },\n consentShareAddress: AppStore.getShareAddress(),\n token: TemplateData.token,\n }),\n })\n .then((response) => response.json())\n .then((result) => {\n console.log('getFundingOptions result :: ', result);\n\n let fundingOptions;\n // The funding options data format returned by the server is\n // different for ISSUER and PAYPAL. Handle it appropriately.\n\n // For conversion with 'ISSUER'\n if (currencyConversionType === CURRENCY_CONVERSION_OPTIONS.ISSUER) {\n fundingOptions = _get(result, 'data.fundingOpt[0]');\n } else {\n // For conversion with 'PAYPAL'\n fundingOptions = _get(result, 'fundingOpts[0]');\n }\n\n // Handle error case where fundingOptions call succeeds\n // but no data is returned\n if (_isEmpty(fundingOptions)) {\n 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 if (hasCvvContingency && !isCvvContingencyResolved) {\n this.showCVVComponent();\n } else {\n this.hideCVVComponent();\n }\n\n // Updating store with funding options\n AppActions.updateFundingOptions({ fundingOptions });\n\n this.updateFundingOptionsState();\n\n console.log(result);\n })\n .catch(() => {\n console.log('FAILED');\n this.props.history.push(\n `/donate/error/payment?token=${TemplateData.token}`\n );\n })\n .finally(() => {\n hideSpinnerOverlay();\n });\n }\n\n getLastFundingSource() {\n let fundingOptions = AppStore.getFundingOptions();\n const fundingSources = fundingOptions.sources || [];\n return fundingSources[fundingSources.length - 1];\n }\n\n /**\n * Returns true if currency conversion options should be displayed\n * @param {Array} fundingSources Funding Sources\n * @return {Boolean} True if currency conversion options should be displayed\n */\n shouldShowCurrencyConversionOptions = () => {\n const lastFundingSource = this.getLastFundingSource();\n const tags = _get(lastFundingSource, 'tags');\n return _includes(tags, DYNAMIC_CURRENCY_CONVERSION_TAG);\n };\n\n handleSecurityCodeChange = (securityCode) => {\n this.setState({\n securityCode: securityCode,\n });\n };\n\n handleThreeDSStepUpAuthSuccess = () => {\n this.props.toggleSpinner(true);\n this.props.doFulfilment({\n securityCode: this.state.securityCode,\n });\n };\n\n handleThreeDSStepUpAuthFailure = () => {\n // Unrecoverable error !!\n this.props.history.push('/donate/error/payment');\n };\n\n handleThreeDSFailure = () => {\n // Unrecoverable error !!\n this.props.history.push('/donate/error/threeDS');\n };\n\n render() {\n const inAmount = this.getLocalizedCurrency(\n this.state.inAmount,\n this.state.inCurrency\n );\n const outAmount = this.getLocalizedCurrency(\n this.state.outAmount,\n this.state.outCurrency\n );\n const fundsIn = _includes(inAmount, this.state.inCurrency)\n ? `${inAmount}`\n : `${inAmount} ${this.state.inCurrency}`;\n const fundsOut = _includes(outAmount, this.state.outCurrency)\n ? `${outAmount}`\n : `${outAmount} ${this.state.outCurrency}`;\n const exchangeRate = `${this.getLocalizedCurrency(\n '1.00',\n this.state.inCurrency\n )} = ${exchangeRateDecimalPoints(\n this.state.exchangeRate,\n this.state.amountDecimalPoint,\n this.state.inSymbol\n )} ${this.state.outCurrency}`;\n const { label = {} } = messages || {};\n let donateNowRecurring = _get(guestMessages, 'guestLabels.donatenowrec');\n donateNowRecurring =\n donateNowRecurring && donateNowRecurring.replace('{amount}', fundsOut);\n\n const formattedDonationAmount = `${\n this.state.symbol ? this.state.symbol : ''\n }${this.state.amount} ${this.state.currency}`;\n\n let giftaidFlag = AppStore.getGiftaidItFlagStatus();\n this.updateGiftAidComponent(this.state);\n\n let { csc: cscLabel, cscwarning } = guestMessages.guestLabels;\n cscwarning =\n cscwarning && cscwarning.replace('{csc}', cscLabel.toLowerCase());\n\n const { showCVVField } = this.state;\n const userCountry = AppStore.getUserCountry();\n\n return (\n \n \n {showCVVField && (\n
\n {cscwarning}\n
\n )}\n {isExternalFlow() && (\n <>\n \n \n \n )}\n\n
\n {TemplateData.isGiftaiditEnabled && (\n \n )}\n\n
\n
\n \n {label.donatingFrom}\n \n
\n
\n\n \n\n {showCVVField && (\n (this.childCVVInfo = ref)}\n handleSecurityCodeChange={this.handleSecurityCodeChange}\n />\n )}\n\n
\n {label.youllDonate}\n \n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL\n ? fundsIn\n : formattedDonationAmount}\n \n
\n\n
\n \n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL\n ? label.withPaypal.title\n : label.withCard.title}\n \n \n
\n\n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL && (\n \n {label.conversion.replace(/{amount}/i, exchangeRate)}\n \n )}\n\n {this.shouldShowCurrencyConversionOptions() && (\n
\n {this.state.currencyConversionOption ===\n CURRENCY_CONVERSION_OPTIONS.PAYPAL ? (\n \n {userCountry === 'US' ? label.spread : label.fee}\n \n ) : null}\n
\n )}\n\n
\n \n {getContent('locals')('guest/crossBorder')(\n 'label.policies',\n { country: TemplateData.country },\n { useHTML: true }\n )}\n \n
\n\n
\n \n {this.state.isRecurring ? donateNowRecurring : label.donatenow}\n \n
\n
\n \n
\n\n \n\n (this.threeDSContainer = ref)}\n />\n
\n \n );\n }\n}\n\nexport default withRouter(withDonate(withTheme(CrossBorder)));\n","import withPageTrack from '../../confirmation/withPageTrack';\nimport withPostTransactionRequest from '../../confirmation/withPostTransactionRequest';\nimport PendingView from '../../confirmation/PendingView';\nimport SuccessView from '../../confirmation/SuccessView';\n\nconst FLOW = 'guest';\nconst POST_TRANSACTION_URL = '/donate/guest/postTransaction';\n\nexport const GuestConfirmationPending = withPageTrack(\n withPostTransactionRequest(PendingView, POST_TRANSACTION_URL),\n FLOW,\n 'pending'\n);\n\nexport const GuestConfirmationSuccess = withPageTrack(\n withPostTransactionRequest(SuccessView, POST_TRANSACTION_URL),\n FLOW,\n 'success'\n);\n","import React, { useEffect } from 'react';\nimport { HeadingText, BodyText, Link, Button } from '@paypalcorp/pp-react';\nimport Illustration from '../../components/illustrations/Illustration';\nimport CloseButton from '../../components/CloseButton';\nimport {\n isInContext,\n isMobileOrInContext,\n} from '../../utility/inContextDonation';\nimport withTheme from '../../components/withTheme';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport { addClass } from '../../utility/domUtils';\n\nfunction FullPageError({\n illustrationType = 'critical',\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 \n {isExternalFlow() && showCloseButton && }\n \n \n {title}\n \n {body ? (\n \n {body}\n \n ) : null}\n {body2 ? (\n \n {body2}\n \n ) : null}\n\n {buttonLabel ? (\n \n ) : null}\n\n {linkLabel ? (\n \n {linkLabel}\n \n ) : null}\n \n );\n}\n\nexport default withTheme(FullPageError);\n","import React from 'react';\nimport getContent from 'pp-react-l10n';\nimport AppStore from '../../stores/AppStore';\nimport { withRouter } from 'react-router-dom';\nimport withTheme from '../../components/withTheme';\nimport templateData, { localsMessages } 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';\n\nclass PaymentError extends React.Component {\n constructor() {\n super();\n this.state = {};\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 = {}, label = {} } = localsMessages('errors/paymentError');\n const ERROR_CODE = AppStore.getPaymentError() || '';\n\n let { WSM_CANNOT_PAY_SELF = '', WENT_WRONG, TEMP_GLITCH } = error;\n let { tryagain } = label;\n\n const hideButton = ERROR_CODE === 'WSM_PAYER_LIMIT_EXCEEDED';\n\n switch (ERROR_CODE) {\n case 'WSM_PAYMENT_DENIED':\n WENT_WRONG = error.DID_NOT_WORK;\n TEMP_GLITCH = error.DIFF_CREDIT_DEBIT;\n tryagain = label.trydiffcard;\n break;\n case 'WSM_CANNOT_PAY_SELF':\n const L2 =\n WSM_CANNOT_PAY_SELF &&\n WSM_CANNOT_PAY_SELF.replace(\n '{data.dataMerchant.name}',\n templateData.donationName\n );\n WENT_WRONG = error.WSM_CANNOT_PAY_SELF_H;\n TEMP_GLITCH = L2;\n break;\n case 'WSM_PAYER_LIMIT_EXCEEDED':\n WENT_WRONG = error.AmountLimitBreachError;\n TEMP_GLITCH = getContent('locals')('errors/paymentError')(\n 'error.CustomerCareMessage',\n {\n customerServiceLink: '/selfhelp/home',\n },\n {\n useHTML: true,\n }\n );\n break;\n default:\n break;\n }\n\n return (\n
\n \n
\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 { localsMessages } from '../../utility/getTemplateData';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport Illustration from '../../components/illustrations/Illustration';\nimport ConfirmationBody from '../../confirmation/ConfirmationBody';\nimport _get from 'lodash/get';\nimport { isMobileOrInContext } from '../../utility/inContextDonation';\nimport { trackErrorPageIM } from '../../fpti/fpti';\nimport { PAGE_SPEC } from '../../fpti/fptiConstants';\n\nconst messages = localsMessages('errors/paymentError');\nconst noAccountErrorMessage = _get(\n messages,\n 'noAccountError',\n \"We can't complete this donation. The receiver doesn't have a valid PayPal account.\"\n);\n\nclass UnilateralError extends React.Component {\n constructor() {\n super();\n this.state = {};\n }\n\n componentDidMount = () => {\n hideSpinnerOverlay();\n\n trackErrorPageIM({\n pageSpec: PAGE_SPEC.UNILATERAL_ERROR_PAGE,\n errorCode: 'UNILATERAL_ERROR',\n });\n };\n\n render() {\n return (\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n );\n }\n}\n\nexport default withRouter(withTheme(UnilateralError));\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport withTheme from '../../components/withTheme';\nimport templateData, { localsMessages } from '../../utility/getTemplateData';\nimport { hideSpinnerOverlay } from '../../utility/helper';\nimport { Button } from '@paypalcorp/pp-react';\nimport Illustration from '../../components/illustrations/Illustration';\nimport ConfirmationTitle from '../../confirmation/ConfirmationTitle';\nimport ConfirmationBody from '../../confirmation/ConfirmationBody';\nimport { isMobileOrInContext } from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\nimport CloseButton from '../../components/CloseButton';\n\nclass ThreeDSError extends React.Component {\n componentDidMount = () => {\n hideSpinnerOverlay();\n };\n\n handleTryAgain = () => {\n this.props.history.push(`/donate?token=${templateData.token}`);\n };\n\n render() {\n const error = localsMessages('errors/threeDSError');\n\n return (\n
\n \n {isExternalFlow() && }\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n\n
\n
\n \n {error.tryCard}\n \n
\n
\n
\n \n );\n }\n}\n\nexport default withRouter(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';\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 isMemberFlow = isLoggedInUser() || isOneTouchUser();\n const confirmationData = _get(result, 'data.confirmationData', {});\n this.handlePaymentSuccess(confirmationData, isMemberFlow);\n })\n .catch(() => {\n this.props.history.push(`/donate/error/payment?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 withDonate(CaptureOrder);\n","import { useEffect } from 'react';\nimport templateData from '../utility/getTemplateData';\n\nlet timerCount = 0;\nexport default function CancelAndReturnOrder() {\n const redirectToCancelUrl = () => {\n const { charityCancelUrl } = templateData;\n if (charityCancelUrl) {\n window.location.href = charityCancelUrl;\n }\n };\n\n useEffect(() => {\n // xprops takes a few miliseconds to be populated\n // because it has to set up the communication with host window\n // Wait a maximum of 2 seconds for the value\n waitForXProps(() => {\n // No xprops for 2 seconds\n // Maybe we are not inContext?\n // Redirect to cancel url\n redirectToCancelUrl();\n });\n }, []);\n\n function waitForXProps(callback) {\n timerCount++;\n if (timerCount > 10) {\n callback();\n return;\n }\n if (!window.xprops) {\n setTimeout(() => {\n waitForXProps(callback);\n }, 200);\n } else {\n window.xprops.close();\n }\n }\n\n return null;\n}\n","import './publicPath';\n\nimport 'consumerweb-shim';\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\nimport '../utility/bootstrap';\nimport React, { Component, Suspense, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Route, Switch, Router } from 'react-router-dom';\nimport history from './configureHistory';\nimport CookiedUserPage from './../pages/landing/landing';\nimport CrossBorder from './../pages/guest/crossBorder';\nimport {\n GuestConfirmationPending,\n GuestConfirmationSuccess,\n} from '../pages/guest/confirmation';\nimport PaymentError from './../pages/error/paymentError';\nimport UnilateralError from '../pages/error/UnilateralError';\nimport templateData from './../utility/getTemplateData';\nimport { isOneTouchUser, isAuthenticatedUser } from 'utility/authUtils';\nimport { parseUrlQuery } from '../utility/urlUtils';\nimport { setShouldRTL } from '../utility/paypalAphrodite';\nimport { showSpinnerOverlay, hideSpinnerOverlay } from '../utility/helper';\nimport ThreeDSError from '../pages/error/threeDSError';\nimport { reactLazyPreload } from '../utility/lazyLoader';\nimport CaptureOrder from '../components/CaptureOrder';\nimport CancelAndRedirectOrder from '../components/CancelAndRedirectOrder';\nimport {\n MemberConfirmationPending,\n MemberConfirmationSuccess,\n} from '../pages/member/confirmation';\nimport Footer from '../components/footer/footer';\n\nimport '../../css/ppvx.less';\nimport '../../css/ppvx-app.less';\nimport '../../css/portable-onboarding.less';\nimport { addClass, removeClass } from '../utility/domUtils';\nimport { isGNC, isGN } from '../utility/externalIntegrationUtils';\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() || isGN())) {\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() || isGN())) {\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 ;\n }\n return ;\n }\n\n render() {\n return
{this.getPageToRender()}
;\n }\n}\n\nReactDOM.render(\n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n