{"version":3,"sources":["webpack:///./transfer/hooks/outlook.js","webpack:///./transfer/hooks/ppme.js","webpack:///./transfer/hooks/pools.js","webpack:///./transfer/hooks/xb.js","webpack:///./transfer/components/share-my-address.styles.js","webpack:///./transfer/components/share-my-address.js","webpack:///./transfer/components/amount-donation-validation-error.js","webpack:///./transfer/components/note-max-char-limit-error.js","webpack:///./transfer/hooks/donate.js","webpack:///./transfer/hooks/index.js","webpack:///./transfer/components/shippingAddressDropdown.js","webpack:///./transfer/components/separator.js"],"names":["initializeHook","$","addClass","attr","sessionTimerOverlayRenderedHook","postMessageUp","statusMessage","previewPageSendSubmitHook","successPageAfterRenderHook","props","arguments","length","undefined","complianceInfo","status","data","name","displayName","amount","amountFormatted","loadingStateChangedHook","_ref","isLoading","toggleLoading","noCurrencyBalanceErrorHook","state","store","getState","_get","paymentId","currency","currencyCode","note","window","s","pageName","StyleSheet","create","addressWrapper","padding","toolCheckboxWrapper","position","width","display","inputCheckBox","height","toolCheckbox","overflow","addressContent","margin","srLabel","tipIcon","color","cursor","textDecoration","toolTipTxt","backgroundColor","fontSize","lineHeight","textAlign","borderRadius","i18n","content","ShareMyAddress","React","Component","constructor","_defineProperty","amountIsZero","this","currencyDecimal","dispatch","type","types","EXTERNAL","SHOW_AMOUNT_IS_ZERO_ERROR","amountAboveMinimumDonation","isAmountReadOnly","donationContext","minimum_amount","amountBelowMaximumDonation","maximum_amount","SHOW_AMOUNT_DONATION_ERROR","DONATION_VALIDATION_TYPES","AMOUNT_ABOVE_MAXIMUM","AMOUNT_BELOW_MINIMUM","validateAmount","SendActions","render","shippingRequired","createElement","className","css","styles","concat","rtlConvertInline","ShippingAddressDropdown","hasNoAddressNeededOption","onAddressChanged","reFetchFundingOptions","connect","external","server","shareAddress","dir","directionality","STYLES","error","criticalIcon","top","AmountDonationValidationError","donationValidationType","AMOUNT_VALID","errorMessageKey","Number","formattedAmount","formatAmount","style","_objectSpread","aria-hidden","errorField","paddingLeft","errorText","marginRight","verticalAlign","showNoteMaxCharLimitError","_Icon","size","role","data-testid","customComponents","page","component","Separator","NoteMaxCharLimitError","fpti","ENV_TYPE","DONATE","showAddNewFIHook","previewPageAfterRenderHook","donate","transaction","address","selectedShippingAddress","id","selectedShippingAddressId","donatedAmount","giftAidItFlag","donationGiftAidCheckbox","donationAnonymousStatus","selectedRecurringFrequency","cvv","threeDS2ReferenceId","threeDS2TransactionId","isRecurring","recipient","selectedFundingOption","_external$donationGif","msg","parent","paymentDetails","giftAidCheckboxFlag","donationGiftAid","isAlreadyEnrolled","payment_id","postMessage","location","donationGiftaid","requestUnifiedLoginHook","hooks","OUTLOOK","outlook","PP_ME","ppme","POOLS","pools","CROSS_BORDER","xb","getExternalComponents","env","filter","x","map","OverpanelActions","show","AddressActions","isDonate","selectElementId","yourAddressContentKey","addNewAddressContentKey","AddressDropdown","_extends","handleAddAddress","handleSelectAddress","shouldRenderLabel","_ref2","defaultOption","shippingType","isCharity","addressEntryFormat","addresses","selectedAddress","FLOW_TYPES","PPSHOPS","SHIPPING_TYPES","FLAT_RATE","FREE","glamorous","div","border","borderTop","maxWidth"],"mappings":"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","file":"67.esm.js","sourcesContent":["export default {\n initializeHook() {\n $('html').addClass('outlookWrap')\n\n // set target=\"_blank\" on all footer links so that iframe flow does not break\n $('#footer a').attr('target', '_blank')\n },\n}\n","/**\n * PPME Hooks for using the /external routes\n */\n\nimport { postMessageUp } from 'iframe-support'\n\nexport default {\n sessionTimerOverlayRenderedHook() {\n postMessageUp({ statusMessage: 'sessionTimerOverlayRendered' })\n },\n\n previewPageSendSubmitHook() {\n postMessageUp({ statusMessage: 'previewPageSendAction' })\n },\n\n successPageAfterRenderHook(props = {}) {\n // TODO: make sure this value does actually exist ever\n if (props.complianceInfo.status !== 'PENDING') {\n postMessageUp({\n statusMessage: 'successPageRendered',\n data: {\n name: props.displayName,\n amount: props.amountFormatted,\n },\n })\n }\n },\n\n loadingStateChangedHook({ isLoading }) {\n postMessageUp({ toggleLoading: isLoading })\n },\n}\n","import { postMessageUp } from 'iframe-support'\nimport _ from 'lodash'\nimport store from '../stores/configureStore'\n\nexport default {\n sessionTimerOverlayRenderedHook() {\n postMessageUp({ statusMessage: 'sessionTimerOverlayRendered' })\n },\n\n previewPageSendSubmitHook() {\n postMessageUp({ statusMessage: 'previewPageSendAction' })\n },\n\n noCurrencyBalanceErrorHook() {\n postMessageUp({\n statusMessage: 'noCurrencyBalanceError',\n toggleLoading: false,\n })\n },\n\n successPageAfterRenderHook() {\n const state = store.getState()\n const status = _.get(state, 'transaction.complianceInfo.status')\n const paymentId = _.get(state, 'transaction.paymentDetails.payment_id')\n if (status !== 'PENDING') {\n postMessageUp({\n statusMessage: 'successPageRendered',\n data: {\n amount: state.amount.amount,\n paymentId,\n currency: state.amount.currencyCode,\n amountFormatted: state.amount.amountFormatted,\n note: state.note.note,\n },\n })\n }\n },\n\n loadingStateChangedHook({ isLoading }) {\n postMessageUp({ toggleLoading: isLoading })\n },\n}\n","/**\n * This file gets loaded when we are operating within a \"XB\" environment.\n * The XB environment comes from coming from the XB flow and transitioning to '/transfer/send/external/xb', which redirects to the preview page.\n */\n\nexport default {\n initializeHook() {\n // HACK: When we transition from the xb flow and deep dive to the p2p review page, siteCatalyst fires off a beacon with 'pageName=main:consumer:p2p:transfer:send:start'.\n // This would mess up metrics as we aren't on the start of the flow. This hack fixes that on the review page.\n if (window.s) {\n window.s.pageName = 'main:consumer:p2p:transfer:xb:review'\n }\n },\n}\n","import { StyleSheet } from 'lib/paypalphrodite'\n\nexport default StyleSheet.create({\n addressWrapper: {\n padding: '0px 28px 0px',\n },\n toolCheckboxWrapper: {\n position: 'absolute',\n width: 'inherit',\n display: 'inline',\n },\n inputCheckBox: {\n width: 25,\n height: 20,\n },\n toolCheckbox: {\n ':before': {\n overflow: 'hidden',\n height: '1em',\n width: '1em',\n padding: '0.3em 0em',\n },\n },\n addressContent: {\n margin: '0 0 0 40px',\n display: 'inline-block',\n },\n srLabel: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n },\n tipIcon: {\n color: '#005EA6',\n cursor: 'pointer',\n textDecoration: 'none',\n width: 0,\n height: 0,\n padding: 0,\n },\n toolTipTxt: {\n backgroundColor: '#e1e7eb',\n fontSize: 12,\n lineHeight: 1.8,\n textAlign: 'left',\n borderRadius: 6,\n padding: '5px 7px',\n display: 'block',\n },\n})\n","// Add amount to props\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { rtlConvertInline, css } from 'lib/paypalphrodite'\nimport { connect } from 'transfer/utils/p2p-connect'\nimport ShippingAddressDropdown from './shippingAddressDropdown'\nimport content from 'pp-react-l10n'\nimport {\n amountIsZero,\n amountAboveMinimumDonation,\n amountBelowMaximumDonation,\n} from '../../lib/amountUtils'\nimport { ActionTypes as types, DONATION_VALIDATION_TYPES } from '../constants'\nimport styles from './share-my-address.styles'\nimport * as SendActions from 'transfer/actions/send'\n\nconst i18n = content('transfer/inc/donateDropdown')\n\nclass ShareMyAddress extends React.Component {\n static propTypes = {\n shareAddress: PropTypes.bool,\n shippingRequired: PropTypes.bool.isRequired,\n dispatch: PropTypes.func.isRequired,\n amount: PropTypes.string,\n currencyCode: PropTypes.string,\n currencyDecimal: PropTypes.string,\n isAmountReadOnly: PropTypes.bool,\n dir: PropTypes.string,\n donationContext: PropTypes.object,\n }\n\n validateAmount = () => {\n if (amountIsZero(this.props.amount, this.props.currencyDecimal)) {\n this.props.dispatch({\n type: types.EXTERNAL.SHOW_AMOUNT_IS_ZERO_ERROR,\n })\n return false\n }\n\n if (\n !amountAboveMinimumDonation(\n this.props.isAmountReadOnly,\n this.props.amount,\n this.props.donationContext.minimum_amount,\n this.props.currencyCode\n )\n ) {\n this.props.dispatch({\n type: types.EXTERNAL.SHOW_AMOUNT_DONATION_ERROR,\n data: DONATION_VALIDATION_TYPES.AMOUNT_BELOW_MINIMUM,\n })\n return false\n }\n\n if (\n !amountBelowMaximumDonation(\n this.props.isAmountReadOnly,\n this.props.amount,\n this.props.donationContext.maximum_amount,\n this.props.currencyCode\n )\n ) {\n this.props.dispatch({\n type: types.EXTERNAL.SHOW_AMOUNT_DONATION_ERROR,\n data: DONATION_VALIDATION_TYPES.AMOUNT_ABOVE_MAXIMUM,\n })\n return false\n }\n return true\n }\n\n reFetchFundingOptions = () => {\n if (this.validateAmount()) {\n this.props.dispatch(SendActions.fetchFundingOptions())\n }\n return\n }\n\n render() {\n if (!this.props.shippingRequired) {\n return null\n }\n\n return (\n
\n \n \n
\n \n {i18n('label.helperText')}\n \n \n )\n }\n}\n\nexport default connect(({ external, amount, server }) => ({\n shippingRequired: external.shippingRequired,\n shareAddress: external.shareAddress,\n amount: amount.amount,\n currencyCode: amount.currencyCode,\n currencyDecimal: amount.currencyDecimal,\n isAmountReadOnly: !!external.isAmountReadOnly,\n dir: server.directionality,\n donationContext: external.donationContext,\n}))(ShareMyAddress)\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'transfer/utils/p2p-connect'\nimport content from 'pp-react-l10n'\nimport { formatAmount } from '../utils/currencyUtils'\nimport { get } from 'lodash'\nimport { DONATION_VALIDATION_TYPES } from '../constants'\n\nconst i18n = content('transfer/inc/amount')\n\nconst STYLES = {\n error: {\n color: 'grey700',\n fontSize: '13px',\n },\n criticalIcon: {\n color: '#D20000',\n position: 'relative',\n top: '-2px',\n height: 13.18,\n width: 14.83,\n },\n}\n\n/**\n * Component for displaying amount validation error message\n */\nexport class AmountDonationValidationError extends Component {\n render() {\n if (\n this.props.donationValidationType ===\n DONATION_VALIDATION_TYPES.AMOUNT_VALID\n ) {\n return null\n }\n\n let errorMessageKey = 'errorText.minimumDonationUS'\n let amount = '1.00'\n let currencyCode = 'USD'\n\n if (\n this.props.donationValidationType ===\n DONATION_VALIDATION_TYPES.AMOUNT_ABOVE_MAXIMUM\n ) {\n amount = get(this.props.donationContext, 'maximum_amount.value')\n currencyCode = get(this.props.donationContext, 'maximum_amount.currency')\n errorMessageKey = 'errorText.maximumDonation'\n } else {\n amount = get(this.props.donationContext, 'minimum_amount.value', '1.00')\n currencyCode = get(\n this.props.donationContext,\n 'minimum_amount.currency',\n 'USD'\n )\n if (currencyCode === 'USD' && Number(amount) < 1) {\n amount = '1.00'\n }\n errorMessageKey = 'errorText.minimumDonationUS'\n }\n\n const formattedAmount = formatAmount(\n amount,\n currencyCode,\n 'CURRENCY_FORMAT'\n )\n return (\n \n \n \n {i18n(errorMessageKey, { amount: formattedAmount })}\n \n \n )\n }\n}\n\nAmountDonationValidationError.propTypes = {\n donationValidationType: PropTypes.string,\n donationContext: PropTypes.object,\n}\n\nexport default connect(({ external }) => ({\n donationValidationType: external.donationValidationType,\n donationContext: external.donationContext,\n}))(AmountDonationValidationError)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'transfer/utils/p2p-connect'\nimport content from 'pp-react-l10n'\nimport { Icon } from '@paypalcorp/pp-react'\nconst i18n = content('transfer/inc/note')\n\nconst STYLES = {\n errorField: {\n textAlign: 'left',\n paddingLeft: '10px',\n },\n errorText: {\n color: '#687173',\n fontSize: '14px',\n },\n criticalIcon: {\n color: '#D20000',\n marginRight: '0.75rem',\n verticalAlign: 'bottom',\n },\n}\n\nexport function NoteMaxCharLimitError(props) {\n const errorText = 'note.errorMaxCharacterLimit'\n\n if (!props.showNoteMaxCharLimitError) {\n return null\n }\n\n return (\n
\n \n \n \n {i18n(errorText)}\n \n \n
\n )\n}\n\nNoteMaxCharLimitError.propTypes = {\n showNoteMaxCharLimitError: PropTypes.bool,\n}\n\nexport default connect(({ external }) => ({\n showNoteMaxCharLimitError: external.showNoteMaxCharLimitError,\n}))(NoteMaxCharLimitError)\n","/**\n * This file gets loaded when we are operating within a \"donate\" environment.\n * The donate environment comes from coming from the donation flow and transitioning to '/transfer/buy/external/donate',\n * which redirects to the preview page.\n */\n\nimport React from 'react'\nimport { postMessageUp } from 'iframe-support'\nimport * as fpti from '../../lib/analytics/fpti'\nimport store from '../stores/configureStore'\nimport ShareMyAddress from '../components/share-my-address'\nimport AmountDonationValidationError from '../components/amount-donation-validation-error'\nimport NoteMaxCharLimitError from '../components/note-max-char-limit-error'\nimport Separator from '../components/separator'\nimport { ENV_TYPE } from '../../../../lib/constants'\n\nexport default {\n // experimental way to pass in components from hooks\n // TODO: find a way to externalize these components\n // or just bring them into the app fully\n customComponents: [\n {\n page: 'preview',\n position: 'before:userAgreement',\n component: ,\n },\n {\n page: 'send-amount-field',\n position: 'after:firstTimeHelp',\n component: ,\n },\n {\n page: 'send-amount-field',\n position: 'before:firstTimeHelp',\n component: ,\n },\n {\n page: 'note-with-gift',\n position: 'after:note',\n component: ,\n },\n ],\n\n // TODO: find a way to externalize this as well\n initializeHook() {\n fpti.overrideEnvironment(ENV_TYPE.DONATE)\n },\n\n // DEPRECATED: THESE ARE ONLY USED IN THE LEGACY DONATE IFRAME\n\n loadingStateChangedHook({ isLoading }) {\n // TODO: update donatenodeweb:p2pframe.js to support true/false\n if (isLoading) {\n postMessageUp({ toggleLoading: isLoading })\n } else {\n // there's no current way to send a \"stop loading\" message\n postMessageUp({ statusMessage: 'fundingOptionsRendered' })\n }\n },\n\n sessionTimerOverlayRenderedHook() {\n postMessageUp({ statusMessage: 'sessionTimerOverlayRendered' })\n },\n\n // see: donatenodeweb:public/js//member/review.js\n showAddNewFIHook() {\n postMessageUp({ statusMessage: 'addNewFIRendered' })\n },\n\n previewPageAfterRenderHook() {\n postMessageUp({ statusMessage: 'fundingOptionsRendered' })\n },\n\n previewPageSendSubmitHook(props = {}) {\n const {\n amount = {},\n external = {},\n donate = {},\n transaction = {},\n address: {\n selectedShippingAddress: { id: selectedShippingAddressId },\n },\n } = store.getState() || {}\n const donatedAmount = amount.amount\n const currencyCode = amount.currencyCode\n const giftAidItFlag = external.donationGiftAidCheckbox\n const donationAnonymousStatus = donate.donationAnonymousStatus\n const selectedRecurringFrequency = external.selectedRecurringFrequency\n const { cvv, threeDS2ReferenceId, threeDS2TransactionId } = transaction\n\n const { isRecurring, recipient, selectedFundingOption } = props\n postMessageUp({\n statusMessage: 'previewPageSendAction',\n data: {\n isRecurring,\n recipient,\n selectedFundingOption,\n selectedShippingAddressId,\n giftAidItFlag,\n donatedAmount,\n currencyCode,\n threeDS2ReferenceId,\n threeDS2TransactionId,\n cvv,\n donationAnonymousStatus,\n selectedRecurringFrequency,\n },\n })\n },\n\n successPageAfterRenderHook() {\n const {\n paymentDetails = {},\n selectedFundingOption = {},\n } = store.getState().transaction\n const { amount = {}, external = {} } = store.getState() || {}\n const donatedAmount = amount.amount\n const currencyCode = amount.currencyCode\n const giftAidCheckboxFlag =\n external.donationGiftAidCheckbox ||\n external.donationGiftAid?.isAlreadyEnrolled\n\n // TODO: remove to this, after changing donateweb:p2pFrame.js - backward compatible\n postMessageToParent(`successPageRendered:${paymentDetails.payment_id}`)\n\n postMessageUp({\n statusMessage: 'successPageRendered',\n data: {\n paymentId: paymentDetails.payment_id,\n selectedFundingOption: selectedFundingOption,\n donationGiftaid: giftAidCheckboxFlag,\n donatedAmount: donatedAmount,\n currencyCode: currencyCode,\n },\n })\n // TODO: move to this thing, by changing donateweb:p2pFrame.js\n // postMessageUp({ successPageRendered: paymentDetails.payment_id })\n },\n\n requestUnifiedLoginHook() {\n postMessageUp({\n statusMessage: 'requestUnifiedLogin',\n })\n },\n}\n\n/**\n * Do a post message up to a parent iframe (if it exists)\n * @param msg\n */\n// TODO: Need to be removed once listing of post messages is in sync with donatenodeweb (also remove L#119, L#128, L#137, L#146 & L#164)\nfunction postMessageToParent(msg) {\n const parent = (window && window.parent) || {}\n\n if (parent.postMessage && parent.location) {\n parent.postMessage(msg, '*')\n }\n}\n","/**\n * This file returns a map of all 3rd party hooks stored in the hooks directory.\n * To import the hooks, you can use `import { outlook } from '../path/to/hooks'`\n */\n\nimport outlook from './outlook'\nimport ppme from './ppme'\nimport pools from './pools'\nimport xb from './xb'\nimport donate from './donate'\nimport { ENV_TYPE } from '../../../../lib/constants'\n\nconst hooks = {\n [ENV_TYPE.OUTLOOK]: outlook,\n [ENV_TYPE.DONATE]: donate,\n [ENV_TYPE.PP_ME]: ppme,\n [ENV_TYPE.POOLS]: pools,\n [ENV_TYPE.CROSS_BORDER]: xb,\n}\n\nexport function getExternalComponents(env, page) {\n const hook = hooks[env] || {}\n const customComponents = hook.customComponents || []\n return function(position) {\n const filteredComponents = customComponents\n .filter(x => x.page === page && x.position === position)\n .map(x => x.component)\n\n // TODO: return all components? will have to add `key` prop somehow\n return filteredComponents[0]\n }\n}\n\nexport { hooks }\nexport default hooks\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport { connect } from 'transfer/utils/p2p-connect'\nimport AddressDropdown from './addressDropdown'\nimport * as OverpanelActions from '../actions/overpanels'\nimport * as AddressActions from '../actions/address'\nimport { FLOW_TYPES } from '../constants'\nimport { ENV_TYPE, SHIPPING_TYPES } from '../../../../lib/constants'\n\nclass ShippingAddressDropdown extends React.Component {\n static propTypes = {\n hasNoAddressNeededOption: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n env: PropTypes.string.isRequired,\n handleSelectAddress: PropTypes.func.isRequired,\n selectedAddress: PropTypes.shape({\n id: PropTypes.string,\n }),\n onAddressChanged: PropTypes.func,\n dir: PropTypes.string.isRequired,\n validateAmount: PropTypes.func,\n }\n\n static defaultProps = {\n hasNoAddressNeededOption: true,\n handleSelectAddress: () => {},\n }\n\n handleAddAddress = () => {\n const { env = '', validateAmount = () => {} } = this.props\n if (env === ENV_TYPE.DONATE && !validateAmount()) {\n return\n }\n this.props.dispatch(\n OverpanelActions.toggleAddShippingAddressOverpanel({ show: true })\n )\n }\n\n handleSelectAddress = id => {\n const {\n onAddressChanged = () => {},\n validateAmount = () => {},\n dispatch,\n env = '',\n } = this.props\n if (env === ENV_TYPE.DONATE && !validateAmount()) {\n return\n }\n dispatch(AddressActions.changeSelectedShippingAddress(id))\n onAddressChanged(id)\n }\n\n render() {\n // TODO: avoid env. specific stuff in components\n const isDonate = this.props.env === ENV_TYPE.DONATE\n const selectElementId = isDonate ? 'mailingAddress' : 'shippingAddress'\n const yourAddressContentKey = `label.your${\n isDonate ? 'Mailing' : 'Shipping'\n }Address`\n const addNewAddressContentKey = `label.addNew${\n isDonate ? 'Mailing' : 'Shipping'\n }Address`\n return (\n \n )\n }\n}\n\nfunction noAddressNeededOption(defaultOption, env, shippingType, isCharity) {\n if (env === ENV_TYPE.DONATE) {\n return defaultOption\n }\n if (\n env === FLOW_TYPES.PPSHOPS &&\n (shippingType === SHIPPING_TYPES.FLAT_RATE ||\n shippingType === SHIPPING_TYPES.FREE)\n ) {\n return false\n }\n return !isCharity\n}\n\nexport default connect(\n (\n { address, server, recipient, transaction },\n { hasNoAddressNeededOption }\n ) => ({\n addressEntryFormat: address.addressEntryFormat,\n addresses: address.addresses,\n selectedAddress: address.selectedShippingAddress,\n env: server.env,\n dir: server.directionality,\n hasNoAddressNeededOption: noAddressNeededOption(\n hasNoAddressNeededOption,\n server.env,\n transaction.shippingType,\n recipient.isCharity\n ),\n })\n)(ShippingAddressDropdown)\n","import glamorous from 'glamorous'\n\nconst Separator = glamorous.div({\n border: 0, // override defaults\n borderTop: '1px solid #dedede !important',\n maxWidth: 444,\n margin: '0 auto',\n padding: 0,\n height: 0,\n})\n\nexport default Separator\n"],"sourceRoot":""}