@mx-cartographer/experiences 9.1.1 → 9.1.3-alpha.al0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/{AccountDetailsDrawer-C1hhmlmI.mjs → AccountDetailsDrawer-Cq4kiiKD.mjs} +4 -4
- package/dist/{AccountDetailsDrawer-C1hhmlmI.mjs.map → AccountDetailsDrawer-Cq4kiiKD.mjs.map} +1 -1
- package/dist/{Analytics-WeZYytR0.mjs → Analytics-D-jdcL72.mjs} +3 -3
- package/dist/Analytics-D-jdcL72.mjs.map +1 -0
- package/dist/{EmbeddedCard-DH8vQ3qN.mjs → EmbeddedCard-DCOQnTz-.mjs} +2 -2
- package/dist/{EmbeddedCard-DH8vQ3qN.mjs.map → EmbeddedCard-DCOQnTz-.mjs.map} +1 -1
- package/dist/{ExportCsvAction-C9KWH3Az.mjs → ExportCsvAction-C-IisDcv.mjs} +2 -2
- package/dist/{ExportCsvAction-C9KWH3Az.mjs.map → ExportCsvAction-C-IisDcv.mjs.map} +1 -1
- package/dist/{Help-aERwhajy.mjs → Help-zVZdcmlk.mjs} +2 -2
- package/dist/{Help-aERwhajy.mjs.map → Help-zVZdcmlk.mjs.map} +1 -1
- package/dist/{ManageIncome-Be9WHv-s.mjs → ManageIncome-B_8i71mE.mjs} +5 -5
- package/dist/{ManageIncome-Be9WHv-s.mjs.map → ManageIncome-B_8i71mE.mjs.map} +1 -1
- package/dist/{RecurringSettings-kRqAViNn.mjs → RecurringSettings-hs0YUp83.mjs} +3 -3
- package/dist/{RecurringSettings-kRqAViNn.mjs.map → RecurringSettings-hs0YUp83.mjs.map} +1 -1
- package/dist/{TransactionDetails-roZ5xLq8.mjs → TransactionDetails-DT-MQqOB.mjs} +3 -3
- package/dist/{TransactionDetails-roZ5xLq8.mjs.map → TransactionDetails-DT-MQqOB.mjs.map} +1 -1
- package/dist/{WidgetContainer-DJnp6t6c.mjs → WidgetContainer-CjdCY4sj.mjs} +21 -21
- package/dist/WidgetContainer-CjdCY4sj.mjs.map +1 -0
- package/dist/accounts/index.es.js +4 -4
- package/dist/budgets/index.es.js +5 -5
- package/dist/cashflow/index.es.js +6 -6
- package/dist/common/components/daterangeselector/DateRangeSelector.d.ts +5 -0
- package/dist/common/index.es.js +2 -2
- package/dist/dashboard/index.es.js +93 -71
- package/dist/dashboard/index.es.js.map +1 -1
- package/dist/debts/index.es.js +2 -2
- package/dist/finstrong/index.es.js +4 -4
- package/dist/goals/index.es.js +2 -2
- package/dist/help/index.es.js +2 -2
- package/dist/insights/index.es.js +2 -2
- package/dist/investments/index.es.js +2 -2
- package/dist/networth/index.es.js +78 -76
- package/dist/networth/index.es.js.map +1 -1
- package/dist/recurringtransactions/index.es.js +6 -6
- package/dist/settings/index.es.js +2 -2
- package/dist/spending/index.es.js +4 -4
- package/dist/transactions/index.es.js +7 -7
- package/dist/trends/index.es.js +5 -5
- package/package.json +1 -1
- package/dist/Analytics-WeZYytR0.mjs.map +0 -1
- package/dist/WidgetContainer-DJnp6t6c.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## [9.1.2] - 07-02-2026
|
|
2
|
+
|
|
3
|
+
- **FIXED** - Net Worth timeframe analytics event (`netWorth_click_timePeriod`) fired on every dashboard load/refresh instead of only on user timeframe selection
|
|
4
|
+
|
|
1
5
|
## [9.1.1] - 07-01-2026
|
|
2
6
|
|
|
3
7
|
- **FIXED** - Cash Flow dashboard starting balance ignored the account filter and could differ between the summary and details views
|
|
@@ -25,7 +25,7 @@ import { Error as W, Language as Tt, CheckCircle as xt } from "@mxenabled/mx-ico
|
|
|
25
25
|
import { I as O } from "./IconBacking-DgT8DCeh.mjs";
|
|
26
26
|
import { f as Dt } from "./NumberFormatting--XMeeBfr.mjs";
|
|
27
27
|
import { u as St } from "./useAccountDisplayName-BsiXA0qf.mjs";
|
|
28
|
-
import { A as I } from "./Analytics-
|
|
28
|
+
import { A as I } from "./Analytics-D-jdcL72.mjs";
|
|
29
29
|
import { D as U } from "./Dialog-Bvd2n8hz.mjs";
|
|
30
30
|
import { D as z } from "./Drawer-DsnW2o0v.mjs";
|
|
31
31
|
import Et from "@mui/material/Stack";
|
|
@@ -50,8 +50,8 @@ import $t from "@mui/material/AlertTitle";
|
|
|
50
50
|
import Vt from "@mui/material/Link";
|
|
51
51
|
import Wt from "@mui/material/Paper";
|
|
52
52
|
import { endOfToday as zt, subDays as Yt, startOfToday as Gt } from "date-fns";
|
|
53
|
-
import { T as Ht } from "./EmbeddedCard-
|
|
54
|
-
import { T as jt } from "./TransactionDetails-
|
|
53
|
+
import { T as Ht } from "./EmbeddedCard-DCOQnTz-.mjs";
|
|
54
|
+
import { T as jt } from "./TransactionDetails-DT-MQqOB.mjs";
|
|
55
55
|
const Kt = (t, o) => {
|
|
56
56
|
const n = tt.includes(o) ? mt(t) : [], a = et.includes(o) ? pt(t) : [], c = nt.includes(o) ? ht(t) : [];
|
|
57
57
|
return [n, a, c].filter((l) => l.length > 0);
|
|
@@ -919,4 +919,4 @@ export {
|
|
|
919
919
|
fe as b,
|
|
920
920
|
Qt as u
|
|
921
921
|
};
|
|
922
|
-
//# sourceMappingURL=AccountDetailsDrawer-
|
|
922
|
+
//# sourceMappingURL=AccountDetailsDrawer-Cq4kiiKD.mjs.map
|
package/dist/{AccountDetailsDrawer-C1hhmlmI.mjs.map → AccountDetailsDrawer-Cq4kiiKD.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountDetailsDrawer-C1hhmlmI.mjs","sources":["../src/trends/components/TrendsChart.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActionsRow.tsx","../src/accounts/hooks/useGetMergeableAccounts.tsx","../src/accounts/components/ConnectionStatusIcons.tsx","../src/accounts/components/AccountListItem.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActions.tsx","../src/accounts/utils/getConnectionMessages.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountConnection.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetails.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.tsx","../src/accounts/components/detailsdrawer/Transactions/TransactionsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\n\nimport {\n useCategoryStore,\n useGlobalCopyStore,\n INCOME_ACCOUNT_TYPES,\n PAYMENT_ACCOUNT_TYPES,\n SPENDING_ACCOUNT_TYPES,\n} from '../../common'\nimport { AccountType, MonthlyCategoryTotals, TrendsCopy } from '../../core'\n\nimport { useAccountUiStore } from '../../accounts/hooks/useUiStore'\nimport { LineChart } from '../../common/components/charts/LineChart'\nimport type { LineChartDataset, LineChartLabel } from '../../common/components/charts/LineChart'\n\nimport { getIncomeTotals, getPaymentTotals, getSpendingTotals } from '../utils/SpendingData'\n\nconst getDatasets = (\n totals: MonthlyCategoryTotals[],\n accountType: AccountType,\n): LineChartDataset[] => {\n const incomeData = INCOME_ACCOUNT_TYPES.includes(accountType) ? getIncomeTotals(totals) : []\n const paymentData = PAYMENT_ACCOUNT_TYPES.includes(accountType) ? getPaymentTotals(totals) : []\n const spendingData = SPENDING_ACCOUNT_TYPES.includes(accountType) ? getSpendingTotals(totals) : []\n\n // There should always be 1-2 datasets returned. No account type will have all three categories.\n return [incomeData, paymentData, spendingData].filter((data) => data.length > 0)\n}\n\nconst getLabels = (datasets: LineChartDataset[], accountType: AccountType, copy: TrendsCopy) => {\n const [dataA, dataB] = datasets\n const credits = dataA\n const debits = dataB ?? dataA\n const labels: LineChartLabel[] = []\n\n if (credits && debits && INCOME_ACCOUNT_TYPES.includes(accountType)) {\n const lastIncome = credits[credits.length - 1].y\n labels.push({ label: copy.income_label, amount: lastIncome })\n } else if (PAYMENT_ACCOUNT_TYPES.includes(accountType)) {\n const lastPayment = credits[credits.length - 1].y\n labels.push({ label: copy.payments_label, amount: lastPayment })\n }\n\n if (debits && SPENDING_ACCOUNT_TYPES.includes(accountType)) {\n const lastSpending = debits[debits.length - 1].y\n labels.push({ label: copy.spending_label, amount: lastSpending })\n }\n\n return labels\n}\n\nconst TrendsChart = () => {\n const theme = useTheme()\n const { selectedAccount } = useAccountUiStore()\n const { monthlyCategoryTotals } = useCategoryStore()\n const { trends: trendsCopy } = useGlobalCopyStore()\n\n const colors = [theme.palette.chart?.chart1, theme.palette.chart?.chart2]\n const datasets = getDatasets(monthlyCategoryTotals, selectedAccount.account_type)\n const labels = getLabels(datasets, selectedAccount.account_type, trendsCopy)\n const isLoan = [AccountType.LOAN, AccountType.MORTGAGE].includes(selectedAccount.account_type)\n\n return (\n <div data-testid=\"TrendsChart\">\n <LineChart\n colors={colors}\n datasets={datasets}\n height={185}\n labels={labels}\n showAverage={isLoan}\n showAxisHighlight={true}\n showBars={isLoan}\n showLegend={true}\n showTooltip={true}\n showXAxis={true}\n showXAxisTicks={true}\n showYAxis={true}\n showYAxisTicks={true}\n valueFormatterString=\"0,0\"\n />\n </div>\n )\n}\n\nexport default observer(TrendsChart)\n","import ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\ninterface AccountActionsRowProps {\n ariaPressed?: boolean\n onClick: () => void\n isLast?: boolean\n primaryText: string\n secondaryText: string\n}\n\nconst AccountActionsRow: React.FC<React.PropsWithChildren<AccountActionsRowProps>> = ({\n ariaPressed,\n children,\n isLast = false,\n onClick,\n primaryText,\n secondaryText,\n}) => {\n return (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton aria-pressed={ariaPressed} onClick={onClick}>\n <ListItemText primary={primaryText} secondary={secondaryText} />\n {children}\n </ListItemButton>\n </ListItem>\n )\n}\n\nexport default AccountActionsRow\n","import { useAccountStore } from '../../common'\nimport { useAccountUiStore } from './useUiStore'\n\nexport const useGetMergeableAccounts = () => {\n const { accounts } = useAccountStore()\n const { selectedAccount, selectedMember } = useAccountUiStore()\n return accounts.filter(\n (account) =>\n account.member_guid === selectedMember.guid &&\n selectedMember.successfully_aggregated_at &&\n account.guid !== selectedAccount.guid,\n )\n}\n","import { CheckCircle as CheckCircleIcon, Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport { IconBacking } from '../../common'\n\ntype IconProp = {\n size?: number\n}\n\nconst iconStyle = {\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nexport const ConnectedStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <CheckCircleIcon color=\"success\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n\nexport const ErrorStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <ErrorIcon color=\"error\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Badge from '@mui/material/Badge'\nimport Box from '@mui/material/Box'\nimport ListItem, { ListItemOwnProps } from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport { useTheme } from '@mui/material/styles'\n\nimport { InstitutionLogo, Text } from '@mxenabled/mxui'\n\nimport { ErrorStatus } from './ConnectionStatusIcons'\n\nimport { useAccountDisplayName, useAppConfig, useGlobalCopyStore } from '../../common'\nimport { Account, ConnectionStatus } from '../../core'\nimport { getAccountBalanceDetails } from '../utils/AccountFields'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface AccountListItemProps {\n account: Account\n onRowClick?: () => void\n listItemProps?: ListItemOwnProps\n shouldShowConnectionStatus?: boolean\n}\n\nconst AccountListItem: React.FC<AccountListItemProps> = ({\n account,\n onRowClick,\n listItemProps,\n shouldShowConnectionStatus = false,\n}) => {\n const theme = useTheme()\n const displayName = useAccountDisplayName(account)\n const { config } = useAppConfig()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { firstSubtitle, firstValue, secondSubtitle, secondValue } = getAccountBalanceDetails(\n account,\n accountsCopy,\n config.display_available_balance_in_accounts,\n )\n\n let statusIcon = undefined\n if (\n account.connectionStatus === ConnectionStatus.Error ||\n account.connectionStatus === ConnectionStatus.RequiresMfa\n ) {\n statusIcon = <ErrorStatus size={16} />\n }\n\n const content = (\n <>\n <ListItemAvatar>\n <Badge\n badgeContent={shouldShowConnectionStatus ? statusIcon : undefined}\n sx={{\n '& .MuiBadge-badge': {\n right: -1,\n },\n }}\n >\n <InstitutionLogo alt=\"MX\" institutionGuid={account.institution_guid || ''} />\n </Badge>\n </ListItemAvatar>\n\n <ListItemText\n disableTypography={true}\n primary={\n <Text\n bold={true}\n color={account.is_hidden ? theme.palette.text.secondary : undefined}\n variant=\"body1\"\n >\n {`${displayName} ${account.account_number ? `*${account.account_number}` : ''}`}{' '}\n {account.is_hidden && !account.is_closed && accountsCopy.is_hidden}\n {account.is_closed && accountsCopy.is_closed}\n </Text>\n }\n secondary={\n <>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{firstSubtitle}</Text>\n <Text bold={true} variant=\"body2\">\n {formatCurrency(firstValue, '0,0.00')}\n </Text>\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{secondSubtitle}</Text>\n <Text ml=\"auto\" variant=\"caption\">\n {secondValue}\n </Text>\n </Box>\n </>\n }\n />\n </>\n )\n\n return (\n <ListItem\n {...listItemProps}\n sx={{\n backgroundColor: 'background.paper',\n color: account.is_closed ? 'grey.700' : '',\n ...listItemProps?.sx,\n }}\n >\n {onRowClick ? (\n <ListItemButton alignItems=\"flex-start\" onClick={onRowClick} sx={{ px: 24 }}>\n {content}\n </ListItemButton>\n ) : (\n content\n )}\n </ListItem>\n )\n}\n\nexport default observer(AccountListItem)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Switch from '@mui/material/Switch'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountActionsRow from './AccountActionsRow'\n\nimport {\n ANALYTICS_EVENTS,\n Dialog,\n Drawer,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { type Account } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useGetMergeableAccounts } from '../../../hooks/useGetMergeableAccounts'\nimport AccountListItem from '../../AccountListItem'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ntype UpdatedValue = Pick<Account, 'is_closed'> | Pick<Account, 'is_hidden'>\n\nconst AccountActions = () => {\n const [shouldShowCloseAccountModal, setShouldShowCloseAccountModal] = React.useState(false)\n const [shouldShowAccountMergeDrawer, setShouldShowAccountMergeDrawer] = React.useState(false)\n const [shouldShowMergeConfirmModal, setShouldShowMergeConfirmModal] = React.useState(false)\n const [accountToMerge, setAccountToMerge] = React.useState({} as Account)\n\n const { selectedAccount: account } = useAccountUiStore()\n const { mergeAccounts, updateAccount } = useAccountStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const mergeableAccounts = useGetMergeableAccounts()\n const { onEvent } = useEvent()\n const { modifyTransactionByAccountGuid } = useTransactionStore()\n\n const handleUpdateAccount = async (updatedValue: UpdatedValue) => {\n await updateAccount({\n ...account,\n ...updatedValue,\n })\n if ('is_closed' in updatedValue && updatedValue.is_closed !== account.is_closed)\n modifyTransactionByAccountGuid(account.guid, { accountIsClosed: updatedValue.is_closed })\n }\n\n const handleMergeAccounts = () => {\n mergeAccounts([account.guid, accountToMerge.guid]).finally(() =>\n setShouldShowAccountMergeDrawer(false),\n )\n }\n\n return (\n <>\n <ListSubheader sx={{ backgroundColor: 'transparent', mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.actions}\n </Text>\n </ListSubheader>\n\n <AccountActionsRow\n ariaPressed={account.is_hidden}\n onClick={() => {\n handleUpdateAccount({ is_hidden: !account.is_hidden })\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_HIDE, { account_guid: account.guid })\n }}\n primaryText={account.is_hidden ? accountsCopy.unhide_account : accountsCopy.hide_Account}\n secondaryText={\n account.is_hidden ? accountsCopy.include_this_account : accountsCopy.exclude_this_account\n }\n >\n <Switch aria-hidden={true} checked={account.is_hidden} tabIndex={-1} />\n </AccountActionsRow>\n\n <AccountActionsRow\n onClick={() => {\n setShouldShowCloseAccountModal(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_CLOSED, {\n account_guid: account.guid,\n })\n }}\n primaryText={account.is_closed ? accountsCopy.mark_as_open : accountsCopy.mark_as_closed}\n secondaryText={\n account.is_closed\n ? accountsCopy.this_will_set_the_closed_account\n : accountsCopy.this_will_set_the_account_balance_to_0\n }\n >\n <Icon name=\"chevron_right\" />\n <div onClick={(e) => e.stopPropagation()}>\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: account.is_closed\n ? accountsCopy.confirm_mark_as_open\n : accountsCopy.confirm_mark_closed,\n }}\n isOpen={shouldShowCloseAccountModal}\n onClose={() => {\n setShouldShowCloseAccountModal(false)\n }}\n onPrimaryAction={() => handleUpdateAccount({ is_closed: !account.is_closed })}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n account.is_closed\n ? accountsCopy.this_will_resume_updating_the_balance\n : accountsCopy.this_will_set_the_balance_of_your_account,\n account.name,\n ) as string\n }\n </Text>\n </Dialog>\n </div>\n </AccountActionsRow>\n\n {mergeableAccounts.length > 0 && (\n <AccountActionsRow\n isLast={true}\n onClick={() => {\n setShouldShowAccountMergeDrawer(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE, {\n account_guid: account.guid,\n })\n }}\n primaryText={accountsCopy.mark_as_duplicate}\n secondaryText={accountsCopy.if_a_connected_account_is_showing_up_twice}\n >\n <Icon name=\"chevron_right\" />\n </AccountActionsRow>\n )}\n\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={shouldShowAccountMergeDrawer}\n onClose={() => setShouldShowAccountMergeDrawer(false)}\n title={accountsCopy.mark_as_duplicate}\n >\n <List>\n {mergeableAccounts.map((account: Account) => {\n const isLast = mergeableAccounts.indexOf(account) === mergeableAccounts.length - 1\n return (\n <AccountListItem\n account={account}\n key={account.guid}\n listItemProps={{\n sx: {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n },\n }}\n onRowClick={() => {\n setShouldShowMergeConfirmModal(true)\n setAccountToMerge(account)\n }}\n />\n )\n })}\n </List>\n {shouldShowMergeConfirmModal && (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: accountsCopy.confirm_merge,\n }}\n isOpen={shouldShowMergeConfirmModal}\n onClose={() => setShouldShowMergeConfirmModal(false)}\n onPrimaryAction={handleMergeAccounts}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n accountsCopy.this_means_accounts_will_be_merged,\n account.name,\n accountToMerge.name,\n ) as string\n }\n </Text>\n <Text color=\"error\" sx={{ mt: 24 }}>\n {accountsCopy.this_action_cannot_be_undone}\n </Text>\n </Dialog>\n )}\n </Drawer>\n </>\n )\n}\n\nexport default observer(AccountActions)\n","import { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { isToday } from 'date-fns/isToday'\nimport { isYesterday } from 'date-fns/isYesterday'\n\nimport { ConnectCopy, ConnectionStatusEnums, type Member } from '../../core'\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nexport interface ConnectionMessageObject {\n cta?: string\n main: string\n statusName: string\n title: string\n}\n\nexport const getConnectionMessages: any = (member: Member, copy: ConnectCopy) => {\n const { connection_messages } = copy\n\n switch (member.connection_status) {\n case ConnectionStatusEnums.CHALLENGED: {\n return {\n cta: connection_messages.challenged_cta,\n main: buildDynamicCopy(\n connection_messages.challenged_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.challenged_connection_title,\n }\n }\n case ConnectionStatusEnums.CLOSED: {\n return {\n main: connection_messages.closed_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.closed_connection_title,\n }\n }\n case ConnectionStatusEnums.DEGRADED: {\n return {\n main: connection_messages.degraded_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.degraded_connection_title,\n }\n }\n case ConnectionStatusEnums.DELAYED: {\n return {\n main: buildDynamicCopy(\n connection_messages.delayed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.delayed_connection_title,\n }\n }\n case ConnectionStatusEnums.DENIED: {\n return {\n cta: connection_messages.denied_cta,\n main: buildDynamicCopy(\n connection_messages.denied_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.denied_connection_title,\n }\n }\n case ConnectionStatusEnums.DISABLED: {\n return {\n main: connection_messages.disabled_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disabled_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONNECTED: {\n return {\n main: buildDynamicCopy(\n connection_messages.disconnected_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disconnected_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONTINUED: {\n return {\n main: connection_messages.discontinued_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.discontinued_connection_title,\n }\n }\n case ConnectionStatusEnums.EXPIRED: {\n return {\n cta: connection_messages.expired_cta,\n main: connection_messages.expired_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.expired_connection_title,\n }\n }\n case ConnectionStatusEnums.FAILED: {\n return {\n main: buildDynamicCopy(\n connection_messages.failed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.failed_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPAIRED: {\n return {\n cta: connection_messages.impaired_cta,\n main: buildDynamicCopy(\n connection_messages.impaired_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impaired_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPEDED: {\n return {\n main: buildDynamicCopy(\n connection_messages.impeded_connection_description,\n member.name,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impeded_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPORTED: {\n return {\n cta: connection_messages.imported_cta,\n main: buildDynamicCopy(\n connection_messages.imported_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.imported_connection_title,\n }\n }\n case ConnectionStatusEnums.LOCKED: {\n return {\n cta: connection_messages.locked_cta,\n main: buildDynamicCopy(\n connection_messages.locked_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.locked_connection_title,\n }\n }\n case ConnectionStatusEnums.PREVENTED: {\n return {\n cta: connection_messages.prevented_cta,\n main: connection_messages.prevented_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.prevented_connection_title,\n }\n }\n case ConnectionStatusEnums.REJECTED: {\n return {\n cta: connection_messages.rejected_cta,\n main: connection_messages.rejected_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.rejected_connection_title,\n }\n }\n default: {\n const lastUpdatedCopy = () => {\n const lastUpdated = member.successfully_aggregated_at\n ? fromUnixTime(member.successfully_aggregated_at)\n : undefined\n const lastUpdatedFormattedTime =\n lastUpdated && formatDate(lastUpdated, DATE_FORMATS_INTL.TIME_STAMP_HOUR_MINUTE)\n\n if (!lastUpdatedFormattedTime) return undefined\n if (isToday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.today, lastUpdatedFormattedTime)\n if (isYesterday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.yesterday, lastUpdatedFormattedTime)\n return buildDynamicCopy(\n copy.last_updated_at,\n formatDate(lastUpdated, DATE_FORMATS_INTL.MONTH_DAY_YEAR),\n lastUpdatedFormattedTime,\n )\n }\n return {\n statusName: copy.connection_statuses[6], // Connected\n title: lastUpdatedCopy(),\n }\n }\n }\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Icon, Text } from '@mxenabled/mxui'\nimport {\n CheckCircle as CheckCircleRoundedIcon,\n Error as ErrorIcon,\n Language as LanguageRoundedIcon,\n} from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\nimport { IconBacking, useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { getConnectionMessages } from '../../../utils/getConnectionMessages'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst iconStyle = {\n color: 'background.default',\n fontSize: 20,\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nconst AccountConnection = () => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n const {\n palette: { mode },\n } = useTheme()\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const statusMessages = getConnectionMessages(member, connectCopy)\n\n const status = NonConnectedStatuses.includes(member.connection_status)\n ? {\n color: 'error.main',\n ctaCopy: statusMessages.cta ?? '',\n icon: <ErrorIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: `${statusMessages.title}.`,\n }\n : {\n color: 'success.main',\n icon: <CheckCircleRoundedIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: statusMessages.title,\n }\n\n return (\n <>\n <ListSubheader sx={{ mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.connection_status}\n </Text>\n </ListSubheader>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: member.is_manual || !member.institution_url ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {member.is_manual || !status.ctaCopy ? (\n <Stack alignItems=\"center\" direction=\"row\" px={24} py={12}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={status.mainMessage} secondary={status.secondaryMessage} />\n </Stack>\n ) : (\n <ListItemButton onClick={() => setShouldShowConnectDrawer(true)}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText\n primary={status.mainMessage}\n secondary={\n status.secondaryMessage && (\n <>\n {status.secondaryMessage}{' '}\n <Text bold={true} sx={{ color: 'action.active' }} variant=\"caption\">\n {status.ctaCopy}\n </Text>\n </>\n )\n }\n />\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n )}\n </ListItem>\n\n {!member.is_manual && member.institution_url && (\n <>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <ListItemButton component=\"a\" href={member.institution_url} target=\"_blank\">\n <ListItemAvatar>\n <IconBacking\n backingSx={{\n backgroundColor: mode === 'light' ? 'grey.300' : 'grey.700',\n borderRadius: 1,\n }}\n size={32}\n >\n <LanguageRoundedIcon\n sx={{\n ...iconStyle,\n color: mode === 'light' ? 'grey.900' : 'common.white',\n }}\n />\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={member.name} secondary={member.institution_url} />\n <Icon name=\"launch\" />\n </ListItemButton>\n </ListItem>\n </>\n )}\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountConnection)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { addMonths } from 'date-fns/addMonths'\nimport { alpha } from '@mui/material/styles'\n\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport FormControl from '@mui/material/FormControl'\nimport InputLabel from '@mui/material/InputLabel'\nimport { LocalizationProvider } from '@mui/x-date-pickers-pro'\nimport MenuItem from '@mui/material/MenuItem'\nimport Select from '@mui/material/Select'\nimport TextField from '@mui/material/TextField'\n\nimport { CurrencyInput, Dialog, useAccountStore, useGlobalCopyStore } from '../../../../common'\nimport { type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { FieldType } from '../../../constants/Accounts'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ninterface AccountDetailEditProps {\n field: AccountField\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailEdit: React.FC<AccountDetailEditProps> = ({ field, isOpen, onClose }) => {\n const { updateAccount } = useAccountStore()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const [editedValue, setEditedValue] = React.useState<any>(account[field.name])\n const [errorMessage, setErrorMessage] = React.useState('')\n const [hasValidCurrencyInput, setHasValidCurrencyInput] = React.useState(true)\n\n const handleClose = () => {\n setEditedValue('')\n setErrorMessage('')\n onClose()\n }\n\n const getEditableField = () => {\n switch (field.type) {\n case FieldType.Select: {\n return (\n <FormControl fullWidth={true}>\n <InputLabel id={`${field.label}-select-label`}>{field.label}</InputLabel>\n <Select\n displayEmpty={true}\n id={`${field.label}-select`}\n label={field.label}\n labelId={`${field.label}-select-label`}\n onChange={(e) => setEditedValue(e.target.value)}\n slotProps={{\n input: {\n sx: {\n backgroundColor: 'background.paper',\n },\n },\n }}\n value={editedValue}\n >\n {!editedValue && (\n <MenuItem disabled={true} value=\"\">\n {field.placeholder}\n </MenuItem>\n )}\n {field.options?.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )\n }\n\n case FieldType.Currency: {\n return (\n <CurrencyInput\n amount={(editedValue as string | number) || ''}\n ariaLabel={field.placeholder}\n fullWidth={true}\n label={field.label}\n placeholder={field.placeholder}\n setAmount={setEditedValue}\n setHasValidInput={setHasValidCurrencyInput}\n />\n )\n }\n\n case FieldType.Date: {\n return (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DateCalendar\n maxDate={addMonths(new Date(), 1)}\n minDate={new Date()}\n onChange={(date: Date) => {\n if (account[field.name] && Number(account[field.name]) <= 31) {\n // gets and sets the day of the month to editedValue\n setEditedValue(date.getDate())\n } else {\n // the day of the month was already passed, so we set it directly to state\n setEditedValue(date)\n }\n }}\n sx={{\n '& .MuiPickersDay-today': {\n color: 'primary.lighter',\n },\n '& .MuiPickersArrowSwitcher-button': {\n color: 'primary.lighter',\n '&:hover': {\n backgroundColor: (theme) => alpha(theme.palette.primary.light, 0.1),\n },\n },\n }}\n views={['day']}\n />\n </LocalizationProvider>\n )\n }\n\n default: {\n return (\n <TextField\n defaultValue={account[field.name]}\n error={!!errorMessage}\n fullWidth={true}\n helperText={errorMessage}\n onChange={updateField}\n placeholder={field.placeholder}\n slotProps={{\n htmlInput: {\n 'aria-label': field.placeholder,\n },\n }}\n />\n )\n }\n }\n }\n\n const saveField = () => {\n // prevents any unnecessary api calls\n if (account[field.name] !== editedValue) {\n updateAccount({\n ...account,\n [field.name]: editedValue,\n })\n }\n handleClose()\n }\n\n const updateField = (e: React.ChangeEvent<HTMLInputElement>) => {\n setEditedValue(e.target.value)\n\n if (field.validation) {\n setErrorMessage(field.validation(e.target.value))\n }\n }\n\n return (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_aria,\n title: buildDynamicCopy(accountsCopy.edit_field, field.label) as string,\n }}\n disablePrimaryButton={!!errorMessage || !hasValidCurrencyInput}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={saveField}\n primaryText={accountsCopy.save}\n sx={{\n '& .MuiButton-root:focus-visible, & .MuiButton-root:focus': {\n outline: '2px solid',\n outlineColor: 'primary.main',\n outlineOffset: '2px',\n },\n }}\n >\n {getEditableField()}\n </Dialog>\n )\n}\n\nexport default observer(AccountDetailEdit)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountDetailEdit from './AccountDetailEdit'\n\nimport { getAccountDetailFields, type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useEvent, useGlobalCopyStore } from '../../../../common'\n\nconst AccountDetails = () => {\n const widgetProfile = window.app?.config\n\n const { onEvent } = useEvent()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const fields = getAccountDetailFields(account, accountsCopy)\n const canEdit =\n account.member_is_managed_by_user ||\n (!account.member_is_managed_by_user && widgetProfile.enable_renaming_home_accounts)\n\n const [showEditDialog, setShowEditDialog] = React.useState(false)\n const [fieldToEdit, setFieldToEdit] = React.useState<AccountField>(fields[0])\n\n const displayableFields = fields.filter(\n (field) => canEdit || account[field.name] || account[field.name] === 0,\n )\n\n return (\n <>\n {displayableFields.map((field) => {\n const hasValue = account[field.name] || account[field.name] === 0\n const isLast = displayableFields.indexOf(field) === displayableFields.length - 1\n\n const content = (\n <ListItemText\n disableTypography={true}\n primary={<Text sx={{ fontSize: 11 }}>{field.label}</Text>}\n secondary={\n <Text bold={true} sx={{ fontSize: 15 }}>\n {hasValue\n ? (field.valueFormatter(account[field.name]) as string)\n : field.placeholder}\n </Text>\n }\n />\n )\n\n return (\n <React.Fragment key={field.name}>\n {canEdit ? (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 0,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton\n onClick={() => {\n setFieldToEdit(field)\n setShowEditDialog(true)\n if (field?.event) onEvent(field.event, { account_guid: account.guid })\n }}\n >\n {content}\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n </ListItem>\n ) : (\n hasValue && (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 24,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {content}\n </ListItem>\n )\n )}\n </React.Fragment>\n )\n })}\n {showEditDialog && fieldToEdit && (\n <AccountDetailEdit\n field={fieldToEdit}\n isOpen={showEditDialog}\n onClose={() => setShowEditDialog(false)}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountDetails)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\n\nimport AccountActions from './AccountActions'\nimport AccountConnection from './AccountConnection'\nimport AccountDetails from './AccountDetails'\n\nimport { ANALYTICS_EVENTS, useEvent } from '../../../../common'\n\nconst AccountDetailsTab = () => {\n const { onEvent } = useEvent()\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW), [])\n\n return (\n <List>\n <AccountDetails />\n <AccountConnection />\n <AccountActions />\n </List>\n )\n}\n\nexport default observer(AccountDetailsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Alert from '@mui/material/Alert'\nimport AlertTitle from '@mui/material/AlertTitle'\nimport Link from '@mui/material/Link'\nimport Paper from '@mui/material/Paper'\n\nimport { Text } from '@mxenabled/mxui'\nimport { Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\n\nimport {\n getConnectionMessages,\n ConnectionMessageObject,\n} from '../../../utils/getConnectionMessages'\nimport { useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\ninterface ConnectionErrorMessageProps {\n setTabValue: (val: number) => void\n}\n\nconst ConnectionErrorMessage: React.FC<ConnectionErrorMessageProps> = ({ setTabValue }) => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const hasError =\n member.connection_status && NonConnectedStatuses.includes(member.connection_status)\n\n React.useEffect(() => {\n if (hasError) {\n setTabValue(1)\n }\n }, [hasError])\n\n if (!hasError) return\n\n const statusMessages: ConnectionMessageObject = getConnectionMessages(member, connectCopy)\n\n // eslint-disable-next-line consistent-return\n return (\n <>\n <Paper\n sx={{\n mb: 16,\n mt: 24,\n mx: 24,\n }}\n >\n <Alert\n icon={<ErrorIcon filled={true} />}\n role=\"none\"\n severity=\"error\"\n sx={{\n borderLeft: 5,\n borderTopLeftRadius: 6,\n borderBottomLeftRadius: 6,\n borderColor: 'error.main',\n color: 'text.primary',\n '&.MuiPaper-root': {\n backgroundColor: 'background.paper',\n },\n }}\n >\n {statusMessages.title && (\n <AlertTitle sx={{ fontWeight: 600, marginTop: 2 }} variant=\"body1\">\n {statusMessages.title}\n </AlertTitle>\n )}\n <Text component=\"p\" variant=\"subtitle2\">\n {statusMessages.main}\n </Text>\n {statusMessages.cta && (\n <Link\n onClick={() => setShouldShowConnectDrawer(true)}\n sx={{ fontSize: 15, fontWeight: 600, ml: 0 }}\n >\n {statusMessages.cta}\n </Link>\n )}\n </Alert>\n </Paper>\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(ConnectionErrorMessage)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { subDays, startOfToday, endOfToday } from 'date-fns'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { TransactionDetails, TransactionList } from '../../../../transactions'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst TransactionsTab = () => {\n const [guid, setGuid] = React.useState('')\n\n const { onEvent } = useEvent()\n const { selectedAccount } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { isTransactionDataLoaded, loadTransactionData, setFilter, sortedTransactions } =\n useTransactionStore()\n\n React.useEffect(() => {\n if (!isTransactionDataLoaded) {\n loadTransactionData().finally()\n }\n }, [])\n\n const transaction = React.useMemo(\n () => sortedTransactions.find((t) => t.guid === guid),\n [guid, sortedTransactions],\n )\n\n React.useEffect(() => {\n setFilter({\n dateRange: { start: subDays(startOfToday(), 90), end: endOfToday() },\n accounts: [selectedAccount.guid],\n })\n }, [selectedAccount])\n\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW_TRANSACTIONS), [])\n\n return (\n <>\n <TransactionList onClick={setGuid} />\n {transaction && (\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={!!guid}\n onClose={() => setGuid('')}\n title={accountsCopy.transaction_drawer_title}\n >\n <TransactionDetails transaction={transaction} />\n </Drawer>\n )}\n </>\n )\n}\n\nexport default observer(TransactionsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { TabContentContainer, useGlobalCopyStore } from '../../../../common'\n\nimport AccountDetailsTab from './AccountDetailsTab'\nimport ConnectionErrorMessage from './ConnectionErrorMessage'\nimport TransactionsTab from '../Transactions/TransactionsTab'\n\nconst AccountDetailsContent = () => {\n const [tabValue, setTabValue] = React.useState(0)\n\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <>\n <ConnectionErrorMessage setTabValue={setTabValue} />\n\n <Tabs\n aria-label={accountsCopy.transactions_and_details_aria}\n centered={true}\n onChange={(_, val) => setTabValue(val)}\n textColor=\"primary\"\n value={tabValue}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"transaction-details-tabpanel-0\"\n id=\"transaction-details-tab-0\"\n label={accountsCopy.transactions}\n />\n <Tab\n aria-controls=\"account-details-tabpanel-1\"\n id=\"account-details-tab-1\"\n label={accountsCopy.account_details}\n />\n </Tabs>\n\n <TabContentContainer index={0} name=\"transaction-details\" value={tabValue}>\n <TransactionsTab />\n </TabContentContainer>\n\n <TabContentContainer index={1} name=\"account-details\" value={tabValue}>\n <AccountDetailsTab />\n </TabContentContainer>\n </>\n )\n}\n\nexport default observer(AccountDetailsContent)\n","import { Drawer, useGlobalCopyStore } from '../../../../common'\nimport TrendsChart from '../../../../trends/components/TrendsChart'\n\nimport AccountDetailsContent from './AccountDetailsContent'\nimport AccountDetailsHeader from './AccountDetailsHeader'\n\ninterface AccountDetailsDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailsDrawer = ({ isOpen, onClose }: AccountDetailsDrawerProps) => {\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <Drawer\n ariaLabelClose={accountsCopy.close_account_details_aria}\n isOpen={isOpen}\n onClose={onClose}\n title={accountsCopy.account_details}\n >\n <AccountDetailsHeader ChartComponent={TrendsChart} />\n\n <AccountDetailsContent />\n </Drawer>\n )\n}\n\nexport default AccountDetailsDrawer\n"],"names":["getDatasets","totals","accountType","incomeData","INCOME_ACCOUNT_TYPES","getIncomeTotals","paymentData","PAYMENT_ACCOUNT_TYPES","getPaymentTotals","spendingData","SPENDING_ACCOUNT_TYPES","getSpendingTotals","data","getLabels","datasets","copy","dataA","dataB","credits","debits","labels","lastIncome","lastPayment","lastSpending","TrendsChart","theme","useTheme","selectedAccount","useAccountUiStore","monthlyCategoryTotals","useCategoryStore","trendsCopy","useGlobalCopyStore","colors","isLoan","AccountType","jsx","LineChart","TrendsChart$1","observer","AccountActionsRow","ariaPressed","children","isLast","onClick","primaryText","secondaryText","ListItem","jsxs","ListItemButton","ListItemText","useGetMergeableAccounts","accounts","useAccountStore","selectedMember","account","iconStyle","ErrorStatus","size","IconBacking","ErrorIcon","AccountListItem","onRowClick","listItemProps","shouldShowConnectionStatus","displayName","useAccountDisplayName","config","useAppConfig","accountsCopy","firstSubtitle","firstValue","secondSubtitle","secondValue","getAccountBalanceDetails","statusIcon","ConnectionStatus","content","Fragment","ListItemAvatar","Badge","InstitutionLogo","Text","Box","formatCurrency","AccountListItem$1","AccountActions","shouldShowCloseAccountModal","setShouldShowCloseAccountModal","React","shouldShowAccountMergeDrawer","setShouldShowAccountMergeDrawer","shouldShowMergeConfirmModal","setShouldShowMergeConfirmModal","accountToMerge","setAccountToMerge","mergeAccounts","updateAccount","mergeableAccounts","onEvent","useEvent","modifyTransactionByAccountGuid","useTransactionStore","handleUpdateAccount","updatedValue","handleMergeAccounts","ListSubheader","ANALYTICS_EVENTS","Switch","Icon","e","Dialog","buildDynamicCopy","Drawer","List","AccountActions$1","getConnectionMessages","member","connection_messages","ConnectionStatusEnums","lastUpdatedCopy","lastUpdated","fromUnixTime","lastUpdatedFormattedTime","formatDate","DATE_FORMATS_INTL","isToday","isYesterday","AccountConnection","shouldShowConnectDrawer","setShouldShowConnectDrawer","mode","connectCopy","statusMessages","status","NonConnectedStatuses","CheckCircleRoundedIcon","Stack","LanguageRoundedIcon","ConnectDrawer","AccountConnection$1","AccountDetailEdit","field","isOpen","onClose","editedValue","setEditedValue","errorMessage","setErrorMessage","hasValidCurrencyInput","setHasValidCurrencyInput","handleClose","getEditableField","FieldType","FormControl","InputLabel","Select","MenuItem","option","CurrencyInput","LocalizationProvider","AdapterDateFns","DateCalendar","addMonths","date","alpha","TextField","updateField","saveField","AccountDetailEdit$1","AccountDetails","widgetProfile","fields","getAccountDetailFields","canEdit","showEditDialog","setShowEditDialog","fieldToEdit","setFieldToEdit","displayableFields","hasValue","AccountDetails$1","AccountDetailsTab","AccountDetailsTab$1","ConnectionErrorMessage","setTabValue","hasError","Paper","Alert","AlertTitle","Link","ConnectionErrorMessage$1","TransactionsTab","guid","setGuid","isTransactionDataLoaded","loadTransactionData","setFilter","sortedTransactions","transaction","t","subDays","startOfToday","endOfToday","TransactionList","TransactionDetails","TransactionsTab$1","AccountDetailsContent","tabValue","Tabs","_","val","Tab","TabContentContainer","AccountDetailsContent$1","AccountDetailsDrawer","AccountDetailsHeader"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,KAAc,CAClBC,GACAC,MACuB;AACvB,QAAMC,IAAaC,GAAqB,SAASF,CAAW,IAAIG,GAAgBJ,CAAM,IAAI,CAAA,GACpFK,IAAcC,GAAsB,SAASL,CAAW,IAAIM,GAAiBP,CAAM,IAAI,CAAA,GACvFQ,IAAeC,GAAuB,SAASR,CAAW,IAAIS,GAAkBV,CAAM,IAAI,CAAA;AAGhG,SAAO,CAACE,GAAYG,GAAaG,CAAY,EAAE,OAAO,CAACG,MAASA,EAAK,SAAS,CAAC;AACjF,GAEMC,KAAY,CAACC,GAA8BZ,GAA0Ba,MAAqB;AAC9F,QAAM,CAACC,GAAOC,CAAK,IAAIH,GACjBI,IAAUF,GACVG,IAASF,KAASD,GAClBI,IAA2B,CAAA;AAEjC,MAAIF,KAAWC,KAAUf,GAAqB,SAASF,CAAW,GAAG;AACnE,UAAMmB,IAAaH,EAAQA,EAAQ,SAAS,CAAC,EAAE;AAC/C,IAAAE,EAAO,KAAK,EAAE,OAAOL,EAAK,cAAc,QAAQM,GAAY;AAAA,EAC9D,WAAWd,GAAsB,SAASL,CAAW,GAAG;AACtD,UAAMoB,IAAcJ,EAAQA,EAAQ,SAAS,CAAC,EAAE;AAChD,IAAAE,EAAO,KAAK,EAAE,OAAOL,EAAK,gBAAgB,QAAQO,GAAa;AAAA,EACjE;AAEA,MAAIH,KAAUT,GAAuB,SAASR,CAAW,GAAG;AAC1D,UAAMqB,IAAeJ,EAAOA,EAAO,SAAS,CAAC,EAAE;AAC/C,IAAAC,EAAO,KAAK,EAAE,OAAOL,EAAK,gBAAgB,QAAQQ,GAAc;AAAA,EAClE;AAEA,SAAOH;AACT,GAEMI,KAAc,MAAM;AACxB,QAAMC,IAAQC,EAAA,GACR,EAAE,iBAAAC,EAAA,IAAoBC,EAAA,GACtB,EAAE,uBAAAC,EAAA,IAA0BC,GAAA,GAC5B,EAAE,QAAQC,EAAA,IAAeC,EAAA,GAEzBC,IAAS,CAACR,EAAM,QAAQ,OAAO,QAAQA,EAAM,QAAQ,OAAO,MAAM,GAClEX,IAAWd,GAAY6B,GAAuBF,EAAgB,YAAY,GAC1EP,IAASP,GAAUC,GAAUa,EAAgB,cAAcI,CAAU,GACrEG,IAAS,CAACC,EAAY,MAAMA,EAAY,QAAQ,EAAE,SAASR,EAAgB,YAAY;AAE7F,SACE,gBAAAS,EAAC,OAAA,EAAI,eAAY,eACf,UAAA,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAAJ;AAAA,MACA,UAAAnB;AAAA,MACA,QAAQ;AAAA,MACR,QAAAM;AAAA,MACA,aAAac;AAAA,MACb,mBAAmB;AAAA,MACnB,UAAUA;AAAA,MACV,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,sBAAqB;AAAA,IAAA;AAAA,EAAA,GAEzB;AAEJ,GAEAI,KAAeC,EAASf,EAAW,GCzE7BgB,IAA+E,CAAC;AAAA,EACpF,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AACF,MAEI,gBAAAV;AAAA,EAACW;AAAA,EAAA;AAAA,IACC,IAAI;AAAA,MACF,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,YAAY;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAMJ,IAAS,IAAI;AAAA,QACnB,cAAc;AAAA,QACd,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,IAGF,UAAA,gBAAAK,EAACC,GAAA,EAAe,gBAAcR,GAAa,SAAAG,GACzC,UAAA;AAAA,MAAA,gBAAAR,EAACc,GAAA,EAAa,SAASL,GAAa,WAAWC,GAAe;AAAA,MAC7DJ;AAAA,IAAA,EAAA,CACH;AAAA,EAAA;AAAA,GCpCOS,KAA0B,MAAM;AAC3C,QAAM,EAAE,UAAAC,EAAA,IAAaC,EAAA,GACf,EAAE,iBAAA1B,GAAiB,gBAAA2B,EAAA,IAAmB1B,EAAA;AAC5C,SAAOwB,EAAS;AAAA,IACd,CAACG,MACCA,EAAQ,gBAAgBD,EAAe,QACvCA,EAAe,8BACfC,EAAQ,SAAS5B,EAAgB;AAAA,EAAA;AAEvC,GCJM6B,KAAY;AAAA,EAChB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,QAAQ;AACV,GAQaC,KAAc,CAAC,EAAE,MAAAC,IAAO,SACnC,gBAAAtB,EAACuB,GAAA,EAAY,MAAAD,GACX,UAAA,gBAAAtB,EAACwB,GAAA,EAAU,OAAM,SAAQ,QAAQ,IAAM,IAAI,EAAE,UAAUF,GAAM,GAAGF,KAAU,CAAG,GAC/E,GCIIK,KAAkD,CAAC;AAAA,EACvD,SAAAN;AAAA,EACA,YAAAO;AAAA,EACA,eAAAC;AAAA,EACA,4BAAAC,IAA6B;AAC/B,MAAM;AACJ,QAAMvC,IAAQC,EAAA,GACRuC,IAAcC,GAAsBX,CAAO,GAC3C,EAAE,QAAAY,EAAA,IAAWC,GAAA,GACb,EAAE,UAAUC,EAAA,IAAiBrC,EAAA,GAC7B,EAAE,eAAAsC,GAAe,YAAAC,GAAY,gBAAAC,GAAgB,aAAAC,MAAgBC;AAAA,IACjEnB;AAAA,IACAc;AAAA,IACAF,EAAO;AAAA,EAAA;AAGT,MAAIQ;AACJ,GACEpB,EAAQ,qBAAqBqB,EAAiB,SAC9CrB,EAAQ,qBAAqBqB,EAAiB,iBAE9CD,IAAa,gBAAAvC,EAACqB,IAAA,EAAY,MAAM,GAAA,CAAI;AAGtC,QAAMoB,IACJ,gBAAA7B,EAAA8B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA1C,EAAC2C,GAAA,EACC,UAAA,gBAAA3C;AAAA,MAAC4C;AAAA,MAAA;AAAA,QACC,cAAchB,IAA6BW,IAAa;AAAA,QACxD,IAAI;AAAA,UACF,qBAAqB;AAAA,YACnB,OAAO;AAAA,UAAA;AAAA,QACT;AAAA,QAGF,4BAACM,IAAA,EAAgB,KAAI,MAAK,iBAAiB1B,EAAQ,oBAAoB,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA,GAE/E;AAAA,IAEA,gBAAAnB;AAAA,MAACc;AAAA,MAAA;AAAA,QACC,mBAAmB;AAAA,QACnB,SACE,gBAAAF;AAAA,UAACkC;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,OAAO3B,EAAQ,YAAY9B,EAAM,QAAQ,KAAK,YAAY;AAAA,YAC1D,SAAQ;AAAA,YAEP,UAAA;AAAA,cAAA,GAAGwC,CAAW,IAAIV,EAAQ,iBAAiB,IAAIA,EAAQ,cAAc,KAAK,EAAE;AAAA,cAAI;AAAA,cAChFA,EAAQ,aAAa,CAACA,EAAQ,aAAac,EAAa;AAAA,cACxDd,EAAQ,aAAac,EAAa;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGvC,WACE,gBAAArB,EAAA8B,GAAA,EACE,UAAA;AAAA,UAAA,gBAAA9B,EAACmC,GAAA,EAAI,IAAI,EAAE,YAAY,UAAU,SAAS,QAAQ,gBAAgB,gBAAA,GAChE,UAAA;AAAA,YAAA,gBAAA/C,EAAC8C,GAAA,EAAK,SAAQ,WAAW,UAAAZ,GAAc;AAAA,YACvC,gBAAAlC,EAAC8C,KAAK,MAAM,IAAM,SAAQ,SACvB,UAAAE,GAAeb,GAAY,QAAQ,EAAA,CACtC;AAAA,UAAA,GACF;AAAA,UACA,gBAAAvB,EAACmC,GAAA,EAAI,IAAI,EAAE,YAAY,UAAU,SAAS,QAAQ,gBAAgB,gBAAA,GAChE,UAAA;AAAA,YAAA,gBAAA/C,EAAC8C,GAAA,EAAK,SAAQ,WAAW,UAAAV,GAAe;AAAA,8BACvCU,GAAA,EAAK,IAAG,QAAO,SAAQ,WACrB,UAAAT,EAAA,CACH;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,GACF;AAGF,SACE,gBAAArC;AAAA,IAACW;AAAA,IAAA;AAAA,MACE,GAAGgB;AAAA,MACJ,IAAI;AAAA,QACF,iBAAiB;AAAA,QACjB,OAAOR,EAAQ,YAAY,aAAa;AAAA,QACxC,GAAGQ,GAAe;AAAA,MAAA;AAAA,MAGnB,UAAAD,IACC,gBAAA1B,EAACa,GAAA,EAAe,YAAW,cAAa,SAASa,GAAY,IAAI,EAAE,IAAI,GAAA,GACpE,aACH,IAEAe;AAAA,IAAA;AAAA,EAAA;AAIR,GAEAQ,KAAe9C,EAASsB,EAAe,GC3FjCyB,KAAiB,MAAM;AAC3B,QAAM,CAACC,GAA6BC,CAA8B,IAAIC,EAAM,SAAS,EAAK,GACpF,CAACC,GAA8BC,CAA+B,IAAIF,EAAM,SAAS,EAAK,GACtF,CAACG,GAA6BC,CAA8B,IAAIJ,EAAM,SAAS,EAAK,GACpF,CAACK,GAAgBC,CAAiB,IAAIN,EAAM,SAAS,CAAA,CAAa,GAElE,EAAE,iBAAiBlC,EAAA,IAAY3B,EAAA,GAC/B,EAAE,eAAAoE,GAAe,eAAAC,EAAA,IAAkB5C,EAAA,GACnC,EAAE,UAAUgB,EAAA,IAAiBrC,EAAA,GAC7BkE,IAAoB/C,GAAA,GACpB,EAAE,SAAAgD,EAAA,IAAYC,EAAA,GACd,EAAE,gCAAAC,EAAA,IAAmCC,EAAA,GAErCC,IAAsB,OAAOC,MAA+B;AAChE,UAAMP,EAAc;AAAA,MAClB,GAAG1C;AAAA,MACH,GAAGiD;AAAA,IAAA,CACJ,GACG,eAAeA,KAAgBA,EAAa,cAAcjD,EAAQ,aACpE8C,EAA+B9C,EAAQ,MAAM,EAAE,iBAAiBiD,EAAa,WAAW;AAAA,EAC5F,GAEMC,IAAsB,MAAM;AAChC,IAAAT,EAAc,CAACzC,EAAQ,MAAMuC,EAAe,IAAI,CAAC,EAAE;AAAA,MAAQ,MACzDH,EAAgC,EAAK;AAAA,IAAA;AAAA,EAEzC;AAEA,SACE,gBAAA3C,EAAA8B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA1C,EAACsE,IAAA,EAAc,IAAI,EAAE,iBAAiB,eAAe,IAAI,GAAG,IAAI,IAAI,IAAI,EAAA,GACtE,UAAA,gBAAAtE,EAAC8C,GAAA,EAAK,MAAM,IAAM,WAAU,MAAK,SAAQ,WACtC,UAAAb,EAAa,QAAA,CAChB,EAAA,CACF;AAAA,IAEA,gBAAAjC;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,aAAae,EAAQ;AAAA,QACrB,SAAS,MAAM;AACb,UAAAgD,EAAoB,EAAE,WAAW,CAAChD,EAAQ,WAAW,GACrD4C,EAAQQ,EAAiB,4BAA4B,EAAE,cAAcpD,EAAQ,MAAM;AAAA,QACrF;AAAA,QACA,aAAaA,EAAQ,YAAYc,EAAa,iBAAiBA,EAAa;AAAA,QAC5E,eACEd,EAAQ,YAAYc,EAAa,uBAAuBA,EAAa;AAAA,QAGvE,UAAA,gBAAAjC,EAACwE,MAAO,eAAa,IAAM,SAASrD,EAAQ,WAAW,UAAU,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAGvE,gBAAAP;AAAA,MAACR;AAAA,MAAA;AAAA,QACC,SAAS,MAAM;AACb,UAAAgD,EAA+B,EAAI,GACnCW,EAAQQ,EAAiB,mCAAmC;AAAA,YAC1D,cAAcpD,EAAQ;AAAA,UAAA,CACvB;AAAA,QACH;AAAA,QACA,aAAaA,EAAQ,YAAYc,EAAa,eAAeA,EAAa;AAAA,QAC1E,eACEd,EAAQ,YACJc,EAAa,mCACbA,EAAa;AAAA,QAGnB,UAAA;AAAA,UAAA,gBAAAjC,EAACyE,GAAA,EAAK,MAAK,gBAAA,CAAgB;AAAA,4BAC1B,OAAA,EAAI,SAAS,CAACC,MAAMA,EAAE,mBACrB,UAAA,gBAAA1E;AAAA,YAAC2E;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,gBACJ,YAAY1C,EAAa;AAAA,gBACzB,OAAOd,EAAQ,YACXc,EAAa,uBACbA,EAAa;AAAA,cAAA;AAAA,cAEnB,QAAQkB;AAAA,cACR,SAAS,MAAM;AACb,gBAAAC,EAA+B,EAAK;AAAA,cACtC;AAAA,cACA,iBAAiB,MAAMe,EAAoB,EAAE,WAAW,CAAChD,EAAQ,WAAW;AAAA,cAE5E,UAAA,gBAAAnB,EAAC8C,GAAA,EAAK,UAAU,IAEZ,UAAA8B;AAAA,gBACEzD,EAAQ,YACJc,EAAa,wCACbA,EAAa;AAAA,gBACjBd,EAAQ;AAAA,cAAA,EACV,CAEJ;AAAA,YAAA;AAAA,UAAA,EACF,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGD2C,EAAkB,SAAS,KAC1B,gBAAA9D;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,SAAS,MAAM;AACb,UAAAmD,EAAgC,EAAI,GACpCQ,EAAQQ,EAAiB,sCAAsC;AAAA,YAC7D,cAAcpD,EAAQ;AAAA,UAAA,CACvB;AAAA,QACH;AAAA,QACA,aAAac,EAAa;AAAA,QAC1B,eAAeA,EAAa;AAAA,QAE5B,UAAA,gBAAAjC,EAACyE,GAAA,EAAK,MAAK,gBAAA,CAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAI/B,gBAAA7D;AAAA,MAACiE;AAAA,MAAA;AAAA,QACC,gBAAgB5C,EAAa;AAAA,QAC7B,QAAQqB;AAAA,QACR,SAAS,MAAMC,EAAgC,EAAK;AAAA,QACpD,OAAOtB,EAAa;AAAA,QAEpB,UAAA;AAAA,UAAA,gBAAAjC,EAAC8E,IAAA,EACE,UAAAhB,EAAkB,IAAI,CAAC3C,MAAqB;AAC3C,kBAAMZ,KAASuD,EAAkB,QAAQ3C,CAAO,MAAM2C,EAAkB,SAAS;AACjF,mBACE,gBAAA9D;AAAA,cAACyB;AAAAA,cAAA;AAAA,gBACC,SAASN;AAAAA,gBAET,eAAe;AAAA,kBACb,IAAI;AAAA,oBACF,UAAU;AAAA,oBACV,YAAY;AAAA,sBACV,SAAS;AAAA,sBACT,UAAU;AAAA,sBACV,QAAQ;AAAA,sBACR,OAAO;AAAA,sBACP,MAAMZ,KAAS,IAAI;AAAA,sBACnB,cAAc;AAAA,sBACd,aAAa;AAAA,oBAAA;AAAA,kBACf;AAAA,gBACF;AAAA,gBAEF,YAAY,MAAM;AAChB,kBAAAkD,EAA+B,EAAI,GACnCE,EAAkBxC,CAAO;AAAA,gBAC3B;AAAA,cAAA;AAAA,cAlBKA,EAAQ;AAAA,YAAA;AAAA,UAqBnB,CAAC,EAAA,CACH;AAAA,UACCqC,KACC,gBAAA5C;AAAA,YAAC+D;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,gBACJ,YAAY1C,EAAa;AAAA,gBACzB,OAAOA,EAAa;AAAA,cAAA;AAAA,cAEtB,QAAQuB;AAAA,cACR,SAAS,MAAMC,EAA+B,EAAK;AAAA,cACnD,iBAAiBY;AAAA,cAEjB,UAAA;AAAA,gBAAA,gBAAArE,EAAC8C,GAAA,EAAK,UAAU,IAEZ,UAAA8B;AAAA,kBACE3C,EAAa;AAAA,kBACbd,EAAQ;AAAA,kBACRuC,EAAe;AAAA,gBAAA,GAGrB;AAAA,gBACA,gBAAA1D,EAAC8C,GAAA,EAAK,OAAM,SAAQ,IAAI,EAAE,IAAI,GAAA,GAC3B,UAAAb,EAAa,6BAAA,CAChB;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ,GAEA8C,KAAe5E,EAAS+C,EAAc,GC1LzB8B,KAA6B,CAACC,GAAgBtG,MAAsB;AAC/E,QAAM,EAAE,qBAAAuG,MAAwBvG;AAEhC,UAAQsG,EAAO,mBAAA;AAAA,IACb,KAAKE,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMN;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMD,EAAoB;AAAA,QAC1B,YAAYvG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMD,EAAoB;AAAA,QAC1B,YAAYvG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMP;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMN;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMD,EAAoB;AAAA,QAC1B,YAAYvG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMP;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMD,EAAoB;AAAA,QAC1B,YAAYvG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMA,EAAoB;AAAA,QAC1B,YAAYvG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMP;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMN;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,MAAMP;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,UACPA,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMN;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMN;AAAA,UACJM,EAAoB;AAAA,UACpBD,EAAO;AAAA,QAAA;AAAA,QAET,YAAYtG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMA,EAAoB;AAAA,QAC1B,YAAYvG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,KAAKC,EAAsB;AACzB,aAAO;AAAA,QACL,KAAKD,EAAoB;AAAA,QACzB,MAAMA,EAAoB;AAAA,QAC1B,YAAYvG,EAAK,oBAAoBsG,EAAO,iBAAiB;AAAA,QAC7D,OAAOC,EAAoB;AAAA,MAAA;AAAA,IAG/B,SAAS;AACP,YAAME,IAAkB,MAAM;AAC5B,cAAMC,IAAcJ,EAAO,6BACvBK,GAAaL,EAAO,0BAA0B,IAC9C,QACEM,IACJF,KAAeG,EAAWH,GAAaI,EAAkB,sBAAsB;AAEjF,YAAKF;AACL,iBAAIG,GAAQL,CAAW,IACdT,EAAiBjG,EAAK,iBAAiBA,EAAK,OAAO4G,CAAwB,IAChFI,GAAYN,CAAW,IAClBT,EAAiBjG,EAAK,iBAAiBA,EAAK,WAAW4G,CAAwB,IACjFX;AAAA,YACLjG,EAAK;AAAA,YACL6G,EAAWH,GAAaI,EAAkB,cAAc;AAAA,YACxDF;AAAA,UAAA;AAAA,MAEJ;AACA,aAAO;AAAA,QACL,YAAY5G,EAAK,oBAAoB,CAAC;AAAA;AAAA,QACtC,OAAOyG,EAAA;AAAA,MAAgB;AAAA,IAE3B;AAAA,EAAA;AAEJ,GCxKMhE,IAAY;AAAA,EAChB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,QAAQ;AACV,GAEMwE,KAAoB,MAAM;AAC9B,QAAM,CAACC,GAAyBC,CAA0B,IAAIzC,EAAM,SAAS,EAAK,GAC5E;AAAA,IACJ,SAAS,EAAE,MAAA0C,EAAA;AAAA,EAAK,IACdzG,EAAA,GACE,EAAE,gBAAgB2F,EAAA,IAAWzF,EAAA,GAC7B,EAAE,UAAUyC,GAAc,SAAS+D,EAAA,IAAgBpG,EAAA,GAEnDqG,IAAiBjB,GAAsBC,GAAQe,CAAW,GAE1DE,IAASC,EAAqB,SAASlB,EAAO,iBAAiB,IACjE;AAAA,IACE,OAAO;AAAA,IACP,SAASgB,EAAe,OAAO;AAAA,IAC/B,wBAAOzE,GAAA,EAAU,QAAQ,IAAM,IAAI,EAAE,GAAGJ,EAAA,GAAa;AAAA,IACrD,aAAa6E,EAAe;AAAA,IAC5B,kBAAkB,GAAGA,EAAe,KAAK;AAAA,EAAA,IAE3C;AAAA,IACE,OAAO;AAAA,IACP,wBAAOG,IAAA,EAAuB,QAAQ,IAAM,IAAI,EAAE,GAAGhF,EAAA,GAAa;AAAA,IAClE,aAAa6E,EAAe;AAAA,IAC5B,kBAAkBA,EAAe;AAAA,EAAA;AAGvC,SACE,gBAAArF,EAAA8B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA1C,EAACsE,IAAA,EAAc,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAA,GACtC,4BAACxB,GAAA,EAAK,MAAM,IAAM,WAAU,MAAK,SAAQ,WACtC,UAAAb,EAAa,mBAChB,EAAA,CACF;AAAA,IACA,gBAAAjC;AAAA,MAACW;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,YAAY;AAAA,YACV,SAAS;AAAA,YACT,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAMsE,EAAO,aAAa,CAACA,EAAO,kBAAkB,IAAI;AAAA,YACxD,cAAc;AAAA,YACd,aAAa;AAAA,UAAA;AAAA,QACf;AAAA,QAGD,UAAAA,EAAO,aAAa,CAACiB,EAAO,UAC3B,gBAAAtF,EAACyF,IAAA,EAAM,YAAW,UAAS,WAAU,OAAM,IAAI,IAAI,IAAI,IACrD,UAAA;AAAA,UAAA,gBAAArG,EAAC2C,GAAA,EACC,UAAA,gBAAA3C,EAACuB,GAAA,EAAY,WAAW,EAAE,iBAAiB2E,EAAO,OAAO,cAAc,KAAK,MAAM,IAC/E,UAAAA,EAAO,MACV,GACF;AAAA,4BACCpF,GAAA,EAAa,SAASoF,EAAO,aAAa,WAAWA,EAAO,iBAAA,CAAkB;AAAA,QAAA,GACjF,IAEA,gBAAAtF,EAACC,GAAA,EAAe,SAAS,MAAMiF,EAA2B,EAAI,GAC5D,UAAA;AAAA,UAAA,gBAAA9F,EAAC2C,GAAA,EACC,UAAA,gBAAA3C,EAACuB,GAAA,EAAY,WAAW,EAAE,iBAAiB2E,EAAO,OAAO,cAAc,KAAK,MAAM,IAC/E,UAAAA,EAAO,MACV,GACF;AAAA,UACA,gBAAAlG;AAAA,YAACc;AAAA,YAAA;AAAA,cACC,SAASoF,EAAO;AAAA,cAChB,WACEA,EAAO,oBACL,gBAAAtF,EAAA8B,GAAA,EACG,UAAA;AAAA,gBAAAwD,EAAO;AAAA,gBAAkB;AAAA,gBAC1B,gBAAAlG,EAAC8C,GAAA,EAAK,MAAM,IAAM,IAAI,EAAE,OAAO,gBAAA,GAAmB,SAAQ,WACvD,UAAAoD,EAAO,QAAA,CACV;AAAA,cAAA,EAAA,CACF;AAAA,YAAA;AAAA,UAAA;AAAA,UAIN,gBAAAlG,EAACyE,GAAA,EAAK,MAAK,gBAAA,CAAgB;AAAA,QAAA,EAAA,CAC7B;AAAA,MAAA;AAAA,IAAA;AAAA,IAIH,CAACQ,EAAO,aAAaA,EAAO,mBAC3B,gBAAAjF,EAAA0C,GAAA,EACE,UAAA,gBAAA1C;AAAA,MAACW;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,aAAa;AAAA,QAAA;AAAA,QAGf,UAAA,gBAAAC,EAACC,KAAe,WAAU,KAAI,MAAMoE,EAAO,iBAAiB,QAAO,UACjE,UAAA;AAAA,UAAA,gBAAAjF,EAAC2C,GAAA,EACC,UAAA,gBAAA3C;AAAA,YAACuB;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,gBACT,iBAAiBwE,MAAS,UAAU,aAAa;AAAA,gBACjD,cAAc;AAAA,cAAA;AAAA,cAEhB,MAAM;AAAA,cAEN,UAAA,gBAAA/F;AAAA,gBAACsG;AAAAA,gBAAA;AAAA,kBACC,IAAI;AAAA,oBACF,GAAGlF;AAAA,oBACH,OAAO2E,MAAS,UAAU,aAAa;AAAA,kBAAA;AAAA,gBACzC;AAAA,cAAA;AAAA,YACF;AAAA,UAAA,GAEJ;AAAA,4BACCjF,GAAA,EAAa,SAASmE,EAAO,MAAM,WAAWA,EAAO,iBAAiB;AAAA,UACvE,gBAAAjF,EAACyE,GAAA,EAAK,MAAK,SAAA,CAAS;AAAA,QAAA,EAAA,CACtB;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IAGDoB,KACC,gBAAA7F;AAAA,MAACuG;AAAA,MAAA;AAAA,QACC,iBAAiB,EAAE,qBAAqBtB,EAAO,KAAA;AAAA,QAC/C,SAAS,MAAMa,EAA2B,EAAK;AAAA,QAC/C,mBAAmBD;AAAA,QACnB,OAAO5D,EAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EACtB,GAEJ;AAEJ,GAEAuE,KAAerG,EAASyF,EAAiB,GCpInCa,KAAsD,CAAC,EAAE,OAAAC,GAAO,QAAAC,GAAQ,SAAAC,QAAc;AAC1F,QAAM,EAAE,eAAA/C,EAAA,IAAkB5C,EAAA,GACpB,EAAE,iBAAiBE,EAAA,IAAY3B,EAAA,GAC/B,EAAE,UAAUyC,EAAA,IAAiBrC,EAAA,GAE7B,CAACiH,GAAaC,CAAc,IAAIzD,EAAM,SAAclC,EAAQuF,EAAM,IAAI,CAAC,GACvE,CAACK,GAAcC,CAAe,IAAI3D,EAAM,SAAS,EAAE,GACnD,CAAC4D,GAAuBC,CAAwB,IAAI7D,EAAM,SAAS,EAAI,GAEvE8D,IAAc,MAAM;AACxB,IAAAL,EAAe,EAAE,GACjBE,EAAgB,EAAE,GAClBJ,EAAA;AAAA,EACF,GAEMQ,IAAmB,MAAM;AAC7B,YAAQV,EAAM,MAAA;AAAA,MACZ,KAAKW,EAAU;AACb,eACE,gBAAAzG,EAAC0G,IAAA,EAAY,WAAW,IACtB,UAAA;AAAA,UAAA,gBAAAtH,EAACuH,MAAW,IAAI,GAAGb,EAAM,KAAK,iBAAkB,YAAM,MAAA,CAAM;AAAA,UAC5D,gBAAA9F;AAAA,YAAC4G;AAAA,YAAA;AAAA,cACC,cAAc;AAAA,cACd,IAAI,GAAGd,EAAM,KAAK;AAAA,cAClB,OAAOA,EAAM;AAAA,cACb,SAAS,GAAGA,EAAM,KAAK;AAAA,cACvB,UAAU,CAAChC,MAAMoC,EAAepC,EAAE,OAAO,KAAK;AAAA,cAC9C,WAAW;AAAA,gBACT,OAAO;AAAA,kBACL,IAAI;AAAA,oBACF,iBAAiB;AAAA,kBAAA;AAAA,gBACnB;AAAA,cACF;AAAA,cAEF,OAAOmC;AAAA,cAEN,UAAA;AAAA,gBAAA,CAACA,uBACCY,GAAA,EAAS,UAAU,IAAM,OAAM,IAC7B,YAAM,YAAA,CACT;AAAA,gBAEDf,EAAM,SAAS,IAAI,CAACgB,MACnB,gBAAA1H,EAACyH,GAAA,EAA4B,OAAOC,EAAO,OACxC,UAAAA,EAAO,MAAA,GADKA,EAAO,KAEtB,CACD;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,GACF;AAAA,MAIJ,KAAKL,EAAU;AACb,eACE,gBAAArH;AAAA,UAAC2H;AAAA,UAAA;AAAA,YACC,QAASd,KAAmC;AAAA,YAC5C,WAAWH,EAAM;AAAA,YACjB,WAAW;AAAA,YACX,OAAOA,EAAM;AAAA,YACb,aAAaA,EAAM;AAAA,YACnB,WAAWI;AAAA,YACX,kBAAkBI;AAAA,UAAA;AAAA,QAAA;AAAA,MAKxB,KAAKG,EAAU;AACb,eACE,gBAAArH,EAAC4H,IAAA,EAAqB,aAAaC,IACjC,UAAA,gBAAA7H;AAAA,UAAC8H;AAAA,UAAA;AAAA,YACC,SAASC,GAAU,oBAAI,KAAA,GAAQ,CAAC;AAAA,YAChC,6BAAa,KAAA;AAAA,YACb,UAAU,CAACC,MAAe;AACxB,cAAI7G,EAAQuF,EAAM,IAAI,KAAK,OAAOvF,EAAQuF,EAAM,IAAI,CAAC,KAAK,KAExDI,EAAekB,EAAK,SAAS,IAG7BlB,EAAekB,CAAI;AAAA,YAEvB;AAAA,YACA,IAAI;AAAA,cACF,0BAA0B;AAAA,gBACxB,OAAO;AAAA,cAAA;AAAA,cAET,qCAAqC;AAAA,gBACnC,OAAO;AAAA,gBACP,WAAW;AAAA,kBACT,iBAAiB,CAAC3I,MAAU4I,GAAM5I,EAAM,QAAQ,QAAQ,OAAO,GAAG;AAAA,gBAAA;AAAA,cACpE;AAAA,YACF;AAAA,YAEF,OAAO,CAAC,KAAK;AAAA,UAAA;AAAA,QAAA,GAEjB;AAAA,MAIJ;AACE,eACE,gBAAAW;AAAA,UAACkI;AAAA,UAAA;AAAA,YACC,cAAc/G,EAAQuF,EAAM,IAAI;AAAA,YAChC,OAAO,CAAC,CAACK;AAAA,YACT,WAAW;AAAA,YACX,YAAYA;AAAA,YACZ,UAAUoB;AAAA,YACV,aAAazB,EAAM;AAAA,YACnB,WAAW;AAAA,cACT,WAAW;AAAA,gBACT,cAAcA,EAAM;AAAA,cAAA;AAAA,YACtB;AAAA,UACF;AAAA,QAAA;AAAA,IAGN;AAAA,EAEJ,GAEM0B,IAAY,MAAM;AAEtB,IAAIjH,EAAQuF,EAAM,IAAI,MAAMG,KAC1BhD,EAAc;AAAA,MACZ,GAAG1C;AAAA,MACH,CAACuF,EAAM,IAAI,GAAGG;AAAA,IAAA,CACf,GAEHM,EAAA;AAAA,EACF,GAEMgB,IAAc,CAACzD,MAA2C;AAC9D,IAAAoC,EAAepC,EAAE,OAAO,KAAK,GAEzBgC,EAAM,cACRM,EAAgBN,EAAM,WAAWhC,EAAE,OAAO,KAAK,CAAC;AAAA,EAEpD;AAEA,SACE,gBAAA1E;AAAA,IAAC2E;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,QACJ,YAAY1C,EAAa;AAAA,QACzB,OAAO2C,EAAiB3C,EAAa,YAAYyE,EAAM,KAAK;AAAA,MAAA;AAAA,MAE9D,sBAAsB,CAAC,CAACK,KAAgB,CAACE;AAAA,MACzC,QAAAN;AAAA,MACA,SAASQ;AAAA,MACT,iBAAiBiB;AAAA,MACjB,aAAanG,EAAa;AAAA,MAC1B,IAAI;AAAA,QACF,4DAA4D;AAAA,UAC1D,SAAS;AAAA,UACT,cAAc;AAAA,UACd,eAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MAGD,UAAAmF,EAAA;AAAA,IAAiB;AAAA,EAAA;AAGxB,GAEAiB,KAAelI,EAASsG,EAAiB,GC3KnC6B,KAAiB,MAAM;AAC3B,QAAMC,IAAgB,OAAO,KAAK,QAE5B,EAAE,SAAAxE,EAAA,IAAYC,EAAA,GACd,EAAE,iBAAiB7C,EAAA,IAAY3B,EAAA,GAC/B,EAAE,UAAUyC,EAAA,IAAiBrC,EAAA,GAE7B4I,IAASC,GAAuBtH,GAASc,CAAY,GACrDyG,IACJvH,EAAQ,6BACP,CAACA,EAAQ,6BAA6BoH,EAAc,+BAEjD,CAACI,GAAgBC,CAAiB,IAAIvF,EAAM,SAAS,EAAK,GAC1D,CAACwF,GAAaC,CAAc,IAAIzF,EAAM,SAAuBmF,EAAO,CAAC,CAAC,GAEtEO,IAAoBP,EAAO;AAAA,IAC/B,CAAC9B,MAAUgC,KAAWvH,EAAQuF,EAAM,IAAI,KAAKvF,EAAQuF,EAAM,IAAI,MAAM;AAAA,EAAA;AAGvE,SACE,gBAAA9F,EAAA8B,GAAA,EACG,UAAA;AAAA,IAAAqG,EAAkB,IAAI,CAACrC,MAAU;AAChC,YAAMsC,IAAW7H,EAAQuF,EAAM,IAAI,KAAKvF,EAAQuF,EAAM,IAAI,MAAM,GAC1DnG,IAASwI,EAAkB,QAAQrC,CAAK,MAAMqC,EAAkB,SAAS,GAEzEtG,IACJ,gBAAAzC;AAAA,QAACc;AAAA,QAAA;AAAA,UACC,mBAAmB;AAAA,UACnB,2BAAUgC,GAAA,EAAK,IAAI,EAAE,UAAU,MAAO,UAAA4D,EAAM,MAAA,CAAM;AAAA,UAClD,WACE,gBAAA1G,EAAC8C,GAAA,EAAK,MAAM,IAAM,IAAI,EAAE,UAAU,GAAA,GAC/B,UAAAkG,IACItC,EAAM,eAAevF,EAAQuF,EAAM,IAAI,CAAC,IACzCA,EAAM,YAAA,CACZ;AAAA,QAAA;AAAA,MAAA;AAKN,aACE,gBAAA1G,EAACqD,EAAM,UAAN,EACE,UAAAqF,IACC,gBAAA1I;AAAA,QAACW;AAAA,QAAA;AAAA,UACC,IAAI;AAAA,YACF,iBAAiB;AAAA,YACjB,IAAI;AAAA,YACJ,UAAU;AAAA,YACV,YAAY;AAAA,cACV,SAAS;AAAA,cACT,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAMJ,IAAS,IAAI;AAAA,cACnB,cAAc;AAAA,cACd,aAAa;AAAA,YAAA;AAAA,UACf;AAAA,UAGF,UAAA,gBAAAK;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,SAAS,MAAM;AACb,gBAAAiI,EAAepC,CAAK,GACpBkC,EAAkB,EAAI,GAClBlC,GAAO,SAAO3C,EAAQ2C,EAAM,OAAO,EAAE,cAAcvF,EAAQ,MAAM;AAAA,cACvE;AAAA,cAEC,UAAA;AAAA,gBAAAsB;AAAA,gBACD,gBAAAzC,EAACyE,GAAA,EAAK,MAAK,gBAAA,CAAgB;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAC7B;AAAA,MAAA,IAGFuE,KACE,gBAAAhJ;AAAA,QAACW;AAAA,QAAA;AAAA,UACC,IAAI;AAAA,YACF,iBAAiB;AAAA,YACjB,IAAI;AAAA,YACJ,UAAU;AAAA,YACV,YAAY;AAAA,cACV,SAAS;AAAA,cACT,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAMJ,IAAS,IAAI;AAAA,cACnB,cAAc;AAAA,cACd,aAAa;AAAA,YAAA;AAAA,UACf;AAAA,UAGD,UAAAkC;AAAA,QAAA;AAAA,MAAA,EACH,GAhDeiE,EAAM,IAmD3B;AAAA,IAEJ,CAAC;AAAA,IACAiC,KAAkBE,KACjB,gBAAA7I;AAAA,MAACyG;AAAAA,MAAA;AAAA,QACC,OAAOoC;AAAA,QACP,QAAQF;AAAA,QACR,SAAS,MAAMC,EAAkB,EAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACxC,GAEJ;AAEJ,GAEAK,KAAe9I,EAASmI,EAAc,GC7GhCY,KAAoB,MAAM;AAC9B,QAAM,EAAE,SAAAnF,EAAA,IAAYC,EAAA;AACpBX,SAAAA,EAAM,UAAU,MAAMU,EAAQQ,EAAiB,oBAAoB,GAAG,EAAE,qBAGrEO,IAAA,EACC,UAAA;AAAA,IAAA,gBAAA9E,EAACsI,IAAA,EAAe;AAAA,sBACf1C,IAAA,EAAkB;AAAA,sBAClB1C,IAAA,CAAA,CAAe;AAAA,EAAA,GAClB;AAEJ,GAEAiG,KAAehJ,EAAS+I,EAAiB,GCCnCE,KAAgE,CAAC,EAAE,aAAAC,QAAkB;AACzF,QAAM,CAACxD,GAAyBC,CAA0B,IAAIzC,EAAM,SAAS,EAAK,GAE5E,EAAE,gBAAgB4B,EAAA,IAAWzF,EAAA,GAC7B,EAAE,UAAUyC,GAAc,SAAS+D,EAAA,IAAgBpG,EAAA,GAEnD0J,IACJrE,EAAO,qBAAqBkB,EAAqB,SAASlB,EAAO,iBAAiB;AAQpF,MANA5B,EAAM,UAAU,MAAM;AACpB,IAAIiG,KACFD,EAAY,CAAC;AAAA,EAEjB,GAAG,CAACC,CAAQ,CAAC,GAET,CAACA,EAAU;AAEf,QAAMrD,IAA0CjB,GAAsBC,GAAQe,CAAW;AAGzF,SACE,gBAAApF,EAAA8B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA1C;AAAA,MAACuJ;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,QAAA;AAAA,QAGN,UAAA,gBAAA3I;AAAA,UAAC4I;AAAA,UAAA;AAAA,YACC,MAAM,gBAAAxJ,EAACwB,GAAA,EAAU,QAAQ,GAAA,CAAM;AAAA,YAC/B,MAAK;AAAA,YACL,UAAS;AAAA,YACT,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,qBAAqB;AAAA,cACrB,wBAAwB;AAAA,cACxB,aAAa;AAAA,cACb,OAAO;AAAA,cACP,mBAAmB;AAAA,gBACjB,iBAAiB;AAAA,cAAA;AAAA,YACnB;AAAA,YAGD,UAAA;AAAA,cAAAyE,EAAe,SACd,gBAAAjG,EAACyJ,IAAA,EAAW,IAAI,EAAE,YAAY,KAAK,WAAW,EAAA,GAAK,SAAQ,SACxD,YAAe,OAClB;AAAA,gCAED3G,GAAA,EAAK,WAAU,KAAI,SAAQ,aACzB,YAAe,MAClB;AAAA,cACCmD,EAAe,OACd,gBAAAjG;AAAA,gBAAC0J;AAAA,gBAAA;AAAA,kBACC,SAAS,MAAM5D,EAA2B,EAAI;AAAA,kBAC9C,IAAI,EAAE,UAAU,IAAI,YAAY,KAAK,IAAI,EAAA;AAAA,kBAExC,UAAAG,EAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,YAClB;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,IAGDJ,KACC,gBAAA7F;AAAA,MAACuG;AAAA,MAAA;AAAA,QACC,iBAAiB,EAAE,qBAAqBtB,EAAO,KAAA;AAAA,QAC/C,SAAS,MAAMa,EAA2B,EAAK;AAAA,QAC/C,mBAAmBD;AAAA,QACnB,OAAO5D,EAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EACtB,GAEJ;AAEJ,GAEA0H,KAAexJ,EAASiJ,EAAsB,GCtFxCQ,KAAkB,MAAM;AAC5B,QAAM,CAACC,GAAMC,CAAO,IAAIzG,EAAM,SAAS,EAAE,GAEnC,EAAE,SAAAU,EAAA,IAAYC,EAAA,GACd,EAAE,iBAAAzE,EAAA,IAAoBC,EAAA,GACtB,EAAE,UAAUyC,EAAA,IAAiBrC,EAAA,GAC7B,EAAE,yBAAAmK,GAAyB,qBAAAC,GAAqB,WAAAC,GAAW,oBAAAC,EAAA,IAC/DhG,EAAA;AAEFb,EAAAA,EAAM,UAAU,MAAM;AACpB,IAAK0G,KACHC,EAAA,EAAsB,QAAA;AAAA,EAE1B,GAAG,CAAA,CAAE;AAEL,QAAMG,IAAc9G,EAAM;AAAA,IACxB,MAAM6G,EAAmB,KAAK,CAACE,MAAMA,EAAE,SAASP,CAAI;AAAA,IACpD,CAACA,GAAMK,CAAkB;AAAA,EAAA;AAG3B7G,SAAAA,EAAM,UAAU,MAAM;AACpB,IAAA4G,EAAU;AAAA,MACR,WAAW,EAAE,OAAOI,GAAQC,GAAA,GAAgB,EAAE,GAAG,KAAKC,KAAW;AAAA,MACjE,UAAU,CAAChL,EAAgB,IAAI;AAAA,IAAA,CAChC;AAAA,EACH,GAAG,CAACA,CAAe,CAAC,GAEpB8D,EAAM,UAAU,MAAMU,EAAQQ,EAAiB,iCAAiC,GAAG,EAAE,GAGnF,gBAAA3D,EAAA8B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA1C,EAACwK,IAAA,EAAgB,SAASV,EAAA,CAAS;AAAA,IAClCK,KACC,gBAAAnK;AAAA,MAAC6E;AAAA,MAAA;AAAA,QACC,gBAAgB5C,EAAa;AAAA,QAC7B,QAAQ,CAAC,CAAC4H;AAAA,QACV,SAAS,MAAMC,EAAQ,EAAE;AAAA,QACzB,OAAO7H,EAAa;AAAA,QAEpB,UAAA,gBAAAjC,EAACyK,MAAmB,aAAAN,EAAA,CAA0B;AAAA,MAAA;AAAA,IAAA;AAAA,EAChD,GAEJ;AAEJ,GAEAO,KAAevK,EAASyJ,EAAe,GChDjCe,KAAwB,MAAM;AAClC,QAAM,CAACC,GAAUvB,CAAW,IAAIhG,EAAM,SAAS,CAAC,GAE1C,EAAE,UAAUpB,EAAA,IAAiBrC,EAAA;AAEnC,SACE,gBAAAgB,EAAA8B,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA1C,EAACoJ,MAAuB,aAAAC,GAA0B;AAAA,IAElD,gBAAAzI;AAAA,MAACiK;AAAA,MAAA;AAAA,QACC,cAAY5I,EAAa;AAAA,QACzB,UAAU;AAAA,QACV,UAAU,CAAC6I,GAAGC,MAAQ1B,EAAY0B,CAAG;AAAA,QACrC,WAAU;AAAA,QACV,OAAOH;AAAA,QACP,SAAQ;AAAA,QAER,UAAA;AAAA,UAAA,gBAAA5K;AAAA,YAACgL;AAAA,YAAA;AAAA,cACC,iBAAc;AAAA,cACd,IAAG;AAAA,cACH,OAAO/I,EAAa;AAAA,YAAA;AAAA,UAAA;AAAA,UAEtB,gBAAAjC;AAAA,YAACgL;AAAA,YAAA;AAAA,cACC,iBAAc;AAAA,cACd,IAAG;AAAA,cACH,OAAO/I,EAAa;AAAA,YAAA;AAAA,UAAA;AAAA,QACtB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAjC,EAACiL,GAAA,EAAoB,OAAO,GAAG,MAAK,uBAAsB,OAAOL,GAC/D,UAAA,gBAAA5K,EAAC4J,IAAA,CAAA,CAAgB,EAAA,CACnB;AAAA,IAEA,gBAAA5J,EAACiL,GAAA,EAAoB,OAAO,GAAG,MAAK,mBAAkB,OAAOL,GAC3D,UAAA,gBAAA5K,EAACkJ,IAAA,CAAA,CAAkB,EAAA,CACrB;AAAA,EAAA,GACF;AAEJ,GAEAgC,KAAe/K,EAASwK,EAAqB,GCzCvCQ,KAAuB,CAAC,EAAE,QAAAxE,GAAQ,SAAAC,QAAyC;AAC/E,QAAM,EAAE,UAAU3E,EAAA,IAAiBrC,EAAA;AAEnC,SACE,gBAAAgB;AAAA,IAACiE;AAAA,IAAA;AAAA,MACC,gBAAgB5C,EAAa;AAAA,MAC7B,QAAA0E;AAAA,MACA,SAAAC;AAAA,MACA,OAAO3E,EAAa;AAAA,MAEpB,UAAA;AAAA,QAAA,gBAAAjC,EAACoL,IAAA,EAAqB,gBAAgBhM,GAAA,CAAa;AAAA,0BAElDuL,IAAA,CAAA,CAAsB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG7B;"}
|
|
1
|
+
{"version":3,"file":"AccountDetailsDrawer-Cq4kiiKD.mjs","sources":["../src/trends/components/TrendsChart.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActionsRow.tsx","../src/accounts/hooks/useGetMergeableAccounts.tsx","../src/accounts/components/ConnectionStatusIcons.tsx","../src/accounts/components/AccountListItem.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountActions.tsx","../src/accounts/utils/getConnectionMessages.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountConnection.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailEdit.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetails.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.tsx","../src/accounts/components/detailsdrawer/Transactions/TransactionsTab.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\n\nimport {\n useCategoryStore,\n useGlobalCopyStore,\n INCOME_ACCOUNT_TYPES,\n PAYMENT_ACCOUNT_TYPES,\n SPENDING_ACCOUNT_TYPES,\n} from '../../common'\nimport { AccountType, MonthlyCategoryTotals, TrendsCopy } from '../../core'\n\nimport { useAccountUiStore } from '../../accounts/hooks/useUiStore'\nimport { LineChart } from '../../common/components/charts/LineChart'\nimport type { LineChartDataset, LineChartLabel } from '../../common/components/charts/LineChart'\n\nimport { getIncomeTotals, getPaymentTotals, getSpendingTotals } from '../utils/SpendingData'\n\nconst getDatasets = (\n totals: MonthlyCategoryTotals[],\n accountType: AccountType,\n): LineChartDataset[] => {\n const incomeData = INCOME_ACCOUNT_TYPES.includes(accountType) ? getIncomeTotals(totals) : []\n const paymentData = PAYMENT_ACCOUNT_TYPES.includes(accountType) ? getPaymentTotals(totals) : []\n const spendingData = SPENDING_ACCOUNT_TYPES.includes(accountType) ? getSpendingTotals(totals) : []\n\n // There should always be 1-2 datasets returned. No account type will have all three categories.\n return [incomeData, paymentData, spendingData].filter((data) => data.length > 0)\n}\n\nconst getLabels = (datasets: LineChartDataset[], accountType: AccountType, copy: TrendsCopy) => {\n const [dataA, dataB] = datasets\n const credits = dataA\n const debits = dataB ?? dataA\n const labels: LineChartLabel[] = []\n\n if (credits && debits && INCOME_ACCOUNT_TYPES.includes(accountType)) {\n const lastIncome = credits[credits.length - 1].y\n labels.push({ label: copy.income_label, amount: lastIncome })\n } else if (PAYMENT_ACCOUNT_TYPES.includes(accountType)) {\n const lastPayment = credits[credits.length - 1].y\n labels.push({ label: copy.payments_label, amount: lastPayment })\n }\n\n if (debits && SPENDING_ACCOUNT_TYPES.includes(accountType)) {\n const lastSpending = debits[debits.length - 1].y\n labels.push({ label: copy.spending_label, amount: lastSpending })\n }\n\n return labels\n}\n\nconst TrendsChart = () => {\n const theme = useTheme()\n const { selectedAccount } = useAccountUiStore()\n const { monthlyCategoryTotals } = useCategoryStore()\n const { trends: trendsCopy } = useGlobalCopyStore()\n\n const colors = [theme.palette.chart?.chart1, theme.palette.chart?.chart2]\n const datasets = getDatasets(monthlyCategoryTotals, selectedAccount.account_type)\n const labels = getLabels(datasets, selectedAccount.account_type, trendsCopy)\n const isLoan = [AccountType.LOAN, AccountType.MORTGAGE].includes(selectedAccount.account_type)\n\n return (\n <div data-testid=\"TrendsChart\">\n <LineChart\n colors={colors}\n datasets={datasets}\n height={185}\n labels={labels}\n showAverage={isLoan}\n showAxisHighlight={true}\n showBars={isLoan}\n showLegend={true}\n showTooltip={true}\n showXAxis={true}\n showXAxisTicks={true}\n showYAxis={true}\n showYAxisTicks={true}\n valueFormatterString=\"0,0\"\n />\n </div>\n )\n}\n\nexport default observer(TrendsChart)\n","import ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\ninterface AccountActionsRowProps {\n ariaPressed?: boolean\n onClick: () => void\n isLast?: boolean\n primaryText: string\n secondaryText: string\n}\n\nconst AccountActionsRow: React.FC<React.PropsWithChildren<AccountActionsRowProps>> = ({\n ariaPressed,\n children,\n isLast = false,\n onClick,\n primaryText,\n secondaryText,\n}) => {\n return (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton aria-pressed={ariaPressed} onClick={onClick}>\n <ListItemText primary={primaryText} secondary={secondaryText} />\n {children}\n </ListItemButton>\n </ListItem>\n )\n}\n\nexport default AccountActionsRow\n","import { useAccountStore } from '../../common'\nimport { useAccountUiStore } from './useUiStore'\n\nexport const useGetMergeableAccounts = () => {\n const { accounts } = useAccountStore()\n const { selectedAccount, selectedMember } = useAccountUiStore()\n return accounts.filter(\n (account) =>\n account.member_guid === selectedMember.guid &&\n selectedMember.successfully_aggregated_at &&\n account.guid !== selectedAccount.guid,\n )\n}\n","import { CheckCircle as CheckCircleIcon, Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport { IconBacking } from '../../common'\n\ntype IconProp = {\n size?: number\n}\n\nconst iconStyle = {\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nexport const ConnectedStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <CheckCircleIcon color=\"success\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n\nexport const ErrorStatus = ({ size = 20 }: IconProp) => (\n <IconBacking size={size}>\n <ErrorIcon color=\"error\" filled={true} sx={{ fontSize: size, ...iconStyle }} />\n </IconBacking>\n)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Badge from '@mui/material/Badge'\nimport Box from '@mui/material/Box'\nimport ListItem, { ListItemOwnProps } from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport { useTheme } from '@mui/material/styles'\n\nimport { InstitutionLogo, Text } from '@mxenabled/mxui'\n\nimport { ErrorStatus } from './ConnectionStatusIcons'\n\nimport { useAccountDisplayName, useAppConfig, useGlobalCopyStore } from '../../common'\nimport { Account, ConnectionStatus } from '../../core'\nimport { getAccountBalanceDetails } from '../utils/AccountFields'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface AccountListItemProps {\n account: Account\n onRowClick?: () => void\n listItemProps?: ListItemOwnProps\n shouldShowConnectionStatus?: boolean\n}\n\nconst AccountListItem: React.FC<AccountListItemProps> = ({\n account,\n onRowClick,\n listItemProps,\n shouldShowConnectionStatus = false,\n}) => {\n const theme = useTheme()\n const displayName = useAccountDisplayName(account)\n const { config } = useAppConfig()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { firstSubtitle, firstValue, secondSubtitle, secondValue } = getAccountBalanceDetails(\n account,\n accountsCopy,\n config.display_available_balance_in_accounts,\n )\n\n let statusIcon = undefined\n if (\n account.connectionStatus === ConnectionStatus.Error ||\n account.connectionStatus === ConnectionStatus.RequiresMfa\n ) {\n statusIcon = <ErrorStatus size={16} />\n }\n\n const content = (\n <>\n <ListItemAvatar>\n <Badge\n badgeContent={shouldShowConnectionStatus ? statusIcon : undefined}\n sx={{\n '& .MuiBadge-badge': {\n right: -1,\n },\n }}\n >\n <InstitutionLogo alt=\"MX\" institutionGuid={account.institution_guid || ''} />\n </Badge>\n </ListItemAvatar>\n\n <ListItemText\n disableTypography={true}\n primary={\n <Text\n bold={true}\n color={account.is_hidden ? theme.palette.text.secondary : undefined}\n variant=\"body1\"\n >\n {`${displayName} ${account.account_number ? `*${account.account_number}` : ''}`}{' '}\n {account.is_hidden && !account.is_closed && accountsCopy.is_hidden}\n {account.is_closed && accountsCopy.is_closed}\n </Text>\n }\n secondary={\n <>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{firstSubtitle}</Text>\n <Text bold={true} variant=\"body2\">\n {formatCurrency(firstValue, '0,0.00')}\n </Text>\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', justifyContent: 'space-between' }}>\n <Text variant=\"caption\">{secondSubtitle}</Text>\n <Text ml=\"auto\" variant=\"caption\">\n {secondValue}\n </Text>\n </Box>\n </>\n }\n />\n </>\n )\n\n return (\n <ListItem\n {...listItemProps}\n sx={{\n backgroundColor: 'background.paper',\n color: account.is_closed ? 'grey.700' : '',\n ...listItemProps?.sx,\n }}\n >\n {onRowClick ? (\n <ListItemButton alignItems=\"flex-start\" onClick={onRowClick} sx={{ px: 24 }}>\n {content}\n </ListItemButton>\n ) : (\n content\n )}\n </ListItem>\n )\n}\n\nexport default observer(AccountListItem)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Switch from '@mui/material/Switch'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountActionsRow from './AccountActionsRow'\n\nimport {\n ANALYTICS_EVENTS,\n Dialog,\n Drawer,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { type Account } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useGetMergeableAccounts } from '../../../hooks/useGetMergeableAccounts'\nimport AccountListItem from '../../AccountListItem'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ntype UpdatedValue = Pick<Account, 'is_closed'> | Pick<Account, 'is_hidden'>\n\nconst AccountActions = () => {\n const [shouldShowCloseAccountModal, setShouldShowCloseAccountModal] = React.useState(false)\n const [shouldShowAccountMergeDrawer, setShouldShowAccountMergeDrawer] = React.useState(false)\n const [shouldShowMergeConfirmModal, setShouldShowMergeConfirmModal] = React.useState(false)\n const [accountToMerge, setAccountToMerge] = React.useState({} as Account)\n\n const { selectedAccount: account } = useAccountUiStore()\n const { mergeAccounts, updateAccount } = useAccountStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const mergeableAccounts = useGetMergeableAccounts()\n const { onEvent } = useEvent()\n const { modifyTransactionByAccountGuid } = useTransactionStore()\n\n const handleUpdateAccount = async (updatedValue: UpdatedValue) => {\n await updateAccount({\n ...account,\n ...updatedValue,\n })\n if ('is_closed' in updatedValue && updatedValue.is_closed !== account.is_closed)\n modifyTransactionByAccountGuid(account.guid, { accountIsClosed: updatedValue.is_closed })\n }\n\n const handleMergeAccounts = () => {\n mergeAccounts([account.guid, accountToMerge.guid]).finally(() =>\n setShouldShowAccountMergeDrawer(false),\n )\n }\n\n return (\n <>\n <ListSubheader sx={{ backgroundColor: 'transparent', mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.actions}\n </Text>\n </ListSubheader>\n\n <AccountActionsRow\n ariaPressed={account.is_hidden}\n onClick={() => {\n handleUpdateAccount({ is_hidden: !account.is_hidden })\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_HIDE, { account_guid: account.guid })\n }}\n primaryText={account.is_hidden ? accountsCopy.unhide_account : accountsCopy.hide_Account}\n secondaryText={\n account.is_hidden ? accountsCopy.include_this_account : accountsCopy.exclude_this_account\n }\n >\n <Switch aria-hidden={true} checked={account.is_hidden} tabIndex={-1} />\n </AccountActionsRow>\n\n <AccountActionsRow\n onClick={() => {\n setShouldShowCloseAccountModal(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_CLOSED, {\n account_guid: account.guid,\n })\n }}\n primaryText={account.is_closed ? accountsCopy.mark_as_open : accountsCopy.mark_as_closed}\n secondaryText={\n account.is_closed\n ? accountsCopy.this_will_set_the_closed_account\n : accountsCopy.this_will_set_the_account_balance_to_0\n }\n >\n <Icon name=\"chevron_right\" />\n <div onClick={(e) => e.stopPropagation()}>\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: account.is_closed\n ? accountsCopy.confirm_mark_as_open\n : accountsCopy.confirm_mark_closed,\n }}\n isOpen={shouldShowCloseAccountModal}\n onClose={() => {\n setShouldShowCloseAccountModal(false)\n }}\n onPrimaryAction={() => handleUpdateAccount({ is_closed: !account.is_closed })}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n account.is_closed\n ? accountsCopy.this_will_resume_updating_the_balance\n : accountsCopy.this_will_set_the_balance_of_your_account,\n account.name,\n ) as string\n }\n </Text>\n </Dialog>\n </div>\n </AccountActionsRow>\n\n {mergeableAccounts.length > 0 && (\n <AccountActionsRow\n isLast={true}\n onClick={() => {\n setShouldShowAccountMergeDrawer(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE, {\n account_guid: account.guid,\n })\n }}\n primaryText={accountsCopy.mark_as_duplicate}\n secondaryText={accountsCopy.if_a_connected_account_is_showing_up_twice}\n >\n <Icon name=\"chevron_right\" />\n </AccountActionsRow>\n )}\n\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={shouldShowAccountMergeDrawer}\n onClose={() => setShouldShowAccountMergeDrawer(false)}\n title={accountsCopy.mark_as_duplicate}\n >\n <List>\n {mergeableAccounts.map((account: Account) => {\n const isLast = mergeableAccounts.indexOf(account) === mergeableAccounts.length - 1\n return (\n <AccountListItem\n account={account}\n key={account.guid}\n listItemProps={{\n sx: {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n },\n }}\n onRowClick={() => {\n setShouldShowMergeConfirmModal(true)\n setAccountToMerge(account)\n }}\n />\n )\n })}\n </List>\n {shouldShowMergeConfirmModal && (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_modal,\n title: accountsCopy.confirm_merge,\n }}\n isOpen={shouldShowMergeConfirmModal}\n onClose={() => setShouldShowMergeConfirmModal(false)}\n onPrimaryAction={handleMergeAccounts}\n >\n <Text truncate={false}>\n {\n buildDynamicCopy(\n accountsCopy.this_means_accounts_will_be_merged,\n account.name,\n accountToMerge.name,\n ) as string\n }\n </Text>\n <Text color=\"error\" sx={{ mt: 24 }}>\n {accountsCopy.this_action_cannot_be_undone}\n </Text>\n </Dialog>\n )}\n </Drawer>\n </>\n )\n}\n\nexport default observer(AccountActions)\n","import { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { isToday } from 'date-fns/isToday'\nimport { isYesterday } from 'date-fns/isYesterday'\n\nimport { ConnectCopy, ConnectionStatusEnums, type Member } from '../../core'\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\nexport interface ConnectionMessageObject {\n cta?: string\n main: string\n statusName: string\n title: string\n}\n\nexport const getConnectionMessages: any = (member: Member, copy: ConnectCopy) => {\n const { connection_messages } = copy\n\n switch (member.connection_status) {\n case ConnectionStatusEnums.CHALLENGED: {\n return {\n cta: connection_messages.challenged_cta,\n main: buildDynamicCopy(\n connection_messages.challenged_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.challenged_connection_title,\n }\n }\n case ConnectionStatusEnums.CLOSED: {\n return {\n main: connection_messages.closed_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.closed_connection_title,\n }\n }\n case ConnectionStatusEnums.DEGRADED: {\n return {\n main: connection_messages.degraded_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.degraded_connection_title,\n }\n }\n case ConnectionStatusEnums.DELAYED: {\n return {\n main: buildDynamicCopy(\n connection_messages.delayed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.delayed_connection_title,\n }\n }\n case ConnectionStatusEnums.DENIED: {\n return {\n cta: connection_messages.denied_cta,\n main: buildDynamicCopy(\n connection_messages.denied_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.denied_connection_title,\n }\n }\n case ConnectionStatusEnums.DISABLED: {\n return {\n main: connection_messages.disabled_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disabled_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONNECTED: {\n return {\n main: buildDynamicCopy(\n connection_messages.disconnected_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.disconnected_connection_title,\n }\n }\n case ConnectionStatusEnums.DISCONTINUED: {\n return {\n main: connection_messages.discontinued_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.discontinued_connection_title,\n }\n }\n case ConnectionStatusEnums.EXPIRED: {\n return {\n cta: connection_messages.expired_cta,\n main: connection_messages.expired_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.expired_connection_title,\n }\n }\n case ConnectionStatusEnums.FAILED: {\n return {\n main: buildDynamicCopy(\n connection_messages.failed_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.failed_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPAIRED: {\n return {\n cta: connection_messages.impaired_cta,\n main: buildDynamicCopy(\n connection_messages.impaired_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impaired_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPEDED: {\n return {\n main: buildDynamicCopy(\n connection_messages.impeded_connection_description,\n member.name,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.impeded_connection_title,\n }\n }\n case ConnectionStatusEnums.IMPORTED: {\n return {\n cta: connection_messages.imported_cta,\n main: buildDynamicCopy(\n connection_messages.imported_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.imported_connection_title,\n }\n }\n case ConnectionStatusEnums.LOCKED: {\n return {\n cta: connection_messages.locked_cta,\n main: buildDynamicCopy(\n connection_messages.locked_connection_description,\n member.name,\n ) as string,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.locked_connection_title,\n }\n }\n case ConnectionStatusEnums.PREVENTED: {\n return {\n cta: connection_messages.prevented_cta,\n main: connection_messages.prevented_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.prevented_connection_title,\n }\n }\n case ConnectionStatusEnums.REJECTED: {\n return {\n cta: connection_messages.rejected_cta,\n main: connection_messages.rejected_connection_description,\n statusName: copy.connection_statuses[member.connection_status],\n title: connection_messages.rejected_connection_title,\n }\n }\n default: {\n const lastUpdatedCopy = () => {\n const lastUpdated = member.successfully_aggregated_at\n ? fromUnixTime(member.successfully_aggregated_at)\n : undefined\n const lastUpdatedFormattedTime =\n lastUpdated && formatDate(lastUpdated, DATE_FORMATS_INTL.TIME_STAMP_HOUR_MINUTE)\n\n if (!lastUpdatedFormattedTime) return undefined\n if (isToday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.today, lastUpdatedFormattedTime)\n if (isYesterday(lastUpdated))\n return buildDynamicCopy(copy.last_updated_at, copy.yesterday, lastUpdatedFormattedTime)\n return buildDynamicCopy(\n copy.last_updated_at,\n formatDate(lastUpdated, DATE_FORMATS_INTL.MONTH_DAY_YEAR),\n lastUpdatedFormattedTime,\n )\n }\n return {\n statusName: copy.connection_statuses[6], // Connected\n title: lastUpdatedCopy(),\n }\n }\n }\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Icon, Text } from '@mxenabled/mxui'\nimport {\n CheckCircle as CheckCircleRoundedIcon,\n Error as ErrorIcon,\n Language as LanguageRoundedIcon,\n} from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\nimport { IconBacking, useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { getConnectionMessages } from '../../../utils/getConnectionMessages'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst iconStyle = {\n color: 'background.default',\n fontSize: 20,\n gridRow: 1,\n gridColumn: 1,\n zIndex: 2,\n}\n\nconst AccountConnection = () => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n const {\n palette: { mode },\n } = useTheme()\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const statusMessages = getConnectionMessages(member, connectCopy)\n\n const status = NonConnectedStatuses.includes(member.connection_status)\n ? {\n color: 'error.main',\n ctaCopy: statusMessages.cta ?? '',\n icon: <ErrorIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: `${statusMessages.title}.`,\n }\n : {\n color: 'success.main',\n icon: <CheckCircleRoundedIcon filled={true} sx={{ ...iconStyle }} />,\n mainMessage: statusMessages.statusName,\n secondaryMessage: statusMessages.title,\n }\n\n return (\n <>\n <ListSubheader sx={{ mb: 4, mt: 12, mx: 8 }}>\n <Text bold={true} component=\"h2\" variant=\"caption\">\n {accountsCopy.connection_status}\n </Text>\n </ListSubheader>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: member.is_manual || !member.institution_url ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {member.is_manual || !status.ctaCopy ? (\n <Stack alignItems=\"center\" direction=\"row\" px={24} py={12}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={status.mainMessage} secondary={status.secondaryMessage} />\n </Stack>\n ) : (\n <ListItemButton onClick={() => setShouldShowConnectDrawer(true)}>\n <ListItemAvatar>\n <IconBacking backingSx={{ backgroundColor: status.color, borderRadius: 1 }} size={32}>\n {status.icon}\n </IconBacking>\n </ListItemAvatar>\n <ListItemText\n primary={status.mainMessage}\n secondary={\n status.secondaryMessage && (\n <>\n {status.secondaryMessage}{' '}\n <Text bold={true} sx={{ color: 'action.active' }} variant=\"caption\">\n {status.ctaCopy}\n </Text>\n </>\n )\n }\n />\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n )}\n </ListItem>\n\n {!member.is_manual && member.institution_url && (\n <>\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <ListItemButton component=\"a\" href={member.institution_url} target=\"_blank\">\n <ListItemAvatar>\n <IconBacking\n backingSx={{\n backgroundColor: mode === 'light' ? 'grey.300' : 'grey.700',\n borderRadius: 1,\n }}\n size={32}\n >\n <LanguageRoundedIcon\n sx={{\n ...iconStyle,\n color: mode === 'light' ? 'grey.900' : 'common.white',\n }}\n />\n </IconBacking>\n </ListItemAvatar>\n <ListItemText primary={member.name} secondary={member.institution_url} />\n <Icon name=\"launch\" />\n </ListItemButton>\n </ListItem>\n </>\n )}\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountConnection)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { addMonths } from 'date-fns/addMonths'\nimport { alpha } from '@mui/material/styles'\n\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'\nimport { DateCalendar } from '@mui/x-date-pickers/DateCalendar'\nimport FormControl from '@mui/material/FormControl'\nimport InputLabel from '@mui/material/InputLabel'\nimport { LocalizationProvider } from '@mui/x-date-pickers-pro'\nimport MenuItem from '@mui/material/MenuItem'\nimport Select from '@mui/material/Select'\nimport TextField from '@mui/material/TextField'\n\nimport { CurrencyInput, Dialog, useAccountStore, useGlobalCopyStore } from '../../../../common'\nimport { type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { FieldType } from '../../../constants/Accounts'\nimport { buildDynamicCopy } from '../../../../core/utils/Localization'\n\ninterface AccountDetailEditProps {\n field: AccountField\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailEdit: React.FC<AccountDetailEditProps> = ({ field, isOpen, onClose }) => {\n const { updateAccount } = useAccountStore()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const [editedValue, setEditedValue] = React.useState<any>(account[field.name])\n const [errorMessage, setErrorMessage] = React.useState('')\n const [hasValidCurrencyInput, setHasValidCurrencyInput] = React.useState(true)\n\n const handleClose = () => {\n setEditedValue('')\n setErrorMessage('')\n onClose()\n }\n\n const getEditableField = () => {\n switch (field.type) {\n case FieldType.Select: {\n return (\n <FormControl fullWidth={true}>\n <InputLabel id={`${field.label}-select-label`}>{field.label}</InputLabel>\n <Select\n displayEmpty={true}\n id={`${field.label}-select`}\n label={field.label}\n labelId={`${field.label}-select-label`}\n onChange={(e) => setEditedValue(e.target.value)}\n slotProps={{\n input: {\n sx: {\n backgroundColor: 'background.paper',\n },\n },\n }}\n value={editedValue}\n >\n {!editedValue && (\n <MenuItem disabled={true} value=\"\">\n {field.placeholder}\n </MenuItem>\n )}\n {field.options?.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )\n }\n\n case FieldType.Currency: {\n return (\n <CurrencyInput\n amount={(editedValue as string | number) || ''}\n ariaLabel={field.placeholder}\n fullWidth={true}\n label={field.label}\n placeholder={field.placeholder}\n setAmount={setEditedValue}\n setHasValidInput={setHasValidCurrencyInput}\n />\n )\n }\n\n case FieldType.Date: {\n return (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <DateCalendar\n maxDate={addMonths(new Date(), 1)}\n minDate={new Date()}\n onChange={(date: Date) => {\n if (account[field.name] && Number(account[field.name]) <= 31) {\n // gets and sets the day of the month to editedValue\n setEditedValue(date.getDate())\n } else {\n // the day of the month was already passed, so we set it directly to state\n setEditedValue(date)\n }\n }}\n sx={{\n '& .MuiPickersDay-today': {\n color: 'primary.lighter',\n },\n '& .MuiPickersArrowSwitcher-button': {\n color: 'primary.lighter',\n '&:hover': {\n backgroundColor: (theme) => alpha(theme.palette.primary.light, 0.1),\n },\n },\n }}\n views={['day']}\n />\n </LocalizationProvider>\n )\n }\n\n default: {\n return (\n <TextField\n defaultValue={account[field.name]}\n error={!!errorMessage}\n fullWidth={true}\n helperText={errorMessage}\n onChange={updateField}\n placeholder={field.placeholder}\n slotProps={{\n htmlInput: {\n 'aria-label': field.placeholder,\n },\n }}\n />\n )\n }\n }\n }\n\n const saveField = () => {\n // prevents any unnecessary api calls\n if (account[field.name] !== editedValue) {\n updateAccount({\n ...account,\n [field.name]: editedValue,\n })\n }\n handleClose()\n }\n\n const updateField = (e: React.ChangeEvent<HTMLInputElement>) => {\n setEditedValue(e.target.value)\n\n if (field.validation) {\n setErrorMessage(field.validation(e.target.value))\n }\n }\n\n return (\n <Dialog\n copy={{\n close_aria: accountsCopy.close_aria,\n title: buildDynamicCopy(accountsCopy.edit_field, field.label) as string,\n }}\n disablePrimaryButton={!!errorMessage || !hasValidCurrencyInput}\n isOpen={isOpen}\n onClose={handleClose}\n onPrimaryAction={saveField}\n primaryText={accountsCopy.save}\n sx={{\n '& .MuiButton-root:focus-visible, & .MuiButton-root:focus': {\n outline: '2px solid',\n outlineColor: 'primary.main',\n outlineOffset: '2px',\n },\n }}\n >\n {getEditableField()}\n </Dialog>\n )\n}\n\nexport default observer(AccountDetailEdit)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport AccountDetailEdit from './AccountDetailEdit'\n\nimport { getAccountDetailFields, type AccountField } from '../../../utils/AccountFields'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { useEvent, useGlobalCopyStore } from '../../../../common'\n\nconst AccountDetails = () => {\n const widgetProfile = window.app?.config\n\n const { onEvent } = useEvent()\n const { selectedAccount: account } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n const fields = getAccountDetailFields(account, accountsCopy)\n const canEdit =\n account.member_is_managed_by_user ||\n (!account.member_is_managed_by_user && widgetProfile.enable_renaming_home_accounts)\n\n const [showEditDialog, setShowEditDialog] = React.useState(false)\n const [fieldToEdit, setFieldToEdit] = React.useState<AccountField>(fields[0])\n\n const displayableFields = fields.filter(\n (field) => canEdit || account[field.name] || account[field.name] === 0,\n )\n\n return (\n <>\n {displayableFields.map((field) => {\n const hasValue = account[field.name] || account[field.name] === 0\n const isLast = displayableFields.indexOf(field) === displayableFields.length - 1\n\n const content = (\n <ListItemText\n disableTypography={true}\n primary={<Text sx={{ fontSize: 11 }}>{field.label}</Text>}\n secondary={\n <Text bold={true} sx={{ fontSize: 15 }}>\n {hasValue\n ? (field.valueFormatter(account[field.name]) as string)\n : field.placeholder}\n </Text>\n }\n />\n )\n\n return (\n <React.Fragment key={field.name}>\n {canEdit ? (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 0,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n <ListItemButton\n onClick={() => {\n setFieldToEdit(field)\n setShowEditDialog(true)\n if (field?.event) onEvent(field.event, { account_guid: account.guid })\n }}\n >\n {content}\n <Icon name=\"chevron_right\" />\n </ListItemButton>\n </ListItem>\n ) : (\n hasValue && (\n <ListItem\n sx={{\n backgroundColor: 'background.paper',\n px: 24,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: isLast ? 0 : 24,\n borderBottom: '1px solid',\n borderColor: 'divider',\n },\n }}\n >\n {content}\n </ListItem>\n )\n )}\n </React.Fragment>\n )\n })}\n {showEditDialog && fieldToEdit && (\n <AccountDetailEdit\n field={fieldToEdit}\n isOpen={showEditDialog}\n onClose={() => setShowEditDialog(false)}\n />\n )}\n </>\n )\n}\n\nexport default observer(AccountDetails)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport List from '@mui/material/List'\n\nimport AccountActions from './AccountActions'\nimport AccountConnection from './AccountConnection'\nimport AccountDetails from './AccountDetails'\n\nimport { ANALYTICS_EVENTS, useEvent } from '../../../../common'\n\nconst AccountDetailsTab = () => {\n const { onEvent } = useEvent()\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW), [])\n\n return (\n <List>\n <AccountDetails />\n <AccountConnection />\n <AccountActions />\n </List>\n )\n}\n\nexport default observer(AccountDetailsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Alert from '@mui/material/Alert'\nimport AlertTitle from '@mui/material/AlertTitle'\nimport Link from '@mui/material/Link'\nimport Paper from '@mui/material/Paper'\n\nimport { Text } from '@mxenabled/mxui'\nimport { Error as ErrorIcon } from '@mxenabled/mx-icons'\n\nimport ConnectDrawer from '../../../../common/components/ConnectDrawer'\n\nimport {\n getConnectionMessages,\n ConnectionMessageObject,\n} from '../../../utils/getConnectionMessages'\nimport { useGlobalCopyStore } from '../../../../common'\nimport { NonConnectedStatuses } from '../../../../core'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\ninterface ConnectionErrorMessageProps {\n setTabValue: (val: number) => void\n}\n\nconst ConnectionErrorMessage: React.FC<ConnectionErrorMessageProps> = ({ setTabValue }) => {\n const [shouldShowConnectDrawer, setShouldShowConnectDrawer] = React.useState(false)\n\n const { selectedMember: member } = useAccountUiStore()\n const { accounts: accountsCopy, connect: connectCopy } = useGlobalCopyStore()\n\n const hasError =\n member.connection_status && NonConnectedStatuses.includes(member.connection_status)\n\n React.useEffect(() => {\n if (hasError) {\n setTabValue(1)\n }\n }, [hasError])\n\n if (!hasError) return\n\n const statusMessages: ConnectionMessageObject = getConnectionMessages(member, connectCopy)\n\n // eslint-disable-next-line consistent-return\n return (\n <>\n <Paper\n sx={{\n mb: 16,\n mt: 24,\n mx: 24,\n }}\n >\n <Alert\n icon={<ErrorIcon filled={true} />}\n role=\"none\"\n severity=\"error\"\n sx={{\n borderLeft: 5,\n borderTopLeftRadius: 6,\n borderBottomLeftRadius: 6,\n borderColor: 'error.main',\n color: 'text.primary',\n '&.MuiPaper-root': {\n backgroundColor: 'background.paper',\n },\n }}\n >\n {statusMessages.title && (\n <AlertTitle sx={{ fontWeight: 600, marginTop: 2 }} variant=\"body1\">\n {statusMessages.title}\n </AlertTitle>\n )}\n <Text component=\"p\" variant=\"subtitle2\">\n {statusMessages.main}\n </Text>\n {statusMessages.cta && (\n <Link\n onClick={() => setShouldShowConnectDrawer(true)}\n sx={{ fontSize: 15, fontWeight: 600, ml: 0 }}\n >\n {statusMessages.cta}\n </Link>\n )}\n </Alert>\n </Paper>\n\n {shouldShowConnectDrawer && (\n <ConnectDrawer\n loadWidgetProps={{ current_member_guid: member.guid }}\n onClose={() => setShouldShowConnectDrawer(false)}\n showConnectWidget={shouldShowConnectDrawer}\n title={accountsCopy.manage_connection}\n />\n )}\n </>\n )\n}\n\nexport default observer(ConnectionErrorMessage)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { subDays, startOfToday, endOfToday } from 'date-fns'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n useEvent,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../../common'\nimport { TransactionDetails, TransactionList } from '../../../../transactions'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\nconst TransactionsTab = () => {\n const [guid, setGuid] = React.useState('')\n\n const { onEvent } = useEvent()\n const { selectedAccount } = useAccountUiStore()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { isTransactionDataLoaded, loadTransactionData, setFilter, sortedTransactions } =\n useTransactionStore()\n\n React.useEffect(() => {\n if (!isTransactionDataLoaded) {\n loadTransactionData().finally()\n }\n }, [])\n\n const transaction = React.useMemo(\n () => sortedTransactions.find((t) => t.guid === guid),\n [guid, sortedTransactions],\n )\n\n React.useEffect(() => {\n setFilter({\n dateRange: { start: subDays(startOfToday(), 90), end: endOfToday() },\n accounts: [selectedAccount.guid],\n })\n }, [selectedAccount])\n\n React.useEffect(() => onEvent(ANALYTICS_EVENTS.ACCOUNT_DETAILS_VIEW_TRANSACTIONS), [])\n\n return (\n <>\n <TransactionList onClick={setGuid} />\n {transaction && (\n <Drawer\n ariaLabelClose={accountsCopy.close_drawer}\n isOpen={!!guid}\n onClose={() => setGuid('')}\n title={accountsCopy.transaction_drawer_title}\n >\n <TransactionDetails transaction={transaction} />\n </Drawer>\n )}\n </>\n )\n}\n\nexport default observer(TransactionsTab)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { TabContentContainer, useGlobalCopyStore } from '../../../../common'\n\nimport AccountDetailsTab from './AccountDetailsTab'\nimport ConnectionErrorMessage from './ConnectionErrorMessage'\nimport TransactionsTab from '../Transactions/TransactionsTab'\n\nconst AccountDetailsContent = () => {\n const [tabValue, setTabValue] = React.useState(0)\n\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <>\n <ConnectionErrorMessage setTabValue={setTabValue} />\n\n <Tabs\n aria-label={accountsCopy.transactions_and_details_aria}\n centered={true}\n onChange={(_, val) => setTabValue(val)}\n textColor=\"primary\"\n value={tabValue}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"transaction-details-tabpanel-0\"\n id=\"transaction-details-tab-0\"\n label={accountsCopy.transactions}\n />\n <Tab\n aria-controls=\"account-details-tabpanel-1\"\n id=\"account-details-tab-1\"\n label={accountsCopy.account_details}\n />\n </Tabs>\n\n <TabContentContainer index={0} name=\"transaction-details\" value={tabValue}>\n <TransactionsTab />\n </TabContentContainer>\n\n <TabContentContainer index={1} name=\"account-details\" value={tabValue}>\n <AccountDetailsTab />\n </TabContentContainer>\n </>\n )\n}\n\nexport default observer(AccountDetailsContent)\n","import { Drawer, useGlobalCopyStore } from '../../../../common'\nimport TrendsChart from '../../../../trends/components/TrendsChart'\n\nimport AccountDetailsContent from './AccountDetailsContent'\nimport AccountDetailsHeader from './AccountDetailsHeader'\n\ninterface AccountDetailsDrawerProps {\n isOpen: boolean\n onClose: () => void\n}\n\nconst AccountDetailsDrawer = ({ isOpen, onClose }: AccountDetailsDrawerProps) => {\n const { accounts: accountsCopy } = useGlobalCopyStore()\n\n return (\n <Drawer\n ariaLabelClose={accountsCopy.close_account_details_aria}\n isOpen={isOpen}\n onClose={onClose}\n title={accountsCopy.account_details}\n >\n <AccountDetailsHeader ChartComponent={TrendsChart} />\n\n <AccountDetailsContent />\n </Drawer>\n )\n}\n\nexport default AccountDetailsDrawer\n"],"names":["getDatasets","totals","accountType","incomeData","INCOME_ACCOUNT_TYPES","getIncomeTotals","paymentData","PAYMENT_ACCOUNT_TYPES","getPaymentTotals","spendingData","SPENDING_ACCOUNT_TYPES","getSpendingTotals","data","getLabels","datasets","copy","dataA","dataB","credits","debits","labels","lastIncome","lastPayment","lastSpending","TrendsChart","theme","useTheme","selectedAccount","useAccountUiStore","monthlyCategoryTotals","useCategoryStore","trendsCopy","useGlobalCopyStore","colors","isLoan","AccountType","jsx","LineChart","TrendsChart$1","observer","AccountActionsRow","ariaPressed","children","isLast","onClick","primaryText","secondaryText","ListItem","jsxs","ListItemButton","ListItemText","useGetMergeableAccounts","accounts","useAccountStore","selectedMember","account","iconStyle","ErrorStatus","size","IconBacking","ErrorIcon","AccountListItem","onRowClick","listItemProps","shouldShowConnectionStatus","displayName","useAccountDisplayName","config","useAppConfig","accountsCopy","firstSubtitle","firstValue","secondSubtitle","secondValue","getAccountBalanceDetails","statusIcon","ConnectionStatus","content","Fragment","ListItemAvatar","Badge","InstitutionLogo","Text","Box","formatCurrency","AccountListItem$1","AccountActions","shouldShowCloseAccountModal","setShouldShowCloseAccountModal","React","shouldShowAccountMergeDrawer","setShouldShowAccountMergeDrawer","shouldShowMergeConfirmModal","setShouldShowMergeConfirmModal","accountToMerge","setAccountToMerge","mergeAccounts","updateAccount","mergeableAccounts","onEvent","useEvent","modifyTransactionByAccountGuid","useTransactionStore","handleUpdateAccount","updatedValue","handleMergeAccounts","ListSubheader","ANALYTICS_EVENTS","Switch","Icon","e","Dialog","buildDynamicCopy","Drawer","List","AccountActions$1","getConnectionMessages","member","connection_messages","ConnectionStatusEnums","lastUpdatedCopy","lastUpdated","fromUnixTime","lastUpdatedFormattedTime","formatDate","DATE_FORMATS_INTL","isToday","isYesterday","AccountConnection","shouldShowConnectDrawer","setShouldShowConnectDrawer","mode","connectCopy","statusMessages","status","NonConnectedStatuses","CheckCircleRoundedIcon","Stack","LanguageRoundedIcon","ConnectDrawer","AccountConnection$1","AccountDetailEdit","field","isOpen","onClose","editedValue","setEditedValue","errorMessage","setErrorMessage","hasValidCurrencyInput","setHasValidCurrencyInput","handleClose","getEditableField","FieldType","FormControl","InputLabel","Select","MenuItem","option","CurrencyInput","LocalizationProvider","AdapterDateFns","DateCalendar","addMonths","date","alpha","TextField","updateField","saveField","AccountDetailEdit$1","AccountDetails","widgetProfile","fields","getAccountDetailFields","canEdit","showEditDialog","setShowEditDialog","fieldToEdit","setFieldToEdit","displayableFields","hasValue","AccountDetails$1","AccountDetailsTab","AccountDetailsTab$1","ConnectionErrorMessage","setTabValue","hasError","Paper","Alert","AlertTitle","Link","ConnectionErrorMessage$1","TransactionsTab","guid","setGuid","isTransactionDataLoaded","loadTransactionData","setFilter","sortedTransactions","transaction","t","subDays","startOfToday","endOfToday","TransactionList","TransactionDetails","TransactionsTab$1","AccountDetailsContent","tabValue","Tabs","_","val","Tab","TabContentContainer","AccountDetailsContent$1","AccountDetailsDrawer","AccountDetailsHeader"],"mappings":"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"}
|
|
@@ -50,11 +50,11 @@ const _ = {
|
|
|
50
50
|
INVESTMENT_WIDGET_ALLOCATION_CLICK: "investment_widget_allocation_click",
|
|
51
51
|
INVESTMENT_WIDGET_ANALYSIS_CLICK: "investment_widget_analysis_click",
|
|
52
52
|
INVESTMENT_WIDGET_DETAILS_CLICK: "investment_widget_details_click",
|
|
53
|
-
NET_WORTH_VIEW: "
|
|
53
|
+
NET_WORTH_VIEW: "netWorth",
|
|
54
54
|
NETWORTH_MICRO_WIDGET_CTA: "net_worth_micro_widget_click_see_details_cta",
|
|
55
55
|
NET_WORTH_WIDGET_CLICK_ASSETS_LIABILITIES: "net_worth_widget_click_view_assets_liabilities",
|
|
56
56
|
NET_WORTH_WIDGET_CLICK_FILTER: "net_worth_widget_click_filter_accounts",
|
|
57
|
-
NET_WORTH_WIDGET_CLICK_TIMEFRAME: "
|
|
57
|
+
NET_WORTH_WIDGET_CLICK_TIMEFRAME: "netWorth_click_timePeriod",
|
|
58
58
|
RECURRING_ACTIVITY_CLICK_ADD_EXPENSE: "recurring_transactions_widget_manage_expenses_click_add_expense",
|
|
59
59
|
RECURRING_ACTIVITY_CLICK_ADD_INCOME: "recurring_transactions_widget_income_details_click_add_income",
|
|
60
60
|
RECURRING_ACTIVITY_CLICK_CALENDAR_RIGHT: "recurring_transactions_widget_click_calendar_right",
|
|
@@ -137,4 +137,4 @@ const _ = {
|
|
|
137
137
|
export {
|
|
138
138
|
_ as A
|
|
139
139
|
};
|
|
140
|
-
//# sourceMappingURL=Analytics-
|
|
140
|
+
//# sourceMappingURL=Analytics-D-jdcL72.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Analytics-D-jdcL72.mjs","sources":["../src/common/constants/Analytics.ts"],"sourcesContent":["export const ANALYTICS_EVENTS = {\n ACCOUNTS_CLICK_ACCOUNT: 'accounts_widget_click_account',\n ACCOUNTS_CLICK_CONNECT: 'accounts_widget_click_connect_accounts',\n ACCOUNTS_CLICK_FILTER: 'accounts_widget_click_filter_accounts',\n ACCOUNTS_CLICK_SYNC: 'accounts_widget_click_sync',\n ACCOUNT_DETAILS_CLICK_HIDE: 'account_details_click_hide_account',\n ACCOUNT_DETAILS_CLICK_MARK_CLOSED: 'account_details_click_mark_as_closed',\n ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE: 'account_details_click_mark_as_duplicate',\n ACCOUNT_DETAILS_CLICK_TRANSACTION: 'account_details_click_transaction',\n ACCOUNT_DETAILS_VIEW: 'account_details',\n ACCOUNT_DETAILS_VIEW_TRANSACTIONS: 'account_details_transactions',\n BUDGETS_CLICK_ADD: 'budgets_widget_click_add_budget',\n BUDGETS_CLICK_BUDGET_CATEGORY: 'budgets_widget_click_budget_category',\n BUDGETS_CLICK_EDIT_INCOME: 'budgets_widget_click_edit_income',\n BUDGETS_CLICK_FILTER: 'budgets_widget_click_filter_accounts',\n BUDGETS_VIEW: 'budgets',\n CASH_FLOW_CLICK_FILTER: 'cash_flow_widget_click_filter_accounts',\n CASH_FLOW_CLICK_SETTINGS: 'cash_flow_widget_click_settings',\n DEBTS_CLICK_CHART_AREA: 'debts_widget_click_chart_area',\n DEBTS_CLICK_FILTER: 'debts_widget_click_filter_accounts',\n DEBTS_CLICK_PAYDOWN: 'debts_widget_click_paydown',\n DEBTS_CLICK_PRIORITY: 'debts_widget_click_priority',\n DEBTS_CLICK_PRIORITIZE: 'debts_widget_click_prioritize',\n DEBTS_CLICK_SNOWBALL_CTA: 'debts_widget_click_snowball_cta',\n DEBTS_CLICK_TABLE_ROW: 'debts_widget_click_table_row',\n DEBTS_CLICK_TABLE_SORT: 'debts_widget_click_table_sort',\n DEBTS_SAVE_BALANCE_ACTION: 'debts_widget_click_balance_action',\n DEBTS_SAVE_PAYDOWN_ACTION: 'debts_widget_click_paydown_action',\n DEBTS_SAVE_PAYMENT_ACTION: 'debts_widget_click_payment_action',\n DEBTS_SAVE_RATE_ACTION: 'debts_widget_click_rate_action',\n DEBTS_VIEW: 'debts',\n DEBT_DETAILS_VIEW: 'debt_details',\n DEBT_SCHEDULE_VIEW: 'debt_schedule',\n GOALS_CLICK_ADD: 'goals_widget_click_add',\n GOALS_CLICK_FILTER: 'goals_widget_click_filter_accounts',\n GOALS_VIEW: 'goals',\n GOALS_MICRO_WIDGET_CTA: 'goals_micro_widget_click_see_details_cta',\n HELP_CLICK_CATEGORY: 'help_click_category',\n HELP_CLICK_REQUEST_SUPPORT: 'help_click_requestSupport',\n HELP_CLICK_SUPPORT_FOR_INSTITUTION: 'help_click_supportForInstitution',\n HELP_CLICK_SUPPORT_FOR_MISSING_INSTITUTION: 'help_click_supportForMissingInstitution',\n HELP_CLICK_SUPPORT_TOPIC: 'help_click_supportTopic',\n HELP_CLICK_TOPIC: 'help_click_topic',\n HELP_EXPAND_CATEGORY: 'help_expand_category',\n HELP_EXPAND_TOPIC: 'help_expand_topic',\n HELP_OPEN_SUPPORT_REQUEST: 'help_open_supportRequest',\n HELP_SUBMIT_SUPPORT_REQUEST: 'help_submit_supportRequest',\n INVESTMENTS: 'Investments',\n INVESTMENT_WIDGET_ACCOUNT_FILTER_CLICK: 'investment_widget_account_filter_click',\n INVESTMENT_WIDGET_ALLOCATION_CLICK: 'investment_widget_allocation_click',\n INVESTMENT_WIDGET_ANALYSIS_CLICK: 'investment_widget_analysis_click',\n INVESTMENT_WIDGET_DETAILS_CLICK: 'investment_widget_details_click',\n NET_WORTH_VIEW: 'netWorth',\n NETWORTH_MICRO_WIDGET_CTA: 'net_worth_micro_widget_click_see_details_cta',\n NET_WORTH_WIDGET_CLICK_ASSETS_LIABILITIES: 'net_worth_widget_click_view_assets_liabilities',\n NET_WORTH_WIDGET_CLICK_FILTER: 'net_worth_widget_click_filter_accounts',\n NET_WORTH_WIDGET_CLICK_TIMEFRAME: 'netWorth_click_timePeriod',\n RECURRING_ACTIVITY_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_ACTIVITY_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_ACTIVITY_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_ACTIVITY_CLICK_EXPENSE: 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_ACTIVITY_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_ACTIVITY_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_ACTIVITY_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_ACTIVITY_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_ACTIVITY_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_TRANSACTIONS_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_TRANSACTIONS_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_TRANSACTIONS_CLICK_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_TRANSACTIONS_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_TRANSACTIONS_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_TRANSACTIONS_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_TRANSACTIONS_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_TRANSACTIONS_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_DELETE: 'recurring_transactions_widget_details_click_delete',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_PAYMENT_SCHEDULE:\n 'recurring_transactions_widget_details_click_payment_schedule',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_PAID:\n 'recurring_transactions_widget_list_click_mark_as_paid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_UNPAID:\n 'recurring_transactions_widget_list_click_mark_as_unpaid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MORE_MENU: 'recurring_transactions_widget_list_click_more_menu',\n RECURRING_TRANSACTIONS_MICRO_WIDGET_CTA: 'recurring_transactions_micro_widget_click_view_all_cta',\n SPENDING_CLICK_FILTER: 'spending_widget_click_filter_accounts',\n SPENDING_VIEW: 'spending',\n TRANSACTIONS_ADD_MANUAL_ACCOUNT_MODAL: 'transactions_add_manual_account_modal',\n TRANSACTIONS_CLICK_ADD: 'transactions_click_add_transaction',\n TRANSACTIONS_CLICK_DETAILS: 'transactions_click_transaction_details',\n TRANSACTIONS_CLICK_EXPORT: 'transactions_click_export_csv',\n TRANSACTIONS_CLICK_FILTER: 'transactions_click_filter_accounts',\n TRANSACTIONS_CLICK_SEARCH: 'transactions_click_search',\n TRANSACTIONS_VIEW: 'transactions',\n TRANSACTION_DETAILS_CLICK_AMOUNT: 'transaction_details_click_transaction_amount',\n TRANSACTION_DETAILS_CLICK_CATEGORY: 'transaction_details_click_category',\n TRANSACTION_DETAILS_CLICK_DATE: 'transaction_details_click_date',\n TRANSACTION_DETAILS_CLICK_DELETE_LOGO: 'transaction_details_click_delete_merchant_logo',\n TRANSACTION_DETAILS_CLICK_DESCRIPTION: 'transaction_details_click_edit_description',\n TRANSACTION_DETAILS_CLICK_FLAG: 'transaction_details_click_flag_transaction',\n TRANSACTION_DETAILS_CLICK_MEMO: 'transaction_details_click_memo',\n TRANSACTION_DETAILS_CLICK_SPLIT: 'transaction_details_click_split_transaction',\n TRANSACTION_DETAILS_CLICK_TAGS: 'transaction_details_click_tags',\n TRANSACTION_DETAILS_CLICK_UNSPLIT: 'transaction_details_click_unsplit_transaction',\n TRANSACTION_DETAILS_VIEW: 'transaction_details',\n TRANSACTIONS_TABLE_CLICK_CATEGORY: 'transactions_table_click_category',\n WIDGET_BACK_CLICK: 'widget_back_button_click',\n\n // NEW ANAYTICS EVENT FORMAT\n // widget_action_subject\n GOALS_CLICK_GET_STARTED: 'goals_click_getStarted',\n GOALS_CLICK_VIEW_DETAILS: 'goals_click_viewDetails',\n GOALS_LOAD_WIDGET: 'goals_load_widget',\n NET_WORTH_CLICK_GET_STARTED: 'netWorth_click_getStarted',\n NET_WORTH_CLICK_VIEW_DETAILS: 'netWorth_click_viewDetails',\n NET_WORTH_LOAD_WIDGET: 'netWorth_load_widget',\n RECURRING_TRANSACTIONS_CLICK_GET_STARTED: 'recurringTransactions_click_getStarted',\n RECURRING_TRANSACTIONS_CLICK_VIEW_ALL: 'recurringTransactions_click_viewAll',\n RECURRING_TRANSACTIONS_LOAD_WIDGET: 'recurringTransactions_load_widget',\n TRENDS_CLICK_ALL_CATEGORIES: 'trends_click_allCategories',\n TRENDS_CLICK_BACK: 'trends_click_back',\n TRENDS_CLICK_CHART: 'trends_click_chart',\n TRENDS_CLICK_CONNECT_ACCOUNTS: 'trends_click_connectAccounts',\n TRENDS_CLICK_EXPORT_CSV: 'trends_click_exportCSV',\n TRENDS_CLICK_FILTER: 'trends_click_filter',\n TRENDS_CLICK_GET_STARTED: 'trends_click_getStarted',\n TRENDS_CLICK_INSIGHT: 'trends_click_insight',\n TRENDS_CLICK_LEGEND: 'trends_click_legend',\n TRENDS_CLICK_LIST_ITEM: 'trends_click_listItem',\n TRENDS_CLICK_TABLE_SORT: 'trends_click_tableSort',\n TRENDS_CLICK_TIME_WINDOW: 'trends_click_timeWindow',\n TRENDS_CLICK_TOGGLE_VIEW: 'trends_click_toggleView',\n TRENDS_CLICK_VIEW_MORE: 'trends_click_viewMore',\n TRENDS_CLICK_VIEW_TRANSACTIONS: 'trends_click_viewTransactions',\n TRENDS_HOVER_AREA: 'trends_hover_chartArea',\n TRENDS_HOVER_POINT: 'trends_hover_chartPoint',\n TRENDS_HOVER_LEGEND: 'trends_hover_ChartLegend',\n TRENDS_LOAD_WIDGET: 'trends_load_widget',\n TRENDS_VIEW_TRANSACTIONS: 'trends_view_transactions',\n WIDGET_SIZE_CHANGED: 'widget_size_changed',\n}\n"],"names":["ANALYTICS_EVENTS"],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ import { isSameDay as F } from "date-fns/isSameDay";
|
|
|
21
21
|
import { f as ut, D as pt } from "./DateFormats-HudZ3Bjs.mjs";
|
|
22
22
|
import { k as mt } from "./DateUtil-CzBmbjmA.mjs";
|
|
23
23
|
import { L as Z } from "./Loader-CxeBwuPG.mjs";
|
|
24
|
-
import { A as gt } from "./Analytics-
|
|
24
|
+
import { A as gt } from "./Analytics-D-jdcL72.mjs";
|
|
25
25
|
import At from "@mui/material/Tab";
|
|
26
26
|
import Nt from "@mui/material/Tabs";
|
|
27
27
|
import ft from "@mui/material/IconButton";
|
|
@@ -856,4 +856,4 @@ export {
|
|
|
856
856
|
W as s,
|
|
857
857
|
K as u
|
|
858
858
|
};
|
|
859
|
-
//# sourceMappingURL=EmbeddedCard-
|
|
859
|
+
//# sourceMappingURL=EmbeddedCard-DCOQnTz-.mjs.map
|