{"version":3,"sources":["webpack:///./transfer/components/requestRecipientsCounter.js","webpack:///./transfer/components/homepage/request-page/request-base.js","webpack:///./transfer/components/homepage/request-page/request-layout-billsplit.js","webpack:///./transfer/components/homepage/request-page/request-layout-with-entry.js","webpack:///./transfer/components/homepage/request-page/index.js"],"names":["sysColorBackgroundMediumContrast","_PAYPAL_THEME","Wrapper","glamorous","div","display","alignItems","IconStyles","css","color","marginRight","CountText","RequestRecipientsCounter","_ref","currentCount","React","createElement","_CustomersIcon","size","className","toString","_CaptionText","as","MAX_RECIPIENTS","i18n","content","flfr","pageName","concat","pageGroup","excludeRecipients","contacts","recipients","rcontacts","map","recipient","contact","_differenceBy","RequestBase","Component","constructor","arguments","_defineProperty","isRecipientInputOnFocus","dispatch","hasEngagedContact","this","props","UnifiedActions","ViewActions","currentRecipient","toLowerCase","trimmedRecipient","trim","query","includeDirect","includeNonDirect","isRequestFlow","itemNumber","isUnilateral","onSingleRecipient","updatedContact","tracking","Events","p2p_contact_selection_pressed","contact_selected_row","receiver_account_type","receiver_country","has_ppme","hasNetworkId","is_recent_contact","is_existing_contact","transacted","has_profile_photo","thumbnailUrl","is_favorite_contact","isFavorite","contact_selected_sent_count","paymentSentCount","contact_selected_rcvd_count","paymentReceivedCount","is_synced_contact","AnalyticsUtils","isSynced","contact_selected_group","CONTACT_SELECTED_GROUP","TOP_CONTACTS","_this$props$currentRe","decorateContact","typedRecipient","p2p_search_result_contact_selection_pressed","getContactSelectedPosition","getContactSelectedGroup","num_characters_input","length","hasOwnProperty","type","AUTOCOMPLETE_ITEM_TYPE","PHONE_OR_EMAIL","handleSubmitRecipient","trackContactClick","isPhoneOrEmail","billSplitDisplay","country","isAndroid","displayRecipient","replace","displayName","isPhoneNumberMaybe","parseAndFormatPhoneNumber","email","index","linkName","fpti","e","trackDirectorySearchClick","setState","state","isMobileUser","isSmartphone","isIOS","isIframe","scrollTo","_recipientInput","document","body","mobileScrollToInput","event","isCurrentRecipientValid","handleSubmitPage","addRecipient","isEmail","preventDefault","pageSubmit","routeTo","shouldInactivateButton","NextButton","data-nemo","key","onClick","tabIndex","disabled","handleBillSplittingSubmit","isEnrolledInBillSplitting","isBusinessUser","isExternalPartner","isBillSplit","CSSTransitionGroup","transitionName","transitionEnterTimeout","transitionLeaveTimeout","onlyBillSplitButton","recipientOnlySubmitButton","overrideProps","topReceiveContacts","flowType","hasFetchedContacts","canUseInitials","_objectSpread","handleSelectContact","billSplittingPartnerOnEnter","style","padding","PartnerHeader","BillSplitPartnerHeader","header","shouldDisplay","placeholder","isPhoneSendRequestEligible","maxRecipientsReached","directionality","hasShowFullSearchPromptTrmt","getSearchPlaceholder","FLOW_TYPES","REQUEST","errorMessage","InputContainer","innerRef","c","onFocus","toggleInputFocus","onBlur","MultiRecipientSelector","inputProps","id","dir","onChange","handleChangeRecipient","target","value","topContacts","otherContacts","searchedContacts","selectedRecipients","countryCode","handleSelectContactFromAutocomplete","removeRecipient","handleRemoveRecipient","submitRecipient","submit","isRecipientValid","_get","componentDidMount","consentType","searchTrackingDetails","transaction","funnel","store","getState","window","top","behavior","updateCommonProps","sub_flow","FUNNEL","p2p_contact_screen_shown","shouldShowConsent","toggleSearchConsentOverpanel","show","isPreFlow","analytics","actionType","render","DocumentTitle","title","renderBillSplitPartnerHeader","children","renderRecipientInput","renderSubmitButton","renderHelper","getTopContactsContainerProps","UnilateralRecipientChoiceOverpanel","handleSubmit","toggleUnilateralRecipientChoiceOverpanel","SearchConsentOverpanel","connect","server","multiRecipient","amount","user","external","permissions","currentRecipientDisplayName","selectedRecipientIndex","businessAccountInfo","timeZone","PageContainer","maxWidth","margin","position","overflow","smallAndSmaller","RequestBillSplitLayout","displayNoOfTopContacts","isWebIncreaseTopContacts","NUM_TOP_CONTACTS","RecipientForm","InputWrapper","InputAndContactsWrapper","isLarge","HelperContainer","TopContactsContainer","ContactsContainer","slice","Heading","h2","marginTop","marginBottom","mediumAndSmaller","RequestWithEntry","shouldShowEntrySidebar","requestEntryProps","isLeftAlign","_HeadingText","_BodyText","maxRecipientsLimit","_extends","EntryContainer","EntryWrapper","RequestEntries"],"mappings":"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","file":"request-page.esm.js","sourcesContent":["import React from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport { CaptionText, CustomersIcon, PAYPAL_THEME } from '@paypalcorp/pp-react'\nimport { MAX_RECIPIENTS } from 'transfer/constants'\nimport PropTypes from 'prop-types'\n\nconst { sysColorBackgroundMediumContrast } = PAYPAL_THEME\nconst Wrapper = glamorous.div({\n display: 'flex',\n alignItems: 'center',\n})\nconst IconStyles = css({\n color: sysColorBackgroundMediumContrast,\n marginRight: '0.25rem',\n})\nconst CountText = glamorous.div({ color: sysColorBackgroundMediumContrast })\n\nexport default function RequestRecipientsCounter({ currentCount }) {\n return (\n \n \n \n {currentCount}/{MAX_RECIPIENTS}\n \n \n )\n}\n\nRequestRecipientsCounter.propTypes = {\n currentCount: PropTypes.number.isRequired,\n}\n","/**\n * Request page base that handles three things\n * - the individual components that are required on request page, including\n * - multi-recipient input component\n * - submit button\n * - helper prompt\n * - top contacts container\n * - import contact overpanel\n * - event handler of components\n * - hook up with redux store\n *\n *\n * This base component does not handle the layout of components.\n * It delegates the layout to its children so that user of this component\n * can develop flexible UI\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport DocumentTitle from 'react-document-title'\nimport { connect } from 'transfer/utils/p2p-connect'\nimport * as UnifiedActions from '../../../actions/unified-actions'\nimport * as ViewActions from '../../../actions/Actions'\nimport { CSSTransitionGroup } from 'react-transition-group'\nimport _ from 'lodash'\nimport { routeTo } from '../../../utils/routeHelper'\nimport * as AnalyticsUtils from 'lib/analytics/utils'\nimport * as fpti from '../../../../lib/analytics/fpti'\nimport SearchConsentOverpanel from '../../search-consent-overpanel'\nimport {\n parseAndFormatPhoneNumber,\n isPhoneNumberMaybe,\n} from '../../../utils/phoneUtils'\nimport { getSearchPlaceholder } from '../../../utils/search-placeholder'\nimport {\n getContactSelectedGroup,\n getContactSelectedPosition,\n} from 'lib/contact-utils'\nimport { isEmail, isPhoneOrEmail } from '../../../../../../shared/validators'\nimport { mobileScrollToInput } from '../../../utils/recipient-utils'\nimport { isIframe } from 'iframe-support'\nimport { isSmartphone, isIOS } from '../../../../lib/wurfl'\nimport BillSplitPartnerHeader from '../../bill-splitting-partner-header'\nimport PartnerHeader from '../../partnerHeader'\nimport content from 'pp-react-l10n'\nimport NextButton from '../next-button'\nimport MultiRecipientSelector from '../multi-recipient-selector'\nimport {\n MAX_RECIPIENTS,\n AUTOCOMPLETE_ITEM_TYPE,\n CONTACT_SELECTED_GROUP,\n FLOW_TYPES,\n} from '../../../constants'\nimport { FUNNEL } from '../../../../../../lib/constants'\nimport { InputContainer } from '../common/layout'\nimport UnilateralRecipientChoiceOverpanel from '../../../components/unilateral-recipient-choice'\nimport RequestRecipientsCounter from 'transfer/components/requestRecipientsCounter'\nimport {\n toggleUnilateralRecipientChoiceOverpanel,\n toggleSearchConsentOverpanel,\n} from '../../../actions/overpanels'\nimport { shouldShowConsent } from '../../search-consent-overpanel/search-consent-utils'\nimport {\n trackDirectorySearchClick,\n trackContactClick,\n} from '../../../utils/directory-search-analytics'\nimport Events from 'lib/analytics/eventTags'\nimport { tracking } from 'lib/analytics/mParticle'\nimport decorateContact from '../helpers/decorateContact.js'\nimport store from 'transfer/stores/configureStore'\nimport { hasShowFullSearchPromptTrmt } from '../../../../experiments/showFullSearchPrompt'\n\nconst i18n = content('transfer/page/recipient')\n\nfunction trackRecipientType(isEmailRecipient) {\n if (isEmailRecipient) {\n fpti.trackLink(\n 'clickEmailRecipientNext',\n 'main:consumer:p2p:transfer:multi:emailRecipient'\n )\n } else {\n fpti.trackLink(\n 'clickPhoneNumberRecipientNext',\n 'main:consumer:p2p:transfer:multi:phoneNumberRecipient'\n )\n }\n fpti.trackLink(\n 'clickRecipientNext',\n 'main:consumer:p2p:transfer:multi:typedRecipient'\n )\n}\nconst flfr = 'tab-request::start'\nconst pageName = `main:p2p:${flfr}:node::`\nconst pageGroup = `main:p2p:${flfr}`\n\nconst trackRequestLink = linkName => {\n fpti.trackLink(linkName, pageGroup, pageName, 'link')\n}\n\nconst excludeRecipients = (contacts, recipients) => {\n const rcontacts = recipients.map(recipient => recipient.contact)\n return _.differenceBy(contacts, rcontacts, 'id')\n}\n\n/**\n * Request money page for p2p flow\n */\nexport class RequestBase extends React.Component {\n static propTypes = {\n canUseInitials: PropTypes.bool,\n contacts: PropTypes.array.isRequired,\n topContacts: PropTypes.array.isRequired,\n topReceiveContacts: PropTypes.array.isRequired,\n otherContacts: PropTypes.array.isRequired,\n searchedContacts: PropTypes.array,\n hasFetchedContacts: PropTypes.bool,\n currentRecipient: PropTypes.string.isRequired,\n recipients: PropTypes.array.isRequired,\n isCurrentRecipientValid: PropTypes.bool.isRequired,\n dispatch: PropTypes.func.isRequired,\n flowType: PropTypes.string,\n country: PropTypes.string.isRequired,\n error: PropTypes.object,\n isEnrolledInBillSplitting: PropTypes.bool.isRequired,\n isBusinessUser: PropTypes.bool.isRequired,\n amount: PropTypes.string,\n isExternalPartner: PropTypes.bool.isRequired,\n timeZone: PropTypes.string.isRequired,\n children: PropTypes.func.isRequired,\n directionality: PropTypes.string,\n isAndroid: PropTypes.bool.isRequired,\n isPhoneSendRequestEligible: PropTypes.bool,\n searchTrackingDetails: PropTypes.object,\n consentType: PropTypes.string,\n hasEngagedContact: PropTypes.bool,\n typedRecipient: PropTypes.string,\n }\n\n static defaultProps = {\n isPhoneSendRequestEligible: false,\n }\n\n state = {\n isRecipientInputOnFocus: false,\n }\n\n componentDidMount() {\n const {\n dispatch,\n consentType = '',\n searchTrackingDetails = {},\n } = this.props\n\n const { transaction: { funnel } = {} } = store.getState()\n\n window.scrollTo({ top: 0, behavior: 'smooth' })\n\n Events.updateCommonProps({\n sub_flow: 'request_money',\n })\n if (funnel !== FUNNEL.REQUEST) {\n dispatch(UnifiedActions.funnelStarted({ funnel: FUNNEL.REQUEST }))\n }\n tracking(Events.p2p_contact_screen_shown())\n\n dispatch(UnifiedActions.fetchPeers())\n if (shouldShowConsent(consentType, searchTrackingDetails)) {\n dispatch(\n toggleSearchConsentOverpanel({\n show: true,\n isPreFlow: true,\n analytics: { actionType: consentType },\n })\n )\n }\n // eslint-disable-next-line\n window.flfr = flfr // This is for tracking flow-from for analytics.\n }\n\n handleChangeRecipient = recipient => {\n const { dispatch, hasEngagedContact } = this.props\n\n if (!hasEngagedContact) {\n dispatch(UnifiedActions.contactEngaged())\n }\n\n this.props.dispatch(ViewActions.changeCurrentRecipient(recipient))\n // handle Safari autocorrect\n if (this.props.currentRecipient.toLowerCase() === recipient.toLowerCase()) {\n return\n }\n\n const trimmedRecipient = recipient.trim()\n if (recipient) {\n this.props.dispatch(\n UnifiedActions.searchPeers({\n query: trimmedRecipient,\n includeDirect: true,\n includeNonDirect: true,\n isRequestFlow: true,\n })\n )\n }\n }\n\n handleSelectContact = (contact, itemNumber) => {\n const { dispatch, hasEngagedContact } = this.props\n\n if (!hasEngagedContact) {\n dispatch(UnifiedActions.contactEngaged())\n }\n\n if (contact.isUnilateral) {\n this.props.dispatch(\n UnifiedActions.fetchUnilateralRecipientChoices({\n contact,\n onSingleRecipient: updatedContact => {\n this.props.dispatch(ViewActions.multiSelectContact(updatedContact))\n },\n })\n )\n } else {\n this.props.dispatch(ViewActions.multiSelectContact(contact))\n }\n\n tracking(\n Events.p2p_contact_selection_pressed({\n contact_selected_row: itemNumber,\n receiver_account_type: 'unknown',\n receiver_country: 'unknown',\n has_ppme: contact.hasNetworkId ? 'y' : 'n',\n is_recent_contact: 'y',\n is_existing_contact: contact.transacted ? 'y' : 'n',\n has_profile_photo: contact.thumbnailUrl ? 'y' : 'n',\n is_favorite_contact: contact.isFavorite ? 'y' : 'n',\n contact_selected_sent_count: contact.paymentSentCount,\n contact_selected_rcvd_count: contact.paymentReceivedCount,\n is_synced_contact: AnalyticsUtils.getBooleanString(contact.isSynced),\n contact_selected_group: CONTACT_SELECTED_GROUP.TOP_CONTACTS,\n })\n )\n }\n\n handleSelectContactFromAutocomplete = contact => {\n if (!contact) {\n return\n }\n contact = decorateContact(\n {\n typedRecipient: this.props.typedRecipient,\n },\n contact\n )\n\n tracking(\n Events.p2p_search_result_contact_selection_pressed({\n contact_selected_row: getContactSelectedPosition(contact),\n receiver_account_type: 'unknown',\n receiver_country: 'unknown',\n has_ppme: AnalyticsUtils.getBooleanString(contact.hasNetworkId),\n is_recent_contact: 'y',\n is_existing_contact: AnalyticsUtils.getBooleanString(\n contact.transacted\n ),\n has_profile_photo: AnalyticsUtils.getBooleanString(\n contact.thumbnailUrl\n ),\n is_favorite_contact: AnalyticsUtils.getBooleanString(\n contact.isFavorite\n ),\n contact_selected_sent_count: contact.paymentSentCount,\n contact_selected_rcvd_count: contact.paymentReceivedCount,\n is_synced_contact: AnalyticsUtils.getBooleanString(contact.isSynced),\n contact_selected_group: getContactSelectedGroup(contact),\n num_characters_input: this.props.currentRecipient?.length,\n })\n )\n\n if (contact.hasOwnProperty('type')) {\n if (contact.type === AUTOCOMPLETE_ITEM_TYPE.PHONE_OR_EMAIL) {\n this.handleSubmitRecipient()\n }\n return\n }\n\n trackContactClick(true, contact)\n\n const { currentRecipient = '' } = this.props\n if (isPhoneOrEmail(currentRecipient)) {\n contact.billSplitDisplay = currentRecipient\n }\n\n if (contact.isUnilateral) {\n this.props.dispatch(\n UnifiedActions.fetchUnilateralRecipientChoices({\n contact,\n onSingleRecipient: updatedContact => {\n this.props.dispatch(ViewActions.multiSelectContact(updatedContact))\n },\n })\n )\n } else {\n this.props.dispatch(ViewActions.multiSelectContact(contact))\n }\n }\n\n handleRemoveRecipient = recipient => {\n this.props.dispatch(ViewActions.removeRecipient(recipient))\n }\n\n addRecipient = () => {\n const { dispatch, currentRecipient, country, isAndroid } = this.props\n\n let displayRecipient = currentRecipient\n // For Android phones, we handle the recipients using keyUp event,\n // so we get the special characters also in the recipient which needs to be trimmed\n if (isAndroid && displayRecipient) {\n displayRecipient = displayRecipient.replace(/;$|,$/, '')\n }\n\n let displayName = ''\n\n if (isPhoneNumberMaybe(displayRecipient)) {\n displayName = parseAndFormatPhoneNumber(displayRecipient, country)\n }\n\n dispatch(\n ViewActions.selectContact(\n decorateContact({\n email: displayRecipient,\n displayName,\n index: -1,\n typedRecipient: this.props.typedRecipient,\n }),\n null,\n null,\n null,\n false\n )\n )\n }\n\n handleTooltipAnalytics = () => {\n trackRequestLink('linkHelp')\n }\n\n toggleInputFocus = e => {\n if (e.type === 'focus') {\n trackDirectorySearchClick(true, 'DIR_SEARCH')\n }\n\n this.setState(\n state => ({\n isRecipientInputOnFocus: !state.isRecipientInputOnFocus,\n }),\n () => {\n const isMobileUser = isSmartphone || isIOS()\n if (!isIframe() && isMobileUser) {\n const scrollTo = this.state.isRecipientInputOnFocus\n ? this._recipientInput\n : // eslint-disable-next-line\n document.body\n mobileScrollToInput(scrollTo, 300)\n }\n }\n )\n }\n\n changeSelectedRecipientIndex = index => {\n this.props.dispatch(ViewActions.changeSelectedRecipientIndex(index))\n }\n\n handleSubmitRecipient = event => {\n const { isCurrentRecipientValid, currentRecipient, recipients } = this.props\n // Submit the page when the user hits Enter when the recipient input is\n // blank and recipients are selected.\n if (!currentRecipient && recipients.length) {\n return this.handleSubmitPage(event)\n }\n\n // Do nothing if the current recipient is invalid.\n if (!isCurrentRecipientValid) {\n return\n }\n\n // Add the current recipient to selected recipients.\n this.addRecipient()\n trackRecipientType(isEmail(currentRecipient))\n }\n\n pageSubmit = () => {\n const { isCurrentRecipientValid, currentRecipient } = this.props\n // If the next button is pressed while a valid recipient is entered in\n // the recipient input, add that recipient automatically before\n // submitting the page.\n if (currentRecipient && isCurrentRecipientValid) {\n this.addRecipient()\n }\n }\n\n handleSubmitPage = event => {\n event.preventDefault()\n this.pageSubmit()\n // only purpose is to hit analytics middleware\n this.props.dispatch(\n ViewActions.advanceToRequestReview(pageName, pageGroup, { flfr })\n )\n routeTo('/request/preview')\n }\n\n handleBillSplittingSubmit = event => {\n event.preventDefault()\n this.pageSubmit()\n\n // analytics middleware\n this.props.dispatch(\n ViewActions.advanceToRequestReview(pageName, pageGroup, { flfr })\n )\n routeTo('/split/preview')\n }\n\n recipientOnlySubmitButton = () => {\n const { currentRecipient, isCurrentRecipientValid, recipients } = this.props\n const shouldInactivateButton = currentRecipient\n ? !isCurrentRecipientValid\n : !recipients.length\n return (\n \n {i18n('input.next')}\n \n )\n }\n\n onlyBillSplitButton = () => {\n const { currentRecipient, isCurrentRecipientValid, recipients } = this.props\n const shouldInactivateButton = currentRecipient\n ? !isCurrentRecipientValid\n : !recipients.length\n return (\n \n {i18n('input.next')}\n \n )\n }\n\n renderSubmitButton = () => {\n const {\n isEnrolledInBillSplitting,\n isBusinessUser,\n isExternalPartner,\n } = this.props\n\n // verify if this is the bill splitting experience for consumers\n const isBillSplit =\n isEnrolledInBillSplitting && !isBusinessUser && isExternalPartner\n\n return (\n \n {isBillSplit\n ? this.onlyBillSplitButton()\n : this.recipientOnlySubmitButton()}\n \n )\n }\n\n getTopContactsContainerProps = overrideProps => {\n const {\n topReceiveContacts,\n flowType,\n hasFetchedContacts,\n canUseInitials,\n dispatch,\n } = this.props\n return {\n contacts: topReceiveContacts,\n flowType,\n hasFetchedContacts,\n handleSelectContact: this.handleSelectContact,\n canUseInitials,\n pageName,\n pageGroup,\n dispatch,\n ...overrideProps,\n }\n }\n\n renderBillSplitPartnerHeader = () => {\n const {\n isEnrolledInBillSplitting,\n isExternalPartner,\n isBusinessUser,\n } = this.props\n const billSplittingPartnerOnEnter =\n !isBusinessUser && isEnrolledInBillSplitting && isExternalPartner\n return (\n billSplittingPartnerOnEnter && (\n
\n
\n \n \n \n
\n
\n \n )\n )\n }\n\n renderRecipientInput = () => {\n const {\n recipients,\n country,\n currentRecipient,\n isCurrentRecipientValid,\n isAndroid,\n isPhoneSendRequestEligible,\n } = this.props\n\n const maxRecipientsReached = recipients.length >= MAX_RECIPIENTS\n const directionality = this.props.directionality || 'ltr'\n\n let placeholder\n if (maxRecipientsReached) {\n placeholder = i18n('placeholder.multi.recipientLimitReached')\n } else if (recipients.length) {\n placeholder = i18n('placeholder.multi.anyoneElse')\n } else {\n placeholder = hasShowFullSearchPromptTrmt()\n ? i18n('homepage.send.placeholder.simplified')\n : i18n('homepage.send.placeholder.isDirectorySearchEligibleNoNumber')\n\n // Checks for variations\n placeholder = getSearchPlaceholder(placeholder, FLOW_TYPES.REQUEST)\n }\n const errorMessage = isPhoneSendRequestEligible\n ? i18n('error.recipients.isPhoneSendRequestEligible')\n : i18n('error.recipients.isNotPhoneSendRequestEligible')\n\n return (\n (this._recipientInput = c)}\n onFocus={this.toggleInputFocus}\n onBlur={this.toggleInputFocus}\n >\n this.handleChangeRecipient(e.target.value),\n 'data-nemo': 'recipient',\n }}\n contacts={[\n ...this.props.topContacts,\n ...this.props.otherContacts,\n ...this.props.searchedContacts,\n ]}\n selectedRecipients={recipients}\n countryCode={country}\n recipient={currentRecipient}\n onChange={this.handleSelectContactFromAutocomplete}\n removeRecipient={this.handleRemoveRecipient}\n submitRecipient={this.handleSubmitRecipient}\n submit={this.handleSubmitPage}\n isRecipientValid={isCurrentRecipientValid}\n errorMessage={errorMessage}\n isAndroid={isAndroid}\n excludeRecipients={excludeRecipients}\n />\n \n )\n }\n\n renderHelper = () => {\n const { recipients } = this.props\n const length = _.get(recipients, 'length', 0)\n return \n }\n\n render() {\n return (\n \n
\n {this.renderBillSplitPartnerHeader()}\n {this.props.children({\n renderRecipientInput: this.renderRecipientInput,\n renderSubmitButton: this.renderSubmitButton,\n renderHelper: this.renderHelper,\n topContacts: this.props.topReceiveContacts,\n getTopContactsContainerProps: this.getTopContactsContainerProps,\n hasFetchedContacts: this.props.hasFetchedContacts,\n })}\n\n {\n this.props.dispatch(\n toggleUnilateralRecipientChoiceOverpanel({ show: false })\n )\n\n this.props.dispatch(\n ViewActions.multiSelectContact(updatedContact)\n )\n }}\n />\n\n
\n \n
\n
\n
\n )\n }\n}\n\nexport default connect(\n ({\n server,\n contacts,\n multiRecipient,\n amount,\n user,\n external,\n transaction,\n }) => ({\n canUseInitials: server.permissions.canUseInitials,\n isEnrolledInBillSplitting: server.isEnrolledInBillSplitting,\n country: server.country,\n directionality: server.directionality,\n isAndroid: server.isAndroid,\n contacts: excludeRecipients(contacts.contacts, multiRecipient.recipients),\n otherContacts: excludeRecipients(\n contacts.otherContacts,\n multiRecipient.recipients\n ),\n topContacts: excludeRecipients(\n contacts.topContacts,\n multiRecipient.recipients\n ),\n topReceiveContacts: excludeRecipients(\n contacts.topReceiveContacts,\n multiRecipient.recipients\n ),\n searchedContacts: excludeRecipients(\n contacts.searchedContacts,\n multiRecipient.recipients\n ),\n hasFetchedContacts: multiRecipient.hasFetchedContacts,\n recipients: multiRecipient.recipients,\n currentRecipient: multiRecipient.currentRecipient,\n currentRecipientDisplayName: multiRecipient.currentRecipientDisplayName,\n isCurrentRecipientValid: multiRecipient.isCurrentRecipientValid,\n selectedRecipientIndex: multiRecipient.selectedRecipientIndex,\n isBusinessUser:\n server.businessAccountInfo && server.businessAccountInfo.isBusinessUser,\n amount: amount.amount,\n isExternalPartner: external.isExternalPartner,\n timeZone: user.timeZone,\n isPhoneSendRequestEligible: server.isPhoneSendRequestEligible,\n searchTrackingDetails: server.searchTrackingDetails,\n consentType: server.consentType,\n hasEngagedContact: transaction.hasEngagedContact,\n })\n)(RequestBase)\n","/**\n * Request Page\n * It consumes components from request-base\n * and put them together in our desired layout\n */\nimport React from 'react'\nimport glamorous from 'glamorous'\nimport RequestBase from './request-base'\nimport {\n InputWrapper,\n InputAndContactsWrapper,\n HelperContainer,\n} from '../common/layout'\nimport {\n RecipientForm,\n TopContactsContainer,\n} from '../common/layout-with-entries'\nimport { smallAndSmaller } from '../../../../lib/styles/media-queries'\nimport ContactsContainer from '../top-contacts-container/top-contacts-container-small'\nimport { isWebIncreaseTopContacts } from 'experiments/web-increase-top-contacts'\nimport { NUM_TOP_CONTACTS } from '../../../../../../lib/constants'\n\nconst PageContainer = glamorous.div('transferPage', {\n maxWidth: '1024px',\n margin: '0px auto 40px auto',\n position: 'relative',\n top: '0px',\n overflow: 'hidden',\n [smallAndSmaller]: {\n top: 'unset',\n margin: '0px auto 40px auto !important',\n },\n})\n\nexport default function RequestBillSplitLayout() {\n const displayNoOfTopContacts = isWebIncreaseTopContacts()\n ? NUM_TOP_CONTACTS\n : 5\n return (\n \n {({\n renderRecipientInput,\n renderSubmitButton,\n renderHelper,\n topContacts,\n getTopContactsContainerProps,\n hasFetchedContacts,\n }) => (\n \n {/* if no request entry points, offset recipient form so that it stays center */}\n
\n
\n \n \n \n {renderRecipientInput()}\n {renderSubmitButton()}\n {renderHelper()}\n \n \n\n \n {hasFetchedContacts && !!topContacts.length && (\n \n )}\n \n \n
\n
\n
\n )}\n
\n )\n}\n","/**\n * Request Page\n * It consumes components from request-base\n * and put them together in our desired layout\n */\nimport React from 'react'\nimport glamorous from 'glamorous'\nimport content from 'pp-react-l10n'\nimport { HeadingText, BodyText } from '@paypalcorp/pp-react'\nimport { mediumAndSmaller } from 'lib/styles/media-queries'\nimport RequestBase from './request-base'\nimport {\n InputWrapper,\n InputAndContactsWrapper,\n HelperContainer,\n} from '../common/layout'\nimport {\n PageContainer,\n RecipientForm,\n TopContactsContainer,\n EntryContainer,\n EntryWrapper,\n} from '../common/layout-with-entries'\nimport ContactsContainer from '../top-contacts-container/top-contacts-container-small'\nimport RequestEntries, { requestEntryProps } from './request-entries'\nimport { MAX_RECIPIENTS } from 'transfer/constants'\nimport { isWebIncreaseTopContacts } from 'experiments/web-increase-top-contacts'\nimport { NUM_TOP_CONTACTS } from '../../../../../../lib/constants'\n\nconst i18n = content('transfer/page/recipient')\n\nconst Heading = glamorous.h2({\n marginTop: 0,\n marginBottom: '0.625rem',\n [mediumAndSmaller]: {\n marginTop: 'revert',\n },\n})\n\nexport default function RequestLayout() {\n const shouldShowEntrySidebar = !!requestEntryProps.length\n\n const displayNoOfTopContacts = isWebIncreaseTopContacts()\n ? NUM_TOP_CONTACTS\n : 5\n\n return (\n \n {({\n renderRecipientInput,\n renderSubmitButton,\n renderHelper,\n topContacts,\n getTopContactsContainerProps,\n hasFetchedContacts,\n }) => (\n \n {/* if no request entry points, offset recipient form so that it stays center */}\n \n \n \n \n {i18n('homepage.request.title.header')}\n \n \n {i18n('homepage.request.title.descriptionDW2', {\n maxRecipientsLimit: MAX_RECIPIENTS,\n })}\n \n {renderRecipientInput()}\n {renderSubmitButton()}\n {renderHelper()}\n \n \n\n \n {hasFetchedContacts && !!topContacts.length && (\n \n )}\n \n \n {/* only show if there are request entry points */}\n {shouldShowEntrySidebar && (\n \n \n \n \n \n )}\n \n )}\n \n )\n}\n","import RequestWithEntry from './request-layout-with-entry'\n\nexport default RequestWithEntry\n"],"sourceRoot":""}