{"version":3,"file":"js/b3c471ade8197b64deff.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 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';\n\nimport {\n AccountingSoftwareBillAttachmentDetails,\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 { fileStorageService } from '@/features/file-attachments';\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 react = {\n PaymentsLog,\n fragments: {\n FreeTrialSignupBanner,\n SyncButtonWithModalContainer,\n },\n };\n\n constructor() {\n this.pagination = new paginationService.PaginationKnockoutModel();\n this.pagination.resultsPerPage(10);\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 GetPaymentAttachments(contactPaymentViewModel: contactsService.ContactPaymentViewModel) {\n const paymentAttachments: contactsService.ContactPaymentAttachments =\n contactPaymentViewModel.attachments;\n\n if (\n paymentAttachments.attachmentStatus() == 'loadRequired' ||\n paymentAttachments.attachmentStatus() == 'error'\n ) {\n paymentAttachments.attachmentStatus('loading');\n contactsService.Instance.GetPaymentAttachmentsForContact(\n this.emailKey(),\n contactPaymentViewModel.id\n )\n .then((attachments: Array) => {\n paymentAttachments.attachments(attachments);\n paymentAttachments.attachmentStatus('loaded');\n })\n .fail(() => {\n paymentAttachments.attachmentStatus('error');\n });\n }\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 const getErrorMessage = () => {\n switch (err.type) {\n case 'invalid.attachmentsVisibleToContacts':\n return {\n title: 'Failed downloading attachment',\n message:\n 'This company has disabled ability to view attachments. Please contact sender.',\n };\n\n default:\n return {\n title: 'Failed downloading attachment',\n message:\n 'There was an error downloading this file attachment. Please try again later.',\n };\n }\n };\n const { title, message } = getErrorMessage();\n\n titleMessageModal.show({\n title,\n message,\n svgIconSymbolLarge: 'svg-warning-large',\n } as any);\n console.log(err);\n }\n break;\n }\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","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","pagination","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","contactsService","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","GetPaymentAttachments","contactPaymentViewModel","paymentAttachments","viewPaymentAttachment","fileAttachment","discriminator","accountingSoftwareBillFileAttachment","fileStorageFileAttachment","fileStorageDownloadLink","fileStorageService","viewFileStorageFile","err","getErrorMessage","message","titleMessageModal","show","svgIconSymbolLarge","console","log"],"sourceRoot":""}