{"version":3,"sources":["webpack:///./guest-payment-components/DonateGiftAidHowItWorksOverlay.js","webpack:///./guest-payment-components/DonateGiftAid.js","webpack:///./components/amount/calculator.js","webpack:///./components/amount/PresetAmountButton.js","webpack:///./components/amount/PresetAmountButtons.js","webpack:///./components/amount/AmountCondensed.js","webpack:///./components/amount/PresetAmountRow.js","webpack:///./components/amountWrapper.js","webpack:///./components/amount/SingleAmount.js","webpack:///./react-card-security-code/index.js","webpack:///./components/recurring-checkbox/RecurringInfo.js","webpack:///./components/recurring-checkbox/recurring-checkbox.js","webpack:///./utility/fixPpReactToolTip.js","webpack:////donatenodeweb-ci-2793/workspace/donate-gro-release/node_modules/lodash/now.js","webpack:////donatenodeweb-ci-2793/workspace/donate-gro-release/node_modules/react-portal/es/utils.js","webpack:////donatenodeweb-ci-2793/workspace/donate-gro-release/node_modules/react-portal/es/Portal.js","webpack:////donatenodeweb-ci-2793/workspace/donate-gro-release/node_modules/react-portal/es/LegacyPortal.js","webpack:////donatenodeweb-ci-2793/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:////donatenodeweb-ci-2793/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:///./components/amount/amountValidationError.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/programs/ProgramsContainer.js","webpack:///./components/recurring-checkbox/RecurringOverlay.js","webpack:///./components/NotTaxDeductibleLegalText.js","webpack:///./components/coverFee/coverFeeCheckbox.js","webpack:///./components/anonymousDonation/anonymousCheckbox.js","webpack:///./pages/landing/landing.js","webpack:///./components/currencyConversion/CurrencyConversionModal.js","webpack:///./containers/cvv-component.js","webpack:///./pages/guest/crossBorder.js","webpack:///./pages/guest/confirmation.js","webpack:///./pages/error/paymentError.js","webpack:///./pages/error/UnilateralError.js","webpack:///./pages/error/threeDSError.js","webpack:///./components/CaptureOrder.js","webpack:///./components/CancelAndRedirectOrder.js","webpack:///./routes/router.js","webpack:///./utility/lazyLoader.js","webpack:////donatenodeweb-ci-2793/workspace/donate-gro-release/node_modules/prop-validators/dist/index.js","webpack:///./styles/colors.js"],"names":["styles","StyleSheet","create","modalContent","maxWidth","margin","okButton","marginTop","msgMargin","DonateGiftAidHowItWorksOverlay","props","content","className","overpanel","title","isOpen","onClose","closeOverlay","hideLogo","closeOnBackgroundClick","id","css","size","howitworks","modalp1","modalp2","modalp3","modalp4","onClick","ok","propTypes","PropTypes","object","bool","func","centered","display","justifyContent","toolCheckbox","overflow","helpIcon","position","color","cursor","textDecoration","top","giftaidit","padding","border","borderRadius","width","imgWrapper","showHelp","marginLeft","textAlign","giftaidNote","marginBottom","fontSize","pTag","showAddres","borderBottom","paddingBottom","listUnstyled","listStyle","liTag","successIcon","paddingRight","background","boxShadow","modalHeader","alreadyEnabled","updateGiftAidDeclaration","borderTop","paddingTop","DonateGiftAid","event","preventDefault","setState","isHowItWorksOverlayOpen","linkWithIcon","focus","label","handleTipClick","href","ref","el","name","state","showhelp","isAlreadyEnrolled","isChecked","handleGiftAidOption","bind","ev","target","checked","this","__html","contentMsg","src","appendCdnHostName","alt","extraCost","createLabel","alreadyDone","isMember","optGiftaid","onChange","applyGiftAid","showAddress","strong","taxpayer","addressData","fullName","address1","address2","city","zip","confirmNote","openOverlay","openHowItWorksOverlay","closeHowItWorksOverlay","React","Component","any","messages","localsMessages","STYLES","container","zIndex","calcRow","verticalAlign","calcRowLeft","calcRowRight","calcLabel","inputCol","input","outlineOffset","paddingLeft","inputLeft","inputRight","fromCode","right","height","borderRight","toCode","lineHeight","conversion","disabled","opacity","inputCurrencyLeft","hasError","Calculator","symbol","currencySymbols","fromSymbol","length","document","getElementById","style","callback","val","value","match","validateAmount","handleFromChange","handleToChange","handleFromCurrencyChange","setFromSymbol","handleAmountFocus","amount","replace","decimalPoint","youDonate","charityGet","youDonateLabel","charityGetLabel","conversionLabel","placeholder","getLocalizedAmount","fromAmount","toAmount","conversionRate","calcLabelStyle","toError","fromDisabled","type","onFocus","availableCurrencies","map","c","key","toDisabled","charityAmountSymbol","errorString","toErrorMessage","errorSourceField","donationAmount","array","isRequired","string","buttonStyles","amountBtn","defaultColor","backgroundColor","colors","primaryLightBlue","primaryBlue","borderColor","highlightedColor","defaultBtn","highlightedBtn","currencyStyle","whiteSpace","currencyCodeStyle","PresetAmountButton","addSelectedPresetButton","AppActions","handleAmountBtnClick","rightSymbol","formatAmountFromServerDNW","charityAmountCode","amountDisplayValue","getCurrencyParts","$","selected","btnClasses","classNames","formattedAmount","getAmountDisplayValue","amountFontSize","getAmountFontSize","handleClick","data-testid","oneOfType","number","PresetAmountButtons","handlePresetAmountClick","_map","amounts","index","normalizedAmount","getNormalizedNumber","selectedAmount","currencyString","black","left","amountCondensed","moneyInput","inputField","minimumError","AmountCondensed","handleAmount","amountUtils","code","displayValue","moveCursorToTheEnd","charCode","stringValue","getDisplayValue","firstParts","amountBeforeFee","AppStore","getAmountBeforeFee","shouldSelectPresetAmount","isOptInCoverFee","getAmountPlaceHolder","nextProps","node","setTimeout","setSelectionRange","isExternalFlow","externalOtherAmount","placeholderOtherAmount","showValidationError","displayedAmount","inputStyles","autoComplete","onKeyPress","handleKeyPress","handleChange","handleFocus","onBlur","handleBlur","isEditable","validationErrorMessage","errorContainer","PresetAmountRow","presetAmounts","templateData","page","window","location","indexOf","isPresetAmountSelected","donationAmountType","getDonationAmountType","parseFloat","getDonationAmount","FPT","fireEventForPresetAmountClick","hideValidationError","handleAmountChange","checkValue","clearSuggestedAmountSelection","amountFieldValue","charityAmount","isInContext","isAmountEditable","errorCode","validationErrorCode","AmountWrapper","AppDispatcher","unregister","dispatcherCharityAmount","pathname","includes","undefined","getParameterByName","isNaN","exchangeRate","base_currency_code","userAmountCode","quote_amount","toFixed","params","getConversionRequest","_debounce","st","par","fn","queryParams","fromCountry","userCountry","fromCurrency","toCurrency","normalizeAmount","conversionStatus","Promise","resolve","fetcher","method","body","JSON","stringify","then","response","json","result","catch","source","exchange_rate","isCalculator","setAppAmount","isAtLandingPage","setFeeAmountInStore","updateFeeAmount","optOutCoverFee","snapshot","userAmount","charityDisabled","getConversion","getConversionRate","currencyCode","userDisabled","TemplateData","enablePresetAmounts","isGuestReviewPage","validateDonationAmount","parse","innerHTML","currencyLists","currencies","symbols","donorIpCountry","US","getDonationCode","donationAmountEditable","getDonationSymbol","donationDecimalPoint","register","payload","action","actionType","item","shouldShowPresetAmounts","renderPresetAmounts","handleUserAmountChange","handleUserCurrencyChange","handleCharityAmountChange","SingleAmount","singleAmountInput","addShake","inputWidth","e","inputFontSize","updateAmountField","inputResize","aria-label","readOnly","pattern","CardSecurityCode","showIsRequiredError","securityCode","handleCheckForValue","handleChangeSecurityCode","cardSpec","fields","csc","required","cscSpecs","errorMessage","maxLength","maxlength","errorText","dir","helperText","cardSpecPropType","getRecurringInfoContent","getContent","RecurringInfo","orgName","useHTML","orgname","donationName","isLTR","isLeftToRight","texts","isContinue","wrapper","toolWrapper","toolCheckboxWrapper","toolBlurb","tipIcon","fontWeight","helpWrapper","helpTxt","helpP","helpP2","perMonth","splitterDiv","splitterP","columnLeft","float","columnRight","animationWrapper","animationContainer","transform","recurringButton","borderOnly","divider","dividerContent","verticalCentered","alignItems","RecurringCheckBox","continue","dispatcherToken","currency","formatedAmount","formatAmount","chkBxStatus","loadAnimation","recurring","checkbox","status","tooltipButton","updateAmount","getElementsByClassName","Object","values","btn","loadBodyMovin","bodymovin","animationData","isAnimating","renderer","loop","autoplay","destroy","rp","recurring_label","shouldLeftAlignRecurringCheckbox","coverFeeEnabled","anonymousEnabled","description","tooltipp2","tooltipp1","sanitizeOrgName","hasRecurringHelp","defaultProps","root","module","exports","Date","now","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","appendChild","createPortal","children","renderPortal","unmountComponentAtNode","portal","cloneElement","unstable_renderSubtreeIntoContainer","LegacyPortal","threeDSText","LOADING_GIF_SOURCE","spinnerAlign","cardImg","ThreeDSSpinner","fundingOptions","getFundingOptions","_get","network","getPaymentCardNetwork","myData","getAllData","_isEmpty","cardType","toLowerCase","hideSpinnerOverlay","setNetworkDetails","confirmingWith","RegExp","ThreeDSDeviceDataCollection","data","exception","onDDCComplete","onThreeDSDDCComplete","contingencies","_find","addEventListener","handleDDCEvent","threeDS2ReferenceId","getThreeDSParams","three_ds_reference_id","refs","submit","console","log","removeEventListener","deviceDataCollectionUrl","device_data_collection_url","jwt","withRouter","ThreeDSIframe","handleIframeMessage","confirmationStatus","error","threeDSRespDuration","challenge_end_time","getTime","fpti","pgrp","onStepUpAuthComplete","hideModal","element","formRef","threeDS2Contingency","getThreeDSContingency","redirectLink","md","redirectMethod","requestText","frameBorder","setFormRef","submitForm","challenge_start_time","getModalBody","icon","ThreeDSContainer","showThreeDSDeviceDataCollection","threeDSDCCEndTime","dcc_start_time","threeDSDCCStartTime","dcc_end_time","spinner_start_time","spinner_end_time","resolveThreeDSContingency","lookup_start_time","lookup_end_time","threeDSContingency","hideThreeDSSpinner","onThreeDSStepUpAuthNotRequired","showThreeDSIframe","hideThreeDSIframe","onThreeDSFailure","onThreeDSStepUpAuthSuccess","onThreeDSStepUpAuthFailure","showThreeDSSpinner","onRef","startTime","handleThreeDSDDCComplete","handleThreeDSStepUpAuthComplete","toggleSpinner","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","token","signUp","url","handleGuestCountryChange","isSpinner","showSpinnerOverlay","scrollElementIntoView","language","note","getDonationNote","fundingOptionId","email","getEmail","billingAddress","getBillingAddress","giftAidItFlag","getGiftaidItFlagStatus","card","history","push","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","role","NoteComponent","lengthLimit","providedLabel","charityNoteEnabled","charityNoteLabel","useState","donationNote","setDonationNote","initialNoteLabel","showLabel","setShowLabel","showError","setShowError","noteLabel","setNoteLabel","textAreaEl","useRef","useEffect","current","isNotePreview","directionality","contextLocalityDir","htmlFor","EVENT_NAME","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","iconName","aria-hidden","maxRows","minRows","showCharacterCounter","maxCharacters","addClass","removeClass","trim","grey700","criticalIcon","marginRight","AmountValidationError","errorObj","message","fieldId","event_name","DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED","screen","SCREEN_NAME","DW_GIVING_DONATE_SETUP_SCREEN","DW_GIVING_DONATE_GUEST_FORM_SCREEN","error_desc","error_code","getElementsByTagName","setAttribute","NextButtonComponent","buttonnext","button","next","handleNext","OneTouchNextButton","GuestButton","debitorcredit","secondary","handleGuest","Programs","programNames","isDisabled","selectedIdx","handleSelect","getProgramOptions","forEach","programName","primaryText","programOption","findIndex","program","appStore","getSelectedProgram","programs","optional","selectedItemIndex","onSelection","selectedProgram","campaign","ProgramsContainer","RecurringOverlay","closeRecurringOverlay","onMakeOneTimeDonation","onContinue","signupHeader","dialogp1","dialogp2","dialogp3","continueBtn","noThanksBtn","handleClose","noThanks_closeModal","disclaimerWrapper","disclaimer","disclaimerCaptionText","NotTaxDeductibleLegalText","landing","mayNotBeTaxDeductible","CoverFeeCheckbox","handleCoverFeeChange","optInStatus","formatedFeeAmount","checkboxStatus","coverFee","AnonymousCheckbox","handleAnonymousDonationChange","tooltip","anonymousStatus","labelIcon","onOpen","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","errorMessages","LandingPageComponent","recurringModalStatus","recurringStatus","memberMandatory","openRecurringOverlay","validateAmountAndNavigateToGuestPage","DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED","PAYPAL","analytics","startCPLTracking","uicomp","uitype","normalizeNumber","DW_GIVING_DONATE_SETUP_NEXT_PRESSED","handleLogIn","orderParams","prepareOrderParams","feeAmount","getFeeAmount","computeAmountAfterFee","updateDonationAmount","validationResult","donateDisabled","rpContinue","anonymousOptInStatus","nonanonymous","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED","coverFeeOptInStatus","getFormatedFeeAmount","isRecurringOverlayOpen","isOldButtonFactory","isCheckoutRail","handleNextForCheckout","isAuthenticated","personalizedMessages","getPersonalizedMessages","GN_CONTENT_TOUCHPOINT","bannerUrl","shouldShowUserBanner","isMobileOrInContext","getCoverFeeOptInStatus","anonymousStatusInStore","getAnonymousStatus","hasLogo","subHeaderLabel","charityName","donationId","guestRedirectUrl","recurringEnabled","recurringHelpText","recurringLabel","isAuthenticatedUser","donateContext","program_names","isVoucherFlow","offerProgram","feePayer","hasDisclaimer","hasPersonalizedMessages","getPPCCStatus","onload","cpl","currentPage","paymentStatus","getDonationRecurring","restoreDonationAmount","addTracking","isLoggedInUser","registerAppDispatcherMessages","noteFieldDisplayed","shouldShowNote","DW_GIVING_DONATE_SETUP_SCREEN_SHOWN","dispatcherMessages","showUserBanner","receiverCountryEligible","landingClass","UserDetailsBanner","userDetails","CloseButton","DonateHeader","updateConversionSataus","renderProgramsDropdown","handleRecurringChange","showNote","getPersonalizedAnonymousContent","getPersonalizedNoteToPayeeLabel","success","renderDonateButtons","hasPartnerSource","getPPCCConfirmation","handleRecurringOverlayContinue","handleRecurringOverlayMakeOneTimeDonation","Disclaimer","getPersonalizedContent","organizationName","returnUrl","charityReturnUrl","LandingPage","Landing","displayLanding","currentState","business","hostedButtonId","search","handleTokenReuse","addTokenToUrlIfMissing","modal","modalDialog","modalTitle","optionTitle","linkBlue","optionDetails","bodyText","boldText","closeBtn","iconCustom","conversionOption","outline","SuccessCheckmarkIcon","CurrencyConversionOption","isSelected","handleOptionSelection","illustration","Illustration","rate","as","CurrencyConversionModal","option","selectedOption","isPayPalSelected","CURRENCY_CONVERSION_OPTIONS","modalSubTitle","withPaypal","withPayPal","ISSUER","withCard","data-tabindex","data-role","data-backdrop","renderCloseButton","guestMessages","guestLocalsMessages","CVVComponent","getCardSpec","errorMessageCSC","handleSecurityCodeChange","fieldName","fieldRequired","fieldInvalid","newErrorState","validateInputValue","cscLen","cscMax","guestLabels","cscplaceholder","cscLabel","cscnote","handleFieldFocus","handleFieldBlur","giftAidText","donateGiftPercentage","getGiftAidItExtraAmount","giftAidTextObj","giftAidIt","donateBtnContainer","donateBtn","centralFormWrapper","donationSeparator","formTopLabelBold","formLabelLeft","formLabelRight","formLabelLeftConv","formLabelRightConv","formLabelCenter","formLabelRateLeft","formLabelRateRight","policyMsg","labelFont","link","currencyConversionOptionsLink","CrossBorder","spinnerOverlay","endCPLTracking","observeUntilEventObserved","attributes","observer","disconnect","formatCurrencyAsString","showCurrencyConversionModal","isCurrencyConversionModalOpen","showCVVField","cvv","childCVVInfo","threeDSContainer","initializeThreeDS","processDonation","giftAidState","extraCostText","outSymbol","outAmount","extraAmount","beforeOption","currencyConversionOption","hideCurrencyConversionModal","finally","lastFundingSource","getLastFundingSource","tags","_includes","isRecurring","stateConversionWithPayPal","getStateForConversionWithPayPal","amountDecimalPoint","endCustomCPLTracking","sources","fundingSources","paymentNetwork","payment_card","charAt","toUpperCase","slice","paymentDigits","last_4","currency_conversion","toString","fundsIn","funds_in","fundsOut","funds_out","paymentCard","inAmount","inCurrency","inSymbol","outCurrency","getStateForConversionWithIssuer","paymentCardId","currencyConversionType","preferences","payment_card_id","validity","consentShareAddress","getShareAddress","hasCvvContingency","isCvvContingencyResolved","showCVVComponent","hideCVVComponent","updateFundingOptionsState","getUserCountry","Fragment","spread","fee","handleCurrencyConversionClick","currencyConversionOptions","getLocalizedCurrency","exchangeRateDecimalPoints","donateNowRecurring","formattedDonationAmount","giftaidFlag","updateGiftAidComponent","cscwarning","BackButton","isGiftaiditEnabled","donatingFrom","youllDonate","convertsTo","renderConversionRateInfo","shouldShowCurrencyConversionOptions","renderCurrencyConversionOptionsLink","handleDonateClick","donatenow","handleThreeDSStepUpAuthSuccess","handleThreeDSFailure","GuestConfirmationPending","withPageTrack","withPostTransactionRequest","PendingView","GuestConfirmationSuccess","SuccessView","PaymentError","ERROR_CODE","getPaymentError","WSM_CANNOT_PAY_SELF","WENT_WRONG","TEMP_GLITCH","tryagain","DID_NOT_WORK","DIFF_CREDIT_DEBIT","trydiffcard","L2","WSM_CANNOT_PAY_SELF_H","AmountLimitBreachError","customerServiceLink","ConfirmationTitle","ConfirmationBody","handleTryAgain","noAccountErrorMessage","UnilateralError","ThreeDSError","tryAgain","tryCard","CaptureOrder","getOrderStatus","orderStatus","isMemberFlow","isOneTouchUser","handlePaymentSuccess","handleConfirmation","flow","eventName","DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN","DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN","pageTrack","trid","confirmationNumber","account_type","postBackData","mc_gross","mc_currency","order_id","orderId","accessToken","isSubmitted","backBtnVisible","responseData","wTransactionEntry","requestError","timerCount","locality","setShouldRTL","currentUserState","isUnilateralAccount","GuestPage","reactLazyPreload","FallbackSpinner","userCookied","isOneTouch","onboardingEnabled","preload","parseUrlQuery","signup","getPageToRender","ReactDOM","render","fallback","exact","path","component","waitForXProps","xprops","close","charityCancelUrl","MemberConfirmationSuccess","MemberConfirmationPending","all","loadProgressiveOnboarding","loadSlickProgressiveOnboarding","importStatement","lazyComponent","reactLazy","genericPropType","propName","componentName","Error","cardSpecsPropType","cardSpecs","keys","stateListPropType","stateList","Array","isArray","$id","secondaryBlue","gray1","lightestGray"],"mappings":"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","file":"donate.d0dc3ffb85fe8a1a103f.bundle.js","sourcesContent":["import React from 'react';\nimport { Modal, BodyText, Button, HeadingText } from '@paypalcorp/pp-react';\nimport { StyleSheet, css } from 'aphrodite';\nimport PropTypes from 'prop-types';\n\nconst styles = StyleSheet.create({\n\tmodalContent: {\n\t\tmaxWidth: 600,\n\t\tmargin: '0 auto'\n\t},\n\tokButton: {\n\t\tmarginTop: 36\n\t},\n\tmsgMargin: {\n\t\tmarginTop: '24px'\n\t}\n});\n\nexport default function DonateGiftAidHowItWorksOverlay(props) {\n\tconst {\n\t\tcontent\n\t} = props;\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.howitworks}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp1}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp2}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp3}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{content.modalp4}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\nDonateGiftAidHowItWorksOverlay.propTypes = {\n\tcontent: PropTypes.object,\n\tisOpen: PropTypes.bool,\n\tcloseOverlay: PropTypes.func\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { StyleSheet, css } from 'aphrodite';\nimport { Checkbox, CaptionText, Link, Icon } from '@paypalcorp/pp-react';\nimport DonateGiftAidHowItWorksOverlay from './DonateGiftAidHowItWorksOverlay';\nimport { appendCdnHostName } from '../utility/geoUtils';\n\nconst styles = StyleSheet.create({\n\tcentered: {\n\t\tdisplay: 'flex',\n\t\tjustifyContent: 'center'\n\t},\n\ttoolCheckbox: {\n\t\t':before': {\n\t\t\toverflow: 'hidden',\n\t\t},\n\t},\n\thelpIcon: {\n\t\tposition: 'relative',\n\t\tcolor: '#005EA6',\n\t\tcursor: 'pointer',\n\t\ttextDecoration: 'none',\n\t\ttop: 3\n\t},\n\tgiftaidit: {\n\t\tpadding: '25px 35px',\n\t\tborder: '1px solid #ccc',\n\t\tborderRadius: 8,\n\t\twidth: '100%',\n\t\tmargin: '10px auto 15px auto',\n\t\tmaxWidth: 400\n\t},\n\timgWrapper: {\n\t\tdisplay: 'block',\n\t\tmargin: '0px auto 8px auto'\n\t},\n\tshowHelp: {\n\t\tcolor: '#848b8e',\n\t\tmarginTop: 15,\n\t\tmarginLeft: 42,\n\t\ttextAlign: 'left'\n\t},\n\t\tgiftaidNote: {\n\t\tmarginBottom: 20,\n\t\tfontSize: 14,\n\t\ttextAlign: 'left' \n\t},\n\tpTag: {\n\t\tfontSize: 14,\n\t\tmarginBottom: 15,\n\t\ttextAlign: 'left'\n\t},\n\tshowAddres: {\n\t\tmarginTop: 15,\n\t\tmarginLeft: 42,\n\t\tcolor: '#2c2e2f',\n\t\tborderBottom: '1px solid #ccc',\n\t\tpaddingBottom: 13,\n\t\ttextAlign: 'left'\n\t},\n\tlistUnstyled: {\n\t\tmargin: 0,\n\t\tlistStyle: 'none'\n\t},\n\tliTag: {\n\t\tmarginBottom: 2\n\t},\n\tsuccessIcon: {\n\t\tmarginLeft: -5,\n\t\tpaddingRight: 5,\n\t\tcolor: '#00cf92'\n\t},\n\tmodalContent: {\n\t\tbackground: 'none',\n\t\tboxShadow: 'none'\n\t},\n\tmodalHeader: {\n\t\ttextAlign: 'right'\n\t},\n\talreadyEnabled: {\n\t\ttextAlign: 'left',\n\t\tfontSize: 14,\n\t\tdisplay: 'flex'\n\t},\n\tupdateGiftAidDeclaration: {\n\t\tborderTop: '1px solid #ccc',\n\t\tpaddingTop: 15,\n\t\tfontSize: 14\n\t}\n});\n\nclass DonateGiftAid extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tshowhelp: this.props.isAlreadyEnrolled ? false : this.props.isChecked,\n\t\t\tisChecked: this.props.isChecked || false,\n\t\t\tisHowItWorksOverlayOpen: false\n\t\t};\n\t\tthis.handleGiftAidOption = this.handleGiftAidOption.bind(this);\n\t}\t\n\n\thandleGiftAidOption(ev) {\n\t\tlet isChecked = ev.target.checked;\n\t\tthis.setState({\n\t\t\tshowhelp: isChecked,\n\t\t\tisChecked: isChecked\n\t\t});\n\t\tthis.props.handleGiftAidOption(isChecked);\n\t}\n\n\tcreateMarkup(content) {\n\t\treturn {\n\t\t\t__html: content\n\t\t};\n\t}\n\n\thandleTipClick = () => {\n\t\tevent.preventDefault();\n\t\tthis.setState({\n\t\t\tisHowItWorksOverlayOpen: true\n\t\t});\n\t\tthis.linkWithIcon.focus();\n\t}\n\n\tcreateLabel = (label) => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\t{label}\n\t\t\t\t\t \n\t\t\t\t\t\t {this.linkWithIcon = el}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t);\n\t}\n\n\topenHowItWorksOverlay = () => {\n\t\tthis.setState({\n\t\t\tisHowItWorksOverlayOpen: true\n\t\t})\n\t}\n\n\tcloseHowItWorksOverlay = () => {\n\t\tthis.setState({\n\t\t\tisHowItWorksOverlayOpen: false\n\t\t})\n\t}\n\n\trender () {\n\n\t\tlet contentMsg = this.props.contentMsg;\n\n\t\treturn (\n
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\"giftaidit\"\n\t\t\t\t\t\t\t/\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{contentMsg.extraCost}\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t{(this.props.isAlreadyEnrolled) &&
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{this.createLabel(contentMsg.alreadyDone)}\n\t\t\t\t\t\t\t\t{this.props.isMember && {contentMsg.updateGiftAidDeclaration}}\n\t\t\t\t\t\t\t
}\n\n\t\t\t\t\t\t\t{(!this.props.isAlreadyEnrolled) &&\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t{this.state.showhelp &&
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{contentMsg.applyGiftAid}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{this.props.showAddress &&
\n\t\t\t\t\t\t\t\t\t{contentMsg.taxpayer}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.fullName}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.address1}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.address2}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.city}
  • \n\t\t\t\t\t\t\t\t\t
  • {this.props.addressData.state}, {this.props.addressData.zip}
  • \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{contentMsg.confirmNote}\n\t\t\t\t\t\t\t\t{this.props.isMember && {contentMsg.updateGiftAidDeclaration}}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
}\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n );\n\t}\n}\n\nDonateGiftAid.propTypes = {\t\n\tisAlreadyEnrolled: PropTypes.bool,\n\tshowAddress: PropTypes.bool,\n\taddressData: PropTypes.any,\n\tisChecked: PropTypes.bool,\n\thandleGiftAidOption: PropTypes.func,\n\tcontentMsg: PropTypes.object,\n\tisMember: PropTypes.bool,\n};\n\nexport default DonateGiftAid;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport AmountValidationError from './amountValidationError.js';\n\nconst messages = localsMessages('guest/crossBorder');\n\nconst STYLES = {\n container: {\n padding: '30px 0 30px 0',\n zIndex: 1,\n },\n calcRow: {\n display: 'inline-block',\n width: '40%',\n verticalAlign: 'top',\n },\n calcRowLeft: {\n margin: '0 1% 0 9%',\n },\n calcRowRight: {\n margin: '0 9% 0 1%',\n },\n calcLabel: {\n padding: '0 0 8px 5px',\n },\n inputCol: {\n position: 'relative',\n },\n input: {\n outlineOffset: '-1px',\n fontSize: 14,\n paddingLeft: 20,\n },\n inputLeft: {\n paddingRight: '100px',\n },\n inputRight: {\n paddingRight: '60px',\n },\n fromCode: {\n position: 'absolute',\n right: '1px',\n top: '1px',\n height: '40px',\n width: '90px',\n borderTop: 0,\n borderRight: 0,\n borderBottom: 0,\n },\n toCode: {\n position: 'absolute',\n right: '15px',\n top: 0,\n lineHeight: '42px',\n },\n conversion: {\n textAlign: 'center',\n paddingTop: '30px',\n },\n disabled: {\n opacity: '0.5',\n },\n inputCurrencyLeft: {\n position: 'absolute',\n marginTop: 12,\n marginLeft: 10,\n fontSize: 14,\n },\n hasError: {\n color: 'red',\n },\n};\n\nclass Calculator extends React.Component {\n constructor() {\n super();\n const { label: { youDonate, charityGet, conversion } = {} } =\n messages || {};\n this.state = {\n youDonateLabel: youDonate,\n charityGetLabel: charityGet,\n conversionLabel: conversion,\n };\n }\n\n componentDidMount() {\n this.setFromSymbol(this.props.toCode);\n }\n\n setFromSymbol = (toCode) => {\n const symbol =\n (this.props.currencySymbols && this.props.currencySymbols[toCode]) || '';\n this.setState({\n fromSymbol: symbol,\n });\n\n let padding = symbol.length * 10 + 10;\n document.getElementById('fromAmount').style.paddingLeft = `${padding}px`;\n };\n\n validateAmount = (ev, callback) => {\n let val = ev.target.value;\n let rgx = /^[0-9]*[.|,]?[0-9]?[0-9]?$/;\n\n if (val === '.' || val === ',' || !val.match(rgx)) {\n return;\n }\n callback(val);\n };\n\n handleFromChange = (ev) => {\n this.validateAmount(ev, this.props.handleFromChange);\n };\n\n handleToChange = (ev) => {\n this.validateAmount(ev, this.props.handleToChange);\n };\n\n handleFromCurrencyChange = (ev) => {\n let val = ev.target.value;\n this.props.handleFromCurrencyChange(val);\n this.setFromSymbol(val);\n };\n\n handleAmountFocus = (event) => {\n this.props.handleAmountFocus(event);\n };\n\n getLocalizedAmount = (amount) => {\n return `${amount}`.replace(/[.|,]/i, this.props.decimalPoint);\n };\n\n render() {\n const placeholder = this.getLocalizedAmount('0.00');\n const fromAmount = this.getLocalizedAmount(this.props.fromAmount);\n const toAmount = this.getLocalizedAmount(this.props.toAmount);\n const conversionRate = `${this.getLocalizedAmount('1.00')} ${\n this.props.fromCode\n } = ${this.getLocalizedAmount(this.props.conversionRate)} ${\n this.props.toCode\n }`;\n\n const calcLabelStyle = {\n ...STYLES.calcLabel,\n ...(this.props.toError ? STYLES.hasError : {}),\n };\n\n return (\n \n
\n \n
{this.state.youDonateLabel}
\n
\n
\n \n {this.state.fromSymbol}\n \n \n
\n \n {this.props.availableCurrencies.map((c) => (\n \n ))}\n \n
\n
\n \n
{this.state.charityGetLabel}
\n
\n
\n \n {this.props.charityAmountSymbol}\n \n \n
\n {this.props.toCode}\n
\n {this.props.toError && (\n \n )}\n \n \n\n {this.props.conversionRate && (\n \n {this.state.conversionLabel} {conversionRate}\n \n )}\n \n );\n }\n}\n\nCalculator.propTypes = {\n availableCurrencies: PropTypes.array.isRequired,\n currencySymbols: PropTypes.object.isRequired,\n decimalPoint: PropTypes.string.isRequired,\n conversionRate: PropTypes.string.isRequired,\n fromAmount: PropTypes.string.isRequired,\n fromCode: PropTypes.string.isRequired,\n fromDisabled: PropTypes.bool.isRequired,\n toAmount: PropTypes.string.isRequired,\n toCode: PropTypes.string.isRequired,\n toDisabled: PropTypes.bool.isRequired,\n handleFromChange: PropTypes.func.isRequired,\n handleFromCurrencyChange: PropTypes.func.isRequired,\n handleToChange: PropTypes.func.isRequired,\n charityAmountSymbol: PropTypes.string,\n handleAmountFocus: PropTypes.func,\n toError: PropTypes.bool,\n toErrorMessage: PropTypes.string,\n};\n\nexport default Calculator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport colors from '../../styles/colors';\nimport { formatAmountFromServerDNW } from './amountUtils';\nimport { getCurrencyParts } from '../../utility/formator';\nimport { Button } from '@paypalcorp/pp-react';\nimport { addSelectedPresetButton } from '../../utility/fpt';\nimport * as AppActions from '../../actions/AppActions';\n\nconst buttonStyles = {\n amountBtn: {\n height: '48px',\n padding: 0,\n borderRadius: '5px',\n border: '1px solid #0070BA',\n fontSize: '16px',\n textDecoration: 'none',\n },\n defaultColor: {\n backgroundColor: 'white',\n color: colors.primaryLightBlue,\n ':hover': {\n color: colors.primaryBlue,\n borderColor: colors.primaryBlue,\n boxShadow: `0 0 0 1px ${colors.primaryBlue} inset`,\n },\n ':active': {\n color: colors.primaryBlue,\n borderColor: colors.primaryBlue,\n boxShadow: `0 0 0 1px ${colors.primaryBlue} inset`,\n },\n ':focus': {\n color: colors.primaryBlue,\n borderColor: colors.primaryBlue,\n boxShadow: `0 0 0 1px ${colors.primaryBlue} inset`,\n ':after': {\n borderRadius: '5px',\n },\n },\n },\n highlightedColor: {\n backgroundColor: colors.primaryLightBlue,\n color: 'white',\n ':focus:after': {\n borderRadius: '5px',\n },\n },\n};\n\nconst STYLES = StyleSheet.create({\n defaultBtn: {\n ...buttonStyles.amountBtn,\n ...buttonStyles.defaultColor,\n },\n highlightedBtn: {\n ...buttonStyles.amountBtn,\n ...buttonStyles.highlightedColor,\n },\n currencyStyle: {\n whiteSpace: 'nowrap', // Do not wrap amount to next line\n },\n currencyCodeStyle: {\n fontSize: 11,\n marginTop: -4,\n },\n});\n\nclass PresetAmountButton extends React.Component {\n constructor(props) {\n super(props);\n const [firstParts = {}] = getCurrencyParts();\n const rightSymbol = firstParts.$ !== 'symbol';\n this.state = {\n rightSymbol,\n };\n }\n\n handleClick = (event, value) => {\n addSelectedPresetButton(this.props.id);\n AppActions.updateSelectedPresetButtonId(this.props.id);\n this.props.handleAmountBtnClick(event, value);\n };\n\n getAmountDisplayValue = () => {\n let amountDisplayValue;\n if (this.state.rightSymbol) {\n amountDisplayValue = this.props.symbol\n ? `${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )} ${this.props.symbol}`\n : `${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )}`;\n } else {\n amountDisplayValue = this.props.symbol\n ? `${this.props.symbol}${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )}`\n : `${formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n )}`;\n }\n return amountDisplayValue;\n };\n\n getAmountFontSize = (amountDisplayValue) => {\n if (amountDisplayValue.length < 11) {\n return '15px';\n }\n return '12px';\n };\n\n render() {\n const { selected } = this.props;\n const btnClasses = classNames({\n [css(STYLES.highlightedBtn)]: selected,\n [css(STYLES.defaultBtn)]: !selected,\n });\n const formattedAmount = formatAmountFromServerDNW(\n this.props.value,\n this.props.charityAmountCode\n );\n const amountDisplayValue = this.getAmountDisplayValue();\n const amountFontSize = this.getAmountFontSize(amountDisplayValue);\n\n return (\n this.handleClick(event, formattedAmount)}\n >\n \n {amountDisplayValue}\n \n
\n {this.props.charityAmountCode}\n
\n \n );\n }\n}\n\nPresetAmountButton.propTypes = {\n id: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n selected: PropTypes.bool,\n symbol: PropTypes.string,\n handleAmountBtnClick: PropTypes.func.isRequired,\n charityAmountCode: PropTypes.string,\n};\n\nexport default PresetAmountButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _map from 'lodash/map';\nimport PresetAmountButton from './PresetAmountButton';\nimport { getNormalizedNumber } from './amountUtils';\n\nclass PresetAmountButtons extends React.Component {\n handleClick(event, value) {\n this.props.handlePresetAmountClick(event, value);\n }\n\n render() {\n return (\n
\n
\n {_map(this.props.amounts, (amount, index) => {\n const normalizedAmount =\n '' + getNormalizedNumber(this.props.selectedAmount);\n const isSelected = amount === normalizedAmount;\n return (\n \n );\n })}\n
\n
\n );\n }\n}\n\nPresetAmountButtons.propTypes = {\n amounts: PropTypes.array,\n handlePresetAmountClick: PropTypes.func,\n selectedAmount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n symbol: PropTypes.string,\n charityAmountCode: PropTypes.string,\n};\n\nexport default PresetAmountButtons;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getCurrencyParts, getAmountPlaceHolder } from '../../utility/formator';\nimport { StyleSheet, css } from '../../utility/paypalAphrodite';\nimport colors from '../../styles/colors';\nimport * as amountUtils from './amountUtils';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport { TextInput } from '@paypalcorp/pp-react';\nimport AppStore from '../../stores/AppStore';\nimport {\n isOptInCoverFee,\n shouldSelectPresetAmount,\n} from '../coverFee/feeUtils';\nimport { isExternalFlow } from '../../utility/externalIntegrationUtils';\n\nlet messages = localsMessages('common/amount');\n\nconst STYLES = StyleSheet.create({\n currencyString: {\n position: 'absolute',\n 'font-size': '16px',\n 'line-height': '1',\n color: colors.black,\n zIndex: 1,\n top: '14px',\n left: '8px',\n },\n amountCondensed: {\n display: 'inline-block',\n margin: '0 auto',\n width: '100%',\n },\n moneyInput: {\n width: '142px',\n maxWidth: '282px',\n margin: '0 0 0 10px',\n\n '@media (max-width: 736px)': {\n width: '100%',\n margin: '0 auto',\n },\n },\n inputField: {\n fontSize: '13px',\n height: '3.1rem',\n width: '140px',\n },\n\n minimumError: {\n ':nth-child(1n) > input': {\n border: `2px solid #d20000`,\n },\n },\n});\n\nclass AmountCondensed extends React.Component {\n constructor(props) {\n super(props);\n const [firstParts = {}] = getCurrencyParts(),\n // In case user opts in for cover fee and goes back to\n // landing page from guest page, we need to restore back\n // user's original entered amount\n amountBeforeFee = AppStore.getAmountBeforeFee(),\n isCustomAmount = !shouldSelectPresetAmount(amountBeforeFee),\n shouldRestoreAmount =\n isCustomAmount && amountBeforeFee && isOptInCoverFee(),\n amount = shouldRestoreAmount ? amountBeforeFee : this.props.amount,\n displayValue = this.getDisplayValue(amount);\n\n this.state = {\n displayValue,\n amount: amount || '',\n symbol: this.props.symbol || '',\n code: this.props.code || '',\n rightSymbol: firstParts.$ !== 'symbol',\n placeholder: getAmountPlaceHolder(),\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.amount !== nextProps.amount) {\n this.setState({\n amount: nextProps.amount,\n });\n\n if (!nextProps.amount) {\n this.setState({\n displayValue: '',\n });\n }\n }\n }\n\n /**\n * Returns amount converted to readable format\n * Converts \"1.00\"\n * @return {[type]} [description]\n */\n getDisplayValue(amount) {\n // let amount = inputAmount || this.state.amount;\n if (!amount) {\n return '';\n }\n let displayValue;\n if (this.props.symbol) {\n displayValue = `${this.props.symbol}${amount} ${this.props.code}`;\n } else {\n displayValue = `${amount} ${this.props.code}`;\n }\n return displayValue;\n }\n\n moveCursorToTheEnd(node) {\n if (node) {\n setTimeout(() => {\n const { length } = node.value;\n node.setSelectionRange(length, length);\n });\n }\n }\n\n handleFocus = (event) => {\n if (!this.state.amount) {\n this.props.handleAmount(amountUtils.formatAmount('', this.props.code));\n }\n this.setState({\n displayValue: '',\n });\n this.props.handleAmountFocus();\n this.moveCursorToTheEnd(event.target);\n };\n\n handleKeyPress = (event) => {\n if (!amountUtils.isKeyAllowed(event.charCode)) {\n return;\n }\n };\n\n handleChange = (event) => {\n const { value } = event.target;\n if (!amountUtils.amountLengthValid(value)) {\n return;\n }\n const stringValue = amountUtils.formatAmount(value, this.props.code);\n this.setState({ amount: stringValue });\n this.props.handleAmount(stringValue);\n };\n\n handleBlur = (event) => {\n const amount = this.state.amount;\n this.setState({\n displayValue: this.getDisplayValue(amount),\n });\n };\n\n handleClick = ({ target }) => this.moveCursorToTheEnd(target);\n\n render() {\n const placeholder = isExternalFlow()\n ? messages.amount.externalOtherAmount\n : messages.amount.placeholderOtherAmount;\n const amount = `${this.state.amount}`;\n const hasError = !!this.props.showValidationError;\n const displayedAmount = this.state.displayValue\n ? this.state.displayValue\n : amount;\n\n const inputStyles = css(\n STYLES.inputField,\n STYLES.moneyInput,\n hasError && STYLES.minimumError\n );\n\n return (\n \n );\n }\n}\n\nAmountCondensed.propTypes = {\n name: PropTypes.string,\n label: PropTypes.string,\n value: PropTypes.string,\n amount: PropTypes.string,\n symbol: PropTypes.string,\n code: PropTypes.string,\n decimalPoint: PropTypes.string,\n isEditable: PropTypes.bool,\n handleAmount: PropTypes.func,\n showValidationError: PropTypes.bool,\n validationErrorMessage: PropTypes.string,\n handleAmountFocus: PropTypes.func,\n};\n\nexport default AmountCondensed;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PresetAmountButtons from './PresetAmountButtons';\nimport AmountCondensed from './AmountCondensed';\nimport AmountValidationError from './amountValidationError.js';\nimport templateData from '../../utility/getTemplateData';\nimport * as AppActions from '../../actions/AppActions';\nimport AppStore from '../../stores/AppStore';\nimport { StyleSheet, css } from 'aphrodite';\nimport * as FPT from '../../utility/fpt';\nimport {\n isOptInCoverFee,\n shouldSelectPresetAmount,\n} from '../coverFee/feeUtils';\nimport { isInContext } from '../../utility/inContextDonation';\n\nconst STYLES = StyleSheet.create({\n errorContainer: {\n 'text-align': 'center',\n 'margin-top': '5px',\n },\n});\n\nclass PresetAmountRow extends React.Component {\n constructor(props) {\n super(props);\n this.presetAmounts = templateData.presetAmounts;\n this.page =\n window.location.href.indexOf('guest') > -1 ? 'guest' : 'landing';\n this.state = {\n presetAmounts: this.presetAmounts,\n isPresetAmountSelected: templateData.donationAmountType === 'preset',\n selectedAmount:\n AppStore.getDonationAmountType() === 'preset'\n ? parseFloat(AppStore.getDonationAmount(), 10)\n : '',\n };\n }\n\n componentDidMount() {\n // In case user opts in for cover fee and goes back to\n // landing page from guest page, we need to restore back\n // user's original entered amount\n const amountBeforeFee = AppStore.getAmountBeforeFee();\n if (amountBeforeFee && isOptInCoverFee()) {\n if (shouldSelectPresetAmount(amountBeforeFee)) {\n this.handlePresetAmountClick({}, amountBeforeFee);\n }\n }\n }\n\n fireEventForPresetAmountClick(amount) {\n FPT.trackLinkClickWithData('presetAmount', {\n amount: amount,\n page: this.page,\n });\n }\n\n handlePresetAmountClick(event, value) {\n const presetAmounts = this.presetAmounts;\n const selectedAmount = value;\n\n this.fireEventForPresetAmountClick(selectedAmount);\n\n // Highlight the selected button\n this.setState({\n isPresetAmountSelected: true,\n presetAmounts,\n selectedAmount,\n });\n // Clear the errors from amount field\n this.props.hideValidationError();\n\n AppActions.updateDonationAmountType('preset');\n this.props.handleAmountChange(`${selectedAmount}`);\n }\n\n clearSuggestedAmountSelection() {\n this.setState({\n selectedAmount: '',\n });\n }\n\n handleAmountChange(amount) {\n let checkValue = parseFloat(amount.replace(',', '.').replace(' ', ''));\n\n if (AppStore.getDonationAmountType() === 'preset' && checkValue > 0) {\n FPT.addSelectedPresetButton('other');\n this.clearSuggestedAmountSelection();\n AppActions.updateSelectedPresetButtonId('other');\n AppActions.updateDonationAmountType('userinput');\n this.props.handleAmountChange('0.00');\n FPT.trackLinkClick('presetAmount', {\n page: this.page,\n });\n }\n if (checkValue > 0) {\n this.props.handleAmountChange(amount);\n }\n }\n\n handleAmountFocus() {\n this.props.handleAmountFocus();\n }\n\n render() {\n const isPresetAmountSelected =\n AppStore.getDonationAmountType() === 'preset';\n const amountFieldValue = isPresetAmountSelected\n ? ''\n : this.props.charityAmount;\n\n return (\n \n
\n
\n
\n \n
\n
\n \n
\n
\n {this.props.showValidationError ? (\n \n \n
\n ) : (\n  \n )}\n \n \n );\n }\n}\n\nPresetAmountRow.propTypes = {\n hideValidationError: PropTypes.func,\n handleAmountChange: PropTypes.func,\n handleAmountFocus: PropTypes.func,\n charityAmount: PropTypes.string,\n showValidationError: PropTypes.bool,\n charityAmountSymbol: PropTypes.string,\n charityAmountCode: PropTypes.string,\n decimalPoint: PropTypes.string,\n isAmountEditable: PropTypes.bool,\n validationErrorMessage: PropTypes.string,\n validationErrorCode: PropTypes.string,\n};\nexport default PresetAmountRow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _debounce from 'lodash/debounce';\nimport AppStore from '../stores/AppStore';\nimport * as AppActions from '../actions/AppActions';\nimport TemplateData from '../utility/getTemplateData';\nimport { fetcher } from '../utility/domUtils';\nimport SingleAmount from '../components/amount/SingleAmount';\nimport Calculator from '../components/amount/calculator';\nimport PresetAmountRow from './amount/PresetAmountRow';\nimport {\n setFeeAmountInStore,\n optOutCoverFee,\n isAtLandingPage,\n isOptInCoverFee,\n} from './coverFee/feeUtils';\nimport AppDispatcher from '../dispatcher/AppDispatcher';\nimport { getParameterByName } from '../utility/queryStringHelper';\n\nclass AmountWrapper extends React.Component {\n constructor(props) {\n super(props);\n\n const currencyObj = JSON.parse(\n document.getElementById('currencyLists').innerHTML || {}\n );\n const { currencies: currencyLists, symbols: currencySymbols } =\n currencyObj || {};\n\n let userCountry = TemplateData.donorIpCountry;\n let availableCurrencies = currencyLists[userCountry] || currencyLists.US;\n let userAmountCode = availableCurrencies[0];\n let charityAmountCode = AppStore.getDonationCode();\n let isEditable = !!TemplateData.donationAmountEditable;\n // let showCBCalculator = TemplateData.pxp && TemplateData.pxp.calculator && TemplateData.pxp.calculator.experiment || false;\n\n let isCalculator = false;\n // Disabled Calculator\n // let isCalculator =\n // \tisEditable &&\n // \tuserAmountCode !== charityAmountCode &&\n // \t(showCBCalculator || TemplateData.isCorpIp);\n\n this.state = {\n charityAmountCode,\n charityAmount: AppStore.getDonationAmount() || '',\n charityAmountSymbol: AppStore.getDonationSymbol(),\n charityDisabled: false,\n\n userCountry,\n userAmountCode,\n userAmount: '',\n userDisabled: false,\n\n availableCurrencies,\n currencySymbols,\n isCalculator,\n decimalPoint: TemplateData.donationDecimalPoint || '.',\n conversionRate: '',\n isAmountEditable: isEditable,\n\n showValidationError: props.showValidationError || false,\n validationErrorMessage: props.validationErrorMessage || '',\n validationErrorCode: props.validationErrorCode || '',\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.showValidationError !== nextProps.showValidationError) {\n this.setState({\n showValidationError: nextProps.showValidationError,\n validationErrorMessage: nextProps.validationErrorMessage,\n validationErrorCode: nextProps.validationErrorCode,\n });\n }\n }\n\n componentDidMount() {\n // Watch for amount change for the case that donor opts in to cover fee\n // and clicks back button to go back to landing page\n // as we need to restore donor's original entered amount\n this.dispatcherCharityAmount = AppDispatcher.register((payload) => {\n if (payload.action && payload.action.actionType === 'CHANGE_AMOUNT') {\n const { action: { item: { amount = 0 } = {} } = {} } = payload;\n this.setState({\n charityAmount: amount,\n });\n }\n });\n }\n\n componentWillUnmount = () => {\n AppDispatcher.unregister(this.dispatcherCharityAmount);\n };\n\n isGuestReviewPage = () => {\n return (\n window.location.pathname.includes('guest') ||\n ![undefined, null].includes(getParameterByName('signup'))\n );\n };\n\n normalizeAmount = (amount) => {\n return isNaN(amount) ? 0 : amount;\n };\n\n setAppAmount = (amount) => {\n AppActions.changeAmount({\n amount,\n });\n };\n\n getConversionRate = (state, exchangeRate) => {\n let rate =\n exchangeRate.base_currency_code === state.userAmountCode\n ? exchangeRate.quote_amount\n : 1 / exchangeRate.quote_amount;\n return rate.toFixed(2);\n };\n\n getConversionRequest = (state, params, callback) => {\n this.getConversionRequest = _debounce((st, par, fn) => {\n const queryParams = {\n fromCountry: st.userCountry,\n fromCurrency: st.userAmountCode,\n toCurrency: st.charityAmountCode,\n ...par,\n };\n\n if (queryParams.fromAmount) {\n queryParams.fromAmount = this.normalizeAmount(queryParams.fromAmount);\n } else {\n queryParams.toAmount = this.normalizeAmount(queryParams.toAmount);\n }\n const url = '/donate/calculate-foreign-exchange';\n this.props.conversionStatus(true);\n Promise.resolve(\n fetcher(url, {\n method: 'POST',\n body: JSON.stringify(queryParams),\n })\n )\n .then((response) => response.json())\n .then(({ result }) => {\n this.props.conversionStatus(false);\n fn(result);\n })\n .catch(() => {\n this.props.conversionStatus(false);\n let amount = queryParams.fromAmount || queryParams.toAmount || '';\n amount += '';\n fn({\n target: { value: amount },\n source: { value: amount },\n exchange_rate: {\n base_currency_code: queryParams.userAmountCode,\n quote_amount: 1,\n },\n });\n });\n }, 500);\n\n this.getConversionRequest(state, params, callback);\n };\n\n /*\n * getConversion\n * Getting conversion rate for calculator\n */\n getConversion = (state, params, fn) => {\n // Conversion is only required for calculator\n if (state.isCalculator) {\n this.getConversionRequest(state, params, fn);\n } else {\n const amount = params.fromAmount || params.toAmount || '';\n fn({\n target: { value: amount },\n source: { value: amount },\n exchange_rate: {\n base_currency_code: state.userAmountCode,\n quote_amount: 1,\n },\n });\n }\n };\n\n handleAmountChange = (amount) => {\n this.setState({ charityAmount: amount });\n this.setAppAmount(amount);\n\n // let recurringStatus = AppStore.getDonationRecurring() === 'checked';\n // if (recurringStatus) {\n // if (isAmountGreaterThanZero(amount)) {\n // $('#donateNowAmt').html(this.state.charityAmountSymbol + amount);\n // } else {\n // $('#donateNowAmt').html(' ');\n // }\n // }\n\n if (isAtLandingPage()) {\n // Compute fee amount and update store\n setFeeAmountInStore();\n // Let landing page know that fee amount displayed needs to be updated\n this.props.updateFeeAmount();\n } else {\n // Since user updates the amount in the guest page\n // we should opt user out for cover the fee in case\n // they go back to landing page\n if (isOptInCoverFee()) {\n optOutCoverFee();\n }\n\n // In case user selects a preset button but update the amount\n // in review page, the donation amount type should now be\n // \"userinput\"\n if (AppStore.getDonationAmountType() === 'preset') {\n AppActions.updateDonationAmountType('userinput');\n }\n }\n };\n\n handleAmountFocus() {\n this.props.onFocus();\n }\n\n handleUserAmountChange = (amount) => {\n let snapshot = {\n userAmount: amount,\n charityDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n fromAmount: state.userAmount,\n },\n ({ target, exchange_rate }) => {\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n charityAmount: target.value,\n charityDisabled: false,\n });\n this.setAppAmount(target.value);\n }\n );\n };\n\n handleUserCurrencyChange = (currencyCode) => {\n let snapshot = {\n userAmountCode: currencyCode,\n charityDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n fromAmount: state.userAmount,\n },\n ({ target, exchange_rate }) => {\n state.charityAmount = target.value;\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n charityAmount: state.charityAmount,\n charityDisabled: false,\n });\n this.setAppAmount(target.value);\n }\n );\n };\n\n handleCharityAmountChange = (amount) => {\n let snapshot = {\n charityAmount: amount,\n userDisabled: true,\n };\n let state = { ...this.state, ...snapshot };\n this.setState(snapshot);\n\n this.getConversion(\n state,\n {\n toAmount: state.charityAmount,\n },\n ({ source, exchange_rate }) => {\n this.setState({\n conversionRate: this.getConversionRate(state, exchange_rate),\n userAmount: source.value,\n userDisabled: false,\n });\n this.setAppAmount(state.charityAmount);\n }\n );\n };\n\n shouldShowPresetAmounts = () => {\n // Should only show preset amount options in landing\n // page not review page to make the experience consistent\n // with member flow. It works better for cover the fees as well\n return (\n TemplateData.enablePresetAmounts &&\n !this.state.isCalculator &&\n !this.isGuestReviewPage()\n );\n };\n\n renderPresetAmounts = () => {\n return (\n \n );\n };\n\n render() {\n if (this.shouldShowPresetAmounts()) {\n return
{this.renderPresetAmounts()}
;\n }\n\n return (\n
\n {this.state.isCalculator ? (\n \n ) : (\n \n )}\n
\n );\n }\n}\n\nAmountWrapper.propTypes = {\n conversionStatus: PropTypes.func,\n showValidationError: PropTypes.bool,\n hideValidationError: PropTypes.func,\n validationErrorMessage: PropTypes.string,\n validationErrorCode: PropTypes.string,\n validateDonationAmount: PropTypes.func,\n onFocus: PropTypes.func,\n updateFeeAmount: PropTypes.func,\n};\n\nexport default AmountWrapper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getCurrencyParts, getAmountPlaceHolder } from '../../utility/formator';\nimport { addShake } from '../../utility/helper';\nimport { localsMessages } from '../../utility/getTemplateData';\nimport AmountValidationError from './amountValidationError.js';\nimport * as amountUtils from './amountUtils';\nimport { moveCursorToTheEnd } from '../../utility/domUtils';\nimport AppStore from '../../stores/AppStore';\nimport { isAtLandingPage, isOptInCoverFee } from '../coverFee/feeUtils';\n\nlet messages = localsMessages('common/amount');\n\nclass SingleAmount extends React.Component {\n constructor(props) {\n super(props);\n const [firstParts = {}] = getCurrencyParts();\n const { amount = '', symbol = '', code = '' } = this.props;\n const rightSymbol = firstParts.$ !== 'symbol';\n this.state = {\n amount,\n symbol,\n code,\n rightSymbol,\n placeholder: getAmountPlaceHolder(),\n inputWidth: amountUtils.MIN_INPUT_WIDTH,\n inputFontSize: amountUtils.DEFAULT_INPUT_FONTSIZE,\n };\n }\n\n componentDidMount() {\n if (this.props.isEditable && this.singleAmountInput) {\n setTimeout(() => {\n if (this.singleAmountInput) {\n this.singleAmountInput.focus();\n }\n // Placeholder does not work good in IE\n // So call update to show value - 0.00(US)\n if (this.state.amount === '') {\n this.updateAmountField();\n }\n }, 500);\n }\n this.inputResize();\n\n // In case user opts in for cover fee and goes back to\n // landing page from guest page, we need to restore back\n // user's original entered amount\n const amountBeforeFee = AppStore.getAmountBeforeFee();\n if (amountBeforeFee && isOptInCoverFee() && isAtLandingPage()) {\n this.updateAmountField(amountBeforeFee);\n }\n }\n\n handleFocus = (event) => {\n moveCursorToTheEnd(this.singleAmountInput);\n this.props.handleAmountFocus();\n };\n\n handleClick = (eventName) => {\n moveCursorToTheEnd(this.singleAmountInput);\n };\n\n handleKeyPress = (event) => {\n if (!amountUtils.isKeyAllowed(event.charCode)) {\n addShake();\n return;\n }\n };\n\n inputResize = () => {\n let inputWidth;\n\n try {\n inputWidth = amountUtils.getInputWidth(\n this.singleAmountInput,\n this.state.amount\n );\n } catch (e) {\n inputWidth = amountUtils.MIN_INPUT_WIDTH;\n }\n // \"Fixed\" amount is rendered before the CSS is loaded and hence the\n // reported width is lesser than actual. Add a few pixels to fix that.\n if (!this.props.isEditable) {\n inputWidth += 20;\n }\n\n this.setState({\n inputWidth,\n inputFontSize: amountUtils.getFontSize(this.state.amount),\n });\n };\n\n handleChange = (event) => {\n let val = event.target.value;\n this.updateAmountField(val);\n };\n\n updateAmountField = (val) => {\n if (!amountUtils.amountLengthValid(val)) {\n addShake();\n return;\n }\n\n const stringValue = amountUtils.formatAmount(val, this.props.code);\n\n this.setState({ amount: stringValue }, () => {\n this.inputResize();\n });\n this.props.handleAmount(stringValue);\n };\n\n render() {\n const label = (messages.amount && messages.amount.label) || '';\n\n return (\n
\n
\n
\n {!this.state.rightSymbol && (\n
\n \n {this.state.symbol}\n \n
\n )}\n (this.singleAmountInput = input)}\n name=\"donationAmount\"\n autoComplete=\"off\"\n id=\"currencyAmount\"\n data-testid=\"currencyAmount\"\n placeholder={this.state.placeholder}\n pattern=\"[0-9]*\"\n value={this.state.amount}\n onKeyPress={this.handleKeyPress}\n onChange={this.handleChange}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n className=\"amount_number validate\"\n />\n {this.state.rightSymbol && (\n
\n \n {this.state.symbol}\n \n
\n )}\n
\n
\n

\n {this.state.code}\n

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

{confirmingWith}

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

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

\n {label.modalTitle}\n

\n
\n
\n
\n
\n

\n {label.modalSubTitle}\n

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

\n {label.modalTitle}\n

\n

\n {label.modalSubTitle}\n

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