{"version":3,"file":"js/1ae39f1ad48a9c3bb19f.chunk.js","mappings":"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","sources":["webpack:///./components/Logo.tsx","webpack:///./components/StatusNubs.tsx","webpack:///./components/Tooltip.tsx","webpack:///./features/accounting-software/components/SyncButtonIcon.tsx","webpack:///./legacy/services/contacts.ts","webpack:///./legacy/services/pagination.ts","webpack:///./legacy/services/xhrService.ts","webpack:///./legacy/shared/components/SearchFilter/useSearchFilter.tsx","webpack:///./features/accounting-software/components/AccountingSoftwareFreeTrialModal.tsx","webpack:///./features/accounting-software/components/SyncButtonWithModal.tsx","webpack:///./features/accounting-software/components/SyncButtonWithModalContainer.tsx","webpack:///./features/my-payments/components/FreeTrialSignupBanner.tsx","webpack:///./features/payments-log/PaymentsLogRenderer.tsx","webpack:///./features/payments-log/PaymentsLog.tsx","webpack:///./legacy/viewmodels/contacts/payments.ts"],"sourcesContent":["import { memo, useId } from 'react';\nimport { Box, BoxProps } from '@mui/material';\nimport { HeightProperty, WidthProperty } from 'csstype';\n\ntype LogoProps = {\n variant: 'wordmark' | 'lockup' | 'brandmark';\n color?: 'main' | 'inverse';\n className?: string;\n width?: WidthProperty;\n height?: HeightProperty;\n sx?: BoxProps['sx'];\n};\n\nconst Logo = ({\n sx,\n variant,\n className,\n color = 'main',\n width: desiredWidth,\n height: desiredHeight,\n}: LogoProps): React.JSX.Element => {\n const id = useId();\n let viewBox: string;\n let width = desiredWidth;\n let height = desiredHeight;\n let hasBrandmark: boolean;\n let hasWordmark: boolean;\n switch (variant) {\n case 'brandmark':\n viewBox = '-2 0 24 32';\n width ??= 32;\n height ??= 32;\n hasBrandmark = true;\n hasWordmark = false;\n break;\n case 'lockup':\n viewBox = '0 0 163 32';\n width ??= 163;\n height ??= 32;\n hasBrandmark = true;\n hasWordmark = true;\n break;\n case 'wordmark':\n default:\n viewBox = '35 0 128 32';\n width ??= 128;\n height ??= 32;\n hasBrandmark = false;\n hasWordmark = true;\n break;\n }\n return (\n \n {hasBrandmark && (\n \n \n \n \n )}\n {hasBrandmark && (\n \n )}\n {hasBrandmark && (\n \n )}\n {hasWordmark && (\n \n \n \n \n \n \n \n \n )}\n \n );\n};\n\nexport type { LogoProps };\nexport default memo(Logo);\n","import { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord';\nimport { Rating, RatingProps, svgIconClasses, SvgIconProps } from '@mui/material';\n\nconst RatingSx = {\n [`& .${svgIconClasses.root}`]: {\n width: '0.5em',\n height: '0.5em',\n },\n};\n\ntype StatusNubsProps = { color?: SvgIconProps['color'] } & Omit;\n\n/**\n * Status indicator nubs\n *\n * Based on {@link https://v4.mui.com/components/rating/#customized-ratings MUI `Rating` component},\n * so shares the {@link https://v4.mui.com/api/rating/ same API}.\n */\nconst StatusNubs = ({\n sx,\n defaultValue = 0,\n max = 5,\n className,\n color = 'primary',\n ...props\n}: StatusNubsProps) => {\n const { formatMessage } = useIntl();\n const getLabelText = useCallback(\n (value: number) => formatMessage({ defaultMessage: 'Status: {value}' }, { value }),\n [formatMessage]\n );\n return (\n }\n emptyIcon={\n \n }\n readOnly\n getLabelText={getLabelText}\n emptyLabelText={}\n className={className}\n data-testid=\"status-nubs\"\n {...props}\n />\n );\n};\n\nexport type { StatusNubsProps };\nexport default StatusNubs;\n","import * as React from 'react';\nimport MuiTooltip, { TooltipProps as MuiTooltipProps } from '@mui/material/Tooltip';\n\n/**\n * Plooto Tooltip.\n *\n * Identical to MUI v4's [Tooltip component](https://v4.mui.com/components/tooltips/), except we display a tooltip arrow by default.\n *\n * See the MUI component and the [Tooltip API](https://v4.mui.com/components/tooltips/) for additional usage details.\n *\n * @param props MUI Tooltip props\n * @returns Function component\n */\nconst Tooltip: React.FC = (props: MuiTooltipProps) => (\n \n);\n\nexport type { MuiTooltipProps as TooltipProps };\nexport default Tooltip;\n","import SyncIcon from '@mui/icons-material/Sync';\nimport SyncDisabledIcon from '@mui/icons-material/SyncDisabled';\nimport SyncProblemIcon from '@mui/icons-material/SyncProblem';\nimport { SvgIconProps } from '@mui/material';\n\nimport { SyncState } from '../types/SyncState';\n\nconst SyncingIcon = ({ sx, ...props }: SvgIconProps) => (\n `rotate ${theme.transitions.duration.standard * 10}ms linear infinite`,\n '@keyframes rotate': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n ...sx,\n }}\n />\n);\n\ntype Props = SvgIconProps & {\n /** Sync button state */\n state: SyncState;\n};\n\n/**\n * Icon for accounting software sync buttons\n * @param props Component props\n * @returns React component\n */\nconst SyncButtonIcon = ({ state, ...svgIconProps }: Props) => {\n switch (state) {\n case 'connected':\n return ;\n case 'syncing':\n return ;\n case 'error':\n return (\n \n );\n case 'expired':\n return ;\n case 'disconnected':\n return ;\n case 'unset':\n return ;\n default:\n return null;\n }\n};\n\nexport type { Props as SyncButtonIconProps };\nexport default SyncButtonIcon;\n","import * as system from 'durandal/system';\nimport * as ko from 'knockout';\n\nimport { FileStorageDownloadLinkViewModel } from '@/features/file-attachments';\nimport * as userService from '@/legacy/services/user';\nimport * as xhrService from '@/legacy/services/xhrService';\nimport * as plootoUtils from '@/legacy/utils/plooto';\n\nconst API_PREFIX = 'v1';\n\ninterface PopupParameters {\n location: number;\n width: number;\n height: number;\n left?: number;\n top?: number;\n}\n\nexport class ContactPaymentViewModel {\n public id: string;\n\n public memo: string;\n\n public amount: number;\n\n public paymentStatusValue: number;\n\n public creditDate: string;\n\n public estimatedCompletionDate: string;\n\n public hasAttachments: boolean;\n\n public attachments: ContactPaymentAttachments;\n}\nexport class ContactPaymentCollectionViewModel {\n public payments: Array;\n\n public debitCompanyName: string;\n\n public creditContactName: string;\n\n public contactKey: string;\n}\nexport class ContactPaymentAttachments {\n public attachmentStatus = ko.observable('loadRequired');\n\n public attachments = ko.observableArray([]);\n}\n\nexport class EmailMoneyTransferService {\n private userService: userService.UserService;\n\n constructor() {\n this.userService = userService.Instance;\n }\n\n public GetByEmailKey(emailKey: string, from: string, to: string, page: number) {\n const dataPromiseWithXhr = new xhrService.PromiseWithXhr();\n dataPromiseWithXhr.getXhr = () =>\n this.userService.AuthorizedGetFromUri(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/contact/${emailKey}/payments?from=${from}&to=${to}&page=${page}`\n ) as JQueryXHR;\n dataPromiseWithXhr.dataProcessCallback = (data: ContactPaymentCollectionViewModel) => data;\n\n xhrService.Instance.initiatePromiseWithXhr(dataPromiseWithXhr); // handles both .errors and logout errors\n\n return dataPromiseWithXhr;\n }\n\n public GetPaymentAttachmentsForContact(\n emailKey: string,\n paymentId: string\n ): JQueryPromise> {\n return system\n .defer>((dfd) => {\n this.userService\n .AuthorizedGet(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/contact/${emailKey}/payments/${paymentId}/attachments`\n )\n .done((payments) => {\n if (plootoUtils.IsNullOrUndefined(payments) || payments.error === true) {\n dfd.reject(payments);\n return;\n }\n dfd.resolve(payments);\n })\n .fail(() => {\n dfd.reject();\n });\n })\n .promise();\n }\n\n public generateFileStorageDownloadLink(\n emailKey: string,\n paymentId: string,\n companyFileStorageFileId: string\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n this.userService\n .AuthorizedGetFromUri(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/contact/${emailKey}/payments/${paymentId}/fileStorage/actions/generateDownloadLink`,\n { companyFileStorageFileId }\n )\n .done((payments) => {\n if (plootoUtils.IsNullOrUndefined(payments) || payments.error === true) {\n dfd.reject(payments);\n return;\n }\n dfd.resolve(payments);\n })\n .fail(() => {\n dfd.reject();\n });\n })\n .promise();\n }\n\n public openWindow(url: string) {\n return system\n .defer((dfd) => {\n // default parameter values\n const popupHeight = 650;\n const popupWidth = 800;\n const popupCentered = true;\n // default parameters\n const parameters: PopupParameters = {\n location: 1,\n width: popupWidth,\n height: popupHeight,\n };\n // center pop-up if needed\n if (popupCentered) {\n parameters.left = (window.screen.width - popupWidth) / 2;\n parameters.top = (window.screen.height - popupHeight) / 2;\n }\n // flatten all parameters into a string\n const features = $.map(parameters, (value, name) => `${name}=${value}`).join(',');\n\n // open pop-up without URL first to ensure that pop-up blocker wouldn't prevent it after our delay\n const popup = window.open('', '', features);\n if (popup.document) {\n popup.document.write(\n 'Connecting...'\n );\n }\n\n popup.location.href = url;\n })\n .promise();\n }\n}\n\nexport const Instance = new EmailMoneyTransferService();\n","import * as ko from 'knockout';\n\nexport class PaginationKnockoutModel {\n public page = ko.observable(0);\n\n public resultsPerPage = ko.observable(50);\n\n public totalPages = ko.observable(0);\n\n public totalResults = ko.observable(0);\n\n public rangeStart = ko.observable(0);\n\n public rangeEnd = ko.observable(0);\n\n private maxVisibleNumbers = 3; // 3 in each direction so 0,1,2,[3],4,5,6 if we are on page 3\n\n public setContentRange(contentRangeHeader: ContentRangeHeader) {\n this.rangeStart(contentRangeHeader.rangeStart);\n this.rangeEnd(contentRangeHeader.rangeEnd);\n this.totalResults(contentRangeHeader.size);\n this.totalPages(Math.ceil(contentRangeHeader.size / this.resultsPerPage()));\n }\n\n public navigatePage(page: number) {\n this.page(page);\n }\n\n public visiblePageNumbers = ko.pureComputed({\n read: (): Array => {\n const visibleRanges: Array = [];\n\n for (\n let i = this.page() - this.maxVisibleNumbers;\n i <= this.page() + this.maxVisibleNumbers;\n i += 1\n ) {\n if (i >= 0 && i < this.totalPages()) {\n visibleRanges.push(i);\n }\n }\n return visibleRanges;\n },\n deferEvaluation: true,\n });\n\n public isFirstPage = ko.pureComputed({\n read: (): boolean => this.page() == 0,\n deferEvaluation: true,\n });\n\n public isLastPage = ko.pureComputed({\n read: (): boolean => this.page() == this.totalPages() - 1,\n deferEvaluation: true,\n });\n\n public nextPageIsLastPage = ko.pureComputed({\n read: (): boolean => this.page() == this.totalPages() - 2,\n deferEvaluation: true,\n });\n\n public hasMoreNextVisiblePages = ko.pureComputed({\n read: (): boolean => this.page() + this.maxVisibleNumbers < this.totalPages() - 1,\n deferEvaluation: true,\n });\n\n public hasMorePreviousVisiblePages = ko.pureComputed({\n read: (): boolean => this.page() - this.maxVisibleNumbers > 0,\n deferEvaluation: true,\n });\n\n public lastPageNumber = ko.pureComputed({\n read: (): number => this.totalPages() - 1,\n deferEvaluation: true,\n });\n\n public previousPageIsFirstPage = ko.pureComputed({\n read: (): boolean => this.page() - 1 == 0,\n deferEvaluation: true,\n });\n\n public nextInSetOfPageNumbers = ko.pureComputed({\n read: (): number => this.page() + this.maxVisibleNumbers + 1,\n deferEvaluation: true,\n });\n\n public previousInSetOfPageNumbers = ko.pureComputed({\n read: (): number => this.page() - this.maxVisibleNumbers,\n deferEvaluation: true,\n });\n}\nexport class ContentRangeHeader {\n public unit: string;\n\n public rangeStart: number;\n\n public rangeEnd: number;\n\n public size: number;\n\n public static fromString(contentRange: string): ContentRangeHeader {\n const contentRangeGroups = /^bytes ([0-9]+)-([0-9]+)\\/([0-9]+)$/g.exec(contentRange);\n\n const contentRangeHeader = new ContentRangeHeader();\n contentRangeHeader.rangeStart = Number.parseInt(contentRangeGroups[1], 10);\n contentRangeHeader.rangeEnd = Number.parseInt(contentRangeGroups[2], 10);\n contentRangeHeader.size = Number.parseInt(contentRangeGroups[3], 10);\n\n return contentRangeHeader;\n }\n}\n","import * as paginationService from '@/legacy/services/pagination';\nimport { SessionTimeoutService } from '@/legacy/services/sessionTimeout';\nimport * as plootoUtils from '@/legacy/utils/plooto';\n\nexport class PromiseWithXhr {\n public dataPromise: JQueryPromise;\n\n public xhr: JQueryXHR;\n\n public getXhr: () => JQueryXHR;\n\n public contentRange: paginationService.ContentRangeHeader;\n\n // Allows us to process data before we return it back\n public dataProcessCallback: (data: any) => T;\n\n constructor() {\n this.dataPromise = $.Deferred();\n }\n\n public abort() {\n if (this.xhr) {\n this.xhr.abort();\n }\n }\n}\n\n/** @deprecated Use `ApiService` instead. */\nexport class XhrService {\n /**\n * This will re-try the xhr if there is a login error\n * @deprecated Use `ApiService` instead.\n */\n public initiatePromiseWithXhr(promiseWithXhr: PromiseWithXhr): JQueryPromise {\n let retryCounter = 0;\n\n const executeXhr = () => {\n promiseWithXhr.xhr = promiseWithXhr.getXhr();\n return promiseWithXhr.xhr.then((data, textStatus, jqXHR: JQueryXHR) => {\n if (data && data.error && data.type == 'invalid.authentication') {\n return SessionTimeoutService.showTimeout().then((loginResponse) => {\n if (loginResponse) {\n // Prevent infinite loop (if somehow we get invalid.authentication 3 times in a row after after successful login)\n retryCounter += 1;\n if (retryCounter > 3) {\n return (promiseWithXhr.dataPromise as any).reject(data);\n }\n\n return executeXhr(); // re-try this method\n }\n return undefined;\n });\n }\n\n if (plootoUtils.IsNullOrUndefined(data) || data.error === true) {\n return (promiseWithXhr.dataPromise as any).reject(data);\n }\n\n // add content range header to our object if one exists\n const contentRangeHeader = jqXHR.getResponseHeader('content-range');\n if (contentRangeHeader) {\n promiseWithXhr.contentRange = paginationService.ContentRangeHeader.fromString(\n jqXHR.getResponseHeader('content-range')\n );\n }\n\n if (promiseWithXhr.dataProcessCallback) {\n const dataCallbackResults = promiseWithXhr.dataProcessCallback(data);\n (promiseWithXhr.dataPromise as any).resolve(dataCallbackResults);\n } else {\n (promiseWithXhr.dataPromise as any).resolve(data);\n }\n\n retryCounter = 0; // Reset retry count\n return undefined;\n });\n };\n return executeXhr();\n }\n}\nexport const Instance = new XhrService();\n","import { useCallback, useEffect, useState } from 'react';\n\nimport Filter, { FilterType } from './models/Filter';\nimport { Property, PropertyType } from './models/Property';\n\nfunction createFilterFromProperty(property: Property): Filter {\n switch (property.type) {\n case PropertyType.Date:\n return {\n type: FilterType.Date,\n property,\n hasError: false,\n open: true,\n from: '',\n to: '',\n };\n case PropertyType.Dropdown:\n return {\n type: FilterType.Dropdown,\n hasError: false,\n property,\n open: true,\n relation: { value: '', label: '' },\n value: { value: '', label: '' },\n };\n case PropertyType.Number:\n return {\n type: FilterType.Number,\n hasError: false,\n property,\n open: true,\n relation: { value: '', label: '' },\n value: '',\n };\n default:\n return {\n type: FilterType.Text,\n hasError: false,\n property,\n open: true,\n relation: { value: '', label: '' },\n value: '',\n };\n }\n}\n\nconst saveFilter = (oldFilter: Filter, newFilter: Filter): Filter => {\n switch (newFilter.type) {\n case FilterType.Date:\n return {\n ...oldFilter,\n ...newFilter,\n open: false,\n hasError: !newFilter.from || !newFilter.to,\n };\n case FilterType.Dropdown: {\n return {\n ...oldFilter,\n ...newFilter,\n open: false,\n hasError: !newFilter.relation?.value || !newFilter.value?.value,\n };\n }\n case FilterType.Number:\n case FilterType.Text:\n return {\n ...oldFilter,\n ...newFilter,\n open: false,\n hasError: !newFilter.relation || !newFilter.value,\n };\n default:\n return {\n ...oldFilter,\n open: false,\n };\n }\n};\n\ntype FilterState = {\n /**\n * All filters\n */\n filters: Array;\n handleClickProperty: (property: Property) => void;\n handleClickFilter: (filter: Filter) => void;\n handleDeleteFilter: (filter: Filter) => void;\n handleCloseFilterPopover: (oldFilter: Filter, newFilter: Filter) => void;\n /**\n * Filters that are ready to be used (no open filters and no filters with errors).\n */\n readyFilters: Array;\n};\n\nconst useSearchFilter = (initialFilters: Array = []): FilterState => {\n const [filters, setFilters] = useState>(initialFilters);\n const [readyFilters, setReadyFilters] = useState>([]);\n useEffect(() => {\n if (!filters.find((filter) => filter.open || filter.hasError)) {\n setReadyFilters(filters);\n }\n }, [filters]);\n const handleClickProperty = useCallback(\n (property: Property) => {\n const existingFilter = filters.find((t) => t.property.name === property.name);\n if (existingFilter) {\n setFilters(filters.map((t) => ({ ...t, open: t.property.name === property.name })));\n } else {\n setFilters(filters.concat(createFilterFromProperty(property)));\n }\n },\n [filters, setFilters]\n );\n const handleClickFilter = useCallback(\n (filter: Filter) => {\n setFilters(\n filters.map((t) => (t.property.name !== filter.property.name ? t : { ...t, open: true }))\n );\n },\n [filters]\n );\n const handleDeleteFilter = useCallback(\n (filter: Filter) => {\n setFilters(filters.filter((t) => t.property.name !== filter.property.name));\n },\n [filters]\n );\n const handleCloseFilterPopover = useCallback(\n (_: Filter, newFilter: Filter) => {\n setFilters(\n filters.map((filter) => {\n if (newFilter?.property) {\n return filter.property.name !== newFilter.property.name\n ? filter\n : saveFilter(filter, newFilter);\n }\n\n return { ...filter, open: false };\n })\n );\n },\n [filters]\n );\n return {\n filters,\n handleClickProperty,\n handleClickFilter,\n handleDeleteFilter,\n handleCloseFilterPopover,\n readyFilters,\n };\n};\n\nexport default useSearchFilter;\n","import { FormattedMessage } from 'react-intl';\nimport CheckBoxOutlinedIcon from '@mui/icons-material/CheckBoxOutlined';\nimport CloseIcon from '@mui/icons-material/Close';\nimport PeopleIcon from '@mui/icons-material/People';\nimport {\n Avatar,\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Typography,\n} from '@mui/material';\n\nimport Logo from '@/components/Logo';\nimport { Strong } from '@/components/rich-text-formatting';\n\ntype Props = {\n isModalOpen: boolean;\n onClose: () => void;\n};\n\nconst url = {\n chatButtonUrl: 'https://calendly.com/plooto-demo/plootonetwork',\n getStartedButtonUrl:\n 'https://www.plooto.com/signup?utm_source=portal&utm_medium=accounting_cta&utm_campaign=experiment_1.1&utm_content=variant_b',\n};\n\nconst listItems = [\n {\n id: 0,\n title: ,\n description: ,\n },\n {\n id: 1,\n title: ,\n description: ,\n },\n {\n id: 2,\n title: ,\n description: ,\n },\n];\n\nconst AccountingSoftwareFreeTrialModal = ({ isModalOpen, onClose }: Props) => {\n const modalHeader = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n );\n\n return (\n \n \n {modalHeader}\n \n\n \n \n {listItems.map((item) => (\n \n \n \n \n \n \n \n \n ))}\n \n \n 10 free domestic transactions that can be used at any point during your 30-day free trial.\"\n values={{ b: Strong }}\n />\n \n \n\n \n \n }\n sx={{\n order: { xs: 2, sm: 1 },\n width: { xs: '100%', sm: 'auto' },\n mr: { xs: 0, sm: 2 },\n mt: { xs: 2, sm: 0 },\n }}\n >\n \n \n \n \n \n \n \n \n );\n};\n\nexport default AccountingSoftwareFreeTrialModal;\n","import { FormattedMessage } from 'react-intl';\nimport { Button, ButtonProps } from '@mui/material';\n\nimport SyncButtonIcon from './SyncButtonIcon';\n\ntype Props = {\n buttonText?: JSX.Element;\n onClick: () => void;\n sx?: ButtonProps['sx'];\n};\n\n/**\n * Sync button for free trial modal\n * @param props Component props\n * @returns React component\n */\nconst SyncButtonWithModal = ({ buttonText, onClick, sx }: Props) => (\n }\n onClick={onClick}\n sx={sx}\n >\n {buttonText || }\n \n);\n\nexport type { Props as SyncButtonWithModalProps };\nexport default SyncButtonWithModal;\n","import { useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { ButtonProps } from '@mui/material';\n\nimport AccountingSoftwareFreeTrialModal from '@/features/accounting-software/components/AccountingSoftwareFreeTrialModal';\nimport SyncButtonWithModal from '@/features/accounting-software/components/SyncButtonWithModal';\n\ntype Props = {\n isMobile?: boolean;\n sx?: ButtonProps['sx'];\n};\n\nconst SyncButtonWithModalContainer = ({ isMobile, sx }: Props) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n return (\n <>\n setIsModalOpen(false)}\n />\n \n ) : (\n \n )\n }\n onClick={() => setIsModalOpen(true)}\n sx={sx}\n />\n \n );\n};\n\nexport type { Props as SyncButtonWithModalContainerProps };\nexport default SyncButtonWithModalContainer;\n","import { FormattedMessage } from 'react-intl';\nimport { People } from '@mui/icons-material';\nimport { Button, Container, Grid, Typography } from '@mui/material';\n\nconst urls = {\n chat: 'https://calendly.com/plooto-demo/plootonetwork',\n signup:\n 'https://www.plooto.com/signup?utm_source=portal&utm_medium=invoices_cta&utm_campaign=experiment_1.1&utm_content=variant_b',\n};\n\nexport const FreeTrialSignupBanner = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n variant=\"outlined\"\n color=\"primary\"\n sx={{ width: { xs: '100%', sm: 'auto' } }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import { FormattedMessage } from 'react-intl';\nimport {\n Paper,\n Stack,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n} from '@mui/material';\n\nimport StatusNubs from '@/components/StatusNubs';\nimport Table from '@/components/Table';\nimport TableHeaderCell from '@/components/TableHeaderCell';\nimport SyncButtonWithModalContainer from '@/features/accounting-software/components/SyncButtonWithModalContainer';\nimport FilterButton from '@/legacy/shared/components/SearchFilter/FilterButton';\nimport FilterChip from '@/legacy/shared/components/SearchFilter/FilterChips/FilterChip';\nimport Filter from '@/legacy/shared/components/SearchFilter/models/Filter';\nimport { Property as FilterProperty } from '@/legacy/shared/components/SearchFilter/models/Property';\nimport { DisplayDateFormat, formatServerDate } from '@/utils/formatDate';\nimport { DisplayMoneyFormat, formatMoney } from '@/utils/formatMoney';\n\nimport { Row } from './types';\n\nconst NotApplicable = (): React.JSX.Element => ;\n\ntype Props = {\n error: unknown;\n filters: Array;\n filterOptions: Array;\n isLoading: boolean;\n onClickFilter: (filter: Filter) => void;\n onClickProperty: (property: FilterProperty) => void;\n onCloseFilterPopover: (_: Filter, newFilter: Filter) => void;\n onDeleteFilter: (filter: Filter) => void;\n onPageChange: (page: number) => void;\n page: number;\n rows: Array;\n totalRecordCount: number;\n};\n\nexport const PaymentsLogRenderer = ({\n error,\n filters,\n filterOptions,\n isLoading,\n onClickFilter,\n onClickProperty,\n onCloseFilterPopover,\n onDeleteFilter,\n onPageChange,\n page,\n rows,\n totalRecordCount,\n}: Props): React.JSX.Element => {\n const pageSizeOptions = [];\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {filters.map((filter) => (\n \n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {rows.map((row: Row) => (\n \n {row.companyName ? row.companyName : }\n \n \n \n \n {row.memo ? row.memo : }\n \n \n {formatServerDate(row.creditDate, DisplayDateFormat.ShortDate)}\n \n \n {formatServerDate(row.estimatedAvailability, DisplayDateFormat.ShortDate)}\n \n \n {formatMoney(row.amount, row.currency, DisplayMoneyFormat.Long)}\n \n \n ))}\n \n \n \n \n );\n};\n","import { useMemo, useState } from 'react';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { ApiService } from '@/features/api';\nimport { DateFilter, FilterType } from '@/legacy/shared/components/SearchFilter/models/Filter';\nimport {\n DateProperty,\n DropdownProperty,\n PropertyType,\n} from '@/legacy/shared/components/SearchFilter/models/Property';\nimport useSearchFilter from '@/legacy/shared/components/SearchFilter/useSearchFilter';\n\nimport { PaymentsLogRenderer } from './PaymentsLogRenderer';\nimport { PaymentsLogResponse, Row } from './types';\n\ntype PaymentsLogProps = {\n emailKey: string;\n};\n\nexport const PaymentsLog = ({ emailKey }: PaymentsLogProps): React.JSX.Element => {\n const [page, setPage] = useState(0);\n const {\n filters,\n handleClickFilter,\n handleClickProperty,\n handleCloseFilterPopover,\n handleDeleteFilter,\n readyFilters,\n } = useSearchFilter();\n const url: string = useMemo(() => {\n const res = new URL(`${import.meta.env.APP_URLS_API_URL}/v1/contact/${emailKey}/paymentsLog`);\n const dateFilter: DateFilter = readyFilters.find(\n (filter) => filter.type === FilterType.Date\n ) as DateFilter;\n if (dateFilter && dateFilter.from && dateFilter.to) {\n res.searchParams.append('from', dateFilter.from);\n res.searchParams.append('to', dateFilter.to);\n }\n res.searchParams.append('page', page.toString());\n return res.toString();\n }, [emailKey, page, readyFilters]);\n const { data, error, isLoading } = useQuery({\n queryFn: () => ApiService.get(url),\n queryKey: ['paymentsLog', emailKey, url],\n });\n const rows: Array =\n data?.payments.map((payment) => ({\n ...payment,\n companyName: payment.debitCompanyName,\n creditDate: new Date(payment.creditDate),\n estimatedAvailability: new Date(payment.estimatedCompletionDate),\n status: payment.paymentStatusValue,\n })) ?? [];\n const filterOptions: Array = useMemo(\n () => [\n {\n label: 'Date',\n name: 'date',\n type: PropertyType.Date,\n },\n ],\n []\n );\n return (\n setPage(newPage)}\n page={page}\n rows={rows}\n totalRecordCount={rows.length}\n />\n );\n};\n","import * as React from 'react';\nimport * as ko from 'knockout';\nimport { endOfMonth, startOfMonth, subDays, subMonths } from 'date-fns';\nimport { memoize } from 'lodash-es';\n\nimport {\n AccountingSoftwareBillFileAttachment,\n FileAttachment,\n FileStorageFileAttachment,\n} from '@/features/accounting-software';\nimport SyncButtonWithModalContainer from '@/features/accounting-software/components/SyncButtonWithModalContainer';\nimport { Instance as companyAccountingSoftwareService } from '@/features/accounting-software/services/companyAccountingSoftware';\nimport { FeatureFlag, FeatureToggleService } from '@/features/feature-flags';\nimport { FileAttachments, fileStorageService } from '@/features/file-attachments';\nimport { FileAttachmentCallbacks } from '@/features/file-attachments/types/FileAttachmentCallbacks';\nimport { FreeTrialSignupBanner } from '@/features/my-payments';\nimport { PaymentsLog } from '@/features/payments-log';\nimport titleMessageModal from '@/legacy/modals/styled/titleMessage';\nimport * as contactsService from '@/legacy/services/contacts';\nimport { ContactPaymentViewModel } from '@/legacy/services/contacts';\nimport * as paginationService from '@/legacy/services/pagination';\nimport { ApiDateFormat, DisplayDateFormat, formatLocalDate } from '@/utils/formatDate';\n\ndeclareModules({\n 'components/user/tables/paginationDisplay': () =>\n import('@/legacy/components/user/tables/paginationDisplay'),\n 'components/user/tables/paginationDisplay.html': () =>\n import('@/legacy/components/user/tables/paginationDisplay.html'),\n});\n\ninterface ITimePeriodOption {\n name: string;\n value: string;\n}\n\nexport class ViewModel {\n private timePeriod = ko.observable(undefined);\n\n private timePeriodSubscription: KnockoutSubscription;\n\n public status = ko.observable('loading');\n\n public debitCompanyName = ko.observable();\n\n public creditContactName = ko.observable();\n\n public payments: contactsService.ContactPaymentCollectionViewModel;\n\n public companyAccountingSoftwareService = companyAccountingSoftwareService;\n\n public emailKey = ko.observable();\n\n public hasAnyAttachments = ko.observable(false);\n\n public pagination: paginationService.PaginationKnockoutModel;\n\n public isNetworkExperimentEnabled = ko.observable(false);\n\n public isNetworkImprovementEnabled = ko.observable(false);\n\n public isNetworkExperimentFlagLoaded = ko.observable(false);\n\n public shouldRenderLegacyUi = ko.pureComputed(\n () => !(this.isNetworkExperimentEnabled() || this.isNetworkImprovementEnabled())\n );\n\n private paginationSubscription: KnockoutSubscription;\n\n public getAttachmentCallbacks: ReturnType<\n typeof memoize<(payment: ContactPaymentViewModel) => FileAttachmentCallbacks>\n >;\n\n public react = {\n PaymentsLog,\n fragments: {\n FreeTrialSignupBanner,\n SyncButtonWithModalContainer,\n },\n FileAttachments,\n };\n\n constructor() {\n this.pagination = new paginationService.PaginationKnockoutModel();\n this.pagination.resultsPerPage(10);\n\n this.getAttachmentCallbacks = memoize(\n (payment: ContactPaymentViewModel): FileAttachmentCallbacks => ({\n getAttachments: () =>\n Promise.resolve(\n contactsService.Instance.GetPaymentAttachmentsForContact(this.emailKey(), payment.id)\n ),\n viewAttachment: (attachment) => {\n this.viewPaymentAttachment(\n payment,\n // @ts-expect-error Weird duplicate types on legacy and even more legacy code, just\n // ignore it for now honestly. We'll eventually clean this all up.\n attachment\n );\n },\n })\n );\n this.getAttachmentCallbacks.cache = new WeakMap();\n }\n\n public activate(emailKey: string) {\n this.emailKey(emailKey);\n }\n\n public attached(view: HTMLElement, parent: HTMLElement): void {\n FeatureToggleService.isFeatureEnabledForAnonymous(\n FeatureFlag.SPR7_2024_NETWORK_IMPROVEMENT1_1\n ).then((enabled: boolean) => {\n const queryParams = new URLSearchParams(window.location.hash.split('?')[1]);\n const newUiParamPresent = Boolean(queryParams.get('payeeEmailUniqueKey'));\n const useNewUi = enabled && newUiParamPresent;\n this.isNetworkImprovementEnabled(useNewUi);\n if (useNewUi) {\n this.isNetworkExperimentEnabled(false);\n this.isNetworkExperimentFlagLoaded(true);\n } else {\n $('body').addClass('email-transfer');\n this.timePeriodSubscription = this.timePeriod.subscribe(() => {\n this.pagination.page(0);\n this.updatePayments(0);\n });\n\n this.paginationSubscription = this.pagination.page.subscribe(() => {\n this.updatePayments(this.pagination.page());\n });\n\n this.updatePayments(0);\n }\n });\n }\n\n private updatePayments(page: number) {\n let fromPeriod = null;\n let toPeriod = null;\n if (this.timePeriod()) {\n const periodElements = this.timePeriod().split('/');\n [fromPeriod, toPeriod] = periodElements;\n }\n\n this.status('loading');\n\n const contactPaymentsXhr = contactsService.Instance.GetByEmailKey(\n this.emailKey(),\n fromPeriod,\n toPeriod,\n page\n );\n\n contactPaymentsXhr.dataPromise.then(\n (contactPaymentCollection: contactsService.ContactPaymentCollectionViewModel) => {\n FeatureToggleService.isFeatureEnabled(\n FeatureFlag.SPR6_2024_NETWORK_EXPERIMENT1_1,\n contactPaymentCollection.contactKey\n )\n .then((enabled) => {\n this.isNetworkExperimentEnabled(enabled);\n })\n .finally(() => {\n this.isNetworkExperimentFlagLoaded(true);\n });\n\n // If we are looking at invalid page we'll go back all the way to the first page\n if (\n this.pagination.totalPages() > 0 &&\n this.pagination.page() >= this.pagination.totalPages()\n ) {\n this.pagination.page(0);\n return;\n }\n\n for (let i = 0; i < contactPaymentCollection.payments.length; i += 1) {\n if (contactPaymentCollection.payments[i].hasAttachments) {\n this.hasAnyAttachments(true);\n contactPaymentCollection.payments[i].attachments =\n new contactsService.ContactPaymentAttachments();\n }\n }\n this.payments = contactPaymentCollection;\n\n this.debitCompanyName(contactPaymentCollection.debitCompanyName);\n this.creditContactName(contactPaymentCollection.creditContactName);\n\n this.pagination.setContentRange(contactPaymentsXhr.contentRange);\n\n this.status('loaded');\n }\n );\n }\n\n public detached(): void {\n if (this.timePeriodSubscription) {\n this.timePeriodSubscription.dispose();\n }\n if (this.paginationSubscription) {\n this.paginationSubscription.dispose();\n }\n $('body').removeClass('email-transfer');\n }\n\n public TimePeriods: KnockoutComputed> = ko.pureComputed({\n read: () => {\n const today = new Date();\n const MAX_MONTHS_BACK = 12;\n const periods: Array = [];\n const formatPeriod = (startDate: Date, endDate: Date) => {\n const start = formatLocalDate(startDate, ApiDateFormat.DateOnly);\n const end = formatLocalDate(endDate, ApiDateFormat.DateOnly);\n return `${start}/${end}`;\n };\n\n periods.push({\n name: 'All',\n value: '',\n });\n periods.push({\n name: 'Last 10 days',\n value: formatPeriod(subDays(today, 10), today),\n });\n periods.push({\n name: 'This Month',\n value: formatPeriod(startOfMonth(today), endOfMonth(today)),\n });\n periods.push({\n name: 'Last 31 Days',\n value: formatPeriod(subDays(today, 31), today),\n });\n\n for (let i = 0; i < MAX_MONTHS_BACK; i += 1) {\n const month = subMonths(today, i + 1);\n periods.push({\n name: formatLocalDate(month, DisplayDateFormat.CalendarMonth),\n value: formatPeriod(startOfMonth(month), endOfMonth(month)),\n });\n }\n if (!this.timePeriod()) {\n this.timePeriod(periods[0].value);\n }\n return periods;\n },\n deferEvaluation: true,\n });\n\n public NavigateSignUp() {\n window.location.href =\n 'https://www.plooto.com/signup?utm_source=portal&utm_medium=banner_cta&utm_campaign=experiment_1.0&utm_content=control';\n }\n\n public styleStatus(payment) {\n const statusId = payment.paymentStatusValue;\n\n if (statusId == 14 /* CREDIT_CLEARING*/) {\n return 'sending';\n }\n if (statusId === 90 || statusId === 100 || statusId === 95) {\n return 'unknown';\n } // On Hold (QUEUE_PAYMENTS, PROCESS_PAYMENTS, WALLET_PREFUNDING_PENDING)\n if (statusId === 4 || (statusId >= 50 && statusId <= 100)) {\n return 'clearing';\n }\n if (statusId == 5) {\n return 'rejected';\n } // Debit failed\n if (statusId == 30) {\n return 'clearing';\n } // Recall Pending\n\n if (statusId < 10) {\n return 'debiting';\n }\n\n if (statusId == 13) {\n return 'unknown';\n }\n if (statusId < 20) {\n return 'sending';\n }\n\n if (statusId == 20 || statusId == 24) {\n return 'pendingApproval';\n }\n if (statusId == 21 || statusId == 22) {\n return 'rejected';\n }\n if (statusId >= 30 && statusId <= 130) {\n return 'clearing';\n }\n\n if (statusId === 200 /* COMLPETED*/) {\n return 'completed';\n }\n\n return 'unknown';\n }\n\n public displayStatus(payment) {\n const statusId = payment.paymentStatusValue;\n\n if (statusId < 4) {\n return 'Funds Withdrawn';\n }\n if (statusId == 14) {\n return 'Credit Issued';\n } // CREDIT_CLEARING\n\n if (statusId == 4) {\n return 'Clearing';\n } // DEBIT_CLEARING\n if (statusId == 5) {\n return 'Debit Failed';\n }\n if (statusId == 13) {\n return 'Credit Failed';\n }\n if (statusId == 30) {\n return 'Recall Pending';\n }\n\n if (statusId <= 10 || (statusId >= 50 && statusId <= 100)) {\n return 'Clearing';\n }\n if (statusId < 20) {\n return 'Issued To Bank';\n }\n if (statusId == 21) {\n return 'Rejected';\n }\n if (statusId == 22) {\n return 'Recalled';\n }\n if (statusId >= 30 && statusId <= 130) {\n return 'Clearing';\n }\n if (statusId === 200) {\n return 'Completed';\n } // COMPLETED\n\n return 'Unknown';\n }\n\n public statusDescription(payment): React.JSX.Element {\n const statusId = payment.paymentStatusValue;\n let statusTitle = '';\n let statusInfo = '';\n\n if (statusId == 14 /* CREDIT_CLEARING*/) {\n statusTitle = 'Credit Issued';\n statusInfo =\n 'The payment was sent to your bank. Depending on the bank, it can take them 1-3 business days to reflect the credit in your bank account.';\n } else if (statusId < 4) {\n statusTitle = 'Funds Withdrawn';\n statusInfo =\n 'Instructions have been issued for the funds to be debited from the senders bank account';\n } else if (statusId === 4) {\n statusTitle = 'Clearing';\n statusInfo =\n 'The funds are being validated and processed as per standard banking regulations.';\n } else if (statusId === 5) {\n statusTitle = 'Debit Failed';\n statusInfo = 'Funds could not be debited';\n } else if (statusId === 13) {\n statusTitle = 'Credit Failed';\n statusInfo = 'Funds could not be credited';\n } else if (statusId == 70) {\n statusTitle = 'Awaiting Acceptance';\n statusInfo =\n 'Transfer started. Your funds will be credited to the payee once they accept the email money transfer.';\n } else if (statusId < 20) {\n statusTitle = 'Issued to bank';\n statusInfo =\n 'The funds have been credited to your bank and will be reflected in your account after they process the transaction';\n } else if (statusId == 20 || statusId == 24) {\n statusTitle = 'Approval Required';\n statusInfo = 'Approval required to proceed';\n } else if (statusId == 21) {\n statusTitle = 'Rejected';\n statusInfo = 'Payment has been rejected';\n } else if (statusId == 22) {\n statusTitle = 'Recalled';\n statusInfo = 'Payment has been recalled';\n } else if (statusId == 30) {\n statusTitle = 'Recall Pending';\n statusInfo = 'Payment has been recalled and will not be credited.';\n } else if (statusId >= 30 && statusId <= 130) {\n statusTitle = 'Processing';\n statusInfo =\n 'Funds are currently in transit and estimated to arrive on \"Estimated Credit Date\".';\n } else if (statusId === 200 /* COMLPETED*/) {\n statusTitle = 'Completed';\n statusInfo =\n 'The payment was sent to your bank. Depending on the bank, it can take them 1-3 business days to reflect the credit in your bank account.';\n } else if (statusId >= 50 && statusId <= 100) {\n statusTitle = 'Processing';\n statusInfo =\n 'Funds are currently in transit and estimated to arrive on \"Estimated Credit Date\".';\n }\n\n const statusDescription: React.JSX.Element = statusInfo\n ? React.createElement(React.Fragment, null, [\n React.createElement('strong', null, [statusTitle]),\n React.createElement('br'),\n statusInfo,\n ])\n : React.createElement('span', null, [statusTitle]);\n return statusDescription;\n }\n\n public async viewPaymentAttachment(\n payment: ContactPaymentViewModel,\n fileAttachment: FileAttachment\n ) {\n switch (fileAttachment.discriminator) {\n case 'AccountingSoftwareBillFileAttachment': {\n const accountingSoftwareBillFileAttachment =\n fileAttachment as AccountingSoftwareBillFileAttachment;\n contactsService.Instance.openWindow(accountingSoftwareBillFileAttachment.url);\n break;\n }\n case 'FileStorageFileAttachment': {\n const fileStorageFileAttachment = fileAttachment as FileStorageFileAttachment;\n try {\n const fileStorageDownloadLink =\n await contactsService.Instance.generateFileStorageDownloadLink(\n this.emailKey(),\n payment.id,\n fileStorageFileAttachment.companyFileStorageFileId\n );\n\n fileStorageService.viewFileStorageFile(fileStorageDownloadLink);\n } catch (err) {\n switch (err?.type) {\n case 'invalid.attachmentsVisibleToContacts':\n titleMessageModal.show({\n title: 'Cannot view attachment',\n message:\n 'This company has disabled ability to view attachments. Please contact sender.',\n svgIconSymbolLarge: 'svg-warning-large',\n });\n break;\n default:\n titleMessageModal.show({\n title: 'Error downloading attachment',\n message:\n 'There was an error downloading this file attachment. Please try again later.',\n svgIconSymbolLarge: 'svg-warning-large',\n });\n break;\n }\n }\n break;\n }\n default:\n titleMessageModal.show({\n title: 'Unable to open attachment',\n message: 'This attachment is not available for viewing. Please contact sender.',\n svgIconSymbolLarge: 'svg-warning-large',\n });\n break;\n }\n }\n}\n"],"names":["Logo","sx","variant","className","color","width","desiredWidth","height","desiredHeight","id","useId","viewBox","hasBrandmark","hasWordmark","_jsxs","_Box","component","xmlns","xmlnsXlink","role","children","cx","cy","gradientTransform","gradientUnits","r","_jsx","offset","stopColor","d","fill","memo","RatingSx","_svgIconClasses","root","StatusNubs","defaultValue","max","props","formatMessage","useIntl","getLabelText","useCallback","value","defaultMessage","_Rating","Array","isArray","icon","FiberManualRecordIcon","fontSize","emptyIcon","readOnly","emptyLabelText","FormattedMessage","MuiTooltip","arrow","SyncingIcon","SyncIcon","animation","theme","transitions","duration","standard","transform","SyncButtonIcon","state","svgIconProps","SyncProblemIcon","SyncDisabledIcon","API_PREFIX","ContactPaymentViewModel","ContactPaymentCollectionViewModel","ContactPaymentAttachments","attachmentStatus","ko","attachments","EmailMoneyTransferService","constructor","userService","GetByEmailKey","emailKey","from","to","page","dataPromiseWithXhr","xhrService","getXhr","AuthorizedGetFromUri","Object","create","globalThis","import_meta_env","APP_URLS_API_URL","dataProcessCallback","data","initiatePromiseWithXhr","GetPaymentAttachmentsForContact","paymentId","system","dfd","AuthorizedGet","done","payments","plootoUtils","error","reject","resolve","fail","promise","generateFileStorageDownloadLink","companyFileStorageFileId","openWindow","url","parameters","location","popupWidth","popupHeight","left","window","screen","top","features","$","map","name","join","popup","open","document","write","href","Instance","PaginationKnockoutModel","resultsPerPage","totalPages","totalResults","rangeStart","rangeEnd","maxVisibleNumbers","setContentRange","contentRangeHeader","size","Math","ceil","navigatePage","visiblePageNumbers","read","visibleRanges","i","push","deferEvaluation","isFirstPage","isLastPage","nextPageIsLastPage","hasMoreNextVisiblePages","hasMorePreviousVisiblePages","lastPageNumber","previousPageIsFirstPage","nextInSetOfPageNumbers","previousInSetOfPageNumbers","ContentRangeHeader","fromString","contentRange","contentRangeGroups","exec","Number","parseInt","PromiseWithXhr","dataPromise","Deferred","abort","xhr","XhrService","promiseWithXhr","retryCounter","executeXhr","then","textStatus","jqXHR","type","SessionTimeoutService","showTimeout","loginResponse","getResponseHeader","paginationService","dataCallbackResults","createFilterFromProperty","property","PropertyType","Date","FilterType","hasError","Dropdown","relation","label","Text","saveFilter","oldFilter","newFilter","useSearchFilter","initialFilters","filters","setFilters","useState","readyFilters","setReadyFilters","useEffect","find","filter","handleClickProperty","existingFilter","t","concat","handleClickFilter","handleDeleteFilter","handleCloseFilterPopover","_","chatButtonUrl","getStartedButtonUrl","listItems","title","description","AccountingSoftwareFreeTrialModal","isModalOpen","onClose","modalHeader","_Grid","container","spacing","item","xs","justifyContent","_IconButton","edge","onClick","CloseIcon","sm","_Typography","mb","display","src","alt","_Dialog","maxWidth","_DialogTitle","bgcolor","_DialogContent","_List","py","_ListItem","pl","alignItems","_ListItemAvatar","minWidth","_Avatar","CheckBoxOutlinedIcon","_ListItemText","primary","primaryTypographyProps","secondary","secondaryTypographyProps","values","b","Strong","_DialogActions","px","pb","pt","_Button","target","rel","startIcon","PeopleIcon","order","mr","mt","SyncButtonWithModal","buttonText","SyncButtonWithModalContainer","isMobile","setIsModalOpen","_Fragment","urls","chat","signup","FreeTrialSignupBanner","_Container","paddingTop","paddingBottom","marginBottom","rowSpacing","columnSpacing","direction","_People","NotApplicable","PaymentsLogRenderer","filterOptions","isLoading","onClickFilter","onClickProperty","onCloseFilterPopover","onDeleteFilter","onPageChange","rows","totalRecordCount","pageSizeOptions","_Paper","p","gutterBottom","_Stack","FilterButton","properties","FilterChip","onDelete","onClosePopover","_TableContainer","Table","currentPageIndex","isError","Boolean","totalNumberOfRecords","_TableHead","_TableRow","TableHeaderCell","_TableBody","row","hover","_TableCell","companyName","status","overflow","textOverflow","whiteSpace","formatServerDate","creditDate","DisplayDateFormat","ShortDate","estimatedAvailability","formatMoney","amount","currency","DisplayMoneyFormat","Long","PaymentsLog","setPage","useMemo","res","URL","dateFilter","searchParams","append","toString","useQuery","queryFn","ApiService","get","queryKey","payment","debitCompanyName","estimatedCompletionDate","paymentStatusValue","newPage","length","declareModules","components/user/tables/paginationDisplay","components/user/tables/paginationDisplay.html","ViewModel","timePeriod","undefined","creditContactName","companyAccountingSoftwareService","hasAnyAttachments","isNetworkExperimentEnabled","isNetworkImprovementEnabled","isNetworkExperimentFlagLoaded","shouldRenderLegacyUi","react","fragments","FileAttachments","pagination","getAttachmentCallbacks","_memoize","getAttachments","Promise","contactsService","viewAttachment","attachment","viewPaymentAttachment","cache","WeakMap","activate","attached","view","parent","FeatureToggleService","isFeatureEnabledForAnonymous","FeatureFlag","SPR7_2024_NETWORK_IMPROVEMENT1_1","enabled","newUiParamPresent","URLSearchParams","hash","split","useNewUi","addClass","timePeriodSubscription","subscribe","updatePayments","paginationSubscription","fromPeriod","toPeriod","contactPaymentsXhr","contactPaymentCollection","isFeatureEnabled","SPR6_2024_NETWORK_EXPERIMENT1_1","contactKey","finally","hasAttachments","detached","dispose","removeClass","TimePeriods","today","MAX_MONTHS_BACK","periods","formatPeriod","startDate","endDate","start","formatLocalDate","ApiDateFormat","DateOnly","end","_subDays","_startOfMonth","_endOfMonth","month","_subMonths","CalendarMonth","NavigateSignUp","styleStatus","statusId","displayStatus","statusDescription","statusTitle","statusInfo","React","fileAttachment","discriminator","accountingSoftwareBillFileAttachment","fileStorageFileAttachment","fileStorageDownloadLink","fileStorageService","viewFileStorageFile","err","titleMessageModal","show","message","svgIconSymbolLarge"],"sourceRoot":""}