{"version":3,"sources":["styles/assets/external-link-icon.svg","styles/assets/lemon.png","styles/assets/phone.png","components/AlertBanner/AlertBanner.module.css","styles/assets/warning.png","styles/assets/Arrow_right.svg","styles/assets/btn-dropdown-icon.svg","styles/assets/test-document-upload-success.png","styles/assets/user.svg","styles/assets/bank.svg","styles/assets/amount.svg","styles/assets/user-blue.svg","styles/assets/bank-blue.svg","styles/assets/amount-blue.svg","styles/assets/support.svg","styles/assets/logout.svg","styles/assets/message-blue.svg","styles/assets/message.svg","styles/assets/New-transfer-inactive.svg","styles/assets/New-transfer-active.svg","styles/assets/message-searchicon.svg","styles/assets/table-filter-asc-icon.svg","styles/assets/table-filter-dsc-icon.svg","styles/assets/filter-selected-close-icon.svg","components/PaymintsTable/style.module.scss","styles/assets/table-download-icon.svg","styles/assets/mobile-table-arrow.svg","styles/assets/icon_question.svg","styles/assets/icon_pnc.png","components/SpinnerLoader/SpinnerLoader.jsx","react-auth0-spa.js","utils/service/service_user_api.js","utils/service/service_transfer_api.js","utils/service/service_tenant_api.js","utils/util.js","components/BoxContainer/BoxContainer.jsx","components/CreateAccountWizard/updateAction.jsx","components/ErrorMessajeInput/ErrorMessageInput.jsx","utils/apiSettings.js","utils/service/service_api.js","components/MessageCenter/mock-data.js","reducers/account/AccountActions.js","reducers/account/AccountActionTypes.js","components/PhoneField/PhoneField.jsx","components/CreateAccountFirstStep/CreateAccountFirstStep.jsx","components/CreateAccountVerificationStep/CreateAccountVerificationStep.jsx","components/SsnInput/SsnInput.jsx","components/SsnInput/SsnToggleVisibilityInput.jsx","contexts/sensitiveDataContext.js","utils/validations.js","components/Select/Select.jsx","utils/constants.js","utils/encryption.js","components/CreateAccountSecondStep/CreateAccountSecondStep.jsx","components/FormatAddress/FormatAddress.jsx","components/DestinationAccount/DestinationAccount.jsx","utils/service/service_institution_logo.js","reducers/transfer/TransferActionType.js","reducers/transfer/TransferActions.js","components/AmountInput/AmountInput.jsx","hooks/useAllCreditTransferTypes.js","hooks/useAllActiveOfficesSorted.js","hooks/useAllRealtorsFromTenant.js","components/TransferDetails/TransferDetails.jsx","components/TransferSummary/MobileTransferSummary/MobileTransferSummary.jsx","utils/service/service_bank_api.js","components/ContentModal/ContentModal.jsx","components/TransferSummary/TransferSummary.jsx","components/TransferSuccess/EmailAddresses.jsx","components/TransferSuccess/InfoDisbursement.jsx","components/TransferSuccess/InfoEmail.jsx","components/TransferSuccess/InfoTransfer.jsx","components/TransferSuccess/SuccessTitle.jsx","components/TransferSuccess/MobileTransferSuccess/MobileTransferSuccess.jsx","components/TransferSuccess/SuccessLastRow.jsx","components/TransferSuccess/SuccessSecondRow.jsx","components/TransferSuccess/SummaryTransfer.jsx","components/TransferSuccess/TransferSuccess.jsx","components/PlaidButton/SelectedBankAccount.jsx","components/AccountError/AccountError.jsx","components/PlaidButton/PlaidButton.jsx","components/PlaidButton/PlaidVerifyButton.jsx","utils/request.js","hooks/useStore.js","components/FieldRadioButton/FieldRadioButton.jsx","components/DisconnectModal/disconnectModal.jsx","components/BankAccounts/AddAccountTooltip.jsx","components/BankAccounts/BankAccounts.jsx","hooks/plaid/usePlaidTokenForMicrodepositStart.js","components/BankAccountSelection/BankAccountSelection.jsx","components/FileUpload/FileUpload.jsx","components/FileUpload/InputFile.jsx","reducers/asset/AssetActionTypes.js","components/DocumentVerification/DocumentVerification.jsx","reducers/asset/AssetActions.js","hooks/useAllTransferFeeConfigs.js","components/CreateAccountWizard/CreateAccountWizard.jsx","components/CreatePartnerAccountFirstStep/CreateAccountFirstStep.jsx","utils/service/phoneFormatter.js","components/TransferDetailsPartner/TransferDetailsPartner.jsx","hooks/useAllRealtors.js","components/CreateAccountWizardForPartner/CreateAccountWizard.jsx","components/AlertBanner/index.jsx","hooks/useAllTransfersSorted.js","utils/service/service_pdf-download.js","components/TransferHistory/TransferDocuments.jsx","components/TransferHistory/InboundTransfer.jsx","components/CustomTooltip/CustomTooltip.jsx","components/TransferHistory/TransferEditTooltip.jsx","components/TransferHistory/OutboundTransfer.jsx","components/TransferHistory/TransferHistoryListing.jsx","components/TransferHistory/MobileHistory/MobileHistory.jsx","components/TransferHistory/TransferHistory.jsx","components/BankAccountsHistory/BankAccountsHistory.jsx","components/Account/Account.jsx","components/MenuNavBar/MenuNavBar.jsx","components/Login/Login.jsx","utils/service/service_message-center.js","components/PaymintsTable/PaymintsTable.jsx","components/MessageCenter/MessageCenterColumnCfg.js","components/MessageCenter/StandardView.jsx","components/MessageCenter/MobileView.jsx","components/MessageCenter/MessageCenter.jsx","components/HomePage/HomePage.jsx","App.js","serviceWorker.js","utils/history.js","reducers/account/AccountReducer.js","reducers/transfer/TransferReducer.js","reducers/asset/AssetReducer.js","reducers/RootReducer.js","store/Store.js","utils/client.js","index.js"],"names":["module","exports","SpinnerLoader","withoutMargin","className","DEFAULT_REDIRECT_CALLBACK","window","history","replaceState","document","title","location","pathname","Auth0Context","React","createContext","useAuth0","useContext","Auth0Provider","children","onRedirectCallback","initOptions","useState","isAuthenticated","setIsAuthenticated","user","setUser","auth0Client","setAuth0","loading","setLoading","popupOpen","setPopupOpen","useEffect","a","createAuth0Client","auth0FromHook","search","includes","handleRedirectCallback","appState","getUser","initAuth0","loginWithPopup","params","console","error","Provider","value","getIdTokenClaims","loginWithRedirect","getTokenSilently","getTokenWithPopup","logout","props","returnTo","origin","CREATE_USER_QUERY","gql","useCreateClient","useMutation","createClient","data","clientPhone","undefined","UPDATE_USER_QUERY","useUpdateClient","updateClient","client","Client","GET_CUSTOMER_QUERY","useClientByPhone","mobileNumber","phone","isNil","isEmpty","useQuery","variables","where","mobilePhone","loadingSearch","refetch","allClients","GET_ALL_CLIENT_DOCUMENT_QUERY","CREATE_TRANSACTION_QUERY","useCreateTransfer","createTransfer","tenant","UPDATE_TRANSACTION_QUERY","useSaveTransfer","saveTransfer","transfer","Transfer","GET_TRANSACTION_QUERY","useTransfer","id","loadingSearchTransfer","refetchTransfer","GET_TRANSACTIONS_QUERY","GET_ALL_TENANTS_QUERY","useAllTenants","tenantID","identifier","allTenants","GET_BRANDINGS_FROM_TENANT_QUERY","useAllBrandingsFromTenant","tenantId","active","loadingBranding","refetchBrandings","branding","allBrandings","GET_DEFAULT_BRANDING_FROM_TENANT_QUERY","useDefaultBrandingFromTenant","loadingDefaultBranding","refetchDefaultBranding","defaultBranding","GET_ESCROW_ACCOUNTS_FROM_TENANT_QUERY","useEscrowAccountFromTenant","destAccount","allBankAccounts","asyncWrapper","promise","then","catch","err","formatFromDisplay","format","primary","secondary","transferType","isDebit","name","firstName","lastName","filter","f","join","sourceBankAccount","bankName","accountLastFourDigits","formatToDisplay","destBankAccount","extractNotesFromJson","possibleJsonString","obj","JSON","parse","note","e","getQueryVariable","query","variable","splitSymbol","vars","split","i","length","pair","filterNotNull","list","item","isNull","formatDayFromUTC","date","newDate","day","month","year","getClientStore","sessionStorage","getItem","getRealtorStore","realtor","clearStore","clear","setItem","key","removeItem","getTenantIdentifier","hostname","paymintsCurrencyFormatter","decimals","style","fallback","formatter","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","numeric","createLogButton","brandLogo","showLogin","onClick","push","noShadow","type","BUTTON_TYPE","INVERSE_BLUE","Logo","mobile","screen","width","src","alt","hidden","withRouter","color","withBorder","withDoubleBorder","withLogButton","widest","internalBox","get","path","selectedTab","classNameBox","classNames","classNameContainer","updateAction","state","payload","ErrorMessageInput","this","Component","defaultProps","APIDomain","process","axios","defaults","baseURL","plaidStartMicrodepoits","method","headers","Authorization","url","response","reload","sendEmailReceipt","route","transfer_GUID","TRANSFER_GUID","emailRecipient","additionalEmailRecipient","getSMSCode","tenant_GUID","client_GUID","saveSensitiveData","log","getSensitiveData","messageKey","transfer_request","transfer_receipt","transfer_fail","transfer_initiated","getPlaidCreateClient","dispatch","APIUtil","getPlaidCreateClientSuccess","errorElement","message","getClientAccounts","clientId","getBankAccountsSuccess","updateAuth0User","updateAuth0UserSuccess","phoneMask","mask","onChange","target","replace","Title","InfoCreateAccount","introductoryText","FieldsPersonalInformation","register","errors","setValue","watch","control","placeholder","autoComplete","ref","required","maxLength","Warning","PersonalInformation","FieldsContactInformation","as","PhoneField","rules","phone_number","Phone","ContactInformation","FooterInformation","setDisabled","checked","href","rel","linkIcon","connect","onUpdateAuth0User","beforeContinue","refetchNewClient","useForm","defaultValues","handleSubmit","action","useStateMachine","messageError","onSetError","disabled","getCode","clientid","onSubmit","newUser","email","clientData","res","auth0User","connection","create_user","role","new_user_role","htmlType","registerButtonText","to","useHistory","isError","setError","verificationCode","code","stringify","setClientStore","onKeyUp","validate","LINK","SsnMask","SsnToggleVisibilityField","visible","setVisible","toggleVisibility","buildCssForIcon","classnames","onFocus","onBlur","SensitiveDataContext","SensitiveDataProvider","clientID","sensitiveData","setSensitiveData","getData","useCallback","useSensitiveData","shouldHideDocuments","status","indexOf","toLowerCase","validAge","DOB","Date","today","startOfToday","differenceInYears","REGEXP_ONLY_4_CHAR","validSSN","ssn","ssnWithoutDash","test","validateAccountinfo","account","validAmount","balance","fee","Select","options","placeholderText","map","states","encrypt","AES","toString","decrypt","enc","Utf8","InfoSSN","FieldSSN","FieldBirthday","dateOfBirth","FieldEmail","address1","city","zipcode","intialform","refetchSensitiveData","newUserWithoutSsnDash","userValues","SSN","FormatAddress","streetNumberName","apartmentSuiteNumber","withSymbol","formatAddress","formatAddressStreetApartment","formatZipCode","formatAddressCityStateZipCode","DestinationAccount","tenantName","description","destAccountLogo","office","logoURL","GET_INSTITUTION_LOGO_QUERY","useInstitutionLogo","institutionID","institutionCode","institutionLogo","allInstitutionLogos","GET_INSTITUTION_LOGO_OR_QUERY","useInstitutionLogoOR","institution","institutionsLogo","saveTransferDoc","transferId","saveTransferDocSuccess","numberMask","createNumberMask","allowDecimal","AmountInput","GET_ALL_CREDIT_TRANSFER_TYPES","useAllCreditTransferTypes","fetchPolicy","isCredit","allTransferTypes","GET_OFFICES_SORTED_QUERY","useAllActiveOfficesSorted","loadingOffices","refetchOffices","activeOffices","allOffices","GET_REALTORS_FROM_TENANT_QUERY","useAllRealtorsFromTenant","realtors","allRealtors","InfoTransfer","FieldsEMD","realtorData","setRealtorData","showREAInfoFill","display","padding","fullName","phoneNumber","FieldsInfoTransfer","purposes","emdVisible","setFieldsEMDVisible","purposesOptions","purpose","label","backgroundColor","borderRadius","marginTop","AntSelect","defaultValue","boxShadow","border","onSelect","InfoPropertyAddress","FieldsInfoPropertyAddress","propertyAddress1","propertyCity","propertyState","propertyZipcode","InfoAmount","FieldInfoAmount","bankBalance","watchDocument","regDocument","controlDocument","setMaxAmountValidate","maxAmountValidate","MAXIMUM_AMOUNT","transferFeeConfigData","getValues","number","justifyContent","first","clientPays","amount","extractTranferFeeFromData","matchesAmount","onPaste","preventDefault","amount2","FieldOfficeSelect","officeOptions","labelInValue","RealtorSelect","setRealtorID","realtorsOptions","splittedFirstAndLast","D","on","showSearch","onClickGoToTransferHistory","createDraftTransfer","newTransfer","creditTransferTypes","tfg","Object","assign","expectedClosingDate","otherIndividuals","getDefaultValues","propertyAddress2","onSaveTransferDoc","notes","setShowREAInfoFill","showAmountInfo","onShowAmountInfo","realtorID","loadingCreditTransferTypes","setPurposes","scrollTo","routingType","saveAsDraft","amountCompare","Number","destAccountId","bankAccountId","newTransferComplete","newUserAddress","HeaderLogo","LIGHT_BLUE","TransferSummary","textTransform","MobileTransferSummary","bankAccount","bankAccountLogo","disbursement","GET_BANK_ACCOUNT_QUERY","useBankAccount","BankAccount","small","progress","ContentModal","Modal","animation","autoFocus","backdrop","enforceFocus","show","isVisible","onExit","onClose","centered","onHide","hide","Header","closeButton","hideCloseButton","Body","content","Footer","withoutButtons","isCancelButton","onSecondaryButton","secondaryButtonText","onPrimaryButton","primaryButtonText","transformPurpose","DisplaySummationRows","borderTop","paddingTop","paddingBottom","SummaryTransfer","moment","UseDifferentAccountLink","transferDwolla","fromSummary","onGetPlaidCreateClient","onstartDwolla","config","sourceBankAccountId","startDwollaSuccess","showModal","setShow","handleClose","handleShow","pathUrl","values","disbursementData","destBankAccountId","customErrMsg","pocPhone","supportEmail","escrowAccountLogo","arrow","onClickBackButton","EmailAddresses","m","marker","pattern","InfoDisbursement","InfoEmail","SuccessTitle","TransferSuccess","address2","MobileTransferSuccess","SuccessLastRow","SuccessSecondRow","transferService","onSendEmailReceipt","sendEmailReceiptSuccess","success","sendEmailReceiptError","emailAddresses","uniqueEmailAddressList","Set","keys","SelectedBankAccount","plaidResponse","onGetPlaidStartMicrodepoits","onGetBankAccounts","nextStep","onSetErrorClient","onSetLoadingService","verified","manual","accountRequest","navigateAccounts","bankAccounts","plaidAccountId","publicToken","metadata","verification_status","responsePlaid","setTimeout","bankAccountSelectedID","bankAccountSelected","find","isLoading","initialSate","plaidInfoToVerify","accessToken","SelectedBankAccounts","PlaidAddBankAccountButton","product","onSuccess","isOpen","token","isAddBank","onPlaidSuccess","clientName","client_id","REACT_APP_PLAID_CLIENT_ID","env","auth","flow_type","selectAccount","usePlaidLink","open","ready","PlaidVerifyButton","authToken","getAuthToken","setData","getbykey","removeStoreByKey","request","create","REACT_APP_BACKEND_URL","xsrfCookieName","xsrfHeaderName","REACT_APP_DOMAIN_URL","FieldRadioButton","handleChange","DisconnectModal","showDisconnectModal","setShowDisconnectModal","onReloadBankAccounts","onDisconnectBankAccount","keyboard","opacity","Button","variant","AddAccountTooltip","dismissHandler","plaidButton","tabIndex","el","getElementById","left","pointerEvents","isSelectAccount","Subtitle","nullBalanceHandler","toFixed","BuildRow","Controller","onGetPlaidVerifyMicrodepoits","reloadingBankAccounts","balanceDateTime","time","setIsOpen","linkToken","setlinkToken","setBankAccountId","NavyFederalCreditUnionSavingsAccount","getTokenResponse","tokenResponse","Fragment","pendingVerification","selection","bankID","body","post","colspan","SmallTable","BankAccountsList","isEmptyBankAccounts","index","TableData","Table","responsive","nextStepFromSummary","disconnectBankAccountSuccess","hasVerifiedAccount","loadingService","reloadBankAccounts","errorClient","isVerifyingAndLinking","setIsVerifyingAndLinking","pncTooltipVisible","setPncTooltipVisible","startToken","setStartToken","isFetchingBankAccounts","isFetchingCreateClient","isFetchedCreateClient","isFetchingDeleteBankAccount","PlaidTokenForMicroDepositsStart","client_user_id","products","forEach","size","codes","it","nextStepAfterPlaid","togglePncTooltip","bool","fontSize","marginBottom","position","onClickMakeTransfer","dob","lastSelected","cantEdit","onCantEdit","disbursementPath","option","isPendingOrSubmitted","editError","showPlaidButton","FileUpload","onDropFiles","selected","invalidFormat","useDropzone","onDrop","getRootProps","getInputProps","isDragActive","InputFile","setInvalidFormat","files","onUploadDocument","formData","form","uploadDocumentSuccess","selectedDocument","selectedDocumentType","addToast","useToasts","FormData","append","responseUploadDocument","documentType","assetId","responseTransferDoc","asset","uploadIdDocument","appearance","uploadImage","htmlFor","GET_ALL_TRANSFER_FEE_CONFIGS","useAllTransferFeeConfigs","domain","allTransferFeeConfigs","createStore","exact","render","CreateAccountFirstStep","CreateAccountSecondStep","BankAccountSelection","RealtorIntroText","introDefault","introText","displayDescription","textAlign","margin","flexDirection","alignItems","marginLeft","height","licenseArray","setLicenseArray","licenses","nameDefault","nameText","displayName","headshotImageURL","brokerage","license","websiteURL","unformattedNumber","formattedNumber","iMask","iNumber","charAt","phoneFormatter","officePhone","partnerURI","GET_ALL_REALTORS_QUERY","landingPageURI","pop","useAllRealtors","setRealtorStore","TransferDetailsPartner","AlertBanner","alertType","text","css","alert","closeIcon","GET_TRANSACTIONS_SORTED_QUERY","downloadPdf","responseType","TransferDocuments","documentData","escrowAgreements","receipts","openPdf","pdfUrl","downloadPdfPromise","file","Blob","fileURL","URL","createObjectURL","marginRight","InboundTransfer","clientDocuments","transferHasDocumentation","Row","Col","dangerouslySetInnerHTML","__html","createdAt","trim","BALL_TYPE","INACTIVE","PENDING","ACTIVE","SENT","VIEWED","COMPLETED","CANCELLED","ERROR","getStatusType","CustomTooltip","tooltipContent","Tooltip","popoverText","OverlayTrigger","placement","overlay","TransferEditTooltip","OutboundTransfer","xs","agent","TransferHistoryListing","transfers","t","DocumentSection","documents","doc","receipt","escrowAgreement","UpdateUI","updatedAt","decimal","MobileHistory","transfersData","transferCards","seeMoreInfo","updateSeeMoreInfo","setTransfers","status_not_in","OR","transferType_is_null","refetchTransfers","allTransfers","useAllTransfersSorted","transfersNew","loadingClientDoc","errorClientDoc","refetchClientDoc","allClientDocuments","useAllClientDocuments","bankAccountCodes","escrowBankAccountCodes","escrowBankAccount","allCodes","querySelector","transfersID","showMoreInfo","innerWidth","BankAccountsHistory","loadingTenant","middleName","validateNumber","ssnCutter","slice","rest","useStyles","makeStyles","theme","tooltip","newTransferStart","isMobile","openMenu","isSelectedAccount","isSelectedBank","isSelectedTransfer","isMessageCenter","isNewTransfer","hideSideNav","classes","userLogoBlue","userLogo","NewTransferActive","NewTransferInactive","bankLogoBlue","bankLogo","amountLogoBlue","amountLogo","messageBlue","messageIcon","LogOut","contactSupport","fontWeight","GET_CLIENTS_MESSAGE","PaymintsTable","table","columnCfg","pdfClickHandler","Function","prototype","dataIndex","sorter","b","defaultSortOrder","localeCompare","data-tooltip","downloadIcon","cursor","StandardView","tableData","pdfOpenHandler","columns","dataSource","addKeyToTableData","pagination","MobileView","mobileArrowIcon","MessageCenter","dynamicDateIndex","DateRanges","Today","Yesterday","subtract","lastXDays","startOf","endOf","baseCriteria","messageType_in","createdAt_gte","toISOString","createdAt_lte","searchCriteria","setSearchCriteria","allClientMessages","whereClause","useClientMessages","availableMessageTypes","setAvailableMessageTypes","showMessageTypes","setShowMessageTypes","showMobileFilter","setShowMobileFilter","sortOrder","setOrder","setTableData","searchKey","setSearchKey","copyTableData","setCopyTableData","daysDiff","setDaysDiff","rangeDate","setRangeDate","filterTableData","messages","checkedMessageTypes","sortTable","sortData","sort","selectMessageType","isChecked","newAvailableMessageTypes","str","orClause","propertyAddress1_contains_i","name_contains_i","buildOrClause","CalendarButton","daysDescription","days","newValue","handleSearchInput","searchIcon","RangePicker","tzOffset","getTimezoneOffset","dateRange","utc","toDate","diff","ranges","onOutsideClick","dropdownIcon","mt","sortIconAsc","sortIconDsc","hasTransfer","brandName","hasInitiatedTransfer","loadingServices","useLocation","header","footer","innerHTML","clientSsn","clientDob","isHide","isNewUser","brandBackgroundImage","brandBackgroundColor","behindFieldsColor","useStyle","fontFamily","customCSS","linkColor","buttonColor","fontColor","transferID","useAllTransfers","Style","styleSingleton","widthWithMenu","fonts","WebFont","load","google","families","tenantFavicon","Helmet","sizes","styles","autoDismiss","autoDismissTimeout","store","Boolean","match","createBrowserHistory","initialState","errorCreateClient","isFetchedBankAccounts","errorBankAccounts","deleteBankAccount","isFetchedDeleteBankAccount","errorDeleteBankAccount","updateAuth0","isFetchedUpdateAuth0","isFetchingUpdateAuth0","errorUpdateAuth0","accountReducer","startDwolla","isFetchedStartDwolla","isFetchingStartDwolla","errorStartDwolla","transferDoc","isFetchingTransferDoc","isFetchedTransferDoc","errorTransferDoc","isFetchingSendEmailReceipt","isFetchedSendEmailReceipt","errorSendEmailReceipt","transferReducer","uploadDocument","isFetchedUploadDocument","isFetchingUploadDocument","errorUploadDocument","assetReducer","rootReducer","combineReducers","ConfigureStore","preLoadedState","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","enhancer","applyMiddleware","thunk","ApolloClient","uri","authorization","preloadedState","currentUser","session","ReactDOM","redirect_uri","targetUrl","navigator","serviceWorker","registration","unregister"],"mappings":"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","file":"static/js/main.c4a12cb6.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/external-link-icon.bd236a01.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABhCAYAAADGBs+jAAAC3klEQVR4Ae2d4W2bQBiGPUJH6AgZIVJL2p8dIX9C8rMjZISO4BE6gkfpBkA6gKtrreo45UNx3hfO4CcSEmB/7+HnOfCB5Mtuxx8EIAABCEAAAhCAAAQgAAEIQAACENg+geahu/nSDt/v2u55q8untvt2e999uEibzePwo2mH45UsfepwFyXi89Pv2yuBn3Wy/nBREtKl5/okDEckXMClDwlIGPeB+HLUH7YwSooutWMKlbciCWl/5UOzNI8EC0YtBAkaP0s1EiwYtRAkaPws1UiwYNRCkKDxs1QjwYJRC0GCxs9SjQQLRi0ECRo/SzUSLBi1ECRo/CzVSLBg1EKQoPGzVCPBglELQYLGz1KNBAtGLQQJGj9LNRIsGLUQJGj8LNVIsGDUQpCg8bNUI8GCUQtBgsbPUo0EC0YtBAkaP0s1EiwYtRAkaPws1UiwYNRCkKDxs1QjwYJRC0GCxs9SjQQLRi0ECRo/SzUSLBi1ECRo/CzVSLBg1EKQoPGzVK9aQtPyO2ZLL3hLSPQ75qgHbWX/W9gs9h4kLIY6bggJMZvFXkHCYqjjhpAQs1nslVgCo6PqEpKcxQ5ixoai0dyMTZ4fHZ0JSDif5bsrkPBudL7CpSV8feo+Nu2wT3fk/5eHl3vfJxoncTka89il+UibdugDMPvi7ZbNoK11zAY5x3fCv54/MQnuDGcEEoq+HAHJ9tvPhiw7m5x2JfOiznMmTJwF7XC8e3z5WXiTN5FQIJz4PvjbS9OE6UWJvImEAmGCHEFJguaY0T1qrzi0uptLD1FPIooRUn9IQ9c5SCBhgmoarqYZ6+fo/XmzSMhpVFpHQiXwebNIyGlUWl+1hOjgt7K/Up94vdlodLQV2NHneJ1Gpb1IqAQ+bxYJOY1K66fn+8XN0/QznugUX9F++4NCWd/p33z9WhHE0RPRM497P/cNoiyEAAhAAAIQgAAEIAABCEAAAhCAAAQgAIFNEPgD8eazvZqqkSkAAAAASUVORK5CYII=\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alert\":\"AlertBanner_alert__3vP18\",\"error\":\"AlertBanner_error__1yJ5w\",\"info\":\"AlertBanner_info__3vS58\",\"success\":\"AlertBanner_success__2ybEC\",\"warn\":\"AlertBanner_warn__1zd4c\",\"text\":\"AlertBanner_text__3kxMd\",\"closeIcon\":\"AlertBanner_closeIcon__TiiSw\"};","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABhCAYAAADGBs+jAAAFV0lEQVR4Ae1d7XHbMAz1CB2hI3SE3LVK+7Mj+I+V/OwIHSEjdISOkBEyQjawpA7gHvQRy7LwSIoAZZnInc+yJBLgAwE8kLKz29mfIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgCUgg87I+fikOzL57ql6KsXun1WB5/fy2PP+malBzrZwaBFvwW+PpUlOyrIoPMNLdTsQgUh+OXomzeAPgTwzRv5hWxqI/atx5Q1pW/AQYvMUOMYIw77OL+AGzg+1P9EifdWu++Pf97CPeAS0P9eD5+NigjEMB5oHollvS9rH+57otQIe+mLQ3lWdCfKToobJFHTe+3zw4E+mT8zoSiao75UNhh7j+RpzhE2uUpAsT1OUBRHdAVcJc54aOfQ7OfyrHPDAIOSvo+5wVDV462sx40tLX3EQKxs3mpF41UyPtQKq4XZc3mE6Osjjn2+NT8/YjhE2YUwnBCmZVDrXwu48Kseg1FAlFWWosK7S+L+6VBkzbq3RuB9gK4MFSU9VVh5guIVHjzlbfp+7QSKU709fumQZNUHiVRVJj56hBLeX3lbPa+FMVVChmbNQApjgorWh2VGly30jq/nCHhbVJ6Ju+nj9fcjpl4vAZ555RtAUesh2VECottWgws+eyVEohZS3hh5qsXqkVCKnJfeTd931pgWAHXTwsEBBVX2rMHhUEKWdryb6J/tB+cIkHiUJhBAYcKM5/lia599+hjF9Imx54JPRU1volZP1UC0ESvXS8EHjEtX86fbQGHAPQFD/URYgSaHNkVcI6ZB/eNx97kMkJoYgWeeX8FnNQimqPgOoVy/bWZ2niCqR5LshEEGoWjUCPQwNeqWVRBn3aOeHkoaCpGaB+7n1/cIwNNx7O5zxi08AHi/pZ5AoGKJgrR4s0BP1ZY2tW1jNCHzGQrumOMVI8dgC3aN3b0eSIWtnRQiHn5UuilstXaadC/nupOvhp1jucxg3HQaK9iMka+eFu0PBE7q9g9iLI+xQ4E6U00O7b/ZO21Z5SmEQgkDQ9OBv4gSDu2ahsB5Z0US+0DjovfHV4gsm+sbQQavDSrWwzokoYp+DZvBLlv4+AqX07OEoxhG6x4eGHGCeM3heRkkOwUE4ob4+LzqVyYlyNrBFdopeuLwdJoiJIZgSYpM5URSGdtkiGJC0xkFKYkhaU0Qu8N7Ld+bsYbYIET8Vg7Z7hub2Kyt0w/uaNUTKUeHzdueB4UN9sr9ZmR8mSgXn8HLpd92pQ5j5kH86cd7EHVCwgUSprDiz7Payl3ls9Fy/cxorVDzIHiaLQApgPA3xctjzNirk7jOmiFh8bWUsiRJL2fO7pC2POE1AMLnuLwbWA2nkIfO8GSLq+ikNAvZ4isT11KPX9aMwSftaByfsWNcQ8jRO8pXAx25gMKw3Rtpon8KQSEdoJEX4ntPCHN4hqi5dLF6ZUFMVVb/n3jK0HMCdfDX5Lfc2NUaE87cpMqQUi6PMGBwAKgVDGzerQ/jHve3x4vsat5A8wFiQFoE+Sh2bfx+dDs1QbNWWC3wz+SqIUHSEiqhRnAYfVLfI5Syk2AI+vGwNWh5hVAOYpvFXGFY0XJaFmE7ppNx7lgfKwiE4Qj84TJD2QVZV2pGIFlJaSA4lqRymAEOu2JCvP8quxu4oe6jvWi9rdHu5A1s+HS/5+D+7o+T08pJKnWK2jNaBwPMz/WZYu9NzAuyM+MnIyi6gVDXEK0LCewmbGmIyn9GpJ5xIgVrULVaemgp61ZG6Otmm/hJz6JrpF35PYaQrS9GwKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChsAdI/AfNvTePpLFywoAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/Arrow_right.32e704ca.svg\";","module.exports = __webpack_public_path__ + \"static/media/btn-dropdown-icon.6baa951c.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/user.5a77bd4a.svg\";","module.exports = __webpack_public_path__ + \"static/media/bank.b827d180.svg\";","module.exports = __webpack_public_path__ + \"static/media/amount.09a55498.svg\";","module.exports = __webpack_public_path__ + \"static/media/user-blue.6983d356.svg\";","module.exports = __webpack_public_path__ + \"static/media/bank-blue.88e3537d.svg\";","module.exports = __webpack_public_path__ + \"static/media/amount-blue.6f7da3ce.svg\";","module.exports = __webpack_public_path__ + \"static/media/support.7f045895.svg\";","module.exports = __webpack_public_path__ + \"static/media/logout.24a7bccf.svg\";","module.exports = __webpack_public_path__ + \"static/media/message-blue.ee0c89d2.svg\";","module.exports = __webpack_public_path__ + \"static/media/message.4a8643a3.svg\";","module.exports = __webpack_public_path__ + \"static/media/New-transfer-inactive.8850ae29.svg\";","module.exports = __webpack_public_path__ + \"static/media/New-transfer-active.b149b19c.svg\";","module.exports = __webpack_public_path__ + \"static/media/message-searchicon.069971f3.svg\";","module.exports = __webpack_public_path__ + \"static/media/table-filter-asc-icon.63b817c4.svg\";","module.exports = __webpack_public_path__ + \"static/media/table-filter-dsc-icon.d22723ca.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter-selected-close-icon.6e2f2ee1.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table\":\"style_table__11_L-\",\"amount\":\"style_amount__1G0PZ\"};","module.exports = __webpack_public_path__ + \"static/media/table-download-icon.7029f12b.svg\";","module.exports = __webpack_public_path__ + \"static/media/mobile-table-arrow.bd710ca6.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_question.ae6ef95f.svg\";","module.exports = \"data:image/png;base64,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\"","import React from 'react';\nimport './spinnerloader.css';\n\nconst SpinnerLoader = ({withoutMargin}) => <div className={`spinner-loader${withoutMargin ? ' without-margin' : ''}`} />;\n\nexport default SpinnerLoader;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport createAuth0Client from \"@auth0/auth0-spa-js\";\nimport SpinnerLoader from \"./components/SpinnerLoader/SpinnerLoader\";\n\nconst DEFAULT_REDIRECT_CALLBACK = () =>\n  window.history.replaceState({}, document.title, window.location.pathname);\n\nexport const Auth0Context = React.createContext();\nexport const useAuth0 = () => useContext(Auth0Context);\nexport const Auth0Provider = ({\n  children,\n  onRedirectCallback = DEFAULT_REDIRECT_CALLBACK,\n  ...initOptions\n}) => {\n  const [isAuthenticated, setIsAuthenticated] = useState();\n  const [user, setUser] = useState();\n  const [auth0Client, setAuth0] = useState();\n  const [loading, setLoading] = useState(true);\n  const [popupOpen, setPopupOpen] = useState(false);\n\n  useEffect(() => {\n    const initAuth0 = async () => {\n      const auth0FromHook = await createAuth0Client(initOptions);\n      setAuth0(auth0FromHook);\n\n      if (\n        window.location.search.includes(\"code=\") &&\n        window.location.search.includes(\"state=\")\n      ) {\n        const { appState } = await auth0FromHook.handleRedirectCallback();\n        onRedirectCallback(appState);\n      }\n\n      const isAuthenticated = await auth0FromHook.isAuthenticated();\n\n      setIsAuthenticated(isAuthenticated);\n\n      if (isAuthenticated) {\n        const user = await auth0FromHook.getUser();\n        setUser(user);\n      }\n\n      setLoading(false);\n    };\n    initAuth0();\n    // eslint-disable-next-line\n  }, []);\n\n  const loginWithPopup = async (params = {}) => {\n    setPopupOpen(true);\n    try {\n      await auth0Client.loginWithPopup(params);\n    } catch (error) {\n      console.error(error);\n    } finally {\n      setPopupOpen(false);\n    }\n    const user = await auth0Client.getUser();\n    setUser(user);\n    setIsAuthenticated(true);\n  };\n\n  const handleRedirectCallback = async () => {\n    setLoading(true);\n    await auth0Client.handleRedirectCallback();\n    const user = await auth0Client.getUser();\n    setLoading(false);\n    setIsAuthenticated(true);\n    setUser(user);\n  };\n  return (\n    <Auth0Context.Provider\n      value={{\n        isAuthenticated,\n        user,\n        loading,\n        popupOpen,\n        loginWithPopup,\n        handleRedirectCallback,\n        getIdTokenClaims: (...p) => auth0Client.getIdTokenClaims(...p),\n        loginWithRedirect: (...p) => auth0Client.loginWithRedirect(...p),\n        getTokenSilently: (...p) => auth0Client.getTokenSilently(...p),\n        getTokenWithPopup: (...p) => auth0Client.getTokenWithPopup(...p),\n        logout: (props) =>\n          auth0Client.logout({ ...props, returnTo: document.location.origin }),\n      }}\n    >\n      {loading && <SpinnerLoader />}\n      {!loading && children}\n    </Auth0Context.Provider>\n  );\n};\n","import { useMutation, useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst CREATE_USER_QUERY = gql`\n  mutation createClient($client: ClientCreateInput!) {\n    createClient(data: $client) {\n      id\n      email\n      mobilePhone\n    }\n  }\n`;\n\nexport function useCreateClient() {\n  const [createClient, { loading, error, data }] = useMutation(\n    CREATE_USER_QUERY\n  );\n\n  return {\n    createClient,\n    loading,\n    error,\n    clientPhone: data ? data.createClient : undefined,\n  };\n}\n\nconst UPDATE_USER_QUERY = gql`\n  mutation updateClient($id: ID!, $client: ClientUpdateInput!) {\n    updateClient(id: $id, data: $client) {\n      id\n      email\n    }\n  }\n`;\n\nexport function useUpdateClient() {\n  const [updateClient, { loading, error, data }] = useMutation(\n    UPDATE_USER_QUERY\n  );\n  return {\n    updateClient,\n    loading,\n    error,\n    client: data ? data.Client : undefined,\n  };\n}\n\nconst GET_CUSTOMER_QUERY = gql`\n  query allClients($where: ClientWhereInput!) {\n    allClients(where: $where) {\n      id\n      email\n      firstName\n      middleName\n      lastName\n      mobilePhone\n      address1\n      address2\n      city\n      state\n      zipcode\n      propertyAddress1\n      propertyAddress2\n      propertyCity\n      propertyState\n      propertyZipcode\n      active\n      updatedAt\n      createdAt\n      ssn\n      tenant {\n        id\n        name\n        tenantGroup {\n          id\n          groupName\n          logoURL\n          groupTagline\n          bannerColor\n        }\n      }\n    }\n  }\n`;\n\nexport function useClient(emailID) {\n  const email = isNil(emailID) || isEmpty(emailID) ? null : emailID;\n  const { loading, error, data, refetch } = useQuery(GET_CUSTOMER_QUERY, {\n    variables: { where: { email: email } },\n  });\n  return {\n    loadingSearch: loading,\n    error,\n    refetch,\n    client: data ? data.allClients[0] : undefined,\n  };\n}\n\nexport function useClientByPhone(mobileNumber) {\n  const phone =\n    isNil(mobileNumber) || isEmpty(mobileNumber) ? '' : mobileNumber;\n  const { loading, error, data, refetch } = useQuery(GET_CUSTOMER_QUERY, {\n    variables: { where: { mobilePhone: phone } },\n  });\n  return {\n    loadingSearch: loading,\n    error,\n    refetch,\n    client: data ? data.allClients[0] : undefined,\n  };\n}\n\nconst GET_ALL_CLIENT_DOCUMENT_QUERY = gql`\n  query allClientDocuments($where: ClientDocumentWhereInput!) {\n    allClientDocuments(where: $where) {\n      id\n      type\n      description\n      filePath\n      fileURL\n      status\n      active\n      transfer {\n        id\n      }\n    }\n  }\n`;\n\nexport function useAllClientDocuments(clientID) {\n  const id = isNil(clientID) || isEmpty(clientID) ? null : clientID;\n  const { loading, error, data, refetch } = useQuery(\n    GET_ALL_CLIENT_DOCUMENT_QUERY,\n    {\n      variables: { where: { client: { id } } },\n    }\n  );\n  return {\n    loadingClientDoc: loading,\n    errorClientDoc: error,\n    refetchClientDoc: refetch,\n    clientDocuments: data ? data.allClientDocuments : [],\n  };\n}\n","import { useMutation, useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst CREATE_TRANSACTION_QUERY = gql`\n  mutation CreateTransfer($transfer: TransferCreateInput!) {\n    createTransfer(data: $transfer) {\n      id\n    }\n  }\n`;\n\nexport function useCreateTransfer() {\n  const [createTransfer, { loading, error, data }] = useMutation(\n    CREATE_TRANSACTION_QUERY\n  );\n  return {\n    createTransfer,\n    loading,\n    error,\n    tenant: data ? data.createTransfer : undefined,\n  };\n}\n\nconst UPDATE_TRANSACTION_QUERY = gql`\n  mutation UpdateTransfer($id: ID!, $transfer: TransferUpdateInput!) {\n    updateTransfer(id: $id, data: $transfer) {\n      id\n    }\n  }\n`;\n\nexport function useSaveTransfer() {\n  const [saveTransfer, { loading, error, data }] = useMutation(\n    UPDATE_TRANSACTION_QUERY\n  );\n  return {\n    saveTransfer,\n    loading,\n    error,\n    transfer: data ? data.Transfer : undefined,\n  };\n}\n\nconst GET_TRANSACTION_QUERY = gql`\n  query Transfer($id: ID!) {\n    Transfer(where: { id: $id }) {\n      id\n      firstName\n      lastName\n      email\n      mobilePhone\n      propertyAddress1\n      propertyAddress2\n      propertyCity\n      propertyState\n      propertyZipcode\n      purpose\n      status\n      amount\n      fee\n      expectedClosingDate\n      notes\n      sellerName\n      transferType {\n        id\n        name\n      }\n      otherIndividuals\n      destBankAccount {\n        id\n      }\n      sourceBankAccount {\n        id\n        bankName\n        description\n        accountNumber\n        accountLastFourDigits\n        bankDisplayName\n        active\n        client {\n          id\n        }\n        updatedAt\n        createdAt\n      }\n      office {\n        id\n        title\n        city\n        state\n      }\n      realtor {\n        id\n        firstName\n        lastName\n        id\n        email\n      }\n    }\n  }\n`;\n\nexport function useTransfer(id) {\n  const { loading, error, refetch, data } = useQuery(GET_TRANSACTION_QUERY, {\n    variables: { id },\n  });\n  return {\n    loadingSearchTransfer: loading,\n    error,\n    refetchTransfer: refetch,\n    transfer: data ? data.Transfer : undefined,\n  };\n}\n\nconst GET_TRANSACTIONS_QUERY = gql`\n  query allTransfers($where: TransferWhereInput!) {\n    allTransfers(where: $where) {\n      id\n      firstName\n      middleName\n      lastName\n      otherIndividuals\n      email\n      mobilePhone\n      propertyAddress1\n      propertyAddress2\n      propertyCity\n      propertyState\n      propertyZipcode\n      amount\n      purpose\n      expectedClosingDate\n      sellerName\n      notes\n      emailMessage\n      status\n      active\n      disbursement\n      sourceBankAccount {\n        id\n        bankName\n        description\n        accountNumber\n        accountLastFourDigits\n        bankDisplayName\n        active\n        client {\n          id\n        }\n        institutionCode\n        updatedAt\n        createdAt\n      }\n      destBankAccount {\n        id\n        bankName\n        description\n        accountNumber\n        institutionCode\n      }\n      office {\n        id\n        title\n      }\n      realtor {\n        firstName\n        lastName\n        id\n        email\n      }\n      updatedAt\n      createdAt\n    }\n  }\n`;\n\nexport function useAllTransfers(transferID) {\n  const id = isNil(transferID) || isEmpty(transferID) ? null : transferID;\n  const { loading, error, data, refetch } = useQuery(GET_TRANSACTIONS_QUERY, {\n    variables: { where: { client: { id } } },\n  });\n  return {\n    loadingSearchTransfer: loading,\n    error,\n    refetchTransfers: refetch,\n    transfers: data ? data.allTransfers : undefined,\n  };\n}\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst GET_ALL_TENANTS_QUERY = gql`\n  query allTenants($where: TenantWhereInput!) {\n    allTenants(where: $where) {\n      id\n      name\n      description\n      identifier\n      type\n      address1\n      address2\n      city\n      state\n      zipcode\n      supportEmail\n      pocPhone\n      routingType\n      tenantGroup {\n        id\n        groupName\n        logoURL\n        groupTagline\n        bannerColor\n      }\n    }\n  }\n`;\n\nexport function useAllTenants(tenantID) {\n  const id = isNil(tenantID) || isEmpty(tenantID) ? null : tenantID;\n  const { loading, error, data, refetch } = useQuery(GET_ALL_TENANTS_QUERY, {\n    variables: { where: { identifier: id } },\n  });\n\n  return {\n    loading,\n    error,\n    refetch,\n    tenant: data ? data.allTenants[0] : undefined,\n  };\n}\n\nconst GET_BRANDINGS_FROM_TENANT_QUERY = gql`\n  query AllBrandings($tenantId: ID!, $active: Boolean) {\n    allBrandings(where: { tenant: { id: $tenantId }, active: $active }) {\n      id\n      description\n      logoURL\n      faviconImgURL\n      backgroundImageURL\n      header\n      footer\n      registerText\n      registerButtonText\n      fontFamily\n      fontSize\n      fontColor\n      fontWeight\n      backgroundColor\n      linkColor\n      buttonColor\n      accentColor\n      customCSS\n      tenant {\n        id\n      }\n    }\n  }\n`;\nexport function useAllBrandingsFromTenant(tenantId, active) {\n  const { loading, error, refetch, data } = useQuery(\n    GET_BRANDINGS_FROM_TENANT_QUERY,\n    {\n      variables: { tenantId, active },\n    }\n  );\n\n  return {\n    loadingBranding: loading,\n    error,\n    refetchBrandings: refetch,\n    branding: data ? data.allBrandings[0] : undefined,\n  };\n}\n\nconst GET_DEFAULT_BRANDING_FROM_TENANT_QUERY = gql`\n  query AllBrandings {\n    allBrandings(where: { default: true }) {\n      id\n      description\n      logoURL\n      backgroundImageURL\n      header\n      footer\n      registerText\n      registerButtonText\n      fontFamily\n      fontSize\n      fontColor\n      fontWeight\n      backgroundColor\n      linkColor\n      buttonColor\n      accentColor\n      customCSS\n      tenant {\n        id\n      }\n    }\n  }\n`;\nexport function useDefaultBrandingFromTenant() {\n  const { loading, error, refetch, data } = useQuery(\n    GET_DEFAULT_BRANDING_FROM_TENANT_QUERY\n  );\n\n  return {\n    loadingDefaultBranding: loading,\n    error,\n    refetchDefaultBranding: refetch,\n    defaultBranding: data ? data.allBrandings[0] : undefined,\n  };\n}\n\nconst GET_ESCROW_ACCOUNTS_FROM_TENANT_QUERY = gql`\n  query ActiveEscrowAccounts($tenantId: ID) {\n    allBankAccounts(\n      where: { tenant: { id: $tenantId }, ownerType: \"tenant\", active: true }\n    ) {\n      id\n      bankName\n      bankDisplayName\n      accountNumber\n      accountLastFourDigits\n      institutionCode\n      balance\n      balanceDateTime\n      active\n    }\n  }\n`;\n\nexport default function useEscrowAccountFromTenant(tenantId) {\n  const { loading, error, refetch, data } = useQuery(\n    GET_ESCROW_ACCOUNTS_FROM_TENANT_QUERY,\n    {\n      variables: { tenantId },\n    }\n  );\n  return {\n    loading,\n    error,\n    refetch,\n    destAccount: data ? data.allBankAccounts[0] : undefined,\n  };\n}\n","import isEmpty from 'lodash/isEmpty';\nimport split from 'lodash/split';\nimport invoke from 'lodash/invoke';\nimport isNull from 'lodash/isNull';\nimport filter from 'lodash/filter';\nimport join from 'lodash/join';\n\nexport const DEFAULT_DATE_FORMAT = 'MM/DD/YY hh:mm A';\n\nexport const asyncWrapper = async promise => {\n  return promise.then(data => [null, data]).catch(err => [err, null]);\n};\n\n/**\n * Takes a transfer object and determines the \"From\" display\n * dangerouslySetInnerHTML\n * @param {*} transfer\n */\nexport const formatFromDisplay = (transfer, format = 'html') => {\n  let primary = [];\n  let secondary = [];\n\n  // FUNDS IN, from = Tenant\n  if (transfer?.transferType?.isDebit) {\n    primary = transfer?.tenant?.name ?? '';\n    secondary = '';\n  }\n  // FUNDS OUT, to = Client\n  else {\n    primary = [\n      transfer?.client?.firstName ?? '',\n      transfer?.client?.lastName ?? '',\n    ]\n      .filter(f => f)\n      .join(' ');\n\n    if (\n      transfer?.sourceBankAccount?.bankName ||\n      transfer?.sourceBankAccount?.accountLastFourDigits\n    ) {\n      secondary = [\n        '(',\n        `${transfer?.sourceBankAccount?.bankName ?? ''} `,\n        `X${transfer?.sourceBankAccount?.accountLastFourDigits || '----'}`,\n        ')',\n      ].join('');\n    } else {\n      secondary = '';\n    }\n  }\n\n  return format === 'html'\n    ? `${primary}<br>${secondary}`\n    : `${primary} ${secondary}`;\n};\n\n/**\n * Takes a transfer object and determines the \"To\" value\n * dangerouslySetInnerHTML\n * @param {*} transfer\n */\nexport const formatToDisplay = (transfer, format = 'html') => {\n  let primary = [];\n  let secondary = [];\n\n  // FUNDS IN, to = Client\n  if (!transfer?.transferType?.isDebit) {\n    primary = [transfer?.tenant?.name ?? ''].filter(f => f).join(' ');\n    secondary = '';\n  }\n  // FUNDS OUT, to = Tenant\n  else {\n    primary = [\n      transfer?.client?.firstName ?? '',\n      transfer?.client?.lastName ?? '',\n    ]\n      .filter(f => f)\n      .join(' ');\n\n    if (\n      transfer?.destBankAccount?.bankName ||\n      transfer?.destBankAccount?.accountLastFourDigits\n    ) {\n      secondary = [\n        '(',\n        `${transfer?.destBankAccount?.bankName ?? ''} `,\n        `X${transfer?.destBankAccount?.accountLastFourDigits || '----'}`,\n        ')',\n      ].join('');\n    } else {\n      secondary = '';\n    }\n  }\n\n  return format === 'html'\n    ? `${primary}<br>${secondary}`\n    : `${primary} ${secondary}`;\n};\n\n/**\n * The notes property in transfers MIGHT BE stringified JSON and we need to extract the note property from it\n * e.g., [{\"createdAt\":\"12/01/20 11:31 AM\",\"createdBy\":\"someone@somedomain.com\",\"note\":\"foo bar baz note\"}]\n * @param {*} json\n */\nexport const extractNotesFromJson = possibleJsonString => {\n  try {\n    const obj = JSON.parse(possibleJsonString);\n    if (obj[0] && obj[0]?.note) {\n      return obj[0]?.note;\n    }\n    return '';\n  } catch (e) {\n    return possibleJsonString ? possibleJsonString : '';\n  }\n};\n\nexport const getQueryVariable = (query, variable, splitSymbol = '&') => {\n  if (!isEmpty(query)) {\n    const vars = split(query, splitSymbol);\n    for (let i = 0; i < vars.length; i++) {\n      const pair = vars[i].split('=');\n      if (pair[0] === variable) {\n        return pair[1];\n      }\n    }\n  }\n  return null;\n};\n\nconst getAddressComponentByType = (components = [], type, path = 'long_name') =>\n  (components.find(component => component.types.includes(type)) || {})[path] ||\n  '';\n\nexport function getAddressFromPlaceDetails({\n  address_components: addressComponents = {},\n  geometry = {},\n} = {}) {\n  const getComponent = (type, path) =>\n    getAddressComponentByType(addressComponents, type, path);\n\n  const streetNumber = getComponent('street_number');\n  const streetName = getComponent('route');\n  const neighborhood = getComponent('neighborhood');\n\n  return {\n    address: `${streetNumber} ${streetName}`.trim(),\n    streetNumber,\n    streetName,\n    neighborhood,\n    zipcode: getComponent('postal_code'),\n    city:\n      getComponent('locality') ||\n      getComponent('sublocality') ||\n      neighborhood ||\n      getComponent('administrative_area_level_3') ||\n      getComponent('administrative_area_level_2'),\n    state: `${getComponent('administrative_area_level_1', 'short_name')}`,\n    country: getComponent('country'),\n    lat: invoke(geometry, 'location.lat'),\n    lng: invoke(geometry, 'location.lng'),\n  };\n}\n\nexport const filterNotNull = list =>\n  filter(list, item => (!isNull(item) ? item !== '' : false));\n\nexport const formatAddressStreetApartment = (\n  streetNumberName,\n  apartmentSuiteNumber,\n  withSymbol = true\n) => {\n  const formatAddress = filterNotNull([streetNumberName, apartmentSuiteNumber]);\n  if (withSymbol) {\n    return join(formatAddress, ', #');\n  }\n  return join(formatAddress, ', ');\n};\n\nexport const formatAddressCityStateZipCode = (city, state, zipcode) => {\n  const formatAddress = filterNotNull([city, state]);\n  const formatZipCode = !isNull(zipcode) ? ` ${zipcode}` : '';\n  return `${join(formatAddress, ', ')}${formatZipCode}`;\n};\n\nexport const formatDayFromUTC = date => {\n  const newDate = split(date, /[-,T]/);\n  const day = newDate[2];\n  const month = newDate[1];\n  const year = newDate[0];\n  return `${year}-${month}-${day}`;\n};\nexport const setClientStore = client => {\n  return sessionStorage.setItem('client', JSON.stringify(client));\n};\nexport const getClientStore = () => {\n  const client = sessionStorage.getItem('client');\n  return client ? { user: JSON.parse(client) } : { user: undefined };\n};\nexport const setRealtorStore = realtor => {\n  return sessionStorage.setItem('realtor', JSON.stringify(realtor));\n};\nexport const getRealtorStore = () => {\n  const realtor = sessionStorage.getItem('realtor');\n  return realtor ? { realtor: JSON.parse(realtor) } : { realtor: undefined };\n};\n\nexport const clearStore = () => {\n  return sessionStorage.clear();\n};\nexport const setItem = (key, value) => {\n  sessionStorage.setItem(key, value);\n};\nexport const getItem = key => {\n  return { value: sessionStorage.getItem(key) };\n};\nexport const removeItem = key => {\n  sessionStorage.removeItem(key);\n};\n\nexport const getTenantIdentifier = hostname => {\n  const [identifier] = hostname.split('.');\n  return identifier ? identifier : null;\n};\n\nexport const paymintsCurrencyFormatter = (\n  value,\n  decimals = 2,\n  style = 'currency',\n  fallback = '$0.00'\n) => {\n  const formatter = new Intl.NumberFormat('en-US', {\n    style: style,\n    currency: 'USD',\n    minimumFractionDigits: decimals,\n    maximumFractionDigits: decimals,\n  });\n\n  const numeric = +value;\n  if (numeric) {\n    if (numeric < 0) {\n      return ['(', formatter.format(numeric), ')'].join('');\n    }\n    return formatter.format(numeric);\n  }\n  return fallback;\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from \"paymints-address-autocomplete-field\";\nimport { withRouter } from \"react-router-dom\";\nimport { getClientStore } from \"../../utils/util\";\nimport \"./boxContainer.css\";\nimport split from \"lodash/split\";\nimport get from \"lodash/get\";\nimport {\n  useAllTenants,\n  useAllBrandingsFromTenant,\n  useDefaultBrandingFromTenant,\n} from \"../../utils/service/service_tenant_api\";\nimport { getQueryVariable } from \"../../utils/util\";\n\nconst createLogButton = (user, brandLogo, history, showLogin) => (\n  <div className=\"paymints__box-container__logo-login-flexbox\">\n    <Logo brandLogo={brandLogo} />\n    <div className=\"paymints__box-container__log-buttons\">\n      {!user && !showLogin && (\n        <PaymintsButton\n          className=\"box-container__button-log\"\n          onClick={() => history.push(\"/login\")}\n          noShadow\n          type={BUTTON_TYPE.INVERSE_BLUE}\n        >\n          {\"Login\"}\n        </PaymintsButton>\n      )}\n    </div>\n  </div>\n);\nconst Logo = (props) => {\n  const mobile = window.screen.width < 1200;\n  return (\n    <div className=\"paymints__box-container__logo-contaner\">\n      <img\n        src={props.brandLogo}\n        className=\"paymints__box-container__brand_logo\"\n        alt=\"\"\n        hidden={mobile}\n      />\n      <img\n        src={props.brandLogo}\n        className=\"paymints__box-container__brand_logo\"\n        alt=\"\"\n        hidden={!mobile}\n      />\n    </div>\n  );\n};\n\nconst BoxContainer = ({\n  children,\n  className = \"\",\n  color = \"default\",\n  withBorder = true,\n  withDoubleBorder = false,\n  withLogButton = false,\n  widest = false,\n  internalBox = false,\n  history,\n  showLogin = false,\n}) => {\n  const { user } = getClientStore();\n  const tenantIdentifier = split(window.location.hostname, \".\")[0];\n  const { tenant } = useAllTenants(tenantIdentifier);\n  const { branding } = useAllBrandingsFromTenant(get(tenant, \"id\", \"\"), true);\n  const { defaultBranding } = useDefaultBrandingFromTenant();\n  const brandLogo = branding\n    ? get(branding, \"logoURL\")\n    : get(defaultBranding, \"logoURL\");\n  const path = window.location.search.split(\"?\")[2];\n  const selectedTab = getQueryVariable(path, \"disbursement\") || null;\n  const classNameBox = classNames(\n    `paymints__box-container paymints__box-container${\n      internalBox ? \"__internal\" : \"\"\n    }--${color} ${className}`,\n    {\n      \"with-border\": withBorder,\n    }\n  );\n  const classNameContainer = classNames(\n    `paymints__box-container__container paymints__box-container__box-shadow--default`,\n    {\n      widest: widest,\n    }\n  );\n\n  if (withDoubleBorder) {\n    return (\n      <>\n        <div className={classNameContainer}>\n          <div className=\"paymints__box-container__steps\" hidden={!selectedTab}>\n            <div className=\"tabs active\">Select a Bank Account</div>\n            <div\n              className={`tabs ${\n                selectedTab === \"payment\" || selectedTab === \"success\"\n                  ? \"active\"\n                  : \"\"\n              }`}\n            >\n              Accept Your Payment\n            </div>\n            <div\n              className={`tabs ${selectedTab === \"success\" ? \"active\" : \"\"}`}\n            >\n              Success\n            </div>\n          </div>\n          <div className=\"paymints__box-container__box-shadow\">\n            {withLogButton &&\n              createLogButton(user, brandLogo, history, showLogin)}\n            <div className={classNameBox}>{children}</div>\n          </div>\n        </div>\n      </>\n    );\n  }\n\n  return (\n    <div className={classNameBox}>\n      <div>\n        {withLogButton && createLogButton(user, brandLogo, history, showLogin)}\n        {children}\n      </div>\n    </div>\n  );\n};\n\nexport default withRouter(BoxContainer);\n","export default function updateAction(state, payload) {\n    return {\n        ...state,\n        data: {\n            ...state.data,\n            ...payload\n        }\n    };\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport \"./errorMessageInput.css\";\n\nclass ErrorMessageInput extends Component {\n    render() {\n        const { className, children } = this.props;\n        const classNameContainer = classNames(\"error-message-input__container\", className, {})\n        \n        return (\n            <div className={classNameContainer}>\n                {children}\n            </div>\n        );\n    }\n}\n\nErrorMessageInput.propTypes = {\n    children: PropTypes.any,\n    className: PropTypes.string,\n};\n\nErrorMessageInput.defaultProps = {\n    className: '',\n};\n\nexport default ErrorMessageInput;","const APIDomain = process.env.REACT_APP_BASE_SERVICE_URL;\n\nexport default APIDomain;\n","import axios from 'axios';\nimport APIDomain from '../apiSettings';\n\naxios.defaults.baseURL = APIDomain;\n\nexport const plaidCreateClient = data =>\n  axios({\n    method: 'post',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: '/account/auth/create-client',\n    data: data,\n  }).then(response => {\n    return response.data;\n  });\n\nexport const plaidStartMicrodepoits = (data, tenantID) => {\n  data.tenantId = tenantID;\n  return axios({\n    method: 'post',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: '/account/microdeposit/start',\n    data: data,\n  }).then(response => {\n    window.location.reload();\n    return response.data;\n  });\n};\n\nexport const startDwolla = (data, config) => {\n  let url = '/transfer/start';\n\n  if (config?.type === 'disbursement') {\n    url = '/transfer/disbursement/start';\n  }\n\n  /**\n   * slight change in data payload\n   * was:\n   * {\n   *  destBankAccountId: data.destBankAccountId,\n   *  sourceBankAccountId: data.sourceBankAccountId,\n   *  transferId: data.transferId,\n   * }\n   * now \"sourceBankAccountId\" needs to be just \"bankAccountId\" <= this is NOT correct... bankAccountId === client/vendor bank account\n   * please read updated transfer service documentation here: https://github.com/lemonbrew/paymints-transfer-service\n   * let me know if you have any questsions - doug\n   */\n  return axios({\n    method: 'post',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url,\n    data: {\n      bankAccountId: data.sourceBankAccountId,\n      // bankAccountId: data.destBankAccountId,\n      transferId: data.transferId,\n    },\n  });\n};\n\nexport const getBankAccounts = clientId =>\n  axios({\n    method: 'get',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: `/account/client-accounts/${clientId}`,\n  }).then(response => {\n    return response.data;\n  });\n\nexport const disconnectBankAccount = clientId =>\n  axios({\n    method: 'delete',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: `/account`,\n    data: clientId,\n  }).then(response => {\n    console.log(response.data);\n  });\n// .then(response => response.data)\n\nexport const uploadDocument = form =>\n  axios({\n    method: 'post',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: `/assets/private/`,\n    data: form,\n  }).then(response => response.data);\n\nexport const saveTransferDoc = (transferId, data) =>\n  axios({\n    method: 'post',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: `/account/document/${transferId}`,\n    data: data,\n  }).then(response => response.data);\n\n/**\n *\n * @param {*} data {TRANSFER_GUID: string, emailRecipients: Array<String>, transfer.transferType.name: string}\n */\n\nexport const sendEmailReceipt = async data => {\n  let type = data.transfer.transferType.name;\n  let route;\n\n  try {\n    if (type === 'Client Disbursement') {\n      route = `/message/email/disbursement-initiated-client`;\n    } else if (type === 'Client Transfer') {\n      route = `/message/email/transfer-initiated`;\n    }\n    let response = await axios({\n      method: 'post',\n      headers: {\n        'Content-Type': 'application/json',\n        Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n      },\n      url: route,\n      data: {\n        transfer_GUID: data.TRANSFER_GUID,\n        emailRecipient: data.additionalEmailRecipient,\n        additionalEmailRecipient: true,\n      },\n    });\n    return response;\n  } catch (error) {\n    throw error;\n  }\n};\n\nexport const updateAuth0User = (tenantID, data) =>\n  axios({\n    method: 'post',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: `/users/${tenantID}`,\n    data: data,\n  })\n    .then(response => response.data)\n    .catch(() => ({ error: true }));\n\nexport const getSMSCode = (tenant_GUID, client_GUID) =>\n  axios({\n    method: 'get',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: `/users/resend/${tenant_GUID}/${client_GUID}`,\n  }).then(response => response.data);\n\nexport const validateSMSCode = (tenant_GUID, client_GUID, code) =>\n  axios({\n    method: 'get',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url: `/users/${tenant_GUID}/${client_GUID}/${code}`,\n  })\n    .then(response => response.data)\n    .catch(() => {\n      return { error: true };\n    });\n\nexport const saveSensitiveData = async (client_GUID, tenant_GUID, data) => {\n  try {\n    axios({\n      method: 'put',\n      headers: {\n        'Content-Type': 'application/json',\n        Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n      },\n      url: `/security/customer/${client_GUID}/${tenant_GUID}`,\n      data: data,\n    });\n  } catch (error) {\n    console.log(error);\n    return { error: true };\n  }\n};\n\nexport const getSensitiveData = async (client_GUID, tenant_GUID) => {\n  let response;\n  try {\n    response = await axios({\n      method: 'get',\n      headers: {\n        'Content-Type': 'application/json',\n        Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n      },\n      url: `/security/customer/${client_GUID}/${tenant_GUID}`,\n    });\n  } catch (error) {\n    console.log(error);\n  }\n\n  return response?.data;\n};\n","/**\n * @deprecated\n */\nexport const filterList = [\n  {\n    messageType: \"transfer_request\",\n    value: \"Transfer Request\",\n    isChecked: false,\n  },\n  {\n    messageType: \"transfer_receipt\",\n    value: \"Transfer Receipt\",\n    isChecked: false,\n  },\n  { messageType: \"transfer_fail\", value: \"Transfer Fail\", isChecked: false },\n  {\n    messageType: \"transfer_initiated\",\n    value: \"Transfer Initiated\",\n    isChecked: false,\n  },\n];\nexport const messageKey = {\n  transfer_request: \"Transfer Request\",\n  transfer_receipt: \"Transfer Receipt\",\n  transfer_fail: \"Transfer Fail\",\n  transfer_initiated: \"Transfer Initiated\",\n};\n\nexport const request = [\n  { messageType: \"transfer_request\" },\n  { messageType: \"transfer_receipt\" },\n  { messageType: \"transfer_fail\" },\n  { messageType: \"transfer_initiated\" },\n];\n","import * as APIUtil from '../../utils/service/service_api';\nimport * as actionType from './AccountActionTypes';\nimport get from 'lodash/get';\nimport { messageKey } from '../../components/MessageCenter/mock-data';\n\nexport const getPlaidCreateClientFetch = () => ({\n  type: actionType.PLAID_CREATE_CUSTOMER_FETCH,\n});\n\nexport const getPlaidCreateClientSuccess = response => ({\n  type: actionType.PLAID_CREATE_CUSTOMER_SUCCESS,\n  payload: { response },\n});\n\nexport const getPlaidCreateClientError = response => ({\n  type: actionType.PLAID_CREATE_CUSTOMER_ERROR,\n  payload: { response },\n});\n\nexport const getPlaidCreateClient = data => dispatch => {\n  dispatch(getPlaidCreateClientFetch());\n  return APIUtil.plaidCreateClient(data)\n    .then(response => {\n      dispatch(getPlaidCreateClientSuccess(response));\n      return response;\n    })\n    .catch(error => {\n      const errorElement = get(error, 'response.data');\n      const message =\n        get(errorElement, 'error.body.message') ||\n        get(errorElement, 'message') ||\n        get(errorElement, 'error_message') ||\n        'Something went wrong... please try again in a few minutes';\n      dispatch(getPlaidCreateClientError(message));\n      return { error: true, message: message };\n    });\n};\n\nexport const getPlaidStartMicrodepoits = (data, tenantID) => dispatch => {\n  return APIUtil.plaidStartMicrodepoits(data, tenantID)\n    .then(response => {\n      return response;\n    })\n    .catch(error => {\n      const errorElement = get(\n        error,\n        'response.data getPlaidStartMicrodepoits'\n      );\n      const message =\n        get(errorElement, 'error.body.message') ||\n        get(errorElement, 'message') ||\n        get(errorElement, 'error_message') ||\n        'Something went wrong... please try again in a few minutes';\n      return { error: true, message: message };\n    });\n};\n\nexport const getPlaidVerifyMicrodepoits = data => dispatch => {\n  return APIUtil.plaidStartMicrodepoits(data)\n    .then(response => {\n      return response;\n    })\n    .catch(error => {\n      const errorElement = get(\n        error,\n        'response.data getPlaidVerifyMicrodepoits'\n      );\n      const message =\n        get(errorElement, 'error.body.message') ||\n        get(errorElement, 'message') ||\n        get(errorElement, 'error_message') ||\n        'Something went wrong... please try again in a few minutes';\n\n      return { error: true, message: message };\n    });\n};\n\nexport const getBankAccountsFetch = () => ({\n  type: actionType.GET_BANK_ACCOUNTS_FETCH,\n});\n\nexport const getBankAccountsSuccess = response => ({\n  type: actionType.GET_BANK_ACCOUNTS_SUCCESS,\n  payload: { response },\n});\n\nexport const getBankAccountsError = response => ({\n  type: actionType.GET_BANK_ACCOUNTS_ERROR,\n  payload: { response },\n});\n\nexport const getClientAccounts = id => dispatch => {\n  if (id !== undefined) {\n    dispatch(getBankAccountsFetch());\n    return APIUtil.getBankAccounts(id)\n      .then(response => {\n        dispatch(getBankAccountsSuccess(response));\n        return response;\n      })\n      .catch(error => {\n        const errorElement = get(error, 'response.data');\n        const message =\n          get(errorElement, 'error.body.message') ||\n          get(errorElement, 'message') ||\n          get(errorElement, 'error_message') ||\n          'Something went wrong... please try again in a few minutes';\n        dispatch(getBankAccountsError(message));\n        return { error: true, message: message };\n      });\n  } else {\n    return null;\n  }\n};\n\nexport const disconnectBankAccountFetch = () => ({\n  type: actionType.DELETE_BANK_ACCOUNT_FETCH,\n});\n\nexport const disconnectBankAccountSuccess = response => ({\n  type: actionType.DELETE_BANK_ACCOUNT_SUCCESS,\n  payload: { response },\n});\n\nexport const disconnectBankAccountError = () => ({\n  type: actionType.DELETE_BANK_ACCOUNT_ERROR,\n});\n\nexport const disconnectBankAccount = id => dispatch => {\n  dispatch(disconnectBankAccountFetch());\n  return APIUtil.disconnectBankAccount(id)\n    .then(response => {\n      dispatch(disconnectBankAccountSuccess(response));\n      return response;\n    })\n    .catch(error => {\n      const errorElement = get(error, 'response.data');\n      const message =\n        get(errorElement, 'error.body.message') ||\n        get(errorElement, 'message') ||\n        get(errorElement, 'error_message') ||\n        'Something went wrong... please try again in a few minutes';\n      dispatch(disconnectBankAccountError());\n      return { error: true, message: message };\n    });\n};\n\nexport const updateAuth0UserFetch = () => ({\n  type: actionType.UPDATE_AUTH0_FETCH,\n});\n\nexport const updateAuth0UserSuccess = response => ({\n  type: actionType.UPDATE_AUTH0_SUCCESS,\n  payload: { response },\n});\n\nexport const updateAuth0User = (tenantId, data) => dispatch => {\n  dispatch(updateAuth0UserFetch());\n  return APIUtil.updateAuth0User(tenantId, data).then(response => {\n    dispatch(updateAuth0UserSuccess(response));\n    if (get(response, 'error')) {\n      return 'error';\n    }\n    return response;\n  });\n};\n","export const PLAID_CREATE_CUSTOMER_FETCH = \"PLAID_CREATE_CUSTOMER_FETCH\";\nexport const PLAID_CREATE_CUSTOMER_SUCCESS = \"PLAID_CREATE_CUSTOMER_SUCCESS\";\nexport const PLAID_CREATE_CUSTOMER_ERROR = \"PLAID_CREATE_CUSTOMER_ERROR\";\nexport const GET_BANK_ACCOUNTS_FETCH = \"GET_BANK_ACCOUNTS_FETCH\";\nexport const GET_BANK_ACCOUNTS_SUCCESS = \"GET_BANK_ACCOUNTS_SUCCESS\";\nexport const GET_BANK_ACCOUNTS_ERROR = \"GET_BANK_ACCOUNTS_ERROR\";\nexport const DELETE_BANK_ACCOUNT_FETCH = \"DELETE_BANK_ACCOUNT_FETCH\";\nexport const DELETE_BANK_ACCOUNT_SUCCESS = \"DELETE_BANK_ACCOUNT_SUCCESS\";\nexport const DELETE_BANK_ACCOUNT_ERROR = \"DELETE_BANK_ACCOUNT_ERROR\";\nexport const UPDATE_AUTH0_FETCH = \"UPDATE_AUTH0_FETCH\";\nexport const UPDATE_AUTH0_SUCCESS = \"UPDATE_AUTH0_SUCCESS\";\n","import React from 'react';\nimport MaskedInput from 'react-text-mask'\n\nconst phoneMask = ['(', /\\d/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d?/];\nconst codeMask = [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default ({ ...props }) => {\n    const handleChange = (e) => props.onChange(`${e.target.value}`.replace(/[^\\d]/g, \"\"));\n    return (\n        <MaskedInput\n            mask={phoneMask}\n            {...props}\n            onChange={handleChange}\n        />\n    );\n};\nexport const VerificationCode = ({ ...props }) => {\n    const handleChange = (e) => props.onChange(`${e.target.value}`.replace(/[^\\d]/g, \"\"));\n    return (\n        <MaskedInput\n            mask={codeMask}\n            {...props}\n            onChange={handleChange}\n        />\n    );\n};","import React, { useState } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport { connect } from 'react-redux';\nimport { useCreateClient } from '../../utils/service/service_user_api';\nimport { setItem, removeItem } from '../../utils/util';\nimport { withRouter, Link } from 'react-router-dom';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { updateAuth0User } from '../../reducers/account/AccountActions';\nimport PhoneField from '../PhoneField/PhoneField';\nimport Warning from '../../styles/assets/warning.png';\nimport Phone from '../../styles/assets/phone.png';\nimport linkIcon from '../../styles/assets/external-link-icon.svg';\nimport * as APIUtil from '../../utils/service/service_api';\n\nimport '../CreateAccountWizard/createAccount.css';\n\n\nconst Title = () => <div className=\"create-account__line-container\"></div>;\n\nconst InfoCreateAccount = ({ introductoryText }) => {\n  const organization = 'Paymints';\n  return (\n    <div className=\"create-account__line-container\">\n      <div className=\"create-account__title\">\n        {introductoryText\n          ? introductoryText\n          : `To create an account and transfer money to ${organization}, please confirm the following details. All fields are required.`}\n      </div>\n    </div>\n  );\n};\n\nconst FieldsPersonalInformation = ({\n  client,\n  register,\n  errors,\n  setValue,\n  watch,\n  control,\n}) => {\n  return (\n    <BoxContainer withBorder internalBox>\n      <div className=\"create-account__register-name\">\n        <div className=\"form-group create-account__name\">\n          <label>First Name</label>\n          <input\n            type=\"text\"\n            id=\"firstName\"\n            name=\"firstName\"\n            className=\"create-account__input form-control\"\n            placeholder=\" \"\n            autoComplete=\"no\"\n            ref={register({ required: true, maxLength: 50 })}\n          />\n          {errors.firstName && errors.firstName.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n          {errors.firstName && errors.firstName.type === 'maxLength' && (\n            <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n          )}\n        </div>\n        <div className=\"form-group create-account__name-middle\">\n          <label>Middle Name</label>\n          <input\n            type=\"text\"\n            id=\"middleName\"\n            name=\"middleName\"\n            className=\"create-account__input form-control\"\n            placeholder=\" \"\n            autoComplete=\"no\"\n            ref={register}\n          />\n        </div>\n        <div className=\"form-group create-account__name\">\n          <label>Last Name</label>\n          <input\n            type=\"text\"\n            id=\"lastName\"\n            name=\"lastName\"\n            className=\"create-account__input form-control\"\n            placeholder=\" \"\n            autoComplete=\"no\"\n            ref={register({ required: true, maxLength: 50 })}\n          />\n          {errors.lastName && errors.lastName.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n          {errors.lastName && errors.lastName.type === 'maxLength' && (\n            <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n          )}\n        </div>\n      </div>\n      <div className=\"create-account__warning-conatiner\">\n        <img src={Warning} className=\"create-account__warning-icon\" alt=\"\" />\n        <div className=\"create-account__warning-text\">\n          Must match your driver's license or government-issued ID.\n        </div>\n      </div>\n    </BoxContainer>\n  );\n};\n\nconst PersonalInformation = ({\n  client,\n  watch,\n  register,\n  errors,\n  setValue,\n  control,\n}) => (\n  <div className=\"create-account__information-container\">\n    <div className=\"create-account__title-information\">\n      Personal Information\n    </div>\n    <FieldsPersonalInformation\n      client={client}\n      register={register}\n      errors={errors}\n      setValue={setValue}\n      control={control}\n      watch={watch}\n    />\n  </div>\n);\n\nconst FieldsContactInformation = ({ errors, control }) => (\n  <BoxContainer withBorder internalBox>\n    <div className=\"form-group\">\n      <div className=\"form-group create-account__name create-account__fullwidth\">\n        <div className=\"create-account__phone-section\">\n          <div className=\"create-account__phone-label\">Mobile Phone</div>\n          <div className=\"create-account__phone-text\">\n            We will send a security code to your mobile phone for account\n            verification.\n          </div>\n        </div>\n        <Controller\n          as={PhoneField}\n          control={control}\n          name=\"phone_number\"\n          placeholder=\" \"\n          className=\"create-account__input form-control create-account__width\"\n          rules={{ required: true }}\n        />\n        {errors.phone_number && errors.phone_number.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n      </div>\n      <div className=\"create-account__warning-conatiner\">\n        <img src={Phone} className=\"create-account__warning-icon\" alt=\"\" />\n        <div className=\"create-account__warning-text\">\n          Standard text messaging and provider rates may apply.\n        </div>\n      </div>\n    </div>\n  </BoxContainer>\n);\n\nconst ContactInformation = ({ client, errors, control }) => {\n  const email = get(client, 'email');\n  return email ? null : (\n    <div className=\"create-account__information-container\">\n      <div className=\"create-account__title-information\">\n        Contact Information\n      </div>\n      <FieldsContactInformation errors={errors} control={control} />\n    </div>\n  );\n};\n\nconst FooterInformation = ({ setDisabled }) => (\n  <div className=\"create-account__information-container-footer-register\">\n    <span>\n      <input\n        type=\"checkbox\"\n        className=\"form-group\"\n        onChange={e => setDisabled(!e.target.checked)}\n      />{' '}\n    </span>{' '}\n    {'By clicking Create Account, you agree to CertifID, Inc. '}\n    <a\n      href=\"https://www.certifid.com/company/terms-of-service\"\n      rel=\"noopener noreferrer\"\n      className=\"paymints__link\"\n    >\n      Terms of Service{' '}\n      <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />{' '}\n    </a>\n    {' and '}\n    <a\n      href=\"https://www.certifid.com/company/privacy-policy\"\n      rel=\"noopener noreferrer\"\n      className=\"paymints__link nowrap\"\n    >\n      Privacy Policy{' '}\n      <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n    </a>\n    {' as well as our partner'} Dwolla's\n    <a\n      href=\"https://www.dwolla.com/legal/dwolla-account-terms-of-service/\"\n      rel=\"noopener noreferrer\"\n      className=\"paymints__link\"\n    >\n      {' '}\n      Terms of Service{' '}\n      <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n    </a>{' '}\n    and{' '}\n    <a\n      href=\"https://www.dwolla.com/legal/privacy/\"\n      rel=\"noopener noreferrer\"\n      className=\"paymints__link\"\n    >\n      Privacy Policy.\n      <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n    </a>\n  </div>\n);\n\nconst nextStep = history => {\n  history.push(`/create-account/step-2${get(history, 'location.search')}`);\n};\n\nconst FirstStep = props => {\n  const { beforeContinue, onUpdateAuth0User, refetchNewClient } = props;\n  const { register, handleSubmit, errors, watch, setValue, control } = useForm({\n    defaultValues: props.client,\n  });\n  const { createClient } = useCreateClient();\n  const { action } = useStateMachine(updateAction);\n  const [error, onSetError] = useState({\n    active: false,\n    type: '',\n    messageError: '',\n  });\n  const [disabled, setDisabled] = useState(true);\n  const onSubmit = newUser => {\n    removeItem('login_user');\n    onSetError({ active: false, type: '', messageError: '' });\n    const email = get(props.user, 'email')\n      ? get(props.user, 'email')\n      : `${newUser.phone_number}@paymints.io`;\n    const tenantId = get(props, 'tenant.id');\n    if (isEmpty(tenantId))\n      onSetError({\n        active: true,\n        messageError: 'Tenant not found, please check url',\n      });\n    if (email && !isEmpty(tenantId)) {\n      const { phone_number } = newUser;\n      // Search for all clients with that email\n      refetchNewClient({ where: { mobilePhone: '+1' + phone_number } }).then(\n        response => {\n          const client = get(response, 'data.allClients')[0];\n          delete newUser.phone_number;\n          if (!client) {\n            let clientData = {};\n            // Create a new client\n            createClient({\n              variables: {\n                client: {\n                  ...newUser,\n                  email: '',\n                  mobilePhone: '+1' + phone_number,\n                  tenant: {\n                    connect: {\n                      id: tenantId,\n                    },\n                  },\n                },\n              },\n            })\n              .then(res => {\n                clientData = res.data.createClient;\n                beforeContinue();\n              })\n              .then(() => {\n                // Create Auth0 client\n                const userEmail = get(props.user, 'email');\n                if (!userEmail) {\n                  const auth0User = {\n                    email: email,\n                    phone_number: `+1${phone_number}`,\n                    name: `${newUser.firstName} ${newUser.lastName}`,\n                    connection: 'sms',\n                  };\n                  const auth0Payload = {\n                    create_user: auth0User,\n                    role: 'paymints_admin',\n                    new_user_role: 'paymints_client',\n                  };\n\n                  onUpdateAuth0User(tenantId, auth0Payload)\n                    .then(response => {\n                      if (response === 'error') {\n                        onSetError({\n                          active: true,\n                          messageError:\n                            'Account exists for phone number.  Please login in.',\n                        });\n                      } else {\n                        getCode(tenantId, clientData.id, clientData);\n                      }\n                    })\n                    .then(() => {\n                      action(newUser);\n                    });\n                } else {\n                  action(newUser);\n                  nextStep(props.history);\n                }\n              });\n          } else {\n            onSetError({ active: true, type: 'sms' });\n            setItem('login_user', 'existing_user');\n          }\n        }\n      );\n    }\n  };\n  const getCode = (tenantId, clientid, client) => {\n    APIUtil.getSMSCode(tenantId, clientid).then(\n      () => {\n        props.history.push('/create-account/account-verification', { client });\n      },\n      error => {\n        console.log(error);\n      }\n    );\n  };\n\n  return (\n    <BoxContainer withDoubleBorder withLogButton brandLogo>\n      <Title />\n      <InfoCreateAccount introductoryText={props.introductoryText} />\n      <form onSubmit={handleSubmit(onSubmit)}>\n        <PersonalInformation\n          client={props.client}\n          register={register}\n          errors={errors}\n          setValue={setValue}\n          watch={watch}\n          control={control}\n        />\n        <ContactInformation\n          client={props.client}\n          errors={errors}\n          control={control}\n        />\n        <FooterInformation setDisabled={setDisabled} />\n        <div className=\"create-account__footer-buttons center\">\n          <PaymintsButton\n            htmlType=\"submit\"\n            className=\"create-account__button\"\n            type={BUTTON_TYPE.INVERSE_BLUE}\n            disabled={disabled}\n          >\n            <div className=\"create-account__button-text\">\n              {props.registerButtonText\n                ? props.registerButtonText === 'Register!'\n                  ? 'Create Account'\n                  : props.registerButtonText\n                : 'Create Account'}\n            </div>\n          </PaymintsButton>\n          {error.active && (\n            <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n          )}\n          {error.active && error.type === 'sms' && (\n            <ErrorMessageInput>\n              Account exists for phone number. Please{' '}\n              <Link to=\"/login\">login</Link>\n            </ErrorMessageInput>\n          )}\n          <div>\n            {' '}\n            Already registered? Click to{' '}\n            <span\n              className=\"create-account__paymints-link\"\n              onClick={() => props.history.push('/login')}\n            >\n              log in\n            </span>{' '}\n          </div>\n        </div>\n      </form>\n    </BoxContainer>\n  );\n};\n\nexport default withRouter(\n  connect(state => ({}), {\n    onUpdateAuth0User: updateAuth0User,\n  })(FirstStep)\n);\n","import React, { useState } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport { withRouter, useHistory } from 'react-router-dom';\nimport { useForm } from 'react-hook-form';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport get from 'lodash/get';\nimport * as APIUtil from '../../utils/service/service_api';\nimport { setClientStore } from '../../utils/util';\n\nconst CreateAccountVerificationStep = props => {\n  const history = useHistory();\n  const tenantId = get(props, 'tenant.id');\n  const { client } = props.history.location.state;\n  const { handleSubmit, errors, register } = useForm();\n  const [isError, setError] = useState(false);\n\n  const onSubmit = verificationCode => {\n    setError(false);\n    const { code } = verificationCode;\n    APIUtil.validateSMSCode(tenantId, client.id, code).then(res => {\n      setError(res['error'] === true);\n      if (!res['error']) {\n        setClientStore(client);\n        if (client.email) {\n          history.push('/transfer-history');\n        } else {\n          history.push('/create-account/step-2');\n        }\n      }\n    });\n  };\n  const reSendCode = () => {\n    getCode(tenantId, client.id);\n  };\n  const getCode = (tenantId, clientid) => {\n    APIUtil.getSMSCode(tenantId, clientid).then(res => {\n      return res;\n    });\n  };\n\n  return (\n    <BoxContainer widest withLogButton withDoubleBorder showLogin={true}>\n      <form onSubmit={handleSubmit(onSubmit)}>\n        <div className=\"create-account__line-container\">\n          <div className=\"create-account__title\">\n            Now all you need to do is check your phone.\n          </div>\n        </div>\n        <div className=\"create-account__subtitle-information\">\n          A text message with a 6-digit verification code has been sent to your\n          mobile phone.\n        </div>\n        <BoxContainer withBorder internalBox>\n          <div className=\"form-group\">\n            <label>Enter Code</label>\n            <div className=\"form-group create-account__name-middle\">\n              <input\n                type=\"number\"\n                autoComplete=\"no\"\n                name=\"code\"\n                placeholder=\" \"\n                onKeyUp={() => setError(false)}\n                className=\"create-account__input form-control\"\n                ref={register({\n                  required: true,\n                  validate: value => value.length > 5,\n                })}\n              />\n              {errors.code && errors.code.type === 'required' && (\n                <ErrorMessageInput>This is required</ErrorMessageInput>\n              )}\n              {errors.code && errors.code.type === 'validate' && (\n                <ErrorMessageInput>Code must be 6 digits</ErrorMessageInput>\n              )}\n              {isError && <ErrorMessageInput>Invalid Code</ErrorMessageInput>}\n            </div>\n          </div>\n        </BoxContainer>\n        <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n          <PaymintsButton\n            className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n            noShadow\n            type={BUTTON_TYPE.INVERSE_BLUE}\n            htmlType=\"submit\"\n          >\n            Verify\n          </PaymintsButton>\n          <PaymintsButton\n            className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n            noShadow\n            type={BUTTON_TYPE.LINK}\n            onClick={reSendCode}\n          >\n            Resend Code\n          </PaymintsButton>\n        </div>\n      </form>\n    </BoxContainer>\n  );\n};\nexport default withRouter(CreateAccountVerificationStep);\n","import React from 'react';\nimport MaskedInput from 'react-text-mask';\n\nconst SsnMask = [/\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default ({...props}) => {\n    const handleChange = (e) => props.onChange(`${e.target.value}`.replace(/_/g, ''));\n\n    return (\n        <MaskedInput\n            mask={SsnMask}\n            {...props}\n            onChange={handleChange}\n        />\n    );\n};\n","import React, { useState } from \"react\";\nimport classnames from \"classnames\";\nimport SsnField from \"./SsnInput\";\nimport \"./ssn-toggle-visibility-input.css\";\n\nexport default function SsnToggleVisibilityField(props) {\n    const [visible, setVisible] = useState(false)\n\n    const toggleVisibility = () => {\n        setVisible(!visible)\n    }\n\n    const buildVisibilityButton = () => (\n        <button\n            type=\"button\"\n            className=\"btn btn-link ssn-toggle-visibility-field__button\"\n            onClick={toggleVisibility}\n        >\n            <i className={buildCssForIcon()} />\n        </button>\n    );\n\n    const buildCssForIcon = () =>\n        classnames(\"ssn-toggle-visibility-field__icon\", \"fa\", {\n            \"fa-eye-slash\": visible,\n            \"fa-eye\": !visible\n        });\n\n    return (\n        <div className=\"ssn-toggle-visibility-field\" onFocus={() => setVisible(true)} onBlur={() => setVisible(false)}>\n            <SsnField\n                {...props}\n                type={visible ? \"text\" : \"password\"}\n            />\n            {buildVisibilityButton()}\n        </div>\n    );\n}","import React, {\n  createContext,\n  useContext,\n  useState,\n  useEffect,\n  useCallback,\n} from 'react';\nimport { getSensitiveData } from '../utils/service/service_api';\n\nconst SensitiveDataContext = createContext();\n\nexport const SensitiveDataProvider = ({ clientID, tenantID, children }) => {\n  const [sensitiveData, setSensitiveData] = useState();\n  const [loading, setLoading] = useState(false);\n  const res = getSensitiveData(clientID, tenantID);\n  const getData = useCallback(\n    async () => {\n      setLoading(true);\n      try {\n        const res = await getSensitiveData(clientID, tenantID);\n        if (res) {\n          setSensitiveData(res.data);\n        }\n        setLoading(false);\n      } catch (error) {\n        getData();\n        setLoading(false);\n      }\n    },\n    /* eslint-disable */ [clientID, tenantID]\n  );\n\n  const refetch = () => getData();\n\n  useEffect(() => {\n    if (clientID && tenantID) getData();\n  }, [clientID, tenantID]);\n\n  return (\n    <SensitiveDataContext.Provider\n      value={{ sensitiveData, getData, loading, refetch }}\n    >\n      {children}\n    </SensitiveDataContext.Provider>\n  );\n};\n\nexport const useSensitiveData = () => {\n  const context = useContext(SensitiveDataContext);\n\n  return context;\n};\n","import { startOfToday, differenceInYears } from 'date-fns';\n\n// PAYAPP-900 (\"The receipt should only be generated on completion of the transfer\")\nexport const shouldHideDocuments = status => {\n  return ['completed'].indexOf(status.toLowerCase()) < 0;\n};\n\nexport const validAge = value => {\n  if (value) {\n    const DOB = new Date(value);\n    const today = startOfToday();\n    return differenceInYears(today, DOB) >= 18;\n  }\n};\n\nexport const REGEXP_ONLY_4_CHAR = /^.{4}$/;\n\nexport const validSSN = ssn => {\n  if (ssn) {\n    const ssnWithoutDash = ssn.replace(/-/g, '');\n    return REGEXP_ONLY_4_CHAR.test(ssnWithoutDash);\n  }\n};\nexport const validateAccountinfo = (client, account) => {\n  return client === account;\n};\n\nexport const validAmount = (value, balance, fee) => {\n  return value <= balance - fee;\n};\n\nexport const validateFile = name =>\n  name.toLowerCase() === 'image/png' ||\n  name.toLowerCase() === 'image/jpeg' ||\n  name.toLowerCase() === 'image/jpg';\n","import React from 'react'\n\nexport function Input({ register, name, ...props }) {\n  return <input name={name} ref={register} {...props} />\n}\n\nexport function Select({ register, options, placeholderText, name, ...props }) {\n  return (\n    <select name={name} ref={register} {...props}>\n      {placeholderText ? (\n        <option value=''>\n          {placeholderText}\n        </option>\n      ) : null}\n      {options.map((value) => (\n        <option key={value} value={value}>\n          {value}\n        </option>\n      ))}\n    </select>\n  )\n}\n","export const states = [\n    'Alabama','Alaska','Arizona','Arkansas','California','Colorado',\n    'Connecticut','Delaware','District of Columbia','Florida','Georgia',\n    'Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky',\n    'Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota',\n    'Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire',\n    'New Jersey','New Mexico','New York','North Carolina','North Dakota',\n    'Ohio','Oklahoma','Oregon','Pennsylvania','Puerto Rico','Rhode Island',\n    'South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington',\n    'West Virginia','Wisconsin','Wyoming'\n]","import { AES, enc } from \"crypto-js\";\n\nexport const encrypt = (value) => {\n  let encrypted = AES.encrypt(\n    value,\n    process.env.REACT_APP_GLOBAL_ENCRYPT_KEY\n  ).toString();\n\n  return encrypted;\n};\n\nexport const decrypt = (value) => {\n  let decrypted = AES.decrypt(\n    value,\n    process.env.REACT_APP_GLOBAL_ENCRYPT_KEY\n  ).toString(enc.Utf8);\n\n  return decrypted;\n};\n","import React from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport get from 'lodash/get';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport SsnToggleVisibilityField from '../SsnInput/SsnToggleVisibilityInput';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport {\n  saveSensitiveData,\n  getSensitiveData,\n} from '../../utils/service/service_api';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\n\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { validSSN, validAge } from '../../utils/validations';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport '../CreateAccountWizard/createAccount.css';\nimport { encrypt } from '../../utils/encryption';\n\nconst Title = ({ client }) => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__title\">\n      Your account has been verified, {get(client, 'firstName')}.\n    </div>\n  </div>\n);\n\nconst InfoSSN = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__info-account\">\n      Now we need to verify your social security number and date of birth, and\n      then we'll be ready to connect to your bank.\n    </div>\n  </div>\n);\n\nconst FieldSSN = ({ register, errors, control }) => {\n  return (\n    <div className=\"create-account__information-container\">\n      <BoxContainer withBorder internalBox>\n        <div className=\"form-group\">\n          <label>Last 4 Digits of Social Security Number</label>\n          <Controller\n            as={SsnToggleVisibilityField}\n            control={control}\n            name=\"ssn\"\n            placeholder=\"Social Security Number\"\n            className=\"create-account__input form-control emd-landing-page__form-field--password account__control_width\"\n            rules={{ required: true, validate: validSSN }}\n          />\n          {errors.ssn && errors.ssn.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n          {errors.ssn && errors.ssn.type === 'validate' && (\n            <ErrorMessageInput>\n              Must be a valid social security number\n            </ErrorMessageInput>\n          )}\n        </div>\n      </BoxContainer>\n    </div>\n  );\n};\n\nconst FieldBirthday = ({ register, errors }) => {\n  return (\n    <div className=\"create-account__information-container\">\n      <BoxContainer withBorder internalBox>\n        <div className=\"form-group\">\n          <label>Date of Birth</label>\n          <input\n            type=\"date\"\n            id=\"dateOfBirth\"\n            name=\"dateOfBirth\"\n            className=\"create-account__input form-control account__control_width\"\n            placeholder=\"yyyy-mm-dd\"\n            ref={register({ required: true, validate: validAge })}\n          />\n          {errors.dateOfBirth && errors.dateOfBirth.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n          {errors.dateOfBirth && errors.dateOfBirth.type === 'validate' && (\n            <ErrorMessageInput>Must be at least 18 years old</ErrorMessageInput>\n          )}\n        </div>\n      </BoxContainer>\n    </div>\n  );\n};\n\nconst FieldEmail = ({ register, errors }) => {\n  return (\n    <div className=\"create-account__information-container\">\n      <BoxContainer withBorder internalBox>\n        <div className=\"form-group\">\n          <label>Email Address</label>\n          <input\n            type=\"email\"\n            id=\"email\"\n            name=\"email\"\n            className=\"create-account__input form-control account__control_width\"\n            placeholder=\"Email Address\"\n            ref={register({ maxLength: 50, required: true })}\n          />\n          {errors.email && errors.email.type === 'maxLength' && (\n            <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n          )}\n          {errors.email && errors.email.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n        </div>\n      </BoxContainer>\n    </div>\n  );\n};\n\nconst FieldsPersonalInformation = ({ register, errors, control }) => {\n  return (\n    <div className=\"create-account__information-container\">\n      <BoxContainer withBorder internalBox>\n        <div className=\"form-group\">\n          <label>Address Associated with Bank Account</label>\n          <input\n            type=\"text\"\n            name=\"address1\"\n            placeholder=\"Address 1\"\n            className=\"create-account__input form-control create-account__address-info\"\n            autoComplete=\"no\"\n            ref={register({ required: true })}\n          />\n          {errors.address1 && errors.address1.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n          <input\n            type=\"text\"\n            name=\"address2\"\n            placeholder=\"Address 2\"\n            className=\"create-account__input form-control create-account__address-info\"\n            autoComplete=\"no\"\n            ref={register}\n          />\n          <input\n            type=\"text\"\n            name=\"city\"\n            placeholder=\"City\"\n            className=\"create-account__input form-control create-account__address-info\"\n            autoComplete=\"no\"\n            ref={register({ required: true })}\n          />\n          {errors.city && errors.city.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n          <Controller\n            as={Select}\n            control={control}\n            name=\"state\"\n            rules={{ required: true }}\n            options={states}\n            placeholderText=\"State\"\n            className=\"create-account__input form-control create-account__address-info\"\n          />\n          {errors.state && errors.state.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n          <input\n            type=\"text\"\n            name=\"zipcode\"\n            placeholder=\"Zip code\"\n            className=\"create-account__input form-control create-account__address-info\"\n            autoComplete=\"no\"\n            ref={register({ required: true })}\n          />\n          {errors.zipcode && errors.zipcode.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n        </div>\n      </BoxContainer>\n    </div>\n  );\n};\n\nconst FooterInformation = props => {\n  return (\n    <div className=\"create-account__footer create-account__information-container-footer\">\n      <div className=\"create-account__security-icon\">\n        <i className=\"fa fa-lock create-account__icon\" />\n      </div>\n      <div className=\"create-account__information-text\">\n        {`By clicking Verify you authorize ${props.props.tenant.name}, by electronic signature, to securely connect to your financial institution.`}\n      </div>\n    </div>\n  );\n};\n\nconst nextStep = history => {\n  history.push(`/bank-accounts`);\n  window.location.reload();\n};\n\nconst SecondStep = props => {\n  const clientId = get(props, 'client.id');\n  const tenantId = get(props, 'tenant.id');\n\n  const intialform = { ...props.client, email: null };\n  const { register, handleSubmit, errors, control } = useForm({\n    defaultValues: intialform,\n  });\n  const { action } = useStateMachine(updateAction);\n  const { updateClient } = useUpdateClient();\n  const { sensitiveData, refetch: refetchSensitiveData } = useSensitiveData();\n  const onSubmit = async newUser => {\n    const newUserWithoutSsnDash = {\n      ...newUser,\n      ssn: newUser.ssn.replace(/-/g, ''),\n    };\n\n    const { ssn, dateOfBirth, ...userValues } = newUserWithoutSsnDash;\n\n    const sensitiveData = {\n      SSN: encrypt(ssn),\n      DOB: encrypt(dateOfBirth),\n    };\n    try {\n      await saveSensitiveData(clientId, tenantId, sensitiveData);\n      const dataSENS = await getSensitiveData(clientId, tenantId);\n      await updateClient({\n        variables: {\n          id: clientId,\n          client: userValues,\n        },\n      });\n\n      await props.refetch();\n      await refetchSensitiveData();\n      await action({ client: newUser });\n      nextStep(props.history);\n    } catch (error) {\n      console.log(error);\n    }\n  };\n\n  return (\n    <BoxContainer withDoubleBorder withLogButton>\n      <Title client={props.client} />\n      <InfoSSN />\n      <form onSubmit={handleSubmit(onSubmit)}>\n        <FieldSSN register={register} errors={errors} control={control} />\n        <FieldBirthday register={register} errors={errors} />\n        <FieldEmail register={register} errors={errors} />\n        <FieldsPersonalInformation\n          register={register}\n          errors={errors}\n          control={control}\n        />\n        <FooterInformation props={props} />\n        <PaymintsButton\n          htmlType=\"submit\"\n          className=\"create-account__button create-account__verify\"\n          noShadow\n          type={BUTTON_TYPE.INVERSE_BLUE}\n        >\n          {'Verify'}\n        </PaymintsButton>\n      </form>\n    </BoxContainer>\n  );\n};\n\nexport default withRouter(connect(state => ({}), {})(SecondStep));\n","import React from 'react';\nimport { formatAddressStreetApartment, formatAddressCityStateZipCode } from '../../utils/util';\nimport \"./formatAddress.css\";\n\nconst FormatAddress = ({streetNumberName, apartmentSuiteNumber, city, state, zipcode}) => {\n    return (\n        <>\n            <div>\n                {formatAddressStreetApartment(streetNumberName, apartmentSuiteNumber)}\n            </div>\n            <div>\n                {formatAddressCityStateZipCode(city, state, zipcode)}\n            </div>\n        </>\n    );\n};\n\nexport default FormatAddress;","import React from 'react'\nimport FormatAddress from '../FormatAddress/FormatAddress'\nimport './destinationAccount.css'\n\nexport default function DestinationAccount({\n  title = 'Destination Account:',\n  bankName,\n  accountLastFourDigits,\n  description,\n  destAccountLogo,\n  tenantName,\n  address1,\n  apartmentSuiteNumber,\n  name,\n  city,\n  state,\n  zipcode,\n  office,\n  logoURL,\n  children,\n  type,\n}) {\n  return (\n    <div className='destination-account__destination-account'>\n      <div className='destination-account__destination-account-title'>\n        {title}\n      </div>\n\n      <div className='destination-account__destination-account-container'>\n        {/*\n        <div className=\"destination-account__destination-account-icons\">\n          {type === \"from\" && (\n            <div className=\"destination-account__destination-account-icon\">\n              <img\n                className=\"destination-account__destination-account-icon-logo\"\n                src={destAccountLogo}\n                alt=\"\"\n              />\n            </div>\n          )}\n\n          <div className=\"destination-account__destination-account-icon\">\n            <img\n              className=\"destination-account__destination-account-icon-logo\"\n              src={logoURL}\n              alt=\"\"\n            />\n          </div>\n        </div>*/}\n\n        {type === 'from' ? (\n          <div className='destination-account__destination-account-info'>\n            {bankName}\n            <br />\n            Account X{accountLastFourDigits}\n          </div>\n        ) : (\n          <div className='destination-account__destination-account-info'>\n            <p>{tenantName}</p>\n            <FormatAddress\n              streetNumberName={address1}\n              apartmentSuiteNumber={apartmentSuiteNumber}\n              city={city}\n              state={state}\n              zipcode={zipcode}\n            />\n            {office}\n          </div>\n        )}\n      </div>\n      {children}\n    </div>\n  )\n}\n","import { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isNil from \"lodash/isNil\";\n\nconst GET_INSTITUTION_LOGO_QUERY = gql`\n  query allInstitutionLogos($institutionCode: String) {\n    allInstitutionLogos(where: { institutionCode: $institutionCode }) {\n      id\n      logoURL\n    }\n  }\n`;\n\nexport function useInstitutionLogo(institutionID) {\n  const id =\n    isNil(institutionID) || isEmpty(institutionID) ? null : institutionID;\n  const { loading, error, data, refetch } = useQuery(\n    GET_INSTITUTION_LOGO_QUERY,\n    { variables: { institutionCode: id } }\n  );\n  return {\n    loading,\n    error,\n    refetch,\n    institutionLogo: data ? data.allInstitutionLogos[0] : undefined,\n  };\n}\n\nconst GET_INSTITUTION_LOGO_OR_QUERY = gql`\n  query allInstitutionLogos($institution: [InstitutionLogoWhereInput]) {\n    allInstitutionLogos(where: { OR: $institution }) {\n      id\n      logoURL\n      institutionCode\n    }\n  }\n`;\n\nexport function useInstitutionLogoOR(institutionID) {\n  const institution =\n    isNil(institutionID) || isEmpty(institutionID)\n      ? [{ institutionCode: null }]\n      : institutionID;\n  const { loading, error, data, refetch } = useQuery(\n    GET_INSTITUTION_LOGO_OR_QUERY,\n    {\n      variables: { institution: institution },\n    }\n  );\n  return {\n    loading,\n    error,\n    refetch,\n    institutionsLogo: data ? data.allInstitutionLogos : [],\n  };\n}\n","export const START_DWOLLA_FETCH = \"START_DWOLLA_FETCH\";\nexport const START_DWOLLA_SUCCESS = \"START_DWOLLA_SUCCESS\";\nexport const START_DWOLLA_ERROR = \"START_DWOLLA_ERROR\";\nexport const SAVE_TRANSFER_DOC_FETCH = \"SAVE_TRANSFER_DOC_FETCH\";\nexport const SAVE_TRANSFER_DOC_SUCCESS = \"SAVE_TRANSFER_DOC_SUCCESS\";\nexport const SAVE_TRANSFER_DOC_ERROR = \"SAVE_TRANSFER_DOC_ERROR\";\nexport const SEND_EMAIL_RECEIPT_FETCH = \"SEND_EMAIL_RECEIPT_FETCH\";\nexport const SEND_EMAIL_RECEIPT_SUCCESS = \"SEND_EMAIL_RECEIPT_SUCCESS\";\nexport const SEND_EMAIL_RECEIPT_ERROR = \"SEND_EMAIL_RECEIPT_ERROR\";\n","import * as APIUtil from '../../utils/service/service_api';\nimport * as actionType from './TransferActionType';\nimport get from 'lodash/get';\n\nexport const startDwollaFetch = () => ({\n  type: actionType.START_DWOLLA_FETCH,\n});\n\nexport const startDwollaSuccess = response => ({\n  type: actionType.START_DWOLLA_SUCCESS,\n  payload: { response },\n});\n\nexport const startDwollaError = response => ({\n  type: actionType.START_DWOLLA_ERROR,\n  payload: { response },\n});\n\nexport const startDwolla = (data, config) => dispatch => {\n  dispatch(startDwollaFetch());\n  return APIUtil.startDwolla(data, config)\n    .then(response => {\n      dispatch(startDwollaSuccess(response));\n      return response;\n    })\n    .catch(error => {\n      const errorElement = get(error, 'response.data');\n      dispatch(startDwollaError(errorElement));\n      const message =\n        get(errorElement, 'error.body.message') ||\n        get(errorElement, 'message') ||\n        get(errorElement, 'error_message') ||\n        'Something went wrong... please try again in a few minutes';\n      return { error: true, message: message };\n    });\n};\n\nexport const saveTransferDocFetch = () => ({\n  type: actionType.SAVE_TRANSFER_DOC_FETCH,\n});\n\nexport const saveTransferDocSuccess = response => ({\n  type: actionType.SAVE_TRANSFER_DOC_SUCCESS,\n  payload: { response },\n});\n\nexport const saveTransferDocError = response => ({\n  type: actionType.SAVE_TRANSFER_DOC_ERROR,\n  payload: { response },\n});\n\nexport const saveTransferDoc = (transferId, data) => dispatch => {\n  dispatch(saveTransferDocFetch());\n  return APIUtil.saveTransferDoc(transferId, data)\n    .then(response => {\n      dispatch(saveTransferDocSuccess(response));\n      return response;\n    })\n    .catch(error => {\n      const errorElement = get(error, 'response.data');\n      const message =\n        get(errorElement, 'error.body.message') ||\n        get(errorElement, 'err.message') ||\n        get(errorElement, 'err') ||\n        get(errorElement, 'message') ||\n        get(errorElement, 'error_message') ||\n        'Something went wrong... please try again in a few minutes';\n      dispatch(saveTransferDocError(errorElement));\n      return { error: true, message: message };\n    });\n};\n\nexport const sendEmailReceiptFetch = () => ({\n  type: actionType.SEND_EMAIL_RECEIPT_FETCH,\n});\n\nexport const sendEmailReceiptSuccess = response => ({\n  type: actionType.SEND_EMAIL_RECEIPT_SUCCESS,\n  payload: { response },\n});\n\nexport const sendEmailReceiptError = error => ({\n  type: actionType.SEND_EMAIL_RECEIPT_ERROR,\n  payload: { error },\n});\n\nexport const sendEmailReceipt = data => dispatch => {\n  dispatch(sendEmailReceiptFetch());\n  return APIUtil.sendEmailReceipt(data)\n    .then(response => {\n      console.log('hello', response);\n      dispatch(sendEmailReceiptSuccess(response));\n      return { success: true, ...response };\n    })\n    .catch(error => {\n      const errorElement = get(error, 'response.data');\n      dispatch(sendEmailReceiptError(error));\n      const message =\n        get(errorElement, 'error.body.message') ||\n        get(errorElement, 'message') ||\n        get(errorElement, 'error_message') ||\n        'Something went wrong... please try again in a few minutes';\n      console.log(message);\n      return { error: true, message: message };\n    });\n};\n","import React from 'react';\nimport get from 'lodash/get';\nimport MaskedInput from 'react-text-mask'\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask'\n\nconst numberMask = createNumberMask({\n    allowDecimal: true,\n});\n\nexport default function AmountInput ({...props}) {\n    const handleChange = (e) => props.onChange(`${get(e, 'target.value')}`.replace(/[$,_ ]/g, ''));\n\n    return (\n        <MaskedInput\n            mask={numberMask}\n            {...props}\n            onChange={handleChange}\n        />\n    );\n};\n","/*\n * src/hooks/useAllCreditTransferTypes.js\n * Description: Query to retrieve transfer types (name / id) where isCredit = true, e.g. \"Client Transfer\"\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nexport const GET_ALL_CREDIT_TRANSFER_TYPES = gql`\n  query getAllCreditTransferTypes($where: TransferTypeWhereInput!) {\n    allTransferTypes(where: $where) {\n      id\n      name\n      isDebit\n      isCredit\n      purpose\n    }\n  }\n`;\n\nconst useAllCreditTransferTypes = () => {\n  const { loading, error, data } = useQuery(GET_ALL_CREDIT_TRANSFER_TYPES, {\n    fetchPolicy: \"no-cache\",\n    variables: {\n      where: {\n        isCredit: true,\n      },\n    },\n  });\n\n  return {\n    loading,\n    error,\n    data: data?.allTransferTypes ?? [],\n  };\n};\n\nexport default useAllCreditTransferTypes;\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst GET_OFFICES_SORTED_QUERY = gql`\n  query allOfficesSorted($id: ID!) {\n    allOffices(\n      where: { tenant: { id: $id }, active: true }\n      sortBy: title_DESC\n    ) {\n      id\n      title\n      city\n      state\n    }\n  }\n`;\n\nexport default function useAllActiveOfficesSorted(tenantID) {\n  const id = isNil(tenantID) || isEmpty(tenantID) ? null : tenantID;\n  const { loading, error, data, refetch } = useQuery(GET_OFFICES_SORTED_QUERY, {\n    variables: {\n      id: id,\n    },\n  });\n\n  // the filter is a hack because name_not_i excludes BOTH \"Vendor Disbursement\" and null (no bueno)\n  return {\n    loadingOffices: loading,\n    error,\n    refetchOffices: refetch,\n    activeOffices: data ? data.allOffices : [],\n  };\n}\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\n\nconst GET_REALTORS_FROM_TENANT_QUERY = gql`\n  query AllRealtors($tenantId: ID!) {\n    allRealtors(where: { tenant: { id: $tenantId }, active: true }) {\n      id\n      email\n      mobilePhone\n      active\n      firstName\n      lastName\n    }\n  }\n`;\n\nexport default function useAllRealtorsFromTenant(tenantId) {\n  const { loading, error, refetch, data } = useQuery(\n    GET_REALTORS_FROM_TENANT_QUERY,\n    {\n      variables: { tenantId },\n      fetchPolicy: 'no-cache',\n    }\n  );\n  return {\n    loading,\n    error,\n    refetch,\n    realtors: data ? data.allRealtors : undefined,\n  };\n}\n","import React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport format from 'dateformat';\nimport { useStateMachine } from 'little-state-machine';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { Select as AntSelect } from 'antd';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n  PaymintsNumberFormat,\n} from 'paymints-address-autocomplete-field';\nimport DestinationAccount from '../DestinationAccount/DestinationAccount';\n\nimport {\n  useCreateTransfer,\n  useSaveTransfer,\n} from '../../utils/service/service_transfer_api';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { saveTransferDoc } from '../../reducers/transfer/TransferActions';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { validAmount } from '../../utils/validations';\nimport { extractNotesFromJson, formatDayFromUTC, getRealtorStore } from '../../utils/util';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport HeaderLogo from '../../styles/assets/lemon.png';\nimport AmountInput from '../AmountInput/AmountInput';\nimport useAllCreditTransferTypes from '../../hooks/useAllCreditTransferTypes';\nimport useAllActiveOfficesSorted from '../../hooks/useAllActiveOfficesSorted';\nimport useAllRealtorsFromTenant from '../../hooks/useAllRealtorsFromTenant';\n\nimport PhoneField from '../PhoneField/PhoneField';\n\nimport '../CreateAccountWizard/createAccount.css';\n\n/**\n * [{amount: Number | null, clientPays: boolean, id: String, tenant: { name: String}}]\n * @param {*} data\n */\nconst extractTranferFeeFromData = data => {\n  if (data && data.length > 0) {\n    const [first] = data;\n    if (first.clientPays) {\n      return +first.amount || 0;\n    }\n    return 0;\n  }\n  return 0;\n};\n\n/**\n * @TODO extract out to component\n */\nconst Title = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__title\">Transfer Details</div>\n  </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst InfoTransfer = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__subtitle\">\n      What kind of transfer would you like to make?\n    </div>\n  </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsEMD = ({\n  register,\n  errors,\n  control,\n  realtorData,\n  setRealtorData,\n  showREAInfoFill,\n}) => {\n  return (\n    <div\n      className=\"create-account__emd-info\"\n      style={{ display: showREAInfoFill ? 'block' : 'none', }}\n    >\n      <div style={{ padding: \"10px\" }}>\n        <div className=\"form-group\" style={{ padding: \"-28px\" }}>\n          <label>Real Estate Agent's Full Name (Optional)</label>\n          <br />\n          <input\n            type=\"text\"\n            // id=\"otherIndividuals\"\n            // name=\"otherIndividuals\"\n            className=\"create-account__input form-control\"\n            placeholder=\" \"\n            // ref={register}\n            onChange={e =>\n              setRealtorData({\n                ...realtorData,\n                fullName: e.target.value,\n              })\n            }\n          />\n        </div>\n        <div className=\"form-group\">\n          <label>Real Estate Agent's Email Address (Optional)</label>\n          <br />\n          <input\n            type=\"text\"\n            id=\"realtorsEmail\"\n            name=\"otherIndividuals\"\n            className=\"create-account__input form-control\"\n            placeholder=\" \"\n            // ref={register}\n            onChange={e =>\n              setRealtorData({\n                ...realtorData,\n                email: e.target.value,\n              })\n            }\n          />\n        </div>\n        <div className=\"form-group\">\n          <label>Real Estate Agent's Phone Number (Optional)</label>\n\n          <div className=\"form-group create-account__name\">\n            <Controller\n              as={PhoneField}\n              control={control}\n              name=\"otherIndividuals\"\n              placeholder=\" \"\n              className=\"create-account__input form-control\"\n              rules={{ required: false }}\n              onChange={e =>\n                setRealtorData({\n                  ...realtorData,\n                  phoneNumber: e.toString(),\n                })\n              }\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoTransfer = ({\n  client,\n  register,\n  errors,\n  control,\n  setValue,\n  purposes,\n  emdVisible,\n  setFieldsEMDVisible,\n  realtorData,\n  setRealtorData,\n  showREAInfoFill,\n}) => {\n  const purposesOptions = purposes.map(purpose => ({\n    value: purpose,\n    label: purpose\n  }))\n  return (<>\n    <div className=\"bank-accounts__item-title py-4\">PURPOSE</div>\n    <BoxContainer withBorder internalBox >\n      <label>Select a  Purpose</label>\n      <div\n        className=\"form-group\"\n        style={{\n          backgroundColor: '#fff',\n          borderRadius: '4px',\n          padding: '10px',\n          marginTop: '10px',\n        }}\n      >\n        <Controller\n          as={AntSelect}\n          control={control}\n          name=\"purpose\"\n          rules={{ required: true }}\n          options={purposesOptions}\n          defaultValue=\"Earnest Money Deposit for Purchase\"\n          style={{\n            boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n            border: '2px solid #c9d1f2',\n            borderRadius: '4px',\n            width: '100%',\n          }}\n          onSelect={value => value === \"Earnest Money Deposit for Purchase\" ? setFieldsEMDVisible(true) : setFieldsEMDVisible(false)}\n\n\n        />\n        {errors.purpose && errors.purpose.type === 'required' && (\n          <div className=\"form-check create-account__error-message\">\n\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n\n          </div>)}\n        {emdVisible ? (\n          <FieldsEMD\n            register={register}\n            errors={errors}\n            control={control}\n            realtorData={realtorData}\n            setRealtorData={setRealtorData}\n            showREAInfoFill={showREAInfoFill}\n          />\n        ) : null}\n      </div>\n\n    </BoxContainer>\n  </>\n  );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoPropertyAddress = () => (\n  <div className=\"bank-accounts__item-title py-4\">PROPERTY ADDRESS AND ADDITIONAL NOTES</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoPropertyAddress = ({\n  transfer,\n  register,\n  errors,\n  setValue,\n  control,\n}) => {\n  return (\n    <BoxContainer withBorder internalBox>\n      <div className=\"form-group\">\n        <label>Property Address Related To The Transfer</label>\n        <input\n          type=\"text\"\n          name=\"propertyAddress1\"\n          placeholder=\"Address 1\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: true })}\n        />\n        {errors.propertyAddress1 &&\n          errors.propertyAddress1.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n        <input\n          type=\"text\"\n          name=\"propertyAddress2\"\n          placeholder=\"Address 2\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: false })}\n        />\n        <input\n          type=\"text\"\n          name=\"propertyCity\"\n          placeholder=\"City\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: true })}\n        />\n        {errors.propertyCity && errors.propertyCity.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        <Controller\n          as={Select}\n          control={control}\n          name=\"propertyState\"\n          placeholderText=\"State\"\n          rules={{ required: true }}\n          options={states}\n          className=\"create-account__input form-control create-account__address-info\"\n        />\n        {errors.propertyState && errors.propertyState.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        <input\n          type=\"text\"\n          name=\"propertyZipcode\"\n          placeholder=\"Zip code\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: true })}\n        />\n        {errors.propertyZipcode &&\n          errors.propertyZipcode.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n        <br />\n        {((errors.propertyAddress1 &&\n          errors.propertyAddress1.type === 'required') ||\n          (errors.propertyCity && errors.propertyCity.type === 'required') ||\n          (errors.propertyState && errors.propertyState.type === 'required') ||\n          (errors.propertyZipcode &&\n            errors.propertyZipcode.type === 'required')) && (\n            <ErrorMessageInput>Please select a valid address</ErrorMessageInput>\n          )}\n        <br />\n        <label>Notes (Optional)</label>\n        <textarea\n          name=\"notes\"\n          ref={register}\n          placeholder=\" \"\n          className=\"create-account__text-area form-control\"\n        />\n      </div>\n    </BoxContainer>\n  );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoAmount = () => (\n  <div className=\"bank-accounts__item-title py-4\">AMOUNT</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldInfoAmount = ({\n  register,\n  errors,\n  control,\n  watch,\n  watchDocument,\n  regDocument,\n  controlDocument,\n  bankBalance,\n  setMaxAmountValidate,\n  maxAmountValidate,\n  MAXIMUM_AMOUNT,\n  transferFeeConfigData,\n  getValues\n}) => {\n  return (\n    <BoxContainer withBorder internalBox>\n      <>\n\n        <div className=\"account-blance\">\n          <div>Account Balance</div>\n          {!bankBalance ? (\n            '--'\n          ) : (\n            <div>\n              <PaymintsNumberFormat\n                number={bankBalance}\n                decimals={2}\n                format=\"currency\"\n              />\n            </div>\n          )}\n        </div>\n        <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n          <div className=\"form-group\" style={{ width: \"48%\" }}>\n            <label>Amount</label>\n            {!bankBalance ? (\n              <Controller\n                as={AmountInput}\n                control={control}\n                name=\"amount\"\n                placeholder=\"$0.00\"\n                onKeyUp={() => setMaxAmountValidate(false)}\n                className=\"create-account__input form-control\"\n                rules={{\n                  required: true,\n                }}\n                autoComplete=\"no\"\n              />\n            ) : (\n              <Controller\n                as={AmountInput}\n                control={control}\n                name=\"amount\"\n                placeholder=\"$0.00\"\n                onKeyUp={() => setMaxAmountValidate(false)}\n                className=\"create-account__input form-control\"\n                rules={{\n                  required: true,\n                  validate: value =>\n                    validAmount(\n                      value,\n                      bankBalance,\n                      extractTranferFeeFromData(transferFeeConfigData)\n                    ),\n                }}\n                autoComplete=\"no\"\n              />\n            )}\n\n\n            {errors.amount && errors.amount.type === 'required' && (\n              <ErrorMessageInput>This is required</ErrorMessageInput>\n            )}\n            {errors.amount && errors.amount.type === 'validate' && (\n              <ErrorMessageInput>\n                Amount entered exceeds account balance and any applicable\n                convenience fees. Please enter an amount lesser than or equal to\n                this combined amount.\n              </ErrorMessageInput>\n            )}\n            {maxAmountValidate && (\n              <ErrorMessageInput>\n                Transfer amount cannot exceed{' '}\n                <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n              </ErrorMessageInput>\n            )}\n          </div>\n          <div className=\"form-group\" style={{ width: \"48%\" }}>\n            <label>Re-Enter Amount</label>\n            <Controller\n              as={AmountInput}\n              control={control}\n              name=\"amountCompare\"\n              placeholder=\"$0.00\"\n              className=\"create-account__input form-control\"\n              rules={{\n                required: true,\n                validate: {\n                  matchesAmount: value => value === getValues('amount'),\n                },\n              }}\n              onPaste={e => {\n                e.preventDefault()\n                return false\n              }}\n            />\n            {errors.amount2 && errors.amount2.type === 'required' && (\n              <ErrorMessageInput>Amount is required </ErrorMessageInput>\n            )}\n            {errors.amount2 && errors.amount2.type === 'matchesAmount' && (\n              <ErrorMessageInput>Amounts do not match</ErrorMessageInput>\n            )}\n\n\n            {errors.amount && errors.amount.type === 'required' && (\n              <ErrorMessageInput>This is required</ErrorMessageInput>\n            )}\n            {errors.amount && errors.amount.type === 'validate' && (\n              <ErrorMessageInput>\n                Amount entered exceeds account balance and any applicable\n                convenience fees. Please enter an amount lesser than or equal to\n                this combined amount.\n              </ErrorMessageInput>\n            )}\n            {maxAmountValidate && (\n              <ErrorMessageInput>\n                Transfer amount cannot exceed{' '}\n                <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n              </ErrorMessageInput>\n            )}\n          </div>\n        </div>\n      </>\n    </BoxContainer>\n\n  );\n};\n\nconst FieldOfficeSelect = ({ errors, control, tenantId, setValue }) => {\n  const { activeOffices } = useAllActiveOfficesSorted(tenantId);\n  const officeOptions = activeOffices.map(office => ({\n    value: office.id,\n    label: office.title + ' - ' + office.city + ', ' + office.state,\n  }));\n\n  return (\n    <BoxContainer withBorder internalBox>\n      <div>\n        <div>\n          <label>Select an Office to make a payment to</label>\n        </div>\n      </div>\n      <Controller\n        as={AntSelect}\n        control={control}\n        name=\"office\"\n        rules={{ required: true }}\n        options={officeOptions}\n        labelInValue={true}\n        placeholder=\"Select an Office:\"\n        style={{\n          boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n          border: '2px solid #c9d1f2',\n          borderRadius: '4px',\n          width: '100%',\n        }}\n      />\n      {errors?.office && errors?.office?.type === 'required' && (\n        <ErrorMessageInput>This is required</ErrorMessageInput>\n      )}\n    </BoxContainer>\n  );\n};\n\nconst RealtorSelect = ({ errors, setRealtorID, realtors, transfer }) => {\n  const realtorsOptions = realtors?.map(realtor => ({\n\n    value: `${realtor.firstName} ${realtor.lastName}`,\n    label: `${realtor.firstName} ${realtor.lastName}`,\n    key: realtor.id,\n  }));\n\n  const filteringArrayToGetID = fullName => {\n    const splittedFirstAndLast = fullName.split(' ');\n    const D = realtors?.filter(obj => {\n      return (\n        obj.firstName === splittedFirstAndLast[0] &&\n        obj.lastName === splittedFirstAndLast[1]\n      );\n    });\n    setRealtorID(D[0].id);\n  };\n\n  return (\n    <BoxContainer withBorder internalBox>\n      <div>\n        <div>\n          <label>Please select your real estate agent</label>\n        </div>\n      </div>\n\n      <AntSelect\n        placeholder=\"Select your Real Estate Agent\"\n        defaultValue={transfer.transfer ? `${transfer.transfer.realtor.firstName} ${transfer.transfer.realtor.lastName}` : null}\n        onChange={filteringArrayToGetID}\n        on\n        rules={{ required: true }}\n        options={realtorsOptions}\n        style={{\n          boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n          border: '2px solid #c9d1f2',\n          borderRadius: '4px',\n          width: '100%',\n        }}\n        showSearch\n      />\n      {errors?.realtor && errors?.realtor?.type === 'required' && (\n        <ErrorMessageInput>This is required</ErrorMessageInput>\n      )}\n    </BoxContainer>\n  );\n};\n\nconst onClickBackButton = history =>\n  history.push(\n    `/create-account/step-select-account${get(history, 'location.search')}`\n  );\n\nconst onClickGoToTransferHistory = history => history.push('/transfer-history');\n\nconst createDraftTransfer = ({\n  props,\n  destAccount,\n  state,\n  newTransfer,\n  creditTransferTypes,\n  transferFeeConfigData, // array\n  realtorData,\n}) => {\n  // here's where we deal with the fee (this works)\n  let fee = null;\n  const [tfg] = transferFeeConfigData;\n  if (tfg && tfg.clientPays) {\n    fee = tfg.amount;\n  }\n\n  return {\n    //...newTransfer,\n    ...Object.assign(newTransfer, { fee }),\n    expectedClosingDate: new Date(get(newTransfer, 'expectedClosingDate')),\n    firstName: get(props.client, 'firstName'),\n    lastName: get(props.client, 'lastName'),\n    email: get(props.client, 'email'),\n    status: 'draft',\n    otherIndividuals: JSON.stringify(realtorData),\n    transferType: {\n      connect: {\n        id: creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].id,\n      },\n    },\n    type: 'Client Transfer',\n    client: {\n      connect: {\n        id: get(props, 'client.id'),\n      },\n    },\n    sourceBankAccount: {\n      connect: {\n        id: get(state, 'data.bankAccount.id'),\n      },\n    },\n    destBankAccount: {\n      connect: {\n        id: get(destAccount, 'id'),\n      },\n    },\n    tenant: {\n      connect: {\n        id: get(props, 'tenant.id'),\n      },\n    },\n    // office: {\n    //   connect: {\n    //     id: get(newTransfer, 'office.value'),\n    //   },\n    // },\n  };\n};\n\nconst showInfo = amount => {\n  if (amount > '5000') {\n    return true;\n  }\n  return false;\n};\n\nconst getDefaultValues = props => {\n  if (get(props, 'transfer.propertyAddress1')) {\n    return {\n      propertyAddress1: get(props, 'transfer.propertyAddress1'),\n      propertyAddress2: get(props, 'transfer.propertyAddress2'),\n      propertyState: get(props, 'transfer.propertyState'),\n      propertyCity: get(props, 'transfer.propertyCity'),\n      propertyZipcode: get(props, 'transfer.propertyZipcode'),\n    };\n  } else {\n    if (\n      get(props, 'transfer.purpose') === 'Earnest Money Deposit for Purchase'\n    ) {\n      return {\n        propertyAddress1: get(props, 'client.address1'),\n        propertyAddress2: get(props, 'client.address2'),\n        propertyState: get(props, 'client.state'),\n        propertyCity: get(props, 'client.city'),\n        propertyZipcode: get(props, 'client.zipcode'),\n      };\n    } else {\n      return {\n        propertyAddress1: get(props, 'client.propertyAddress1'),\n        propertyAddress2: get(props, 'client.propertyAddress2'),\n        propertyState: get(props, 'client.propertyState'),\n        propertyCity: get(props, 'client.propertyCity'),\n        propertyZipcode: get(props, 'client.propertyZipcode'),\n      };\n    }\n  }\n};\n\n/**\n * The primary component...ideally this should be the only component in this file.\n * @param {*} props\n */\nconst TransferDetails = props => {\n\n  const expectedClosingDate = get(props, 'transfer.expectedClosingDate')\n    ? formatDayFromUTC(get(props, 'transfer.expectedClosingDate'))\n    : undefined;\n\n  const { transferFeeConfigData } = props;\n\n  let { realtors } = useAllRealtorsFromTenant(props.tenant.id);\n\n  const { realtor } = getRealtorStore();\n  // console.log(realtor)\n  if (realtor && realtor.id.length === 24) {\n    // Override realtors object as there is only 1 realtor\n    // since coming from the realtor landing page\n    realtors = [];\n    realtors.push(realtor);\n  }\n\n  const { register, handleSubmit, errors, setValue, control, watch, getValues, } = useForm({\n    defaultValues: {\n      ...props.transfer,\n      notes: extractNotesFromJson(props?.transfer?.notes),\n      expectedClosingDate: expectedClosingDate,\n      ...getDefaultValues(props),\n    },\n  });\n\n  const valuesD = getValues()\n\n  // PAYAPP-1193\n  //Changed to 149999.99 by D.K No ticket assigned just a requestred Hotfix.\n  const MAXIMUM_AMOUNT = 149999.99;\n  const [maxAmountValidate, setMaxAmountValidate] = useState(false);\n  const {\n    register: regDocument,\n    control: controlDocument,\n    watch: watchDocument,\n  } = useForm();\n  const { state, action } = useStateMachine(updateAction);\n  const [emdVisible, setFieldsEMDVisible] = useState(false);\n  const [showREAInfoFill, setShowREAInfoFill] = useState(true);\n  const [showAmountInfo, onShowAmountInfo] = useState(\n    showInfo(watch('amount'))\n  );\n  const [realtorID, setRealtorID] = useState();\n  const [realtorData, setRealtorData] = useState({\n    fullName: '',\n    email: '',\n    phoneNumber: '',\n  });\n  const { createTransfer } = useCreateTransfer();\n  const { saveTransfer } = useSaveTransfer();\n  const { updateClient } = useUpdateClient();\n  const { destAccount } = useEscrowAccountFromTenant(\n    get(props, 'tenant.id', '')\n  );\n  const { institutionLogo } = useInstitutionLogo(\n    get(destAccount, 'institutionCode', '')\n  );\n  const transferId = get(props, 'transfer.id');\n  const [error, onSetError] = useState({ active: false, messageError: '' });\n  const {\n    data: creditTransferTypes,\n    loading: loadingCreditTransferTypes,\n  } = useAllCreditTransferTypes();\n  const [purposes, setPurposes] = useState([]);\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n\n\n\n  useEffect(() => {\n    if (realtors && props && props.transfer) {\n      const realtor = realtors.filter(obj => {\n        return (\n          obj.firstName === props.transfer.realtor?.firstName &&\n          obj.lastName === props.transfer.realtor?.lastName\n        );\n      });\n      setRealtorID(realtor[0]?.id);\n    }\n\n  }, [realtors, props]);\n\n  useEffect(() => {\n    if (creditTransferTypes?.length) {\n      const purposes = JSON.parse(\n        creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].purpose\n      ).purposes;\n      setPurposes(purposes);\n    }\n    if (props?.tenant?.routingType === 'agent') {\n      setShowREAInfoFill(false);\n    }\n  }, [creditTransferTypes]);\n\n  const onSubmit = (newTransfer, saveAsDraft = false) => {\n    delete newTransfer.amountCompare\n    if (Number(watch('amount')) <= MAXIMUM_AMOUNT) {\n      setMaxAmountValidate(false);\n      const tenantId = get(props, 'tenant.id');\n      const destAccountId = get(destAccount, 'id');\n      const bankAccountId = get(state, 'data.bankAccount.id');\n\n      if (newTransfer?.notes) {\n        newTransfer.notes = JSON.stringify([{ note: newTransfer?.notes }]);\n      }\n\n      if (get(props, 'tenant.routingType') === 'office') {\n        newTransfer = {\n          ...newTransfer,\n          office: {\n            connect: {\n              id: get(newTransfer, 'office.value'),\n            },\n          },\n        };\n      }\n      if (get(props, 'tenant.routingType') === 'agent') {\n        if (realtor && realtor.id.length === 24) {\n          newTransfer = {\n            ...newTransfer,\n            realtor: {\n              connect: {\n                id: realtor.id,\n              },\n            },\n          };\n        } else {\n          newTransfer = {\n            ...newTransfer,\n            realtor: {\n              connect: {\n                id: realtorID,\n              },\n            },\n          };\n        }\n      } else if (realtor && realtor.id.length === 24) {\n        newTransfer = {\n          ...newTransfer,\n          realtor: {\n            connect: {\n              id: realtor.id,\n            },\n          },\n        };\n      }\n\n      if (isEmpty(tenantId))\n        onSetError({\n          active: true,\n          messageError: 'Tenant not found, please check url',\n        });\n      if (isEmpty(destAccountId))\n        onSetError({\n          active: true,\n          messageError: 'Destination account not found, please contact support',\n        });\n      if (isEmpty(bankAccountId))\n        onSetError({\n          active: true,\n          messageError: 'Bank account not found, please select bank account',\n        });\n      if (\n        !isEmpty(tenantId) &&\n        !isEmpty(destAccountId) &&\n        !isEmpty(bankAccountId)\n      ) {\n        const newTransferComplete = createDraftTransfer({\n          props,\n          destAccount,\n          state,\n          newTransfer,\n          creditTransferTypes,\n          transferFeeConfigData,\n          realtorData,\n        });\n\n        if (transferId) {\n          saveTransfer({\n            variables: {\n              id: props.transfer.id,\n              transfer: newTransferComplete,\n            },\n          })\n            .then(() => {\n              const newUserAddress = {\n                propertyAddress1: newTransfer.propertyAddress1,\n                propertyAddress2: newTransfer.propertyAddress2,\n                propertyState: newTransfer.propertyState,\n                propertyCity: newTransfer.propertyCity,\n                propertyZipcode: newTransfer.propertyZipcode,\n              };\n\n              updateClient({\n                variables: {\n                  id: get(props, 'client.id'),\n                  client: newUserAddress,\n                },\n              });\n            })\n            .then(() => props.refetchTransfer())\n            .then(() => {\n              action({ transfer: newTransferComplete });\n              if (saveAsDraft) {\n                onClickGoToTransferHistory(props.history);\n              } else {\n                props.history.push(\n                  `/create-account/step-4?go_to_transfer=${transferId}`\n                );\n              }\n            });\n        } else {\n          createTransfer({ variables: { transfer: newTransferComplete } })\n            .then(response => {\n              const transferId = get(response, 'data.createTransfer.id');\n              action({ transfer: newTransferComplete });\n              if (!saveAsDraft) {\n                props.history.push(\n                  `/create-account/step-4?go_to_transfer=${transferId}`\n                );\n              } else {\n                onClickGoToTransferHistory(props.history);\n              }\n            })\n            .then(() => {\n              const newUserAddress = {\n                propertyAddress1: newTransfer.propertyAddress1,\n                propertyAddress2: newTransfer.propertyAddress2,\n                propertyState: newTransfer.propertyState,\n                propertyCity: newTransfer.propertyCity,\n                propertyZipcode: newTransfer.propertyZipcode,\n              };\n\n              updateClient({\n                variables: {\n                  id: get(props, 'client.id'),\n                  client: newUserAddress,\n                },\n              });\n            });\n        }\n      }\n    } else {\n      setMaxAmountValidate(true);\n    }\n  };\n\n  return (\n    <BoxContainer withDoubleBorder withLogButton>\n\n      <Title />\n\n      <form onSubmit={handleSubmit(e => onSubmit(e, false))}>\n        <InfoTransfer />\n\n        <FieldsInfoTransfer\n          register={register}\n          errors={errors}\n          control={control}\n          setValue={setValue}\n          purposes={purposes}\n          emdVisible={emdVisible}\n          setFieldsEMDVisible={setFieldsEMDVisible}\n          realtorData={realtorData}\n          setRealtorData={setRealtorData}\n          client={get(props, 'client')}\n          showREAInfoFill={showREAInfoFill}\n        />\n        <InfoPropertyAddress />\n        <FieldsInfoPropertyAddress\n          register={register}\n          errors={errors}\n          setValue={setValue}\n          transfer={props.transfer}\n          control={control}\n        />\n        <InfoAmount />\n        <FieldInfoAmount\n          errors={errors}\n          control={control}\n          showAmountInfo={showAmountInfo}\n          onShowAmountInfo={onShowAmountInfo}\n          watch={watch}\n          watchDocument={watchDocument}\n          regDocument={regDocument}\n          controlDocument={controlDocument}\n          maxAmountValidate={maxAmountValidate}\n          setMaxAmountValidate={setMaxAmountValidate}\n          MAXIMUM_AMOUNT={MAXIMUM_AMOUNT}\n          bankBalance={get(state, 'data.bankAccount.balance')}\n          transferFeeConfigData={transferFeeConfigData}\n          getValues={getValues}\n        />\n        <DestinationAccount\n          title=\"Destination Account:\"\n          logoURL={HeaderLogo}\n          bankName={get(destAccount, 'bankName')}\n          accountLastFourDigits={get(destAccount, 'accountLastFourDigits')}\n          description={get(destAccount, 'bankDisplayName')}\n          destAccountLogo={get(institutionLogo, 'logoURL')}\n          tenantName={get(props, 'tenant.name')}\n          address1={get(props, 'tenant.address1')}\n          apartmentSuiteNumber={get(props, 'tenant.address2')}\n          city={get(props, 'tenant.city')}\n          state={get(props, 'tenant.state')}\n          zipcode={get(props, 'tenant.zipcode')}\n        />\n        {get(props, 'tenant.routingType') === 'office' && (\n          <FieldOfficeSelect\n            control={control}\n            errors={errors}\n            tenantId={get(props, 'tenant.id')}\n            setValue={setValue}\n            labelInValue={false}\n          />\n        )}\n        {get(props, 'tenant.routingType') === 'agent' && !realtor && (\n          <RealtorSelect\n            control={control}\n            errors={errors}\n            tenantId={get(props, 'tenant.id')}\n            setValue={setValue}\n            labelInValue={false}\n            realtors={realtors}\n            setRealtorID={setRealtorID}\n            transfer={props}\n          />\n        )}\n        <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n          <PaymintsButton\n            className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n            onClick={() => onClickBackButton(props.history)}\n            noShadow\n            type={BUTTON_TYPE.LIGHT_BLUE}\n          >\n            {'< Back'}\n          </PaymintsButton>\n          <PaymintsButton\n            className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n            htmlType=\"submit\"\n            noShadow\n            type={BUTTON_TYPE.INVERSE_BLUE}\n            disabled={loadingCreditTransferTypes}\n          >\n            Review\n          </PaymintsButton>\n          {/* <PaymintsButton\n            className=\"create-account__save-come-back-button create-account__transfer-action-button\"\n            onClick={handleSubmit(e => onSubmit(e, true))}\n            noShadow\n            type={BUTTON_TYPE.LINK}\n          >\n            {'Save & Come Back Later'}\n          </PaymintsButton> */}\n          {error.active && (\n            <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n          )}\n        </div>\n\n      </form>\n    </BoxContainer>\n  );\n};\n\nexport default withRouter(\n  connect(state => ({}), {\n    onSaveTransferDoc: saveTransferDoc,\n  })(TransferDetails)\n);\n","import React from 'react';\nimport get from 'lodash/get';\nimport FormatAddress from '../../FormatAddress/FormatAddress';\nimport { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\n\n/**\n * Taking the purpose string and possible adjustment\n * @param {*} purpose\n */\nconst transformPurpose = purpose => {\n  if (!purpose) {\n    return '--';\n  }\n  return purpose;\n};\n\nfunction TransferSummary({ transfer }) {\n  return (\n    <div className=\"p-4 rounded bg-white mb-2 border\">\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\">Purpose</h6>\n        <span style={{ textTransform: 'capitalize' }}>\n          {transformPurpose(transfer?.purpose)}\n        </span>\n      </div>\n\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\">Subject Property</h6>\n        <FormatAddress\n          streetNumberName={get(transfer, 'propertyAddress1')}\n          apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n          city={get(transfer, 'propertyCity')}\n          state={get(transfer, 'propertyState')}\n          zipcode={get(transfer, 'propertyZipcode')}\n        />\n      </div>\n\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\">Transfer Amount</h6>\n        <div className=\"create-account__item-amount\">\n          <PaymintsNumberFormat\n            number={get(transfer, 'amount')}\n            decimals={2}\n            format=\"currency\"\n          />\n        </div>\n      </div>\n      {transfer?.fee ? (\n        <div className=\"mb-4\">\n          <h6 className=\"create-account__item-title\">Fee</h6>\n          <div className=\"create-account__item-amount\">\n            <PaymintsNumberFormat\n              number={transfer?.fee || 0}\n              decimals={2}\n              format=\"currency\"\n            />\n          </div>\n        </div>\n      ) : (\n        ''\n      )}\n\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\">Total</h6>\n        <div className=\"create-account__item-amount\">\n          <PaymintsNumberFormat\n            number={+transfer?.amount + (+transfer?.fee || 0)}\n            decimals={2}\n            format=\"currency\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default function MobileTransferSummary({\n  transfer,\n  bankAccount,\n  bankAccountLogo,\n  disbursement,\n}) {\n  return (\n    <div className=\"d-block d-lg-none d-xl-none\">\n      <TransferSummary\n        key={get(transfer, 'id')}\n        transfer={transfer}\n        bankAccount={bankAccount}\n        bankAccountLogo={bankAccountLogo}\n        disbursement={disbursement}\n      />\n    </div>\n  );\n}\n","import { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isNil from \"lodash/isNil\";\n\nconst CREATE_BANK_ACCOUNT_QUERY = gql`\n  mutation createBankAccount($bankAccount: BankAccountCreateInput!) {\n    createBankAccount(data: $bankAccount) {\n      id\n    }\n  }\n`;\n\nexport function useCreateBankAccount() {\n  const [createBankAccount, { loading, error, data }] = useMutation(\n    CREATE_BANK_ACCOUNT_QUERY\n  );\n  return {\n    createBankAccount,\n    loading,\n    error,\n    bank: data ? data.createBankAccount : undefined,\n  };\n}\n\nconst GET_BANK_ACCOUNTS_QUERY = gql`\n  query allBankAccounts($where: BankAccountWhereInput!) {\n    allBankAccounts(where: $where) {\n      id\n      bankName\n      description\n      institutionCode\n      accountLastFourDigits\n      bankDisplayName\n      accountNumber\n      active\n      updatedAt\n      createdAt\n    }\n  }\n`;\n\nexport function useAllBankAccountsByClient(clientID) {\n  const id = isNil(clientID) || isEmpty(clientID) ? null : clientID;\n  const { loading, error, data, refetch } = useQuery(GET_BANK_ACCOUNTS_QUERY, {\n    variables: { where: { client: { id }, active: true } },\n  });\n  return {\n    loading,\n    error,\n    refetch,\n    bankAccounts: data ? data.allBankAccounts : undefined,\n  };\n}\n\nconst GET_BANK_ACCOUNT_QUERY = gql`\n  query BankAccount($bankAccount: ID!) {\n    BankAccount(where: { id: $bankAccount }) {\n      id\n      bankName\n      description\n      institutionCode\n      accountNumber\n      accountLastFourDigits\n      bankDisplayName\n      active\n      updatedAt\n      createdAt\n    }\n  }\n`;\n\nexport function useBankAccount(id) {\n  const { loading, error, data, refetch } = useQuery(GET_BANK_ACCOUNT_QUERY, {\n    variables: { bankAccount: id },\n  });\n  return {\n    loading,\n    error,\n    refetch,\n    bankAccount: data ? data.BankAccount : undefined,\n  };\n}\n\nconst UPDATE_BANK_ACCOUNT = gql`\n  mutation updateBankAccount($id: ID!, $bankAccount: BankAccountUpdateInput!) {\n    updateBankAccount(id: $id, data: $bankAccount) {\n      id\n    }\n  }\n`;\n\nexport function useUpdateBankAccount() {\n  const [updateBankAccount, { loading, error, data }] = useMutation(\n    UPDATE_BANK_ACCOUNT\n  );\n  return {\n    updateBankAccount,\n    loadingDelete: loading,\n    error,\n    bankAccount: data ? data.updateBankAccount : undefined,\n  };\n}\n\nconst GET_ESCROW_BANK_ACCOUNT_QUERY = gql`\n  query EscrowAccount($destBankAccount: ID!) {\n    EscrowAccount(where: { id: $destBankAccount }) {\n      id\n      bankName\n      institutionCode\n      description\n      accountNumber\n      accountLastFourDigits\n      bankDisplayName\n      active\n      updatedAt\n      createdAt\n    }\n  }\n`;\n\nexport function useEscrowAccount(id) {\n  const { loading, error, data, refetch } = useQuery(\n    GET_ESCROW_BANK_ACCOUNT_QUERY,\n    {\n      variables: { destBankAccount: id },\n    }\n  );\n  return {\n    loading,\n    error,\n    refetch,\n    destBankAccount: data ? data.destBankAccount : undefined,\n  };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal } from 'react-bootstrap';\nimport { PaymintsButton, BUTTON_TYPE } from 'paymints-address-autocomplete-field';\nimport './contentModal.css';\n\nconst small = (props) => (\n    props.small ? ' content-modal--small' : ''\n)\n\nconst progress = (props) => (\n    props.progress ? ' content-modal--progress' : ''\n)\n\nconst ContentModal = (props) => (\n    <Modal\n        animation\n        autoFocus\n        backdrop\n        enforceFocus\n        show={props.isVisible}\n        onExit={props.onClose}\n        centered\n        onHide={props.hide ? props.onClose : null}\n        className={`content-modal${small(props)}${progress(props)} ${props.className}`}\n    >\n        <Modal.Header closeButton={!props.hideCloseButton}>\n            <Modal.Title id=\"contained-modal-title-vcenter\">{props.title}</Modal.Title>\n        </Modal.Header>\n        <Modal.Body className=\"content-modal__body\">\n            <div className=\"content-modal__content-data\">\n                {props.content}\n            </div>\n            <Modal.Footer>\n                {!props.withoutButtons ? \n                    props.isCancelButton ?\n                        (\n                            <PaymintsButton type={BUTTON_TYPE.LIGHT_BLUE} className=\"content-modal__button\" onClick={props.onSecondaryButton}>\n                                {props.secondaryButtonText}\n                            </PaymintsButton>\n                        ) :\n                        <PaymintsButton type={BUTTON_TYPE.INVERSE_BLUE} className=\"content-modal__button\" onClick={props.onPrimaryButton ? props.onPrimaryButton : props.onClose}>\n                            {props.primaryButtonText}\n                        </PaymintsButton>\n                    : null\n                }\n            </Modal.Footer>\n        </Modal.Body>\n    </Modal>\n);\n\nContentModal.propTypes = {\n    content: PropTypes.any,\n    isVisible: PropTypes.bool,\n    onSecondaryButton: PropTypes.func,\n    secondaryButtonText: PropTypes.string,\n    className: PropTypes.string,\n    small: PropTypes.bool,\n    isCancelButton: PropTypes.bool,\n    progress: PropTypes.bool,\n    title: PropTypes.string,\n    primaryButtonText: PropTypes.string,\n    onPrimaryButton: PropTypes.func,\n    onClose: PropTypes.func,\n    withoutButtons: PropTypes.bool,\n    hideCloseButton: PropTypes.bool,\n    hide: PropTypes.bool,\n    centered: PropTypes.bool,\n};\n\nContentModal.defaultProps = {\n    secondaryButtonText: 'Close',\n    small: false,\n    progress: false,\n    className: '',\n    title: '',\n    primaryButtonText: 'Close',\n    isCancelButton: false,\n    withoutButtons: false,\n    hideCloseButton: false,\n    hide: false,\n};\n\nexport default ContentModal;\n","/*\n * src/components/TransferSummary/TransferSummary.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm } from 'react-hook-form';\nimport { withRouter, Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { useStateMachine } from 'little-state-machine';\nimport moment from 'moment';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport { getQueryVariable } from '../../utils/util';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport {\n  PaymintsNumberFormat,\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport DestinationAccount from '../DestinationAccount/DestinationAccount';\nimport { useSaveTransfer } from '../../utils/service/service_transfer_api';\nimport MobileTransferSummary from './MobileTransferSummary/MobileTransferSummary';\nimport { getPlaidCreateClient } from '../../reducers/account/AccountActions';\nimport { startDwolla } from '../../reducers/transfer/TransferActions';\nimport FormatAddress from '../FormatAddress/FormatAddress';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { useBankAccount } from '../../utils/service/service_bank_api';\nimport arrow from '../../styles/assets/Arrow_right.svg';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport HeaderLogo from '../../styles/assets/lemon.png';\nimport ContentModal from '../ContentModal/ContentModal';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport {\n  extractNotesFromJson,\n  paymintsCurrencyFormatter,\n} from '../../utils/util';\n\nimport '../CreateAccountWizard/createAccount.css';\nimport './transfer-summary.css';\n\nconst Title = () => <div className=\"title\">Review</div>;\n\nconst InfoTransfer = () => (\n  <div className=\"infoTransfer\">\n    Please confirm that the information below is correct before continuing.\n  </div>\n);\n\n/**\n * Taking the purpose string and possible adjustment\n * @param {*} purpose\n */\nconst transformPurpose = purpose => {\n  if (!purpose) {\n    return '--';\n  }\n  return purpose;\n};\n\nconst DisplaySummationRows = ({ transfer }) => {\n  return (\n    <div className=\"summationContainer\">\n      <table>\n        <tbody>\n          <tr>\n            <td style={{ textTransform: 'capitalize' }}>{`${transformPurpose(\n              transfer?.purpose\n            )} Amount`}</td>\n            <td>{paymintsCurrencyFormatter(transfer?.amount || 0)}</td>\n          </tr>\n          {transfer?.fee && (\n            <tr>\n              <td>Convenience Fee</td>\n              <td>{paymintsCurrencyFormatter(transfer?.fee || 0)}</td>\n            </tr>\n          )}\n          <tr\n            style={{\n              borderTop: 'solid 1px #ccc',\n              paddingTop: '5px',\n              paddingBottom: '5px',\n            }}\n          >\n            <td />\n            <td className=\"transferTotalAmount\">Transfer Total Amount</td>\n          </tr>\n          <tr>\n            <td />\n            <td className=\"transferTotal\">\n              <PaymintsNumberFormat\n                number={+(transfer?.amount || 0) + +(transfer?.fee || 0)}\n                decimals={2}\n                format=\"currency\"\n              />\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  );\n};\n\nconst SummaryTransfer = ({\n  transfer,\n  bankAccount,\n  bankAccountLogo,\n  disbursement,\n}) => {\n  return (<>\n    <MobileTransferSummary\n      transfer={transfer}\n      bankAccount={bankAccount}\n      bankAccountLogo={bankAccountLogo}\n      disbursement={disbursement}\n    /> \n    <div className=\"sectionTitle\">Details</div>\n    <div className=\"detailsContainer\">\n      <div className=\"col\">\n        <div className=\"sectionTitle\">Transfer Date</div>\n        <p>{moment().format('MM/DD/YYYY')}</p>\n      </div>\n      <div className=\"col\">\n        <div className=\"sectionTitle\">Purpose</div>\n        <p style={{ textTransform: 'capitalize' }}>\n          {transformPurpose(transfer?.purpose)}\n        </p>\n      </div>\n      <div className=\"col\">\n        <div className=\"sectionTitle\">Subject Property</div>\n        <FormatAddress\n          streetNumberName={get(transfer, 'propertyAddress1')}\n          apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n          city={get(transfer, 'propertyCity')}\n          state={get(transfer, 'propertyState')}\n          zipcode={get(transfer, 'propertyZipcode')}\n        />\n      </div>\n      {transfer.office !== null ? (\n        <div className=\"col\">\n          <div className=\"sectionTitle\">Office</div>\n          <p>\n            {transfer?.office?.title} - {transfer?.office?.city},{' '}\n            {transfer?.office?.state}\n          </p>\n        </div>\n      ) : null}\n      {transfer.realtor !== null ? (\n        <div className=\"col\">\n          <div className=\"sectionTitle\">Real Estate Agent</div>\n          <p>\n            {' '}\n            {transfer?.realtor?.firstName} {transfer?.realtor?.lastName}{' '}\n            {transfer?.realtor?.email}\n          </p>\n        </div>\n      ) : null}\n      <div className=\"col\">\n        <div className=\"sectionTitle\">Note</div>\n        <p>{extractNotesFromJson(transfer?.notes || '')}</p>\n      </div>\n    </div>\n\n    <DisplaySummationRows transfer={transfer} />\n  </>)\n  \n};\n\nconst UseDifferentAccountLink = ({ account, transferDwolla, history }) => (\n  <div className=\"create-account__select-another-account-button\">\n    <Link\n      disabled={\n        get(account, 'createClient.isFetchingCreateClient') ||\n        get(transferDwolla, 'startDwolla.isFetchingStartDwolla')\n      }\n      to={{\n        pathname: '/create-account/step-select-account',\n        search: `${get(history, 'location.search')}`,\n        state: { fromSummary: true },\n      }}\n    >\n      <PaymintsButton\n        className=\"create-account__select-another-account-button\"\n        disabled={\n          get(account, 'createClient.isFetchingCreateClient') ||\n          get(transferDwolla, 'startDwolla.isFetchingStartDwolla')\n        }\n        loading={get(account, 'createClient.isFetchingCreateClient')}\n        noShadow\n        type={BUTTON_TYPE.LINK}\n      >\n        {'Use Different Account'}\n      </PaymintsButton>\n    </Link>\n  </div>\n);\n\nconst onClickBackButton = (history, disbursement, id) => {\n  if (!disbursement) {\n    history.push(`/create-account/step-3${get(history, 'location.search')}`);\n  } else {\n    history.push(\n      `/create-account/step-select-account?go_to_transfer=${id}?disbursement=\"select-bank\"`\n    );\n  }\n};\n\nconst onClickGoToTransferHistory = history => history.push('/transfer-history');\n\nconst buildLoaderModal = () => (\n  <div className=\"create-account__modal\">\n    <div className=\"create-account__modal-loading\">\n      <SpinnerLoader withoutMargin />\n    </div>\n    <div className=\"create-account__modal-info\">\n      Processing Fund Transfer ...\n    </div>\n  </div>\n);\n\nconst TransferSummary = props => {\n  const {\n    history,\n    client,\n    transfer,\n    onstartDwolla,\n    transferDwolla,\n    account,\n  } = props;\n  const { handleSubmit, getValues } = useForm({ defaultValues: transfer });\n  const { state, action } = useStateMachine(updateAction);\n  const { saveTransfer } = useSaveTransfer();\n  const { bankAccount } = useBankAccount(get(state, 'data.bankAccount.id', ''));\n  const { institutionLogo: bankAccountLogo } = useInstitutionLogo(\n    get(bankAccount, 'institutionCode', '')\n  );\n  const { destBankAccount } = useEscrowAccountFromTenant(\n    get(props, 'tenant.id', '')\n  );\n  const { institutionLogo } = useInstitutionLogo(\n    get(destBankAccount, 'institutionCode', '')\n  );\n\n  const [error, onSetError] = useState({ active: false, messageError: '' });\n  const [showModal, setShow] = useState(false);\n\n  const handleClose = () => setShow(false);\n  const handleShow = () => setShow(true);\n  const pathUrl = get(split(props.location.search, '?'), 2);\n  const disbursement = getQueryVariable(pathUrl, 'disbursement');\n\n  const onSubmit = (newTransfer, saveAsDraft = false) => {\n    const path = get(split(props.location.search, '?'), 1);\n    const transferId =\n      getQueryVariable(path, 'go_to_transfer') || get(transfer, 'id');\n    if (transferId) {\n      // const disbursementData = {\n      //   sourceBankAccountId: get(transfer, \"sourceBankAccount.id\"),\n      //   destBankAccountId: get(state, \"data.bankAccount.id\"),\n      //   transferId: transferId,\n      // };\n      const disbursementData = {\n        sourceBankAccountId: get(state, 'data.bankAccount.id', ''),\n        destBankAccountId: get(transfer, 'destBankAccount.id'),\n        transferId: transferId,\n      };\n\n      const data = {\n        sourceBankAccountId: get(state, 'data.bankAccount.id', ''),\n        destBankAccountId: get(transfer, 'destBankAccount.id'),\n        transferId: transferId,\n      };\n      if (saveAsDraft) {\n        saveTransfer({\n          variables: {\n            id: transferId,\n            transfer: {\n              status: 'draft',\n              tenant: {\n                connect: {\n                  id: get(props, 'tenant.id'),\n                },\n              },\n              sourceBankAccount: {\n                connect: {\n                  id: get(state, 'data.bankAccount.id'),\n                },\n              },\n            },\n          },\n        })\n          .then(response => {\n            handleClose();\n            props.refetchTransfer({\n              id: get(response, 'data.updateTransfer.id'),\n            });\n            action({ transfer: { ...props.transfer } });\n          })\n          .then(() => {\n            if (saveAsDraft) {\n              onClickGoToTransferHistory(props.history);\n            }\n          });\n      } else {\n        handleShow();\n        onSetError({ active: false, messageError: '' });\n        onstartDwolla(disbursement ? disbursementData : data, {\n          type: disbursement ? 'disbursement' : null,\n        }).then(response => {\n          if (!get(response, 'error')) {\n            handleClose();\n            saveTransfer({\n              variables: {\n                id: transferId,\n                transfer: {\n                  status: 'pending',\n                },\n              },\n            })\n              .then(response => {\n                props.refetchTransfer({\n                  id: get(response, 'data.updateTransfer.id'),\n                });\n                action({ transfer: { ...props.transfer } });\n              })\n              .then(() => {\n                if (saveAsDraft) {\n                  onClickGoToTransferHistory(props.history);\n                } else {\n                  if (!disbursement) {\n                    props.history.push(`/create-account/success`);\n                  } else {\n                    const path = get(split(props.location.search, '?'), 1);\n                    const transferId =\n                      getQueryVariable(path, 'go_to_transfer') || '';\n                    props.history.push(\n                      `/create-account/success?go_to_transfer=${transferId}?disbursement=success`\n                    );\n                  }\n                }\n              });\n          } else {\n            const customErrMsg = `Unfortunately, your transfer cannot be completed at this time due to connectivity issues with your financial institution. Please provide the closer with a certified check or contact ${\n              props.tenant.name\n            } at ${props.tenant.pocPhone ??\n              'their primary phone number'} or email ${props.tenant\n              .supportEmail ??\n              'them'} to get wiring instructions specific to your transaction. We apologize for any inconvenience.`;\n\n            handleClose();\n            onSetError({\n              active: true,\n              // messageError: get(response, \"message\"),\n              messageError: customErrMsg,\n            });\n          }\n        });\n      }\n    }\n  };\n  const path = get(split(props.location.search, '?'), 1);\n  const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n  const values = getValues();\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n\n  return (\n    <>\n      <ContentModal\n        isVisible={showModal}\n        onClose={handleClose}\n        content={buildLoaderModal()}\n        small\n        withoutButtons\n        hideCloseButton\n      />\n      <BoxContainer withDoubleBorder withLogButton>\n        <Title disbursement={disbursement} />\n        <form onSubmit={handleSubmit(e => onSubmit(e, false))}>\n          {/* review and please confirm...*/}\n          <InfoTransfer />\n\n          {/* from account -> to account */}\n          <div className=\"create-account__destination-account\">\n            <DestinationAccount\n              title={`Transfer From:`}\n              logoURL={disbursement ? HeaderLogo : ''}\n              bankName={\n                !disbursement\n                  ? get(bankAccount, 'bankName')\n                  : get(destBankAccount, 'bankName')\n              }\n              accountLastFourDigits={\n                !disbursement\n                  ? get(bankAccount, 'accountLastFourDigits')\n                  : get(destBankAccount, 'accountLastFourDigits')\n              }\n              description={\n                !disbursement\n                  ? get(bankAccount, 'bankDisplayName')\n                  : get(destBankAccount, 'bankDisplayName')\n              }\n              escrowAccountLogo={\n                !disbursement\n                  ? get(bankAccountLogo, 'logoURL')\n                  : get(institutionLogo, 'logoURL')\n              }\n              name={`${get(client, 'firstName')} ${get(client, 'lastName')}`}\n              tenantName={disbursement ? get(props, 'tenant.name') : ''}\n              address1={\n                !disbursement\n                  ? get(client, 'address1')\n                  : get(props, 'tenant.address1')\n              }\n              apartmentSuiteNumber={\n                !disbursement\n                  ? get(client, 'address2')\n                  : get(props, 'tenant.address2')\n              }\n              city={\n                !disbursement ? get(client, 'city') : get(props, 'tenant.city')\n              }\n              state={\n                !disbursement\n                  ? get(client, 'state')\n                  : get(props, 'tenant.state')\n              }\n              zipcode={\n                !disbursement\n                  ? get(client, 'zipcode')\n                  : get(props, 'tenant.zipcode')\n              }\n              type={!disbursement ? `from` : `to`}\n            >\n              <div\n                className=\"create-account__use-different-account-link\"\n                hidden={bankAccount}\n              >\n                <UseDifferentAccountLink\n                  account={account}\n                  transferDwolla={transferDwolla}\n                  history={history}\n                  disbursement={disbursement}\n                />\n              </div>\n            </DestinationAccount>\n            <img\n              className=\"create-account__destination-account-arrow-logo d-none d-lg-block\"\n              src={arrow}\n              alt=\"\"\n            />\n            <DestinationAccount\n              title={`Transfer To:`}\n              logoURL={!disbursement ? HeaderLogo : ''}\n              bankName={\n                disbursement\n                  ? get(bankAccount, 'bankName')\n                  : get(destBankAccount, 'bankName')\n              }\n              accountLastFourDigits={\n                disbursement\n                  ? get(bankAccount, 'accountLastFourDigits')\n                  : get(destBankAccount, 'accountLastFourDigits')\n              }\n              description={\n                disbursement\n                  ? get(bankAccount, 'bankDisplayName')\n                  : get(destBankAccount, 'bankDisplayName')\n              }\n              escrowAccountLogo={\n                disbursement\n                  ? get(bankAccountLogo, 'logoURL')\n                  : get(institutionLogo, 'logoURL')\n              }\n              tenantName={get(props, 'tenant.name')}\n              address1={\n                disbursement\n                  ? get(client, 'address1')\n                  : get(props, 'tenant.address1')\n              }\n              apartmentSuiteNumber={\n                disbursement\n                  ? get(client, 'address2')\n                  : get(props, 'tenant.address2')\n              }\n              city={\n                disbursement ? get(client, 'city') : get(props, 'tenant.city')\n              }\n              state={\n                disbursement ? get(client, 'state') : get(props, 'tenant.state')\n              }\n              zipcode={\n                disbursement\n                  ? get(client, 'zipcode')\n                  : get(props, 'tenant.zipcode')\n              }\n              type={disbursement ? `from` : `to`}\n            />\n          </div>\n\n          {/* the \"Details\" section */}\n          <SummaryTransfer\n            transfer={values}\n            bankAccount={bankAccount}\n            disbursement={disbursement}\n            bankAccountLogo={get(bankAccountLogo, 'logoURL')}\n          />\n\n          <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n            <PaymintsButton\n              className=\"mr-4 create-account__transfer-action-button mobile__make-transfer-action-button\"\n              disabled={get(\n                transferDwolla,\n                'startDwolla.isFetchingStartDwolla'\n              )}\n              onClick={() => {\n                props.refetchTransfer({\n                  id: transferId,\n                });\n                onClickBackButton(props.history, disbursement, transferId);\n              }}\n              noShadow\n              type={BUTTON_TYPE.LIGHT_BLUE}\n            >\n              <span className=\"button__name\">{'< Back'}</span>\n            </PaymintsButton>\n            <PaymintsButton\n              htmlType=\"submit\"\n              disabled={get(\n                transferDwolla,\n                'startDwolla.isFetchingStartDwolla'\n              )}\n              className=\"mr-4 create-account__transfer-action-button mobile__make-transfer-action-button\"\n              loading={get(transferDwolla, 'startDwolla.isFetchingStartDwolla')}\n              noShadow\n              type={BUTTON_TYPE.INVERSE_BLUE}\n            >\n              <span className=\"button__name\">\n                {!disbursement ? 'Make Transfer' : 'Accept Payment'}\n              </span>\n            </PaymintsButton>\n            {/* <PaymintsButton\n              disabled={get(\n                transferDwolla,\n                'startDwolla.isFetchingStartDwolla'\n              )}\n              className=\"create-account__save-come-back-button create-account__transfer-action-button\"\n              onClick={() => {\n                if (disbursement) {\n                  return history.push('/transfer-history');\n                } else {\n                  return handleSubmit(e => onSubmit(e, true));\n                }\n              }}\n              noShadow\n              type={BUTTON_TYPE.LINK}\n            >\n              <span className=\"button__name\">{'Save & Come Back Later'}</span>\n            </PaymintsButton> */}\n            {error.active && (\n              <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n            )}\n          </div>\n        </form>\n      </BoxContainer>\n    </>\n  );\n};\n\nexport default withRouter(\n  connect(\n    state => ({\n      account: state.account,\n      transferDwolla: state.transfer,\n    }),\n    {\n      onGetPlaidCreateClient: getPlaidCreateClient,\n      onstartDwolla: startDwolla,\n    }\n  )(TransferSummary)\n);","/*\n * src/components/TransferSuccess/EmailAddresses.jsx\n * Description: PAYAPP-967 refactor\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nconst EmailAddresses = ({ register, errors }) => {\n  return (\n    <div className=\"create-account__container-email\">\n      {[1, 2, 3, 4, 5].map((m) => {\n        const marker = `email${m}`;\n        return (\n          <div className=\"create-account__email-input\" key={m}>\n            <input\n              type=\"email\"\n              id={marker}\n              name={marker}\n              className=\"create-account__input form-control padding-bottom-10\"\n              placeholder=\"Add email address\"\n              ref={register({\n                maxLength: 50,\n                /* eslint-disable no-control-regex */\n                pattern: /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/,\n              })}\n              autoComplete=\"no\"\n            />\n            {errors[marker] && errors[marker].type === \"maxLength\" && (\n              <span style={{ color: \"#c30\" }}>Max length exceeded</span>\n            )}\n            {errors[marker] && errors[marker].type === \"pattern\" && (\n              <span style={{ color: \"#c30\" }}>Invalid email format</span>\n            )}\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n\nexport default EmailAddresses;\n","/*\n * src/components/TransferSuccess/InfoDisbursement.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nconst InfoDisbursement = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__subtitle-information\">\n      You should see the funds deposited into your account within the next 1-3\n      business days. Check your email for a transaction summary receipt.\n    </div>\n  </div>\n);\n\nexport default InfoDisbursement;\n","/*\n * InfoEmail.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nconst InfoEmail = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__subtitle light-black with-margin\">\n      You can send a receipt of this transfer to up to 5 people. If you wish to\n      do so, please enter their email addresses below:\n    </div>\n  </div>\n);\n\nexport default InfoEmail;\n","/*\n * src/components/TransferSuccess/InfoTransfer.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\n\nconst InfoTransfer = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__subtitle-information\">\n      You should expect to see the money come out of your account within the\n      next business day. Check your email for a transfer summary receipt.\n    </div>\n  </div>\n);\n\nexport default InfoTransfer;\n","/*\n * SuccessTitle.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\n\nconst SuccessTitle = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__title\">Your transfer is now pending.</div>\n  </div>\n);\n\nexport default SuccessTitle;\n","import React from 'react';\nimport get from 'lodash/get';\nimport FormatAddress from '../../FormatAddress/FormatAddress';\nimport { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\n\nfunction TransferSuccess({\n  transfer,\n  bankAccount,\n  destAccount,\n  bankAccountLogo,\n  escrowAccountLogo,\n  disbursement,\n  tenant,\n}) {\n  const tenantName = get(tenant, 'name');\n  const address1 = get(tenant, 'address1');\n  const address2 = get(tenant, 'address2');\n  const city = get(tenant, 'city');\n  const state = get(tenant, 'state');\n  const zipcode = get(tenant, 'zipcode');\n  const office = get(transfer, 'office.title');\n  return (\n    <div className=\"p-4 rounded bg-white mb-2 border\">\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\">Subject Property:</h6>\n        <FormatAddress\n          streetNumberName={get(transfer, 'propertyAddress1')}\n          apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n          city={get(transfer, 'propertyCity')}\n          state={get(transfer, 'propertyState')}\n          zipcode={get(transfer, 'propertyZipcode')}\n        />\n      </div>\n\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\">Transfer Amount:</h6>\n        <div className=\"create-account__item-amount\">\n          <PaymintsNumberFormat\n            number={(+transfer?.amount || 0) + (+transfer?.fee || 0)}\n            decimals={2}\n            format=\"currency\"\n          />\n        </div>\n      </div>\n\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\"> Transfer From Account:</h6>\n        <div className=\"create-account__bank-information\">\n          <div className=\"create-account__bank-information-logo\">\n            {disbursement ? null : (\n              <img\n                className=\"create-account__bank-information-icon-logo\"\n                src={bankAccountLogo}\n                alt=\"\"\n              />\n            )}\n          </div>\n          <div className=\"create-account__bank-information-account\">\n            {disbursement ? (\n              <div className=\"create-account__bank-information-account\">\n                {tenantName}\n                <br />\n                {address1}\n                {address2 !== null ? (\n                  <>\n                    <br />\n                    {address2}\n                  </>\n                ) : null}\n                <br />\n                {city}, {state} {zipcode}\n                <br />\n                {office}\n              </div>\n            ) : (\n              get(bankAccount, 'bankName')\n            )}\n            <br />\n            {disbursement\n              ? null\n              : `X${get(bankAccount, 'accountLastFourDigits')}`}\n          </div>\n        </div>\n      </div>\n\n      <div className=\"mb-4\">\n        <h6 className=\"create-account__item-title\"> Transfer To Account:</h6>\n        <div className=\"create-account__bank-information\">\n          <div className=\"create-account__bank-information-logo\">\n            {disbursement ? (\n              <img\n                className=\"create-account__bank-information-icon-logo\"\n                src={bankAccountLogo}\n                alt=\"\"\n              />\n            ) : null}\n          </div>\n          <div className=\"create-account__bank-information-account\">\n            {disbursement ? (\n              `${get(bankAccount, 'bankName')}`\n            ) : (\n              <div className=\"create-account__bank-information-account\">\n                {tenantName}\n                <br />\n                {address1}\n                {address2 !== null ? (\n                  <>\n                    <br />\n                    {address2}\n                  </>\n                ) : null}\n                <br />\n                {city}, {state} {zipcode}\n                <br />\n                {office}\n              </div>\n            )}\n            <br />\n            {disbursement\n              ? `X${get(bankAccount, 'accountLastFourDigits')}`\n              : null}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default function MobileTransferSuccess({\n  transfer,\n  bankAccount,\n  destAccount,\n  bankAccountLogo,\n  escrowAccountLogo,\n  tenant,\n  disbursement,\n}) {\n  return (\n    <div className=\"d-block d-lg-none d-xl-none\">\n      <TransferSuccess\n        key={get(transfer, 'id')}\n        transfer={transfer}\n        bankAccount={bankAccount}\n        destAccount={destAccount}\n        bankAccountLogo={bankAccountLogo}\n        escrowAccountLogo={escrowAccountLogo}\n        tenant={tenant}\n        disbursement={disbursement}\n      />\n    </div>\n  );\n}\n//Commented out due to deployment issue\n// import React from 'react';\n// import get from 'lodash/get';\n// import FormatAddress from '../../FormatAddress/FormatAddress';\n// import { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\n\n// function TransferSuccess({\n//   transfer,\n//   bankAccount,\n//   bankEscrowAccount,\n//   bankAccountLogo,\n//   escrowAccountLogo,\n// }) {\n//   return (\n//     <div className=\"p-4 rounded bg-white mb-2 border\">\n//       <div className=\"mb-4\">\n//         <h6 className=\"create-account__item-title\">Subject Property:</h6>\n//         <FormatAddress\n//           streetNumberName={get(transfer, 'propertyAddress1')}\n//           apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n//           city={get(transfer, 'propertyCity')}\n//           state={get(transfer, 'propertyState')}\n//           zipcode={get(transfer, 'propertyZipcode')}\n//         />\n//       </div>\n\n//       <div className=\"mb-4\">\n//         <h6 className=\"create-account__item-title\">Transfer Amount:</h6>\n//         <div className=\"create-account__item-amount\">\n//           <PaymintsNumberFormat\n//             number={(+transfer?.amount || 0) + (+transfer?.fee || 0)}\n//             decimals={2}\n//             format=\"currency\"\n//           />\n//         </div>\n//       </div>\n\n//       <div className=\"mb-4\">\n//         <h6 className=\"create-account__item-title\"> Transfer From Account:</h6>\n//         <div className=\"create-account__bank-information\">\n//           <div className=\"create-account__bank-information-logo\">\n//             <img\n//               className=\"create-account__bank-information-icon-logo\"\n//               src={bankAccountLogo}\n//               alt=\"\"\n//             />\n//           </div>\n//           <div className=\"create-account__bank-information-account\">\n//             {!disbursement\n//               ? get(bankAccount, 'bankName')\n//               : get(destBankAccount, 'bankName')}\n//             <br />\n//             {!disbursement\n//               ? get(bankAccount, 'accountLastFourDigits')\n//               : get(destBankAccount, 'accountLastFourDigits')}\n//           </div>\n//         </div>\n//       </div>\n\n//       <div className=\"mb-4\">\n//         <h6 className=\"create-account__item-title\"> Transfer To Account:</h6>\n//         <div className=\"create-account__bank-information\">\n//           <div className=\"create-account__bank-information-logo\">\n//             <img\n//               className=\"create-account__bank-information-icon-logo\"\n//               src={escrowAccountLogo}\n//               alt=\"\"\n//             />\n//           </div>\n//           <div className=\"create-account__bank-information-account\">\n//             {!disbursement\n//               ? get(destBankAccount, 'bankName')\n//               : get(bankAccount, 'bankName')}\n//             <br />\n//             {!disbursement\n//               ? get(destBankAccount, 'accountLastFourDigits')\n//               : get(bankAccount, 'accountLastFourDigits')}\n//           </div>\n//         </div>\n//       </div>\n//     </div>\n//   );\n// }\n\n// export default function MobileTransferSuccess({\n//   transfer,\n//   bankAccount,\n//   bankEscrowAccount,\n//   bankAccountLogo,\n//   escrowAccountLogo,\n// }) {\n//   return (\n//     <div className=\"d-block d-lg-none d-xl-none\">\n//       <TransferSuccess\n//         key={get(transfer, 'id')}\n//         transfer={transfer}\n//         bankAccount={bankAccount}\n//         bankEscrowAccount={bankEscrowAccount}\n//         bankAccountLogo={bankAccountLogo}\n//         escrowAccountLogo={escrowAccountLogo}\n//       />\n//     </div>\n//   );\n// }\n","/*\n * src/components/TransferSuccess/SuccessLastRow.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\nimport get from 'lodash/get';\nimport moment from 'moment';\n\nimport { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\nimport FormatAddress from '../FormatAddress/FormatAddress';\n\nimport {\n  extractNotesFromJson,\n  paymintsCurrencyFormatter,\n} from '../../utils/util';\n\nimport './transfer-success.css';\n\n/**\n * Taking the purpose string and possible adjustment\n * @param {*} purpose\n */\nconst transformPurpose = purpose => {\n  if (!purpose) {\n    return '--';\n  }\n  return purpose;\n};\n\nconst DisplaySummationRows = ({ transfer }) => {\n  return (\n    <div className=\"summationContainer\">\n      <table>\n        <tbody>\n          <tr>\n            <td style={{ textTransform: 'capitalize' }}>{`${transformPurpose(\n              transfer?.purpose\n            )} Amount`}</td>\n            <td>{paymintsCurrencyFormatter(transfer?.amount || 0)}</td>\n          </tr>\n          {transfer?.fee && (\n            <tr>\n              <td>Convenience Fee</td>\n              <td>{paymintsCurrencyFormatter(transfer?.fee || 0)}</td>\n            </tr>\n          )}\n          <tr\n            style={{\n              borderTop: 'solid 1px #ccc',\n              paddingTop: '5px',\n              paddingBottom: '5px',\n            }}\n          >\n            <td />\n            <td className=\"transferTotalAmount\">Transfer Total Amount</td>\n          </tr>\n          <tr>\n            <td />\n            <td className=\"transferTotal\">\n              <PaymintsNumberFormat\n                number={+(transfer?.amount || 0) + +(transfer?.fee || 0)}\n                decimals={2}\n                format=\"currency\"\n              />\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  );\n};\n\nconst SuccessLastRow = ({ transfer }) => {\n  return (\n    <>\n      <div className=\"sectionTitle\">Details</div>\n      <div className=\"detailsContainer\">\n        <div className=\"col\">\n          <div className=\"sectionTitle\">Transfer Date</div>\n          <p>{moment().format('MM/DD/YYYY')}</p>\n        </div>\n        <div className=\"col\">\n          <div className=\"sectionTitle\">Purpose</div>\n          <p style={{ textTransform: 'capitalize' }}>\n            {transformPurpose(transfer?.purpose)}\n          </p>\n        </div>\n        <div className=\"col\">\n          <div className=\"sectionTitle\">Subject Property</div>\n          <FormatAddress\n            streetNumberName={get(transfer, 'propertyAddress1')}\n            apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n            city={get(transfer, 'propertyCity')}\n            state={get(transfer, 'propertyState')}\n            zipcode={get(transfer, 'propertyZipcode')}\n          />\n        </div>\n        {transfer.office !== null ? (\n          <div className=\"col\">\n            <div className=\"sectionTitle\">Office</div>\n            <p>\n              {transfer.office.title} - {transfer.office.city},{' '}\n              {transfer.office.state}\n            </p>\n          </div>\n        ) : null}\n        {transfer.realtor !== null ? (\n          <div className=\"col\">\n            <div className=\"sectionTitle\">Realtor</div>\n            <p>\n              {transfer.realtor.firstName} {transfer.realtor.lastName},{' '}\n              {transfer.realtor.email}\n            </p>\n          </div>\n        ) : null}\n        <div className=\"col\">\n          <div className=\"sectionTitle\">Note</div>\n          <p>{extractNotesFromJson(transfer?.notes || '')}</p>\n        </div>\n      </div>\n\n      <DisplaySummationRows transfer={transfer} />\n    </>\n  );\n\n  /*\n\n  return (\n    <div className=\"create-account__row create-account__box\">\n      <div className=\"row\">\n        <div className=\"col-xs-12 create-account__transfer-details-title\">\n          Transfer Details\n        </div>\n      </div>\n      <div className=\"create-account__transfer-details-row\">\n        <div className=\"create-account__transfer-details-label\">\n          Transfer Date\n        </div>\n        <div className=\"create-account__transfer-details-value\">\n          {moment().format(\"MM/DD/YYYY\")}\n        </div>\n      </div>\n      <div className=\"create-account__transfer-details-row\">\n        <div className=\"create-account__transfer-details-label\">Property</div>\n        <div className=\"create-account__transfer-details-value\">\n          {formatAddressStreetApartment(\n            get(transfer, \"propertyAddress1\"),\n            get(transfer, \"propertyAddress2\")\n          )}{\" \"}\n          {formatAddressCityStateZipCode(\n            get(transfer, \"propertyCity\"),\n            get(transfer, \"propertyState\"),\n            get(transfer, \"propertyZipcode\")\n          )}\n        </div>\n      </div>\n      <div className=\"create-account__transfer-details-row\">\n        <div className=\"create-account__transfer-details-label\">Purpose</div>\n        <div className=\"create-account__transfer-details-value\">\n          <span style={{ textTransform: \"capitalize\" }}>\n            {`${transfer?.purpose ?? \" \"}`}\n          </span>\n        </div>\n      </div>\n      <div className=\"create-account__transfer-details-row\">\n        <div className=\"create-account__transfer-details-label\">Note</div>\n        <div className=\"create-account__transfer-details-value\">\n          <span style={{ textTransform: \"capitalize\" }}>\n            {extractNotesFromJson(transfer?.notes || \"\")}\n          </span>\n        </div>\n      </div>\n    </div>\n  );\n  */\n};\n\nexport default SuccessLastRow;\n","/*\n * src/components/TransferSuccess/SuccessSecondRow.jsx\n * Description: second row for a transfer record\n * Copyright (c) 2021 PredictiveUX\n */\n\nimport React from 'react';\nimport get from 'lodash/get';\n\nimport arrow from '../../styles/assets/Arrow_right.svg';\n\nconst SuccessSecondRow = ({\n  bankAccount,\n  destAccount,\n  bankAccountLogo,\n  escrowAccountLogo,\n  tenant,\n  disbursement,\n  transfer,\n}) => {\n  const tenantName = get(tenant, 'name');\n  const address1 = get(tenant, 'address1');\n  const address2 = get(tenant, 'address2');\n  const city = get(tenant, 'city');\n  const state = get(tenant, 'state');\n  const zipcode = get(tenant, 'zipcode');\n  const office = get(transfer, 'office.title');\n  return (\n    <div className='create-account__row'>\n      <div className='row create-account__item-title-container'>\n        <div className='col-xs-6 create-account__item-title'>From</div>\n        <div className='col-xs-6 create-account__item-title-receiver'>To</div>\n      </div>\n      <div\n        className={!disbursement ? `row` : `row create-account__flex-revers`}\n      >\n        <div className={`col-xs-5 create-account__item-text`}>\n          <div className='create-account__bank-information'>\n            <div className='create-account__bank-information-logo'>\n              <img\n                className='create-account__bank-information-icon-logo'\n                src={bankAccountLogo}\n                alt=''\n              />\n            </div>\n            <div className=\"create-account__bank-information-account\">\n              {get(bankAccount, 'bankName')}\n              <br />\n              Account X\n              {get(bankAccount, 'accountLastFourDigits')\n                ? get(bankAccount, 'accountLastFourDigits')\n                : ''}\n            </div>\n          </div>\n        </div>\n        <img\n          className='create-account__destination-account-arrow-logo d-none d-lg-block'\n          src={arrow}\n          alt=''\n        />\n        <div className='col-xs-4 create-account__item-text'>\n          <div className='create-account__bank-information'>\n            <div className='create-account__bank-information-account'>\n              {tenantName}\n              <br />\n              {address1}\n              {address2 !== null ? (\n                <>\n                  <br />\n                  {address2}\n                </>\n              ) : null}\n              <br />\n              {city}, {state} {zipcode}\n              <br />\n              {office}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default SuccessSecondRow\n","/*\n * SummaryTransfer.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\n\nimport MobileTransferSuccess from './MobileTransferSuccess/MobileTransferSuccess';\nimport SuccessLastRow from './SuccessLastRow';\nimport SuccessSecondRow from './SuccessSecondRow';\n\nconst SummaryTransfer = ({\n  transfer,\n  bankAccount,\n  destAccount,\n  bankAccountLogo,\n  escrowAccountLogo,\n  tenant,\n  disbursement,\n}) => (\n  <div className=\"create-account__container-info\">\n    <>\n      <MobileTransferSuccess\n        transfer={transfer}\n        bankAccount={bankAccount}\n        destAccount={destAccount}\n        bankAccountLogo={bankAccountLogo}\n        escrowAccountLogo={escrowAccountLogo}\n        disbursement={disbursement}\n        tenant={tenant}\n      />\n      <div className=\"d-none d-lg-block\">\n        <SuccessSecondRow\n          transfer={transfer}\n          tenant={tenant}\n          bankAccount={bankAccount}\n          destAccount={destAccount}\n          bankAccountLogo={bankAccountLogo}\n          escrowAccountLogo={escrowAccountLogo}\n          disbursement={disbursement}\n        />\n        <SuccessLastRow transfer={transfer} hidden={!disbursement} />\n      </div>\n    </>\n  </div>\n);\n\nexport default SummaryTransfer;\n","/*\n * src/components/TransferSuccess/TransferSuccess.jsx\n * Description: Transfer success page\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { connect } from 'react-redux';\nimport { useForm } from 'react-hook-form';\nimport { withRouter, Link } from 'react-router-dom';\nimport { useStateMachine } from 'little-state-machine';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport ContentModal from '../ContentModal/ContentModal';\nimport { useBankAccount } from '../../utils/service/service_bank_api';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { sendEmailReceipt } from '../../reducers/transfer/TransferActions';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport { getQueryVariable } from '../../utils/util';\n// import { InsuranceBannerAd } from \"../BannerAds/\";\n\n// local imports\nimport EmailAddresses from './EmailAddresses';\nimport InfoDisbursement from './InfoDisbursement';\nimport InfoEmail from './InfoEmail';\nimport InfoTransfer from './InfoTransfer';\nimport SuccessTitle from './SuccessTitle';\nimport SummaryTransfer from './SummaryTransfer';\n\nimport '../CreateAccountWizard/createAccount.css';\n\nconst buildReceiptModal = message => (\n  <div className=\"create-account__modal\">\n    <div className=\"create-account__modal-info my-4\">{message}</div>\n  </div>\n);\n\n/**\n *\n * @param {*} props\n * @returns\n */\nconst TransferSuccess = props => {\n  const { register, handleSubmit, errors } = useForm({\n    defaultValues: props.transfer,\n  });\n  const { state, action } = useStateMachine(updateAction);\n  const tenant = get(props, 'tenant');\n  const { bankAccount } = useBankAccount(get(state, 'data.bankAccount.id', ''));\n  const { destAccount } = useEscrowAccountFromTenant(\n    get(props, 'tenant.id', '')\n  );\n  const { institutionLogo: bankAccountLogo } = useInstitutionLogo(\n    get(bankAccount, 'institutionCode', '')\n  );\n  const { institutionLogo: escrowAccountLogo } = useInstitutionLogo(\n    get(destAccount, 'institutionCode', '')\n  );\n  const [showModal, setShow] = useState({ active: false, message: '' });\n  const pathUrl = get(split(props.location.search, '?'), 2);\n  const disbursement = getQueryVariable(pathUrl, 'disbursement');\n  const handleClose = () => setShow({ active: false, message: '' });\n  const handleShow = ({ message }) =>\n    setShow({ active: true, message: message });\n\n  const onSubmit = emailAddresses => {\n    // compile a UNIQUE list of email addresses supplied in the form\n    /* eslint-disable array-callback-return */\n    const uniqueEmailAddressList = [\n      ...new Set(\n        Object.keys(emailAddresses)\n          .map(m => {\n            if (emailAddresses[m]) return emailAddresses[m];\n          })\n          .filter(f => f)\n      ),\n    ];\n\n    if (uniqueEmailAddressList.length === 0) {\n      handleShow({ message: 'No emails provided.' });\n      return;\n    }\n\n    const data = {\n      transfer: get(props, 'transfer'),\n      TRANSFER_GUID: get(props, 'transfer.id'),\n      additionalEmailRecipient: uniqueEmailAddressList,\n    };\n\n    props.onSendEmailReceipt(data).then(response => {\n      if (get(response, 'error')) {\n        handleShow({\n          message: 'Failed to send email.  Please try again later.',\n        });\n      } else {\n        action({ emailAddresses });\n        handleShow({ message: 'Receipt successfully sent!' });\n      }\n    });\n  };\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n\n  return (\n    <>\n      <ContentModal\n        isVisible={showModal.active}\n        onClose={handleClose}\n        content={buildReceiptModal(showModal.message)}\n        small\n        hide\n      />\n      <BoxContainer withDoubleBorder withLogButton>\n        <SuccessTitle />\n\n        {/* disbursement or non-disbursement */}\n        {!disbursement ? <InfoTransfer /> : <InfoDisbursement />}\n\n        {/* this is the from -> to arrow component */}\n        <SummaryTransfer\n          transfer={get(state, 'data.transfer')}\n          tenant={tenant}\n          bankAccount={bankAccount}\n          destAccount={destAccount}\n          bankAccountLogo={get(bankAccountLogo, 'logoURL')}\n          escrowAccountLogo={get(escrowAccountLogo, 'logoURL')}\n          disbursement={disbursement}\n        />\n        <InfoEmail />\n\n        <form onSubmit={handleSubmit(onSubmit)}>\n          <EmailAddresses register={register} errors={errors} />\n          <div className=\"create-account__send-account-button\">\n            <PaymintsButton\n              htmlType=\"submit\"\n              className=\"create-account__button send\"\n              noShadow\n              disabled={\n                get(\n                  props.transferService,\n                  'sendEmailReceipt.isFetchingSendEmailReceipt'\n                ) || errors.length > 0\n              }\n              loading={get(\n                props.transferService,\n                'sendEmailReceipt.isFetchingSendEmailReceipt'\n              )}\n              type={BUTTON_TYPE.INVERSE_BLUE}\n            >\n              {'Send'}\n            </PaymintsButton>\n          </div>\n        </form>\n        <div className=\"create-account__footer-buttons\">\n          <Link to=\"/transfer-history\">\n            <PaymintsButton\n              className=\"create-account__button\"\n              noShadow\n              type={BUTTON_TYPE.INVERSE_BLUE}\n            >\n              {'Transfer history'}\n            </PaymintsButton>\n          </Link>\n        </div>\n      </BoxContainer>\n    </>\n  );\n};\n\nexport default withRouter(\n  connect(\n    state => ({\n      transferService: state.transfer,\n    }),\n    {\n      onSendEmailReceipt: sendEmailReceipt,\n    }\n  )(TransferSuccess)\n);\n","import get from 'lodash/get';\nimport find from 'lodash/find';\n\nconst SelectedBankAccount = ({\n  plaidResponse,\n  history,\n  client,\n  tenant,\n  action,\n  setValue,\n  onGetPlaidCreateClient,\n  onGetPlaidStartMicrodepoits,\n  onGetBankAccounts,\n  nextStep,\n  onSetError,\n  onSetErrorClient,\n  onSetLoadingService,\n  handleClose,\n  verified,\n  manual,\n  accountRequest,\n  navigateAccounts,\n}) => {\n  const bankAccounts = plaidResponse;\n  const getAction = get(action);\n\n  const clientID = get(client, 'id');\n  const tenantID = get(tenant, 'id');\n  let data = {};\n  if (verified || manual) {\n    data = {\n      id: clientID,\n      ...accountRequest,\n    };\n  } else {\n    data = {\n      id: clientID,\n      plaidAccountId: get(bankAccounts, 'metadata.account.id'),\n      publicToken: get(plaidResponse, 'token'),\n    };\n  }\n  let status = bankAccounts.metadata?.account?.verification_status;\n  let fetchServer = !status\n    ? onGetPlaidCreateClient\n    : onGetPlaidStartMicrodepoits;\n  return fetchServer(data, tenantID).then(responsePlaid => {\n    if (!get(responsePlaid, 'error')) {\n      if (!manual) {\n        onSetErrorClient({ active: false, messageError: '' });\n      }\n      setTimeout(() => {\n        onGetBankAccounts(clientID)\n          .then(response => {\n            if (!get(response, 'error')) {\n              const bankAccounts = get(response, 'accounts');\n              const bankAccountSelectedID = get(responsePlaid, 'bankAccountId');\n              const bankAccountSelected = find(bankAccounts, [\n                'id',\n                bankAccountSelectedID,\n              ]);\n              if (bankAccountSelected && action) {\n                action({\n                  bankAccount: {\n                    id: get(bankAccountSelected, 'id'),\n                    balance: get(bankAccountSelected, 'balance'),\n                  },\n                });\n                setValue('selection', get(bankAccountSelected, 'id'));\n              }\n              if (!manual) {\n                onSetError({ active: false, messageError: '' });\n              }\n            } else {\n              if (!manual) {\n                onSetError({\n                  active: true,\n                  messageError: get(response, 'message'),\n                });\n              }\n            }\n          })\n          .then(() => {\n            onSetLoadingService(false);\n          })\n          .then(() => {\n            const { status } = responsePlaid;\n            if (!manual) {\n              handleClose();\n            }\n            if (status === 'verify' && !manual) {\n              history.push(`/create-account/error`, {\n                ...responsePlaid,\n                ...{ plaidResponse },\n              });\n            }\n            if (navigateAccounts && manual) {\n              history.push(`/bank-accounts`);\n            }\n          });\n      }, 8000);\n    } else {\n      onSetLoadingService(false);\n      if (!manual) {\n        handleClose();\n        onSetErrorClient({\n          active: true,\n          messageError: get(responsePlaid, 'message'),\n        });\n      }\n    }\n  });\n};\n\nexport default SelectedBankAccount;\n","import React, { useState } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport SelectedBankAccounts from '../PlaidButton/SelectedBankAccount';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport { getPlaidCreateClient } from '../../reducers/account/AccountActions';\nimport { getClientAccounts } from '../../reducers/account/AccountActions';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport { connect } from 'react-redux';\nimport { validateAccountinfo } from '../../utils/validations';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore } from '../../utils/util';\nimport ContentModal from '../ContentModal/ContentModal';\n\nconst buildLoaderModal = () => (\n  <div className=\"create-account__modal\">\n    <div className=\"create-account__modal-loading\">\n      <SpinnerLoader withoutMargin />\n    </div>\n    <div className=\"create-account__modal-info\">Loading please wait...</div>\n  </div>\n);\n\nconst AccountError = props => {\n  const { action } = useStateMachine(updateAction);\n  const [isLoading, onSetLoadingService] = useState(false);\n  const initialSate = {\n    plaidInfoToVerify: {\n      address1: '',\n      city: '',\n      firstName: '',\n      lastName: '',\n      zipcode: '',\n      state: '',\n    },\n    accessToken: '',\n  };\n  const { state } = props.history.location;\n  let { plaidInfoToVerify } = state || initialSate;\n  const { plaidResponse, accessToken } = state || initialSate;\n  const accountRequest = {\n    accessToken,\n    plaidAccountId: plaidResponse.metadata.account.id,\n    verified: 'true',\n    manual: 'true',\n  };\n  //plaidResponse.metadata.account.id\n  const { updateClient } = useUpdateClient();\n  const { user } = getClientStore();\n  const { client } = useClientByPhone(user.mobilePhone);\n  const { register, handleSubmit, errors, control, setValue } = useForm({\n    defaultValues: client,\n  });\n  const onSubmit = newUser => {\n    updateClient({\n      variables: {\n        id: client.id,\n        client: newUser,\n      },\n    }).then(() => {\n      delete accountRequest.manual;\n      onSetLoadingService(true);\n      SelectedBankAccounts({\n        plaidResponse,\n        history: props.history,\n        client,\n        action,\n        setValue,\n        onGetPlaidCreateClient: props.onGetPlaidCreateClient,\n        onGetBankAccounts: props.onGetBankAccounts,\n        verified: 'true',\n        manual: 'true',\n        onSetLoadingService,\n        accountRequest,\n        navigateAccounts: true,\n      });\n    });\n  };\n  return (\n    <>\n      <ContentModal\n        isVisible={isLoading}\n        content={buildLoaderModal()}\n        small\n        withoutButtons\n        hideCloseButton\n      />\n      <BoxContainer widest withLogButton withDoubleBorder>\n        <div className=\"create-account__line-container\">\n          <div className=\"create-account__title\">Error</div>\n        </div>\n        <div className=\"create-account__line-container\">\n          <div className=\"create-account__subtitle with-margin\">\n            Your transfer is not complete.\n          </div>\n        </div>\n        <div className=\"create-account__information-container create-account__no-margine\">\n          <div className=\"create-account__subtitle-information\">\n            The information you entered{' '}\n            <span className=\"text text-danger\"></span> does not match your bank\n            account records. Please choose how you would like to proceed:\n          </div>\n        </div>\n        <form onSubmit={handleSubmit(onSubmit)}>\n          <div className=\"create-account__information-container\">\n            <BoxContainer internalBox withBorder>\n              <div\n                className=\"form-group\"\n                hidden={plaidInfoToVerify.firstName === client.firstName}\n              >\n                <label>You Entered First Name</label>\n                <input\n                  type=\"text\"\n                  placeholder=\" \"\n                  id=\"firstName\"\n                  name=\"firstName\"\n                  className=\"create-account__input form-control account__control_width\"\n                  ref={register({\n                    required: true,\n                    maxLength: 30,\n                    validate: value =>\n                      validateAccountinfo(value, plaidInfoToVerify.firstName),\n                  })}\n                />\n                {errors.firstName && errors.firstName.type === 'required' && (\n                  <ErrorMessageInput>This is required</ErrorMessageInput>\n                )}\n                {errors.firstName && errors.firstName.type === 'validate' && (\n                  <ErrorMessageInput>\n                    Your Account details are not matching with bank details\n                  </ErrorMessageInput>\n                )}\n                <div className=\"create-account__message-container\">\n                  <div className=\"create-account__bank-label\">\n                    Your bank account shows\n                  </div>\n                  <div className=\"create-account__user-label\">\n                    {plaidInfoToVerify ? plaidInfoToVerify.firstName : ''}\n                  </div>\n                </div>\n              </div>\n              <div\n                className=\"form-group\"\n                hidden={plaidInfoToVerify.lastName === client.lastName}\n              >\n                <label>You Entered Last Name</label>\n                <input\n                  type=\"text\"\n                  id=\"lastName\"\n                  placeholder=\" \"\n                  name=\"lastName\"\n                  className=\"create-account__input form-control account__control_width\"\n                  ref={register({\n                    required: true,\n                    maxLength: 30,\n                    validate: value =>\n                      validateAccountinfo(value, plaidInfoToVerify.lastName),\n                  })}\n                />\n                {errors.lastName && errors.lastName.type === 'required' && (\n                  <ErrorMessageInput>This is required</ErrorMessageInput>\n                )}\n                {errors.lastName && errors.lastName.type === 'validate' && (\n                  <ErrorMessageInput>\n                    Your Account details are not matching with bank details\n                  </ErrorMessageInput>\n                )}\n                <div className=\"create-account__message-container\">\n                  <div className=\"create-account__bank-label\">\n                    Your bank account shows:\n                  </div>\n                  <div className=\"create-account__user-label\">\n                    {plaidInfoToVerify ? plaidInfoToVerify.lastName : ''}\n                  </div>\n                </div>\n              </div>\n              <div\n                className=\"form-group\"\n                hidden={plaidInfoToVerify.address1 === client.address1}\n              >\n                <label>You Entered Address1</label>\n                <input\n                  type=\"text\"\n                  name=\"address1\"\n                  placeholder=\" \"\n                  className=\"create-account__input form-control account__control_width\"\n                  autoComplete=\"no\"\n                  ref={register({\n                    required: true,\n                    validate: value =>\n                      validateAccountinfo(value, plaidInfoToVerify.address1),\n                  })}\n                />\n                {errors.address1 && errors.address1.type === 'required' && (\n                  <ErrorMessageInput>This is required</ErrorMessageInput>\n                )}\n                {errors.address1 && errors.address1.type === 'validate' && (\n                  <ErrorMessageInput>\n                    Your Account details are not matching with bank details\n                  </ErrorMessageInput>\n                )}\n                <div className=\"create-account__message-container\">\n                  <div className=\"create-account__bank-label\">\n                    Your bank account shows:\n                  </div>\n                  <div className=\"create-account__user-label\">\n                    {plaidInfoToVerify ? plaidInfoToVerify.address1 : ''}\n                  </div>\n                </div>\n              </div>\n              <div\n                className=\"form-group\"\n                hidden={plaidInfoToVerify.city === client.city}\n              >\n                <label>You Entered city</label>\n                <input\n                  type=\"text\"\n                  name=\"city\"\n                  placeholder=\" \"\n                  className=\"create-account__input form-control account__control_width\"\n                  autoComplete=\"no\"\n                  ref={register({\n                    required: true,\n                    validate: value =>\n                      validateAccountinfo(value, plaidInfoToVerify.city),\n                  })}\n                />\n                {errors.city && errors.city.type === 'required' && (\n                  <ErrorMessageInput>This is required</ErrorMessageInput>\n                )}\n                {errors.city && errors.city.type === 'validate' && (\n                  <ErrorMessageInput>\n                    Your Account details are not matching with bank details\n                  </ErrorMessageInput>\n                )}\n                <div className=\"create-account__message-container\">\n                  <div className=\"create-account__bank-label\">\n                    Your bank account shows:\n                  </div>\n                  <div className=\"create-account__user-label\">\n                    {plaidInfoToVerify ? plaidInfoToVerify.city : ''}\n                  </div>\n                </div>\n              </div>\n              <div\n                className=\"form-group\"\n                hidden={plaidInfoToVerify.state === client.state}\n              >\n                <label>You Entered state</label>\n                <Controller\n                  as={Select}\n                  control={control}\n                  name=\"state\"\n                  rules={{ required: true }}\n                  options={states}\n                  className=\"create-account__input form-control account__control_width\"\n                />\n                <div className=\"create-account__message-container\">\n                  <div className=\"create-account__bank-label\">\n                    Your bank account shows:\n                  </div>\n                  <div className=\"create-account__user-label\">\n                    {plaidInfoToVerify ? plaidInfoToVerify.state : ''}\n                  </div>\n                </div>\n                {errors.state && errors.state.type === 'required' && (\n                  <ErrorMessageInput>This is required</ErrorMessageInput>\n                )}\n              </div>\n              <div\n                className=\"form-group\"\n                hidden={plaidInfoToVerify.zipcode === client.zipcode}\n              >\n                <label>You Entered zipcode</label>\n                <input\n                  type=\"text\"\n                  name=\"zipcode\"\n                  placeholder=\" \"\n                  className=\"create-account__input form-control account__control_width\"\n                  autoComplete=\"no\"\n                  ref={register({\n                    required: true,\n                    validate: value =>\n                      validateAccountinfo(value, plaidInfoToVerify.zipcode),\n                  })}\n                />\n                <div className=\"create-account__message-container\">\n                  <div className=\"create-account__bank-label\">\n                    Your bank account shows:\n                  </div>\n                  <div className=\"create-account__user-label\">\n                    {plaidInfoToVerify ? plaidInfoToVerify.zipcode : ''}\n                  </div>\n                </div>\n                {errors.zipcode && errors.zipcode.type === 'required' && (\n                  <ErrorMessageInput>This is required</ErrorMessageInput>\n                )}\n                {errors.zipcode && errors.zipcode.type === 'validate' && (\n                  <ErrorMessageInput>\n                    Your Account details are not matching with bank details\n                  </ErrorMessageInput>\n                )}\n              </div>\n              <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n                <PaymintsButton\n                  className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n                  noShadow\n                  type={BUTTON_TYPE.INVERSE_BLUE}\n                  htmlType=\"submit\"\n                >\n                  Save and Continue\n                </PaymintsButton>\n                <PaymintsButton\n                  className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n                  noShadow\n                  type={BUTTON_TYPE.LIGHT_BLUE}\n                  onClick={() => {\n                    onSetLoadingService(true);\n                    SelectedBankAccounts({\n                      plaidResponse,\n                      history: props.history,\n                      client,\n                      action,\n                      setValue,\n                      onGetPlaidCreateClient: props.onGetPlaidCreateClient,\n                      onGetBankAccounts: props.onGetBankAccounts,\n                      verified: 'true',\n                      manual: 'true',\n                      onSetLoadingService,\n                      accountRequest,\n                      navigateAccounts: true,\n                    });\n                  }}\n                >\n                  Override\n                </PaymintsButton>\n              </div>\n            </BoxContainer>\n          </div>\n        </form>\n      </BoxContainer>\n    </>\n  );\n};\n\nexport default withRouter(\n  connect(\n    state => ({\n      account: state.account,\n    }),\n    {\n      onGetBankAccounts: getClientAccounts,\n      onGetPlaidCreateClient: getPlaidCreateClient,\n    }\n  )(AccountError)\n);\n","import React, { useCallback, useEffect } from 'react';\nimport { usePlaidLink } from 'react-plaid-link';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport './plaid-button.css';\n\nexport default function PlaidAddBankAccountButton({\n  product,\n  onSuccess,\n  onExit,\n  disabled,\n  isOpen,\n  isAddBank,\n  token,\n  config,\n  ...props\n}) {\n  const onPlaidSuccess = useCallback(\n    (token, metadata) => {\n      if (typeof onSuccess !== 'function') return;\n      onSuccess({ token, metadata });\n    },\n    [onSuccess]\n  );\n\n  config = config\n    ? config\n    : {\n        clientName: 'Paymints.io',\n        client_id: process.env.REACT_APP_PLAID_CLIENT_ID,\n        env: process.env.REACT_APP_PLAID_ENVIRONMENT || 'sandbox',\n        product: product || ['auth'],\n        auth: {\n          flow_type: 'FLEXIBLE_AUTH',\n        },\n        selectAccount: true,\n        onSuccess: onPlaidSuccess,\n        onExit,\n        token: token,\n      };\n\n  const { error, open, ready } = usePlaidLink({ ...config });\n  useEffect(() => {\n    if (isOpen) {\n      open();\n    }\n  }, [isOpen, open]);\n\n  return (\n    <>\n      <PaymintsButton\n        disabled={disabled || error || !ready}\n        onClick={open}\n        noShadow\n        type={BUTTON_TYPE.INVERSE_BLUE}\n        {...props}\n      >\n        {props.children}\n      </PaymintsButton>\n    </>\n  );\n}\n","import React, { useCallback, useEffect } from 'react';\nimport { usePlaidLink } from 'react-plaid-link';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport './plaid-button.css';\n\nexport default function PlaidVerifyButton({\n  product,\n  onSuccess,\n  onExit,\n  disabled,\n  isOpen,\n  isAddBank,\n  config,\n  ...props\n}) {\n  const onPlaidSuccess = useCallback(\n    (token, metadata) => {\n      if (typeof onSuccess !== 'function') return;\n      onSuccess({ token, metadata });\n    },\n    [onSuccess]\n  );\n\n  config = { ...config, onSuccess: onPlaidSuccess };\n\n  const { error, open, ready } = usePlaidLink({ ...config });\n  useEffect(() => {\n    if (isOpen) {\n      open();\n    }\n  }, [isOpen, open]);\n\n  return (\n    <>\n      <PaymintsButton\n        disabled={disabled || error || !ready}\n        onClick={open}\n        noShadow\n        type={BUTTON_TYPE.INVERSE_BLUE}\n        {...props}\n      >\n        {props.children}\n      </PaymintsButton>\n    </>\n  );\n}\n","import axios from 'axios';\nimport storeService from '../hooks/useStore';\n\nconst { getAuthToken } = storeService();\nconst authToken = getAuthToken('authToken') || process.env.REACT_APP_AUTH_TOKEN;\n\nconst request = axios.create({\n  baseURL: process.env.REACT_APP_BACKEND_URL, // https://api.paymints.dev\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-Token',\n  headers: {\n    'Content-Type': 'application/json',\n    Authorization: `Bearer ${authToken}`,\n  },\n});\n\nconst domainRequest = axios.create({\n  baseURL: process.env.REACT_APP_DOMAIN_URL,\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-Token',\n  headers: {\n    'Content-Type': 'application/json',\n    Authorization: `Bearer ${authToken}`,\n  },\n});\n\nconst graphqlAsyncRequest = query => {\n  return axios({\n    url: process.env.REACT_APP_GRAPH_QL_URL,\n    method: 'POST',\n    data: {\n      query,\n    },\n    xsrfCookieName: 'XSRF-TOKEN',\n    xsrfHeaderName: 'X-XSRF-Token',\n    headers: {\n      'Content-Type': 'application/json',\n      Authorization: `Bearer ${authToken}`,\n    },\n  });\n};\n\nexport default request;\nexport { domainRequest, graphqlAsyncRequest };\n","export default function storeService() {\n  const setData = (key, user) => {\n    return sessionStorage.setItem(key, JSON.stringify(user))\n  }\n  const getUser = () => {\n    const user = sessionStorage.getItem('user')\n    return user ? { user: JSON.parse(user) } : { user: undefined }\n  }\n  const getAuthToken = () => {\n    const authToken = sessionStorage.getItem('authToken')\n    return authToken\n  }\n  const getbykey = key => {\n    const data = sessionStorage.getItem(key)\n    return data ? JSON.parse(data) : undefined\n  }\n  const clearStore = () => {\n    return sessionStorage.clear()\n  }\n  const removeStoreByKey = key => {\n    return sessionStorage.removeItem(key)\n  }\n  return {\n    setData,\n    getUser,\n    getAuthToken,\n    getbykey,\n    clearStore,\n    removeStoreByKey,\n  }\n}\n","import React from 'react';\n\nexport default function FieldRadioButton({\n  name,\n  action,\n  handleChange,\n  checked,\n  ...props\n}) {\n  return (\n    <input\n      className=\"bank-accounts__checkbox\"\n      type=\"radio\"\n      name=\"selection\"\n      {...props}\n      onChange={e => handleChange(e)}\n      checked={checked ? 'checked' : null}\n    />\n  );\n}\n","import React from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport get from \"lodash/get\";\nimport \"./disconnectModal.scss\";\n\nconst DisconnectModal = ({\n  showDisconnectModal,\n  setShowDisconnectModal,\n  onReloadBankAccounts,\n  id,\n  onDisconnectBankAccount,\n  onSetError,\n}) => {\n  return (\n    <>\n      <Modal\n        show={showDisconnectModal}\n        backdrop=\"static\"\n        centered={true}\n        keyboard={false}\n        style={{ opacity: 1 }}\n        onHide={() => setShowDisconnectModal(false)}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title>Disconnect Bank Account</Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          Are you sure you want to disconnect this bank account?\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            variant=\"secondary\"\n            onClick={() => {\n              setShowDisconnectModal(false);\n            }}\n          >\n            No\n          </Button>\n          <Button\n            variant=\"danger\"\n            onClick={() => {\n              onDisconnectBankAccount({ bankAccountId: id }).then(\n                (response) => {\n                  if (!get(response, \"error\")) {\n                    onReloadBankAccounts(true);\n                    onSetError({ active: false, messageError: \"\" });\n                  } else {\n                    onSetError({\n                      active: true,\n                      messageError: get(response, \"message\"),\n                    });\n                  }\n                }\n              );\n            }}\n          >\n            Yes\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\nexport default DisconnectModal;\n","/*\n * src/components/BankAccounts/AddAccountTooltip.jsx\n * Description: PAYAPP-1085\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nimport questionIcon from \"../../styles/assets/icon_question.svg\";\nimport pncLogo from \"../../styles/assets/icon_pnc.png\";\nimport \"./addAccountTooltip.css\";\n\nconst AddAccountTooltip = ({ dismissHandler, isVisible, plaidButton }) => {\n  const closePNCNotification = () => {\n    const el = document.getElementById(\"pncFlyover\");\n    if (el) {\n      el.style.left = \"245px\";\n      el.style.opacity = \"0\";\n      el.style.pointerEvents = \"none\";\n    }\n  };\n\n  const openPNCNotification = () => {\n    const el = document.getElementById(\"pncFlyover\");\n    if (el) {\n      el.style.left = \"0px\";\n      el.style.opacity = \"1\";\n      el.style.pointerEvents = \"all\";\n    }\n  };\n  return (\n    <div\n      id=\"add-account-container\"\n      className=\"add-account-container\"\n      hidden={!isVisible}\n    >\n      <div id=\"pncFlyover\">\n        <div className=\"notification\">\n          <div className=\"content\">\n            <div className=\"closeIcon\" role=\"button\" tabIndex=\"0\">\n              <i className=\"fa fa-times\" onClick={closePNCNotification} />\n            </div>\n            <div className=\"notice\">Bank Notice</div>\n            <div className=\"disclaimer\">\n              The bank you selected is not supported by our 3rd party \n              service provider used to connect to your bank.<br/>\n              Please try another bank that is supported on the platform \n              or contact your title agency or real estate brokerage \n              for alternative methods of payment.\n            </div>\n          </div>\n        </div>\n      </div>\n      <div id=\"add-account-arrow\"></div>\n      <div id=\"add-account-tooltip\">\n        <div\n          id=\"add-account-close-icon\"\n          role=\"button\"\n          tabIndex=\"0\"\n          onClick={() => dismissHandler(false)}\n          onKeyUp={() => dismissHandler(false)}\n        >\n          <i className=\"fa fa-times\" />\n        </div>\n        <div id=\"add-account-content\">\n          <div className=\"title\">\n            Connect to over 16,000 banks\n          </div>\n          <div className=\"findMyBank\" onClick={() => dismissHandler(false)}>\n            {plaidButton}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default AddAccountTooltip;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport get from 'lodash/get';\nimport map from 'lodash/map';\nimport size from 'lodash/size';\nimport find from 'lodash/find';\nimport format from 'dateformat';\nimport Table from 'react-bootstrap/Table';\nimport { Controller } from 'react-hook-form';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport {\n  getClientAccounts,\n  disconnectBankAccount,\n} from '../../reducers/account/AccountActions';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { useInstitutionLogoOR } from '../../utils/service/service_institution_logo';\nimport PlaidButton from '../PlaidButton/PlaidButton';\nimport PlaidAddBankAccountButton from '../PlaidButton/PlaidAddBankAccountButton';\nimport PlaidVerifyButton from '../PlaidButton/PlaidVerifyButton';\nimport usePlaidTokenForMicroDepositsStart from '../../hooks/plaid/usePlaidTokenForMicrodepositStart';\nimport SelectedBankAccounts from '../PlaidButton/SelectedBankAccount';\nimport {\n  getPlaidCreateClient,\n  getPlaidStartMicrodepoits,\n  getPlaidVerifyMicrodepoits,\n} from '../../reducers/account/AccountActions';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport FieldRadioButton from '../FieldRadioButton/FieldRadioButton';\nimport DisconnectModal from '../DisconnectModal/disconnectModal';\nimport { getClientStore } from '../../utils/util';\nimport { getQueryVariable } from '../../utils/util';\nimport AddAccountTooltip from './AddAccountTooltip';\nimport './bankAccounts.css';\n\n///move after testing\n\n// axios.defaults.headers.common = {\n//   Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n// };\nconst Title = ({ isSelectAccount }) => (\n  <div className=\"bank-accounts__line-container\">\n    <div className=\"bank-accounts__title\">\n      {isSelectAccount ? 'Select an Account' : 'Linked Bank Accounts'}\n    </div>\n  </div>\n);\n\nconst Subtitle = ({ disbursement }) => (\n  <div className=\"create-account__line-container\">\n    {disbursement ? (\n      <div className=\"create-account__info-account\">\n        Please select the account for depositing your funds:\n      </div>\n    ) : (\n      <div className=\"create-account__info-account\">\n        Please select the account you want to transfer money from:\n      </div>\n    )}\n  </div>\n);\n\nconst mobile = window.screen.width < 450;\n\n/**\n * @function\n * Handle potential null balance for account\n */\nconst nullBalanceHandler = balance => {\n  if (balance) {\n    return '$' + balance.toFixed(2);\n  }\n  return '$__.__';\n};\n\nconst BuildRow = ({\n  Controller,\n  bankAccount,\n  control,\n  setValue,\n  isSelectAccount,\n  onDisconnectBankAccount,\n  onGetPlaidVerifyMicrodepoits,\n  onSetError,\n  action,\n  register,\n  onReloadBankAccounts,\n  institutionsLogo,\n  state,\n  bankAccounts,\n  client,\n  tenant,\n  reloadingBankAccounts\n}) => {\n  const clientId = get(client, 'id');\n  const tenantId = get(tenant, 'id');\n  const id = get(bankAccount, 'id');\n  let balanceDateTime = get(bankAccount, 'balanceDateTime');\n  const timeFormat = 'h:MM TT Z';\n  const dateFormat = 'mm/dd/yyyy';\n  const date = format(balanceDateTime, dateFormat);\n  const time = format(balanceDateTime, timeFormat);\n  const institution = get(bankAccount, 'bankName');\n  const balance = get(bankAccount, 'balance');\n  const accountLastFourDigits = get(bankAccount, 'accountNumber')\n    ? get(bankAccount, 'accountNumber')\n    : '';\n  const institutionCode = get(bankAccount, 'institutionCode');\n  const institutionLogo = get(\n    find(institutionsLogo, ['institutionCode', institutionCode]),\n    'logoURL'\n  );\n  const [showDisconnectModal, setShowDisconnectModal] = useState(false);\n  const [isOpen, setIsOpen] = useState(false);\n  let [linkToken, setlinkToken] = useState(false);\n  let [bankAccountId, setBankAccountId] = useState(false);\n\n  const NavyFederalCreditUnionSavingsAccount =\n    bankAccount.bankName === 'Navy Federal Credit Union' &&\n    bankAccount.name.includes('Saving');\n\n    \n\n  const onSuccess1 = data => {\n    let body = {\n      id: clientId,\n      tenantId: tenantId,\n      bankAccountId: bankAccountId,\n    };\n\n    axios\n      .post(\n        `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/verify`,\n        body,\n        {\n          headers: {\n            'Content-Type': 'application/json',\n            Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n          },\n        }\n      )\n      .then(() => {\n        onReloadBankAccounts(true);\n      });\n  };\n\n  const getTokenResponse = async () => {\n    let tokenResponse = await axios({\n      url: `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/link-token`,\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n      },\n      data: {\n        bankAccountId: bankAccountId,\n        id: clientId,\n        tenantId: tenantId,\n      },\n    });\n    return tokenResponse.data.linkToken;\n  };\n\n  const verificationStart = bankID => {\n    setBankAccountId(bankID);\n    setIsOpen(true);\n  };\n\n  useEffect(() => {\n    if (bankAccountId) {\n      getTokenResponse().then(token => {\n        setlinkToken(token);\n      });\n    }\n  }, [bankAccountId]);\n\n  return (\n    <React.Fragment key={id}>\n      <DisconnectModal\n        showDisconnectModal={showDisconnectModal}\n        setShowDisconnectModal={setShowDisconnectModal}\n        onReloadBankAccounts={onReloadBankAccounts}\n        id={id}\n        onDisconnectBankAccount={onDisconnectBankAccount}\n        onSetError={onSetError}\n      />\n      <tr\n        style={{\n          backgroundColor: NavyFederalCreditUnionSavingsAccount\n            ? '#C0C0C0'\n            : null,\n        }}\n      >\n        <td className=\"bank-accounts__item-text\">\n          <div className=\"bank-accounts__item-bank\">\n            {isSelectAccount && !NavyFederalCreditUnionSavingsAccount ? (\n              <Controller\n                as={FieldRadioButton}\n                control={control}\n                name=\"selection\"\n                disabled={bankAccount.pendingVerification}\n                className=\"bank-accounts__checkbox\"\n                value={id}\n                handleChange={() => {\n                  setValue([{ selection: id }]);\n                  action({ bankAccount: { id: id, balance: balance } });\n                }}\n                checked={get(state, 'data.bankAccount.id') === id}\n              />\n            ) : null}\n            <img\n              className=\"bank-accounts__bank-icon\"\n              src={institutionLogo}\n              alt=\"\"\n            />\n            <div className=\"bank-accounts__bank-institution\" alt=\"\">\n              {institution}\n            </div>\n          </div>\n        </td>\n        <td className=\"bank-accounts__item-text\">X{accountLastFourDigits}</td>\n        <td className=\"bank-accounts__item-balance\">\n          {!balance ? (\n            <div className=\"bank-accounts__item-text amountRow\">--</div>\n          ) : (\n            <span>\n              <div className=\"bank-accounts__item-text\">\n                {nullBalanceHandler(balance)}\n              </div>\n              <div className=\"bank-accounts__item-date\">{`as of ${date}`}</div>\n              <div className=\"bank-accounts__item-time\">{`${time}`}</div>\n              {!balance && (\n                <p className=\"bank-accounts__null-balance-error\">\n                  We're having trouble retrieving your current balance.\n                </p>\n              )}\n            </span>\n          )}\n        </td>\n        {!isSelectAccount ? (\n          !balance ? (\n            <td className=\"bank-accounts__item-text center\">--</td>\n          ) : (\n            <td className=\"bank-accounts__item-text center\">\n              <i\n                className=\"fas fa-sync-alt bank-accounts__update-icon\"\n                onClick={() => reloadingBankAccounts()}\n              />\n            </td>\n          )\n        ) : null}\n        {!isSelectAccount ? (\n          <td className=\"bank-accounts__item-text center\">\n            <i\n              className=\"fas fa-minus-circle bank-accounts__disconnect-icon\"\n              onClick={() => {\n                setShowDisconnectModal(true);\n              }}\n            />\n          </td>\n        ) : null}\n        {\n          <td className=\"bank-accounts__item-text center\">\n            {bankAccount.pendingVerification ? (\n              <div>\n                <PlaidVerifyButton\n                  config={{ token: linkToken }}\n                  onClick={() => verificationStart(bankAccount.id)}\n                  isOpen={isOpen}\n                  onSuccess={onSuccess1}\n                >\n                  VERIFY\n                </PlaidVerifyButton>\n              </div>\n            ) : !NavyFederalCreditUnionSavingsAccount ? (\n              'Verified'\n            ) : (\n              'Unsupported'\n            )}\n          </td>\n        }\n      </tr>\n      {/*  Navy Federal Credit Union saving account error message  */}\n      {NavyFederalCreditUnionSavingsAccount && (\n        <td colspan=\"6\" style={{ color: 'red' }}>\n          Navy Federal Credit Union savings accounts are non-transactional.\n          Please move funds to Navy Federal checking account and link the\n          checking account. Alternatively, please link another bank account.\n          Thank you.\n        </td>\n      )}\n    </React.Fragment>\n  );\n};\nconst SmallTable = ({\n  key,\n  bankAccount,\n  onDisconnectBankAccount,\n  isSelectAccount,\n  action,\n  register,\n  onReloadBankAccounts,\n  institutionsLogo,\n  state,\n  onSetError,\n  setValue,\n  control,\n  client,\n  tenant,\n}) => {\n  const clientId = get(client, 'id');\n  const tenantId = get(tenant, 'id');\n  const id = get(bankAccount, 'id');\n\n  let balanceDateTime = get(bankAccount, 'balanceDateTime');\n  const timeFormat = 'h:MM TT Z';\n  const dateFormat = 'mm/dd/yyyy';\n  const date = format(balanceDateTime, dateFormat);\n  const time = format(balanceDateTime, timeFormat);\n  const institution = get(bankAccount, 'bankName');\n  const balance = get(bankAccount, 'balance');\n  const accountLastFourDigits = get(bankAccount, 'accountNumber')\n    ? get(bankAccount, 'accountNumber')\n    : '';\n  const institutionCode = get(bankAccount, 'institutionCode');\n  const institutionLogo = get(\n    find(institutionsLogo, ['institutionCode', institutionCode]),\n    'logoURL'\n  );\n  const [showDisconnectModal, setShowDisconnectModal] = useState(false);\n  const [isOpen, setIsOpen] = useState(false);\n  let [linkToken, setlinkToken] = useState(false);\n  let [bankAccountId, setBankAccountId] = useState(false);\n\n  const NavyFederalCreditUnionSavingsAccount =\n    bankAccount.bankName === 'Navy Federal Credit Union' &&\n    bankAccount.name.includes('Saving');\n\n  const onSuccess1 = data => {\n    let body = {\n      id: clientId,\n      tenantId: tenantId,\n      bankAccountId: bankAccountId,\n    };\n\n    axios\n      .post(\n        `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/verify`,\n        body,\n        {\n          headers: {\n            'Content-Type': 'application/json',\n            Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n          },\n        }\n      )\n      .then(res => {\n        window.location.reload();\n      });\n    // setTimeout(() => window.location.reload(), 3000);\n  };\n\n  const getTokenResponse = async () => {\n    let tokenResponse = await axios({\n      url: `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/link-token`,\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n      },\n      data: {\n        bankAccountId: bankAccountId,\n        id: clientId,\n        tenantId: tenantId,\n      },\n    });\n    return tokenResponse.data.linkToken;\n  };\n\n  const verificationStart = bankID => {\n    setBankAccountId(bankID);\n    setIsOpen(true);\n  };\n\n  useEffect(() => {\n    if (bankAccountId) {\n      getTokenResponse().then(token => {\n        setlinkToken(token);\n      });\n    }\n  }, [bankAccountId]);\n  return (\n    <div\n      className={\n        isSelectAccount && NavyFederalCreditUnionSavingsAccount\n          ? 'bank-accounts__mobile-border-navy-federal-credit-union-unsupported-account-warning'\n          : isSelectAccount && !NavyFederalCreditUnionSavingsAccount\n          ? `bank-accounts__mobile-border`\n          : !isSelectAccount && NavyFederalCreditUnionSavingsAccount\n          ? 'bank-accounts__mobile-navy-federal-credit-union-unsupported-account-warning'\n          : `bank-accounts__mobile`\n      }\n      key={key}\n    >\n      {isSelectAccount && !NavyFederalCreditUnionSavingsAccount ? (\n        <div className=\"f-left\">\n          <Controller\n            as={FieldRadioButton}\n            control={control}\n            name=\"selection\"\n            disabled={bankAccount.pendingVerification}\n            className=\"bank-accounts__checkbox\"\n            value={id}\n            handleChange={() => {\n              setValue([{ selection: id }]);\n              action({ bankAccount: { id: id, balance: balance } });\n            }}\n            checked={get(state, 'data.bankAccount.id') === id}\n          />\n          <img\n            className=\"bank-accounts__bank-icon\"\n            src={institutionLogo}\n            alt=\"\"\n          />\n        </div>\n      ) : (\n        <div className=\"f-left\">\n          <img\n            className=\"bank-accounts__bank-icon\"\n            src={institutionLogo}\n            alt=\"\"\n          />\n        </div>\n      )}\n      <div\n        className={\n          isSelectAccount\n            ? `contentSec f-left`\n            : `contentSec f-left contentSec_width`\n        }\n      >\n        <p>\n          {institution} X{accountLastFourDigits}\n        </p>\n        {!balance ? (\n          <div className=\"bank-accounts__item-text amountRow\">--</div>\n        ) : (\n          <span>\n            <div className=\"bank-accounts__item-text\">\n              {nullBalanceHandler(balance)}\n            </div>\n            <div className=\"bank-accounts__item-date\">{`as of ${date}`}</div>\n            <div className=\"bank-accounts__item-time\">{`${time}`}</div>\n            {!balance && (\n              <p className=\"bank-accounts__null-balance-error\">\n                We're having trouble retrieving your current balance.\n              </p>\n            )}\n          </span>\n        )}\n\n        {!isSelectAccount ? (\n          <div className=\"iconSec\">\n            <p className=\"f-left\">\n              <i\n                className=\"fas fa-minus-circle bank-accounts__disconnect-icon\"\n                onClick={() => {\n                  onDisconnectBankAccount({ bankAccountId: id }).then(\n                    response => {\n                      if (!get(response, 'error')) {\n                        onReloadBankAccounts(true);\n                        onSetError({ active: false, messageError: '' });\n                      } else {\n                        onSetError({\n                          active: true,\n                          messageError: get(response, 'message'),\n                        });\n                      }\n                    }\n                  );\n                }}\n              />\n              Disconnect\n            </p>\n            {!balance ? null : (\n              <p className=\"f-left\">\n                <i\n                  className=\"fas fa-sync-alt bank-accounts__update-icon\"\n                  onClick={() => onReloadBankAccounts(true)}\n                />\n                Refresh\n              </p>\n            )}\n          </div>\n        ) : null}\n\n        <p className=\"f-left\">\n          <div className=\"bank-accounts__item-text\">\n            {/* DK I will need to make it prettier but in the meantime it works */}\n            {bankAccount.pendingVerification ? (\n              <div style={!isSelectAccount ? { marginTop: '-15px' } : null}>\n                <PlaidVerifyButton\n                  config={{ token: linkToken }}\n                  onClick={() => verificationStart(bankAccount.id)}\n                  isOpen={isOpen}\n                  onSuccess={onSuccess1}\n                >\n                  VMOBILE\n                </PlaidVerifyButton>\n              </div>\n            ) : !NavyFederalCreditUnionSavingsAccount ? (\n              <div className=\"iconSec\">\n                <p className=\"f-left\" style={{ marginTop: '-10px' }}>\n                  <i className=\"fas fa-check bank-accounts__update-icon\" />\n                  Verified\n                </p>\n              </div>\n            ) : (\n              <div className=\"iconSec\">\n                <p className=\"f-left\" style={{ marginTop: '-10px' }}>\n                  <i className=\"fas fa-minus-circle bank-accounts__bank-unsupported-red-icon\" />\n                  Unsupported\n                </p>\n                <p className=\"f-left\" style={{ marginTop: '-10px' }}>\n                  <div colspan=\"6\" style={{ color: 'red', marginTop: '8px' }}>\n                    Navy Federal Credit Union savings accounts are\n                    non-transactional. Please move funds to Navy Federal\n                    checking account and link the checking account.\n                    Alternatively, please link another bank account. Thank you.\n                  </div>\n                </p>\n              </div>\n            )}\n          </div>\n        </p>\n      </div>\n    </div>\n  );\n};\n\nconst BankAccountsList = ({\n  isEmptyBankAccounts,\n  watch,\n  control,\n  setValue,\n  bankAccounts,\n  onDisconnectBankAccount,\n  isSelectAccount,\n  action,\n  register,\n  onReloadBankAccounts,\n  institutionsLogo,\n  state,\n  onSetError,\n  tenant,\n  client,\n  reloadingBankAccounts\n}) => {\n  if (isEmptyBankAccounts && !isSelectAccount)\n    return (\n      <p className=\"text text-danger transfer-history__no-data\">\n        You have no linked bank accounts\n      </p>\n    );\n  if (isEmptyBankAccounts) return null;\n\n  return (\n    <>\n      {mobile ? (\n        <>\n          {bankAccounts.map((item, index) => (\n            <SmallTable\n              bankAccount={item}\n              onDisconnectBankAccount={onDisconnectBankAccount}\n              isSelectAccount={isSelectAccount}\n              action={action}\n              state={state}\n              register={register}\n              onReloadBankAccounts={onReloadBankAccounts}\n              institutionsLogo={institutionsLogo}\n              onSetError={onSetError}\n              control={control}\n              setValue={setValue}\n              client={client}\n              tenant={tenant}\n            />\n          ))}\n        </>\n      ) : (\n        <TableData\n          bankAccounts={bankAccounts}\n          onDisconnectBankAccount={onDisconnectBankAccount}\n          isSelectAccount={isSelectAccount}\n          action={action}\n          state={state}\n          register={register}\n          onReloadBankAccounts={onReloadBankAccounts}\n          institutionsLogo={institutionsLogo}\n          onSetError={onSetError}\n          control={control}\n          setValue={setValue}\n          client={client}\n          tenant={tenant}\n          reloadingBankAccounts={reloadingBankAccounts}\n        />\n      )}\n    </>\n  );\n};\nconst TableData = ({\n  control,\n  setValue,\n  bankAccounts,\n  onDisconnectBankAccount,\n  isSelectAccount,\n  action,\n  register,\n  onReloadBankAccounts,\n  institutionsLogo,\n  state,\n  onSetError,\n  client,\n  tenant,\n  reloadingBankAccounts\n}) => {\n  return (\n    <Table responsive className=\"bank-accounts__table\">\n      <thead>\n        <tr>\n          <th className=\"bank-accounts__item-title\">Financial Institution</th>\n          <th className=\"bank-accounts__item-title\">Account</th>\n          <th className=\"bank-accounts__item-title\">Balance</th>\n          {!isSelectAccount ? (\n            <th className=\"bank-accounts__item-title center\">Update</th>\n          ) : null}\n          {!isSelectAccount ? (\n            <th className=\"bank-accounts__item-title center\">Disconnect</th>\n          ) : null}\n          {!isSelectAccount ? (\n            <th className=\"bank-accounts__item-title center\">Status</th>\n          ) : (\n            <th className=\"bank-accounts__item-title\">Status</th>\n          )}\n        </tr>\n      </thead>\n      <tbody>\n        {map(bankAccounts, (item, key) => (\n          <BuildRow\n            Controller={Controller}\n            bankAccount={item}\n            key={key}\n            onDisconnectBankAccount={onDisconnectBankAccount}\n            isSelectAccount={isSelectAccount}\n            action={action}\n            state={state}\n            register={register}\n            onReloadBankAccounts={onReloadBankAccounts}\n            institutionsLogo={institutionsLogo}\n            onSetError={onSetError}\n            control={control}\n            setValue={setValue}\n            bankAccounts={bankAccounts}\n            client={client}\n            tenant={tenant}\n            reloadingBankAccounts={reloadingBankAccounts}\n          />\n        ))}\n      </tbody>\n    </Table>\n  );\n};\nconst nextStep = history =>\n  history.push(`/create-account/step-3${get(history, 'location.search')}`);\n\nconst nextStepFromSummary = history =>\n  history.push(`/create-account/step-4${get(history, 'location.search')}`);\n\nconst BankAccounts = props => {\n  const {\n    account,\n    onGetBankAccounts,\n    onDisconnectBankAccount,\n    action,\n    state,\n    register,\n    children,\n    isSelectAccount,\n    withDoubleBorder,\n    withLogButton,\n    widest,\n    history,\n    onGetPlaidCreateClient,\n    onGetPlaidVerifyMicrodepoits,\n    onGetPlaidStartMicrodepoits,\n    location,\n    // showPlaidButton,\n    loadingService,\n    onSetLoadingService,\n    watch,\n    control,\n    setValue,\n    tenant,\n    client,\n  } = props;\n  const { user } = getClientStore();\n  const { loadingSearch, clientPhone } = useClientByPhone(\n    user ? user.mobilePhone : ''\n  );\n  const [reloadBankAccounts, onReloadBankAccounts] = useState(false);\n  const clientId = get(client, 'id');\n  const tenantId = get(tenant, 'id');\n  const [errorClient, onSetErrorClient] = useState({\n    active: false,\n    messageError: '',\n  });\n  const [error, onSetError] = useState({ active: false, messageError: '' });\n  const [isVerifyingAndLinking, setIsVerifyingAndLinking] = useState(false);\n  const [pncTooltipVisible, setPncTooltipVisible] = useState(false);\n  const [startToken, setStartToken] = useState(false);\n  const handleClose = () => setIsVerifyingAndLinking(false);\n  const handleShow = () => setIsVerifyingAndLinking(true);\n  let hasVerifiedAccount;\n  const isFetchingBankAccounts = get(\n    account,\n    'bankAccounts.isFetchingBankAccounts'\n  );\n  const isFetchingCreateClient = get(\n    account,\n    'createClient.isFetchingCreateClient'\n  );\n  const isFetchedCreateClient = get(\n    account,\n    'createClient.isFetchedCreateClient'\n  );\n  const isFetchingDeleteBankAccount = get(\n    account,\n    'deleteBankAccount.isFetchingDeleteBankAccount'\n  );\n  const path = window.location.search.split('?')[2];\n  const disbursement = getQueryVariable(path, 'disbursement');\n\n  const reloadingBankAccounts = () => {\n    onSetLoadingService(true);\n      onGetBankAccounts(clientId).then(response => {\n        onSetLoadingService(false);\n        // onReloadBankAccounts(false);\n        if (get(response, 'error')) {\n          onSetError({ active: true, messageError: get(response, 'message') });\n        } else {\n          onSetError({ active: false, messageError: '' });\n        }\n      });\n  } \n\n  \n\n  //Microdeposit flow hooks\n\n  const {\n    PlaidTokenForMicroDepositsStart,\n  } = usePlaidTokenForMicroDepositsStart();\n\n  //Requesting token if it was not received yet, for Microdeposit flow start to pass it to the plaid button\n\n  useEffect(() => {\n    if (!startToken) {\n      PlaidTokenForMicroDepositsStart().then(response =>\n        setStartToken(response?.data.token)\n      );\n    }\n  }, []);\n\n  useEffect(() => {\n    onGetBankAccounts(clientId).then(response => {\n      if (get(response, 'error')) {\n        onSetError({ active: true, messageError: get(response, 'message') });\n      } else {\n        onSetError({ active: false, messageError: '' });\n      }\n    });\n    if (reloadBankAccounts) {\n      \n      \n    }\n    if (isFetchingCreateClient) {\n      handleShow();\n      onSetLoadingService(true);\n    }\n  }, [\n    onGetBankAccounts,\n    clientId,\n    reloadBankAccounts,\n    isFetchingCreateClient,\n    onSetLoadingService\n  ]);\n\n  const bankAccounts = get(account, 'bankAccounts.bankAccounts.accounts', []);\n  if (bankAccounts) {\n    bankAccounts.forEach(account => {\n      if (!account.pendingVerification) {\n        hasVerifiedAccount = true;\n      } else {\n      }\n    });\n  }\n\n  const isEmptyBankAccounts = size(bankAccounts) === 0;\n  const codes = map(bankAccounts, it => ({\n    institutionCode: get(it, 'institutionCode'),\n  }));\n  const { institutionsLogo } = useInstitutionLogoOR(\n    size(codes) > 0 ? codes : []\n  );\n  const nextStepAfterPlaid = get(location, 'state.fromSummary')\n    ? nextStepFromSummary\n    : nextStep;\n  const onClickMakeTransfer = history =>\n    history.push('/create-account/step-select-account');\n  if (loadingSearch) {\n    return <SpinnerLoader />;\n  }\n\n  const togglePncTooltip = bool => {\n    setPncTooltipVisible(bool);\n  };\n\n  const plaidButton = (\n    <>\n      <PlaidButton\n        isOpen={\n          isEmptyBankAccounts &&\n          !isFetchingBankAccounts &&\n          !isFetchedCreateClient &&\n          !isFetchingCreateClient &&\n          !error.active &&\n          !errorClient.active &&\n          startToken\n        }\n        token={startToken}\n        className=\"create-account__button\"\n        onSuccess={plaidResponse => {\n          SelectedBankAccounts({\n            plaidResponse,\n            history,\n            client,\n            tenant,\n            action,\n            onGetPlaidCreateClient,\n            onGetPlaidStartMicrodepoits,\n            onGetPlaidVerifyMicrodepoits,\n            onGetBankAccounts,\n            nextStep: nextStepAfterPlaid,\n            onSetError,\n            onSetErrorClient,\n            onSetLoadingService,\n            handleClose,\n            setValue,\n          });\n        }}\n      >\n        Find My Bank\n      </PlaidButton>\n    </>\n  );\n\n  return (\n    <>\n      <BoxContainer\n        widest={widest}\n        withLogButton={withLogButton}\n        withDoubleBorder={withDoubleBorder}\n      >\n        <Title isSelectAccount={isSelectAccount} />\n        {isSelectAccount ? <Subtitle disbursement={disbursement} /> : null}\n        {isFetchingCreateClient ||\n        loadingService ||\n        isFetchingBankAccounts ||\n        isFetchingDeleteBankAccount ||\n        isVerifyingAndLinking ? (\n          <>\n            <SpinnerLoader />\n\n            {isVerifyingAndLinking && (\n              <div\n                style={{\n                  display: 'flex',\n                  justifyContent: 'center',\n                  fontSize: '16px',\n                  color: '#333',\n                  marginBottom: '10px',\n                  marginTop: '-20px',\n                }}\n              >\n                Linking and Verifying Account...\n              </div>\n            )}\n          </>\n        ) : (\n          <BankAccountsList\n            bankAccounts={bankAccounts}\n            isEmptyBankAccounts={isEmptyBankAccounts}\n            onDisconnectBankAccount={onDisconnectBankAccount}\n            isSelectAccount={isSelectAccount}\n            action={action}\n            state={state}\n            register={register}\n            onReloadBankAccounts={onReloadBankAccounts}\n            institutionsLogo={institutionsLogo}\n            onSetError={onSetError}\n            watch={watch}\n            control={control}\n            setValue={setValue}\n            client={client}\n            tenant={tenant}\n            reloadingBankAccounts={reloadingBankAccounts}\n          />\n        )}\n        <div\n          className={!mobile ? 'pnc' : null}\n          style={{ display: 'row !important' }}\n        >\n          <PaymintsButton\n            onClick={() => togglePncTooltip(true)}\n            noShadow\n            className={`bank-accounts__button bank-accounts__link`}\n            type={BUTTON_TYPE.INVERSE_BLUE}\n            disabled={\n              isFetchingCreateClient || loadingService || isVerifyingAndLinking\n            }\n          >\n            + Add Account\n          </PaymintsButton>\n\n          <div style={{ position: 'relative' }}>\n            <AddAccountTooltip\n              dismissHandler={togglePncTooltip}\n              isVisible={pncTooltipVisible}\n              plaidButton={plaidButton}\n            />\n          </div>\n          <div hidden={isEmptyBankAccounts}>\n            <PaymintsButton\n              hidden={isSelectAccount}\n              className=\"create-account__button\"\n              noShadow\n              disabled={isVerifyingAndLinking || !hasVerifiedAccount}\n              type={BUTTON_TYPE.INVERSE_BLUE}\n              onClick={() => onClickMakeTransfer(props.history)}\n            >\n              {'Make Transfer'}\n            </PaymintsButton>\n          </div>\n          {children}\n          {error.active && (\n            <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n          )}\n          {errorClient.active && (\n            <ErrorMessageInput>{errorClient.messageError}</ErrorMessageInput>\n          )}\n        </div>\n      </BoxContainer>\n    </>\n  );\n};\nexport default withRouter(\n  connect(\n    state => ({\n      account: state.account,\n    }),\n    {\n      onGetBankAccounts: getClientAccounts,\n      onDisconnectBankAccount: disconnectBankAccount,\n      onGetPlaidCreateClient: getPlaidCreateClient,\n      onGetPlaidStartMicrodepoits: getPlaidStartMicrodepoits,\n    }\n  )(BankAccounts)\n);\n","import request from '../../utils/request';\n\nexport default function usePlaidTokenForMicroDepositsStart() {\n  const PlaidTokenForMicroDepositsStart = () => {\n    return request.post(`/account/plaid/link-token`, {\n      user: {\n        client_user_id: '123456789',\n      },\n      options: {\n        products: ['auth'],\n        clientName: 'paymints.io',\n      },\n    });\n  };\n  return {\n    PlaidTokenForMicroDepositsStart,\n  };\n}\n","import React, { useState, useEffect } from 'react';\nimport { withRouter, Redirect, useHistory } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport get from 'lodash/get';\nimport size from 'lodash/size';\nimport isNil from 'lodash/isNil';\nimport split from 'lodash/split';\nimport find from 'lodash/find';\nimport { useForm } from 'react-hook-form';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport { getPlaidCreateClient } from '../../reducers/account/AccountActions';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport BankAccounts from '../BankAccounts/BankAccounts';\nimport { getQueryVariable } from '../../utils/util';\n\nimport './bankAccountSelection.css';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\n\nconst nextStep = history =>\n  history.push(`/create-account/step-3${get(history, 'location.search')}`);\n\nconst nextStepFromSummary = history =>\n  history.push(`/create-account/step-4${get(history, 'location.search')}`);\n\nconst isPendingOrSubmitted = option => {\n  switch (option) {\n    case 'submitted':\n      return true;\n    case 'pending':\n      return true;\n    default:\n      return false;\n  }\n};\n\nconst BankAccountsSelection = props => {\n  const history = useHistory();\n  const { sensitiveData } = useSensitiveData();\n  const ssn = get(sensitiveData, 'SSN');\n  const dob = get(sensitiveData, 'DOB');\n  const { account, location } = props;\n  const { state, action } = useStateMachine(updateAction);\n  const bankAccounts = get(account, 'bankAccounts.bankAccounts.accounts');\n  let hasVerifiedAccount;\n  if (bankAccounts) {\n    bankAccounts.forEach(account => {\n      if (!account.pendingVerification) {\n        hasVerifiedAccount = true;\n      } else {\n      }\n    });\n  }\n  const lastSelected = find(\n    bankAccounts,\n    ['id', get(state, 'data.bankAccount.id')],\n    undefined\n  );\n  const { register, watch, setValue, control } = useForm({\n    defaultValues: { selection: get(state, 'data.bankAccount.id') },\n  });\n  const [loadingService, onSetLoadingService] = useState(false);\n  const [cantEdit, onCantEdit] = useState(false);\n\n  const isEmptyBankAccounts = size(bankAccounts) === 0;\n  const isFetchingCreateClient = get(\n    account,\n    'createClient.isFetchingCreateClient'\n  );\n  const nextStepAfterPlaid = history => {\n    const path = window.location.search.split('?') || [];\n    if (path.length === 3) {\n      const path = get(split(window.location.search, '?'), 1);\n      const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n      history.push(\n        `/create-account/step-4?go_to_transfer=${transferId}?disbursement=payment`\n      );\n    } else {\n      return get(location, 'state.fromSummary')\n        ? nextStepFromSummary(history)\n        : nextStep(history);\n    }\n  };\n  const isFetchingDeleteBankAccount = get(\n    account,\n    'deleteBankAccount.isFetchingDeleteBankAccount'\n  );\n\n  useEffect(\n    () => {\n      const disbursementPath = window.location.search.split('?')[2];\n      const disbursement = getQueryVariable(disbursementPath, 'disbursement');\n      if ((!ssn || !dob) && !disbursement) {\n        const client = sessionStorage.getItem('client');\n        history.push('/create-account/step-2', { client });\n      }\n      const path = get(split(window.location.search, '?'), 1);\n\n      const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n      if (transferId) {\n        const status = get(props.transfer, 'status');\n        if (isPendingOrSubmitted(status)) {\n          onCantEdit(true);\n        }\n      }\n    },\n    /* eslint-disable */ [props.history, props.transfer]\n  );\n\n  if (cantEdit) {\n    return (\n      <Redirect\n        to={{\n          pathname: '/transfer-history',\n          search: '',\n          state: { editError: true },\n        }}\n      />\n    );\n  }\n\n  return (<>\n   \n   <BankAccounts\n      action={action}\n      state={state}\n      register={register}\n      watch={watch}\n      setValue={setValue}\n      control={control}\n      withDoubleBorder\n      withLogButton\n      isSelectAccount\n      widest\n      showPlaidButton\n      loadingService={loadingService}\n      onSetLoadingService={onSetLoadingService}\n      {...props}\n    >\n      <PaymintsButton\n        noShadow\n        className=\"bank-accounts__button\"\n        type={BUTTON_TYPE.INVERSE_BLUE}\n        onClick={() => nextStepAfterPlaid(props.history)}\n        disabled={\n          isEmptyBankAccounts ||\n          isFetchingCreateClient ||\n          isNil(get(state, 'data.bankAccount.id')) ||\n          isFetchingDeleteBankAccount ||\n          loadingService ||\n          !lastSelected ||\n          !hasVerifiedAccount\n        }\n      >\n        {'Continue'}\n      </PaymintsButton>\n      \n    </BankAccounts>\n  </>\n    \n  );\n};\n\nexport default withRouter(\n  connect(\n    state => ({\n      account: state.account,\n    }),\n    {\n      onGetPlaidCreateClient: getPlaidCreateClient,\n    }\n  )(BankAccountsSelection)\n);\n","import React from 'react'\nimport { useDropzone } from 'react-dropzone'\nimport './fileUpload.css'\n\nexport default function FileUpload({ onDropFiles, selected, invalidFormat }) {\n  const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop: onDropFiles })\n\n  return (\n    <>\n      <div {...getRootProps()}>\n        <input {...getInputProps()} />\n        {selected ? (\n          <div className=\"paymints__file-upload__files\">\n            <p>{`Selected file: ${selected}, click if you want to change it`}</p>\n          </div>\n        ) :\n          isDragActive ? (\n            <div className=\"paymints__file-upload__files\">\n              <p>Drop the files here ...</p>\n            </div>\n          ) : (\n              <div className=\"paymints__file-upload__files\">\n                <p>Drag and drop some files here, or click to select files</p>\n              </div>\n            )}\n      </div>\n      <div className=\"text text-danger\" hidden={!invalidFormat}>File upload must be in jpg or png format</div>\n    </>\n  )\n}","import React, { useState } from 'react'\nimport FileUpload from './FileUpload';\nimport { validateFile } from '../../utils/validations';\n\nexport default function InputFile({ value, onChange, selected }) {\n  const [invalidFormat, setInvalidFormat] = useState(false);\n  const onDropFiles = files => {\n    if (validateFile(files[0].type)) {\n      setInvalidFormat(false);\n      onChange(files[0])\n    } else {\n      setInvalidFormat(true);\n    }\n  }\n  return <FileUpload value={value} selected={selected} onDropFiles={onDropFiles} invalidFormat={invalidFormat} />\n}","export const UPLOAD_DOCUMENT_FETCH = \"UPLOAD_DOCUMENT_FETCH\";\nexport const UPLOAD_DOCUMENT_SUCCESS = \"UPLOAD_DOCUMENT_SUCCESS\";\nexport const UPLOAD_DOCUMENT_ERROR = \"UPLOAD_DOCUMENT_ERROR\";\n","import React, { useState } from 'react'\nimport uploadImage from '../../styles/assets/test-document-upload-success.png';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport InputFile from '../FileUpload/InputFile';\nimport { useForm, Controller } from \"react-hook-form\";\nimport get from \"lodash/get\";\nimport { connect } from 'react-redux';\nimport { withRouter } from \"react-router-dom\";\nimport { uploadDocument } from '../../reducers/asset/AssetActions';\nimport { saveTransferDoc } from '../../reducers/transfer/TransferActions';\nimport { PaymintsButton, BUTTON_TYPE } from 'paymints-address-autocomplete-field';\nimport updateAction from \"../CreateAccountWizard/updateAction\";\nimport { useStateMachine } from \"little-state-machine\";\nimport ContentModal from '../ContentModal/ContentModal';\nimport { useToasts } from 'react-toast-notifications'\nimport SpinnerLoader from \"../SpinnerLoader/SpinnerLoader\";\n\n\nconst buildLoaderModal = () => (\n    <div className=\"create-account__modal\">\n        <div className=\"create-account__modal-loading\">\n            <SpinnerLoader withoutMargin />\n        </div>\n        <div className=\"create-account__modal-info\">\n            Loading please wait...\n        </div>\n    </div>\n)\nconst uploadIdDocument = ({ props, action, transferId, selectedDocument, selectedDocumentType, onSetError }) => {\n    const tenantId = get(props, 'tenant.id');\n    const clientId = get(props, 'client.id');\n    const type = selectedDocumentType.toLowerCase();\n\n    const form = new FormData();\n    form.append('TENANT_GUID', tenantId);\n    form.append('CLIENT_GUID', clientId);\n    // form.append('TRANSFER_GUID', transferId);\n    form.append(type, selectedDocument);\n\n    return props.onUploadDocument(form)\n        .then((responseUploadDocument) => {\n            if (!get(responseUploadDocument, 'error')) {\n                const data = {\n                    documentType: type,\n                    assetId: get(responseUploadDocument, `s3-assets.${type}.assetID`)\n                }\n                return props.onSaveTransferDoc(transferId, data)\n                    .then((responseTransferDoc) => {\n                        if (!get(responseTransferDoc, 'error')) {\n                            action({ asset: { id: get(responseUploadDocument, `s3-assets.${type}.assetID`) } });\n                            return { success: true }\n                        } else {\n                            return { success: false }\n                        }\n                    })\n            } else {\n                return { success: false }\n            }\n        })\n}\nconst DocumentVerification = (props) => {\n    const [isLoading, onSetLoadingService] = useState(false);\n    const { register: regDocument, control: controlDocument, watch: watchDocument, handleSubmit } = useForm();\n    const { action } = useStateMachine(updateAction);\n    const transferId = get(props, 'client.id');\n    const selectedDocument = watchDocument('selectedDocument');\n    const selectedDocumentType = watchDocument('selectedDocumentType');\n    const { addToast } = useToasts();\n    const onSubmit = () => {\n        onSetLoadingService(true);\n        uploadIdDocument({ props, action, transferId, selectedDocument, selectedDocumentType }).then(response => {\n            if (response.success) {\n                onSetLoadingService(false);\n                props.history.push(`/bank-accounts`);\n                addToast('Your Document has successfully uploaded.', { appearance: 'success' });\n            }\n        });\n    }\n    return (\n        <>\n            <ContentModal\n                isVisible={isLoading}\n                content={buildLoaderModal()}\n                small\n                withoutButtons\n                hideCloseButton\n            />\n            <BoxContainer widest withLogButton withDoubleBorder>\n                <form onSubmit={handleSubmit(() => onSubmit())}>\n                    <div className=\"create-account__line-container\">\n                        <div className=\"create-account__title\">\n                            More Data is Required\n            </div>\n                    </div>\n                    <div className=\"create-account__line-container\">\n                        <div className=\"create-account__subtitle with-margin\">\n                            Your transfer is not complete.\n            </div>\n                    </div>\n                    <div className=\"create-account__information-container create-account__no-margine\">\n                        <div className=\"create-account__subtitle-information\">\n                            The bank is requesting identification verification.\n            </div>\n                    </div>\n                    <div className=\"create-account__information-id\">\n                        <ul className=\"create-account__information-list-id\">\n                            <li>Full name and ID number should be clearly visible.</li>\n                            <li>ID cannot be cut off from any side.</li>\n                            <li>Image must be horizontal and legible.</li>\n                            <li>Acceptable file types are .jpg, .jpeg, and .png.</li>\n                            <li>File size must be less than 10MB.</li>\n                        </ul>\n                    </div>\n                    <div className=\"create-account__information-container\">\n                        <BoxContainer internalBox withBorder>\n                            <div className=\"create-account__image-id\">\n                                <img className=\"create-account__image-size-id\" src={uploadImage} alt=\"\" />\n                            </div>\n\n                            <div className=\"create-account__type-document-id\">\n                                Type of document\n                <select className=\"create-account__type-document-options-id form-control\" name=\"selectedDocumentType\" ref={regDocument}>\n                                    <option>Passport</option>\n                                    <option>License</option>\n                                </select>\n                            </div>\n\n                            <div className=\"create-account__upload-document form-group\">\n                                <label htmlFor=\"selectedDocument\">Upload photo</label>\n                                <Controller as={InputFile} name=\"selectedDocument\" control={controlDocument} selected={get(watchDocument('selectedDocument'), 'name')} />\n                            </div>\n                        </BoxContainer>\n                        <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n                            <PaymintsButton\n                                className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n                                noShadow\n                                type={BUTTON_TYPE.INVERSE_BLUE}\n                                htmlType=\"submit\"\n\n                            >\n                                Save and Continue\n                    </PaymintsButton>\n                        </div>\n                    </div>\n                </form>\n            </BoxContainer>\n        </>\n    )\n}\nexport default withRouter(connect(\n    state =>\n        ({}), {\n        onUploadDocument: uploadDocument,\n        onSaveTransferDoc: saveTransferDoc,\n    }\n)(DocumentVerification));","import * as APIUtil from \"../../utils/service/service_api\";\nimport * as actionType from \"./AssetActionTypes\";\nimport get from \"lodash/get\";\n\nexport const uploadDocumentFetch = () => ({\n    type: actionType.UPLOAD_DOCUMENT_FETCH\n});\n\nexport const uploadDocumentSuccess = response => ({\n    type: actionType.UPLOAD_DOCUMENT_SUCCESS,\n    payload: { response }\n});\n\nexport const uploadDocumentError = response => ({\n    type: actionType.UPLOAD_DOCUMENT_ERROR,\n    payload: { response }\n});\n\n\nexport const uploadDocument = (formData) => dispatch => {\n    dispatch(uploadDocumentFetch())\n    return APIUtil.uploadDocument(formData)\n        .then(response => {\n            dispatch(uploadDocumentSuccess(response))\n            return response;\n        })\n        .catch(error => {\n            const errorElement = get(error, 'response.data');\n            const message = get(errorElement, 'error.body.message') || get(errorElement, 'message') || get(errorElement, 'error_message') || get(errorElement, 'error') || \"Something went wrong... please try again in a few minutes\";\n            dispatch(uploadDocumentError(errorElement))\n            return { error: true, message: message };\n        })\n};\n","/*\n * src/hooks/useAllCreditTransferTypes.js\n * Description: Query transfer fee configuration for a particular tenant\n * Copyright (c) 2021 PredictiveUX\n */\nimport { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nconst GET_ALL_TRANSFER_FEE_CONFIGS = gql`\n  query AllTransferFeeConfigsByTenantId($identifier: String!) {\n    allTransferFeeConfigs(where: { tenant: { identifier: $identifier } }) {\n      id\n      clientPays\n      amount\n      tenant {\n        name\n      }\n    }\n  }\n`;\n\n/**\n * i.e. \"localhost\" is the canonical domain identifier\n * @param {*} domain\n * @returns\n */\nconst useAllTransferFeeConfigs = (domain) => {\n  const { loading, error, data, refetch } = useQuery(\n    GET_ALL_TRANSFER_FEE_CONFIGS,\n    {\n      fetchPolicy: \"no-cache\",\n      variables: {\n        identifier: domain || \"\",\n      },\n    }\n  );\n\n  return { loading, error, data: data?.allTransferFeeConfigs || null, refetch };\n};\n\nexport default useAllTransferFeeConfigs;\n","import React, { useEffect, useState } from 'react';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport { withRouter, Route, Switch } from 'react-router-dom';\nimport { StateMachineProvider, createStore } from 'little-state-machine';\nimport CreateAccountFirstStep from '../CreateAccountFirstStep/CreateAccountFirstStep';\nimport CreateAccountVerificationStep from '../CreateAccountVerificationStep/CreateAccountVerificationStep';\nimport CreateAccountSecondStep from '../CreateAccountSecondStep/CreateAccountSecondStep';\nimport TransferDetails from '../TransferDetails/TransferDetails';\nimport TransferSummary from '../TransferSummary/TransferSummary';\nimport TransferSuccess from '../TransferSuccess/TransferSuccess';\nimport AccountError from '../AccountError/AccountError';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport { useTransfer } from '../../utils/service/service_transfer_api';\nimport { getQueryVariable } from '../../utils/util';\nimport BankAccountSelection from '../BankAccountSelection/BankAccountSelection';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore } from '../../utils/util';\nimport { getItem, removeItem } from '../../utils/util';\nimport DocumentVerification from '../DocumentVerification/DocumentVerification';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport { getTenantIdentifier } from '../../utils/util';\nimport useAllTransferFeeConfigs from '../../hooks/useAllTransferFeeConfigs';\n\ncreateStore({\n  data: {},\n});\n\nconst CreateAccountWizard = props => {\n  const { user } = getClientStore();\n  const path = get(split(window.location.search, '?'), 1);\n  //const clientId = getQueryVariable(path, \"client_id\") || \"\";\n  const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n  const mobile = user ? user.mobilePhone : null;\n  const { client, refetch, refetch: refetchNewClient } = useClientByPhone(\n    mobile\n  );\n  const { loadingSearchTransfer, transfer, refetchTransfer } = useTransfer(\n    transferId\n  );\n\n  const { value } = getItem('login_user');\n  const { sensitiveData } = useSensitiveData();\n\n  // here's where we retrieve the transfer fee configuration for the\n  // tenant in question\n  const { data: transferFeeConfigData } = useAllTransferFeeConfigs(\n    getTenantIdentifier(window.location.hostname)\n  );\n\n  useEffect(\n    () => {\n      if (user) {\n        if (get(sensitiveData, 'SSN') && get(sensitiveData, 'DOB')) {\n          if (!value) {\n            props.history.push(\n              `/create-account/step-select-account${get(\n                props.history,\n                'location.search'\n              )}`\n            );\n          } else {\n            removeItem('login_user');\n            props.history.push(\n              `/create-account/step-select-account${get(\n                props.history,\n                'location.search'\n              )}`\n            );\n          }\n        }\n      }\n    },\n    /* eslint-disable */ [client, sensitiveData, props.history, refetch]\n  );\n\n  if (loadingSearchTransfer) {\n    return <SpinnerLoader />;\n  }\n\n  if (transferId && !transfer ) {\n    refetchTransfer({\n      id: transferId,\n    });\n  }\n\n  \n\n  return (\n    <StateMachineProvider>\n      <Switch>\n        <Route\n          exact\n          path=\"/create-account\"\n          render={() => (\n            <CreateAccountFirstStep\n              user={user}\n              client={user ? client : Object.assign({})}\n              beforeContinue={refetch}\n              refetchNewClient={refetchNewClient}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/account-verification\"\n          render={() => (\n            <CreateAccountVerificationStep\n              user={user}\n              client={user ? client : Object.assign({})}\n              beforeContinue={refetch}\n              refetchNewClient={refetchNewClient}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-2\"\n          render={() => (\n            <CreateAccountSecondStep\n              user={user}\n              client={client}\n              refetch={refetch}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-select-account\"\n          render={() => (\n            <BankAccountSelection\n              user={user}\n              client={client}\n              transfer={transfer}\n              refetchTransfer={refetchTransfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-3\"\n          render={() => (\n            <TransferDetails\n              user={user}\n              client={client}\n              transfer={transferId ? transfer: null}\n              refetchTransfer={refetchTransfer}\n              refetch={refetch}\n              transferFeeConfigData={transferFeeConfigData}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-4\"\n          render={() => (\n            <TransferSummary\n              user={user}\n              transfer={transfer}\n              client={client}\n              refetchTransfer={refetchTransfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/success\"\n          render={() => (\n            <TransferSuccess\n              user={user}\n              client={client}\n              transfer={transfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/error\"\n          render={() => (\n            <AccountError\n              user={user}\n              client={client}\n              transfer={transfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/verification\"\n          render={() => (\n            <DocumentVerification\n              user={user}\n              client={client}\n              transfer={transfer}\n              {...props}\n            />\n          )}\n        />\n      </Switch>\n    </StateMachineProvider>\n  );\n};\n\nexport default withRouter(CreateAccountWizard);\n","import React, { useState, useEffect } from 'react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { connect } from 'react-redux';\nimport { useCreateClient } from '../../utils/service/service_user_api';\nimport { setItem, removeItem } from '../../utils/util';\nimport { withRouter, Link, Redirect } from 'react-router-dom';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { updateAuth0User } from '../../reducers/account/AccountActions';\nimport PhoneField from '../PhoneField/PhoneField';\nimport Warning from '../../styles/assets/warning.png';\nimport Phone from '../../styles/assets/phone.png';\nimport linkIcon from '../../styles/assets/external-link-icon.svg';\nimport * as APIUtil from '../../utils/service/service_api';\nimport phoneFormatter from '../../utils/service/phoneFormatter';\n\nimport '../CreateAccountWizard/createAccount.css';\n\nconst mobile = window.screen.width < 1200;\n\nconst Logo = ({ props }) => {\n  return (\n    <div className=\"paymints__box-container__logo-container\">\n      <img\n        src={props.brandLogo}\n        className=\"paymints__box-container__brand_logo\"\n        alt=\"\"\n        hidden={mobile}\n      />\n      <img\n        src={props.brandLogo}\n        className=\"paymints__box-container__brand_logo\"\n        alt=\"\"\n        hidden={!mobile}\n      />\n    </div>\n  );\n};\n\n/**\nconst Title = () => {\n  return (\n    <div>\n      <div style={{ fontSize: '24px', fontWeight: '600' }}>Welcome</div>\n    </div>\n  );\n};\n */\n\nconst RealtorIntroText = ({ props }) => {\n\n  const introDefault = props?.realtor?.firstName + '  ' + props?.realtor?.lastName +  ' has partnered with ' +\n    props.tenant.name + ' to securely transfer funds';\n  const introText = props?.realtor?.displayDescription || introDefault;\n\n  return (\n    <div className=\"\">\n      <div\n        style={{ textAlign: 'center', margin: '0 1em' }}\n        className=\"create-account__subtitle\"\n      >       \n        {introText}\n      </div>\n      <div style={{ textAlign: 'center', margin: '1em' }}>\n        To get started please create an account by entering your name and mobile phone number below.\n      </div>\n    </div>\n  );\n};\n\nconst FieldsPersonalInformation = ({ register, errors }) => {\n  return (\n    <div\n      style={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        marginTop: '1em',       \n      }}\n    >\n      <div style={{ width: !mobile && '40%', marginTop: '1em' }}>\n        <label style={{ display: 'flex' }}>First Name</label>\n        <input\n          type=\"text\"\n          id=\"firstName\"\n          name=\"firstName\"\n          className=\"create-account__input form-control\"\n          placeholder=\" \"\n          autoComplete=\"no\"\n          ref={register({ required: true, maxLength: 50 })}\n        />\n        {errors.firstName && errors.firstName.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        {errors.firstName && errors.firstName.type === 'maxLength' && (\n          <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n        )}\n      </div>\n      <div style={{ width: !mobile && '40%', marginTop: '1em' }}>\n        <label style={{ display: 'flex' }}>Middle Name</label>\n        <input\n          type=\"text\"\n          id=\"middleName\"\n          name=\"middleName\"\n          className=\"create-account__input form-control\"\n          placeholder=\" \"\n          autoComplete=\"no\"\n          ref={register}\n        />\n      </div>\n      <div style={{ width: !mobile && '40%', marginTop: '1em' }}>\n        <label style={{ display: 'flex' }}>Last Name</label>\n        <input\n          type=\"text\"\n          id=\"lastName\"\n          name=\"lastName\"\n          className=\"create-account__input form-control\"\n          placeholder=\" \"\n          autoComplete=\"no\"\n          ref={register({ required: true, maxLength: 50 })}\n        />\n        {errors.lastName && errors.lastName.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        {errors.lastName && errors.lastName.type === 'maxLength' && (\n          <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n        )}\n      </div>\n      <div\n        style={{ width: !mobile && '40%', margin: '1em' }}\n        className=\"create-account__warning-conatiner\"\n      >\n        <img src={Warning} className=\"create-account__warning-icon\" alt=\"\" />\n        <div className=\"create-account__warning-text\">\n        Must match your driver's license or government-issued ID.</div>\n      </div>\n    </div>\n  );\n};\n\nconst PersonalInformation = ({\n  client,\n  watch,\n  register,\n  errors,\n  setValue,\n  control,\n}) => (\n  <div className=\"create-account__information-container-partner\">\n    <FieldsPersonalInformation\n      client={client}\n      register={register}\n      errors={errors}\n      setValue={setValue}\n      control={control}\n      watch={watch}\n    />\n  </div>\n);\n\nconst FieldsContactInformation = ({ errors, control }) => (\n  <div\n    style={{\n      display: 'flex',\n      flexDirection: 'column',\n      alignItems: 'center',\n      marginTop: '1em',\n    }}\n  >\n    <div style={{ width: !mobile && '40%', margin: '1em' }}>\n      <label style={{ display: 'flex', marginLeft: mobile && '20%' }}>\n        Mobile Phone\n      </label>\n      <Controller\n        as={PhoneField}\n        control={control}\n        className=\"create-account__input form-control\"\n        name=\"phone_number\"\n        placeholder=\" \"\n        rules={{ required: true }}\n        style={{\n          width: mobile ? '14em' : '100%',\n          height: '32px',\n          margin: mobile && '0 auto',\n        }}\n      />\n      {errors.phone_number && errors.phone_number.type === 'required' && (\n        <ErrorMessageInput>This is required</ErrorMessageInput>\n      )}\n      <div\n        style={{ marginTop: '1em' }}\n        className=\"create-account__warning-conatiner\"\n      >\n        <img src={Phone} className=\"create-account__warning-icon\" alt=\"\" />\n        <div className=\"create-account__warning-text\">\n          We will send a security code to your mobile phone for account verification.\n        </div>\n      </div>\n    </div>\n  </div>\n);\n\nconst ContactInformation = ({ client, errors, control }) => {\n  return <FieldsContactInformation errors={errors} control={control} />;\n};\n\nconst FooterInformation = ({ setDisabled }) => (\n  <div\n    style={{\n      display: 'flex',\n      flexDirection: 'column',\n      alignItems: 'center',\n      marginTop: '1em',\n    }}\n  >\n    <div style={{ width: '60%', marginTop: '1em' }}>\n      <span>\n        <input\n          type=\"checkbox\"\n          className=\"form-group\"\n          onChange={e => setDisabled(!e.target.checked)}\n        />{' '}\n      </span>{' '}\n      {'By clicking Create Account, you agree to CertifID, Inc. '}\n      <a\n        href=\"https://www.certifid.com/company/terms-of-service\"\n        rel=\"noopener noreferrer\"\n        className=\"paymints__link\"\n      >\n        Terms of Service{' '}\n        <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />{' '}\n      </a>\n      {' and '}\n      <a\n        href=\"https://www.certifid.com/company/privacy-policy\"\n        rel=\"noopener noreferrer\"\n        className=\"paymints__link nowrap\"\n      >\n        Privacy Policy{' '}\n        <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n      </a>\n      {' as well as our partner'} Dwolla's\n      <a\n        href=\"https://www.dwolla.com/legal/dwolla-account-terms-of-service/\"\n        rel=\"noopener noreferrer\"\n        className=\"paymints__link\"\n      >\n        {' '}\n        Terms of Service{' '}\n        <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n      </a>{' '}\n      and{' '}\n      <a\n        href=\"https://www.dwolla.com/legal/privacy/\"\n        rel=\"noopener noreferrer\"\n        className=\"paymints__link\"\n      >\n        Privacy Policy.\n        <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n      </a>\n    </div>\n  </div>\n);\n\nconst nextStep = history => {\n  history.push(`/create-account/step-2${get(history, 'location.search')}`);\n};\n\nconst FirstStep = props => {\n  const {\n    beforeContinue,\n    onUpdateAuth0User,\n    refetchNewClient,\n    realtor,\n  } = props;\n\n  const { register, handleSubmit, errors, watch, setValue, control } = useForm({\n    defaultValues: props.client,\n  });\n  const { createClient } = useCreateClient();\n  const { action } = useStateMachine(updateAction);\n  const [error, onSetError] = useState({\n    active: false,\n    type: '',\n    messageError: '',\n  });\n  const [disabled, setDisabled] = useState(true);\n  const [licenseArray, setLicenseArray] = useState([]);\n\n  const onSubmit = newUser => {\n    removeItem('login_user');\n    onSetError({ active: false, type: '', messageError: '' });\n    const email = get(props.user, 'email')\n      ? get(props.user, 'email')\n      : `${newUser.phone_number}@paymints.io`;\n    const tenantId = get(props, 'tenant.id');\n    if (isEmpty(tenantId))\n      onSetError({\n        active: true,\n        messageError: 'Tenant not found, please check url',\n      });\n    if (email && !isEmpty(tenantId)) {\n      const { phone_number } = newUser;\n      // Search for all clients with that email\n      refetchNewClient({ where: { mobilePhone: '+1' + phone_number } }).then(\n        response => {\n          const client = get(response, 'data.allClients')[0];\n          delete newUser.phone_number;\n          if (!client) {\n            let clientData = {};\n            // Create a new client\n            createClient({\n              variables: {\n                client: {\n                  ...newUser,\n                  email: '',\n                  mobilePhone: '+1' + phone_number,\n                  tenant: {\n                    connect: {\n                      id: tenantId,\n                    },\n                  },\n                },\n              },\n            })\n              .then(res => {\n                clientData = res.data.createClient;\n                beforeContinue();\n              })\n              .then(() => {\n                // Create Auth0 client\n                const userEmail = get(props.user, 'email');\n                if (!userEmail) {\n                  const auth0User = {\n                    email: email,\n                    phone_number: `+1${phone_number}`,\n                    name: `${newUser.firstName} ${newUser.lastName}`,\n                    connection: 'sms',\n                  };\n                  const auth0Payload = {\n                    create_user: auth0User,\n                    role: 'paymints_admin',\n                    new_user_role: 'paymints_client',\n                  };\n\n                  onUpdateAuth0User(tenantId, auth0Payload)\n                    .then(response => {\n                      if (response === 'error') {\n                        onSetError({\n                          active: true,\n                          messageError:\n                            'Account exists for phone number.  Please login in.',\n                        });\n                      } else {\n                        getCode(tenantId, clientData.id, clientData);\n                      }\n                    })\n                    .then(() => {\n                      action(newUser);\n                    });\n                } else {\n                  action(newUser);\n                  nextStep(props.history);\n                }\n              });\n          } else {\n            onSetError({ active: true, type: 'sms' });\n            setItem('login_user', 'existing_user');\n          }\n        }\n      );\n    }\n  };\n\n  const getCode = (tenantId, clientid, client) => {\n    APIUtil.getSMSCode(tenantId, clientid).then(\n      () => {\n        props.history.push('/create-account/account-verification', { client });\n      },\n      error => {\n        console.log(error);\n      }\n    );\n  };\n\n  useEffect(() => {\n    if (props?.realtor) {\n      setLicenseArray(JSON.parse(props.realtor.licenses));\n    }\n  }, [props.realtor]);\n\n  const nameDefault = props?.realtor?.firstName + '  ' + props?.realtor?.lastName;\n  const nameText = props?.realtor?.displayName || nameDefault;\n\n  return (\n    <div\n      style={{\n        backgroundColor: 'white',\n        height: '100vh',\n        marginTop: mobile && '-20px', \n      }}\n    >     \n      <div style={{ display: 'flex', flexDirection: mobile && 'column' }}>\n        <div\n          style={{\n            backgroundColor: !mobile && '#ecf0ff',\n            width: mobile ? '100%' : '25em',\n            height: !mobile && '100vh',\n          }}\n        >\n          <div style={{ marginTop: '5em' }}>\n            {realtor?.headshotImageURL ? (\n              <img\n                style={{ borderRadius: '50% ' }}\n                src={realtor?.headshotImageURL}\n                alt={nameText}\n                width='200px'\n              />\n            ) : (\n              <img\n                style={{ borderRadius: '50% ' }}\n                src={`https://ui-avatars.com/api/?name=${realtor?.firstName}+${realtor?.lastName}&size=200`}\n                alt={nameText}\n              />\n            )}\n          </div>\n          <div style={{ marginTop: '0.5em', fontSize: '2em' }}>\n            {nameText}\n          </div>\n          <div style={{ marginTop: '0.5em', fontSize: '1em' }}>\n            <div>{`Agent with ${realtor?.brokerage?.name}`} </div>\n            <div>\n              {licenseArray && licenseArray.length? (\n                <span>License<br/></span>\n              ):\"\"}\n              {licenseArray.map(license => (\n                <span>{`${license.state} #${license.license}`}<br/></span>\n              ))}\n            </div>\n          </div>\n          <div\n            style={{ marginTop: '1em', marginLeft: '1.5em' }}\n            hidden={!realtor?.email}\n          >\n          </div>\n          <div style={{ marginTop: '2em' }}>\n            {realtor?.brokerage?.logoURL ? (\n              <img\n                style={{ width: '10em' }}\n                src={realtor?.brokerage?.logoURL}\n                alt={`${realtor?.brokerage?.name}`}\n              />\n            ) : (\n              <div style={{ fontSize: '1.5em' }}>\n                {`${realtor?.brokerage?.name}`}{' '}\n              </div>\n            )}\n          </div>          \n          <div\n            style={{\n              marginTop: '1em',\n              fontSize: '1em',\n              marginBottom: mobile && '1em',\n            }}\n          >\n            <div><a href={`${realtor?.brokerage?.websiteURL}`} target=\"_blank\">{`${realtor?.brokerage?.websiteURL}`}</a></div>\n            <div>\n              {phoneFormatter(\n                '(XXX) XXX-XXXX',\n                realtor?.brokerage?.officePhone?.replace('+1', '')\n              )}{' '}\n            </div>\n          </div>\n        </div>\n        <div\n          style={{\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: 'center',\n            marginTop: '3em',\n          }}\n        >\n          <Logo props={props} />\n          <RealtorIntroText props={props} />\n          <form onSubmit={handleSubmit(onSubmit)}>\n            <PersonalInformation\n              client={props.client}\n              register={register}\n              errors={errors}\n              setValue={setValue}\n              watch={watch}\n              control={control}\n            />\n            <ContactInformation\n              client={props.client}\n              errors={errors}\n              control={control}\n            />\n            <FooterInformation setDisabled={setDisabled} />\n            <div\n              style={{\n                display: 'flex',\n                flexDirection: 'column',\n                alignItems: 'center',\n                marginTop: '1em',\n                marginBottom: '2em',\n                width: mobile && '100%',\n              }}\n            >\n              <PaymintsButton\n                htmlType=\"submit\"\n                className=\"create-account__button\"\n                type={BUTTON_TYPE.INVERSE_BLUE}\n                disabled={disabled}\n                style={{ marginLeft: '1.5em' }}\n              >\n                <div className=\"create-account__button-text\">\n                  {props.registerButtonText\n                    ? props.registerButtonText === 'Register!'\n                      ? 'Create Account'\n                      : props.registerButtonText\n                    : 'Create Account'}\n                </div>\n              </PaymintsButton>\n              {error.active && (\n                <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n              )}\n              {error.active && error.type === 'sms' && (\n                <ErrorMessageInput>\n                  Account exists for phone number. Please{' '}\n                  <Link to=\"/login\" params={{ partnerURI: props.partnerURI} }>login</Link>\n                </ErrorMessageInput>\n              )}\n              <div>\n                {' '}\n                Already registered? Click to{' '}\n                <span\n                  className=\"create-account__paymints-link\"\n                  onClick={() => props.history.push(`/login?partnerURI=${props.partnerURI}`)}\n                >\n                  log in\n                </span>{' '}\n              </div>\n            </div>\n          </form>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default withRouter(\n  connect(state => ({}), {\n    onUpdateAuth0User: updateAuth0User,\n  })(FirstStep)\n);\n","export default function phoneFormatter(mask, unformattedNumber) {\n  const number = unformattedNumber?.replace(/-/g, '').replace('+1', '')\n  let formattedNumber = ''\n\n  for (let iMask = 0, iNumber = -1; iMask < mask?.length && iNumber < number?.length; iMask += 1) {\n    formattedNumber +=\n      mask.charAt(iMask) === 'X' ? number.charAt((iNumber += 1)) : mask.charAt(iMask)\n  }\n\n  return formattedNumber\n}\n","import React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport format from 'dateformat';\nimport { useStateMachine } from 'little-state-machine';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { Select as AntSelect } from 'antd';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n  PaymintsNumberFormat,\n} from 'paymints-address-autocomplete-field';\nimport DestinationAccount from '../DestinationAccount/DestinationAccount';\n\nimport {\n  useCreateTransfer,\n  useSaveTransfer,\n} from '../../utils/service/service_transfer_api';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { saveTransferDoc } from '../../reducers/transfer/TransferActions';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { validAmount } from '../../utils/validations';\nimport { extractNotesFromJson, formatDayFromUTC, getRealtorStore } from '../../utils/util';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport HeaderLogo from '../../styles/assets/lemon.png';\nimport AmountInput from '../AmountInput/AmountInput';\nimport useAllCreditTransferTypes from '../../hooks/useAllCreditTransferTypes';\nimport useAllActiveOfficesSorted from '../../hooks/useAllActiveOfficesSorted';\nimport useAllRealtorsFromTenant from '../../hooks/useAllRealtorsFromTenant';\n\nimport PhoneField from '../PhoneField/PhoneField';\n\nimport '../CreateAccountWizard/createAccount.css';\n\n/**\n * [{amount: Number | null, clientPays: boolean, id: String, tenant: { name: String}}]\n * @param {*} data\n */\nconst extractTranferFeeFromData = data => {\n  if (data && data.length > 0) {\n    const [first] = data;\n    if (first.clientPays) {\n      return +first.amount || 0;\n    }\n    return 0;\n  }\n  return 0;\n};\n\n/**\n * @TODO extract out to component\n */\nconst Title = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__title\">Transfer Details</div>\n  </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst InfoTransfer = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__subtitle\">\n      What kind of transfer would you like to make?\n    </div>\n  </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoTransfer = ({\n  client,\n  register,\n  errors,\n  control,\n  setValue,\n  purposes,\n  emdVisible,\n  setFieldsEMDVisible,\n  realtorData,\n  setRealtorData,\n  showREAInfoFill,\n}) => {\n  const purposesOptions = purposes.map(purpose => ({\n    value: purpose,\n    label: purpose\n  }))\n  return (<>\n    <div className=\"bank-accounts__item-title py-4\">PURPOSE</div>\n    <BoxContainer withBorder internalBox >\n      <label>Select a  Purpose</label>\n      <div\n        className=\"form-group\"\n        style={{\n          backgroundColor: '#fff',\n          borderRadius: '4px',\n          padding: '10px',\n          marginTop: '10px',\n        }}\n      >\n        <Controller\n          as={AntSelect}\n          control={control}\n          name=\"purpose\"\n          rules={{ required: true }}\n          options={purposesOptions}\n          defaultValue=\"Earnest Money Deposit for Purchase\"\n          style={{\n            boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n            border: '2px solid #c9d1f2',\n            borderRadius: '4px',\n            width: '100%',\n          }}\n        />\n        {errors.purpose && errors.purpose.type === 'required' && (\n          <div className=\"form-check create-account__error-message\">\n\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n\n          </div>)}\n      </div>\n\n    </BoxContainer>\n  </>\n  );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoPropertyAddress = () => (\n  <div className=\"bank-accounts__item-title py-4\">PROPERTY ADDRESS AND ADDITIONAL NOTES</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoPropertyAddress = ({\n  transfer,\n  register,\n  errors,\n  setValue,\n  control,\n}) => {\n  return (\n    <BoxContainer withBorder internalBox>\n      <div className=\"form-group\">\n        <label>Property Address Related To The Transfer</label>\n        <input\n          type=\"text\"\n          name=\"propertyAddress1\"\n          placeholder=\"Address 1\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: true })}\n        />\n        {errors.propertyAddress1 &&\n          errors.propertyAddress1.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n        <input\n          type=\"text\"\n          name=\"propertyAddress2\"\n          placeholder=\"Address 2\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: false })}\n        />\n        <input\n          type=\"text\"\n          name=\"propertyCity\"\n          placeholder=\"City\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: true })}\n        />\n        {errors.propertyCity && errors.propertyCity.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        <Controller\n          as={Select}\n          control={control}\n          name=\"propertyState\"\n          placeholderText=\"State\"\n          rules={{ required: true }}\n          options={states}\n          className=\"create-account__input form-control create-account__address-info\"\n        />\n        {errors.propertyState && errors.propertyState.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        <input\n          type=\"text\"\n          name=\"propertyZipcode\"\n          placeholder=\"Zip code\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: true })}\n        />\n        {errors.propertyZipcode &&\n          errors.propertyZipcode.type === 'required' && (\n            <ErrorMessageInput>This is required</ErrorMessageInput>\n          )}\n        <br />\n        {((errors.propertyAddress1 &&\n          errors.propertyAddress1.type === 'required') ||\n          (errors.propertyCity && errors.propertyCity.type === 'required') ||\n          (errors.propertyState && errors.propertyState.type === 'required') ||\n          (errors.propertyZipcode &&\n            errors.propertyZipcode.type === 'required')) && (\n            <ErrorMessageInput>Please select a valid address</ErrorMessageInput>\n          )}\n        <br />\n        <label>Notes (Optional)</label>\n        <textarea\n          name=\"notes\"\n          ref={register}\n          placeholder=\" \"\n          className=\"create-account__text-area form-control\"\n        />\n      </div>\n    </BoxContainer>\n  );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoAmount = () => (\n  <div className=\"bank-accounts__item-title py-4\">AMOUNT</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldInfoAmount = ({\n  register,\n  errors,\n  control,\n  watch,\n  watchDocument,\n  regDocument,\n  controlDocument,\n  bankBalance,\n  setMaxAmountValidate,\n  maxAmountValidate,\n  MAXIMUM_AMOUNT,\n  transferFeeConfigData,\n  getValues\n}) => {\n  return (\n    <BoxContainer withBorder internalBox>\n      <>\n\n        <div className=\"account-blance\">\n          <div>Account Balance</div>\n          {!bankBalance ? (\n            '--'\n          ) : (\n            <div>\n              <PaymintsNumberFormat\n                number={bankBalance}\n                decimals={2}\n                format=\"currency\"\n              />\n            </div>\n          )}\n        </div>\n        <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n          <div className=\"form-group\" style={{ width: \"48%\" }}>\n            <label>Amount</label>\n            {!bankBalance ? (\n              <Controller\n                as={AmountInput}\n                control={control}\n                name=\"amount\"\n                placeholder=\"$0.00\"\n                onKeyUp={() => setMaxAmountValidate(false)}\n                className=\"create-account__input form-control\"\n                rules={{\n                  required: true,\n                }}\n                autoComplete=\"no\"\n              />\n            ) : (\n              <Controller\n                as={AmountInput}\n                control={control}\n                name=\"amount\"\n                placeholder=\"$0.00\"\n                onKeyUp={() => setMaxAmountValidate(false)}\n                className=\"create-account__input form-control\"\n                rules={{\n                  required: true,\n                  validate: value =>\n                    validAmount(\n                      value,\n                      bankBalance,\n                      extractTranferFeeFromData(transferFeeConfigData)\n                    ),\n                }}\n                autoComplete=\"no\"\n              />\n            )}\n\n\n            {errors.amount && errors.amount.type === 'required' && (\n              <ErrorMessageInput>This is required</ErrorMessageInput>\n            )}\n            {errors.amount && errors.amount.type === 'validate' && (\n              <ErrorMessageInput>\n                Amount entered exceeds account balance and any applicable\n                convenience fees. Please enter an amount lesser than or equal to\n                this combined amount.\n              </ErrorMessageInput>\n            )}\n            {maxAmountValidate && (\n              <ErrorMessageInput>\n                Transfer amount cannot exceed{' '}\n                <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n              </ErrorMessageInput>\n            )}\n          </div>\n          <div className=\"form-group\" style={{ width: \"48%\" }}>\n            <label>Re-Enter Amount</label>\n            <Controller\n              as={AmountInput}\n              control={control}\n              name=\"amountCompare\"\n              placeholder=\"$0.00\"\n              className=\"create-account__input form-control\"\n              rules={{\n                required: true,\n                validate: {\n                  matchesAmount: value => value === getValues('amount'),\n                },\n              }}\n              onPaste={e => {\n                e.preventDefault()\n                return false\n              }}\n            />\n            {errors.amount2 && errors.amount2.type === 'required' && (\n              <ErrorMessageInput>Amount is required </ErrorMessageInput>\n            )}\n            {errors.amount2 && errors.amount2.type === 'matchesAmount' && (\n              <ErrorMessageInput>Amounts do not match</ErrorMessageInput>\n            )}\n\n\n            {errors.amount && errors.amount.type === 'required' && (\n              <ErrorMessageInput>This is required</ErrorMessageInput>\n            )}\n            {errors.amount && errors.amount.type === 'validate' && (\n              <ErrorMessageInput>\n                Amount entered exceeds account balance and any applicable\n                convenience fees. Please enter an amount lesser than or equal to\n                this combined amount.\n              </ErrorMessageInput>\n            )}\n            {maxAmountValidate && (\n              <ErrorMessageInput>\n                Transfer amount cannot exceed{' '}\n                <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n              </ErrorMessageInput>\n            )}\n          </div>\n        </div>\n      </>\n    </BoxContainer>\n\n  );\n};\n\nconst FieldOfficeSelect = ({ errors, control, tenantId, setValue }) => {\n  const { activeOffices } = useAllActiveOfficesSorted(tenantId);\n  const officeOptions = activeOffices.map(office => ({\n    value: office.id,\n    label: office.title + ' - ' + office.city + ', ' + office.state,\n  }));\n\n  return (\n    <BoxContainer withBorder internalBox>\n      <div>\n        <div>\n          <label>Select an Office to make a payment to</label>\n        </div>\n      </div>\n      <Controller\n        as={AntSelect}\n        control={control}\n        name=\"office\"\n        rules={{ required: true }}\n        options={officeOptions}\n        labelInValue={true}\n        placeholder=\"Select an Office:\"\n        style={{\n          boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n          border: '2px solid #c9d1f2',\n          borderRadius: '4px',\n          width: '100%',\n        }}\n      />\n      {errors?.office && errors?.office?.type === 'required' && (\n        <ErrorMessageInput>This is required</ErrorMessageInput>\n      )}\n    </BoxContainer>\n  );\n};\n\nconst RealtorSelect = ({ errors, setRealtorID, realtors, transfer }) => {\n  const realtorsOptions = realtors?.map(realtor => ({\n\n    value: `${realtor.firstName} ${realtor.lastName}`,\n    label: `${realtor.firstName} ${realtor.lastName}`,\n    key: realtor.id,\n  }));\n\n  const filteringArrayToGetID = fullName => {\n    const splittedFirstAndLast = fullName.split(' ');\n    const D = realtors?.filter(obj => {\n      return (\n        obj.firstName === splittedFirstAndLast[0] &&\n        obj.lastName === splittedFirstAndLast[1]\n      );\n    });\n    setRealtorID(D[0].id);\n  };\n\n  return (\n    <BoxContainer withBorder internalBox>\n      <div>\n        <div>\n          <label>Please select your real estate agent</label>\n        </div>\n      </div>\n\n      <AntSelect\n        placeholder=\"Select your Real Estate Agent\"\n        defaultValue={transfer.transfer ? `${transfer.transfer.realtor.firstName} ${transfer.transfer.realtor.lastName}` : null}\n        onChange={filteringArrayToGetID}\n        on\n        rules={{ required: true }}\n        options={realtorsOptions}\n        style={{\n          boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n          border: '2px solid #c9d1f2',\n          borderRadius: '4px',\n          width: '100%',\n        }}\n        showSearch\n      />\n      {errors?.realtor && errors?.realtor?.type === 'required' && (\n        <ErrorMessageInput>This is required</ErrorMessageInput>\n      )}\n    </BoxContainer>\n  );\n};\n\nconst onClickBackButton = history =>\n  history.push(\n    `/create-account/step-select-account${get(history, 'location.search')}`\n  );\n\nconst onClickGoToTransferHistory = history => history.push('/transfer-history');\n\nconst createDraftTransfer = ({\n  props,\n  destAccount,\n  state,\n  newTransfer,\n  creditTransferTypes,\n  transferFeeConfigData, // array\n  realtorData,\n}) => {\n  // here's where we deal with the fee (this works)\n  let fee = null;\n  const [tfg] = transferFeeConfigData;\n  if (tfg && tfg.clientPays) {\n    fee = tfg.amount;\n  }\n\n  return {\n    //...newTransfer,\n    ...Object.assign(newTransfer, { fee }),\n    expectedClosingDate: new Date(get(newTransfer, 'expectedClosingDate')),\n    firstName: get(props.client, 'firstName'),\n    lastName: get(props.client, 'lastName'),\n    email: get(props.client, 'email'),\n    status: 'draft',\n    otherIndividuals: JSON.stringify(realtorData),\n    transferType: {\n      connect: {\n        id: creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].id,\n      },\n    },\n    type: 'Client Transfer',\n    client: {\n      connect: {\n        id: get(props, 'client.id'),\n      },\n    },\n    sourceBankAccount: {\n      connect: {\n        id: get(state, 'data.bankAccount.id'),\n      },\n    },\n    destBankAccount: {\n      connect: {\n        id: get(destAccount, 'id'),\n      },\n    },\n    tenant: {\n      connect: {\n        id: get(props, 'tenant.id'),\n      },\n    },\n    // office: {\n    //   connect: {\n    //     id: get(newTransfer, 'office.value'),\n    //   },\n    // },\n  };\n};\n\nconst showInfo = amount => {\n  if (amount > '5000') {\n    return true;\n  }\n  return false;\n};\n\nconst getDefaultValues = props => {\n  if (get(props, 'transfer.propertyAddress1')) {\n    return {\n      propertyAddress1: get(props, 'transfer.propertyAddress1'),\n      propertyAddress2: get(props, 'transfer.propertyAddress2'),\n      propertyState: get(props, 'transfer.propertyState'),\n      propertyCity: get(props, 'transfer.propertyCity'),\n      propertyZipcode: get(props, 'transfer.propertyZipcode'),\n    };\n  } else {\n    if (\n      get(props, 'transfer.purpose') === 'Earnest Money Deposit for Purchase'\n    ) {\n      return {\n        propertyAddress1: get(props, 'client.address1'),\n        propertyAddress2: get(props, 'client.address2'),\n        propertyState: get(props, 'client.state'),\n        propertyCity: get(props, 'client.city'),\n        propertyZipcode: get(props, 'client.zipcode'),\n      };\n    } else {\n      return {\n        propertyAddress1: get(props, 'client.propertyAddress1'),\n        propertyAddress2: get(props, 'client.propertyAddress2'),\n        propertyState: get(props, 'client.propertyState'),\n        propertyCity: get(props, 'client.propertyCity'),\n        propertyZipcode: get(props, 'client.propertyZipcode'),\n      };\n    }\n  }\n};\n\n/**\n * The primary component...ideally this should be the only component in this file.\n * @param {*} props\n */\nconst TransferDetailsPartners = props => {\n\n  const expectedClosingDate = get(props, 'transfer.expectedClosingDate')\n    ? formatDayFromUTC(get(props, 'transfer.expectedClosingDate'))\n    : undefined;\n\n  const { transferFeeConfigData } = props;\n\n  let { realtors } = useAllRealtorsFromTenant(props.tenant.id);\n\n  const { realtor } = getRealtorStore();\n  // console.log(realtor)\n  if (realtor && realtor.id.length === 24) {\n    // Override realtors object as there is only 1 realtor\n    // since coming from the realtor landing page\n    realtors = [];\n    realtors.push(realtor);\n  }\n\n  const { register, handleSubmit, errors, setValue, control, watch, getValues, } = useForm({\n    defaultValues: {\n      ...props.transfer,\n      notes: extractNotesFromJson(props?.transfer?.notes),\n      expectedClosingDate: expectedClosingDate,\n      ...getDefaultValues(props),\n    },\n  });\n\n  const valuesD = getValues()\n\n  // PAYAPP-1193\n  //Changed to 149999.99 by D.K No ticket assigned just a requestred Hotfix.\n  const MAXIMUM_AMOUNT = 149999.99;\n  const [maxAmountValidate, setMaxAmountValidate] = useState(false);\n  const {\n    register: regDocument,\n    control: controlDocument,\n    watch: watchDocument,\n  } = useForm();\n  const { state, action } = useStateMachine(updateAction);\n  const [emdVisible, setFieldsEMDVisible] = useState(false);\n  const [showREAInfoFill, setShowREAInfoFill] = useState(true);\n  const [showAmountInfo, onShowAmountInfo] = useState(\n    showInfo(watch('amount'))\n  );\n  const [realtorID, setRealtorID] = useState();\n  const [realtorData, setRealtorData] = useState({\n    fullName: '',\n    email: '',\n    phoneNumber: '',\n  });\n  const { createTransfer } = useCreateTransfer();\n  const { saveTransfer } = useSaveTransfer();\n  const { updateClient } = useUpdateClient();\n  const { destAccount } = useEscrowAccountFromTenant(\n    get(props, 'tenant.id', '')\n  );\n  const { institutionLogo } = useInstitutionLogo(\n    get(destAccount, 'institutionCode', '')\n  );\n  const transferId = get(props, 'transfer.id');\n  const [error, onSetError] = useState({ active: false, messageError: '' });\n  const {\n    data: creditTransferTypes,\n    loading: loadingCreditTransferTypes,\n  } = useAllCreditTransferTypes();\n  const [purposes, setPurposes] = useState([]);\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n\n\n\n  useEffect(() => {\n    if (realtors && props && props.transfer) {\n      const realtor = realtors.filter(obj => {\n        return (\n          obj.firstName === props.transfer.realtor?.firstName &&\n          obj.lastName === props.transfer.realtor?.lastName\n        );\n      });\n      setRealtorID(realtor[0]?.id);\n    }\n\n  }, [realtors, props]);\n\n  useEffect(() => {\n    if (creditTransferTypes?.length) {\n      const purposes = JSON.parse(\n        creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].purpose\n      ).purposes;\n      setPurposes(purposes);\n    }\n    if (props?.tenant?.routingType === 'agent') {\n      setShowREAInfoFill(false);\n    }\n  }, [creditTransferTypes]);\n\n  const onSubmit = (newTransfer, saveAsDraft = false) => {\n    delete newTransfer.amountCompare\n    if (Number(watch('amount')) <= MAXIMUM_AMOUNT) {\n      setMaxAmountValidate(false);\n      const tenantId = get(props, 'tenant.id');\n      const destAccountId = get(destAccount, 'id');\n      const bankAccountId = get(state, 'data.bankAccount.id');\n\n      if (newTransfer?.notes) {\n        newTransfer.notes = JSON.stringify([{ note: newTransfer?.notes }]);\n      }\n\n      if (get(props, 'tenant.routingType') === 'office') {\n        newTransfer = {\n          ...newTransfer,\n          office: {\n            connect: {\n              id: get(newTransfer, 'office.value'),\n            },\n          },\n        };\n      }\n      if (get(props, 'tenant.routingType') === 'agent') {\n        if (realtor && realtor.id.length === 24) {\n          newTransfer = {\n            ...newTransfer,\n            realtor: {\n              connect: {\n                id: realtor.id,\n              },\n            },\n          };\n        } else {\n          newTransfer = {\n            ...newTransfer,\n            realtor: {\n              connect: {\n                id: realtorID,\n              },\n            },\n          };\n        }\n      } else if (realtor && realtor.id.length === 24) {\n        newTransfer = {\n          ...newTransfer,\n          realtor: {\n            connect: {\n              id: realtor.id,\n            },\n          },\n        };\n      }\n\n      if (isEmpty(tenantId))\n        onSetError({\n          active: true,\n          messageError: 'Tenant not found, please check url',\n        });\n      if (isEmpty(destAccountId))\n        onSetError({\n          active: true,\n          messageError: 'Destination account not found, please contact support',\n        });\n      if (isEmpty(bankAccountId))\n        onSetError({\n          active: true,\n          messageError: 'Bank account not found, please select bank account',\n        });\n      if (\n        !isEmpty(tenantId) &&\n        !isEmpty(destAccountId) &&\n        !isEmpty(bankAccountId)\n      ) {\n        const newTransferComplete = createDraftTransfer({\n          props,\n          destAccount,\n          state,\n          newTransfer,\n          creditTransferTypes,\n          transferFeeConfigData,\n          realtorData,\n        });\n\n        if (transferId) {\n          saveTransfer({\n            variables: {\n              id: props.transfer.id,\n              transfer: newTransferComplete,\n            },\n          })\n            .then(() => {\n              const newUserAddress = {\n                propertyAddress1: newTransfer.propertyAddress1,\n                propertyAddress2: newTransfer.propertyAddress2,\n                propertyState: newTransfer.propertyState,\n                propertyCity: newTransfer.propertyCity,\n                propertyZipcode: newTransfer.propertyZipcode,\n              };\n\n              updateClient({\n                variables: {\n                  id: get(props, 'client.id'),\n                  client: newUserAddress,\n                },\n              });\n            })\n            .then(() => props.refetchTransfer())\n            .then(() => {\n              action({ transfer: newTransferComplete });\n              if (saveAsDraft) {\n                onClickGoToTransferHistory(props.history);\n              } else {\n                props.history.push(\n                  `/create-account/step-4?go_to_transfer=${transferId}`\n                );\n              }\n            });\n        } else {\n          createTransfer({ variables: { transfer: newTransferComplete } })\n            .then(response => {\n              const transferId = get(response, 'data.createTransfer.id');\n              action({ transfer: newTransferComplete });\n              if (!saveAsDraft) {\n                props.history.push(\n                  `/create-account/step-4?go_to_transfer=${transferId}`\n                );\n              } else {\n                onClickGoToTransferHistory(props.history);\n              }\n            })\n            .then(() => {\n              const newUserAddress = {\n                propertyAddress1: newTransfer.propertyAddress1,\n                propertyAddress2: newTransfer.propertyAddress2,\n                propertyState: newTransfer.propertyState,\n                propertyCity: newTransfer.propertyCity,\n                propertyZipcode: newTransfer.propertyZipcode,\n              };\n\n              updateClient({\n                variables: {\n                  id: get(props, 'client.id'),\n                  client: newUserAddress,\n                },\n              });\n            });\n        }\n      }\n    } else {\n      setMaxAmountValidate(true);\n    }\n  };\n\n  return (\n    <BoxContainer withDoubleBorder withLogButton>\n\n      <Title />\n\n      <form onSubmit={handleSubmit(e => onSubmit(e, false))}>\n        <InfoTransfer />\n\n        <FieldsInfoTransfer\n          register={register}\n          errors={errors}\n          control={control}\n          setValue={setValue}\n          purposes={purposes}\n          emdVisible={emdVisible}\n          setFieldsEMDVisible={setFieldsEMDVisible}\n          realtorData={realtorData}\n          setRealtorData={setRealtorData}\n          client={get(props, 'client')}\n          showREAInfoFill={showREAInfoFill}\n        />\n        <InfoPropertyAddress />\n        <FieldsInfoPropertyAddress\n          register={register}\n          errors={errors}\n          setValue={setValue}\n          transfer={props.transfer}\n          control={control}\n        />\n        <InfoAmount />\n        <FieldInfoAmount\n          errors={errors}\n          control={control}\n          showAmountInfo={showAmountInfo}\n          onShowAmountInfo={onShowAmountInfo}\n          watch={watch}\n          watchDocument={watchDocument}\n          regDocument={regDocument}\n          controlDocument={controlDocument}\n          maxAmountValidate={maxAmountValidate}\n          setMaxAmountValidate={setMaxAmountValidate}\n          MAXIMUM_AMOUNT={MAXIMUM_AMOUNT}\n          bankBalance={get(state, 'data.bankAccount.balance')}\n          transferFeeConfigData={transferFeeConfigData}\n          getValues={getValues}\n        />\n        <DestinationAccount\n          title=\"Destination Account:\"\n          logoURL={HeaderLogo}\n          bankName={get(destAccount, 'bankName')}\n          accountLastFourDigits={get(destAccount, 'accountLastFourDigits')}\n          description={get(destAccount, 'bankDisplayName')}\n          destAccountLogo={get(institutionLogo, 'logoURL')}\n          tenantName={get(props, 'tenant.name')}\n          address1={get(props, 'tenant.address1')}\n          apartmentSuiteNumber={get(props, 'tenant.address2')}\n          city={get(props, 'tenant.city')}\n          state={get(props, 'tenant.state')}\n          zipcode={get(props, 'tenant.zipcode')}\n        />\n        {get(props, 'tenant.routingType') === 'office' && (\n          <FieldOfficeSelect\n            control={control}\n            errors={errors}\n            tenantId={get(props, 'tenant.id')}\n            setValue={setValue}\n            labelInValue={false}\n          />\n        )}\n        {get(props, 'tenant.routingType') === 'agent' && !realtor && (\n          <RealtorSelect\n            control={control}\n            errors={errors}\n            tenantId={get(props, 'tenant.id')}\n            setValue={setValue}\n            labelInValue={false}\n            realtors={realtors}\n            setRealtorID={setRealtorID}\n            transfer={props}\n          />\n        )}\n        <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n          <PaymintsButton\n            className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n            onClick={() => onClickBackButton(props.history)}\n            noShadow\n            type={BUTTON_TYPE.LIGHT_BLUE}\n          >\n            {'< Back'}\n          </PaymintsButton>\n          <PaymintsButton\n            className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n            htmlType=\"submit\"\n            noShadow\n            type={BUTTON_TYPE.INVERSE_BLUE}\n            disabled={loadingCreditTransferTypes}\n          >\n            Review\n          </PaymintsButton>\n          {/* <PaymintsButton\n            className=\"create-account__save-come-back-button create-account__transfer-action-button\"\n            onClick={handleSubmit(e => onSubmit(e, true))}\n            noShadow\n            type={BUTTON_TYPE.LINK}\n          >\n            {'Save & Come Back Later'}\n          </PaymintsButton> */}\n          {error.active && (\n            <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n          )}\n        </div>\n\n      </form>\n    </BoxContainer>\n  );\n};\n\nexport default withRouter(\n  connect(state => ({}), {\n    onSaveTransferDoc: saveTransferDoc,\n  })(TransferDetailsPartners)\n);\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\n\nconst GET_ALL_REALTORS_QUERY = gql`\nquery AllRealtors($where: RealtorWhereInput) {\n  allRealtors(where: $where) {\n    id\n    email\n    mobilePhone\n    active\n    firstName\n    lastName\n    landingPageURI\n    headshotImageURL\n    displayName\n    displayDescription\n    licenses\n    qrCodeURL\n    brokerage {\n      name\n      logoURL\n      websiteURL\n      officePhone\n    }\n  }\n}\n`;\n\nexport default function useAllRealtors(where) {\n  const { loading, error, refetch, data } = useQuery(GET_ALL_REALTORS_QUERY, {\n    variables: { where },\n    fetchPolicy: 'no-cache',\n  });\n  return {\n    loading,\n    error,\n    refetch,\n    realtors: data ? data.allRealtors : undefined,\n  };\n}\n","import React, { useEffect, useState } from 'react';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport { withRouter, Route, Switch, useHistory, Redirect } from 'react-router-dom';\nimport { StateMachineProvider, createStore } from 'little-state-machine';\nimport CreateAccountFirstStep from '../CreatePartnerAccountFirstStep/CreateAccountFirstStep';\nimport CreateAccountVerificationStep from '../CreateAccountVerificationStep/CreateAccountVerificationStep';\nimport CreateAccountSecondStep from '../CreateAccountSecondStep/CreateAccountSecondStep';\nimport TransferDetailsPartner from '../TransferDetailsPartner/TransferDetailsPartner';\nimport TransferSummary from '../TransferSummary/TransferSummary';\nimport TransferSuccess from '../TransferSuccess/TransferSuccess';\nimport AccountError from '../AccountError/AccountError';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport { useTransfer } from '../../utils/service/service_transfer_api';\nimport { getQueryVariable } from '../../utils/util';\nimport BankAccountSelection from '../BankAccountSelection/BankAccountSelection';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore, setRealtorStore } from '../../utils/util';\nimport { getItem, removeItem } from '../../utils/util';\nimport DocumentVerification from '../DocumentVerification/DocumentVerification';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport { getTenantIdentifier } from '../../utils/util';\nimport useAllTransferFeeConfigs from '../../hooks/useAllTransferFeeConfigs';\nimport useAllRealtors from '../../hooks/useAllRealtors';\n\n\ncreateStore({\n  data: {},\n});\n\nconst CreateAccountWizard = props => {\n  const history = useHistory();\n  const { user } = getClientStore();\n  const path = get(split(window.location.search, '?'), 1);\n  //const clientId = getQueryVariable(path, \"client_id\") || \"\";\n\n  const landingPageURI = props.history.location.pathname.split('/');\n  const partnerURI = landingPageURI.pop() || landingPageURI.pop();\n\n  const { realtors } = useAllRealtors({\n    // landingPageURI: landingPageURI[2],\n    landingPageURI: partnerURI,\n    active: true\n  });\n  const realtor = realtors?.[0];\n\n  // TODO:  If no realtor, forward to home page -> /create-account\n  setRealtorStore(realtor);\n\n  props = {\n    ...props,\n    realtor: realtor,\n    partnerURI: partnerURI\n  }\n  \n  const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n  const mobile = user ? user.mobilePhone : null;\n  const { client, refetch, refetch: refetchNewClient } = useClientByPhone(\n    mobile\n  );\n  \n  const { loadingSearchTransfer, transfer, refetchTransfer } = useTransfer(\n    transferId\n  );\n\n  const { value } = getItem('login_user');\n  const { sensitiveData } = useSensitiveData();\n\n  // here's where we retrieve the transfer fee configuration for the\n  // tenant in question\n  const { data: transferFeeConfigData } = useAllTransferFeeConfigs(\n    getTenantIdentifier(window.location.hostname)\n  );\n\n  useEffect(\n    () => {\n      if (user) {\n\n        // if (get(sensitiveData, 'SSN') && get(sensitiveData, 'DOB')) {\n        //   console.log('value', value);\n        //   if (!value) {\n        //     props.history.push(\n        //       `/create-account/step-select-account${get(\n        //         props.history,\n        //         'location.search'\n        //       )}`\n        //     );\n        //   } else {\n        //     removeItem('login_user');\n        //     props.history.push(\n        //       `/create-account/step-select-account${get(\n        //         props.history,\n        //         'location.search'\n        //       )}`\n        //     );\n        //   }\n        // }\n      }\n    },\n    /* eslint-disable */ [client, realtor, sensitiveData, props.history, refetch]\n  );\n\n  if (loadingSearchTransfer) {\n    return <SpinnerLoader />;\n  }\n\n  if (transferId && !transfer) {\n    refetchTransfer({\n      id: transferId,\n    });\n  }\n\n  return (\n    <StateMachineProvider>\n      <Switch>\n        <Route\n          path=\"/partner\"\n          render={() => (\n            <CreateAccountFirstStep\n              user={user}\n              client={user ? client : Object.assign({})}\n              beforeContinue={refetch}\n              refetchNewClient={refetchNewClient}\n              realtor={realtor}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/account-verification\"\n          render={() => (                         \n            <CreateAccountVerificationStep\n              user={user}\n              client={user ? client : Object.assign({})}\n              beforeContinue={refetch}\n              refetchNewClient={refetchNewClient}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-2\"\n          render={() => (\n            <CreateAccountSecondStep\n              user={user}\n              client={client}\n              refetch={refetch}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-select-account\"\n          render={() => (\n            <BankAccountSelection\n              user={user}\n              client={client}\n              transfer={transfer}\n              refetchTransfer={refetchTransfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-3\"\n          render={() => (\n            <TransferDetailsPartner\n              user={user}\n              client={client}\n              transfer={transferId ? transfer : null}\n              refetchTransfer={refetchTransfer}\n              refetch={refetch}\n              transferFeeConfigData={transferFeeConfigData}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/step-4\"\n          render={() => (\n            <TransferSummary\n              user={user}\n              transfer={transfer}\n              client={client}\n              refetchTransfer={refetchTransfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/success\"\n          render={() => (\n            <TransferSuccess\n              user={user}\n              client={client}\n              transfer={transfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/error\"\n          render={() => (\n            <AccountError\n              user={user}\n              client={client}\n              transfer={transfer}\n              {...props}\n            />\n          )}\n        />\n        <Route\n          exact\n          path=\"/create-account/verification\"\n          render={() => (\n            <DocumentVerification\n              user={user}\n              client={client}\n              transfer={transfer}\n              {...props}\n            />\n          )}\n        />\n      </Switch>\n    </StateMachineProvider>\n  );\n};\n\nexport default withRouter(CreateAccountWizard);\n","/*\n * src/components/AlertBanner/index.js\n * Description: Generic alert banner with success, warn, error, and info states\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState } from \"react\";\n\nimport css from \"./AlertBanner.module.css\";\n\nconst AlertBanner = ({ alertType = \"info\", text, show = true }) => {\n  const [visible, setVisible] = useState(show);\n\n  return (\n    <div className={css.alert} style={{ display: visible ? \"block\" : \"none\" }}>\n      <div className={css[alertType]}>\n        <div className={css.text}>{text}</div>\n        <div\n          className={css.closeIcon}\n          role=\"button\"\n          tabIndex=\"0\"\n          onClick={() => setVisible(false)}\n        >\n          <span className={css[alertType]}>X</span>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default AlertBanner;\n","import { useQuery } from '@apollo/react-hooks';\r\nimport { gql } from 'apollo-boost';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport isNil from 'lodash/isNil';\r\n\r\nconst GET_TRANSACTIONS_SORTED_QUERY = gql`\r\n  query allTransfersSorted($where: TransferWhereInput!) {\r\n    allTransfers(where: $where, sortBy: createdAt_DESC) {\r\n      id\r\n      firstName\r\n      middleName\r\n      lastName\r\n      otherIndividuals\r\n      email\r\n      mobilePhone\r\n      propertyAddress1\r\n      propertyAddress2\r\n      propertyCity\r\n      propertyState\r\n      propertyZipcode\r\n      amount\r\n      fee\r\n      purpose\r\n      expectedClosingDate\r\n      sellerName\r\n      notes\r\n      emailMessage\r\n      status\r\n      disbursement\r\n      active\r\n      createdAt\r\n      tenant {\r\n        id\r\n        name\r\n        address1\r\n        address2\r\n        city\r\n        state\r\n        zipcode\r\n      }\r\n      client {\r\n        id\r\n        firstName\r\n        lastName\r\n        address1\r\n        address2\r\n        city\r\n        state\r\n        zipcode\r\n        propertyAddress1\r\n        propertyAddress2\r\n        propertyCity\r\n        propertyState\r\n        propertyZipcode\r\n      }\r\n      transferType {\r\n        id\r\n        name\r\n        isDebit\r\n        isCredit\r\n      }\r\n      sourceBankAccount {\r\n        id\r\n        bankName\r\n        description\r\n        accountNumber\r\n        accountLastFourDigits\r\n        bankDisplayName\r\n        active\r\n        client {\r\n          id\r\n        }\r\n        institutionCode\r\n        updatedAt\r\n      }\r\n      destBankAccount {\r\n        id\r\n        bankName\r\n        description\r\n        accountNumber\r\n        accountLastFourDigits\r\n        bankDisplayName\r\n        active\r\n        client {\r\n          id\r\n        }\r\n        institutionCode\r\n        updatedAt\r\n      }\r\n      agent {\r\n        id\r\n        firstName\r\n        lastName\r\n        email\r\n      }\r\n      realtor {\r\n        id\r\n        firstName\r\n        lastName\r\n        email\r\n      }\r\n      updatedAt\r\n    }\r\n  }\r\n`;\r\n\r\n// PAYAPP-906: Exclude vendor disbursements from the Client UI\r\nexport function useAllTransfersSorted(clientID) {\r\n  const id = isNil(clientID) || isEmpty(clientID) ? null : clientID;\r\n  const { loading, error, data, refetch } = useQuery(\r\n    GET_TRANSACTIONS_SORTED_QUERY,\r\n    {\r\n      variables: {\r\n        where: {\r\n          client: { id },\r\n          status_not_in: ['created', 'rejected', 'awaiting approval'],\r\n          OR: [\r\n            { transferType: { name: 'Client Disbursement' } },\r\n            { transferType: { name: 'Client Transfer' } },\r\n            { transferType_is_null: true },\r\n          ],\r\n        },\r\n      },\r\n    }\r\n  );\r\n\r\n  // the filter is a hack because name_not_i excludes BOTH \"Vendor Disbursement\" and null (no bueno)\r\n  return {\r\n    loadingSearchTransfer: loading,\r\n    error,\r\n    refetchTransfers: refetch,\r\n    transfers: data ? data.allTransfers : undefined,\r\n  };\r\n}\r\n","/*\n * src/utils/service/service_pdf-download.js\n * Description: PDF ReadableStream download utilities\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport axios from \"axios\";\n\n/**\n * Just the promise\n * @param {*} url\n */\nexport const downloadPdfPromise = (url) => {\n  return axios({\n    method: \"get\",\n    responseType: \"blob\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url,\n  });\n};\n\n/**\n * Promise + resolve\n * @param {*} url\n */\nconst downloadPdf = (url) =>\n  axios({\n    method: \"get\",\n    responseType: \"blob\", // <--- this is key\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n    },\n    url,\n  }).then((response) => response.data);\n\nexport default downloadPdf;\n","/*\n * src/components/TransferHistory/TransferDocuments.jsx\n * Description: Downloadable documentation for a particular transfer\n * Copyright (c) 2021\n */\nimport React from \"react\";\n\nimport { shouldHideDocuments } from \"../../utils/validations\";\nimport { asyncWrapper } from \"../../utils/util\";\nimport downloadPdfPromise from \"../../utils/service/service_pdf-download\";\n\nconst TransferDocuments = ({ documentData, transferId, status }) => {\n  const escrowAgreements = documentData.filter(\n    (f) => f?.transfer?.id === transferId && f.type === \"escrow agreement\"\n  );\n  const receipts = documentData.filter(\n    (f) => f?.transfer?.id === transferId && f.type === \"receipt\"\n  );\n\n  /**\n   * PDF stream reader / download functionality\n   * @param {*} pdfUrl String\n   */\n  const openPdf = async (pdfUrl) => {\n    const [err, data] = await asyncWrapper(downloadPdfPromise(pdfUrl));\n\n    if (err) {\n      return;\n    }\n\n    const file = new Blob([data], { type: \"application/pdf\" });\n    const fileURL = URL.createObjectURL(file);\n    window.open(fileURL);\n  };\n\n  return (\n    <React.Fragment>\n      {escrowAgreements.length > 0 &&\n        !shouldHideDocuments(status) &&\n        escrowAgreements.map((m) => {\n          return (\n            <div\n              className=\"transfer-history__item-pdf\"\n              key={m.id}\n              style={{ marginBottom: \"5px\" }}\n            >\n              <i\n                className=\"far fa-file-pdf transfer-history__pdf-icon\"\n                style={{ marginRight: \"5px\" }}\n              />\n              <a\n                href={m.fileURL}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                className=\"paymints__link\"\n              >\n                View Escrow Agreement\n              </a>\n            </div>\n          );\n        })}\n      {receipts.length > 0 &&\n        !shouldHideDocuments(status) &&\n        receipts.map((m) => {\n          return (\n            <div\n              className=\"transfer-history__item-pdf\"\n              key={m.id}\n              onClick={() => openPdf(m.fileURL)}\n              style={{ marginBottom: \"5px\" }}\n            >\n              <i\n                className=\"far fa-file-pdf transfer-history__pdf-icon\"\n                style={{ marginRight: \"5px\" }}\n              />\n              <a\n                href={m.fileURL}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                className=\"paymints__link\"\n              >\n                View Receipt\n              </a>\n            </div>\n          );\n        })}\n    </React.Fragment>\n  );\n};\n\nexport default TransferDocuments;\n","/*\n * src/components/TransferHistory/InboundTransfer.jsx\n * Description: This is a client disbursement\n */\nimport React from 'react';\nimport { Row, Col } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport format from 'dateformat';\nimport {\n  PaymintsNumberFormat,\n  PaymintsHarveyBall,\n  BALL_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport FormatAddress from '../FormatAddress/FormatAddress';\nimport { formatFromDisplay, formatToDisplay } from '../../utils/util';\n\nimport TransferDocuments from './TransferDocuments';\n\nimport './refactor.css';\n\n/**\n * A disbursement\n */\nconst InboundTransfer = ({ transfer, clientDocuments }) => {\n  const dateFormat1 = 'mm/dd/yyyy';\n  const dateFormat2 = 'hh:MM TT';\n\n  /**\n   * Determine if a transfer has valid documentation\n   * @returns\n   */\n  const transferHasDocumentation = () => {\n    if (clientDocuments && clientDocuments.length > 0) {\n      return (\n        clientDocuments.filter(f => f?.transfer?.id === transfer.id).length > 0\n      );\n    }\n    return false;\n  };\n\n  /**\n   * @function\n   * @param {*} option\n   * @returns\n   */\n  const getStatusType = option => {\n    switch (option.toLowerCase().trim()) {\n      case 'draft':\n        return BALL_TYPE.INACTIVE;\n      case 'pending':\n        return BALL_TYPE.PENDING;\n      case 'submitted':\n        return BALL_TYPE.ACTIVE;\n      case 'sent':\n        return BALL_TYPE.SENT;\n      case 'viewed':\n        return BALL_TYPE.VIEWED;\n      case 'completed':\n        return BALL_TYPE.COMPLETED;\n      case 'cancelled':\n        return BALL_TYPE.CANCELLED;\n      case 'error':\n        return BALL_TYPE.ERROR;\n      default:\n        return BALL_TYPE.INACTIVE;\n    }\n  };\n\n  return (\n    <div className=\"transferWrapper\">\n      <div className=\"topWrapper\">\n        <Row>\n          <Col className=\"columnHeading\">Date/Time</Col>\n          <Col className=\"columnHeading\">From</Col>\n          <Col className=\"columnHeading\">To</Col>\n          <Col className=\"columnHeading\">Amount</Col>\n          <Col />\n          <Col className=\"columnHeading\">Status</Col>\n        </Row>\n        <Row>\n          <Col className=\"columnValue\">\n            <div\n              dangerouslySetInnerHTML={{\n                __html: `${format(\n                  transfer?.createdAt || '',\n                  dateFormat1\n                )}<br/>${format(transfer?.createdAt || '', dateFormat2)}`,\n              }}\n            />\n          </Col>\n          <Col className=\"columnValue\">\n            <div\n              dangerouslySetInnerHTML={{\n                __html: formatFromDisplay(transfer),\n              }}\n            />\n          </Col>\n          <Col className=\"columnValue\">\n            <div\n              dangerouslySetInnerHTML={{\n                __html: formatToDisplay(transfer),\n              }}\n            />\n          </Col>\n          <Col className=\"columnValue\">\n            <PaymintsNumberFormat\n              className=\"text-success\"\n              number={transfer?.amount}\n              decimals={2}\n              format=\"currency\"\n            />\n          </Col>\n          <Col />\n          <Col className=\"columnValue initCaps\">\n            <PaymintsHarveyBall type={getStatusType(transfer?.status)}>\n              {transfer?.status}\n            </PaymintsHarveyBall>\n          </Col>\n        </Row>\n      </div>\n\n      {/* related property / actions / documents */}\n      <div className=\"bottomWrapper\">\n        <Row>\n          <Col className=\"columnHeading\">\n            Property Address Related To The Transfer\n          </Col>\n          <Col\n            className=\"columnHeading\"\n            style={{ display: transfer?.status === 'sent' ? 'block' : 'none' }}\n          >\n            Actions\n          </Col>\n          <Col\n            className=\"columnHeading\"\n            style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n          >\n            Documents\n          </Col>\n        </Row>\n        <Row>\n          <Col>\n            <FormatAddress\n              streetNumberName={transfer?.propertyAddress1 || ''}\n              apartmentSuiteNumber={transfer?.propertyAddress2 || ''}\n              city={transfer?.propertyCity || ''}\n              state={transfer?.propertyState || ''}\n              zipcode={transfer?.propertyZipcode || ''}\n            />\n          </Col>\n          <Col\n            style={{ display: transfer?.status === 'sent' ? 'block' : 'none' }}\n          >\n            <div>\n              <Link\n                id=\"sent\"\n                to={`/create-account/step-select-account?go_to_transfer=${transfer?.id}?disbursement=select-bank`}\n              >\n                <button className=\"accept-button\">ACCEPT PAYMENT</button>\n              </Link>\n            </div>\n          </Col>\n          <Col\n            style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n          >\n            <TransferDocuments\n              documentData={clientDocuments}\n              transferId={transfer?.id}\n              status={transfer?.status}\n            />\n          </Col>\n        </Row>\n      </div>\n    </div>\n  );\n};\n\nexport default InboundTransfer;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\n\nimport \"./custom-tooltip.css\";\n\nexport default class CustomTooltip extends Component {\n  render = () => {\n    const tooltipContent = (\n      <Tooltip className={`paymints-tooltip--${this.props.type}`}>\n        {this.props.popoverText}\n      </Tooltip>\n    );\n\n    return (\n      <OverlayTrigger placement=\"top\" overlay={tooltipContent}>\n        {this.props.content}\n      </OverlayTrigger>\n    );\n  };\n}\n\nCustomTooltip.propTypes = {\n  popoverText: PropTypes.any,\n  content: PropTypes.any,\n  type: PropTypes.oneOf([\"default\", \"blue\"]),\n};\n","/*\n * src/components/TransferHistory/TransferEditTooltip.jsx\n * Description: A simple tooltip component for editing a draft\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport CustomTooltip from \"../CustomTooltip/CustomTooltip\";\n\nconst TransferEditTooltip = ({\n  transferId,\n  status,\n  popoverText = \"You can continue editing the transfer\",\n}) => {\n  const content = (\n    <Link\n      className=\"transfer-history__link-draft\"\n      id=\"draft\"\n      to={`/create-account/step-select-account?go_to_transfer=${transferId}`}\n    >\n      {status}\n    </Link>\n  );\n\n  return (\n    <CustomTooltip\n      popoverText={popoverText}\n      content={content}\n      type=\"blue\"\n    ></CustomTooltip>\n  );\n};\n\nexport default TransferEditTooltip;\n","/*\n * src/components/TransferHistory/OutboundTransfer.jsx\n * Description: This is a client disbursement\n */\nimport React from 'react';\nimport { Row, Col } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport format from 'dateformat';\nimport {\n  PaymintsNumberFormat,\n  PaymintsHarveyBall,\n  BALL_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport FormatAddress from '../FormatAddress/FormatAddress';\nimport { formatFromDisplay, formatToDisplay } from '../../utils/util';\n\nimport TransferDocuments from './TransferDocuments';\nimport TransferEditTooltip from './TransferEditTooltip';\n\nimport './refactor.css';\n\n/**\n * A client -> tenant transfer\n */\nconst OutboundTransfer = ({ transfer, clientDocuments }) => {\n  const dateFormat1 = 'mm/dd/yyyy';\n  const dateFormat2 = 'hh:MM TT';\n\n  /**\n   * Determine if a transfer has valid documentation\n   * @returns\n   */\n  const transferHasDocumentation = () => {\n    if (clientDocuments && clientDocuments.length > 0) {\n      return (\n        clientDocuments.filter(f => f?.transfer?.id === transfer.id).length > 0\n      );\n    }\n    return false;\n  };\n\n  /**\n   * @function\n   * @param {*} option\n   * @returns\n   */\n  const getStatusType = option => {\n    switch (option.toLowerCase().trim()) {\n      case 'draft':\n        return BALL_TYPE.INACTIVE;\n      case 'pending':\n        return BALL_TYPE.PENDING;\n      case 'submitted':\n        return BALL_TYPE.ACTIVE;\n      case 'sent':\n        return BALL_TYPE.SENT;\n      case 'viewed':\n        return BALL_TYPE.VIEWED;\n      case 'completed':\n        return BALL_TYPE.COMPLETED;\n      case 'cancelled':\n        return BALL_TYPE.CANCELLED;\n      case 'error':\n        return BALL_TYPE.ERROR;\n      default:\n        return BALL_TYPE.INACTIVE;\n    }\n  };\n\n  return (\n    <div className=\"transferWrapper\">\n      <div className=\"topWrapper\">\n        <Row>\n          <Col className=\"columnHeading\">Date/Time</Col>\n          <Col className=\"columnHeading\">From</Col>\n          <Col className=\"columnHeading\">To</Col>\n          <Col className=\"columnHeading\">Amount</Col>\n          <Col className=\"columnHeading\">Fee</Col>\n          <Col className=\"columnHeading\">Status</Col>\n        </Row>\n        <Row>\n          <Col className=\"columnValue\">\n            <div\n              dangerouslySetInnerHTML={{\n                __html: `${format(\n                  transfer?.createdAt || '',\n                  dateFormat1\n                )}<br/>${format(transfer?.createdAt || '', dateFormat2)}`,\n              }}\n            />\n          </Col>\n          <Col className=\"columnValue\">\n            <div\n              dangerouslySetInnerHTML={{\n                __html: formatFromDisplay(transfer),\n              }}\n            />\n          </Col>\n          <Col className=\"columnValue\">\n            <div\n              dangerouslySetInnerHTML={{\n                __html: formatToDisplay(transfer),\n              }}\n            />\n          </Col>\n          <Col className=\"columnValue\">\n            (-\n            <PaymintsNumberFormat\n              className=\"text-dark\"\n              number={transfer?.amount}\n              decimals={2}\n              format=\"currency\"\n            />\n            )\n          </Col>\n          <Col className=\"columnValue\">\n            <div style={{ display: transfer?.fee ? 'block' : 'none' }}>\n              (-\n              <PaymintsNumberFormat\n                className=\"text-dark\"\n                number={transfer?.fee}\n                decimals={2}\n                format=\"currency\"\n              />\n              )\n            </div>\n            <div style={{ display: transfer?.fee ? 'none' : 'block' }}>--</div>\n          </Col>\n          <Col className=\"columnValue initCaps\">\n            <PaymintsHarveyBall type={getStatusType(transfer?.status)}>\n              {transfer?.status === 'Requested' ||\n              transfer?.status === 'viewed' ? (\n                <TransferEditTooltip\n                  transferId={transfer?.id}\n                  status={transfer?.status}\n                />\n              ) : (\n                transfer?.status || ''\n              )}\n            </PaymintsHarveyBall>\n          </Col>\n        </Row>\n      </div>\n\n      {/* related property / actions / documents */}\n      <div className=\"bottomWrapper\">\n        <Row>\n          <Col xs={6} className=\"columnHeading\">\n            Property Address Related To The Transfer\n          </Col>\n          <Col\n            xs={6}\n            className=\"columnHeading\"\n            style={{\n              display: transfer?.status === 'Requested' ? 'block' : 'none',\n            }}\n          >\n            Actions\n          </Col>\n          <Col\n            xs={6}\n            className=\"columnHeading\"\n            style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n          >\n            Documents\n          </Col>\n        </Row>\n        <Row>\n          <Col xs={6}>\n            <FormatAddress\n              streetNumberName={transfer?.propertyAddress1 || ''}\n              apartmentSuiteNumber={transfer?.propertyAddress2 || ''}\n              city={transfer?.propertyCity || ''}\n              state={transfer?.propertyState || ''}\n              zipcode={transfer?.propertyZipcode || ''}\n            />\n          </Col>\n          <Col\n            xs={6}\n            style={{\n              display: transfer?.status === 'sent' ? 'block' : 'none',\n            }}\n          >\n            <div>\n              <Link\n                id=\"sent\"\n                to={`/create-account/step-select-account?go_to_transfer=${transfer?.id}?disbursement=select-bank`}\n              >\n                <button className=\"accept-button\">ACCEPT PAYMENT</button>\n              </Link>\n            </div>\n          </Col>\n\n          <Col\n            xs={6}\n            style={{\n              display: transfer?.status === 'Requested' ? 'block' : 'none',\n            }}\n          >\n            <div>\n              <Link\n                id=\"sent\"\n                to={`/create-account/step-select-account?go_to_transfer=${transfer?.id}`}\n              >\n                <button\n                  className=\"accept-button\"\n                  style={{ alignItems: 'center' }}\n                >\n                  SEND FUNDS\n                </button>\n              </Link>\n              <div\n                style={{ color: 'gray', fontSize: '13px', padding: '5px 0px' }}\n              >{`Requested by ${transfer?.agent?.firstName} ${transfer?.agent?.lastName} (${transfer?.agent?.email})`}</div>\n            </div>\n          </Col>\n          <Col\n            xs={6}\n            style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n          >\n            <TransferDocuments\n              documentData={clientDocuments}\n              transferId={transfer?.id}\n              status={transfer?.status}\n            />\n          </Col>\n        </Row>\n        <Row>\n          <Col\n            xs={6}\n            className=\"columnHeading\"\n            style={{\n              display: transfer?.realtor ? 'block' : 'none',\n            }}\n          >\n            Real Estate Agent\n          </Col>\n        </Row>\n        <Row>\n          <div\n            style={{\n              display: transfer?.realtor ? 'block' : 'none',\n              padding: '5px 15px',\n            }}\n          >{`${transfer?.realtor?.firstName} ${transfer?.realtor?.lastName} (${transfer?.realtor?.email})`}</div>\n        </Row>\n      </div>\n    </div>\n  );\n};\n\nexport default OutboundTransfer;\n","/*\n * src/components/TransferHistory/TransferHistoryListing.jsx\n * Description: This wrapper component determines inbound (disbursement) or outbound (client -> tenant) transfer\n */\nimport React from 'react';\n\nimport InboundTransfer from './InboundTransfer';\nimport OutboundTransfer from './OutboundTransfer';\n\nconst TransferHistoryListing = ({ transfers, clientDocuments, display }) => {\n  if (display) {\n    return (\n      <>\n        {transfers.map(t => {\n          return t?.disbursement ? (\n            <InboundTransfer\n              key={t.id}\n              transfer={t}\n              clientDocuments={clientDocuments}\n            />\n          ) : (\n            <OutboundTransfer\n              key={t.id}\n              transfer={t}\n              clientDocuments={clientDocuments}\n            />\n          );\n        })}\n      </>\n    );\n  } else {\n    return null;\n  }\n};\n\nexport default TransferHistoryListing;\n","/*\n * MobileHistory.jsx\n * Description: Transaction history listing for mobile\n */\nimport React from 'react';\nimport { Link } from 'react-router-dom';\nimport get from 'lodash/get';\nimport find from 'lodash/find';\nimport filter from 'lodash/filter';\nimport format from 'dateformat';\nimport {\n  PaymintsNumberFormat,\n  PaymintsButton,\n  PaymintsHarveyBall,\n  BUTTON_TYPE,\n  BALL_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport downloadPdfPromise from '../../../utils/service/service_pdf-download';\nimport { shouldHideDocuments } from '../../../utils/validations';\nimport {\n  asyncWrapper,\n  formatFromDisplay,\n  formatToDisplay,\n} from '../../../utils/util';\n\nimport './MobileHistory.css';\n\n/**\n * @function\n * PDF opener\n * @param {*} url\n */\nconst openPdf = async pdfUrl => {\n  const [err, data] = await asyncWrapper(downloadPdfPromise(pdfUrl));\n\n  if (err) {\n    return;\n  }\n\n  const file = new Blob([data], { type: 'application/pdf' });\n  const fileURL = URL.createObjectURL(file);\n  window.open(fileURL);\n};\n\n/**\n * @TODO move to isolated component and basically refactor\n * @param {*} param0\n */\nconst DocumentSection = ({ transfer, clientDocuments, hidden }) => {\n  const id = get(transfer, 'id');\n\n  const documents = filter(\n    clientDocuments,\n    doc => get(doc, 'transfer.id') === id\n  );\n\n  const receipt = get(find(documents, ['type', 'receipt']), 'fileURL');\n\n  const escrowAgreement = get(\n    find(documents, ['type', 'escrow agreement']),\n    'fileURL'\n  );\n\n  if (documents.length === 0) {\n    return null;\n  }\n\n  return (\n    <div hidden={hidden}>\n      <div className=\"document-section\">\n        {escrowAgreement || receipt ? (\n          <div className=\"mobileSec bgSec clearfix\">\n            <p className=\"document-header\">DOCUMENTS</p>\n            <div className=\"contentSec_details f-left\">\n              {escrowAgreement ? (\n                <p>\n                  <i className=\"far fa-file-pdf transfer-history__pdf-icon\" />\n                  <a\n                    href={escrowAgreement}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"paymints__link\"\n                  >\n                    View Escrow Agreement\n                  </a>\n                </p>\n              ) : null}\n              {receipt ? (\n                <p onClick={() => openPdf(receipt)}>\n                  <i className=\"far fa-file-pdf transfer-history__pdf-icon\" />\n                  <a\n                    href=\"#\"\n                    rel=\"noopener noreferrer\"\n                    className=\"paymints__link\"\n                  >\n                    View Receipt\n                  </a>\n                </p>\n              ) : null}\n            </div>\n          </div>\n        ) : null}\n      </div>\n    </div>\n  );\n};\n\n/**\n * @TODO refactor to separate component...no internal component definitions\n * Don't understand why it's called UpdateUI when it's a mobile transfer card block\n * @param {*} param0\n */\nconst UpdateUI = ({ transfer, getStatusType, clientDocuments, tenant }) => {\n  const id = get(transfer, 'id');\n  const status = get(transfer, 'status');\n  const dateFormat = 'mm/dd/yyyy hh:MM TT';\n  const updatedAt = format(get(transfer, 'updatedAt'), dateFormat);\n  const createdAt = format(get(transfer, 'createdAt'), dateFormat);\n  const propertyAddress1 = get(transfer, 'propertyAddress1');\n  const propertyAddress2 = get(transfer, 'propertyAddress2');\n  const propertyCity = get(transfer, 'propertyCity');\n  const propertyState = get(transfer, 'propertyState');\n  const propertyZipcode = get(transfer, 'propertyZipcode');\n  const amount = get(transfer, 'amount');\n  const disbursement = get(transfer, 'disbursement');\n\n  return (\n    <>\n      {disbursement && status === 'draft' ? null : (\n        <>\n          {!disbursement ? (\n            <div className=\"transfer-card\">\n              <div\n                style={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  marginBottom: '6px',\n                }}\n              >\n                <PaymintsHarveyBall type={getStatusType(status)} />\n                <div\n                  className=\"transfer-status\"\n                  style={{ padding: '0', margin: '4px 5px 0 0 ' }}\n                >\n                  {status}\n                </div>\n              </div>\n\n              {/* <p className=\"transfer-status\">{status}</p> */}\n              <div className=\"flex-container\">\n                <div className=\"transfer-details\">\n                  {/* Date/Time */}\n                  <span className=\"for\">\n                    <b>Date/Time</b>\n                  </span>\n                  <p className=\"date-time\">{createdAt}</p>\n                  {/* FROM */}\n                  <span className=\"for\">\n                    <b>From</b>\n                  </span>\n                  <p\n                    className=\"transfer-source-bank\"\n                    dangerouslySetInnerHTML={{\n                      __html: formatFromDisplay(transfer, 'text'),\n                    }}\n                  />\n                  <p className=\"date-time\">Submitted {createdAt}</p>\n\n                  <span className=\"for\">\n                    <b>Amount</b>\n                  </span>\n                  <p className=\"transfer-amount\">\n                    {!disbursement ? (\n                      <>\n                        (-\n                        <PaymintsNumberFormat\n                          className=\"text-dark\"\n                          number={amount}\n                          decimals={2}\n                          format=\"currency\"\n                        />\n                        )\n                      </>\n                    ) : (\n                      <PaymintsNumberFormat\n                        className=\"text-success\"\n                        number={amount}\n                        decimals={2}\n                        format=\"currency\"\n                      />\n                    )}\n                  </p>\n\n                  {/* FEE */}\n                  <div\n                    style={{\n                      marginTop: '5px',\n                      display: transfer?.fee ? 'block' : 'none',\n                    }}\n                  >\n                    <span className=\"for\">\n                      <b>Fee</b>\n                    </span>\n                    <p className=\"transfer-amount\">\n                      (-\n                      <PaymintsNumberFormat\n                        className=\"text-dark\"\n                        number={transfer?.fee}\n                        decimals={2}\n                        format=\"currency\"\n                      />\n                      )\n                    </p>\n                  </div>\n\n                  {/* TO */}\n                  <div className=\"transfer-parties\">\n                    <p>\n                      <span className=\"for\">To</span>\n                      <br />\n                      {formatToDisplay(transfer, 'text')}\n                    </p>\n                    <p>\n                      <span className=\"for\">Property Address</span>\n                      <br />\n                      {propertyAddress1}\n                      {propertyAddress2 ? (\n                        <>\n                          <br />\n                          {propertyAddress2}\n                        </>\n                      ) : (\n                        ''\n                      )}\n                      <br />\n                      {propertyCity}, {propertyState} {propertyZipcode}\n                    </p>\n                    <p>\n                      {status === 'sent' && transfer?.disbursement ? (\n                        <PaymintsButton\n                          htmlType=\"submit\"\n                          className=\"mr-4 mt-3 create-account__transfer-action-button\"\n                          noShadow\n                          type={BUTTON_TYPE.INVERSE_BLUE}\n                        >\n                          <Link\n                            id=\"sent\"\n                            to={`/create-account/step-select-account?go_to_transfer=${id}?disbursement=select-bank`}\n                          >\n                            Accept Payment\n                          </Link>\n                        </PaymintsButton>\n                      ) : null}\n                    </p>\n                  </div>\n                </div>\n              </div>\n              <DocumentSection\n                hidden={shouldHideDocuments(status)}\n                transfer={transfer}\n                clientDocuments={clientDocuments}\n              />\n            </div>\n          ) : (\n            <div className=\"transfer-card\">\n              <div style={{ display: 'flex', alignItems: 'end' }}>\n                <PaymintsHarveyBall type={getStatusType(status)} />\n                <div className=\"transfer-status\">{status}</div>\n              </div>\n              <div className=\"flex-container\">\n                <div className=\"transfer-details\">\n                  <div className=\"transfer-parties\">\n                    {/* FROM */}\n                    <p>\n                      <span className=\"for\">From</span>\n                      <br />\n                      {formatFromDisplay(transfer, 'text')}\n                    </p>\n                    <p className=\"date-time\">Submitted {updatedAt}</p>\n                    {/* TO */}\n                    <div>\n                      <span className=\"for\">To</span>\n                      <p\n                        className=\"transfer-source-bank\"\n                        dangerouslySetInnerHTML={{\n                          __html: formatToDisplay(transfer, 'text'),\n                        }}\n                      />\n                      <p className=\"transfer-amount\">\n                        {!disbursement ? '-' : null}\n                        <PaymintsNumberFormat\n                          className={`${\n                            disbursement ? 'text-success' : 'text-dark'\n                          }`}\n                          number={amount}\n                          decimal={2}\n                          format=\"currency\"\n                        />\n                      </p>\n                      <span className=\"for\">Property Address</span>\n                      <br />\n                      {propertyAddress1}\n                      {propertyAddress2 ? (\n                        <>\n                          <br />\n                          {propertyAddress2}\n                        </>\n                      ) : (\n                        ''\n                      )}\n                      <br />\n                      {propertyCity}, {propertyState} {propertyZipcode}\n                    </div>\n                    <p>\n                      {status === 'sent' && transfer?.disbursement ? (\n                        <PaymintsButton\n                          htmlType=\"submit\"\n                          className=\"mr-4 mt-3 create-account__transfer-action-button\"\n                          noShadow\n                          type={BUTTON_TYPE.INVERSE_BLUE}\n                        >\n                          <Link\n                            id=\"sent\"\n                            to={`/create-account/step-select-account?go_to_transfer=${id}?disbursement=select-bank`}\n                          >\n                            Accept Payment\n                          </Link>\n                        </PaymintsButton>\n                      ) : null}\n                    </p>\n                  </div>\n                </div>\n              </div>\n              <DocumentSection\n                hidden={shouldHideDocuments(status)}\n                transfer={transfer}\n                clientDocuments={clientDocuments}\n              />\n            </div>\n          )}\n        </>\n      )}\n    </>\n  );\n};\n\nexport default function MobileHistory({\n  transfers,\n  institutionsLogo,\n  clientDocuments,\n  tenant,\n}) {\n  /**\n   * @function\n   * @param {*} option\n   * @returns\n   */\n  const getStatusType = option => {\n    switch (option.toLowerCase().trim()) {\n      case 'draft':\n        return BALL_TYPE.INACTIVE;\n      case 'pending':\n        return BALL_TYPE.PENDING;\n      case 'submitted':\n        return BALL_TYPE.ACTIVE;\n      case 'sent':\n        return BALL_TYPE.SENT;\n      case 'viewed':\n        return BALL_TYPE.VIEWED;\n      case 'completed':\n        return BALL_TYPE.COMPLETED;\n      case 'cancelled':\n        return BALL_TYPE.CANCELLED;\n      case 'error':\n        return BALL_TYPE.ERROR;\n      default:\n        return BALL_TYPE.INACTIVE;\n    }\n  };\n\n  const transfersData = transfers || [];\n  const transferCards = (transfers || []).map(transfer => (\n    <React.Fragment key={transfer.id}>\n      <UpdateUI\n        key={get(transfer, 'id')}\n        transfer={transfer}\n        institutionsLogo={institutionsLogo}\n        getStatusType={getStatusType}\n        clientDocuments={clientDocuments}\n        tenant={tenant}\n      />\n    </React.Fragment>\n  ));\n  return (\n    <div className=\"mobile-history d-block d-lg-none d-xl-none\">\n      {transfersData.length ? (\n        transferCards\n      ) : (\n        <p className=\"transfer-history__no-data\">\n          You have no pending or completed transfers, select the “+” button to\n          start a transfer.\n        </p>\n      )}\n    </div>\n  );\n}\n","/*\n * src/components/TransferHistory/TransferHistory.jsx\n * Description: Listing out transfers\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState, useEffect } from 'react';\nimport { withRouter, Link } from 'react-router-dom';\nimport get from 'lodash/get';\nimport map from 'lodash/map';\nimport size from 'lodash/size';\nimport { PaymintsIconButton } from 'paymints-address-autocomplete-field';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport {\n  useClientByPhone,\n  useAllClientDocuments,\n} from '../../utils/service/service_user_api';\nimport AlertBanner from '../AlertBanner/';\nimport { useAllTransfersSorted } from '../../hooks/useAllTransfersSorted';\n// import  useAllTransferArchives  from '../../hooks/useAllTransferArchives';\nimport { useInstitutionLogoOR } from '../../utils/service/service_institution_logo';\nimport ContentModal from '../ContentModal/ContentModal';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore } from '../../utils/util';\n\nimport TransferHistoryListing from './TransferHistoryListing';\nimport MobileHistory from './MobileHistory/MobileHistory';\nimport './transferHistory.css';\n\nconst buildCancelEditError = () => (\n  <div className=\"transfer-history__modal\">\n    <div className=\"transfer-history__modal-info\">\n      The transfer cannot be edited\n    </div>\n  </div>\n);\n\n/**\n * The primary component\n * @param {*} props\n * @returns\n */\nconst TransferHistory = props => {\n  // local state\n  const [seeMoreInfo, updateSeeMoreInfo] = useState([]);\n\n  const [transfers, setTransfers]= useState([])\n  // get client information\n  const { user } = getClientStore();\n  const { loadingSearch, client } = useClientByPhone(user?.mobilePhone || null);\n  const clientID = get(client, 'id');\n\n  // retrieve transfer information\n\n  const {\n    loadingSearchTransfer,\n    transfers: transfersNew,\n    refetchTransfers,\n  } = useAllTransfersSorted(clientID);\n\n  // retrieve transfer archive information\n\n  // const {\n  //   transfers: transfersArchive,\n  //   loadingTransfersArchive\n  // } = useAllTransferArchives();\n\n  \n  \n\n  // retrieve client documentation\n  const { clientDocuments } = useAllClientDocuments(clientID);\n\n  // unique list of bank accounts codes\n  let bankAccountCodes = [];\n  let escrowBankAccountCodes = [];\n  if (transfers && transfers.length > 0) {\n    bankAccountCodes = [\n      ...new Set(\n        transfers.map(f => f?.sourceBankAccount?.institutionCode).filter(f => f)\n      ),\n    ];\n\n    escrowBankAccountCodes = [\n      ...new Set(\n        transfers.map(f => f?.escrowBankAccount?.institutionCode).filter(f => f)\n      ),\n    ];\n  }\n\n  // combine them\n  const allCodes = [...bankAccountCodes, ...escrowBankAccountCodes].map(m => {\n    return {\n      institutionCode: m,\n    };\n  });\n\n  const { institutionsLogo } = useInstitutionLogoOR(\n    size(allCodes) > 0 ? allCodes : []\n  );\n\n  const [showModal, setShow] = useState(false);\n  const tenant = get(props, 'tenant');\n  const handleClose = () => setShow(false);\n  const handleShow = () => setShow(true);\n\n  const nav = document.querySelector('.menu-nav-bar__grey-bar');\n  if (!nav) window.location.reload();\n\n  /**\n   * @function\n   */\n  const alertBannerText = () => {\n    if (transfers) {\n      return `You Have ${\n        transfers.filter(f => f.status === 'sent').length\n      } Transfers Waiting for You!`;\n    }\n    return '';\n  };\n\n  /**\n   * @function\n   */\n  const alertBannerShouldBeVisible = () => {\n    if (transfers && transfers.length > 0) {\n      return transfers.filter(f => f.status === 'sent').length > 0;\n    }\n    return false;\n  };\n\n  /**\n   *\n   * @param {*} history\n   * @returns\n   */\n  const onClickMakeTransfer = history => {\n    history.push('/create-account/step-select-account');\n  };\n\n  useEffect(() => {\n    const transfersID = map(transfers, item => ({\n      id: item.id,\n      showMoreInfo: false,\n    }));\n    updateSeeMoreInfo(transfersID);\n    refetchTransfers();\n    if (get(props.location, 'state.editError')) {\n      handleShow();\n      props.location.state.editError = false;\n    }\n    // if (transfersNew && transfersArchive) {\n    //   setTransfers([...transfersNew, ...transfersArchive]) \n    // }\n    if (transfersNew ) {\n      setTransfers([...transfersNew]) \n    }\n    \n  }, [clientID, props.location, refetchTransfers, transfersNew]);\n  // }, [clientID, props.location, refetchTransfers, transfersNew, transfersArchive]);\n\n  // if (loadingSearch || loadingSearchTransfer || loadingTransfersArchive) {\n  if (loadingSearch || loadingSearchTransfer ) {\n    return <SpinnerLoader />;\n  } else {\n    return (\n      <>\n        <ContentModal\n          isVisible={showModal}\n          onClose={handleClose}\n          content={buildCancelEditError()}\n          withoutButtons\n          small\n          hide\n        />\n  \n        <BoxContainer withDoubleBorder withLogButton widest>\n          <div className=\"transfer-history__line-container\">\n            <div className=\"transfer-history__title\">Transfers</div>\n            <div className=\"transfer-history__addicon\">\n              <PaymintsIconButton type=\"primary\" size=\"large\">\n                <Link to=\"#\" onClick={() => onClickMakeTransfer(props.history)}>\n                  <i className=\"fa fa-plus\" />\n                </Link>\n              </PaymintsIconButton>\n            </div>\n          </div>\n  \n          <AlertBanner\n            alertType=\"warn\"\n            text={alertBannerText()}\n            show={alertBannerShouldBeVisible()}\n          />\n          \n          {transfers?.length > 0 ? (\n            <>\n              <MobileHistory\n                transfers={transfers}\n                seeMoreInfo={seeMoreInfo}\n                updateSeeMoreInfo={updateSeeMoreInfo}\n                institutionsLogo={institutionsLogo}\n                clientDocuments={clientDocuments}\n                tenant={tenant}\n              />\n              <TransferHistoryListing\n                transfers={transfers}\n                seeMoreInfo={seeMoreInfo}\n                updateSeeMoreInfo={updateSeeMoreInfo}\n                institutionsLogo={institutionsLogo}\n                clientDocuments={clientDocuments}\n                tenant={tenant}\n                display={window.innerWidth < 600 ? false : true}\n              />\n            </>\n          ) : (\n            <p className=\"transfer-history__no-data\">\n              You have no pending or completed transfers, select the “+” button to\n              start a transfer.\n            </p>\n          )}\n        </BoxContainer>\n      </>\n    );\n  }\n\n  \n};\n\nexport default withRouter(TransferHistory);\n","import React, { useState } from 'react';\nimport BankAccounts from '../BankAccounts/BankAccounts';\n\nconst BankAccountsHistory = props => {\n  const [loadingService, onSetLoadingService] = useState(false);\n  return (\n    <BankAccounts\n      withDoubleBorder\n      withLogButton\n      widest\n      loadingService={loadingService}\n      onSetLoadingService={onSetLoadingService}\n      client\n      tenant\n      {...props}\n    />\n  );\n};\n\nexport default BankAccountsHistory;\n","import React, { useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { get, split } from 'lodash';\nimport { useForm, Controller } from 'react-hook-form';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport { withRouter } from 'react-router-dom';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport SsnToggleVisibilityField from '../SsnInput/SsnToggleVisibilityInput';\nimport { validSSN, validAge } from '../../utils/validations';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport PhoneField from '../PhoneField/PhoneField';\nimport { getClientStore } from '../../utils/util';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport { encrypt, decrypt } from '../../utils/encryption';\n\nimport './account.css';\nimport { saveSensitiveData } from '../../utils/service/service_api';\nimport { useAllTenants } from '../../utils/service/service_tenant_api';\n\nconst Title = () => (\n  <div className=\"create-account__line-container\">\n    <div className=\"create-account__title\">Your Account</div>\n  </div>\n);\n\nconst FieldsPersonalInformation = ({\n  register,\n  watch,\n  setValue,\n  control,\n  errors,\n  client,\n}) => {\n  const nav = document.querySelector('.menu-nav-bar__grey-bar');\n  if (!nav) window.location.reload();\n  return (\n    <BoxContainer internalBox withBorder>\n      <div className=\"form-group\">\n        <label>First Name</label>\n        <input\n          type=\"text\"\n          placeholder=\" \"\n          id=\"firstName\"\n          name=\"firstName\"\n          className=\"create-account__input form-control\"\n          ref={register({ required: true, maxLength: 30 })}\n        />\n        {errors.firstName && errors.firstName.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        {errors.firstName && errors.firstName.type === 'maxLength' && (\n          <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n        )}\n      </div>\n      <div className=\"form-group\">\n        <label>Middle Name or Initial</label>\n        <input\n          type=\"text\"\n          id=\"middleName\"\n          placeholder=\" \"\n          name=\"middleName\"\n          className=\"create-account__input form-control account__control_width\"\n          ref={register}\n        />\n      </div>\n      <div className=\"form-group\">\n        <label>Last Name</label>\n        <input\n          type=\"text\"\n          id=\"lastName\"\n          placeholder=\" \"\n          name=\"lastName\"\n          className=\"create-account__input form-control\"\n          ref={register({ required: true, maxLength: 30 })}\n        />\n        {errors.lastName && errors.lastName.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n        {errors.lastName && errors.lastName.type === 'maxLength' && (\n          <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n        )}\n      </div>\n      <div className=\"form-group\">\n        <label>Last 4 Digits of Social Security Number</label>\n        <Controller\n          as={SsnToggleVisibilityField}\n          control={control}\n          name=\"ssn\"\n          placeholder=\"Social Security Number\"\n          className=\"create-account__input form-control emd-landing-page__form-field--password account__control_width\"\n          rules={{ required: false, validate: validSSN }}\n          disabled={client.ssn}\n        />\n        {errors.ssn && errors.ssn.type === 'validate' && (\n          <ErrorMessageInput>\n            Must be a valid social security number\n          </ErrorMessageInput>\n        )}\n      </div>\n      <div className=\"form-group\">\n        <label>Date of Birth</label>\n        <input\n          type=\"date\"\n          id=\"dateOfBirth\"\n          name=\"dateOfBirth\"\n          className=\"create-account__input form-control account__control_width\"\n          placeholder=\"yyyy-mm-dd\"\n          ref={register({ required: false, validate: validAge })}\n        />\n        {errors.dateOfBirth && errors.dateOfBirth.type === 'validate' && (\n          <ErrorMessageInput>Must be at least 18 years old</ErrorMessageInput>\n        )}\n      </div>\n      <div className=\"form-group\">\n        <label>Email Address</label>\n        <input\n          type=\"email\"\n          id=\"email\"\n          name=\"email\"\n          className=\"create-account__input form-control padding-bottom-10\"\n          placeholder=\"Email Address\"\n          ref={register({ maxLength: 50 })}\n        />\n        {errors.email && errors.email.type === 'maxLength' && (\n          <span>Max length exceeded</span>\n        )}\n      </div>\n      <div className=\"form-group\">\n        <label>Address Associated with Bank Account</label>\n        <input\n          type=\"text\"\n          name=\"address1\"\n          placeholder=\"Address 1\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: false })}\n        />\n        <input\n          type=\"text\"\n          name=\"address2\"\n          placeholder=\"Address 2\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register}\n        />\n        <input\n          type=\"text\"\n          name=\"city\"\n          placeholder=\"City\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: false })}\n        />\n        <Controller\n          as={Select}\n          control={control}\n          name=\"state\"\n          rules={{ required: false }}\n          options={states}\n          placeholderText=\"State\"\n          className=\"create-account__input form-control create-account__address-info\"\n        />\n        <input\n          type=\"text\"\n          name=\"zipcode\"\n          placeholder=\"Zip code\"\n          className=\"create-account__input form-control create-account__address-info\"\n          autoComplete=\"no\"\n          ref={register({ required: false })}\n        />\n        <br />\n      </div>\n    </BoxContainer>\n  );\n};\n\nconst PersonalInformation = ({\n  register,\n  watch,\n  setValue,\n  control,\n  errors,\n  client,\n}) => (\n  <div className=\"create-account__information-container\">\n    <div className=\"create-account__title-information\">\n      Personal Information\n    </div>\n    <FieldsPersonalInformation\n      register={register}\n      errors={errors}\n      control={control}\n      setValue={setValue}\n      watch={watch}\n      client={client}\n    />\n  </div>\n);\n\nconst FieldsContactInformation = ({ register, errors, control }) => {\n  return (\n    <BoxContainer internalBox withBorder>\n      <div className=\"form-group\">\n        <label>Mobile Number</label>\n        <Controller\n          as={PhoneField}\n          control={control}\n          name=\"mobilePhone\"\n          placeholder=\" \"\n          className=\"create-account__input form-control\"\n          disabled\n        />\n        {errors.mobilePhone && errors.mobilePhone.type === 'required' && (\n          <ErrorMessageInput>This is required</ErrorMessageInput>\n        )}\n      </div>\n    </BoxContainer>\n  );\n};\n\nconst ContactInformation = ({ register, errors, control }) => (\n  <div className=\"create-account__information-container\">\n    <div className=\"create-account__title-information\">Contact Information</div>\n    <FieldsContactInformation\n      register={register}\n      errors={errors}\n      control={control}\n    />\n  </div>\n);\n\nconst Account = props => {\n  const { user } = getClientStore();\n  const { loadingSearch, client, refetch } = useClientByPhone(user.mobilePhone);\n  const clientID = get(client, 'id');\n  const { loading, updateClient } = useUpdateClient();\n  const tenantIdentifier = split(window.location.hostname, '.')[0];\n  const { loading: loadingTenant, tenant } = useAllTenants(tenantIdentifier);\n  const tenantID = get(tenant, 'id');\n  const { register, handleSubmit, watch, errors, setValue, control } = useForm({\n    defaultValues: client,\n  });\n  const { sensitiveData, refetch: refetchSensitiveData } = useSensitiveData();\n\n  const { SSN, DOB } = sensitiveData || {};\n\n  useEffect(() => {\n    if (client && sensitiveData) {\n      setValue([\n        { firstName: client.firstName },\n        { middleName: client.middleName },\n        { lastName: client.lastName },\n        { address1: client.address1 },\n        { address2: client.address2 },\n        { state: client.state },\n        { city: client.city },\n        { zipcode: client.zipcode },\n        { mobilePhone: validateNumber(client.mobilePhone) },\n        { email: client.email },\n        { ssn: ssnCutter(decrypt(SSN)) },\n        { dateOfBirth: decrypt(DOB) },\n      ]);\n    }\n  }, [client, SSN, DOB]);\n\n  \n\n  const ssnCutter = (ssn) => {\n    if (ssn.length > 4) {\n      return ssn.slice(ssn?.length - 4)\n    } else return ssn\n  };\n\n  const validateNumber = phone => {\n    return phone ? phone.slice(2, 12) : phone;\n  };\n\n  const onSubmit = async newUser => {\n    delete newUser.mobilePhone;\n\n    const sensitiveData = {\n      SSN: encrypt(newUser.ssn),\n      DOB: encrypt(newUser.dateOfBirth),\n    };\n    //removing sensititve data from query\n    const { ssn, dateOfBirth, ...rest } = newUser;\n\n    try {\n      await saveSensitiveData(clientID, tenantID, sensitiveData);\n\n      await updateClient({\n        variables: {\n          id: client.id,\n          client: rest,\n        },\n      });\n\n      await refetch();\n      await refetchSensitiveData();\n    } catch (err) {\n      console.log(err);\n    }\n  };\n\n  if (loading || loadingSearch || loadingTenant) {\n    return <SpinnerLoader />;\n  }\n\n  return (\n    <BoxContainer withDoubleBorder withLogButton>\n      <Title />\n      <form onSubmit={handleSubmit(onSubmit)}>\n        <PersonalInformation\n          register={register}\n          errors={errors}\n          control={control}\n          setValue={setValue}\n          watch={watch}\n          client={client}\n        />\n        <ContactInformation\n          register={register}\n          errors={errors}\n          control={control}\n        />\n        <div className=\"account__footer-button\">\n          <PaymintsButton\n            htmlType=\"submit\"\n            className=\"create-account__button\"\n            noShadow\n            type={BUTTON_TYPE.INVERSE_BLUE}\n          >\n            <div className=\"create-account__button-text\">Save</div>\n          </PaymintsButton>\n        </div>\n      </form>\n    </BoxContainer>\n  );\n};\n\nexport default withRouter(Account);\n","import React, { useState } from \"react\";\nimport includes from \"lodash/includes\";\nimport { withRouter, Link } from \"react-router-dom\";\nimport userLogo from \"../../styles/assets/user.svg\";\nimport bankLogo from \"../../styles/assets/bank.svg\";\nimport amountLogo from \"../../styles/assets/amount.svg\";\nimport userLogoBlue from \"../../styles/assets/user-blue.svg\";\nimport bankLogoBlue from \"../../styles/assets/bank-blue.svg\";\nimport amountLogoBlue from \"../../styles/assets/amount-blue.svg\";\nimport contactSupport from \"../../styles/assets/support.svg\";\nimport LogOut from \"../../styles/assets/logout.svg\";\nimport { useAuth0 } from \"../../react-auth0-spa.js\";\nimport { clearStore } from \"../../utils/util\";\nimport messageBlue from \"../../styles/assets/message-blue.svg\";\nimport messageIcon from \"../../styles/assets/message.svg\";\nimport NewTransferInactive from \"../../styles/assets/New-transfer-inactive.svg\";\nimport NewTransferActive from \"../../styles/assets/New-transfer-active.svg\";\n\nimport \"./menuNavBar.css\";\n\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  arrow: {\n    \"&:before\": {\n      border: \"rgba(0, 0, 0, 0.7)\"\n    },\n    color: \"rgba(0, 0, 0, 0.7)\"\n  },\n  tooltip: {\n    backgroundColor: \"rgba(0, 0, 0, 0.7)\",\n    color: \"white\",\n    marginLeft: \"30px\",\n    fontSize: \"1em\",\n  }\n}));\n\nconst account = \"/account\";\nconst bankAccounts = \"/bank-accounts\";\nconst transfers = \"/transfer-history\";\nconst message = \"/message-center\";\nconst newTransferStart = [\"/create-account/step-select-account\", \"/create-account/step-select-account\", \"/create-account/step-3\"]  ;\n\nconst MenuNavBar = (props) => {\n  const pathname = window.location.pathname;\n  const isMobile = window.screen.width < 767;\n  const [isOpen, openMenu] = useState(isMobile);\n  const isSelectedAccount = includes(account, pathname);\n  const isSelectedBank = includes(bankAccounts, pathname);\n  const isSelectedTransfer = includes(transfers, pathname);\n  const isMessageCenter = includes(message, pathname);\n  const isNewTransfer = includes(newTransferStart, pathname);\n  \n  const hideSideNav = (mobile) => (mobile ? openMenu(false) : \"\");\n  const { logout } = useAuth0();\n  const userLogout = () => {\n    logout();\n    clearStore();\n  };\n  const classes = useStyles();\n\n  if (props.hide) {\n    return props.children;\n  }\n\n  return (\n    <div id=\"outer-container\">\n      <main\n        id=\"page-wrap\"\n        className={`menu-nav-bar__page-wrap ${isOpen ? \"\" : \"menu-toggle-open\"\n          }`}\n      >\n        <div className=\"menu-nav-bar__grey-bar\">\n          <div className=\"menu-nav-bar__content\">\n            <div className=\"menu-toggle-btn-wrapper\">\n              <button\n                className=\"menu-toggle-btn\"\n                onClick={() => openMenu(!isOpen)}\n              >\n                <i className=\"fa fa-angle-double-right\"></i>\n              </button>\n            </div>\n            <div className=\"menu-nav-bar-list\">\n              <div\n                className={`menu-nav-items ${!isOpen ? \"gray_icon\" : \"\"}`}\n                onClick={() => hideSideNav(props.mobile)}\n              >\n                <Link\n                  className={`menu-link-item ${isSelectedAccount ? \"selected\" : \"\"\n                    }`}\n                  to=\"/account\"\n                >\n                  <Tooltip\n                    arrow\n                    placement=\"right\"\n                    classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n                    title={isOpen ? \"My Account\" : \"\"}\n                  >\n                    <img\n                      src={isSelectedAccount ? userLogoBlue : userLogo}\n                      alt=\"\"\n                    />\n                  </Tooltip>\n                  <span className={isSelectedAccount ? \"selected\" : \"\"}>\n                    My Account\n                  </span>\n                </Link>\n              </div>\n\n\n              <div\n                className=\"menu-nav-items\"\n                onClick={() => hideSideNav(props.mobile)}\n              >\n                <Link\n                  className={`menu-link-item ${isNewTransfer ? \"selected\" : \"\"\n                    }`}\n                  to=\"/create-account/step-select-account\"\n                >\n                  <Tooltip\n                    title={\"New Transfer\"}\n                    arrow\n                    placement=\"right\"\n                    classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n                  >\n                    <img src={isNewTransfer ? NewTransferActive : NewTransferInactive} alt=\"\" />\n                  </Tooltip>\n                  <span className={isNewTransfer ? \"selected\" : \"\"}>\n                    New Transfer\n                  </span>\n                </Link>\n              </div>\n\n\n              <div\n                className=\"menu-nav-items\"\n                onClick={() => hideSideNav(props.mobile)}\n              >\n                <Link\n                  className={`menu-link-item ${isSelectedBank ? \"selected\" : \"\"\n                    }`}\n                  to=\"/bank-accounts\"\n                >\n                  <Tooltip\n                    title={isOpen ? \"Bank Account\" : \"\"}\n                    arrow\n                    placement=\"right\"\n                    classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n                  >\n                    <img src={isSelectedBank ? bankLogoBlue : bankLogo} alt=\"\" />\n                  </Tooltip>\n                  <span className={isSelectedBank ? \"selected\" : \"\"}>\n                    Bank Account\n                  </span>\n                </Link>\n              </div>\n              <div\n                className=\"menu-nav-items\"\n                onClick={() => hideSideNav(props.mobile)}\n              >\n                <Link\n                  className={`menu-link-item ${isSelectedTransfer ? \"selected\" : \"\"\n                    }`}\n                  to=\"/transfer-history\"\n                >\n                  <Tooltip\n                    title={isOpen ? \"Transfer History\" : \"\"}\n                    arrow\n                    placement=\"right\"\n                    classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n                  >\n                    <img\n                      src={isSelectedTransfer ? amountLogoBlue : amountLogo}\n                      alt=\"\"\n                    />\n                  </Tooltip>\n                  <span className={isSelectedTransfer ? \"selected\" : \"\"}>\n                    Transfer History\n                  </span>\n                </Link>\n              </div>\n              <div\n                className=\"menu-nav-items\"\n                onClick={() => hideSideNav(props.mobile)}\n              >\n                <Link\n                  className={`menu-link-item ${isMessageCenter ? \"selected\" : \"\"\n                    }`}\n                  to=\"/message-center\"\n                >\n                  <Tooltip\n                    title={isOpen ? \"Message Center\" : \"\"}\n                    arrow\n                    placement=\"right\"\n                    classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n                  >\n                    <img\n                      src={isMessageCenter ? messageBlue : messageIcon}\n                      alt=\"\"\n                    />\n                  </Tooltip>\n                  <span className={isMessageCenter ? \"selected\" : \"\"}>\n                    Message Center\n                  </span>\n                </Link>\n              </div>\n              <div className=\"menu-nav-items\" onClick={() => userLogout()}>\n                <div className=\"menu-link-item\">\n                  <Tooltip\n                    title={isOpen ? \"Log Out\" : \"\"}\n                    arrow\n                    placement=\"right\"\n                    classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n                  >\n                    <img src={LogOut} alt=\"\" />\n                  </Tooltip>\n                  <span>Log Out</span>\n                </div>\n              </div>\n              <div className=\"menu-nav-bar__bar-line\"></div>\n              <div className=\"menu-nav-items\" onClick={() => openMenu(!isOpen)}>\n                <div className=\"menu-link-item\">\n                  <Tooltip\n                    title={isOpen ? \"Contact Support\" : \"\"}\n                    arrow\n                    placement=\"right\"\n                    classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n                  >\n                    <img src={contactSupport} alt=\"\" />\n                  </Tooltip>\n                  <span>Contact support</span>\n                </div>\n                <div className=\"menu-link-item no_padding\">\n                  <span className=\"support_links\">\n                    <a href=\"mailto:support@certifid.com\">support@certifid.com</a>\n                    <br />\n                    <a href=\"tel:+1.616.816.1668\">1-616-816-1668</a>\n                  </span>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        {props.children}\n      </main>\n    </div>\n  );\n};\n\nexport default withRouter(MenuNavBar);\n","import React, { useState } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport BoxContainer from \"../BoxContainer/BoxContainer\";\nimport { useForm, Controller } from \"react-hook-form\";\nimport PhoneField from \"../PhoneField/PhoneField\";\nimport { setItem } from \"../../utils/util\";\nimport ErrorMessageInput from \"../ErrorMessajeInput/ErrorMessageInput\";\nimport {\n  PaymintsButton,\n  BUTTON_TYPE,\n} from \"paymints-address-autocomplete-field\";\nimport * as APIUtil from \"../../utils/service/service_api\";\nimport { useClientByPhone } from \"../../utils/service/service_user_api\";\nimport Phone from \"../../styles/assets/phone.png\";\n\nimport get from \"lodash/get\";\n\nconst Login = (props) => {\n  const [error, onSetError] = useState({ active: false, messageError: \"\" });\n  const tenantId = get(props, \"tenant.id\");\n  const { errors, control, handleSubmit } = useForm();\n  const { refetch: refetchNewClient } = useClientByPhone();\n\n  const onSubmit = (newUser) => {\n    const { phone_number } = newUser;\n    refetchNewClient({ where: { mobilePhone: \"+1\" + phone_number } }).then(\n      (response) => {\n        const client = get(response, \"data.allClients\")[0];\n        if (client) {\n          setItem(\"login_user\", \"existing_user\");\n          getCode(tenantId, client.id, client);\n        } else {\n          onSetError({ active: true, messageError: \"\" });\n        }\n      }\n    );\n  };\n  const getCode = (tenantId, clientid, client) => {\n    APIUtil.getSMSCode(tenantId, clientid).then(() => {\n      props.history.push(\"/create-account/account-verification\", { client });\n    });\n  };\n  return (\n    <BoxContainer\n      widest\n      withLogButton\n      withDoubleBorder\n      brandLogo\n      showLogin={true}\n    >\n      <form onSubmit={handleSubmit(onSubmit)}>\n        <div className=\"create-account__line-container\">\n          <div className=\"create-account__title\">\n            Please enter your mobile number.\n          </div>\n        </div>\n        <div className=\"create-account__information-container\">\n          <div className=\"create-account__subtitle-information\">\n            We will send a security code to your mobile phone for account\n            verification.\n          </div>\n          <BoxContainer withBorder internalBox>\n            <div className=\"form-group\">\n              <label>Mobile Phone</label>\n              <div className=\"form-group create-account__name\">\n                <Controller\n                  as={PhoneField}\n                  control={control}\n                  name=\"phone_number\"\n                  onKeyUp={() =>\n                    onSetError({ active: false, messageError: \"\" })\n                  }\n                  placeholder=\" \"\n                  className=\"create-account__input form-control\"\n                  rules={{ required: true }}\n                />\n                {errors.phone_number &&\n                  errors.phone_number.type === \"required\" && (\n                    <ErrorMessageInput>This is required</ErrorMessageInput>\n                  )}\n              </div>\n              <div className=\"create-account__warning-conatiner\">\n                <img\n                  src={Phone}\n                  className=\"create-account__warning-icon\"\n                  alt=\"\"\n                />\n                <div className=\"create-account__warning-text\">\n                  Standard text messaging and provider rates may apply.\n                </div>\n              </div>\n            </div>\n          </BoxContainer>\n          <div\n            className=\"create-account__subtitle-information\"\n            hidden={!error.active}\n            style={{color: \"red\", fontWeight: \"600\", fontSize: \"20px\"}}\n          >\n            The phone number entered is not registered. <br />Please{\" \"}\n            <span\n              className=\"paymints__link create-account__cursor\"\n              onClick={() => props.history.push(\"/create-account\")}\n            >\n              Create Account{\" \"} \n            </span>\n            to register phone number.\n          </div>\n          <div className=\"create-account__footer-buttons center\">\n            <PaymintsButton\n              htmlType=\"submit\"\n              className=\"paymints__register-button create-account__button\"\n              type={BUTTON_TYPE.INVERSE_BLUE}\n            >\n              Get Security Code\n            </PaymintsButton>\n            {error.active && (\n              <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n            )}\n          </div>\n        </div>\n      </form>\n    </BoxContainer>\n  );\n};\n\nexport default withRouter(Login);\n","import { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nconst GET_CLIENTS_MESSAGE = gql`\n  query AllClientMessages($where: ClientMessageWhereInput) {\n    allClientMessages(where: $where) {\n      id\n      messageURL\n      updatedAt\n      createdAt\n      _label_\n      type\n      tenant {\n        name\n      }\n      transfer {\n        id\n        propertyAddress1\n        propertyAddress2\n        propertyCity\n        propertyZipcode\n        propertyState\n        sellerName\n      }\n    }\n  }\n`;\nexport function useClientMessages(whereClause = {}) {\n  const { loading, error, data, refetch } = useQuery(GET_CLIENTS_MESSAGE, {\n    variables: { where: whereClause },\n  });\n  return {\n    loading,\n    error,\n    refetch,\n    allClientMessages: data ? data.allClientMessages : [],\n  };\n}\n","import React from \"react\";\nimport { Table } from \"antd\";\nimport classnames from \"classnames\";\nimport style from \"./style.module.scss\";\n\nexport default function PaymintsTable({ className, ...props }) {\n  const css = classnames(className, style.table);\n  return <Table className={css} {...props} />;\n}\n","/*\n * src/components/MessageCenter/MessageCenterColumnCfg.js\n * Description:\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport React from \"react\";\nimport { Tooltip } from \"antd\";\nimport moment from \"moment\";\n\nimport { DEFAULT_DATE_FORMAT } from \"../../utils/util\";\nimport downloadIcon from \"../../styles/assets/table-download-icon.svg\";\n\nimport { messageKey } from \"./mock-data\";\n\nconst emptyValue = \"--\";\n\nconst columnCfg = (pdfClickHandler = Function.prototype) => [\n  {\n    title: \"DATE CREATED\",\n    dataIndex: \"createdAt\",\n    render: (a) => {\n      return <p>{moment(a).format(DEFAULT_DATE_FORMAT)}</p>;\n    },\n    sorter: (a, b) => new Date(a.createdAt) - new Date(b.createdAt),\n    defaultSortOrder: \"descend\",\n  },\n  {\n    title: \"FROM\",\n    dataIndex: \"tenant\",\n    render: (text) => <p> {text?.name ?? emptyValue} </p>,\n    sorter: (a, b) =>\n      (a?.tenant?.name ?? \"\").localeCompare(b?.tenant?.name ?? \"\"),\n  },    \n  {\n    title: \"REFERENCE\",\n    dataIndex: \"transfer\",\n    render: (text) => <p>{text?.propertyAddress1 ?? emptyValue}</p>,\n    sorter: (a, b) =>\n      (a?.transfer?.propertyAddress1 ?? \"\").localeCompare(\n        b?.transfer?.propertyAddress1 ?? \"\"\n      ),\n  },\n  {\n    title: \"TYPE\",\n    dataIndex: \"type\",\n    render: (text) => <p>{messageKey[text]}</p>,\n    sorter: (a, b) => (a?.type ?? \"\").localeCompare(b?.type ?? \"\"),\n  },\n\n  {\n    title: \"DOWNLOAD\",\n    dataIndex: \"messageURL\",\n    render: (text) => {\n      return (\n        <Tooltip placement=\"topLeft\" title=\"Download PDF\">\n          <span\n            data-tooltip\n            className=\"download-icon\"\n            onClick={() => pdfClickHandler(text)}\n          >\n            <img\n              src={downloadIcon}\n              alt=\"Download PDF\"\n              style={{ cursor: \"pointer\" }}\n            />\n          </span>\n        </Tooltip>\n      );\n    },\n  },\n];\n\nexport default columnCfg;\n","/*\n * src/components/MessageCenter/StandardView.jsx\n * Description: Browser view w/ Paymints Table\n * Copyright (c) 2020 PredictiveUX\n */\nimport React from \"react\";\n\nimport PaymintsTable from \"../PaymintsTable/PaymintsTable\";\n\nimport columnCfg from \"./MessageCenterColumnCfg\";\nimport \"./messageCenter.css\";\n\nconst StandardView = ({ tableData, pdfOpenHandler }) => {\n  /**\n   * The \"antD\" <Table> component requires a \"key\" property for each record.\n   * @param {*} tableData\n   * @returns\n   */\n  const addKeyToTableData = (tableData) => {\n    return tableData.map((m) => {\n      return {\n        ...m,\n        key: m.id,\n      };\n    });\n  };\n\n  return (\n    <div className=\"message__table-container\">\n      <PaymintsTable\n        columns={columnCfg(pdfOpenHandler)}\n        dataSource={addKeyToTableData(tableData)}\n        pagination={{ position: \"both\" }}\n      />\n    </div>\n  );\n};\n\nexport default StandardView;\n","/*\n * src/components/MessageCenter/MobileView.jsx\n * Description: Responsive view\n * Copyright (c) 2020 PredictiveUX\n */\nimport React from \"react\";\nimport moment from \"moment\";\n\nimport { DEFAULT_DATE_FORMAT } from \"../../utils/util\";\n\nimport { messageKey } from \"./mock-data\";\nimport mobileArrowIcon from \"../../styles/assets/mobile-table-arrow.svg\";\n\nconst MobileView = ({ tableData }) => {\n  return (\n    <div className=\"message__mobile-table-container\">\n      {tableData.map((res) => {\n        return (\n          <div className=\"list-item-mobile\" key={res?.id}>\n            <div className=\"left-list\">\n              <p>\n                <span className=\"dot\"></span>{\" \"}\n                {res?.transfer?.propertyAddress1 ?? \"--\"}\n              </p>\n              <p>{res?.tenant?.name}</p>\n              <p>{res?.type ? messageKey[res?.type] : \"N/A\"}</p>\n            </div>\n            <div className=\"right-time\">\n              <span>{moment(res?.updatedAt).format(DEFAULT_DATE_FORMAT)}</span>\n              <img src={mobileArrowIcon} alt=\"\" />\n            </div>\n          </div>\n        );\n      })}\n      {tableData.length === 0 && (\n        <div className=\"list-item-mobile\">\n          <p>No Records Found</p>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default MobileView;\n","/*\n * src/components/MessageCenter/MessageCenter.jsx\n * Description: Tabular view of message center with form / filter element\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport React, { useState, useEffect } from \"react\";\nimport moment from \"moment\";\nimport { DatePicker } from \"antd\";\nimport OnOutsideClick from \"react-outclick\";\nimport \"antd/dist/antd.css\";\n\nimport searchIcon from \"../../styles/assets/message-searchicon.svg\";\nimport sortIconAsc from \"../../styles/assets/table-filter-asc-icon.svg\";\nimport sortIconDsc from \"../../styles/assets/table-filter-dsc-icon.svg\";\nimport dropdownIcon from \"../../styles/assets/btn-dropdown-icon.svg\";\nimport closeIcon from \"../../styles/assets/filter-selected-close-icon.svg\";\nimport { useClientMessages } from \"../../utils/service/service_message-center\";\nimport downloadPdfPromise from \"../../utils/service/service_pdf-download\";\nimport { asyncWrapper, getClientStore } from \"../../utils/util\";\n\nimport StandardView from \"./StandardView\";\nimport MobileView from \"./MobileView\";\nimport \"./messageCenter.css\";\n\nconst MessageCenter = () => {\n  const lastXDays = 7;\n  const dynamicDateIndex = `Last ${lastXDays} Days`;\n  const DateRanges = {\n    Today: [moment(), moment()],\n    Yesterday: [moment().subtract(1, \"days\"), moment()],\n    [dynamicDateIndex]: [moment().subtract(lastXDays - 1, \"days\"), moment()],\n    \"This Month\": [moment().startOf(\"month\"), moment().endOf(\"month\")],\n    \"Last Month\": [\n      moment()\n        .subtract(1, \"months\")\n        .startOf(\"month\"),\n      moment()\n        .subtract(1, \"months\")\n        .endOf(\"month\"),\n    ],\n  };\n\n  /**\n   * PDF stream reader / download functionality\n   * @param {*} pdfUrl String\n   */\n  const pdfOpenHandler = async (pdfUrl) => {\n    const [err, data] = await asyncWrapper(downloadPdfPromise(pdfUrl));\n\n    if (err) {\n      return;\n    }\n\n    const file = new Blob([data], { type: \"application/pdf\" });\n    const fileURL = URL.createObjectURL(file);\n    window.open(fileURL);\n  };\n\n  /**\n   * Set the base criteria: this applies to all queries\n   */\n  const { user } = getClientStore();\n  const baseCriteria = {\n    client: { id: user.id },\n    messageType_in: [\n      \"transfer_fail\",\n      \"transfer_initiated\",\n      \"transfer_receipt\",\n      \"transfer_request\",\n    ],\n  };\n\n  /**\n   * Set the initial search criteria\n   */\n  const [searchCriteria, setSearchCriteria] = useState(\n    Object.assign({}, baseCriteria, {\n      createdAt_gte: DateRanges[dynamicDateIndex][0].toISOString(),\n      createdAt_lte: DateRanges[dynamicDateIndex][1].toISOString(),\n    })\n  );\n\n  /**\n   * build the OR clause from the search input\n   * @param {*} str\n   */\n  const buildOrClause = (str) => {\n    let orClause = {};\n\n    if (str) {\n      orClause = [\n        { transfer: { propertyAddress1_contains_i: str } },\n        { tenant: { name_contains_i: str } },\n      ];\n    }\n\n    return {\n      OR: orClause,\n    };\n  };\n\n  /**\n   * gql hook\n   */\n  const { allClientMessages } = useClientMessages(searchCriteria);\n\n  /**\n   * local state\n   * @TODO Refactor to useReducer()\n   */\n  const [availableMessageTypes, setAvailableMessageTypes] = useState([]);\n  const [showMessageTypes, setShowMessageTypes] = useState(false);\n  const [showMobileFilter, setShowMobileFilter] = useState(false);\n  const [sortOrder, setOrder] = useState(false);\n  const [tableData, setTableData] = useState(allClientMessages ?? []);\n  const [searchKey, setSearchKey] = useState(\"\");\n  const [copyTableData, setCopyTableData] = useState([]);\n  const [daysDiff, setDaysDiff] = useState(lastXDays);\n  const [rangeDate, setRangeDate] = useState([\n    DateRanges[dynamicDateIndex][1],\n    DateRanges[dynamicDateIndex][0],\n  ]);\n\n  /**\n   * This function will filter the current result on selected message type(s)\n   * @param {*} transferData\n   * @param {*} ttArray Selected transfer types (purposes)\n   * @param {*} statusArray\n   */\n  const filterTableData = (messages, checkedMessageTypes) => {\n    if (checkedMessageTypes.length) {\n      messages = messages\n        .filter((f) => f.type)\n        .filter((f) => checkedMessageTypes.indexOf(f.type.toLowerCase()) >= 0);\n    }\n    return messages;\n  };\n\n  /**\n   * This is a workaround function for table sorting in the mobile view\n   */\n  const sortTable = () => {\n    setOrder(!sortOrder);\n    const sortData = [\n      ...tableData.sort((a, b) => {\n        if (!sortOrder) {\n          return a.type < b.type ? -1 : 1;\n        } else {\n          return a.type > b.type ? -1 : 1;\n        }\n      }),\n    ];\n    setTableData(sortData);\n  };\n\n  /**\n   * Selecting one message type filter\n   * @param {*} isChecked boolean\n   * @param {*} index number\n   */\n  const selectMessageType = (isChecked, index) => {\n    const newAvailableMessageTypes = availableMessageTypes.map((m, i) => {\n      if (i === index) {\n        return {\n          ...m,\n          isChecked,\n        };\n      }\n      return m;\n    });\n\n    setAvailableMessageTypes(newAvailableMessageTypes);\n    setTableData(\n      filterTableData(\n        copyTableData,\n        newAvailableMessageTypes.filter((f) => f.isChecked).map((m) => m.value)\n      )\n    );\n  };\n\n  /**\n   * selecting all message type filters\n   */\n  const selectAllMessageTypes = () => {\n    const newAvailableMessageTypes = availableMessageTypes.map((m, i) => {\n      return {\n        ...m,\n        isChecked: true,\n      };\n    });\n\n    setAvailableMessageTypes(newAvailableMessageTypes);\n    setTableData(\n      filterTableData(\n        copyTableData,\n        newAvailableMessageTypes.filter((f) => f.isChecked).map((m) => m.value)\n      )\n    );\n  };\n\n  /**\n   * resetting all message types filters\n   */\n  const resetAllMessageTypes = () => {\n    const newAvailableMessageTypes = availableMessageTypes.map((m, i) => {\n      return {\n        ...m,\n        isChecked: false,\n      };\n    });\n\n    setAvailableMessageTypes(newAvailableMessageTypes);\n    setTableData(\n      filterTableData(\n        copyTableData,\n        newAvailableMessageTypes.filter((f) => f.isChecked).map((m) => m.value)\n      )\n    );\n  };\n\n  /**\n   * setting searchCriteria will trigger a refetch\n   */\n  const search = () => {\n    setSearchCriteria(\n      Object.assign({}, searchCriteria, buildOrClause(searchKey))\n    );\n  };\n\n  /**\n   * datepicker handler\n   * @param {*} e\n   */\n  const selectRange = (e) => {\n    const tzOffset = new Date().getTimezoneOffset();\n    setRangeDate(e);\n\n    const dateRange = e\n      ? e.map((m) => {\n          return moment(moment.utc(m).toDate())\n            .subtract(tzOffset, \"minute\")\n            .format(\"MM/DD/YYYY\");\n        })\n      : [];\n\n    if (dateRange.length > 0) {\n      setDaysDiff(moment(dateRange[1]).diff(moment(dateRange[0]), \"days\"));\n      setSearchCriteria(\n        Object.assign(\n          {},\n          {\n            ...searchCriteria,\n            createdAt_gte: moment(dateRange[0])\n              .startOf(\"DAY\")\n              .toISOString(),\n            createdAt_lte: moment(dateRange[1])\n              .endOf(\"DAY\")\n              .toISOString(),\n          }\n        )\n      );\n    } else {\n      // extract out start/end dates and leave out\n      const { createdAt_gte, createdAt_lte, ...rest } = searchCriteria;\n      setSearchCriteria(rest);\n      setDaysDiff(null);\n    }\n  };\n\n  /**\n   * Handling the search input state\n   * @param {*} e\n   */\n  const handleSearchInput = (e) => {\n    const newValue = e?.target?.value ?? \"\";\n    setSearchKey(newValue);\n\n    if (e.key === \"Enter\" || !newValue) {\n      search();\n    }\n  };\n\n  const CalendarButton = ({ days }) => {\n    let daysDescription;\n    switch (days) {\n      case 0:\n        daysDescription = \"Today\";\n        break;\n      case 1:\n        daysDescription = \"Yesterday\";\n        break;\n      case 7:\n        daysDescription = \"Last 7 days\";\n        break;\n      default:\n        daysDescription = null;\n        break;\n    }\n    const resetData = () => {\n      const { createdAt_gte, createdAt_lte, ...rest } = searchCriteria;\n      setSearchCriteria(rest);\n      setDaysDiff(null);\n    };\n    return (\n      <>\n        {daysDescription && (\n          <div className=\"select-filter-item calendar\" onClick={resetData}>\n            <span>{daysDescription}</span>\n            <img src={closeIcon} alt=\"\" />\n          </div>\n        )}\n      </>\n    );\n  };\n\n  /**\n   * handling client message data from GraphQL\n   */\n  useEffect(() => {\n    if (allClientMessages && allClientMessages.length > 0) {\n      setTableData(allClientMessages);\n      setCopyTableData(allClientMessages);\n\n      setAvailableMessageTypes(\n        [\n          ...new Set(\n            allClientMessages\n              .filter((f) => f.type)\n              .map((m) => m.type.toLowerCase())\n          ),\n        ].map((m) => {\n          return {\n            label: m.split(\"_\").join(\" \"),\n            value: m,\n            isChecked: false,\n          };\n        })\n      );\n    } else {\n      setTableData([]);\n      setCopyTableData([]);\n      setAvailableMessageTypes([]);\n    }\n  }, [allClientMessages]);\n\n  /**\n   * rendering\n   */\n  return (\n    <div className=\"message__container-outer\">\n      <div className=\"message__container\">\n        <h6 className=\"message__page-title\">Messages</h6>\n        <div className=\"message__search-container\">\n          {/* search input */}\n          <div className=\"message__search-form-group\">\n            <input\n              type=\"text\"\n              placeholder=\"Enter address or name\"\n              onKeyUp={(e) => handleSearchInput(e)}\n            />\n            <img src={searchIcon} alt=\"\" onClick={search} />\n          </div>\n\n          {/* search button */}\n          <button className=\"message__search-btn\" onClick={search}>\n            Search\n          </button>\n\n          {/* date picker */}\n          <DatePicker.RangePicker\n            size=\"small\"\n            onChange={selectRange}\n            className=\"message__range-picker\"\n            value={rangeDate}\n            format={\"MM/DD/YYYY\"}\n            ranges={DateRanges}\n          />\n\n          {/* message type selection */}\n          <OnOutsideClick\n            onOutsideClick={() => setShowMessageTypes(false)}\n            display=\"contents\"\n          >\n            <div className=\"dropdown\">\n              <button\n                className=\"dropdown-btn\"\n                onClick={() => setShowMessageTypes(!showMessageTypes)}\n              >\n                <span>Message Type</span> <img src={dropdownIcon} alt=\"\" />\n              </button>\n              <div\n                className={`dropdown-menu ${showMessageTypes ? \"show\" : \"\"}`}\n              >\n                <div className=\"disktop-filter\">\n                  <p className=\"filter-title\">Filter By</p>\n                  <div className=\"filter-container\">\n                    {availableMessageTypes.map((mt, index) => {\n                      return (\n                        <label className=\"filter-item\" key={mt.label}>\n                          <input\n                            type=\"checkbox\"\n                            checked={mt.isChecked}\n                            onChange={(e) =>\n                              selectMessageType(e.target.checked, index)\n                            }\n                          />\n                          <span style={{ textTransform: \"capitalize\" }}>\n                            {mt.label}\n                          </span>\n                        </label>\n                      );\n                    })}\n                  </div>\n                  <div className=\"filter-footer\">\n                    <button onClick={selectAllMessageTypes}>Select All</button>\n                    <button onClick={resetAllMessageTypes}>Reset</button>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </OnOutsideClick>\n        </div>\n\n        <div className=\"message__filter-container\">\n          <img\n            src={sortIconAsc}\n            alt=\"sortIconAsc\"\n            hidden={sortOrder}\n            className=\"message__mobile-short-icon\"\n            onClick={() => sortTable()}\n          />\n          <img\n            src={sortIconDsc}\n            alt=\"sortIconDsc\"\n            hidden={!sortOrder}\n            className=\"message__mobile-short-icon\"\n            onClick={() => sortTable()}\n          />\n          <div className=\"dropdown\">\n            <button\n              className=\"dropdown-btn\"\n              onClick={() => setShowMobileFilter(!showMobileFilter)}\n            >\n              <span>Message Type</span> <img src={dropdownIcon} alt=\"\" />\n            </button>\n            <div className={`dropdown-menu ${showMobileFilter ? \"show\" : \"\"}`}>\n              <div\n                className=\"mobile-backdrop\"\n                onClick={() => setShowMobileFilter(!showMobileFilter)}\n              ></div>\n\n              {/* mobile filter container */}\n              <div className=\"mobile-filter-container\">\n                <div className=\"top-line\"></div>\n                <p className=\"filter-title\">Filter By Message Type</p>\n                <div className=\"filter-container\">\n                  {availableMessageTypes.map((mt, index) => {\n                    return (\n                      <label className=\"filter-item\" key={mt.label}>\n                        <input\n                          type=\"checkbox\"\n                          checked={mt.isChecked}\n                          onChange={(e) =>\n                            selectMessageType(e.target.checked, index)\n                          }\n                        />\n                        <span\n                          style={{\n                            textTransform: \"capitalize\",\n                            fontWeight: \"normal\",\n                          }}\n                        >\n                          {mt.label}\n                        </span>\n                      </label>\n                    );\n                  })}\n                </div>\n              </div>\n            </div>\n          </div>\n          {<CalendarButton days={daysDiff} />}\n        </div>\n\n        {/* standard and mobile */}\n        <StandardView tableData={tableData} pdfOpenHandler={pdfOpenHandler} />\n        <MobileView tableData={tableData} />\n      </div>\n    </div>\n  );\n};\n\nexport default MessageCenter;\n","import React, { useEffect, useState } from 'react';\nimport {\n  withRouter,\n  Route,\n  Switch,\n  Redirect,\n  useLocation,\n} from 'react-router-dom';\nimport NavBar from '../NavBar/NavBar';\nimport CreateAccount from '../CreateAccountWizard/CreateAccountWizard';\nimport CreateAccountForPartner from '../CreateAccountWizardForPartner/CreateAccountWizard';\nimport TransferHistory from '../TransferHistory/TransferHistory';\nimport BankAccountsHistory from '../BankAccountsHistory/BankAccountsHistory';\nimport Account from '../Account/Account';\nimport MenuNavBar from '../MenuNavBar/MenuNavBar';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { useAuth0 } from '../../react-auth0-spa';\nimport Login from '../Login/Login';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { clearStore } from '../../utils/util';\nimport { getSensitiveData } from '../../utils/service/service_api';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport MessageCenter from '../MessageCenter/MessageCenter';\nimport {\n  getTargetedHeaderBranding,\n  getTargetedFooterBranding,\n} from '../../utils/tenantGroupBranding';\n\nconst HomePage = ({\n  hasTransfer,\n  user,\n  loading,\n  loadingSearch,\n  loadingSearchTransfer,\n  loadingBranding,\n  brandLogo,\n  brandName,\n  introductoryText,\n  registerButtonText,\n  tenant,\n  loadingTenant,\n  hasInitiatedTransfer,\n  saveTransfer,\n  history,\n  client,\n  branding,\n  defaultBranding,\n  loadingDefaultBranding,\n}) => {\n  let content;\n  const loadingServices =\n    loading ||\n    loadingSearch ||\n    loadingSearchTransfer ||\n    loadingBranding ||\n    loadingTenant;\n  const { logout } = useAuth0();\n  const [error, onSetError] = useState({ active: false, messageError: '' });\n  const { sensitiveData, setSensitiveData } = useSensitiveData();\n  const location = useLocation();\n\n  useEffect(\n    () => {\n      /**\n       * https://lemonbrew.atlassian.net/browse/PAYAPP-981\n       * here is where we decide between tenant group branding, tenant branding or default branding\n       * Removing Tenant Group\n      \n      if (!loadingBranding && !loadingDefaultBranding && tenant?.tenantGroup) {\n        document.getElementById('header').innerHTML = getTargetedHeaderBranding(\n          tenant,\n          branding,\n          defaultBranding\n        );\n        document.getElementById('footer').innerHTML = getTargetedFooterBranding(\n          tenant,\n          branding,\n          defaultBranding\n        );\n      }\n      */\n      if (!loadingBranding && !loadingDefaultBranding) {\n        const header = document.getElementById('header');\n        const footer = document.getElementById('footer');\n        header.innerHTML = branding\n          ? get(branding, 'header')\n          : get(defaultBranding, 'header');\n        footer.innerHTML = branding\n          ? get(branding, 'footer')\n          : get(defaultBranding, 'footer');\n      }\n\n      if ((!user && location.pathname !== '/login' && !location.pathname.includes('/partner'))) {\n        history.push('/create-account');\n        return;\n      }\n\n      const clientId = get(client, 'id');\n      if (user && !clientId && !loadingSearch) {\n        if (isEmpty(clientId)) {\n          onSetError({\n            active: true,\n            messageError: 'Client not found, please login',\n          });\n          setTimeout(() => {\n            logout();\n            clearStore();\n          }, 2000);\n        }\n      }\n\n      const clientSsn = get(sensitiveData, 'SSN');\n      const clientDob = get(sensitiveData, 'DOB');\n      const transferId = get(hasInitiatedTransfer, 'id');\n\n      if ((!clientSsn || !clientDob) && setSensitiveData) {\n        getSensitiveData(clientId, get(tenant, 'id'))\n          .then(res => {\n            if (res?.data) {\n              const { SSN, DOB } = res.data;\n              setSensitiveData({\n                SSN,\n                DOB,\n              });\n            } else {\n            }\n          })\n          .catch(error => console.log(error));\n      }\n\n      if (hasInitiatedTransfer) {\n        saveTransfer({\n          variables: {\n            id: transferId,\n            transfer: {\n              status: 'viewed',\n            },\n          },\n        });\n\n        if (clientSsn && clientDob) {\n          history.push(\n            `/create-account/step-select-account?go_to_transfer=${transferId}`\n          );\n        } else {\n          history.push(`/create-account/step-2?go_to_transfer=${transferId}`);\n        }\n      }\n    },\n    /* eslint-disable */ [\n      client,\n      hasInitiatedTransfer,\n      sensitiveData,\n      history,\n      saveTransfer,\n      user,\n      branding,\n      defaultBranding,\n      loadingBranding,\n      loadingDefaultBranding,\n      logout,\n      loadingSearch,\n    ]\n  );\n\n  if (loadingServices) {\n    content = <SpinnerLoader />;\n  }\n\n  if (error.active) {\n    content = <ErrorMessageInput>{error.messageError}</ErrorMessageInput>;\n  }\n\n  const mobile = window.screen.width < 1200;\n  const isHide = !user;\n  const hideLogo = false;\n\n  const isNewUser = !user?.email.length > 0;\n\n  return (\n    <MenuNavBar\n      brandLogo={brandLogo}\n      brandName={brandName}\n      hide={isHide}\n      mobile={mobile}\n    >\n      <div className=\"App\">\n        <div className=\"App-container\">\n          {hideLogo ? <NavBar logo={brandLogo} /> : ''}\n          <div className=\"App__container\">\n            {loadingServices || error.active ? (\n              content\n            ) : (\n              <Switch>\n                <Route exact path=\"/account\">\n                  <Account />\n                </Route>\n                <Route exact path=\"/transfer-history\">\n                  <TransferHistory tenant={tenant} />\n                </Route>\n                <Route exact path=\"/message-center\">\n                  <MessageCenter />\n                </Route>\n                <Route exact path=\"/bank-accounts\">\n                  <BankAccountsHistory client={client} tenant={tenant} />\n                </Route>\n                <Route path=\"/create-account\">\n                  <CreateAccount\n                    introductoryText={introductoryText}\n                    registerButtonText={registerButtonText}\n                    tenant={tenant}\n                    brandLogo={brandLogo}\n                  />\n                </Route>\n                <Route exact path=\"/login\">\n                  <Login tenant={tenant} />\n                </Route>\n                <Route path=\"/partner/\">\n                <CreateAccountForPartner\n                    introductoryText={introductoryText}\n                    registerButtonText={registerButtonText}\n                    tenant={tenant}\n                    brandLogo={brandLogo}\n                  />\n                </Route>\n                <Route exact path=\"/\">\n                  {user ? (\n                    isNewUser ? (\n                      <Redirect to=\"/account\" />\n                    ) : (\n                      <Redirect to=\"/transfer-history\" />\n                    )\n                  ) : (\n                    <Redirect to=\"/create-account\" />\n                  )}\n                </Route>\n              </Switch>\n            )}\n          </div>\n        </div>\n      </div>\n    </MenuNavBar>\n  );\n};\n\nexport default withRouter(HomePage);\n","import React from 'react';\nimport { connect, Provider } from 'react-redux';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { useAuth0 } from './react-auth0-spa';\nimport get from 'lodash/get';\nimport size from 'lodash/size';\nimport isNull from 'lodash/isNull';\nimport split from 'lodash/split';\nimport find from 'lodash/find';\nimport { useClientByPhone } from './utils/service/service_user_api';\nimport {\n  useAllTransfers,\n  useSaveTransfer,\n} from './utils/service/service_transfer_api';\nimport {\n  useAllTenants,\n  useAllBrandingsFromTenant,\n  useDefaultBrandingFromTenant,\n} from './utils/service/service_tenant_api';\nimport HomePage from './components/HomePage/HomePage';\nimport { styleSingleton } from 'react-style-singleton';\nimport WebFont from 'webfontloader';\nimport { getClientStore } from './utils/util';\nimport './App.css';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './styles/react-boostrap/bootstrapv3.css';\nimport { ToastProvider } from 'react-toast-notifications';\nimport SpinnerLoader from './components/SpinnerLoader/SpinnerLoader';\nimport { Helmet } from 'react-helmet';\nimport { SensitiveDataProvider } from './contexts/sensitiveDataContext';\n\nconst App = props => {\n  const { loading } = useAuth0();\n  const { user } = getClientStore();\n  const tenantIdentifier = split(window.location.hostname, '.')[0];\n  const { loading: loadingTenant, tenant } = useAllTenants(tenantIdentifier);\n\n  const { loadingSearch, client } = useClientByPhone(\n    user ? user.mobilePhone : ''\n  );\n  const { loadingSearchTransfer, transfers } = useAllTransfers(\n    get(client, 'id', '')\n  );\n  const { loadingBranding, branding } = useAllBrandingsFromTenant(\n    get(tenant, 'id', ''),\n    true\n  );\n  const {\n    loadingDefaultBranding,\n    defaultBranding,\n  } = useDefaultBrandingFromTenant();\n  const { saveTransfer } = useSaveTransfer();\n  const Style = styleSingleton();\n\n  const hasTransfer = size(transfers) !== 0;\n  const hasInitiatedTransfer = find(transfers, ['status', 'Initiated']);\n\n  let brandLogo,\n    brandBackgroundImage,\n    brandBackgroundColor,\n    brandName,\n    introductoryText,\n    registerButtonText,\n    behindFieldsColor,\n    useStyle,\n    fontFamily,\n    customCSS,\n    linkColor,\n    buttonColor,\n    fontColor;\n\n  if (!loadingBranding && !loadingDefaultBranding) {\n    brandLogo = branding\n      ? get(branding, 'logoURL')\n      : get(defaultBranding, 'logoURL');\n    brandBackgroundImage = branding\n      ? get(branding, 'backgroundImageURL')\n      : get(defaultBranding, 'backgroundImageURL');\n    brandBackgroundColor = branding\n      ? get(branding, 'backgroundColor')\n      : get(defaultBranding, 'backgroundColor');\n    brandName = get(tenant, 'identifier');\n    introductoryText = branding\n      ? get(branding, 'registerText')\n      : get(defaultBranding, 'registerText');\n    registerButtonText = branding\n      ? get(branding, 'registerButtonText')\n      : get(defaultBranding, 'registerButtonText');\n    behindFieldsColor = branding\n      ? get(branding, 'accentColor')\n      : get(defaultBranding, 'accentColor');\n    fontFamily = branding\n      ? get(branding, 'fontFamily')\n      : get(defaultBranding, 'fontFamily');\n    customCSS = branding\n      ? get(branding, 'customCSS')\n      : get(defaultBranding, 'customCSS');\n    linkColor = branding\n      ? get(branding, 'linkColor')\n      : get(defaultBranding, 'linkColor');\n    buttonColor = branding\n      ? get(branding, 'buttonColor')\n      : get(defaultBranding, 'buttonColor');\n    fontColor = branding\n      ? get(branding, 'fontColor')\n      : get(defaultBranding, 'fontColor');\n    fontFamily = fontFamily ? fontFamily : 'Poppins';\n    const mobile = window.screen.width < 1200;\n    const isHide = !user;\n\n    //Menu width - grey menu width\n    const widthWithMenu = isHide || mobile ? '100%' : 'calc(100vw - 60px)';\n\n    useStyle = `\n                .paymints__box-container__box-shadow--default {\n                    background-color: ${brandBackgroundColor};\n                }\n\n                .paymints__box-container__internal--default {\n                    background-color: ${behindFieldsColor};\n                }\n\n                .App {\n                    font-family: ${fontFamily} !important;\n                    background-image: url(${brandBackgroundImage});\n                    background-position: center;\n                    background-repeat: no-repeat;\n                    background-size: cover;\n                    background-attachment: fixed;\n                    width: ${widthWithMenu};\n                    color: ${fontColor} !important;\n                }\n\n                body {\n                    font-family: ${fontFamily} !important;\n                    color: ${fontColor} !important;\n                }\n\n                label {\n                    color: black !important;\n                }\n\n                .table>tbody>tr>td {\n                    color: ${fontColor};\n                }\n\n                .form-control {\n                    color: ${fontColor} !important;\n                }\n\n                .ant-btn {\n                    font-family: ${fontFamily} !important;\n                    border-radius: 10px;\n                    padding-top: 0 !important;\n                    padding-bottom: 0 !important;\n                    height: 45px !important;\n                    text-transform: capitalize !important;\n                    font-weight: 600;\n                }\n\n                .ant-btn.box-container__button-log {\n                  border-radius: 4px !important;\n                  border-color: ${buttonColor} !important;\n                }\n\n                .accept-button {\n                    font-family: ${fontFamily} !important;\n                    background-color: ${buttonColor} !important;\n                    border: none !important;\n                }\n\n                #sent {\n                    text-decoration: none;\n                }\n\n                .paymints__register-button.ant-btn {\n                    font-family: ${fontFamily} !important;\n                    background-color: ${buttonColor} !important;\n                    border: none !important;\n                }\n\n                .paymints__register-button.ant-btn:hover {\n                    background-color: white !important;\n                    color: ${fontColor} !important;\n                    border: solid 1px white !important;\n                }\n\n                .content-modal__button.ant-btn {\n                    padding-left: 15px !important;\n                    padding-right: 15px !important;\n                }\n\n                .paymints__link {\n                    color: ${linkColor};\n                }\n\n                .transfer-history__row-item {\n                    background-color: ${behindFieldsColor};\n                }\n\n                .box-container__button-log {\n                    background-color: ${buttonColor} !important;\n                    border-radius: 4px !important;\n                    border-color: ${buttonColor}\n                }\n\n                .box-container__button-log:hover {\n                    border-radius: 4px !important;\n                    color: ${buttonColor} !important;\n                }\n\n                .create-account__button {\n                    background-color: ${buttonColor} !important;\n                    border-color: ${buttonColor} !important;\n                    border-radius: 4px !important;\n                }\n\n                .create-account__button:hover {\n                    background-color: white !important;\n                    border-radius: 4px !important;\n                    color: ${buttonColor} !important;\n                }\n\n                .create-account__save-come-back-button {\n                    color: #1e5fe3;\n                    border-radius: 4px !important;\n                }\n\n                .modal-backdrop {\n                    z-index: 1500;\n                }\n\n                ${\n                  mobile\n                    ? `.menu-nav-bar__icon-angle-left {\n                        color: #4162fa;\n                    }\n\n                    .menu-nav-bar__icon-angle-right {\n                        color: #4162fa;\n                    }`\n                    : ``\n                }\n\n                ${customCSS ? customCSS : ''}\n            `;\n\n    const fonts = fontFamily\n      ? [`${fontFamily}:300,400,700`, 'Poppins:300,400,700', 'sans-serif']\n      : ['Poppins:300,400,700', 'sans-serif'];\n\n    WebFont.load({\n      google: {\n        families: fonts,\n      },\n    });\n  }\n\n  const tenantName = get(tenant, 'name', 'paymints.io');\n  const tenantFavicon = get(branding, 'faviconImgURL');\n\n  if (loadingBranding || loadingDefaultBranding) {\n    return <SpinnerLoader />;\n  }\n\n  return (\n    <>\n      <Helmet>\n        <title>{tenantName}</title>\n        <link\n          rel=\"shortcut icon\"\n          type=\"image/png\"\n          sizes=\"16x16 24x24 32x32 48x48 64x64\"\n          href={tenantFavicon}\n        />\n      </Helmet>\n      <Style styles={useStyle} />\n      <ToastProvider autoDismiss autoDismissTimeout={6000}>\n        <Provider store={props.store}>\n          <SensitiveDataProvider\n            clientID={get(client, 'id')}\n            tenantID={get(tenant, 'id')}\n          >\n            <Router>\n              <HomePage\n                {...props}\n                hasTransfer={hasTransfer && !isNull(get(client, 'id'))}\n                user={user}\n                loading={loading}\n                loadingSearch={loadingSearch}\n                loadingSearchTransfer={loadingSearchTransfer}\n                loadingBranding={loadingBranding || loadingDefaultBranding}\n                brandLogo={brandLogo}\n                brandName={brandName}\n                introductoryText={introductoryText}\n                registerButtonText={registerButtonText}\n                loadingTenant={loadingTenant}\n                tenant={tenant}\n                hasInitiatedTransfer={hasInitiatedTransfer}\n                saveTransfer={saveTransfer}\n                client={client}\n                branding={branding}\n                defaultBranding={defaultBranding}\n                loadingDefaultBranding={loadingDefaultBranding}\n              />\n            </Router>\n          </SensitiveDataProvider>\n        </Provider>\n      </ToastProvider>\n    </>\n  );\n};\n\nexport default connect(state => ({}), {})(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport function register(config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl, config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n","import { createBrowserHistory } from \"history\";\nexport default createBrowserHistory();","import * as actionType from \"./AccountActionTypes\";\n\nconst initialState = {\n    createClient: {\n        client: {},\n        isFetchedCreateClient: false,\n        isFetchingCreateClient: false,\n        errorCreateClient: false\n    },\n    bankAccounts: {\n        bankAccounts: [],\n        isFetchedBankAccounts: false,\n        isFetchingBankAccounts: false,\n        errorBankAccounts: false\n    },\n    deleteBankAccount: {\n        isFetchedDeleteBankAccount: false,\n        isFetchingDeleteBankAccount: false,\n        errorDeleteBankAccount: false\n    },\n    updateAuth0: {\n        updateAuth0: {},\n        isFetchedUpdateAuth0: false,\n        isFetchingUpdateAuth0: false,\n        errorUpdateAuth0: false\n    },\n};\n\nconst accountReducer = (state = initialState, { type, payload }) => {\n    switch (type) {\n        case actionType.PLAID_CREATE_CUSTOMER_FETCH:\n            return {\n                ...state,\n                createClient: {\n                    isFetchingCreateClient: true,\n                    isFetchedCreateClient: false,\n                    errorCreateClient: false\n                }\n            };\n        case actionType.PLAID_CREATE_CUSTOMER_SUCCESS:\n            return {\n                ...state,\n                createClient: {\n                    isFetchingCreateClient: false,\n                    isFetchedCreateClient: true,\n                    errorCreateClient: false,\n                    client: payload.response,\n                }\n            };\n        case actionType.PLAID_CREATE_CUSTOMER_ERROR:\n            return {\n                ...state,\n                createClient: {\n                    isFetchingCreateClient: false,\n                    isFetchedCreateClient: false,\n                    errorCreateClient: true,\n                    client: payload.response,\n                }\n            };\n        case actionType.GET_BANK_ACCOUNTS_FETCH:\n            return {\n                ...state,\n                bankAccounts: {\n                    isFetchingBankAccounts: true,\n                    isFetchedBankAccounts: false,\n                    errorBankAccounts: false\n                }\n            };\n        case actionType.GET_BANK_ACCOUNTS_SUCCESS:\n            return {\n                ...state,\n                bankAccounts: {\n                    isFetchingBankAccounts: false,\n                    isFetchedBankAccounts: true,\n                    errorBankAccounts: false,\n                    bankAccounts: payload.response,\n                }\n            };\n        case actionType.GET_BANK_ACCOUNTS_ERROR:\n            return {\n                ...state,\n                bankAccounts: {\n                    isFetchingBankAccounts: false,\n                    isFetchedBankAccounts: false,\n                    errorBankAccounts: true,\n                    bankAccounts: payload.response,\n                }\n            };\n        case actionType.DELETE_BANK_ACCOUNT_FETCH:\n            return {\n                ...state,\n                deleteBankAccount: {\n                    isFetchingDeleteBankAccount: true,\n                    isFetchedDeleteBankAccount: false,\n                    errorDeleteBankAccount: false\n                }\n            };\n        case actionType.DELETE_BANK_ACCOUNT_SUCCESS:\n            return {\n                ...state,\n                deleteBankAccount: {\n                    isFetchingDeleteBankAccount: false,\n                    isFetchedDeleteBankAccount: true,\n                    errorDeleteBankAccount: false,\n                }\n            };\n        case actionType.DELETE_BANK_ACCOUNT_ERROR:\n            return {\n                ...state,\n                deleteBankAccount: {\n                    isFetchingDeleteBankAccount: false,\n                    isFetchedDeleteBankAccount: false,\n                    errorDeleteBankAccount: true,\n                }\n            };\n        case actionType.UPDATE_AUTH0_FETCH:\n            return {\n                ...state,\n                updateAuth0: {\n                    updateAuth0: {},\n                    isFetchedUpdateAuth0: false,\n                    isFetchingUpdateAuth0: true,\n                    errorUpdateAuth0: false\n                },\n            };\n        case actionType.UPDATE_AUTH0_SUCCESS:\n            return {\n                ...state,\n                updateAuth0: {\n                    updateAuth0: payload.response,\n                    isFetchedUpdateAuth0: true,\n                    isFetchingUpdateAuth0: false,\n                    errorUpdateAuth0: false\n                },\n            };\n        default:\n            return state;\n    }\n};\n\nexport default accountReducer;\n","import * as actionType from \"./TransferActionType\";\n\nconst initialState = {\n    startDwolla: {\n        isFetchedStartDwolla: false,\n        isFetchingStartDwolla: false,\n        errorStartDwolla: false\n    },\n    transferDoc: {\n        isFetchingTransferDoc: false,\n        isFetchedTransferDoc: false,\n        errorTransferDoc: false,\n    },\n    sendEmailReceipt: {\n        isFetchingSendEmailReceipt: false,\n        isFetchedSendEmailReceipt: false,\n        errorSendEmailReceipt: false,\n    }\n};\n\nconst transferReducer = (state = initialState, { type, payload }) => {\n    switch (type) {\n        case actionType.START_DWOLLA_FETCH:\n            return {\n                ...state,\n                startDwolla: {\n                    isFetchingStartDwolla: true,\n                    isFetchedStartDwolla: false,\n                    errorStartDwolla: false\n                }\n            };\n        case actionType.START_DWOLLA_SUCCESS:\n            return {\n                ...state,\n                startDwolla: {\n                    isFetchingStartDwolla: false,\n                    isFetchedStartDwolla: true,\n                    errorStartDwolla: false,\n                }\n            };\n        case actionType.START_DWOLLA_ERROR:\n            return {\n                ...state,\n                startDwolla: {\n                    isFetchingStartDwolla: false,\n                    isFetchedStartDwolla: false,\n                    errorStartDwolla: true,\n                }\n            }\n        case actionType.SAVE_TRANSFER_DOC_FETCH:\n            return {\n                ...state,\n                transferDoc: {\n                    isFetchingTransferDoc: true,\n                    isFetchedTransferDoc: false,\n                    errorTransferDoc: false\n                }\n            };\n        case actionType.SAVE_TRANSFER_DOC_SUCCESS:\n            return {\n                ...state,\n                transferDoc: {\n                    isFetchingTransferDoc: false,\n                    isFetchedTransferDoc: true,\n                    errorTransferDoc: false,\n                }\n            };\n        case actionType.SAVE_TRANSFER_DOC_ERROR:\n            return {\n                ...state,\n                transferDoc: {\n                    isFetchingTransferDoc: false,\n                    isFetchedTransferDoc: false,\n                    errorTransferDoc: true,\n                }\n            };\n        case actionType.SEND_EMAIL_RECEIPT_FETCH:\n            return {\n                ...state,\n                sendEmailReceipt: {\n                    isFetchingSendEmailReceipt: true,\n                    isFetchedSendEmailReceipt: false,\n                    errorSendEmailReceipt: false,\n                }\n            };\n        case actionType.SEND_EMAIL_RECEIPT_SUCCESS:\n            return {\n                ...state,\n                sendEmailReceipt: {\n                    isFetchingSendEmailReceipt: false,\n                    isFetchedSendEmailReceipt: true,\n                    errorSendEmailReceipt: false,\n                }\n            };\n        case actionType.SEND_EMAIL_RECEIPT_ERROR:\n            return {\n                ...state,\n                sendEmailReceipt: {\n                    isFetchingSendEmailReceipt: false,\n                    isFetchedSendEmailReceipt: false,\n                    errorSendEmailReceipt: true,\n                }\n            };\n        default:\n            return state;\n    }\n};\n\nexport default transferReducer;\n","import * as actionType from \"./AssetActionTypes\";\n\nconst initialState = {\n    uploadDocument: {\n        document: {},\n        isFetchedUploadDocument: false,\n        isFetchingUploadDocument: false,\n        errorUploadDocument: false\n    },\n};\n\nconst assetReducer = (state = initialState, { type, payload }) => {\n    switch (type) {\n        case actionType.UPLOAD_DOCUMENT_FETCH:\n            return {\n                ...state,\n                uploadDocument: {\n                    isFetchingUploadDocument: true,\n                    isFetchedUploadDocument: false,\n                    errorUploadDocument: false\n                }\n            };\n        case actionType.UPLOAD_DOCUMENT_SUCCESS:\n            return {\n                ...state,\n                uploadDocument: {\n                    isFetchingUploadDocument: false,\n                    isFetchedUploadDocument: true,\n                    errorUploadDocument: false,\n                    document: payload.response\n                }\n            };\n        case actionType.UPLOAD_DOCUMENT_ERROR:\n            return {\n                ...state,\n                uploadDocument: {\n                    isFetchingUploadDocument: false,\n                    isFetchedUploadDocument: false,\n                    errorUploadDocument: true,\n                    document: payload.response\n                }\n            };\n        default:\n            return state;\n    }\n};\n\nexport default assetReducer;\n","import { combineReducers } from 'redux';\n\nimport accountReducer from './account/AccountReducer';\nimport transferReducer from './transfer/TransferReducer';\nimport assetReducer from './asset/AssetReducer';\n\nconst rootReducer = combineReducers({\n    account: accountReducer,\n    transfer: transferReducer,\n    asset: assetReducer,\n});\n\nexport default rootReducer;\n","import { createStore, applyMiddleware, compose  } from 'redux';\nimport rootReducer from '../reducers/RootReducer';\nimport thunk from 'redux-thunk';\n\nconst ConfigureStore = (preLoadedState = {}) => {\n    const composeEnhancers =\n        typeof window === 'object' &&\n        window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n            window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) : compose;\n\n    const enhancer = composeEnhancers(\n        applyMiddleware(thunk),\n    );\n\n    const store = createStore(\n        rootReducer,\n        preLoadedState,\n        enhancer\n    );\n\n    if (process.env.NODE_ENV !== \"production\") {\n        if (module.hot) {\n            module.hot.accept('../reducers/RootReducer', () => {\n                store.replaceReducer(rootReducer)\n            })\n        }\n    }\n\n    return store\n};\n\nexport default ConfigureStore;\n","import ApolloClient from \"apollo-boost\";\nimport axios from \"axios\";\nimport APIDomain from \"./apiSettings\";\n\nexport const client = new ApolloClient({\n  uri: process.env.REACT_APP_BASE_URL,\n  headers: {\n    authorization: process.env.REACT_APP_AUTH_TOKEN\n      ? `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`\n      : \"\",\n  },\n});\n\naxios.defaults.baseURL = APIDomain;\n\nexport const getBaseClient = () =>\n  axios.create({\n    baseURL: APIDomain,\n  });\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport { Auth0Provider } from \"./react-auth0-spa\";\nimport history from \"./utils/history\";\nimport 'normalize.css';\nimport './index.css';\nimport './styles/fonts/index.css';\nimport ConfigureStore from './store/Store';\nimport { ApolloProvider } from '@apollo/react-hooks';\nimport { client } from '../src/utils/client';\n\n// A function that routes the user to the right place\n// after login\nconst onRedirectCallback = appState => {\n  history.push(\n    appState && appState.targetUrl\n      ? appState.targetUrl\n      : window.location.pathname\n  );\n};\n\nlet preloadedState;\nif (window.currentUser) {\n    preloadedState = { session: { currentUser: window.currentUser } };\n}\nconst store = ConfigureStore(preloadedState);\n\nReactDOM.render(\n  <ApolloProvider client={client}>\n    <Auth0Provider\n      domain={process.env.REACT_APP_AUTH0_DOMAIN}\n      client_id={process.env.REACT_APP_AUTH0_CLIENT_ID}\n      redirect_uri={window.location.origin}\n      onRedirectCallback={onRedirectCallback}\n    >\n      <App store={store} />\n    </Auth0Provider>\n  </ApolloProvider>,\n  document.getElementById(\"root\")\n);\n\nserviceWorker.unregister();"],"sourceRoot":""}