@mx-cartographer/experiences 9.1.0-alpha.bb1 → 9.1.0
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 +75 -0
- package/README.md +10 -10
- package/dist/Account-DR7Plrqy.mjs +119 -0
- package/dist/Account-DR7Plrqy.mjs.map +1 -0
- package/dist/AccountDetailsDrawer-CZPeLsCq.mjs +922 -0
- package/dist/AccountDetailsDrawer-CZPeLsCq.mjs.map +1 -0
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs +231 -0
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs.map +1 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs +28 -0
- package/dist/AccountUtils-B8ZzWI-d.mjs.map +1 -0
- package/dist/Analytics-CkYXKvco.mjs +54 -0
- package/dist/Analytics-CkYXKvco.mjs.map +1 -0
- package/dist/Analytics-WeZYytR0.mjs +140 -0
- package/dist/Analytics-WeZYytR0.mjs.map +1 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs +50 -0
- package/dist/ApiEndpoints-DXwIYNUV.mjs.map +1 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs +27 -0
- package/dist/BeatMaterialIcon-1KOfRZrA.mjs.map +1 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs +75 -0
- package/dist/BudgetUtil-Bg2AQJpQ.mjs.map +1 -0
- package/dist/Category-DEKZGLYe.mjs +302 -0
- package/dist/Category-DEKZGLYe.mjs.map +1 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs +431 -0
- package/dist/CategorySelectorDrawer-NJsFsKP1.mjs.map +1 -0
- package/dist/Connect-BH0Pt6zc.mjs +43 -0
- package/dist/Connect-BH0Pt6zc.mjs.map +1 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs +55 -0
- package/dist/ConnectCard-D7uxoH5Y.mjs.map +1 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs +58 -0
- package/dist/ConnectDrawer-CW4LA3H3.mjs.map +1 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs +54 -0
- package/dist/ConnectionsDrawer-CZU9ku-k.mjs.map +1 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs +374 -0
- package/dist/CurrencyDialog-DumQCTPO.mjs.map +1 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs +88 -0
- package/dist/CurrencyInput-DaGEQaLW.mjs.map +1 -0
- package/dist/CurrencyText-CCbE6MmF.mjs +21 -0
- package/dist/CurrencyText-CCbE6MmF.mjs.map +1 -0
- package/dist/DateFormats-HudZ3Bjs.mjs +65 -0
- package/dist/DateFormats-HudZ3Bjs.mjs.map +1 -0
- package/dist/DateUtil-CzBmbjmA.mjs +75 -0
- package/dist/DateUtil-CzBmbjmA.mjs.map +1 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs +154 -0
- package/dist/DebtUtils-i4pI2Uoe.mjs.map +1 -0
- package/dist/Dialog-Bvd2n8hz.mjs +67 -0
- package/dist/Dialog-Bvd2n8hz.mjs.map +1 -0
- package/dist/Donut-SzzfZDHF.mjs +89 -0
- package/dist/Donut-SzzfZDHF.mjs.map +1 -0
- package/dist/Drawer-DsnW2o0v.mjs +175 -0
- package/dist/Drawer-DsnW2o0v.mjs.map +1 -0
- package/dist/EmbeddedCard-DH8vQ3qN.mjs +859 -0
- package/dist/EmbeddedCard-DH8vQ3qN.mjs.map +1 -0
- package/dist/EmptyState-CJUDc3kD.mjs +85 -0
- package/dist/EmptyState-CJUDc3kD.mjs.map +1 -0
- package/dist/Error-Dtw6yxkf.mjs +85 -0
- package/dist/Error-Dtw6yxkf.mjs.map +1 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs +24 -0
- package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +1 -0
- package/dist/ExportCsvAction-C9KWH3Az.mjs +25 -0
- package/dist/ExportCsvAction-C9KWH3Az.mjs.map +1 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs +230 -0
- package/dist/GlobalAccountFilter-BhzR5Vb1.mjs.map +1 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs +129 -0
- package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +1 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs +108 -0
- package/dist/GoalsUtil-C9EnLWvC.mjs.map +1 -0
- package/dist/HeaderCell-P8w6CmfO.mjs +7 -0
- package/dist/HeaderCell-P8w6CmfO.mjs.map +1 -0
- package/dist/Help-CkQTjORd.mjs +300 -0
- package/dist/Help-CkQTjORd.mjs.map +1 -0
- package/dist/Help-aERwhajy.mjs +3210 -0
- package/dist/Help-aERwhajy.mjs.map +1 -0
- package/dist/IconBacking-DgT8DCeh.mjs +40 -0
- package/dist/IconBacking-DgT8DCeh.mjs.map +1 -0
- package/dist/InformationTooltip-4su8bn1e.mjs +42 -0
- package/dist/InformationTooltip-4su8bn1e.mjs.map +1 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs +135 -0
- package/dist/InvestmentUtil-BItV7uEs.mjs.map +1 -0
- package/dist/LineChart-CUfiH86G.mjs +613 -0
- package/dist/LineChart-CUfiH86G.mjs.map +1 -0
- package/dist/ListItemAction-BqUCLj_w.mjs +70 -0
- package/dist/ListItemAction-BqUCLj_w.mjs.map +1 -0
- package/dist/ListItemRow-kH1rn8Xu.mjs +68 -0
- package/dist/ListItemRow-kH1rn8Xu.mjs.map +1 -0
- package/dist/ListItemWrapper-DRse79Iu.mjs +44 -0
- package/dist/ListItemWrapper-DRse79Iu.mjs.map +1 -0
- package/dist/Loader-CxeBwuPG.mjs +22 -0
- package/dist/Loader-CxeBwuPG.mjs.map +1 -0
- package/dist/Localization-DnoVyBNK.mjs +39 -0
- package/dist/Localization-DnoVyBNK.mjs.map +1 -0
- package/dist/ManageIncome-Dcsnnz86.mjs +906 -0
- package/dist/ManageIncome-Dcsnnz86.mjs.map +1 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs +46 -0
- package/dist/MicroWidgetContainer-B2NnKBgW.mjs.map +1 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs +67 -0
- package/dist/MiniWidgetContainer-Bmv_WeUd.mjs.map +1 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs +96 -0
- package/dist/NetWorthUtils-DfSH3z70.mjs.map +1 -0
- package/dist/Notification-DTNYSd8P.mjs +8 -0
- package/dist/Notification-DTNYSd8P.mjs.map +1 -0
- package/dist/NotificationSettings-CW7okUrk.mjs +678 -0
- package/dist/NotificationSettings-CW7okUrk.mjs.map +1 -0
- package/dist/NotificationUtils-BRGFTePr.mjs +24 -0
- package/dist/NotificationUtils-BRGFTePr.mjs.map +1 -0
- package/dist/NumberFormatting--XMeeBfr.mjs +50 -0
- package/dist/NumberFormatting--XMeeBfr.mjs.map +1 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs +115 -0
- package/dist/OriginalBalanceAction-YrvxBYAl.mjs.map +1 -0
- package/dist/RecurringSettings-D8hBbXV_.mjs +89 -0
- package/dist/RecurringSettings-D8hBbXV_.mjs.map +1 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs +299 -0
- package/dist/RecurringTransactionsUtil-CHWmqvW5.mjs.map +1 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs +46 -0
- package/dist/ResponsiveButton-CC9F_Ezk.mjs.map +1 -0
- package/dist/SearchBox-Cpgu_gdO.mjs +51 -0
- package/dist/SearchBox-Cpgu_gdO.mjs.map +1 -0
- package/dist/Select-CSpkK5cR.mjs +62 -0
- package/dist/Select-CSpkK5cR.mjs.map +1 -0
- package/dist/SelectionBox-B4xELRgp.mjs +49 -0
- package/dist/SelectionBox-B4xELRgp.mjs.map +1 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs +70 -0
- package/dist/SingleSegmentDonut-7Uy6VEld.mjs.map +1 -0
- package/dist/Sizes-DISGrlUg.mjs +7 -0
- package/dist/Sizes-DISGrlUg.mjs.map +1 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs +39 -0
- package/dist/SkeletonLoader-BaNboJjD.mjs.map +1 -0
- package/dist/SpendingData-Fii_xATx.mjs +54 -0
- package/dist/SpendingData-Fii_xATx.mjs.map +1 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs +204 -0
- package/dist/SpendingLegend-CxvNOg3c.mjs.map +1 -0
- package/dist/StatusBar-CPfSXe80.mjs +31 -0
- package/dist/StatusBar-CPfSXe80.mjs.map +1 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs +49 -0
- package/dist/TabContentContainer-B0eYJP5p.mjs.map +1 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs +92 -0
- package/dist/ToggleListItem-Dl1lXNwj.mjs.map +1 -0
- package/dist/TransactionDetails-roZ5xLq8.mjs +1708 -0
- package/dist/TransactionDetails-roZ5xLq8.mjs.map +1 -0
- package/dist/TransactionUtils-BphBJBbU.mjs +235 -0
- package/dist/TransactionUtils-BphBJBbU.mjs.map +1 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs +70 -0
- package/dist/TrendsUtil-D9z3kIj_.mjs.map +1 -0
- package/dist/UserStore-C1fdL3Iu.mjs +3054 -0
- package/dist/UserStore-C1fdL3Iu.mjs.map +1 -0
- package/dist/ViewMoreMicroCard-fnwE0hqd.mjs +1280 -0
- package/dist/ViewMoreMicroCard-fnwE0hqd.mjs.map +1 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs +483 -0
- package/dist/WidgetContainer-DJnp6t6c.mjs.map +1 -0
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsDrawer.d.ts +6 -0
- package/dist/accounts/index.d.ts +1 -0
- package/dist/accounts/index.es.js +784 -12
- package/dist/accounts/index.es.js.map +1 -0
- package/dist/analytics/index.es.js +140 -155
- package/dist/analytics/index.es.js.map +1 -0
- package/dist/budgets/index.es.js +1267 -1317
- package/dist/budgets/index.es.js.map +1 -0
- package/dist/cashflow/index.es.js +943 -1047
- package/dist/cashflow/index.es.js.map +1 -0
- package/dist/categories/index.es.js +5 -4
- package/dist/categories/index.es.js.map +1 -0
- package/dist/common/components/DataRow.d.ts +1 -0
- package/dist/common/components/ListItemWrapper.d.ts +2 -1
- package/dist/common/constants/Analytics.d.ts +3 -0
- package/dist/common/index.es.js +310 -101
- package/dist/common/index.es.js.map +1 -0
- package/dist/core/index.es.js +105 -80
- package/dist/core/index.es.js.map +1 -0
- package/dist/core/stores/RecurringTransactionsStore.d.ts +29 -1
- package/dist/core/stores/TransactionStore.d.ts +1 -0
- package/dist/core/types/localization/RecurringCopy.d.ts +14 -1
- package/dist/core/types/localization/SpendingCopy.d.ts +1 -0
- package/dist/core/utils/DateUtil.d.ts +2 -0
- package/dist/core/utils/RecurringTransactionsUtil.d.ts +2 -1
- package/dist/dashboard/index.es.js +142 -185
- package/dist/dashboard/index.es.js.map +1 -0
- package/dist/debts/index.es.js +1273 -1384
- package/dist/debts/index.es.js.map +1 -0
- package/dist/finstrong/index.es.js +3473 -3367
- package/dist/finstrong/index.es.js.map +1 -0
- package/dist/goals/index.es.js +984 -1103
- package/dist/goals/index.es.js.map +1 -0
- package/dist/help/index.es.js +26 -3
- package/dist/help/index.es.js.map +1 -0
- package/dist/hooks-97sNJ_lf.mjs +78 -0
- package/dist/hooks-97sNJ_lf.mjs.map +1 -0
- package/dist/insights/components/insights/WeeklyNoSpendDays/BubbleWeek.d.ts +4 -1
- package/dist/insights/components/insights/WeeklyNoSpendDays/WeeklyNoSpendDays.d.ts +4 -2
- package/dist/insights/index.es.js +4871 -93
- package/dist/insights/index.es.js.map +1 -0
- package/dist/investments/index.es.js +1523 -1533
- package/dist/investments/index.es.js.map +1 -0
- package/dist/merchants/index.es.js +65 -75
- package/dist/merchants/index.es.js.map +1 -0
- package/dist/microinsights/index.es.js +826 -15
- package/dist/microinsights/index.es.js.map +1 -0
- package/dist/networth/index.es.js +504 -550
- package/dist/networth/index.es.js.map +1 -0
- package/dist/notifications/index.es.js +162 -169
- package/dist/notifications/index.es.js.map +1 -0
- package/dist/recurringtransactions/components/RecurringTransactionDetails.d.ts +3 -2
- package/dist/recurringtransactions/components/RecurringTransactionDetailsDrawer.d.ts +3 -0
- package/dist/recurringtransactions/components/RecurringTransactionList.d.ts +11 -0
- package/dist/recurringtransactions/components/UpcomingRecurrenceCard.d.ts +8 -0
- package/dist/recurringtransactions/components/actions/LinkTransactionDrawer.d.ts +10 -0
- package/dist/recurringtransactions/components/actions/MarkAsPaidDialog.d.ts +7 -0
- package/dist/recurringtransactions/components/actions/MarkAsUnpaidDialog.d.ts +7 -0
- package/dist/recurringtransactions/index.es.js +1012 -10
- package/dist/recurringtransactions/index.es.js.map +1 -0
- package/dist/settings/index.es.js +892 -13
- package/dist/settings/index.es.js.map +1 -0
- package/dist/spending/index.es.js +457 -400
- package/dist/spending/index.es.js.map +1 -0
- package/dist/transactions/components/shared/transactionlist/TransactionRow.d.ts +1 -0
- package/dist/transactions/index.es.js +604 -10
- package/dist/transactions/index.es.js.map +1 -0
- package/dist/trends/index.es.js +1408 -1268
- package/dist/trends/index.es.js.map +1 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs +24 -0
- package/dist/useAccountDisplayName-BsiXA0qf.mjs.map +1 -0
- package/dist/useAriaLive-MkYebyUR.mjs +36 -0
- package/dist/useAriaLive-MkYebyUR.mjs.map +1 -0
- package/dist/useDimensions-CeDR9V8N.mjs +37 -0
- package/dist/useDimensions-CeDR9V8N.mjs.map +1 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs +12 -0
- package/dist/useInsightsEnabled-D5Sdm0TJ.mjs.map +1 -0
- package/dist/useScreenSize-mWpmnh5w.mjs +37 -0
- package/dist/useScreenSize-mWpmnh5w.mjs.map +1 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs +20 -0
- package/dist/useWidgetLoadTimer-B0tB-yzL.mjs.map +1 -0
- package/package.json +30 -30
- package/dist/Analytics-BKzTPees.mjs +0 -61
- package/dist/GlobalCopyApi-BeXzaDH9.mjs +0 -487
- package/dist/HeaderCell-EhCUSjvj.mjs +0 -10
- package/dist/Loader-BlVzRtUd.mjs +0 -73
- package/dist/MiniWidgetContainer-COwnjfy7.mjs +0 -110
- package/dist/OriginalBalanceAction-sbiqaxok.mjs +0 -110
- package/dist/SpendingLegend-D15ixlQ1.mjs +0 -222
- package/dist/accounts-DkyAiLpg.mjs +0 -15632
- package/dist/core-BexP5oiV.mjs +0 -4047
- package/dist/help-CctDYrAH.mjs +0 -2308
- package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationMultipleTransaction.test.d.ts +0 -0
- package/dist/insights/components/insights/P2pCategorization/_tests_/P2pCategorizationSingleTransaction.test.d.ts +0 -0
- package/dist/microinsights-CRf3ChsJ.mjs +0 -1814
- package/dist/recurringtransactions-gbJ_NA8u.mjs +0 -1564
- package/dist/settings-ZMHe439l.mjs +0 -1526
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/spending/components/SpendingTabLabel.tsx","../../src/spending/components/MiniSpendingChart.tsx","../../src/spending/SpendingMiniWidget.tsx","../../src/spending/components/SpendingList.tsx","../../src/spending/components/SpendingChart.tsx","../../src/spending/components/Spending.tsx","../../src/spending/SpendingWidget.tsx"],"sourcesContent":["import React from 'react'\n\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface SpendingTabLabelProps {\n amount: number\n label: string\n variant?: 'mini' | 'full'\n}\n\nconst SpendingTabLabel: React.FC<SpendingTabLabelProps> = ({ amount, label, variant = 'full' }) => {\n return (\n <Stack direction=\"column\">\n <Text bold={true} sx={{ textTransform: 'none' }} variant=\"body1\">\n {label}\n </Text>\n <Text variant=\"caption\">{formatCurrency(amount, variant === 'mini' ? '0,0' : '0,0.00')}</Text>\n </Stack>\n )\n}\n\nexport default SpendingTabLabel\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\nimport { useTheme } from '@mui/material/styles'\n\nimport { useCategoryStore, useGlobalCopyStore } from '../../common'\nimport { getIncomeData, getSpendingData } from '../utils/SpendingData'\n\nimport SpendingTabLabel from './SpendingTabLabel'\nimport SpendingDonut from './SpendingDonut'\nimport SpendingLegend from './SpendingLegend'\n\nconst MiniSpendingChart = () => {\n const theme = useTheme()\n const { goals: goalsCopy, spending: spendingCopy } = useGlobalCopyStore()\n const { categories, dateRangeCategoryTotals } = useCategoryStore()\n\n const incomeColors = React.useMemo(\n () => [\n theme.palette.chartMono.chartMono5,\n theme.palette.chartMono.chartMono4,\n theme.palette.chartMono.chartMono3,\n theme.palette.chartMono.chartMono2,\n theme.palette.chartMono.chartMono1,\n theme.palette.chartMono.chartMono6,\n ],\n [theme],\n ) as string[]\n\n const [selectedId, setSelectedId] = React.useState('')\n const [selectedTab, setSelectedTab] = React.useState(0)\n\n const spendingData = React.useMemo(\n () => getSpendingData(categories, goalsCopy, theme, dateRangeCategoryTotals),\n [categories, dateRangeCategoryTotals],\n )\n\n const incomeData = React.useMemo(\n () => getIncomeData(categories, dateRangeCategoryTotals, incomeColors),\n [categories, dateRangeCategoryTotals, incomeColors],\n )\n\n const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {\n setSelectedTab(newValue)\n setSelectedId('')\n }\n\n const handleSelected = (id: string) => {\n setSelectedId(selectedId === id ? '' : id)\n }\n\n return (\n <Box width=\"100%\">\n <Tabs\n aria-label={spendingCopy.mini_title}\n onChange={handleTabChange}\n sx={{ touchAction: 'manipulation' }}\n value={selectedTab}\n variant=\"fullWidth\"\n >\n <Tab\n aria-controls=\"spending-tabpanel\"\n id=\"spending-tab\"\n label={\n <SpendingTabLabel\n amount={spendingData.totalAmount}\n label={spendingCopy.spend_tab_title}\n variant=\"mini\"\n />\n }\n tabIndex={selectedTab === 0 ? 0 : -1}\n />\n <Tab\n aria-controls=\"income-tabpanel\"\n id=\"income-tab\"\n label={\n <SpendingTabLabel\n amount={incomeData.totalAmount}\n label={spendingCopy.income_tab_title}\n variant=\"mini\"\n />\n }\n tabIndex={selectedTab === 1 ? 0 : -1}\n />\n </Tabs>\n <Box\n aria-labelledby=\"spending-tab\"\n hidden={selectedTab !== 0}\n id=\"spending-tabpanel\"\n role=\"tabpanel\"\n >\n <Stack direction=\"row\" gap={16} justifyContent={'center'} p={24}>\n <SpendingDonut\n data={spendingData}\n onSelected={handleSelected}\n selectedId={selectedId}\n totalLabel={spendingCopy.total_spending}\n />\n\n <SpendingLegend data={spendingData} onSelected={handleSelected} selectedId={selectedId} />\n </Stack>\n </Box>\n <Box\n aria-labelledby=\"income-tab\"\n hidden={selectedTab !== 1}\n id=\"income-tabpanel\"\n role=\"tabpanel\"\n >\n <Stack direction=\"row\" gap={16} justifyContent={'center'} p={24}>\n <SpendingDonut\n data={incomeData}\n isIncome={true}\n onSelected={handleSelected}\n selectedId={selectedId}\n totalLabel={spendingCopy.total_income}\n />\n\n <SpendingLegend data={incomeData} onSelected={handleSelected} selectedId={selectedId} />\n </Stack>\n </Box>\n </Box>\n )\n}\n\nexport default observer(MiniSpendingChart)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { endOfMonth } from 'date-fns/endOfMonth'\n\nimport {\n Loader,\n MiniWidgetContainer,\n useAccountStore,\n useCategoryStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n useWidgetLoadTimer,\n} from '../common'\nimport { MiniWidgetProps } from '../core'\n\nimport MiniSpendingChart from './components/MiniSpendingChart'\n\nconst SpendingMiniWidget: React.FC<MiniWidgetProps> = ({ onPrimaryCtaClick, sx = {} }) => {\n const { isAccountDataLoaded, loadAccountData } = useAccountStore()\n const { dateRangeTotalsLoaded, categoriesLoaded, loadCategories, loadDateRangeCategoryTotals } =\n useCategoryStore()\n const { spending: spendingCopy } = useGlobalCopyStore()\n const { isInitialized, selectedAccounts } = useGlobalUiStore()\n\n useWidgetLoadTimer({\n widgetName: 'SpendingMiniWidget',\n isLoaded: dateRangeTotalsLoaded,\n })\n\n React.useEffect(() => {\n if (!isAccountDataLoaded) {\n loadAccountData().finally()\n }\n if (!categoriesLoaded) {\n loadCategories().finally()\n }\n }, [])\n\n React.useEffect(() => {\n loadDateRangeCategoryTotals(\n selectedAccounts,\n startOfMonth(new Date()),\n endOfMonth(new Date()),\n ).finally()\n }, [selectedAccounts])\n\n if (!isInitialized) {\n return <Loader />\n }\n\n return (\n <MiniWidgetContainer\n className=\"mx-exp-spending-miniwidget\"\n onPrimaryCtaClick={onPrimaryCtaClick}\n primaryCtaLabel={spendingCopy.primary_cta}\n primaryCtaLabelAria={spendingCopy.primary_cta_aria}\n sx={{ height: '100%', ...sx }}\n title={spendingCopy.mini_title}\n >\n <MiniSpendingChart />\n </MiniWidgetContainer>\n )\n}\n\nexport default observer(SpendingMiniWidget)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Collapse from '@mui/material/Collapse'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../common'\nimport { SpendingData } from '../utils/SpendingData'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\ninterface SpendingListProps {\n data: SpendingData\n onSelected: (id: string, isSubcategory?: boolean) => void\n selectedId?: string\n title: string\n}\n\nconst SpendingList: React.FC<SpendingListProps> = ({\n data,\n onSelected,\n selectedId = '',\n title,\n}) => {\n const { spending: spendingCopy } = useGlobalCopyStore()\n const selectedCategory = data.categoryData.find((parent) => parent.guid === selectedId)\n\n return (\n <Stack direction=\"column\" justifyContent=\"center\" maxWidth={400} minWidth={275} width=\"100%\">\n <Text bold={true} id=\"spending-list-title\" sx={{ py: 12 }} variant=\"h3\">\n {`${title} ${spendingCopy.by_category}`}\n </Text>\n\n <Divider aria-hidden=\"true\" />\n\n <List aria-labelledby=\"spending-list-title\">\n {data.categoryData.map((item) => (\n <React.Fragment key={item.guid}>\n <ListItem\n disableGutters={true}\n disablePadding={true}\n sx={{\n borderBottom: 1,\n borderColor: 'divider',\n minHeight: 44,\n }}\n >\n <ListItemButton\n aria-expanded={Boolean(selectedCategory?.guid === item.guid)}\n id={`spending-list-category-${item.guid}`}\n onClick={() => onSelected(item.guid)}\n sx={{ minHeight: 44, px: 8, py: 0 }}\n >\n <Box\n aria-hidden=\"true\"\n borderRadius={4}\n flexShrink={0}\n height={8}\n role=\"presentation\"\n sx={{ backgroundColor: item.color, mr: 8 }}\n width={8}\n />\n <Stack\n alignItems=\"center\"\n direction=\"row\"\n justifyContent=\"space-between\"\n width=\"100%\"\n >\n <Text bold={selectedId === item.guid}>{item.name}</Text>\n <Text bold={selectedId === item.guid} variant=\"body1\">\n {formatCurrency(item.amount, '0,0.00')}\n </Text>\n </Stack>\n </ListItemButton>\n </ListItem>\n\n {item.categoryTotals && item.categoryTotals.length > 0 && (\n <Collapse in={Boolean(selectedCategory?.guid === item.guid)} unmountOnExit={true}>\n <List sx={{ borderBottom: 1, borderColor: 'divider' }}>\n {selectedCategory?.categoryTotals?.map((subItem) => (\n <ListItem\n key={subItem.guid}\n sx={{\n pl: 12,\n py: 0,\n }}\n >\n <ListItemButton\n id={`spending-list-subcategory-${subItem.guid}`}\n onClick={() => onSelected(subItem.guid, true)}\n sx={{ minHeight: 44, px: 8, py: 0 }}\n >\n <Stack direction=\"row\" justifyContent=\"space-between\" width=\"100%\">\n <Text>{subItem.name} </Text>\n <Text>{formatCurrency(subItem.amount, '0,0.00')}</Text>\n </Stack>\n </ListItemButton>\n </ListItem>\n ))}\n </List>\n </Collapse>\n )}\n </React.Fragment>\n ))}\n </List>\n\n <Text bold={true} sx={{ mt: 12, pr: 8, textAlign: 'right' }}>\n {`${spendingCopy.total}: ${formatCurrency(data.totalAmount, '0,0.00')}`}\n </Text>\n </Stack>\n )\n}\n\nexport default observer(SpendingList)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { useCategoryStore, useGlobalCopyStore, useScreenSize } from '../../common'\n\nimport { SpendingData } from '../utils/SpendingData'\nimport SpendingDonut from './SpendingDonut'\nimport SpendingList from './SpendingList'\n\ninterface SpendingChartProps {\n data: SpendingData\n title: string\n onSelected: (id: string, isSubcategory?: boolean) => void\n onViewTransactions: (id: string) => void\n selectedId: string\n}\n\nconst SpendingChart: React.FC<SpendingChartProps> = ({\n data,\n onSelected,\n onViewTransactions,\n selectedId,\n title,\n}) => {\n const { isDesktop, isMobile } = useScreenSize()\n const { dateRangeTotalsLoading } = useCategoryStore()\n const { spending: spendingCopy } = useGlobalCopyStore()\n\n const handleDonutSelected = (id: string) => {\n onSelected(id)\n setTimeout(() => document.getElementById(`spending-list-category-${id}`)?.focus(), 0)\n }\n\n const loadingDonut = (\n <SpendingDonut\n data={{\n categoryData: [],\n donutData: [],\n totalAmount: 0,\n }}\n onSelected={() => {}}\n selectedId={''}\n size={isDesktop ? 400 : 300}\n totalLabel={'Loading ...'}\n variant=\"full\"\n />\n )\n\n return (\n <Stack\n alignItems={isMobile ? 'center' : 'flex-start'}\n direction={isMobile ? 'column' : 'row'}\n gap={{ xs: 16, md: 64, xl: 100 }}\n justifyContent=\"center\"\n pt={50}\n px={8}\n >\n {dateRangeTotalsLoading && loadingDonut}\n {/* Not using a ternary here because it doesn't show the animation */}\n {!dateRangeTotalsLoading && (\n <SpendingDonut\n data={data}\n onSelected={handleDonutSelected}\n onViewTransactions={onViewTransactions}\n selectedId={selectedId}\n size={isDesktop ? 400 : 300}\n totalLabel={spendingCopy.total_amount}\n variant=\"full\"\n />\n )}\n\n <SpendingList data={data} onSelected={onSelected} selectedId={selectedId} title={title} />\n </Stack>\n )\n}\n\nexport default observer(SpendingChart)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\nimport { useTheme } from '@mui/material'\nimport type { Theme } from '@mui/system'\n\nimport { Icon } from '@mxenabled/mxui'\n\nimport {\n Drawer,\n useAppConfig,\n useCategoryStore,\n useGlobalCopyStore,\n useGlobalUiStore,\n useTransactionStore,\n} from '../../common'\nimport { CategoryGuids } from '../../core/constants'\nimport { Transaction } from '../../core'\nimport { exportTransactionsToCSV } from '../../core/utils/TransactionUtils'\n\nimport { TransactionDetails, TransactionList } from '../../transactions'\nimport { getIncomeData, getSpendingData } from '../utils/SpendingData'\nimport SpendingChart from './SpendingChart'\nimport SpendingTabLabel from './SpendingTabLabel'\n\nconst getIncomeColors = (theme: Theme) => {\n return [\n theme.palette.chartMono.chartMono5,\n theme.palette.chartMono.chartMono4,\n theme.palette.chartMono.chartMono3,\n theme.palette.chartMono.chartMono2,\n theme.palette.chartMono.chartMono1,\n theme.palette.chartMono.chartMono6,\n ]\n}\n\nconst Spending = () => {\n const theme = useTheme()\n const { is_mobile_webview } = useAppConfig()\n\n const { clientConfig } = useAppConfig()\n const { categories, dateRangeCategoryTotals } = useCategoryStore()\n\n const {\n goals: goalsCopy,\n spending: spendingCopy,\n transactions: transactionCopy,\n } = useGlobalCopyStore()\n const { displayedDateRange, selectedAccountGuids } = useGlobalUiStore()\n const {\n setFilter,\n sortedTransactions: transactions,\n sortedTransactionsWithSplits,\n tags,\n } = useTransactionStore()\n\n const accountGuids = clientConfig?.master?.deep_link_params?.account_guids\n const view = clientConfig?.master?.deep_link_params?.view\n\n const [selectedId, setSelectedId] = React.useState('')\n const [selectedTab, setSelectedTab] = React.useState(view === 'income' ? 1 : 0)\n const [transactionGuid, setTransactionGuid] = React.useState('')\n const [transactionsOpen, setTransactionsOpen] = React.useState(false)\n\n const spendingData = React.useMemo(\n () => getSpendingData(categories, goalsCopy, theme, dateRangeCategoryTotals),\n [categories, dateRangeCategoryTotals],\n )\n\n const incomeData = React.useMemo(\n () => getIncomeData(categories, dateRangeCategoryTotals, getIncomeColors(theme)),\n [categories, dateRangeCategoryTotals],\n )\n\n const transaction = React.useMemo(\n () => transactions.find((t) => t.guid === transactionGuid),\n [transactionGuid, transactions],\n )\n\n const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {\n setSelectedTab(newValue)\n setSelectedId('')\n }\n\n const handleSelected = (id: string, isSubcategory: boolean = false) => {\n if (isSubcategory) {\n handleSelectedSubcategory(id)\n } else {\n setSelectedId(selectedId === id || id === '0' ? '' : id)\n }\n }\n\n const handleSelectedSubcategory = (id: string) => {\n const transactionFilter = {\n accounts: accountGuids ? accountGuids : selectedAccountGuids,\n dateRange: displayedDateRange,\n }\n\n setFilter({\n ...transactionFilter,\n custom: (t: Transaction) =>\n selectedId === 'other' ? t.top_level_category_guid === id : t.category_guid === id,\n showSplits: true,\n })\n\n setTransactionsOpen(true)\n }\n\n const handleViewTransactions = (id: string) => {\n const transactionFilter = {\n accounts: accountGuids ? accountGuids : selectedAccountGuids,\n dateRange: displayedDateRange,\n }\n\n if (selectedTab === 0) {\n // Spending\n if (id === 'other') {\n const other = spendingData.categoryData.find((c) => c.guid === 'other')\n setFilter({\n ...transactionFilter,\n custom: (t: Transaction) =>\n Boolean(other?.categoryTotals?.find((ct) => ct.guid === t.top_level_category_guid)),\n })\n } else {\n setFilter({\n ...transactionFilter,\n custom: (t: Transaction) =>\n id\n ? t.top_level_category_guid === id\n : t.top_level_category_guid !== CategoryGuids.INCOME &&\n t.category_guid !== CategoryGuids.INCOME &&\n t.top_level_category_guid !== CategoryGuids.INVESTMENTS &&\n t.top_level_category_guid !== CategoryGuids.TRANSFER,\n showSplits: Boolean(id),\n })\n }\n } else {\n // Income\n setFilter({\n ...transactionFilter,\n custom: (t: Transaction) =>\n id\n ? t.category_guid === id\n : t.category_guid === CategoryGuids.INCOME ||\n t.top_level_category_guid === CategoryGuids.INCOME,\n })\n }\n\n setTransactionsOpen(true)\n }\n\n const handleExportToCsv = () => {\n exportTransactionsToCSV(sortedTransactionsWithSplits, tags)\n }\n\n return (\n <Box>\n <Tabs onChange={handleTabChange} value={selectedTab} variant=\"fullWidth\">\n <Tab\n label={\n <SpendingTabLabel\n amount={spendingData.totalAmount}\n label={spendingCopy.spend_tab_title}\n />\n }\n />\n <Tab\n label={\n <SpendingTabLabel\n amount={incomeData.totalAmount}\n label={spendingCopy.income_tab_title}\n />\n }\n />\n </Tabs>\n {selectedTab === 0 && (\n <SpendingChart\n data={spendingData}\n onSelected={handleSelected}\n onViewTransactions={handleViewTransactions}\n selectedId={selectedId}\n title={spendingCopy.spend_tab_title}\n />\n )}\n {selectedTab === 1 && (\n <SpendingChart\n data={incomeData}\n onSelected={handleSelected}\n onViewTransactions={handleViewTransactions}\n selectedId={selectedId}\n title={spendingCopy.income_tab_title}\n />\n )}\n <Drawer\n ariaLabelClose={spendingCopy.close_drawer_aria}\n isOpen={transactionsOpen}\n onClose={() => setTransactionsOpen(false)}\n title={spendingCopy.transactions_drawer_title}\n >\n <Stack>\n {!is_mobile_webview && transactions.length > 0 && (\n <Stack direction=\"row\" justifyContent=\"right\" mb={-24} mr={8} mt={8} zIndex={1}>\n <Button\n onClick={handleExportToCsv}\n startIcon={<Icon name=\"ios_share\" />}\n variant=\"text\"\n >\n {transactionCopy.export_csv_btn}\n </Button>\n </Stack>\n )}\n <TransactionList onClick={setTransactionGuid} />\n </Stack>\n </Drawer>\n <Drawer\n ariaLabelClose={spendingCopy.close_drawer_aria}\n isOpen={Boolean(transaction)}\n onClose={() => setTransactionGuid('')}\n title={spendingCopy.transaction_details_drawer_title}\n >\n {transaction && <TransactionDetails transaction={transaction} />}\n </Drawer>\n </Box>\n )\n}\n\nexport default observer(Spending)\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { endOfMonth } from 'date-fns/endOfMonth'\n\nimport Box from '@mui/material/Box'\n\nimport type { DateRange } from '@mui/x-date-pickers-pro'\n\nimport {\n Loader,\n useAccountStore,\n useGlobalUiStore,\n WidgetContainer,\n useEvent,\n ANALYTICS_EVENTS,\n useGlobalCopyStore,\n useAppConfig,\n useCategoryStore,\n useTransactionStore,\n useWidgetLoadTimer,\n} from '../common'\n\nimport type { WidgetProps } from '../core'\n\nimport Spending from './components/Spending'\nimport { parseISO } from 'date-fns/parseISO'\n\ninterface RSpendingWidgetProps extends WidgetProps {\n onBackClick?: () => void\n}\n\nconst SpendingWidget: React.FC<RSpendingWidgetProps> = ({ onBackClick, onMenuClick, sx = {} }) => {\n const { isAccountDataLoaded, loadAccountData } = useAccountStore()\n const { categoriesLoaded, dateRangeTotalsLoaded, loadCategories, loadDateRangeCategoryTotals } =\n useCategoryStore()\n const { isTransactionDataLoaded, loadTransactionData } = useTransactionStore()\n const { spending: spendingCopy } = useGlobalCopyStore()\n const { displayedDateRange, isInitialized, setDisplayedDate, selectedAccounts } =\n useGlobalUiStore()\n const { onEvent } = useEvent()\n\n const { clientConfig } = useAppConfig()\n\n useWidgetLoadTimer({\n widgetName: 'SpendingWidget',\n isLoaded: dateRangeTotalsLoaded,\n })\n\n React.useEffect(() => {\n const dlp = clientConfig?.master?.deep_link_params\n\n const date_range = dlp?.date_range\n ? ([parseISO(dlp.date_range.from), parseISO(dlp.date_range.to)] as DateRange<Date>)\n : ([startOfMonth(startOfToday()), endOfMonth(startOfToday())] as DateRange<Date>)\n\n const startDate = date_range[0] as Date\n const endDate = date_range[1] as Date\n\n setDisplayedDate(startDate, endDate)\n\n if (!isAccountDataLoaded) {\n loadAccountData().finally()\n }\n if (!categoriesLoaded) {\n loadCategories().finally()\n }\n if (!isTransactionDataLoaded) {\n loadTransactionData().finally()\n }\n\n // Load with the dates we just computed rather than reading from the store,\n // which may still hold a stale range set by a previously visited widget.\n if (isInitialized) {\n loadDateRangeCategoryTotals(selectedAccounts, startDate, endDate).finally()\n }\n\n onEvent(ANALYTICS_EVENTS.SPENDING_VIEW)\n }, [])\n\n React.useEffect(() => {\n if (isInitialized) {\n loadDateRangeCategoryTotals(\n selectedAccounts,\n displayedDateRange.start,\n displayedDateRange.end,\n ).finally()\n }\n }, [displayedDateRange, isInitialized, selectedAccounts])\n\n const handleDateChanged = (range: DateRange<Date>) => {\n setDisplayedDate(range[0] as Date, range[1] as Date)\n }\n\n if (!isInitialized) {\n return <Loader />\n }\n\n return (\n <WidgetContainer\n calendarActions={{ onRangeChanged: handleDateChanged }}\n onAccountsFilterClick={() => onEvent(ANALYTICS_EVENTS.SPENDING_CLICK_FILTER)}\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n sx={sx}\n title={spendingCopy.title}\n >\n <Box width=\"100%\">\n <Spending />\n </Box>\n </WidgetContainer>\n )\n}\n\nexport default observer(SpendingWidget)\n"],"names":["SpendingTabLabel","amount","label","variant","jsxs","Stack","jsx","Text","formatCurrency","MiniSpendingChart","theme","useTheme","goalsCopy","spendingCopy","useGlobalCopyStore","categories","dateRangeCategoryTotals","useCategoryStore","incomeColors","React","selectedId","setSelectedId","selectedTab","setSelectedTab","spendingData","getSpendingData","incomeData","getIncomeData","handleTabChange","_event","newValue","handleSelected","id","Box","Tabs","Tab","SpendingDonut","SpendingLegend","MiniSpendingChart$1","observer","SpendingMiniWidget","onPrimaryCtaClick","sx","isAccountDataLoaded","loadAccountData","useAccountStore","dateRangeTotalsLoaded","categoriesLoaded","loadCategories","loadDateRangeCategoryTotals","isInitialized","selectedAccounts","useGlobalUiStore","useWidgetLoadTimer","startOfMonth","endOfMonth","MiniWidgetContainer","Loader","SpendingMiniWidget_default","SpendingList","data","onSelected","title","selectedCategory","parent","Divider","List","item","ListItem","ListItemButton","Collapse","subItem","SpendingList$1","SpendingChart","onViewTransactions","isDesktop","isMobile","useScreenSize","dateRangeTotalsLoading","SpendingChart$1","getIncomeColors","Spending","is_mobile_webview","useAppConfig","clientConfig","transactionCopy","displayedDateRange","selectedAccountGuids","setFilter","transactions","sortedTransactionsWithSplits","tags","useTransactionStore","accountGuids","view","transactionGuid","setTransactionGuid","transactionsOpen","setTransactionsOpen","transaction","t","isSubcategory","handleSelectedSubcategory","handleViewTransactions","transactionFilter","other","c","ct","CategoryGuids","handleExportToCsv","exportTransactionsToCSV","Drawer","Button","Icon","TransactionList","TransactionDetails","Spending$1","SpendingWidget","onBackClick","onMenuClick","isTransactionDataLoaded","loadTransactionData","setDisplayedDate","onEvent","useEvent","dlp","date_range","parseISO","startOfToday","startDate","endDate","ANALYTICS_EVENTS","handleDateChanged","range","WidgetContainer","SpendingWidget_default"],"mappings":"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"}
|