@mx-cartographer/experiences 9.1.1 → 9.1.2

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{AccountDetailsDrawer-C1hhmlmI.mjs → AccountDetailsDrawer-Cq4kiiKD.mjs} +4 -4
  3. package/dist/{AccountDetailsDrawer-C1hhmlmI.mjs.map → AccountDetailsDrawer-Cq4kiiKD.mjs.map} +1 -1
  4. package/dist/{Analytics-WeZYytR0.mjs → Analytics-D-jdcL72.mjs} +3 -3
  5. package/dist/Analytics-D-jdcL72.mjs.map +1 -0
  6. package/dist/{EmbeddedCard-DH8vQ3qN.mjs → EmbeddedCard-DCOQnTz-.mjs} +2 -2
  7. package/dist/{EmbeddedCard-DH8vQ3qN.mjs.map → EmbeddedCard-DCOQnTz-.mjs.map} +1 -1
  8. package/dist/{ExportCsvAction-C9KWH3Az.mjs → ExportCsvAction-C-IisDcv.mjs} +2 -2
  9. package/dist/{ExportCsvAction-C9KWH3Az.mjs.map → ExportCsvAction-C-IisDcv.mjs.map} +1 -1
  10. package/dist/{Help-aERwhajy.mjs → Help-zVZdcmlk.mjs} +2 -2
  11. package/dist/{Help-aERwhajy.mjs.map → Help-zVZdcmlk.mjs.map} +1 -1
  12. package/dist/{ManageIncome-Be9WHv-s.mjs → ManageIncome-B_8i71mE.mjs} +5 -5
  13. package/dist/{ManageIncome-Be9WHv-s.mjs.map → ManageIncome-B_8i71mE.mjs.map} +1 -1
  14. package/dist/{RecurringSettings-kRqAViNn.mjs → RecurringSettings-hs0YUp83.mjs} +3 -3
  15. package/dist/{RecurringSettings-kRqAViNn.mjs.map → RecurringSettings-hs0YUp83.mjs.map} +1 -1
  16. package/dist/{TransactionDetails-roZ5xLq8.mjs → TransactionDetails-DT-MQqOB.mjs} +3 -3
  17. package/dist/{TransactionDetails-roZ5xLq8.mjs.map → TransactionDetails-DT-MQqOB.mjs.map} +1 -1
  18. package/dist/{WidgetContainer-DJnp6t6c.mjs → WidgetContainer-CjdCY4sj.mjs} +21 -21
  19. package/dist/WidgetContainer-CjdCY4sj.mjs.map +1 -0
  20. package/dist/accounts/index.es.js +4 -4
  21. package/dist/budgets/index.es.js +5 -5
  22. package/dist/cashflow/index.es.js +6 -6
  23. package/dist/common/components/daterangeselector/DateRangeSelector.d.ts +5 -0
  24. package/dist/common/index.es.js +2 -2
  25. package/dist/debts/index.es.js +2 -2
  26. package/dist/finstrong/index.es.js +4 -4
  27. package/dist/goals/index.es.js +2 -2
  28. package/dist/help/index.es.js +2 -2
  29. package/dist/insights/index.es.js +2 -2
  30. package/dist/investments/index.es.js +2 -2
  31. package/dist/networth/index.es.js +78 -76
  32. package/dist/networth/index.es.js.map +1 -1
  33. package/dist/recurringtransactions/index.es.js +6 -6
  34. package/dist/settings/index.es.js +2 -2
  35. package/dist/spending/index.es.js +4 -4
  36. package/dist/transactions/index.es.js +7 -7
  37. package/dist/trends/index.es.js +5 -5
  38. package/package.json +1 -1
  39. package/dist/Analytics-WeZYytR0.mjs.map +0 -1
  40. package/dist/WidgetContainer-DJnp6t6c.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../src/networth/components/micro/NetworthData.tsx","../../src/networth/components/micro/ZeroState.tsx","../../src/networth/NetWorthMicroWidget.tsx","../../src/networth/components/NetWorthChart.tsx","../../src/networth/components/NetWorthListItem.tsx","../../src/networth/components/NetWorthChange.tsx","../../src/networth/components/GainsLossesDetail.tsx","../../src/networth/components/AssetsLiabilitiesDetail.tsx","../../src/networth/components/NetWorthList.tsx","../../src/networth/components/NetWorthSummary.tsx","../../src/networth/NetWorthWidget.tsx"],"sourcesContent":["import Stack from '@mui/material/Stack'\n\nimport { P, Text } from '@mxenabled/mxui'\nimport { Icon } from '@mxenabled/mx-icons'\n\nimport { NetWorthCopy } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface NetworthDataProps {\n amount: number\n copy: NetWorthCopy\n trendValue: number\n}\n\nconst NetworthData = ({ amount, copy, trendValue }: NetworthDataProps) => {\n const isTrendUp = trendValue > 0\n const trendDirectionIcon = isTrendUp ? 'trending_up' : 'trending_down'\n const trendIcon = trendValue === 0 ? 'trending_flat' : trendDirectionIcon\n\n return (\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <P variant=\"h1\">{formatCurrency(amount, '0,0')}</P>\n {amount !== 0 && (\n <Stack sx={{ color: isTrendUp ? 'success.main' : 'text.secondary' }}>\n <Stack sx={{ flexDirection: 'row', gap: 8 }}>\n <Icon name={trendIcon} size={20} />\n <Text sx={{ fontWeight: 600, textAlign: 'right' }} variant=\"body1\">\n {formatCurrency(trendValue, '0,0.00')}\n </Text>\n </Stack>\n <Text sx={{ display: 'block', textAlign: 'right' }} variant=\"caption\">\n {copy.this_month}\n </Text>\n </Stack>\n )}\n </Stack>\n )\n}\n\nexport default NetworthData\n","import Stack from '@mui/material/Stack'\n\nimport { P, Text } from '@mxenabled/mxui'\nimport { Icon } from '@mxenabled/mx-icons'\n\nimport { NetWorthCopy } from '../../../core'\n\ninterface ZeroStateProps {\n copy: NetWorthCopy\n}\n\nconst ZeroState = ({ copy }: ZeroStateProps) => {\n return (\n <Stack sx={{ flexDirection: 'row', gap: 12 }}>\n <Icon name=\"elevation\" size={32} sx={{ color: 'text.primary' }} />\n <Stack>\n <Text sx={{ display: 'block', fontWeight: 600 }} variant=\"body1\">\n {copy.empty_widget_header}\n </Text>\n <P sx={{ color: 'text.secondary' }} variant=\"body2\">\n {copy.zero_state_description}\n </P>\n </Stack>\n </Stack>\n )\n}\n\nexport default ZeroState\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport {\n ANALYTICS_EVENTS,\n Loader,\n MicroWidgetContainer,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useGlobalUiStore,\n useNetWorthStore,\n useWidgetLoadTimer,\n} from '../common'\n\nimport NetworthData from './components/micro/NetworthData'\nimport ZeroState from './components/micro/ZeroState'\n\ninterface NetWorthMicroWidgetProps {\n onCTAClick: () => void\n}\n\nexport const NetWorthMicroWidget = observer(({ onCTAClick }: NetWorthMicroWidgetProps) => {\n const { visibleAccounts: accounts } = useAccountStore()\n const { onEvent } = useEvent()\n const { net_worth: copy, common: commonCopy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n const { isNetWorthDataLoaded, loadNetWorthData, netWorthData, selectedData } = useNetWorthStore()\n\n React.useEffect(() => {\n if (!isNetWorthDataLoaded) {\n loadNetWorthData().finally()\n }\n }, [])\n\n useWidgetLoadTimer({\n widgetName: 'NetWorthMicroWidget',\n isLoaded: isNetWorthDataLoaded,\n })\n\n React.useEffect(() => {\n if (isNetWorthDataLoaded) {\n onEvent(ANALYTICS_EVENTS.NET_WORTH_LOAD_WIDGET, {\n state: !accounts?.length ? 'zeroState' : 'default',\n })\n }\n }, [isNetWorthDataLoaded])\n\n if (!isInitialized || !isNetWorthDataLoaded) return <Loader height={100} />\n\n const handleCTAClick = () => {\n onEvent(\n !accounts.length\n ? ANALYTICS_EVENTS.NET_WORTH_CLICK_GET_STARTED\n : ANALYTICS_EVENTS.NET_WORTH_CLICK_VIEW_DETAILS,\n )\n onCTAClick()\n }\n\n return (\n <MicroWidgetContainer\n className=\"mx-networth-microwidget\"\n ctaLabel={commonCopy.see_details}\n onCTAClick={handleCTAClick}\n title={copy.net_worth}\n >\n {netWorthData.accounts.length ? (\n <NetworthData\n amount={selectedData?.y as number}\n copy={copy}\n trendValue={selectedData?.change as number}\n />\n ) : (\n <ZeroState copy={copy} />\n )}\n </MicroWidgetContainer>\n )\n})\n","import React from 'react'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { useNetWorthStore, useScreenSize, useWidgetContainerProvider } from '../../common'\nimport { LineChart } from '../../common/components/charts/LineChart'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\n\nconst NetWorthChart = () => {\n const { isMobile } = useScreenSize()\n const { availableWidth } = useWidgetContainerProvider()\n const theme = useTheme()\n const {\n hoveredData,\n netWorthChartData: chartData,\n selectedData,\n setHoveredIndex,\n setSelectedIndex,\n } = useNetWorthStore()\n\n // on mobile, chart is same width as list; on desktop, chart takes up what the list does not\n const chartWidthNotMobile = availableWidth - 320\n\n const datasets = chartData.map((point) => {\n return {\n x: formatDate(fromUnixTime(point.x), DATE_FORMATS_INTL.MONTH_SHORT),\n y: point.y,\n }\n })\n\n const selectedMark = selectedData\n ? { index: chartData.findIndex((point) => point.x === selectedData.x) }\n : undefined\n\n const hoveredMark = hoveredData\n ? { index: chartData.findIndex((point) => point.x === hoveredData.x) }\n : undefined\n\n const getMarkStyles = (markIndex: number) => {\n return {\n fill: markIndex === selectedMark?.index ? theme.palette.success.main : '',\n filter:\n markIndex === hoveredMark?.index\n ? `drop-shadow(0px 0px 10px ${theme.palette.success.main})`\n : 'none',\n stroke: theme.palette.success.main,\n }\n }\n\n const onMarkClick = (_event: React.MouseEvent<SVGPathElement, MouseEvent>, dataIndex: number) => {\n setSelectedIndex(dataIndex)\n }\n\n const onMouseEnter = (dataIndex: number) => {\n setHoveredIndex(dataIndex)\n }\n\n const onMouseLeave = () => {\n setHoveredIndex(-1)\n }\n\n return (\n <Stack sx={{ width: '100%' }}>\n <LineChart\n baseline=\"min\" // causes the area below the line to be shaded\n chartFor={'networthChart'}\n chartXaxisSx={{ '& .MuiChartsAxis-tickLabel': { transform: 'translateX(8px)' } }}\n chartYaxisSx={{ '& .MuiChartsAxis-tickLabel': { transform: 'translateX(-8px)' } }}\n colors={[theme.palette.success.main]}\n datasets={[datasets]}\n height={350}\n labels={[]}\n margin={{ right: 20, left: 38 }}\n markHandlers={{ onMarkClick, onMouseEnter, onMouseLeave }}\n markStyles={getMarkStyles}\n showArea={true}\n useCustomMark={true}\n valueFormatterString=\"0.0[0]a\" // formatting example -'109,000' -> '109k', 1,092,742 → $1.1m, $1,236 → $1.2k\n width={isMobile ? availableWidth - 48 : chartWidthNotMobile}\n />\n </Stack>\n )\n}\n\nexport default observer(NetWorthChart)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Divider from '@mui/material/Divider'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { CurrencyText } from '../../common/'\n\nimport { fromTimestampToMonthYear } from '../../core/utils/DateUtil'\n\nimport { NetWorth } from '../../core/types/NetWorth'\n\ninterface NetWorthListItemProps {\n item: NetWorth\n getStyles: (item: NetWorth) => { backgroundColor: string; borderBottom: string; color: string }\n isHovered: boolean\n isSelected: boolean\n onItemClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>, dataIndex: number) => void\n onMouseEnter: (dataIndex: number) => void\n onMouseLeave: () => void\n}\n\nconst NetWorthListItem: React.FC<NetWorthListItemProps> = ({\n item: dataPoint,\n getStyles,\n isHovered = false,\n isSelected = false,\n onItemClick,\n onMouseEnter,\n onMouseLeave,\n}) => {\n const [listItemStyles, setListItemStyles] = React.useState({\n color: '',\n })\n\n React.useEffect(() => {\n setListItemStyles(getStyles(dataPoint))\n }, [isHovered, isSelected])\n\n return (\n <React.Fragment key={dataPoint.x}>\n <ListItem\n sx={{\n ...listItemStyles,\n minHeight: 44,\n '&:hover': { color: isSelected ? 'inherit' : listItemStyles.color },\n }}\n >\n <ListItemButton\n onClick={(event) => onItemClick?.(event, dataPoint.x)}\n onMouseEnter={() => onMouseEnter(dataPoint.x)}\n onMouseLeave={() => onMouseLeave()}\n sx={{ minHeight: 20, padding: 12 }}\n >\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\" sx={{ fontWeight: 400 }}>\n <Text variant=\"body1\">{fromTimestampToMonthYear(dataPoint.x)}</Text>\n <CurrencyText amount={dataPoint.y} sx={{ color: 'inherit' }} variant=\"body1\" />\n </Stack>\n }\n />\n </ListItemButton>\n </ListItem>\n <Divider />\n </React.Fragment>\n )\n}\n\nexport default observer(NetWorthListItem)\n","import { observer } from 'mobx-react-lite'\n\nimport { Stack, Theme } from '@mui/material'\nimport { TypographyProps } from '@mui/material/Typography'\nimport { Icon, Text } from '@mxenabled/mxui'\nimport { CurrencyText } from '../../common/components/CurrencyText'\nimport { NetWorth } from '../../core/types/NetWorth'\n\ninterface NetWorthChangeProps {\n netWorth: NetWorth\n currencyVariant?: TypographyProps['variant']\n currencyLabel?: string\n iconSize?: number\n theme: Theme\n}\n\nconst NetWorthChange: React.FC<NetWorthChangeProps> = ({\n currencyLabel,\n currencyVariant = 'body2',\n iconSize,\n netWorth,\n theme,\n}) => {\n let iconColor = theme.palette.secondary.main\n let currencyTextColor = theme.palette.secondary.main\n let iconName = 'trending_flat'\n\n if (netWorth.change < 0) {\n iconName = 'trending_down'\n } else if (netWorth.change > 0) {\n iconColor = theme.palette.success.main\n currencyTextColor = theme.palette.success.main\n iconName = 'trending_up'\n }\n\n return (\n <Stack alignItems=\"center\" direction=\"row\" spacing={4}>\n <Icon\n name={iconName}\n size={iconSize}\n sx={{\n color: iconColor,\n }}\n />\n <CurrencyText amount={netWorth.change} color={currencyTextColor} variant={currencyVariant} />\n <Text variant=\"body2\">{currencyLabel}</Text>\n </Stack>\n )\n}\n\nexport default observer(NetWorthChange)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\n\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { CurrencyText, useGlobalCopyStore } from '../../common/'\nimport { fromTimestampToMonthYear } from '../../core/utils/DateUtil'\n\nimport { GainsLosses } from '../../core/types/NetWorth'\nimport NetWorthChange from './NetWorthChange'\n\nconst GainsLossesDetail: React.FC<GainsLosses> = ({\n netWorth,\n gains,\n losses,\n totalGains,\n totalLosses,\n}) => {\n const { net_worth: copy } = useGlobalCopyStore()\n\n const theme = useTheme()\n\n return (\n <>\n <Stack alignItems=\"center\" justifyContent=\"space-between\" mb={8} pt={24}>\n <Text variant=\"body2\">{fromTimestampToMonthYear(netWorth?.x)}</Text>\n <Text variant=\"body1\">{copy.total_change}</Text>\n {netWorth && (\n <NetWorthChange currencyVariant=\"h1\" iconSize={32} netWorth={netWorth} theme={theme} />\n )}\n </Stack>\n <List>\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.gains}\n </Text>\n <CurrencyText amount={totalGains} sx={{ fontWeight: 400 }} variant=\"caption\" />\n </Stack>\n }\n />\n </ListSubheader>\n {gains?.map((gain) => (\n <React.Fragment key={gain.accountName}>\n <ListItem sx={{ backgroundColor: theme.palette.background.paper, py: 14 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ mr: 10 }} variant=\"body1\">\n {gain.accountName}\n </Text>\n <CurrencyText\n amount={gain.gain}\n sx={{ color: theme.palette.success.main, flexShrink: 0, fontWeight: 700 }}\n variant=\"body1\"\n />\n </Stack>\n }\n sx={{ px: 16 }}\n />\n </ListItem>\n <Divider />\n </React.Fragment>\n ))}\n\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.losses}\n </Text>\n <CurrencyText amount={totalLosses} sx={{ fontWeight: 400 }} variant=\"caption\" />\n </Stack>\n }\n />\n </ListSubheader>\n {losses?.map((loss) => (\n <>\n <ListItem\n key={loss.accountName}\n sx={{ backgroundColor: theme.palette.background.paper, py: 14 }}\n >\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text\n sx={{\n mr: 10,\n }}\n variant=\"body1\"\n >\n {loss.accountName}\n </Text>\n <CurrencyText\n amount={loss.loss}\n sx={{ flexShrink: 0, fontWeight: 700 }}\n variant=\"body1\"\n />\n </Stack>\n }\n sx={{ px: 16 }}\n />\n </ListItem>\n <Divider />\n </>\n ))}\n </List>\n </>\n )\n}\n\nexport default observer(GainsLossesDetail)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\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 ListItemButton from '@mui/material/ListItemButton'\nimport ListItemIcon from '@mui/material/ListItemIcon'\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'\n\nimport { CurrencyText, useGlobalCopyStore } from '../../common/'\nimport NetWorthChange from './NetWorthChange'\nimport { AccountGroup, AssetsLiabilities } from '../../core/types/NetWorth'\nimport { groupAccounts } from '../../core/utils/NetWorthUtils'\n\nconst Group: React.FC<AccountGroup> = ({ accounts, name, icon }) => {\n const [isOpen, setIsOpen] = React.useState(false)\n\n return (\n <>\n <ListItem sx={(theme) => ({ backgroundColor: theme.palette.background.paper })}>\n <ListItemButton onClick={() => setIsOpen(!isOpen)}>\n {icon && (\n <ListItemIcon>\n <Icon name={icon} size={24} sx={{ mr: 12 }} />\n </ListItemIcon>\n )}\n <ListItemText\n primary={\n <Text sx={{ fontWeight: 700 }} variant=\"body1\">\n {name}\n </Text>\n }\n />\n <ListItemIcon>\n {isOpen ? <Icon name=\"expand_less\" size={24} /> : <Icon name=\"expand_more\" size={24} />}\n </ListItemIcon>\n </ListItemButton>\n </ListItem>\n <Divider />\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit={true}>\n {accounts.map((account, index) => (\n <List key={account.accountName}>\n <ListItem sx={() => ({ py: 14 })}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\" sx={{ fontWeight: 400 }}>\n <Text\n sx={{\n marginRight: 10,\n }}\n variant=\"body1\"\n >\n {account.accountName}\n </Text>\n <CurrencyText\n amount={account.balance}\n sx={{\n flexShrink: 0,\n }}\n variant=\"body2\"\n />\n </Stack>\n }\n sx={{ pl: 72, pr: 16 }}\n />\n </ListItem>\n {index < accounts.length - 1 ? <Divider variant=\"inset\" /> : <Divider />}\n </List>\n ))}\n </Collapse>\n </>\n )\n}\n\nconst ListGroup: React.FC<{\n groupedAccounts: AccountGroup[]\n}> = ({ groupedAccounts }) => (\n <>\n {groupedAccounts.map(({ accounts, icon, name }) => (\n <Group accounts={accounts} icon={icon} key={name} name={name} />\n ))}\n </>\n)\n\nconst AssetsLiabilitiesDetail: React.FC<AssetsLiabilities> = ({\n netWorth,\n assets,\n liabilities,\n totalAssets,\n totalLiabilities,\n}) => {\n const { net_worth: copy } = useGlobalCopyStore()\n\n const theme = useTheme()\n\n return (\n <>\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n paddingTop: 24,\n marginBottom: 8,\n }}\n >\n <Text variant=\"body1\">{copy.current_net_worth}</Text>\n <CurrencyText amount={netWorth?.y ?? 0} variant=\"h1\" />\n {netWorth && (\n <NetWorthChange\n currencyLabel={copy.this_month}\n iconSize={20}\n netWorth={netWorth}\n theme={theme}\n />\n )}\n </Box>\n <List>\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.assets}\n </Text>\n <CurrencyText amount={totalAssets} sx={{ fontWeight: 400 }} variant=\"caption\" />\n </Stack>\n }\n />\n </ListSubheader>\n <ListGroup groupedAccounts={groupAccounts(assets)} />\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.liabilities}\n </Text>\n <CurrencyText\n amount={totalLiabilities}\n sx={{ fontWeight: 400 }}\n variant=\"caption\"\n />\n </Stack>\n }\n />\n </ListSubheader>\n <ListGroup groupedAccounts={groupAccounts(liabilities)} />\n </List>\n </>\n )\n}\n\nexport default observer(AssetsLiabilitiesDetail)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n useEvent,\n useGlobalCopyStore,\n useNetWorthStore,\n} from '../../common'\n\nimport type { NetWorth } from '../../core/types/NetWorth'\n\nimport NetWorthListItem from './NetWorthListItem'\nimport GainsLossesDetail from './GainsLossesDetail'\nimport AssetsLiabilitiesDetail from './AssetsLiabilitiesDetail'\n\nconst NetWorthList = () => {\n const { net_worth: copy } = useGlobalCopyStore()\n const theme = useTheme()\n const { onEvent } = useEvent()\n\n const {\n assetsLiabilities,\n gainsLosses,\n hoveredData,\n netWorthChartData: chartData,\n selectedData,\n setHoveredIndex,\n setSelectedIndex,\n } = useNetWorthStore()\n\n const [isGlDrawerOpen, setIsGlDrawerOpen] = React.useState(false)\n const [isAlDrawerOpen, setIsAlDrawerOpen] = React.useState(false)\n\n const buildStyles = (lineItem: NetWorth) => {\n const isHovered = lineItem.x === hoveredData?.x\n const isSelected = lineItem.x === selectedData?.x\n\n const listItemStyles = {\n backgroundColor: 'inherit',\n borderBottom: 'inherit',\n color: 'inherit',\n }\n\n if (isHovered) {\n listItemStyles.color = isSelected ? 'inherit' : listItemStyles.color\n listItemStyles.backgroundColor = theme.palette.action.hover\n }\n\n if (isSelected) {\n listItemStyles.backgroundColor = theme.palette.primary.main\n listItemStyles.borderBottom = theme.palette.neutral.light\n listItemStyles.color = theme.palette.common.white\n }\n\n return listItemStyles\n }\n\n const handleListItemClick = (\n event: React.MouseEvent<SVGPathElement | HTMLDivElement, MouseEvent>,\n dataIndex: number,\n ) => {\n setSelectedIndex(dataIndex)\n if (event.currentTarget instanceof HTMLDivElement) {\n setIsGlDrawerOpen(true)\n }\n }\n\n const handleOpenALDrawer = () => {\n setIsAlDrawerOpen(true)\n onEvent(ANALYTICS_EVENTS.NET_WORTH_WIDGET_CLICK_ASSETS_LIABILITIES)\n }\n\n const handleMouseEnter = (dataIndex: number) => {\n setHoveredIndex(dataIndex)\n }\n\n const handleMouseLeave = () => {\n setHoveredIndex(-1)\n }\n\n return (\n <Stack direction=\"column\" sx={{ width: 320 }}>\n <List>\n <ListSubheader sx={{ backgroundColor: 'transparent', mb: 8, mt: 12, px: 12 }}>\n <Text bold={true} component=\"h2\" variant=\"body1\">\n {copy.monthly_totals}\n </Text>\n </ListSubheader>\n <Divider />\n {chartData.map((dataPoint: NetWorth, index: number) => {\n return (\n <NetWorthListItem\n getStyles={buildStyles}\n isHovered={dataPoint.x === hoveredData?.x}\n isSelected={dataPoint.x === selectedData?.x}\n item={dataPoint}\n key={dataPoint.x}\n onItemClick={(event) => handleListItemClick(event, index)}\n onMouseEnter={() => handleMouseEnter(index)}\n onMouseLeave={() => handleMouseLeave()}\n />\n )\n })}\n </List>\n <Button\n onClick={() => handleOpenALDrawer()}\n sx={{ alignSelf: 'center', marginTop: 16, width: 'fit-content' }}\n variant=\"outlined\"\n >\n {copy.view_assets_and_liabilities}\n </Button>\n\n <Drawer\n ariaLabelClose={'Close'}\n isOpen={isGlDrawerOpen}\n onClose={() => setIsGlDrawerOpen(false)}\n shouldShowHeaderBorders={false}\n shouldShowHeaderShadow={true}\n title={copy.gains_and_losses}\n >\n {gainsLosses && <GainsLossesDetail {...gainsLosses} />}\n </Drawer>\n <Drawer\n ariaLabelClose={'Close'}\n isOpen={isAlDrawerOpen}\n onClose={() => setIsAlDrawerOpen(false)}\n shouldShowHeaderBorders={false}\n shouldShowHeaderShadow={true}\n title={copy.assets_and_liabilities}\n >\n {assetsLiabilities && <AssetsLiabilitiesDetail {...assetsLiabilities} />}\n </Drawer>\n </Stack>\n )\n}\n\nexport default observer(NetWorthList)\n","import { observer } from 'mobx-react-lite'\nimport { fromUnixTime, format } from 'date-fns'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { CurrencyText, useGlobalCopyStore } from '../../common/'\nimport NetWorthChange from './NetWorthChange'\nimport { NetWorth } from '../../core/types/NetWorth'\n\ninterface NetWorthSummaryProps {\n hoveredData?: NetWorth\n selectedData: NetWorth\n}\n\nconst NetWorthSummary: React.FC<NetWorthSummaryProps> = ({ hoveredData, selectedData }) => {\n const { net_worth: copy } = useGlobalCopyStore()\n const theme = useTheme()\n const summary = hoveredData ? hoveredData : selectedData\n\n const formattedMonth = format(fromUnixTime(summary.x), 'MMMM')\n\n return (\n <Stack alignItems=\"center\" direction=\"column\" m={24}>\n <Text color={theme.palette.secondary.main} variant=\"body2\">\n {`${formattedMonth} ${copy.net_worth}`}\n </Text>\n <CurrencyText amount={summary.y} variant=\"h2\" />\n <NetWorthChange currencyLabel={copy.this_month} netWorth={summary} theme={theme} />\n </Stack>\n )\n}\n\nexport default observer(NetWorthSummary)\n","import React from 'react'\nimport { differenceInMonths } from 'date-fns'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\n\nimport type { DateRange } from '@mui/x-date-pickers-pro'\n\nimport ConnectionsDrawer from '../accounts/components/ConnectionsDrawer'\nimport {\n ANALYTICS_EVENTS,\n EmptyState,\n Loader,\n useEvent,\n useGlobalCopyStore,\n useGlobalUiStore,\n useNetWorthStore,\n useScreenSize,\n useWidgetLoadTimer,\n WidgetContainer,\n} from '../common'\nimport { WidgetProps } from '../core'\n\nimport NetWorthChart from './components/NetWorthChart'\nimport NetWorthList from './components/NetWorthList'\nimport NetWorthSummary from './components/NetWorthSummary'\n\nexport const NetWorthWidget: React.FC<WidgetProps> = observer(({ onBackClick, onMenuClick }) => {\n const { isInitialized } = useGlobalUiStore()\n const { accounts: accountsCopy, net_worth: copy } = useGlobalCopyStore()\n const {\n hoveredData,\n isNetWorthDataLoaded,\n loadNetWorthData,\n netWorthChartData,\n selectedData,\n setTimeframe,\n timeframe,\n } = useNetWorthStore()\n const { isMobile } = useScreenSize()\n const { onEvent } = useEvent()\n\n const [showConnectionsWidget, setShowConnectionsWidget] = React.useState(false)\n\n useWidgetLoadTimer({\n widgetName: 'NetWorthWidget',\n isLoaded: isNetWorthDataLoaded,\n })\n\n React.useEffect(() => {\n if (!isNetWorthDataLoaded) {\n loadNetWorthData().finally()\n }\n onEvent(ANALYTICS_EVENTS.NET_WORTH_VIEW)\n }, [])\n\n React.useEffect(() => {\n onEvent(ANALYTICS_EVENTS.NET_WORTH_WIDGET_CLICK_TIMEFRAME, { time_period: timeframe + 'M' })\n }, [timeframe])\n\n const handleRangeChanged = async (range: DateRange<Date>) => {\n const startDate = range[0]\n const endDate = range[1]\n\n if (startDate && endDate) {\n setTimeframe(differenceInMonths(endDate, startDate))\n }\n }\n\n const handleManageConnections = () => {\n setShowConnectionsWidget(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNTS_CLICK_CONNECT)\n }\n\n if (!isInitialized || !isNetWorthDataLoaded) return <Loader />\n\n const showEmptyState = netWorthChartData.length === 0\n\n return (\n <WidgetContainer\n calendarActions={{ onRangeChanged: handleRangeChanged }}\n dateRangeVariant={isMobile ? 'timeframetabs' : 'timeframebuttons'}\n onAccountsFilterClick={() => onEvent(ANALYTICS_EVENTS.NET_WORTH_WIDGET_CLICK_FILTER)}\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n title={copy.net_worth}\n >\n {!showEmptyState ? (\n <>\n {selectedData && (\n <NetWorthSummary hoveredData={hoveredData} selectedData={selectedData} />\n )}\n <Stack\n alignItems={isMobile ? 'center' : 'flex-start'}\n direction={isMobile ? 'column' : 'row'}\n spacing={isMobile ? 0 : 48}\n >\n <NetWorthChart />\n <NetWorthList />\n </Stack>\n </>\n ) : (\n <Box sx={{ justifyItems: 'center' }}>\n <EmptyState\n header={copy.empty_widget_header}\n icon={'elevation'}\n onClick={handleManageConnections}\n primaryButton={copy.empty_widget_button}\n subText={copy.empty_widget_description}\n sx={{\n width: { sm: 432 },\n '.buttons-footer': {\n width: 167,\n },\n }}\n />\n </Box>\n )}\n\n <ConnectionsDrawer\n onClose={() => setShowConnectionsWidget(false)}\n showConnectionsWidget={showConnectionsWidget}\n title={accountsCopy.manage_connections}\n />\n </WidgetContainer>\n )\n})\n"],"names":["NetworthData","amount","copy","trendValue","isTrendUp","trendIcon","jsxs","Stack","jsx","P","formatCurrency","Icon","Text","ZeroState","NetWorthMicroWidget","observer","onCTAClick","accounts","useAccountStore","onEvent","useEvent","commonCopy","useGlobalCopyStore","isInitialized","useGlobalUiStore","isNetWorthDataLoaded","loadNetWorthData","netWorthData","selectedData","useNetWorthStore","React","useWidgetLoadTimer","ANALYTICS_EVENTS","Loader","handleCTAClick","MicroWidgetContainer","NetWorthChart","isMobile","useScreenSize","availableWidth","useWidgetContainerProvider","theme","useTheme","hoveredData","chartData","setHoveredIndex","setSelectedIndex","chartWidthNotMobile","datasets","point","formatDate","fromUnixTime","DATE_FORMATS_INTL","selectedMark","hoveredMark","getMarkStyles","markIndex","onMarkClick","_event","dataIndex","onMouseEnter","onMouseLeave","LineChart","NetWorthChart$1","NetWorthListItem","dataPoint","getStyles","isHovered","isSelected","onItemClick","listItemStyles","setListItemStyles","ListItem","ListItemButton","event","ListItemText","fromTimestampToMonthYear","CurrencyText","Divider","NetWorthListItem$1","NetWorthChange","currencyLabel","currencyVariant","iconSize","netWorth","iconColor","currencyTextColor","iconName","NetWorthChange$1","GainsLossesDetail","gains","losses","totalGains","totalLosses","Fragment","List","ListSubheader","gain","loss","GainsLossesDetail$1","Group","name","icon","isOpen","setIsOpen","ListItemIcon","Collapse","account","index","ListGroup","groupedAccounts","AssetsLiabilitiesDetail","assets","liabilities","totalAssets","totalLiabilities","Box","groupAccounts","AssetsLiabilitiesDetail$1","NetWorthList","assetsLiabilities","gainsLosses","isGlDrawerOpen","setIsGlDrawerOpen","isAlDrawerOpen","setIsAlDrawerOpen","buildStyles","lineItem","handleListItemClick","handleOpenALDrawer","handleMouseEnter","handleMouseLeave","Button","Drawer","NetWorthList$1","NetWorthSummary","summary","formattedMonth","format","NetWorthSummary$1","NetWorthWidget","onBackClick","onMenuClick","accountsCopy","netWorthChartData","setTimeframe","timeframe","showConnectionsWidget","setShowConnectionsWidget","handleRangeChanged","range","startDate","endDate","differenceInMonths","handleManageConnections","showEmptyState","WidgetContainer","EmptyState","ConnectionsDrawer"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../src/networth/components/micro/NetworthData.tsx","../../src/networth/components/micro/ZeroState.tsx","../../src/networth/NetWorthMicroWidget.tsx","../../src/networth/components/NetWorthChart.tsx","../../src/networth/components/NetWorthListItem.tsx","../../src/networth/components/NetWorthChange.tsx","../../src/networth/components/GainsLossesDetail.tsx","../../src/networth/components/AssetsLiabilitiesDetail.tsx","../../src/networth/components/NetWorthList.tsx","../../src/networth/components/NetWorthSummary.tsx","../../src/networth/NetWorthWidget.tsx"],"sourcesContent":["import Stack from '@mui/material/Stack'\n\nimport { P, Text } from '@mxenabled/mxui'\nimport { Icon } from '@mxenabled/mx-icons'\n\nimport { NetWorthCopy } from '../../../core'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface NetworthDataProps {\n amount: number\n copy: NetWorthCopy\n trendValue: number\n}\n\nconst NetworthData = ({ amount, copy, trendValue }: NetworthDataProps) => {\n const isTrendUp = trendValue > 0\n const trendDirectionIcon = isTrendUp ? 'trending_up' : 'trending_down'\n const trendIcon = trendValue === 0 ? 'trending_flat' : trendDirectionIcon\n\n return (\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <P variant=\"h1\">{formatCurrency(amount, '0,0')}</P>\n {amount !== 0 && (\n <Stack sx={{ color: isTrendUp ? 'success.main' : 'text.secondary' }}>\n <Stack sx={{ flexDirection: 'row', gap: 8 }}>\n <Icon name={trendIcon} size={20} />\n <Text sx={{ fontWeight: 600, textAlign: 'right' }} variant=\"body1\">\n {formatCurrency(trendValue, '0,0.00')}\n </Text>\n </Stack>\n <Text sx={{ display: 'block', textAlign: 'right' }} variant=\"caption\">\n {copy.this_month}\n </Text>\n </Stack>\n )}\n </Stack>\n )\n}\n\nexport default NetworthData\n","import Stack from '@mui/material/Stack'\n\nimport { P, Text } from '@mxenabled/mxui'\nimport { Icon } from '@mxenabled/mx-icons'\n\nimport { NetWorthCopy } from '../../../core'\n\ninterface ZeroStateProps {\n copy: NetWorthCopy\n}\n\nconst ZeroState = ({ copy }: ZeroStateProps) => {\n return (\n <Stack sx={{ flexDirection: 'row', gap: 12 }}>\n <Icon name=\"elevation\" size={32} sx={{ color: 'text.primary' }} />\n <Stack>\n <Text sx={{ display: 'block', fontWeight: 600 }} variant=\"body1\">\n {copy.empty_widget_header}\n </Text>\n <P sx={{ color: 'text.secondary' }} variant=\"body2\">\n {copy.zero_state_description}\n </P>\n </Stack>\n </Stack>\n )\n}\n\nexport default ZeroState\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport {\n ANALYTICS_EVENTS,\n Loader,\n MicroWidgetContainer,\n useAccountStore,\n useEvent,\n useGlobalCopyStore,\n useGlobalUiStore,\n useNetWorthStore,\n useWidgetLoadTimer,\n} from '../common'\n\nimport NetworthData from './components/micro/NetworthData'\nimport ZeroState from './components/micro/ZeroState'\n\ninterface NetWorthMicroWidgetProps {\n onCTAClick: () => void\n}\n\nexport const NetWorthMicroWidget = observer(({ onCTAClick }: NetWorthMicroWidgetProps) => {\n const { visibleAccounts: accounts } = useAccountStore()\n const { onEvent } = useEvent()\n const { net_worth: copy, common: commonCopy } = useGlobalCopyStore()\n const { isInitialized } = useGlobalUiStore()\n const { isNetWorthDataLoaded, loadNetWorthData, netWorthData, selectedData } = useNetWorthStore()\n\n React.useEffect(() => {\n if (!isNetWorthDataLoaded) {\n loadNetWorthData().finally()\n }\n }, [])\n\n useWidgetLoadTimer({\n widgetName: 'NetWorthMicroWidget',\n isLoaded: isNetWorthDataLoaded,\n })\n\n React.useEffect(() => {\n if (isNetWorthDataLoaded) {\n onEvent(ANALYTICS_EVENTS.NET_WORTH_LOAD_WIDGET, {\n state: !accounts?.length ? 'zeroState' : 'default',\n })\n }\n }, [isNetWorthDataLoaded])\n\n if (!isInitialized || !isNetWorthDataLoaded) return <Loader height={100} />\n\n const handleCTAClick = () => {\n onEvent(\n !accounts.length\n ? ANALYTICS_EVENTS.NET_WORTH_CLICK_GET_STARTED\n : ANALYTICS_EVENTS.NET_WORTH_CLICK_VIEW_DETAILS,\n )\n onCTAClick()\n }\n\n return (\n <MicroWidgetContainer\n className=\"mx-networth-microwidget\"\n ctaLabel={commonCopy.see_details}\n onCTAClick={handleCTAClick}\n title={copy.net_worth}\n >\n {netWorthData.accounts.length ? (\n <NetworthData\n amount={selectedData?.y as number}\n copy={copy}\n trendValue={selectedData?.change as number}\n />\n ) : (\n <ZeroState copy={copy} />\n )}\n </MicroWidgetContainer>\n )\n})\n","import React from 'react'\nimport { fromUnixTime } from 'date-fns/fromUnixTime'\nimport { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { useNetWorthStore, useScreenSize, useWidgetContainerProvider } from '../../common'\nimport { LineChart } from '../../common/components/charts/LineChart'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\n\nconst NetWorthChart = () => {\n const { isMobile } = useScreenSize()\n const { availableWidth } = useWidgetContainerProvider()\n const theme = useTheme()\n const {\n hoveredData,\n netWorthChartData: chartData,\n selectedData,\n setHoveredIndex,\n setSelectedIndex,\n } = useNetWorthStore()\n\n // on mobile, chart is same width as list; on desktop, chart takes up what the list does not\n const chartWidthNotMobile = availableWidth - 320\n\n const datasets = chartData.map((point) => {\n return {\n x: formatDate(fromUnixTime(point.x), DATE_FORMATS_INTL.MONTH_SHORT),\n y: point.y,\n }\n })\n\n const selectedMark = selectedData\n ? { index: chartData.findIndex((point) => point.x === selectedData.x) }\n : undefined\n\n const hoveredMark = hoveredData\n ? { index: chartData.findIndex((point) => point.x === hoveredData.x) }\n : undefined\n\n const getMarkStyles = (markIndex: number) => {\n return {\n fill: markIndex === selectedMark?.index ? theme.palette.success.main : '',\n filter:\n markIndex === hoveredMark?.index\n ? `drop-shadow(0px 0px 10px ${theme.palette.success.main})`\n : 'none',\n stroke: theme.palette.success.main,\n }\n }\n\n const onMarkClick = (_event: React.MouseEvent<SVGPathElement, MouseEvent>, dataIndex: number) => {\n setSelectedIndex(dataIndex)\n }\n\n const onMouseEnter = (dataIndex: number) => {\n setHoveredIndex(dataIndex)\n }\n\n const onMouseLeave = () => {\n setHoveredIndex(-1)\n }\n\n return (\n <Stack sx={{ width: '100%' }}>\n <LineChart\n baseline=\"min\" // causes the area below the line to be shaded\n chartFor={'networthChart'}\n chartXaxisSx={{ '& .MuiChartsAxis-tickLabel': { transform: 'translateX(8px)' } }}\n chartYaxisSx={{ '& .MuiChartsAxis-tickLabel': { transform: 'translateX(-8px)' } }}\n colors={[theme.palette.success.main]}\n datasets={[datasets]}\n height={350}\n labels={[]}\n margin={{ right: 20, left: 38 }}\n markHandlers={{ onMarkClick, onMouseEnter, onMouseLeave }}\n markStyles={getMarkStyles}\n showArea={true}\n useCustomMark={true}\n valueFormatterString=\"0.0[0]a\" // formatting example -'109,000' -> '109k', 1,092,742 → $1.1m, $1,236 → $1.2k\n width={isMobile ? availableWidth - 48 : chartWidthNotMobile}\n />\n </Stack>\n )\n}\n\nexport default observer(NetWorthChart)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Divider from '@mui/material/Divider'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { CurrencyText } from '../../common/'\n\nimport { fromTimestampToMonthYear } from '../../core/utils/DateUtil'\n\nimport { NetWorth } from '../../core/types/NetWorth'\n\ninterface NetWorthListItemProps {\n item: NetWorth\n getStyles: (item: NetWorth) => { backgroundColor: string; borderBottom: string; color: string }\n isHovered: boolean\n isSelected: boolean\n onItemClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>, dataIndex: number) => void\n onMouseEnter: (dataIndex: number) => void\n onMouseLeave: () => void\n}\n\nconst NetWorthListItem: React.FC<NetWorthListItemProps> = ({\n item: dataPoint,\n getStyles,\n isHovered = false,\n isSelected = false,\n onItemClick,\n onMouseEnter,\n onMouseLeave,\n}) => {\n const [listItemStyles, setListItemStyles] = React.useState({\n color: '',\n })\n\n React.useEffect(() => {\n setListItemStyles(getStyles(dataPoint))\n }, [isHovered, isSelected])\n\n return (\n <React.Fragment key={dataPoint.x}>\n <ListItem\n sx={{\n ...listItemStyles,\n minHeight: 44,\n '&:hover': { color: isSelected ? 'inherit' : listItemStyles.color },\n }}\n >\n <ListItemButton\n onClick={(event) => onItemClick?.(event, dataPoint.x)}\n onMouseEnter={() => onMouseEnter(dataPoint.x)}\n onMouseLeave={() => onMouseLeave()}\n sx={{ minHeight: 20, padding: 12 }}\n >\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\" sx={{ fontWeight: 400 }}>\n <Text variant=\"body1\">{fromTimestampToMonthYear(dataPoint.x)}</Text>\n <CurrencyText amount={dataPoint.y} sx={{ color: 'inherit' }} variant=\"body1\" />\n </Stack>\n }\n />\n </ListItemButton>\n </ListItem>\n <Divider />\n </React.Fragment>\n )\n}\n\nexport default observer(NetWorthListItem)\n","import { observer } from 'mobx-react-lite'\n\nimport { Stack, Theme } from '@mui/material'\nimport { TypographyProps } from '@mui/material/Typography'\nimport { Icon, Text } from '@mxenabled/mxui'\nimport { CurrencyText } from '../../common/components/CurrencyText'\nimport { NetWorth } from '../../core/types/NetWorth'\n\ninterface NetWorthChangeProps {\n netWorth: NetWorth\n currencyVariant?: TypographyProps['variant']\n currencyLabel?: string\n iconSize?: number\n theme: Theme\n}\n\nconst NetWorthChange: React.FC<NetWorthChangeProps> = ({\n currencyLabel,\n currencyVariant = 'body2',\n iconSize,\n netWorth,\n theme,\n}) => {\n let iconColor = theme.palette.secondary.main\n let currencyTextColor = theme.palette.secondary.main\n let iconName = 'trending_flat'\n\n if (netWorth.change < 0) {\n iconName = 'trending_down'\n } else if (netWorth.change > 0) {\n iconColor = theme.palette.success.main\n currencyTextColor = theme.palette.success.main\n iconName = 'trending_up'\n }\n\n return (\n <Stack alignItems=\"center\" direction=\"row\" spacing={4}>\n <Icon\n name={iconName}\n size={iconSize}\n sx={{\n color: iconColor,\n }}\n />\n <CurrencyText amount={netWorth.change} color={currencyTextColor} variant={currencyVariant} />\n <Text variant=\"body2\">{currencyLabel}</Text>\n </Stack>\n )\n}\n\nexport default observer(NetWorthChange)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListItem from '@mui/material/ListItem'\nimport ListItemText from '@mui/material/ListItemText'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\n\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { CurrencyText, useGlobalCopyStore } from '../../common/'\nimport { fromTimestampToMonthYear } from '../../core/utils/DateUtil'\n\nimport { GainsLosses } from '../../core/types/NetWorth'\nimport NetWorthChange from './NetWorthChange'\n\nconst GainsLossesDetail: React.FC<GainsLosses> = ({\n netWorth,\n gains,\n losses,\n totalGains,\n totalLosses,\n}) => {\n const { net_worth: copy } = useGlobalCopyStore()\n\n const theme = useTheme()\n\n return (\n <>\n <Stack alignItems=\"center\" justifyContent=\"space-between\" mb={8} pt={24}>\n <Text variant=\"body2\">{fromTimestampToMonthYear(netWorth?.x)}</Text>\n <Text variant=\"body1\">{copy.total_change}</Text>\n {netWorth && (\n <NetWorthChange currencyVariant=\"h1\" iconSize={32} netWorth={netWorth} theme={theme} />\n )}\n </Stack>\n <List>\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.gains}\n </Text>\n <CurrencyText amount={totalGains} sx={{ fontWeight: 400 }} variant=\"caption\" />\n </Stack>\n }\n />\n </ListSubheader>\n {gains?.map((gain) => (\n <React.Fragment key={gain.accountName}>\n <ListItem sx={{ backgroundColor: theme.palette.background.paper, py: 14 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ mr: 10 }} variant=\"body1\">\n {gain.accountName}\n </Text>\n <CurrencyText\n amount={gain.gain}\n sx={{ color: theme.palette.success.main, flexShrink: 0, fontWeight: 700 }}\n variant=\"body1\"\n />\n </Stack>\n }\n sx={{ px: 16 }}\n />\n </ListItem>\n <Divider />\n </React.Fragment>\n ))}\n\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.losses}\n </Text>\n <CurrencyText amount={totalLosses} sx={{ fontWeight: 400 }} variant=\"caption\" />\n </Stack>\n }\n />\n </ListSubheader>\n {losses?.map((loss) => (\n <>\n <ListItem\n key={loss.accountName}\n sx={{ backgroundColor: theme.palette.background.paper, py: 14 }}\n >\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text\n sx={{\n mr: 10,\n }}\n variant=\"body1\"\n >\n {loss.accountName}\n </Text>\n <CurrencyText\n amount={loss.loss}\n sx={{ flexShrink: 0, fontWeight: 700 }}\n variant=\"body1\"\n />\n </Stack>\n }\n sx={{ px: 16 }}\n />\n </ListItem>\n <Divider />\n </>\n ))}\n </List>\n </>\n )\n}\n\nexport default observer(GainsLossesDetail)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\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 ListItemButton from '@mui/material/ListItemButton'\nimport ListItemIcon from '@mui/material/ListItemIcon'\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'\n\nimport { CurrencyText, useGlobalCopyStore } from '../../common/'\nimport NetWorthChange from './NetWorthChange'\nimport { AccountGroup, AssetsLiabilities } from '../../core/types/NetWorth'\nimport { groupAccounts } from '../../core/utils/NetWorthUtils'\n\nconst Group: React.FC<AccountGroup> = ({ accounts, name, icon }) => {\n const [isOpen, setIsOpen] = React.useState(false)\n\n return (\n <>\n <ListItem sx={(theme) => ({ backgroundColor: theme.palette.background.paper })}>\n <ListItemButton onClick={() => setIsOpen(!isOpen)}>\n {icon && (\n <ListItemIcon>\n <Icon name={icon} size={24} sx={{ mr: 12 }} />\n </ListItemIcon>\n )}\n <ListItemText\n primary={\n <Text sx={{ fontWeight: 700 }} variant=\"body1\">\n {name}\n </Text>\n }\n />\n <ListItemIcon>\n {isOpen ? <Icon name=\"expand_less\" size={24} /> : <Icon name=\"expand_more\" size={24} />}\n </ListItemIcon>\n </ListItemButton>\n </ListItem>\n <Divider />\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit={true}>\n {accounts.map((account, index) => (\n <List key={account.accountName}>\n <ListItem sx={() => ({ py: 14 })}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\" sx={{ fontWeight: 400 }}>\n <Text\n sx={{\n marginRight: 10,\n }}\n variant=\"body1\"\n >\n {account.accountName}\n </Text>\n <CurrencyText\n amount={account.balance}\n sx={{\n flexShrink: 0,\n }}\n variant=\"body2\"\n />\n </Stack>\n }\n sx={{ pl: 72, pr: 16 }}\n />\n </ListItem>\n {index < accounts.length - 1 ? <Divider variant=\"inset\" /> : <Divider />}\n </List>\n ))}\n </Collapse>\n </>\n )\n}\n\nconst ListGroup: React.FC<{\n groupedAccounts: AccountGroup[]\n}> = ({ groupedAccounts }) => (\n <>\n {groupedAccounts.map(({ accounts, icon, name }) => (\n <Group accounts={accounts} icon={icon} key={name} name={name} />\n ))}\n </>\n)\n\nconst AssetsLiabilitiesDetail: React.FC<AssetsLiabilities> = ({\n netWorth,\n assets,\n liabilities,\n totalAssets,\n totalLiabilities,\n}) => {\n const { net_worth: copy } = useGlobalCopyStore()\n\n const theme = useTheme()\n\n return (\n <>\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n paddingTop: 24,\n marginBottom: 8,\n }}\n >\n <Text variant=\"body1\">{copy.current_net_worth}</Text>\n <CurrencyText amount={netWorth?.y ?? 0} variant=\"h1\" />\n {netWorth && (\n <NetWorthChange\n currencyLabel={copy.this_month}\n iconSize={20}\n netWorth={netWorth}\n theme={theme}\n />\n )}\n </Box>\n <List>\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.assets}\n </Text>\n <CurrencyText amount={totalAssets} sx={{ fontWeight: 400 }} variant=\"caption\" />\n </Stack>\n }\n />\n </ListSubheader>\n <ListGroup groupedAccounts={groupAccounts(assets)} />\n <ListSubheader sx={{ mb: 8, mt: 12, mx: 8 }}>\n <ListItemText\n primary={\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text sx={{ fontWeight: 700 }} variant=\"caption\">\n {copy.liabilities}\n </Text>\n <CurrencyText\n amount={totalLiabilities}\n sx={{ fontWeight: 400 }}\n variant=\"caption\"\n />\n </Stack>\n }\n />\n </ListSubheader>\n <ListGroup groupedAccounts={groupAccounts(liabilities)} />\n </List>\n </>\n )\n}\n\nexport default observer(AssetsLiabilitiesDetail)\n","import { observer } from 'mobx-react-lite'\nimport React from 'react'\n\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport ListSubheader from '@mui/material/ListSubheader'\nimport Stack from '@mui/material/Stack'\nimport { useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport {\n ANALYTICS_EVENTS,\n Drawer,\n useEvent,\n useGlobalCopyStore,\n useNetWorthStore,\n} from '../../common'\n\nimport type { NetWorth } from '../../core/types/NetWorth'\n\nimport NetWorthListItem from './NetWorthListItem'\nimport GainsLossesDetail from './GainsLossesDetail'\nimport AssetsLiabilitiesDetail from './AssetsLiabilitiesDetail'\n\nconst NetWorthList = () => {\n const { net_worth: copy } = useGlobalCopyStore()\n const theme = useTheme()\n const { onEvent } = useEvent()\n\n const {\n assetsLiabilities,\n gainsLosses,\n hoveredData,\n netWorthChartData: chartData,\n selectedData,\n setHoveredIndex,\n setSelectedIndex,\n } = useNetWorthStore()\n\n const [isGlDrawerOpen, setIsGlDrawerOpen] = React.useState(false)\n const [isAlDrawerOpen, setIsAlDrawerOpen] = React.useState(false)\n\n const buildStyles = (lineItem: NetWorth) => {\n const isHovered = lineItem.x === hoveredData?.x\n const isSelected = lineItem.x === selectedData?.x\n\n const listItemStyles = {\n backgroundColor: 'inherit',\n borderBottom: 'inherit',\n color: 'inherit',\n }\n\n if (isHovered) {\n listItemStyles.color = isSelected ? 'inherit' : listItemStyles.color\n listItemStyles.backgroundColor = theme.palette.action.hover\n }\n\n if (isSelected) {\n listItemStyles.backgroundColor = theme.palette.primary.main\n listItemStyles.borderBottom = theme.palette.neutral.light\n listItemStyles.color = theme.palette.common.white\n }\n\n return listItemStyles\n }\n\n const handleListItemClick = (\n event: React.MouseEvent<SVGPathElement | HTMLDivElement, MouseEvent>,\n dataIndex: number,\n ) => {\n setSelectedIndex(dataIndex)\n if (event.currentTarget instanceof HTMLDivElement) {\n setIsGlDrawerOpen(true)\n }\n }\n\n const handleOpenALDrawer = () => {\n setIsAlDrawerOpen(true)\n onEvent(ANALYTICS_EVENTS.NET_WORTH_WIDGET_CLICK_ASSETS_LIABILITIES)\n }\n\n const handleMouseEnter = (dataIndex: number) => {\n setHoveredIndex(dataIndex)\n }\n\n const handleMouseLeave = () => {\n setHoveredIndex(-1)\n }\n\n return (\n <Stack direction=\"column\" sx={{ width: 320 }}>\n <List>\n <ListSubheader sx={{ backgroundColor: 'transparent', mb: 8, mt: 12, px: 12 }}>\n <Text bold={true} component=\"h2\" variant=\"body1\">\n {copy.monthly_totals}\n </Text>\n </ListSubheader>\n <Divider />\n {chartData.map((dataPoint: NetWorth, index: number) => {\n return (\n <NetWorthListItem\n getStyles={buildStyles}\n isHovered={dataPoint.x === hoveredData?.x}\n isSelected={dataPoint.x === selectedData?.x}\n item={dataPoint}\n key={dataPoint.x}\n onItemClick={(event) => handleListItemClick(event, index)}\n onMouseEnter={() => handleMouseEnter(index)}\n onMouseLeave={() => handleMouseLeave()}\n />\n )\n })}\n </List>\n <Button\n onClick={() => handleOpenALDrawer()}\n sx={{ alignSelf: 'center', marginTop: 16, width: 'fit-content' }}\n variant=\"outlined\"\n >\n {copy.view_assets_and_liabilities}\n </Button>\n\n <Drawer\n ariaLabelClose={'Close'}\n isOpen={isGlDrawerOpen}\n onClose={() => setIsGlDrawerOpen(false)}\n shouldShowHeaderBorders={false}\n shouldShowHeaderShadow={true}\n title={copy.gains_and_losses}\n >\n {gainsLosses && <GainsLossesDetail {...gainsLosses} />}\n </Drawer>\n <Drawer\n ariaLabelClose={'Close'}\n isOpen={isAlDrawerOpen}\n onClose={() => setIsAlDrawerOpen(false)}\n shouldShowHeaderBorders={false}\n shouldShowHeaderShadow={true}\n title={copy.assets_and_liabilities}\n >\n {assetsLiabilities && <AssetsLiabilitiesDetail {...assetsLiabilities} />}\n </Drawer>\n </Stack>\n )\n}\n\nexport default observer(NetWorthList)\n","import { observer } from 'mobx-react-lite'\nimport { fromUnixTime, format } from 'date-fns'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { CurrencyText, useGlobalCopyStore } from '../../common/'\nimport NetWorthChange from './NetWorthChange'\nimport { NetWorth } from '../../core/types/NetWorth'\n\ninterface NetWorthSummaryProps {\n hoveredData?: NetWorth\n selectedData: NetWorth\n}\n\nconst NetWorthSummary: React.FC<NetWorthSummaryProps> = ({ hoveredData, selectedData }) => {\n const { net_worth: copy } = useGlobalCopyStore()\n const theme = useTheme()\n const summary = hoveredData ? hoveredData : selectedData\n\n const formattedMonth = format(fromUnixTime(summary.x), 'MMMM')\n\n return (\n <Stack alignItems=\"center\" direction=\"column\" m={24}>\n <Text color={theme.palette.secondary.main} variant=\"body2\">\n {`${formattedMonth} ${copy.net_worth}`}\n </Text>\n <CurrencyText amount={summary.y} variant=\"h2\" />\n <NetWorthChange currencyLabel={copy.this_month} netWorth={summary} theme={theme} />\n </Stack>\n )\n}\n\nexport default observer(NetWorthSummary)\n","import React from 'react'\nimport { differenceInMonths } from 'date-fns'\nimport { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\n\nimport type { DateRange } from '@mui/x-date-pickers-pro'\n\nimport ConnectionsDrawer from '../accounts/components/ConnectionsDrawer'\nimport {\n ANALYTICS_EVENTS,\n EmptyState,\n Loader,\n useEvent,\n useGlobalCopyStore,\n useGlobalUiStore,\n useNetWorthStore,\n useScreenSize,\n useWidgetLoadTimer,\n WidgetContainer,\n} from '../common'\nimport { WidgetProps } from '../core'\n\nimport NetWorthChart from './components/NetWorthChart'\nimport NetWorthList from './components/NetWorthList'\nimport NetWorthSummary from './components/NetWorthSummary'\n\nexport const NetWorthWidget: React.FC<WidgetProps> = observer(({ onBackClick, onMenuClick }) => {\n const { isInitialized } = useGlobalUiStore()\n const { accounts: accountsCopy, net_worth: copy } = useGlobalCopyStore()\n const {\n hoveredData,\n isNetWorthDataLoaded,\n loadNetWorthData,\n netWorthChartData,\n selectedData,\n setTimeframe,\n } = useNetWorthStore()\n const { isMobile } = useScreenSize()\n const { onEvent } = useEvent()\n\n const [showConnectionsWidget, setShowConnectionsWidget] = React.useState(false)\n\n useWidgetLoadTimer({\n widgetName: 'NetWorthWidget',\n isLoaded: isNetWorthDataLoaded,\n })\n\n React.useEffect(() => {\n if (!isNetWorthDataLoaded) {\n loadNetWorthData().finally()\n }\n onEvent(ANALYTICS_EVENTS.NET_WORTH_VIEW)\n }, [])\n\n const handleRangeChanged = async (range: DateRange<Date>) => {\n const startDate = range[0]\n const endDate = range[1]\n\n if (startDate && endDate) {\n setTimeframe(differenceInMonths(endDate, startDate))\n }\n }\n\n const handleTimeframeClick = (months: number) => {\n onEvent(ANALYTICS_EVENTS.NET_WORTH_WIDGET_CLICK_TIMEFRAME, { time_period: months + 'M' })\n }\n\n const handleManageConnections = () => {\n setShowConnectionsWidget(true)\n onEvent(ANALYTICS_EVENTS.ACCOUNTS_CLICK_CONNECT)\n }\n\n if (!isInitialized || !isNetWorthDataLoaded) return <Loader />\n\n const showEmptyState = netWorthChartData.length === 0\n\n return (\n <WidgetContainer\n calendarActions={{\n onRangeChanged: handleRangeChanged,\n onTimeframeClick: handleTimeframeClick,\n }}\n dateRangeVariant={isMobile ? 'timeframetabs' : 'timeframebuttons'}\n onAccountsFilterClick={() => onEvent(ANALYTICS_EVENTS.NET_WORTH_WIDGET_CLICK_FILTER)}\n onBackClick={onBackClick}\n onMenuClick={onMenuClick}\n title={copy.net_worth}\n >\n {!showEmptyState ? (\n <>\n {selectedData && (\n <NetWorthSummary hoveredData={hoveredData} selectedData={selectedData} />\n )}\n <Stack\n alignItems={isMobile ? 'center' : 'flex-start'}\n direction={isMobile ? 'column' : 'row'}\n spacing={isMobile ? 0 : 48}\n >\n <NetWorthChart />\n <NetWorthList />\n </Stack>\n </>\n ) : (\n <Box sx={{ justifyItems: 'center' }}>\n <EmptyState\n header={copy.empty_widget_header}\n icon={'elevation'}\n onClick={handleManageConnections}\n primaryButton={copy.empty_widget_button}\n subText={copy.empty_widget_description}\n sx={{\n width: { sm: 432 },\n '.buttons-footer': {\n width: 167,\n },\n }}\n />\n </Box>\n )}\n\n <ConnectionsDrawer\n onClose={() => setShowConnectionsWidget(false)}\n showConnectionsWidget={showConnectionsWidget}\n title={accountsCopy.manage_connections}\n />\n </WidgetContainer>\n )\n})\n"],"names":["NetworthData","amount","copy","trendValue","isTrendUp","trendIcon","jsxs","Stack","jsx","P","formatCurrency","Icon","Text","ZeroState","NetWorthMicroWidget","observer","onCTAClick","accounts","useAccountStore","onEvent","useEvent","commonCopy","useGlobalCopyStore","isInitialized","useGlobalUiStore","isNetWorthDataLoaded","loadNetWorthData","netWorthData","selectedData","useNetWorthStore","React","useWidgetLoadTimer","ANALYTICS_EVENTS","Loader","handleCTAClick","MicroWidgetContainer","NetWorthChart","isMobile","useScreenSize","availableWidth","useWidgetContainerProvider","theme","useTheme","hoveredData","chartData","setHoveredIndex","setSelectedIndex","chartWidthNotMobile","datasets","point","formatDate","fromUnixTime","DATE_FORMATS_INTL","selectedMark","hoveredMark","getMarkStyles","markIndex","onMarkClick","_event","dataIndex","onMouseEnter","onMouseLeave","LineChart","NetWorthChart$1","NetWorthListItem","dataPoint","getStyles","isHovered","isSelected","onItemClick","listItemStyles","setListItemStyles","ListItem","ListItemButton","event","ListItemText","fromTimestampToMonthYear","CurrencyText","Divider","NetWorthListItem$1","NetWorthChange","currencyLabel","currencyVariant","iconSize","netWorth","iconColor","currencyTextColor","iconName","NetWorthChange$1","GainsLossesDetail","gains","losses","totalGains","totalLosses","Fragment","List","ListSubheader","gain","loss","GainsLossesDetail$1","Group","name","icon","isOpen","setIsOpen","ListItemIcon","Collapse","account","index","ListGroup","groupedAccounts","AssetsLiabilitiesDetail","assets","liabilities","totalAssets","totalLiabilities","Box","groupAccounts","AssetsLiabilitiesDetail$1","NetWorthList","assetsLiabilities","gainsLosses","isGlDrawerOpen","setIsGlDrawerOpen","isAlDrawerOpen","setIsAlDrawerOpen","buildStyles","lineItem","handleListItemClick","handleOpenALDrawer","handleMouseEnter","handleMouseLeave","Button","Drawer","NetWorthList$1","NetWorthSummary","summary","formattedMonth","format","NetWorthSummary$1","NetWorthWidget","onBackClick","onMenuClick","accountsCopy","netWorthChartData","setTimeframe","showConnectionsWidget","setShowConnectionsWidget","handleRangeChanged","range","startDate","endDate","differenceInMonths","handleTimeframeClick","months","handleManageConnections","showEmptyState","WidgetContainer","EmptyState","ConnectionsDrawer"],"mappings":"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"}
@@ -8,8 +8,8 @@ import { startOfToday as Q } from "date-fns/startOfToday";
8
8
  import { subDays as ee } from "date-fns/subDays";
9
9
  import Be from "@mui/material/Alert";
10
10
  import Fe from "@mui/material/Snackbar";
11
- import { R as _e } from "../RecurringSettings-kRqAViNn.mjs";
12
- import { M as Jn } from "../RecurringSettings-kRqAViNn.mjs";
11
+ import { R as _e } from "../RecurringSettings-hs0YUp83.mjs";
12
+ import { M as Jn } from "../RecurringSettings-hs0YUp83.mjs";
13
13
  import { addMonths as Ue } from "date-fns/addMonths";
14
14
  import { subMonths as Ye } from "date-fns/subMonths";
15
15
  import { isBefore as je } from "date-fns/isBefore";
@@ -39,7 +39,7 @@ import { u as b, a as U, h as _, f as Y, D as Ie, g as re } from "../hooks-97sNJ
39
39
  import { b as E, a as D, g as ye, e as pt, R as gt } from "../RecurringTransactionsUtil-CHWmqvW5.mjs";
40
40
  import { f as I, D as M } from "../DateFormats-HudZ3Bjs.mjs";
41
41
  import { T as W } from "../Sizes-DISGrlUg.mjs";
42
- import { A as v } from "../Analytics-WeZYytR0.mjs";
42
+ import { A as v } from "../Analytics-D-jdcL72.mjs";
43
43
  import ht from "@mui/material/Button";
44
44
  import X from "@mui/material/Divider";
45
45
  import Ce from "@mui/material/List";
@@ -52,13 +52,13 @@ import { f as L } from "../NumberFormatting--XMeeBfr.mjs";
52
52
  import N from "@mui/material/Box";
53
53
  import { u as ve } from "../useScreenSize-mWpmnh5w.mjs";
54
54
  import { S as Le } from "../StatusBar-CPfSXe80.mjs";
55
- import { d as Ct } from "../ManageIncome-Be9WHv-s.mjs";
56
- import { c as er, M as tr, S as nr } from "../ManageIncome-Be9WHv-s.mjs";
55
+ import { d as Ct } from "../ManageIncome-B_8i71mE.mjs";
56
+ import { c as er, M as tr, S as nr } from "../ManageIncome-B_8i71mE.mjs";
57
57
  import { D as ie } from "../Drawer-DsnW2o0v.mjs";
58
58
  import { S as Ae } from "../SkeletonLoader-BaNboJjD.mjs";
59
59
  import { u as oe } from "../useWidgetLoadTimer-B0tB-yzL.mjs";
60
60
  import { L as ae } from "../Loader-CxeBwuPG.mjs";
61
- import { W as Rt } from "../WidgetContainer-DJnp6t6c.mjs";
61
+ import { W as Rt } from "../WidgetContainer-CjdCY4sj.mjs";
62
62
  import { M as Tt } from "../MiniWidgetContainer-Bmv_WeUd.mjs";
63
63
  import { u as Dt } from "../useDimensions-CeDR9V8N.mjs";
64
64
  import { M as _t } from "../MicroWidgetContainer-B2NnKBgW.mjs";
@@ -41,8 +41,8 @@ import Me from "@mui/material/ListItemText";
41
41
  import { ChevronRight as Le, ChevronLeft as Be } from "@mxenabled/mx-icons";
42
42
  import { D as He } from "../Drawer-DsnW2o0v.mjs";
43
43
  import { u as ne } from "../useWidgetLoadTimer-B0tB-yzL.mjs";
44
- import { H as Oe } from "../Help-aERwhajy.mjs";
45
- import { W as q } from "../WidgetContainer-DJnp6t6c.mjs";
44
+ import { H as Oe } from "../Help-zVZdcmlk.mjs";
45
+ import { W as q } from "../WidgetContainer-CjdCY4sj.mjs";
46
46
  const Fe = ({ availableWidth: t, handleOnLeavClick: r }) => {
47
47
  const i = L(), { common: o, settings: n } = k(), { isDesktop: u, isMobile: s, isSmallMobile: a, isTablet: l } = F(t), { config: b } = G(), { updateUser: _ } = E(), { user: d } = Ce(), [h, w] = m.useState({
48
48
  first_name: d.first_name,
@@ -19,8 +19,8 @@ import { startOfToday as J } from "date-fns/startOfToday";
19
19
  import St from "@mui/material/Button";
20
20
  import { useTheme as Tt } from "@mui/material";
21
21
  import { e as Mt } from "../TransactionUtils-BphBJBbU.mjs";
22
- import { T as Dt } from "../EmbeddedCard-DH8vQ3qN.mjs";
23
- import { T as xt } from "../TransactionDetails-roZ5xLq8.mjs";
22
+ import { T as Dt } from "../EmbeddedCard-DCOQnTz-.mjs";
23
+ import { T as xt } from "../TransactionDetails-DT-MQqOB.mjs";
24
24
  import vt from "@mui/material/Collapse";
25
25
  import wt from "@mui/material/Divider";
26
26
  import Q from "@mui/material/List";
@@ -30,8 +30,8 @@ import { u as Lt } from "../useScreenSize-mWpmnh5w.mjs";
30
30
  import { D as tt } from "../Drawer-DsnW2o0v.mjs";
31
31
  import { C as w } from "../Category-DEKZGLYe.mjs";
32
32
  import { parseISO as et } from "date-fns/parseISO";
33
- import { A as nt } from "../Analytics-WeZYytR0.mjs";
34
- import { W as It } from "../WidgetContainer-DJnp6t6c.mjs";
33
+ import { A as nt } from "../Analytics-D-jdcL72.mjs";
34
+ import { W as It } from "../WidgetContainer-CjdCY4sj.mjs";
35
35
  const G = ({ amount: n, label: d, variant: o = "full" }) => /* @__PURE__ */ p(y, { direction: "column", children: [
36
36
  /* @__PURE__ */ t(T, { bold: !0, sx: { textTransform: "none" }, variant: "body1", children: d }),
37
37
  /* @__PURE__ */ t(T, { variant: "caption", children: k(n, o === "mini" ? "0,0" : "0,0.00") })
@@ -1,8 +1,8 @@
1
- import { C as Be, D as He, M as Pe, a as We, T as $e } from "../TransactionDetails-roZ5xLq8.mjs";
2
- import { B as xa, b as Aa } from "../TransactionDetails-roZ5xLq8.mjs";
3
- import { u as B, T as Ge } from "../EmbeddedCard-DH8vQ3qN.mjs";
4
- import { a as Sa } from "../EmbeddedCard-DH8vQ3qN.mjs";
5
- import { E as va } from "../ExportCsvAction-C9KWH3Az.mjs";
1
+ import { C as Be, D as He, M as Pe, a as We, T as $e } from "../TransactionDetails-DT-MQqOB.mjs";
2
+ import { B as xa, b as Aa } from "../TransactionDetails-DT-MQqOB.mjs";
3
+ import { u as B, T as Ge } from "../EmbeddedCard-DCOQnTz-.mjs";
4
+ import { a as Sa } from "../EmbeddedCard-DCOQnTz-.mjs";
5
+ import { E as va } from "../ExportCsvAction-C-IisDcv.mjs";
6
6
  import { jsxs as m, jsx as e } from "react/jsx-runtime";
7
7
  import u from "react";
8
8
  import { observer as D } from "mobx-react-lite";
@@ -18,7 +18,7 @@ import S from "@mui/material/Box";
18
18
  import { useTheme as ie } from "@mui/material/styles";
19
19
  import { fromUnixTime as Je } from "date-fns/fromUnixTime";
20
20
  import { f as Qe, D as Ze } from "../DateFormats-HudZ3Bjs.mjs";
21
- import { A } from "../Analytics-WeZYytR0.mjs";
21
+ import { A } from "../Analytics-D-jdcL72.mjs";
22
22
  import { endOfMonth as et } from "date-fns/endOfMonth";
23
23
  import { getUnixTime as tt } from "date-fns/getUnixTime";
24
24
  import { startOfMonth as at } from "date-fns/startOfMonth";
@@ -37,7 +37,7 @@ import { u as ut } from "../useAriaLive-MkYebyUR.mjs";
37
37
  import { S as mt } from "../SkeletonLoader-BaNboJjD.mjs";
38
38
  import { u as _t } from "../useScreenSize-mWpmnh5w.mjs";
39
39
  import { u as pt } from "../useWidgetLoadTimer-B0tB-yzL.mjs";
40
- import { W as gt } from "../WidgetContainer-DJnp6t6c.mjs";
40
+ import { W as gt } from "../WidgetContainer-CjdCY4sj.mjs";
41
41
  import { S as ht } from "../SearchBox-Cpgu_gdO.mjs";
42
42
  import { D as te } from "../Drawer-DsnW2o0v.mjs";
43
43
  const ft = (t) => /* @__PURE__ */ m(y, { tabIndex: t.tabIndex, variant: "body2", children: [
@@ -33,13 +33,13 @@ import { T as W, a as Kt } from "../ViewMoreMicroCard-fnwE0hqd.mjs";
33
33
  import { useGridApiContext as Yt, useGridRootProps as jt, DataGridPro as Ut } from "@mui/x-data-grid-pro";
34
34
  import Xt from "@mui/material/Badge";
35
35
  import Zt from "@mui/material/IconButton";
36
- import { A as w } from "../Analytics-WeZYytR0.mjs";
37
- import { T as ct } from "../EmbeddedCard-DH8vQ3qN.mjs";
38
- import { T as dt } from "../TransactionDetails-roZ5xLq8.mjs";
36
+ import { A as w } from "../Analytics-D-jdcL72.mjs";
37
+ import { T as ct } from "../EmbeddedCard-DCOQnTz-.mjs";
38
+ import { T as dt } from "../TransactionDetails-DT-MQqOB.mjs";
39
39
  import { D as Pe } from "../Drawer-DsnW2o0v.mjs";
40
40
  import { u as Ie } from "../useWidgetLoadTimer-B0tB-yzL.mjs";
41
41
  import { L as Le } from "../Loader-CxeBwuPG.mjs";
42
- import { W as ut } from "../WidgetContainer-DJnp6t6c.mjs";
42
+ import { W as ut } from "../WidgetContainer-CjdCY4sj.mjs";
43
43
  import { L as Ve } from "../LineChart-CUfiH86G.mjs";
44
44
  import { M as Qt } from "../MiniWidgetContainer-Bmv_WeUd.mjs";
45
45
  import { subMonths as qt } from "date-fns";
@@ -55,7 +55,7 @@ import { g as Oe } from "../TransactionUtils-BphBJBbU.mjs";
55
55
  import { L as uo } from "../ListItemRow-kH1rn8Xu.mjs";
56
56
  import { Stack as mo } from "@mui/material";
57
57
  import ho from "@mui/material/ListItemAvatar";
58
- import { E as go } from "../ExportCsvAction-C9KWH3Az.mjs";
58
+ import { E as go } from "../ExportCsvAction-C-IisDcv.mjs";
59
59
  import { u as po } from "../useInsightsEnabled-D5Sdm0TJ.mjs";
60
60
  import { E as fo } from "../EmptyState-CJUDc3kD.mjs";
61
61
  import { C as yo } from "../ConnectDrawer-CW4LA3H3.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mx-cartographer/experiences",
3
- "version": "9.1.1",
3
+ "version": "9.1.2",
4
4
  "description": "Library containing experience widgets",
5
5
  "author": "MX",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Analytics-WeZYytR0.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: 'net_worth',\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: 'net_worth_widget_click_time_period',\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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetContainer-DJnp6t6c.mjs","sources":["../src/common/hooks/useWidgetHeaderStyles.ts","../src/common/components/daterangeselector/DateRangeSelector.tsx","../src/common/components/WidgetDateRangeSelector.tsx","../src/common/components/WidgetContainer.tsx"],"sourcesContent":["import useMediaQuery from '@mui/material/useMediaQuery'\n\nimport { useScreenSize } from './useScreenSize'\n\nexport const useWidgetHeaderStyles = (availableWidth?: number) => {\n const { isDesktop, isMobile, isSmallTablet, isTablet } = useScreenSize(availableWidth)\n const isViewportAbove900 = useMediaQuery('(min-width:900px)')\n\n const iconSize = 24\n\n // large variant\n // L & XL breakpoints\n let headerPaddingX = 48\n let headerPaddingTop = 32\n let headerPaddingBottom = 0\n let headerHeadingLevel: 'h1' | 'h2' | 'h3' = 'h1'\n let containerSquareCorners = false\n\n const isCompact = isMobile || isSmallTablet\n\n if (isTablet && !isSmallTablet) {\n // M breakpoint\n headerPaddingX = 24\n headerPaddingTop = 24\n headerHeadingLevel = 'h2'\n } else if (isCompact) {\n // small variant\n // S, XS, XXS breakpoints\n headerPaddingX = 8\n headerPaddingTop = 10\n headerPaddingBottom = 10\n headerHeadingLevel = 'h3'\n\n containerSquareCorners = true\n }\n\n const slotSx = {\n pb: isCompact ? 12 : 0,\n ...(isCompact && {\n px: headerPaddingX,\n '& .mx-cmn-date-range-selector': { m: 0, width: '100%' },\n '& .mx-cmn-date-range-selector > .MuiBox-root': { display: 'flex', justifyContent: 'center' },\n '& .MuiButtonGroup-root': { width: '100%' },\n '& .MuiButtonGroup-middleButton': { flex: 1 },\n '& .MuiToggleButtonGroup-root': { width: '100%', justifyContent: 'center' },\n }),\n }\n\n return {\n actionsFlex: isCompact ? 0 : 1,\n containerSquareCorners,\n headerHeadingLevel,\n headerPaddingBottom,\n headerPaddingTop,\n headerPaddingX,\n iconSize,\n isCompact,\n isDesktop,\n isViewportAbove900,\n slotSx,\n }\n}\n","import React from 'react'\nimport { addMonths } from 'date-fns/addMonths'\nimport { addDays } from 'date-fns/addDays'\nimport { addYears } from 'date-fns/addYears'\nimport { differenceInCalendarDays } from 'date-fns/differenceInCalendarDays'\nimport { endOfDay } from 'date-fns/endOfDay'\nimport { endOfMonth } from 'date-fns/endOfMonth'\nimport { endOfToday } from 'date-fns/endOfToday'\nimport { endOfYear } from 'date-fns/endOfYear'\nimport { startOfMonth } from 'date-fns/startOfMonth'\nimport { startOfToday } from 'date-fns/startOfToday'\nimport { startOfYear } from 'date-fns/startOfYear'\nimport { subMonths } from 'date-fns/subMonths'\nimport { subDays } from 'date-fns/subDays'\nimport { subYears } from 'date-fns/subYears'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport ButtonGroup from '@mui/material/ButtonGroup'\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\nimport ToggleButton from '@mui/material/ToggleButton'\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup'\nimport { useTheme } from '@mui/material/styles'\n\nimport { DateRange } from '@mui/x-date-pickers-pro'\n\nimport { DateRangePicker, DateRangePickerCopy, Icon, Text } from '@mxenabled/mxui'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../../../core/constants'\nimport { useScreenSize } from '../../hooks'\nimport { useAriaLive } from '../../hooks/useAriaLive'\nimport Dialog from '../dialog/Dialog'\nimport Drawer from '../drawer/Drawer'\n\nexport type DateRangeSelectorCopy = {\n dateRangePickerCopy: DateRangePickerCopy\n dateRangeEditApply: string\n dateRangeEditTitle: string\n dateRangeNextAria: string\n dateRangePreviousAria: string\n dateRangeCloseAria: string\n}\n\nexport type CalendarActions = {\n shouldDisableNext?: boolean\n shouldDisablePrevious?: boolean\n shouldDisablePicker?: boolean\n onRangeChanged: (dateRange: DateRange<Date>) => void\n}\n\nexport interface DateRangeSelectorProps {\n calendarActions: CalendarActions\n color?: 'primary' | 'secondary'\n copy: DateRangeSelectorCopy\n range?: DateRange<Date>\n shouldShrinkToIcon?: boolean\n variant?: 'outlined' | 'text' | 'readonly' | 'timeframebuttons' | 'timeframetabs'\n}\n\nexport type Timeframe = {\n ariaLabel?: string\n label: string\n value: number\n}\n\nconst DateRangeSelector: React.FC<DateRangeSelectorProps> = ({\n calendarActions,\n color = 'primary',\n copy,\n range = [startOfMonth(startOfToday()), endOfMonth(endOfToday())],\n shouldShrinkToIcon = true,\n variant = 'outlined',\n}) => {\n const theme = useTheme()\n const { isMobile } = useScreenSize()\n const { announce, ariaLive } = useAriaLive()\n\n const [dateRange, setDateRange] = React.useState<DateRange<Date>>(range)\n const [shortcut, setShortcut] = React.useState(copy.dateRangePickerCopy.dateRangeThisMonth)\n const [pickerDateRange, setPickerDateRange] = React.useState(dateRange)\n const [isPickerOpen, setIsPickerOpen] = React.useState(false)\n const [isMonthFormat, setIsMonthFormat] = React.useState(true)\n const [timeframe, setTimeframe] = React.useState(6)\n\n // TODO: put labels in mrs content and use as copy\n const timeframes = {\n buttons: [\n { ariaLabel: '3 Months', label: '3M', value: 3 },\n { ariaLabel: '6 Months', label: '6M', value: 6 },\n { ariaLabel: '9 Months', label: '9M', value: 9 },\n { ariaLabel: '1 Year', label: '1Y', value: 12 },\n ],\n tabs: [\n { label: '3 Months', value: 3 },\n { label: '6 Months', value: 6 },\n { label: '9 Months', value: 9 },\n { label: '1 Year', value: 12 },\n ],\n }\n\n React.useEffect(() => {\n setDateRange(range)\n setPickerDateRange(range)\n }, [range])\n\n // dates for timeframe buttons\n // using today's date as the end date, looks back 3, 6, 9, or 12 months\n React.useEffect(() => {\n if (variant === 'timeframebuttons' || variant === 'timeframetabs') {\n calendarActions.onRangeChanged(getTimeFrameDates())\n }\n }, [timeframe])\n\n const getTimeFrameDates = () => {\n const timeframeEndDate = endOfMonth(endOfToday()) as Date\n const timeframeBeginDate = endOfMonth(subMonths(timeframeEndDate, timeframe))\n return [timeframeBeginDate, timeframeEndDate] as DateRange<Date>\n }\n\n const handlePrevNextClick = (direction: 'previous' | 'next') => {\n const [beginDate, endDate] = dateRange as [Date, Date]\n const isPrev = direction === 'previous'\n\n let newRange: DateRange<Date>\n\n // Month-based shortcuts\n if (\n shortcut === copy.dateRangePickerCopy.dateRangeThisMonth ||\n shortcut === copy.dateRangePickerCopy.dateRangeLastMonth\n ) {\n newRange = [\n isPrev ? subMonths(beginDate, 1) : addMonths(beginDate, 1),\n endOfMonth(isPrev ? subMonths(endDate, 1) : addMonths(endDate, 1)),\n ]\n }\n // Year-based shortcuts\n else if (\n shortcut === copy.dateRangePickerCopy.dateRangeYTD ||\n shortcut === copy.dateRangePickerCopy.dateRangeLastYear\n ) {\n const startYear = startOfYear(beginDate)\n const endYear = endOfYear(beginDate)\n newRange = [\n isPrev ? subYears(startYear, 1) : addYears(startYear, 1),\n isPrev ? subYears(endYear, 1) : addYears(endYear, 1),\n ]\n }\n // Custom date range - shift by the current range duration\n else {\n const dayOffset = differenceInCalendarDays(endDate, beginDate)\n const dateModifier = isPrev ? subDays : addDays\n newRange = [dateModifier(beginDate, dayOffset), dateModifier(endDate, dayOffset)]\n }\n\n setDateRange(newRange)\n calendarActions.onRangeChanged(newRange)\n }\n\n const handleRangeChanged = () => {\n setDateRange(pickerDateRange)\n setIsMonthFormat(\n shortcut === copy.dateRangePickerCopy.dateRangeThisMonth ||\n shortcut === copy.dateRangePickerCopy.dateRangeLastMonth,\n )\n calendarActions.onRangeChanged(pickerDateRange)\n }\n\n const handleDataRangePickerChange = (range: DateRange<Date>, shortcut: string) => {\n range[1] = range[1] ?? range[0]\n\n const adjustedRange: DateRange<Date> = [range[0], range[1] ? endOfDay(range[1]) : range[1]]\n const startFormatted = formatDate(adjustedRange[0] as Date, DATE_FORMATS_INTL.MONTH_DAY_YEAR)\n const endFormatted = formatDate(adjustedRange[1] as Date, DATE_FORMATS_INTL.MONTH_DAY_YEAR)\n\n setPickerDateRange(adjustedRange)\n setShortcut(shortcut)\n announce(`${copy.dateRangeEditTitle}: ${startFormatted} - ${endFormatted}`)\n }\n\n const handleTimeframeChanged = (timeframe: number) => {\n setTimeframe(timeframe)\n }\n\n return (\n <Box className=\"mx-cmn-date-range-selector\" m={4}>\n <Box\n sx={{\n [theme.breakpoints.down('sm')]: {\n display: shouldShrinkToIcon ? 'none' : 'flex',\n justifyContent: 'center',\n },\n [theme.breakpoints.up('sm')]: { display: 'inline-flex' },\n }}\n >\n {variant === 'readonly' && (\n <Stack alignItems=\"center\" direction=\"row\" gap={8}>\n <Icon name=\"calendar_month\" size={24} />\n <Text bold={true}>\n {formatDate(pickerDateRange[0] as Date, DATE_FORMATS_INTL.MONTH_DAY)}\n </Text>\n <Icon name=\"remove\" />\n <Text bold={true}>\n {formatDate(pickerDateRange[1] as Date, DATE_FORMATS_INTL.MONTH_DAY_YEAR)}\n </Text>\n </Stack>\n )}\n\n {variant !== 'readonly' &&\n variant !== 'timeframebuttons' &&\n variant !== 'timeframetabs' && (\n <ButtonGroup\n color={color}\n sx={{\n '& .MuiButtonGroup-grouped': {\n padding: isMobile ? 0 : 12,\n },\n '& .MuiButtonGroup-middleButton': {\n px: 24,\n },\n height: 44,\n }}\n variant={variant}\n >\n <Button\n aria-disabled={calendarActions.shouldDisablePrevious}\n aria-label={copy.dateRangePreviousAria}\n color={calendarActions.shouldDisablePrevious ? 'secondary' : 'primary'}\n onClick={() =>\n calendarActions.shouldDisablePrevious ? null : handlePrevNextClick('previous')\n }\n >\n <Icon name=\"chevron_left\" size={20} />\n </Button>\n <Button\n aria-disabled={calendarActions.shouldDisablePicker}\n color={color}\n onClick={() => (calendarActions.shouldDisablePicker ? null : setIsPickerOpen(true))}\n startIcon={<Icon name=\"calendar_month\" size={20} />}\n sx={{\n p: isMobile ? 0 : 8,\n }}\n >\n {isMonthFormat ? (\n formatDate(dateRange[0] as Date, DATE_FORMATS_INTL.MONTH_YEAR)\n ) : (\n <span>\n {formatDate(dateRange[0] as Date, DATE_FORMATS_INTL.MONTH_DAY_YEAR)} -{' '}\n {formatDate(dateRange[1] as Date, DATE_FORMATS_INTL.MONTH_DAY_YEAR)}\n </span>\n )}\n </Button>\n <Button\n aria-disabled={calendarActions.shouldDisableNext}\n aria-label={copy.dateRangeNextAria}\n color={calendarActions.shouldDisableNext ? 'secondary' : 'primary'}\n onClick={() =>\n calendarActions.shouldDisableNext ? null : handlePrevNextClick('next')\n }\n >\n <Icon name=\"chevron_right\" size={20} />\n </Button>\n </ButtonGroup>\n )}\n\n {variant === 'timeframebuttons' && (\n <ToggleButtonGroup\n aria-label={copy.dateRangeEditTitle}\n color={color}\n exclusive={true}\n orientation=\"horizontal\"\n value={timeframe}\n >\n {timeframes.buttons.map((timeframe: Timeframe) => (\n <ToggleButton\n aria-label={timeframe.ariaLabel}\n key={timeframe.label}\n onClick={() => handleTimeframeChanged(timeframe.value)}\n sx={{ width: 56 }}\n value={timeframe.value}\n >\n {timeframe.label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n )}\n\n {variant === 'timeframetabs' && (\n <Tabs\n indicatorColor=\"primary\"\n onChange={(_, newValue) => handleTimeframeChanged(newValue)}\n textColor=\"primary\"\n value={timeframe}\n variant=\"fullWidth\"\n >\n {timeframes.tabs.map((timeframe: Timeframe) => (\n <Tab\n key={timeframe.label}\n label={\n <Text bold={true} variant=\"body1\">\n {timeframe.label}\n </Text>\n }\n sx={{ minWidth: 80 }}\n value={timeframe.value}\n />\n ))}\n </Tabs>\n )}\n </Box>\n\n {isPickerOpen && isMobile && (\n <Drawer\n ariaLabelClose={copy.dateRangeCloseAria}\n isOpen={isPickerOpen}\n onClose={() => setIsPickerOpen(false)}\n onPrimaryAction={() => {\n handleRangeChanged()\n setIsPickerOpen(false)\n }}\n primaryText={copy.dateRangeEditApply}\n title={copy.dateRangeEditTitle}\n >\n {ariaLive}\n <DateRangePicker\n copy={copy.dateRangePickerCopy}\n dateRange={pickerDateRange}\n onRangeChanged={handleDataRangePickerChange}\n selectedShortcut={shortcut}\n sx={{ p: 0 }}\n />\n </Drawer>\n )}\n\n {isPickerOpen && !isMobile && (\n <Dialog\n copy={{ title: copy.dateRangeEditTitle }}\n isOpen={true}\n onClose={() => setIsPickerOpen(false)}\n onPrimaryAction={() => handleRangeChanged()}\n primaryText={copy.dateRangeEditApply}\n sx={{\n '& .MuiDialogContent-root': {\n padding: 0,\n },\n }}\n >\n {ariaLive}\n <DateRangePicker\n copy={copy.dateRangePickerCopy}\n dateRange={pickerDateRange}\n onRangeChanged={handleDataRangePickerChange}\n selectedShortcut={shortcut}\n sx={{\n pt: 0,\n '& .MuiPickersLayout-toolbar': {\n gridColumn: '1/4',\n },\n }}\n />\n </Dialog>\n )}\n </Box>\n )\n}\n\nexport default DateRangeSelector\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useGlobalCopyStore, useGlobalUiStore } from '../context'\n\nimport { DateRangeSelector } from './daterangeselector'\nimport { CalendarActions, DateRangeSelectorCopy } from './daterangeselector/DateRangeSelector'\n\ninterface WidgetDateRangeSelectorProps {\n calendarActions: CalendarActions\n dateRange?: { start: Date; end: Date }\n dateRangeVariant?: 'outlined' | 'text' | 'readonly' | 'timeframebuttons' | 'timeframetabs'\n}\n\nexport const WidgetDateRangeSelector: React.FC<WidgetDateRangeSelectorProps> = observer(\n ({ calendarActions, dateRange, dateRangeVariant }) => {\n const { displayedDateRange } = useGlobalUiStore()\n const { common: commonCopy } = useGlobalCopyStore()\n\n const dateRangeSelectorCopy = {\n dateRangePickerCopy: {\n dateRangeFrom: commonCopy.date_range_picker.from,\n dateRangeTo: commonCopy.date_range_picker.to,\n dateRangeCustom: commonCopy.date_range_picker.custom,\n dateRangeSelectARange: commonCopy.date_range_picker.select_range,\n dateRangeThisMonth: commonCopy.date_range_picker.this_month,\n dateRangeLastMonth: commonCopy.date_range_picker.last_month,\n dateRangeLast30Days: commonCopy.date_range_picker.last_30_days,\n dateRangeLast90Days: commonCopy.date_range_picker.last_90_days,\n dateRangeYTD: commonCopy.date_range_picker.ytd,\n dateRangeLastYear: commonCopy.date_range_picker.last_year,\n dateRangeSelect: commonCopy.date_range_picker.select,\n },\n dateRangeEditApply: commonCopy.date_range_picker.edit_apply,\n dateRangeEditTitle: commonCopy.date_range_picker.edit_title,\n dateRangeNextAria: commonCopy.date_range_picker.next_aria,\n dateRangePreviousAria: commonCopy.date_range_picker.previous_aria,\n } as DateRangeSelectorCopy\n\n const startDate = dateRange ? dateRange.start : displayedDateRange.start\n const endDate = dateRange ? dateRange.end : displayedDateRange.end\n\n return (\n <DateRangeSelector\n calendarActions={calendarActions}\n copy={dateRangeSelectorCopy}\n range={[startDate, endDate]}\n shouldShrinkToIcon={false}\n variant={dateRangeVariant}\n />\n )\n },\n)\n","import React, { PropsWithChildren } from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport CardContent from '@mui/material/CardContent'\nimport Divider from '@mui/material/Divider'\nimport IconButton from '@mui/material/IconButton'\nimport Paper from '@mui/material/Paper'\nimport Stack from '@mui/material/Stack'\nimport type { SxProps } from '@mui/material/styles'\n\nimport { ChevronLeft } from '@mxenabled/mx-icons'\nimport { Icon, Text } from '@mxenabled/mxui'\n\nimport { ANALYTICS_EVENTS, useEvent } from '../../common'\nimport { AccountType } from '../../core'\nimport {\n useAppConfig,\n useGlobalCopyStore,\n useGlobalUiStore,\n WidgetContainerProvider,\n} from '../context'\nimport { useWidgetHeaderStyles } from '../hooks'\nimport { useDimensions } from '../hooks/useDimensions'\n\nimport { CalendarActions } from './daterangeselector/DateRangeSelector'\nimport { GlobalAccountFilter } from './GlobalAccountFilter'\nimport { WidgetDateRangeSelector } from './WidgetDateRangeSelector'\nimport Loader from './Loader'\n\ntype Action = {\n label: string\n iconName: string\n onClick: () => void\n}\n\ninterface WidgetContainerProps {\n allowedAccountTypes?: AccountType[] | undefined\n actions?: (Action | React.JSX.Element)[]\n calendarActions?: CalendarActions\n className?: string\n dateRange?: { start: Date; end: Date }\n dateRangeVariant?: 'outlined' | 'text' | 'readonly' | 'timeframebuttons' | 'timeframetabs'\n hasDivider?: boolean\n onBackClick?: () => void\n onMenuClick?: () => void\n onAccountsFilterClick?: () => void\n showAccountFilter?: boolean\n slotComponent?: React.ReactElement\n sx?: SxProps\n title?: string\n}\n\nexport const WidgetContainer: React.FC<PropsWithChildren<WidgetContainerProps>> = observer(\n ({\n actions,\n allowedAccountTypes,\n calendarActions,\n children,\n className = 'mx-cmn-widget',\n dateRange,\n dateRangeVariant,\n hasDivider = false,\n onAccountsFilterClick,\n onBackClick,\n onMenuClick,\n showAccountFilter = true,\n slotComponent,\n sx = {},\n title = '',\n }) => {\n const [containerRef, { height, width }] = useDimensions()\n const [contentRef, { height: contentHeight, width: contentWidth }] = useDimensions()\n const { onEvent } = useEvent()\n\n const {\n actionsFlex,\n containerSquareCorners,\n headerHeadingLevel,\n headerPaddingBottom,\n headerPaddingTop,\n headerPaddingX,\n iconSize,\n isCompact,\n isDesktop,\n isViewportAbove900,\n slotSx,\n } = useWidgetHeaderStyles(width)\n const { isCopyLoaded } = useGlobalUiStore()\n const { common: commonCopy } = useGlobalCopyStore()\n const {\n config: { display_widget_headings: showTitle },\n } = useAppConfig()\n\n const handleBackClick = () => {\n if (onBackClick) {\n onBackClick()\n onEvent(ANALYTICS_EVENTS.WIDGET_BACK_CLICK)\n }\n }\n\n React.useEffect(() => {\n onEvent(ANALYTICS_EVENTS.WIDGET_SIZE_CHANGED, {\n height: contentHeight,\n width: contentWidth,\n })\n }, [contentHeight, contentWidth])\n\n if (!isCopyLoaded) {\n return <Loader />\n }\n\n const getNavButton = () => {\n if (onMenuClick && isCompact && !isViewportAbove900) {\n return (\n <IconButton color=\"primary\" onClick={onMenuClick} sx={{ p: 10 }}>\n <Icon name=\"menu_open\" size={iconSize} sx={{ transform: 'rotate(180deg)' }} />\n </IconButton>\n )\n }\n\n if (onBackClick) {\n return (\n <IconButton\n aria-label={commonCopy.back_to_dashboard}\n color=\"primary\"\n onClick={handleBackClick}\n sx={{ p: 10 }}\n >\n <ChevronLeft size={24} />\n </IconButton>\n )\n }\n\n return null\n }\n\n const defaultSlotComponent = calendarActions && (\n <Stack alignItems=\"center\" sx={slotSx}>\n <WidgetDateRangeSelector\n calendarActions={calendarActions}\n dateRange={dateRange}\n dateRangeVariant={dateRangeVariant}\n />\n </Stack>\n )\n\n return (\n <Paper\n className={className}\n elevation={1}\n ref={containerRef}\n square={containerSquareCorners}\n sx={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n margin: 0,\n overflowY: 'auto',\n height: '100%',\n ...sx,\n }}\n >\n <Card>\n <Stack\n alignItems=\"center\"\n alignSelf=\"stretch\"\n direction=\"row\"\n justifyContent=\"space-between\"\n sx={{\n pb: headerPaddingBottom,\n pt: headerPaddingTop,\n px: headerPaddingX,\n }}\n >\n {getNavButton()}\n <Stack alignItems=\"flex-start\" minWidth={0} sx={{ flex: 1 }}>\n {showTitle && (\n <Text sx={{ width: '100%' }} truncate={true} variant={headerHeadingLevel}>\n {title}\n </Text>\n )}\n </Stack>\n {!isCompact && (slotComponent ? slotComponent : defaultSlotComponent)}\n <Stack\n alignItems=\"center\"\n direction=\"row\"\n justifyContent=\"flex-end\"\n sx={{ flex: actionsFlex, flexShrink: 0 }}\n >\n {showAccountFilter && (\n <GlobalAccountFilter\n allowedAccountTypes={allowedAccountTypes}\n isDesktop={isDesktop}\n onAccountFilterClick={onAccountsFilterClick}\n />\n )}\n {actions?.map((action) => {\n if (React.isValidElement(action))\n return React.cloneElement(action, { isDesktop } as Partial<unknown>)\n const { iconName, onClick, label } = action as Action\n return isDesktop ? (\n <Button\n key={iconName}\n onClick={onClick}\n startIcon={<Icon name={iconName} size={iconSize} />}\n >\n {label}\n </Button>\n ) : (\n <IconButton aria-label={label} color=\"primary\" key={iconName} onClick={onClick}>\n <Icon name={iconName} size={iconSize} />\n </IconButton>\n )\n })}\n </Stack>\n </Stack>\n {isCompact && (slotComponent ? slotComponent : defaultSlotComponent)}\n {isCompact && hasDivider && <Divider />}\n <CardContent ref={contentRef} sx={{ p: 0 }}>\n <WidgetContainerProvider availableHeight={height} availableWidth={width}>\n {children}\n </WidgetContainerProvider>\n </CardContent>\n </Card>\n </Paper>\n )\n },\n)\n"],"names":["useWidgetHeaderStyles","availableWidth","isDesktop","isMobile","isSmallTablet","isTablet","useScreenSize","isViewportAbove900","useMediaQuery","iconSize","headerPaddingX","headerPaddingTop","headerPaddingBottom","headerHeadingLevel","containerSquareCorners","isCompact","slotSx","DateRangeSelector","calendarActions","color","copy","range","startOfMonth","startOfToday","endOfMonth","endOfToday","shouldShrinkToIcon","variant","theme","useTheme","announce","ariaLive","useAriaLive","dateRange","setDateRange","React","shortcut","setShortcut","pickerDateRange","setPickerDateRange","isPickerOpen","setIsPickerOpen","isMonthFormat","setIsMonthFormat","timeframe","setTimeframe","timeframes","getTimeFrameDates","timeframeEndDate","subMonths","handlePrevNextClick","direction","beginDate","endDate","isPrev","newRange","addMonths","startYear","startOfYear","endYear","endOfYear","subYears","addYears","dayOffset","differenceInCalendarDays","dateModifier","subDays","addDays","handleRangeChanged","handleDataRangePickerChange","adjustedRange","endOfDay","startFormatted","formatDate","DATE_FORMATS_INTL","endFormatted","handleTimeframeChanged","jsxs","Box","Stack","jsx","Icon","Text","ButtonGroup","Button","ToggleButtonGroup","ToggleButton","Tabs","_","newValue","Tab","Drawer","DateRangePicker","Dialog","WidgetDateRangeSelector","observer","dateRangeVariant","displayedDateRange","useGlobalUiStore","commonCopy","useGlobalCopyStore","dateRangeSelectorCopy","startDate","WidgetContainer","actions","allowedAccountTypes","children","className","hasDivider","onAccountsFilterClick","onBackClick","onMenuClick","showAccountFilter","slotComponent","sx","title","containerRef","height","width","useDimensions","contentRef","contentHeight","contentWidth","onEvent","useEvent","actionsFlex","isCopyLoaded","showTitle","useAppConfig","handleBackClick","ANALYTICS_EVENTS","Loader","getNavButton","IconButton","ChevronLeft","defaultSlotComponent","Paper","Card","GlobalAccountFilter","action","iconName","onClick","label","Divider","CardContent","WidgetContainerProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,MAAMA,KAAwB,CAACC,MAA4B;AAChE,QAAM,EAAE,WAAAC,GAAW,UAAAC,GAAU,eAAAC,GAAe,UAAAC,EAAA,IAAaC,GAAcL,CAAc,GAC/EM,IAAqBC,GAAc,mBAAmB,GAEtDC,IAAW;AAIjB,MAAIC,IAAiB,IACjBC,IAAmB,IACnBC,IAAsB,GACtBC,IAAyC,MACzCC,IAAyB;AAE7B,QAAMC,IAAYZ,KAAYC;AAE9B,EAAIC,KAAY,CAACD,KAEfM,IAAiB,IACjBC,IAAmB,IACnBE,IAAqB,QACZE,MAGTL,IAAiB,GACjBC,IAAmB,IACnBC,IAAsB,IACtBC,IAAqB,MAErBC,IAAyB;AAG3B,QAAME,IAAS;AAAA,IACb,IAAID,IAAY,KAAK;AAAA,IACrB,GAAIA,KAAa;AAAA,MACf,IAAIL;AAAA,MACJ,iCAAiC,EAAE,GAAG,GAAG,OAAO,OAAA;AAAA,MAChD,gDAAgD,EAAE,SAAS,QAAQ,gBAAgB,SAAA;AAAA,MACnF,0BAA0B,EAAE,OAAO,OAAA;AAAA,MACnC,kCAAkC,EAAE,MAAM,EAAA;AAAA,MAC1C,gCAAgC,EAAE,OAAO,QAAQ,gBAAgB,SAAA;AAAA,IAAS;AAAA,EAC5E;AAGF,SAAO;AAAA,IACL,aAAaK,IAAY,IAAI;AAAA,IAC7B,wBAAAD;AAAA,IACA,oBAAAD;AAAA,IACA,qBAAAD;AAAA,IACA,kBAAAD;AAAA,IACA,gBAAAD;AAAA,IACA,UAAAD;AAAA,IACA,WAAAM;AAAA,IACA,WAAAb;AAAA,IACA,oBAAAK;AAAA,IACA,QAAAS;AAAA,EAAA;AAEJ,GCMMC,KAAsD,CAAC;AAAA,EAC3D,iBAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,OAAAC,IAAQ,CAACC,GAAaC,GAAA,CAAc,GAAGC,EAAWC,GAAA,CAAY,CAAC;AAAA,EAC/D,oBAAAC,IAAqB;AAAA,EACrB,SAAAC,IAAU;AACZ,MAAM;AACJ,QAAMC,IAAQC,GAAA,GACR,EAAE,UAAA1B,EAAA,IAAaG,GAAA,GACf,EAAE,UAAAwB,GAAU,UAAAC,EAAA,IAAaC,GAAA,GAEzB,CAACC,GAAWC,CAAY,IAAIC,EAAM,SAA0Bd,CAAK,GACjE,CAACe,GAAUC,CAAW,IAAIF,EAAM,SAASf,EAAK,oBAAoB,kBAAkB,GACpF,CAACkB,GAAiBC,CAAkB,IAAIJ,EAAM,SAASF,CAAS,GAChE,CAACO,GAAcC,CAAe,IAAIN,EAAM,SAAS,EAAK,GACtD,CAACO,GAAeC,CAAgB,IAAIR,EAAM,SAAS,EAAI,GACvD,CAACS,GAAWC,CAAY,IAAIV,EAAM,SAAS,CAAC,GAG5CW,IAAa;AAAA,IACjB,SAAS;AAAA,MACP,EAAE,WAAW,YAAY,OAAO,MAAM,OAAO,EAAA;AAAA,MAC7C,EAAE,WAAW,YAAY,OAAO,MAAM,OAAO,EAAA;AAAA,MAC7C,EAAE,WAAW,YAAY,OAAO,MAAM,OAAO,EAAA;AAAA,MAC7C,EAAE,WAAW,UAAU,OAAO,MAAM,OAAO,GAAA;AAAA,IAAG;AAAA,IAEhD,MAAM;AAAA,MACJ,EAAE,OAAO,YAAY,OAAO,EAAA;AAAA,MAC5B,EAAE,OAAO,YAAY,OAAO,EAAA;AAAA,MAC5B,EAAE,OAAO,YAAY,OAAO,EAAA;AAAA,MAC5B,EAAE,OAAO,UAAU,OAAO,GAAA;AAAA,IAAG;AAAA,EAC/B;AAGFX,EAAAA,EAAM,UAAU,MAAM;AACpB,IAAAD,EAAab,CAAK,GAClBkB,EAAmBlB,CAAK;AAAA,EAC1B,GAAG,CAACA,CAAK,CAAC,GAIVc,EAAM,UAAU,MAAM;AACpB,KAAIR,MAAY,sBAAsBA,MAAY,oBAChDT,EAAgB,eAAe6B,GAAmB;AAAA,EAEtD,GAAG,CAACH,CAAS,CAAC;AAEd,QAAMG,IAAoB,MAAM;AAC9B,UAAMC,IAAmBxB,EAAWC,IAAY;AAEhD,WAAO,CADoBD,EAAWyB,EAAUD,GAAkBJ,CAAS,CAAC,GAChDI,CAAgB;AAAA,EAC9C,GAEME,IAAsB,CAACC,MAAmC;AAC9D,UAAM,CAACC,GAAWC,CAAO,IAAIpB,GACvBqB,IAASH,MAAc;AAE7B,QAAII;AAGJ,QACEnB,MAAahB,EAAK,oBAAoB,sBACtCgB,MAAahB,EAAK,oBAAoB;AAEtC,MAAAmC,IAAW;AAAA,QACTD,IAASL,EAAUG,GAAW,CAAC,IAAII,GAAUJ,GAAW,CAAC;AAAA,QACzD5B,EAAW8B,IAASL,EAAUI,GAAS,CAAC,IAAIG,GAAUH,GAAS,CAAC,CAAC;AAAA,MAAA;AAAA,aAKnEjB,MAAahB,EAAK,oBAAoB,gBACtCgB,MAAahB,EAAK,oBAAoB,mBACtC;AACA,YAAMqC,IAAYC,GAAYN,CAAS,GACjCO,IAAUC,GAAUR,CAAS;AACnC,MAAAG,IAAW;AAAA,QACTD,IAASO,GAASJ,GAAW,CAAC,IAAIK,GAASL,GAAW,CAAC;AAAA,QACvDH,IAASO,GAASF,GAAS,CAAC,IAAIG,GAASH,GAAS,CAAC;AAAA,MAAA;AAAA,IAEvD,OAEK;AACH,YAAMI,IAAYC,GAAyBX,GAASD,CAAS,GACvDa,IAAeX,IAASY,KAAUC;AACxC,MAAAZ,IAAW,CAACU,EAAab,GAAWW,CAAS,GAAGE,EAAaZ,GAASU,CAAS,CAAC;AAAA,IAClF;AAEA,IAAA7B,EAAaqB,CAAQ,GACrBrC,EAAgB,eAAeqC,CAAQ;AAAA,EACzC,GAEMa,IAAqB,MAAM;AAC/B,IAAAlC,EAAaI,CAAe,GAC5BK;AAAA,MACEP,MAAahB,EAAK,oBAAoB,sBACpCgB,MAAahB,EAAK,oBAAoB;AAAA,IAAA,GAE1CF,EAAgB,eAAeoB,CAAe;AAAA,EAChD,GAEM+B,IAA8B,CAAChD,GAAwBe,MAAqB;AAChFf,IAAAA,EAAM,CAAC,IAAIA,EAAM,CAAC,KAAKA,EAAM,CAAC;AAE9B,UAAMiD,IAAiC,CAACjD,EAAM,CAAC,GAAGA,EAAM,CAAC,IAAIkD,GAASlD,EAAM,CAAC,CAAC,IAAIA,EAAM,CAAC,CAAC,GACpFmD,IAAiBC,EAAWH,EAAc,CAAC,GAAWI,EAAkB,cAAc,GACtFC,IAAeF,EAAWH,EAAc,CAAC,GAAWI,EAAkB,cAAc;AAE1F,IAAAnC,EAAmB+B,CAAa,GAChCjC,EAAYD,CAAQ,GACpBN,EAAS,GAAGV,EAAK,kBAAkB,KAAKoD,CAAc,MAAMG,CAAY,EAAE;AAAA,EAC5E,GAEMC,IAAyB,CAAChC,MAAsB;AACpD,IAAAC,EAAaD,CAAS;AAAA,EACxB;AAEA,SACE,gBAAAiC,EAACC,IAAA,EAAI,WAAU,8BAA6B,GAAG,GAC7C,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,CAAClD,EAAM,YAAY,KAAK,IAAI,CAAC,GAAG;AAAA,YAC9B,SAASF,IAAqB,SAAS;AAAA,YACvC,gBAAgB;AAAA,UAAA;AAAA,UAElB,CAACE,EAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,cAAA;AAAA,QAAc;AAAA,QAGxD,UAAA;AAAA,UAAAD,MAAY,gCACVoD,GAAA,EAAM,YAAW,UAAS,WAAU,OAAM,KAAK,GAC9C,UAAA;AAAA,YAAA,gBAAAC,EAACC,GAAA,EAAK,MAAK,kBAAiB,MAAM,IAAI;AAAA,YACtC,gBAAAD,EAACE,GAAA,EAAK,MAAM,IACT,UAAAT,EAAWnC,EAAgB,CAAC,GAAWoC,EAAkB,SAAS,EAAA,CACrE;AAAA,YACA,gBAAAM,EAACC,GAAA,EAAK,MAAK,SAAA,CAAS;AAAA,YACpB,gBAAAD,EAACE,GAAA,EAAK,MAAM,IACT,UAAAT,EAAWnC,EAAgB,CAAC,GAAWoC,EAAkB,cAAc,EAAA,CAC1E;AAAA,UAAA,GACF;AAAA,UAGD/C,MAAY,cACXA,MAAY,sBACZA,MAAY,mBACV,gBAAAkD;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,OAAAhE;AAAA,cACA,IAAI;AAAA,gBACF,6BAA6B;AAAA,kBAC3B,SAAShB,IAAW,IAAI;AAAA,gBAAA;AAAA,gBAE1B,kCAAkC;AAAA,kBAChC,IAAI;AAAA,gBAAA;AAAA,gBAEN,QAAQ;AAAA,cAAA;AAAA,cAEV,SAAAwB;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAqD;AAAA,kBAACI;AAAA,kBAAA;AAAA,oBACC,iBAAelE,EAAgB;AAAA,oBAC/B,cAAYE,EAAK;AAAA,oBACjB,OAAOF,EAAgB,wBAAwB,cAAc;AAAA,oBAC7D,SAAS,MACPA,EAAgB,wBAAwB,OAAOgC,EAAoB,UAAU;AAAA,oBAG/E,UAAA,gBAAA8B,EAACC,GAAA,EAAK,MAAK,gBAAe,MAAM,GAAA,CAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEtC,gBAAAD;AAAA,kBAACI;AAAA,kBAAA;AAAA,oBACC,iBAAelE,EAAgB;AAAA,oBAC/B,OAAAC;AAAA,oBACA,SAAS,MAAOD,EAAgB,sBAAsB,OAAOuB,EAAgB,EAAI;AAAA,oBACjF,WAAW,gBAAAuC,EAACC,GAAA,EAAK,MAAK,kBAAiB,MAAM,IAAI;AAAA,oBACjD,IAAI;AAAA,sBACF,GAAG9E,IAAW,IAAI;AAAA,oBAAA;AAAA,oBAGnB,UAAAuC,IACC+B,EAAWxC,EAAU,CAAC,GAAWyC,EAAkB,UAAU,IAE7D,gBAAAG,EAAC,QAAA,EACE,UAAA;AAAA,sBAAAJ,EAAWxC,EAAU,CAAC,GAAWyC,EAAkB,cAAc;AAAA,sBAAE;AAAA,sBAAG;AAAA,sBACtED,EAAWxC,EAAU,CAAC,GAAWyC,EAAkB,cAAc;AAAA,oBAAA,EAAA,CACpE;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGJ,gBAAAM;AAAA,kBAACI;AAAA,kBAAA;AAAA,oBACC,iBAAelE,EAAgB;AAAA,oBAC/B,cAAYE,EAAK;AAAA,oBACjB,OAAOF,EAAgB,oBAAoB,cAAc;AAAA,oBACzD,SAAS,MACPA,EAAgB,oBAAoB,OAAOgC,EAAoB,MAAM;AAAA,oBAGvE,UAAA,gBAAA8B,EAACC,GAAA,EAAK,MAAK,iBAAgB,MAAM,GAAA,CAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACvC;AAAA,YAAA;AAAA,UAAA;AAAA,UAILtD,MAAY,sBACX,gBAAAqD;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,cAAYjE,EAAK;AAAA,cACjB,OAAAD;AAAA,cACA,WAAW;AAAA,cACX,aAAY;AAAA,cACZ,OAAOyB;AAAA,cAEN,UAAAE,EAAW,QAAQ,IAAI,CAACF,MACvB,gBAAAoC;AAAA,gBAACM;AAAA,gBAAA;AAAA,kBACC,cAAY1C,EAAU;AAAA,kBAEtB,SAAS,MAAMgC,EAAuBhC,EAAU,KAAK;AAAA,kBACrD,IAAI,EAAE,OAAO,GAAA;AAAA,kBACb,OAAOA,EAAU;AAAA,kBAEhB,UAAAA,EAAU;AAAA,gBAAA;AAAA,gBALNA,EAAU;AAAA,cAAA,CAOlB;AAAA,YAAA;AAAA,UAAA;AAAA,UAIJjB,MAAY,mBACX,gBAAAqD;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,gBAAe;AAAA,cACf,UAAU,CAACC,GAAGC,MAAab,EAAuBa,CAAQ;AAAA,cAC1D,WAAU;AAAA,cACV,OAAO7C;AAAA,cACP,SAAQ;AAAA,cAEP,UAAAE,EAAW,KAAK,IAAI,CAACF,MACpB,gBAAAoC;AAAA,gBAACU;AAAA,gBAAA;AAAA,kBAEC,yBACGR,GAAA,EAAK,MAAM,IAAM,SAAQ,SACvB,UAAAtC,EAAU,MAAA,CACb;AAAA,kBAEF,IAAI,EAAE,UAAU,GAAA;AAAA,kBAChB,OAAOA,EAAU;AAAA,gBAAA;AAAA,gBAPZA,EAAU;AAAA,cAAA,CASlB;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,IAIHJ,KAAgBrC,KACf,gBAAA0E;AAAA,MAACc;AAAA,MAAA;AAAA,QACC,gBAAgBvE,EAAK;AAAA,QACrB,QAAQoB;AAAA,QACR,SAAS,MAAMC,EAAgB,EAAK;AAAA,QACpC,iBAAiB,MAAM;AACrB,UAAA2B,EAAA,GACA3B,EAAgB,EAAK;AAAA,QACvB;AAAA,QACA,aAAarB,EAAK;AAAA,QAClB,OAAOA,EAAK;AAAA,QAEX,UAAA;AAAA,UAAAW;AAAA,UACD,gBAAAiD;AAAA,YAACY;AAAA,YAAA;AAAA,cACC,MAAMxE,EAAK;AAAA,cACX,WAAWkB;AAAA,cACX,gBAAgB+B;AAAA,cAChB,kBAAkBjC;AAAA,cAClB,IAAI,EAAE,GAAG,EAAA;AAAA,YAAE;AAAA,UAAA;AAAA,QACb;AAAA,MAAA;AAAA,IAAA;AAAA,IAIHI,KAAgB,CAACrC,KAChB,gBAAA0E;AAAA,MAACgB;AAAA,MAAA;AAAA,QACC,MAAM,EAAE,OAAOzE,EAAK,mBAAA;AAAA,QACpB,QAAQ;AAAA,QACR,SAAS,MAAMqB,EAAgB,EAAK;AAAA,QACpC,iBAAiB,MAAM2B,EAAA;AAAA,QACvB,aAAahD,EAAK;AAAA,QAClB,IAAI;AAAA,UACF,4BAA4B;AAAA,YAC1B,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,QAGD,UAAA;AAAA,UAAAW;AAAA,UACD,gBAAAiD;AAAA,YAACY;AAAA,YAAA;AAAA,cACC,MAAMxE,EAAK;AAAA,cACX,WAAWkB;AAAA,cACX,gBAAgB+B;AAAA,cAChB,kBAAkBjC;AAAA,cAClB,IAAI;AAAA,gBACF,IAAI;AAAA,gBACJ,+BAA+B;AAAA,kBAC7B,YAAY;AAAA,gBAAA;AAAA,cACd;AAAA,YACF;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GAEJ;AAEJ,GC/Va0D,KAAkEC;AAAA,EAC7E,CAAC,EAAE,iBAAA7E,GAAiB,WAAAe,GAAW,kBAAA+D,QAAuB;AACpD,UAAM,EAAE,oBAAAC,EAAA,IAAuBC,GAAA,GACzB,EAAE,QAAQC,EAAA,IAAeC,GAAA,GAEzBC,IAAwB;AAAA,MAC5B,qBAAqB;AAAA,QACnB,eAAeF,EAAW,kBAAkB;AAAA,QAC5C,aAAaA,EAAW,kBAAkB;AAAA,QAC1C,iBAAiBA,EAAW,kBAAkB;AAAA,QAC9C,uBAAuBA,EAAW,kBAAkB;AAAA,QACpD,oBAAoBA,EAAW,kBAAkB;AAAA,QACjD,oBAAoBA,EAAW,kBAAkB;AAAA,QACjD,qBAAqBA,EAAW,kBAAkB;AAAA,QAClD,qBAAqBA,EAAW,kBAAkB;AAAA,QAClD,cAAcA,EAAW,kBAAkB;AAAA,QAC3C,mBAAmBA,EAAW,kBAAkB;AAAA,QAChD,iBAAiBA,EAAW,kBAAkB;AAAA,MAAA;AAAA,MAEhD,oBAAoBA,EAAW,kBAAkB;AAAA,MACjD,oBAAoBA,EAAW,kBAAkB;AAAA,MACjD,mBAAmBA,EAAW,kBAAkB;AAAA,MAChD,uBAAuBA,EAAW,kBAAkB;AAAA,IAAA,GAGhDG,IAAYrE,IAAYA,EAAU,QAAQgE,EAAmB,OAC7D5C,IAAUpB,IAAYA,EAAU,MAAMgE,EAAmB;AAE/D,WACE,gBAAAjB;AAAA,MAAC/D;AAAA,MAAA;AAAA,QACC,iBAAAC;AAAA,QACA,MAAMmF;AAAA,QACN,OAAO,CAACC,GAAWjD,CAAO;AAAA,QAC1B,oBAAoB;AAAA,QACpB,SAAS2C;AAAA,MAAA;AAAA,IAAA;AAAA,EAGf;AACF,GCEaO,KAAqER;AAAA,EAChF,CAAC;AAAA,IACC,SAAAS;AAAA,IACA,qBAAAC;AAAA,IACA,iBAAAvF;AAAA,IACA,UAAAwF;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,WAAA1E;AAAA,IACA,kBAAA+D;AAAA,IACA,YAAAY,IAAa;AAAA,IACb,uBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,mBAAAC,IAAoB;AAAA,IACpB,eAAAC;AAAA,IACA,IAAAC,IAAK,CAAA;AAAA,IACL,OAAAC,IAAQ;AAAA,EAAA,MACJ;AACJ,UAAM,CAACC,GAAc,EAAE,QAAAC,GAAQ,OAAAC,EAAA,CAAO,IAAIC,EAAA,GACpC,CAACC,GAAY,EAAE,QAAQC,GAAe,OAAOC,EAAA,CAAc,IAAIH,EAAA,GAC/D,EAAE,SAAAI,EAAA,IAAYC,GAAA,GAEd;AAAA,MACJ,aAAAC;AAAA,MACA,wBAAA/G;AAAA,MACA,oBAAAD;AAAA,MACA,qBAAAD;AAAA,MACA,kBAAAD;AAAA,MACA,gBAAAD;AAAA,MACA,UAAAD;AAAA,MACA,WAAAM;AAAA,MACA,WAAAb;AAAA,MACA,oBAAAK;AAAA,MACA,QAAAS;AAAA,IAAA,IACEhB,GAAsBsH,CAAK,GACzB,EAAE,cAAAQ,EAAA,IAAiB5B,GAAA,GACnB,EAAE,QAAQC,EAAA,IAAeC,GAAA,GACzB;AAAA,MACJ,QAAQ,EAAE,yBAAyB2B,GAAA;AAAA,IAAU,IAC3CC,GAAA,GAEEC,KAAkB,MAAM;AAC5B,MAAInB,MACFA,EAAA,GACAa,EAAQO,GAAiB,iBAAiB;AAAA,IAE9C;AASA,QAPA/F,EAAM,UAAU,MAAM;AACpB,MAAAwF,EAAQO,GAAiB,qBAAqB;AAAA,QAC5C,QAAQT;AAAA,QACR,OAAOC;AAAA,MAAA,CACR;AAAA,IACH,GAAG,CAACD,GAAeC,CAAY,CAAC,GAE5B,CAACI;AACH,+BAAQK,IAAA,EAAO;AAGjB,UAAMC,KAAe,MACfrB,KAAehG,KAAa,CAACR,IAE7B,gBAAAyE,EAACqD,KAAW,OAAM,WAAU,SAAStB,GAAa,IAAI,EAAE,GAAG,GAAA,GACzD,4BAAC9B,GAAA,EAAK,MAAK,aAAY,MAAMxE,GAAU,IAAI,EAAE,WAAW,iBAAA,EAAiB,CAAG,EAAA,CAC9E,IAIAqG,IAEA,gBAAA9B;AAAA,MAACqD;AAAA,MAAA;AAAA,QACC,cAAYlC,EAAW;AAAA,QACvB,OAAM;AAAA,QACN,SAAS8B;AAAA,QACT,IAAI,EAAE,GAAG,GAAA;AAAA,QAET,UAAA,gBAAAjD,EAACsD,IAAA,EAAY,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA,IAKtB,MAGHC,IAAuBrH,KAC3B,gBAAA8D,EAACD,KAAM,YAAW,UAAS,IAAI/D,GAC7B,UAAA,gBAAAgE;AAAA,MAACc;AAAA,MAAA;AAAA,QACC,iBAAA5E;AAAA,QACA,WAAAe;AAAA,QACA,kBAAA+D;AAAA,MAAA;AAAA,IAAA,GAEJ;AAGF,WACE,gBAAAhB;AAAA,MAACwD;AAAA,MAAA;AAAA,QACC,WAAA7B;AAAA,QACA,WAAW;AAAA,QACX,KAAKS;AAAA,QACL,QAAQtG;AAAA,QACR,IAAI;AAAA,UACF,wBAAwB;AAAA,UACxB,yBAAyB;AAAA,UACzB,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,GAAGoG;AAAA,QAAA;AAAA,QAGL,4BAACuB,IAAA,EACC,UAAA;AAAA,UAAA,gBAAA5D;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,YAAW;AAAA,cACX,WAAU;AAAA,cACV,WAAU;AAAA,cACV,gBAAe;AAAA,cACf,IAAI;AAAA,gBACF,IAAInE;AAAA,gBACJ,IAAID;AAAA,gBACJ,IAAID;AAAA,cAAA;AAAA,cAGL,UAAA;AAAA,gBAAA0H,GAAA;AAAA,gBACD,gBAAApD,EAACD,GAAA,EAAM,YAAW,cAAa,UAAU,GAAG,IAAI,EAAE,MAAM,KACrD,UAAAgD,wBACE7C,GAAA,EAAK,IAAI,EAAE,OAAO,OAAA,GAAU,UAAU,IAAM,SAASrE,GACnD,UAAAsG,EAAA,CACH,EAAA,CAEJ;AAAA,gBACC,CAACpG,MAAckG,KAAgCsB;AAAA,gBAChD,gBAAA1D;AAAA,kBAACE;AAAA,kBAAA;AAAA,oBACC,YAAW;AAAA,oBACX,WAAU;AAAA,oBACV,gBAAe;AAAA,oBACf,IAAI,EAAE,MAAM8C,GAAa,YAAY,EAAA;AAAA,oBAEpC,UAAA;AAAA,sBAAAb,KACC,gBAAAhC;AAAA,wBAAC0D;AAAA,wBAAA;AAAA,0BACC,qBAAAjC;AAAA,0BACA,WAAAvG;AAAA,0BACA,sBAAsB2G;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAGzBL,GAAS,IAAI,CAACmC,MAAW;AACxB,4BAAIxG,EAAM,eAAewG,CAAM;AAC7B,iCAAOxG,EAAM,aAAawG,GAAQ,EAAE,WAAAzI,GAA+B;AACrE,8BAAM,EAAE,UAAA0I,GAAU,SAAAC,GAAS,OAAAC,EAAA,IAAUH;AACrC,+BAAOzI,IACL,gBAAA8E;AAAA,0BAACI;AAAA,0BAAA;AAAA,4BAEC,SAAAyD;AAAA,4BACA,WAAW,gBAAA7D,EAACC,GAAA,EAAK,MAAM2D,GAAU,MAAMnI,GAAU;AAAA,4BAEhD,UAAAqI;AAAA,0BAAA;AAAA,0BAJIF;AAAA,wBAAA,IAOP,gBAAA5D,EAACqD,GAAA,EAAW,cAAYS,GAAO,OAAM,WAAyB,SAAAD,GAC5D,UAAA,gBAAA7D,EAACC,KAAK,MAAM2D,GAAU,MAAMnI,EAAA,CAAU,KADYmI,CAEpD;AAAA,sBAEJ,CAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACH;AAAA,YAAA;AAAA,UAAA;AAAA,UAED7H,MAAckG,KAAgCsB;AAAA,UAC9CxH,KAAa6F,KAAc,gBAAA5B,EAAC+D,IAAA,CAAA,CAAQ;AAAA,4BACpCC,IAAA,EAAY,KAAKxB,GAAY,IAAI,EAAE,GAAG,EAAA,GACrC,UAAA,gBAAAxC,EAACiE,MAAwB,iBAAiB5B,GAAQ,gBAAgBC,GAC/D,UAAAZ,GACH,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}