@mx-cartographer/experiences 9.1.3 → 9.1.4-alpha.al0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -6
- package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs → AccountDetailsDrawer-Dae8eUXt.mjs} +10 -10
- package/dist/{AccountDetailsDrawer-Cq4kiiKD.mjs.map → AccountDetailsDrawer-Dae8eUXt.mjs.map} +1 -1
- package/dist/{AccountDetailsHeader-BliEZhz7.mjs → AccountDetailsHeader-D_UjMD99.mjs} +4 -4
- package/dist/{AccountDetailsHeader-BliEZhz7.mjs.map → AccountDetailsHeader-D_UjMD99.mjs.map} +1 -1
- package/dist/{Analytics-CkYXKvco.mjs → Analytics-BJDUP2qI.mjs} +2 -2
- package/dist/{Analytics-CkYXKvco.mjs.map → Analytics-BJDUP2qI.mjs.map} +1 -1
- package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs → CategorySelectorDrawer-k8AZYC8I.mjs} +2 -2
- package/dist/{CategorySelectorDrawer-NJsFsKP1.mjs.map → CategorySelectorDrawer-k8AZYC8I.mjs.map} +1 -1
- package/dist/{Connect-BH0Pt6zc.mjs → Connect-tID_S_5e.mjs} +2 -2
- package/dist/{Connect-BH0Pt6zc.mjs.map → Connect-tID_S_5e.mjs.map} +1 -1
- package/dist/{ConnectCard-D7uxoH5Y.mjs → ConnectCard-DcM6tUOX.mjs} +2 -2
- package/dist/{ConnectCard-D7uxoH5Y.mjs.map → ConnectCard-DcM6tUOX.mjs.map} +1 -1
- package/dist/{ConnectDrawer-CW4LA3H3.mjs → ConnectDrawer-BQy4YYuc.mjs} +3 -3
- package/dist/{ConnectDrawer-CW4LA3H3.mjs.map → ConnectDrawer-BQy4YYuc.mjs.map} +1 -1
- package/dist/{ConnectionsDrawer-CZU9ku-k.mjs → ConnectionsDrawer-C73ASLMj.mjs} +3 -3
- package/dist/{ConnectionsDrawer-CZU9ku-k.mjs.map → ConnectionsDrawer-C73ASLMj.mjs.map} +1 -1
- package/dist/{CurrencyInput-DaGEQaLW.mjs → CurrencyInput-CABYmqBh.mjs} +2 -2
- package/dist/{CurrencyInput-DaGEQaLW.mjs.map → CurrencyInput-CABYmqBh.mjs.map} +1 -1
- package/dist/{EmbeddedCard-DCOQnTz-.mjs → EmbeddedCard-BwfkCsUN.mjs} +3 -3
- package/dist/{EmbeddedCard-DCOQnTz-.mjs.map → EmbeddedCard-BwfkCsUN.mjs.map} +1 -1
- package/dist/{Error-Dtw6yxkf.mjs → Error-BFJ3BnfS.mjs} +2 -2
- package/dist/{Error-Dtw6yxkf.mjs.map → Error-BFJ3BnfS.mjs.map} +1 -1
- package/dist/ErrorBoundary-C7BlHx04.mjs +27 -0
- package/dist/ErrorBoundary-C7BlHx04.mjs.map +1 -0
- package/dist/{ExportCsvAction-C-IisDcv.mjs → ExportCsvAction-B1257a3M.mjs} +3 -3
- package/dist/{ExportCsvAction-C-IisDcv.mjs.map → ExportCsvAction-B1257a3M.mjs.map} +1 -1
- package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs → GlobalAccountFilter-DEEc3Bc5.mjs} +2 -2
- package/dist/{GlobalAccountFilter-BhzR5Vb1.mjs.map → GlobalAccountFilter-DEEc3Bc5.mjs.map} +1 -1
- package/dist/GlobalCopyApi-Tz10hezK.mjs +130 -0
- package/dist/GlobalCopyApi-Tz10hezK.mjs.map +1 -0
- package/dist/{Help-zVZdcmlk.mjs → Help-BAj_yo3q.mjs} +145 -145
- package/dist/Help-BAj_yo3q.mjs.map +1 -0
- package/dist/{LineChart-CUfiH86G.mjs → LineChart-BxEIZHht.mjs} +2 -2
- package/dist/{LineChart-CUfiH86G.mjs.map → LineChart-BxEIZHht.mjs.map} +1 -1
- package/dist/{ListItemAction-BqUCLj_w.mjs → ListItemAction-GDU5z4BN.mjs} +2 -2
- package/dist/{ListItemAction-BqUCLj_w.mjs.map → ListItemAction-GDU5z4BN.mjs.map} +1 -1
- package/dist/{ListItemWrapper-DRse79Iu.mjs → ListItemWrapper-D6b-6m4t.mjs} +2 -2
- package/dist/{ListItemWrapper-DRse79Iu.mjs.map → ListItemWrapper-D6b-6m4t.mjs.map} +1 -1
- package/dist/{ManageIncome-B_8i71mE.mjs → ManageIncome-BJWVPAly.mjs} +32 -32
- package/dist/{ManageIncome-B_8i71mE.mjs.map → ManageIncome-BJWVPAly.mjs.map} +1 -1
- package/dist/{MicroWidgetContainer-B2NnKBgW.mjs → MicroWidgetContainer-IUZQlml1.mjs} +2 -2
- package/dist/{MicroWidgetContainer-B2NnKBgW.mjs.map → MicroWidgetContainer-IUZQlml1.mjs.map} +1 -1
- package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs → MiniWidgetContainer-CIswJui8.mjs} +2 -2
- package/dist/{MiniWidgetContainer-Bmv_WeUd.mjs.map → MiniWidgetContainer-CIswJui8.mjs.map} +1 -1
- package/dist/{NotificationSettings-CW7okUrk.mjs → NotificationSettings-DltXMrnb.mjs} +33 -33
- package/dist/{NotificationSettings-CW7okUrk.mjs.map → NotificationSettings-DltXMrnb.mjs.map} +1 -1
- package/dist/{OriginalBalanceAction-YrvxBYAl.mjs → OriginalBalanceAction-KuJSsZCA.mjs} +4 -4
- package/dist/{OriginalBalanceAction-YrvxBYAl.mjs.map → OriginalBalanceAction-KuJSsZCA.mjs.map} +1 -1
- package/dist/{RecurringSettings-hs0YUp83.mjs → RecurringSettings-D2Aaqz7d.mjs} +3 -3
- package/dist/{RecurringSettings-hs0YUp83.mjs.map → RecurringSettings-D2Aaqz7d.mjs.map} +1 -1
- package/dist/{SpendingLegend-CxvNOg3c.mjs → SpendingLegend-C_dMdqbe.mjs} +2 -2
- package/dist/{SpendingLegend-CxvNOg3c.mjs.map → SpendingLegend-C_dMdqbe.mjs.map} +1 -1
- package/dist/{TransactionDetails-DT-MQqOB.mjs → TransactionDetails-CDZNsKv7.mjs} +5 -5
- package/dist/{TransactionDetails-DT-MQqOB.mjs.map → TransactionDetails-CDZNsKv7.mjs.map} +1 -1
- package/dist/{UserStore-E5WvBXaY.mjs → UserStore-DzGgxsKk.mjs} +302 -317
- package/dist/UserStore-DzGgxsKk.mjs.map +1 -0
- package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs → ViewMoreMicroCard-DXaJ-56q.mjs} +4 -4
- package/dist/{ViewMoreMicroCard-fnwE0hqd.mjs.map → ViewMoreMicroCard-DXaJ-56q.mjs.map} +1 -1
- package/dist/{WidgetContainer-CjdCY4sj.mjs → WidgetContainer-5O6N88mr.mjs} +3 -3
- package/dist/{WidgetContainer-CjdCY4sj.mjs.map → WidgetContainer-5O6N88mr.mjs.map} +1 -1
- package/dist/accounts/index.es.js +11 -11
- package/dist/analytics/index.es.js +2 -2
- package/dist/budgets/index.es.js +10 -10
- package/dist/cashflow/index.es.js +70 -70
- package/dist/categories/index.es.js +1 -1
- package/dist/common/components/ErrorBoundary.d.ts +2 -0
- package/dist/common/context/GlobalDataProvider.d.ts +2 -1
- package/dist/common/context/hooks.d.ts +3 -0
- package/dist/common/context/index.d.ts +1 -1
- package/dist/common/index.es.js +66 -65
- package/dist/core/api/AccountApi.d.ts +2 -2
- package/dist/core/api/AnalyticsApi.d.ts +2 -2
- package/dist/core/api/AppDataApi.d.ts +2 -2
- package/dist/core/api/BeatApi.d.ts +2 -2
- package/dist/core/api/BudgetsApi.d.ts +2 -2
- package/dist/core/api/CategoryApi.d.ts +2 -2
- package/dist/core/api/FinstrongApi.d.ts +2 -2
- package/dist/core/api/GlobalCopyApi.d.ts +2 -2
- package/dist/core/api/GoalApi.d.ts +2 -2
- package/dist/core/api/HelpApi.d.ts +2 -2
- package/dist/core/api/HoldingApi.d.ts +2 -2
- package/dist/core/api/MerchantApi.d.ts +2 -2
- package/dist/core/api/NotificationApi.d.ts +2 -2
- package/dist/core/api/RepeatingTransactionsApi.d.ts +2 -2
- package/dist/core/api/ScheduledPaymentsApi.d.ts +2 -2
- package/dist/core/api/SettingsApi.d.ts +2 -2
- package/dist/core/api/TransactionApi.d.ts +2 -2
- package/dist/core/api/UserApi.d.ts +2 -2
- package/dist/core/index.es.js +95 -95
- package/dist/core/index.es.js.map +1 -1
- package/dist/core/stores/GlobalStore.d.ts +4 -2
- package/dist/core/types/Handlers.d.ts +1 -0
- package/dist/core/types/index.d.ts +1 -1
- package/dist/core/utils/Fetch.d.ts +3 -2
- package/dist/dashboard/index.es.js +4 -4
- package/dist/debts/index.es.js +8 -8
- package/dist/finstrong/index.es.js +12 -12
- package/dist/goals/index.es.js +9 -9
- package/dist/help/index.es.js +4 -4
- package/dist/hooks-DWOrMnfZ.mjs +83 -0
- package/dist/hooks-DWOrMnfZ.mjs.map +1 -0
- package/dist/insights/index.es.js +4 -4
- package/dist/investments/index.es.js +4 -4
- package/dist/merchants/index.es.js +1 -1
- package/dist/microinsights/index.es.js +1 -1
- package/dist/networth/index.es.js +6 -6
- package/dist/notifications/index.es.js +8 -8
- package/dist/recurringtransactions/index.es.js +38 -38
- package/dist/settings/index.es.js +27 -27
- package/dist/spending/index.es.js +7 -7
- package/dist/transactions/index.es.js +11 -11
- package/dist/trends/index.es.js +12 -12
- package/dist/{useAccountDisplayName-BsiXA0qf.mjs → useAccountDisplayName-DHXXCFYZ.mjs} +2 -2
- package/dist/{useAccountDisplayName-BsiXA0qf.mjs.map → useAccountDisplayName-DHXXCFYZ.mjs.map} +1 -1
- package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs → useInsightsEnabled-B_UpjpE6.mjs} +2 -2
- package/dist/{useInsightsEnabled-D5Sdm0TJ.mjs.map → useInsightsEnabled-B_UpjpE6.mjs.map} +1 -1
- package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs → useWidgetLoadTimer-C0Mr0eRf.mjs} +2 -2
- package/dist/{useWidgetLoadTimer-B0tB-yzL.mjs.map → useWidgetLoadTimer-C0Mr0eRf.mjs.map} +1 -1
- package/package.json +1 -1
- package/dist/ErrorBoundary-CsdOcnJ9.mjs +0 -24
- package/dist/ErrorBoundary-CsdOcnJ9.mjs.map +0 -1
- package/dist/GlobalCopyApi-wcnDUzMV.mjs +0 -129
- package/dist/GlobalCopyApi-wcnDUzMV.mjs.map +0 -1
- package/dist/Help-zVZdcmlk.mjs.map +0 -1
- package/dist/UserStore-E5WvBXaY.mjs.map +0 -1
- package/dist/hooks-97sNJ_lf.mjs +0 -78
- package/dist/hooks-97sNJ_lf.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart-CUfiH86G.mjs","sources":["../src/common/components/charts/linechart/utils/markerShapes.ts","../src/common/components/charts/linechart/CustomLegend.tsx","../src/common/components/charts/linechart/CustomLine.tsx","../src/common/components/charts/linechart/CustomMark.tsx","../src/common/components/charts/linechart/CustomTooltip.tsx","../src/common/components/charts/LineChart.tsx"],"sourcesContent":["export type MarkerShape = 'circle' | 'square' | 'wye' | 'star' | 'cross' | 'triangle' | 'diamond'\n\n// SVG path data for each shape, centered at origin, sized to match current ~9px circle\nexport const MARKER_SHAPE_PATHS: Record<MarkerShape, string> = {\n circle: 'M4.514,0A4.514,4.514,0,1,1,-4.514,0A4.514,4.514,0,1,1,4.514,0',\n square: 'M-4,-4L4,-4L4,4L-4,4Z',\n wye: 'M0.6,0.6L0.6,4.5L-0.6,4.5L-0.6,0.6L-4,2.6L-3.4,1.5L-0.6,-0.1L-3.4,-1.5L-4,-2.6L-0.6,-0.6L-0.6,-4.5L0.6,-4.5L0.6,-0.6L4,-2.6L3.4,-1.5L0.6,-0.1L3.4,1.5L4,2.6L0.6,0.6Z',\n star: 'M0,-5L1.1,-1.5L4.8,-1.5L1.8,0.9L2.9,4.5L0,2.2L-2.9,4.5L-1.8,0.9L-4.8,-1.5L-1.1,-1.5Z',\n cross:\n 'M-1.5,-5L1.5,-5L1.5,-1.5L5,-1.5L5,1.5L1.5,1.5L1.5,5L-1.5,5L-1.5,1.5L-5,1.5L-5,-1.5L-1.5,-1.5Z',\n triangle: 'M0,-5L4.33,3.5L-4.33,3.5Z',\n diamond: 'M0,-5.5L3.9,0L0,5.5L-3.9,0Z',\n}\n\n// Default shape sequence assigned to series by index\nconst DEFAULT_SHAPES: MarkerShape[] = [\n 'circle',\n 'square',\n 'wye',\n 'star',\n 'cross',\n 'triangle',\n 'diamond',\n]\n\nexport function getMarkerShape(seriesIndex: number): MarkerShape {\n return DEFAULT_SHAPES[seriesIndex % DEFAULT_SHAPES.length]\n}\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { type SxProps } from '@mui/material/styles'\nimport { Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../../common'\nimport { LineChartLabel } from '../LineChart'\nimport { getMarkerShape, MARKER_SHAPE_PATHS } from './utils/markerShapes'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\nexport const CustomLegendLabel = ({\n label,\n customLegendVariant,\n}: {\n label: LineChartLabel\n customLegendVariant?: string\n}) => {\n const variant = (customLegendVariant as any) || 'body2'\n\n if (typeof label === 'string') {\n return <Text variant={variant}>{label}</Text>\n }\n if (typeof label === 'object' && label.amount !== undefined && label.label) {\n return (\n <>\n <Text variant={variant}>{label.label}</Text>\n <Text bold={true} sx={{ marginLeft: 8 }} variant={variant}>\n {formatCurrency(label.amount, '0,0')}\n </Text>\n </>\n )\n }\n return null\n}\n\nconst CustomLegend = ({\n average,\n customLegendVariant,\n customLegendBoxSx,\n labels = [],\n series,\n style,\n title,\n valueFormatterString,\n}: {\n average?: number\n customLegendVariant?: string\n customLegendBoxSx?: SxProps\n labels?: LineChartLabel[]\n series: any[]\n title?: string\n style: any\n valueFormatterString?: string\n}) => {\n const { common: commonCopy } = useGlobalCopyStore()\n const variant = (customLegendVariant as any) || 'body2'\n\n return (\n <Stack style={{ flexDirection: 'row', gap: 24, ...style }}>\n {series.map((s, index) => {\n const label = labels[index]\n // Skip series without a label\n return label ? (\n <Stack\n key={index}\n style={{ alignItems: 'center', flexDirection: 'row', flexWrap: 'wrap' }}\n >\n {customLegendBoxSx !== undefined ? (\n <Box\n sx={{\n width: 10,\n height: 10,\n backgroundColor: s.color,\n marginRight: 8,\n ...customLegendBoxSx,\n }}\n />\n ) : (\n <svg\n aria-hidden=\"true\"\n height={14}\n style={{ marginRight: 8, flexShrink: 0 }}\n viewBox=\"-6 -6 12 12\"\n width={14}\n >\n <path\n d={MARKER_SHAPE_PATHS[getMarkerShape(index)]}\n fill={s.color}\n stroke={s.color}\n strokeWidth={1}\n />\n </svg>\n )}\n <CustomLegendLabel customLegendVariant={customLegendVariant} label={label} />\n </Stack>\n ) : null\n })}\n {average !== undefined && (\n <Stack sx={{ alignItems: 'center', flexDirection: 'row' }}>\n <Text bold={true} sx={{ marginRight: 8 }} variant={variant}>\n – –\n </Text>\n <Text variant={variant}>{title ? title : commonCopy.average} </Text>\n <Text bold={true} variant={variant}>\n {valueFormatterString ? formatCurrency(average, valueFormatterString) : average}\n </Text>\n </Stack>\n )}\n </Stack>\n )\n}\n\nexport default observer(CustomLegend)\n","import React from 'react'\n\nimport type { AnimatedLineProps } from '@mui/x-charts'\n\ninterface CustomLineProps extends AnimatedLineProps {\n lineColor?: string\n}\n\nexport const CustomLine: React.FC<CustomLineProps> = (props) => {\n return (\n <>\n <clipPath id={props.id}>\n <rect height={props.height} width={props.width} x=\"0\" y=\"0\" />\n </clipPath>\n <g>\n <path\n cursor=\"unset\"\n d={props.d}\n style={{\n strokeWidth: 2,\n strokeLinejoin: 'round',\n fill: 'none',\n stroke: props.lineColor ? props.lineColor : props.stroke,\n transition: 'opacity 0.2s ease-in, stroke 0.2s ease-in',\n opacity: 1,\n }}\n />\n </g>\n </>\n )\n}\n","import React from 'react'\n\nimport { useTheme } from '@mui/material/styles'\nimport useMediaQuery from '@mui/material/useMediaQuery'\n\nimport type { MarkElementProps } from '@mui/x-charts'\n\nimport { MARKER_SHAPE_PATHS } from './utils/markerShapes'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\nexport type MarkHandlers = {\n onMarkClick?: (event: React.MouseEvent<SVGPathElement, MouseEvent>, dataIndex: number) => void\n onMouseEnter?: (dataIndex: number) => void\n onMouseLeave?: () => void\n}\n\ninterface CustomMarkProps extends MarkElementProps {\n handlers?: MarkHandlers\n showLabel: boolean\n showMark?: boolean\n yData: number[]\n style?: React.CSSProperties & {\n markLabelStyles?: React.CSSProperties\n }\n labelBackgroundColor?: string\n labelFontColor?: string\n labelFontSize?: number\n valueFormatterString?: string\n}\n\nexport const CustomMark: React.FC<CustomMarkProps> = (props) => {\n const theme = useTheme()\n const showLabel = props.showLabel\n const styles = props.style\n const markLabelStyles = styles?.markLabelStyles\n const xNumber = Number(props.x)\n const yNumber = Number(props.y)\n\n const handleMarkClick = props.handlers?.onMarkClick\n const handleMouseEnter = props.handlers?.onMouseEnter\n const handleMouseLeave = props.handlers?.onMouseLeave\n\n const isSmallScreenUp = useMediaQuery(theme.breakpoints.up('sm'))\n\n // Calculate text dimensions for proper background sizing\n const formattedValue = props.valueFormatterString\n ? formatCurrency(props.yData[props.dataIndex], props.valueFormatterString)\n : String(props.yData[props.dataIndex])\n const fontSize = isSmallScreenUp\n ? theme.typography.body2?.fontSize\n : theme.typography.caption?.fontSize\n const rectWidth = 30\n const rectHeight = 24\n\n // Center the rectangle around the text\n const rectX = xNumber - rectWidth / 2\n const rectY = yNumber - 30\n return (\n <>\n {showLabel && (\n <>\n {props.labelBackgroundColor && (\n <rect\n fill={props.labelBackgroundColor}\n height={rectHeight}\n rx=\"3\"\n width={rectWidth}\n x={rectX}\n y={rectY}\n />\n )}\n\n <text\n className=\"MuiLineChart-markLabel\"\n dominantBaseline=\"middle\"\n fill={props.labelFontColor ? props.labelFontColor : theme.palette.text.primary}\n style={{\n fontSize: props.labelFontSize ? props.labelFontSize : fontSize,\n ...markLabelStyles,\n }}\n textAnchor=\"middle\"\n x={xNumber}\n y={yNumber - 28 + rectHeight / 2}\n >\n {formattedValue}\n </text>\n </>\n )}\n {props.showMark && (\n <path\n cursor={handleMarkClick ? 'pointer' : 'unset'}\n d={MARKER_SHAPE_PATHS[props.shape ?? 'circle']}\n height=\"20px\"\n onClick={(event) => {\n handleMarkClick?.(event, props.dataIndex)\n }}\n onMouseEnter={() => {\n handleMouseEnter?.(props.dataIndex)\n }}\n onMouseLeave={() => {\n handleMouseLeave?.()\n }}\n style={{\n fill: styles?.fill ? styles.fill : theme.palette.background.paper,\n stroke: styles?.stroke ? styles.stroke : theme.palette.primary.main,\n strokeWidth: 2,\n transform: `translate(${props.x}px, ${props.y}px)`,\n transformOrigin: `${props.x}px, ${props.y}px`,\n filter: styles?.filter ? styles.filter : 'none',\n }}\n width=\"20px\"\n />\n )}\n </>\n )\n}\n","import { Box, Stack } from '@mui/material'\nimport { useTheme } from '@mui/material/styles'\n\nimport { useAxesTooltip } from '@mui/x-charts/ChartsTooltip'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { LineChartLabel, TooltipLabel } from '../LineChart'\nimport { getMarkerShape, MARKER_SHAPE_PATHS } from './utils/markerShapes'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\ninterface CustomTooltipProps {\n customLabels?: TooltipLabel[][]\n isCurrency?: boolean\n labels?: LineChartLabel[]\n series: Array<{ id?: string; data: number[]; color?: string }>\n valueFormatterString?: string\n}\n\nexport function CustomTooltip({\n customLabels,\n isCurrency = true,\n labels = [],\n series,\n valueFormatterString = '0,0',\n}: CustomTooltipProps) {\n const tooltipData = useAxesTooltip()\n const theme = useTheme()\n\n const firstAxisData = tooltipData?.[0]\n\n if (!firstAxisData) return null\n\n const { axisValue, dataIndex = 0 } = firstAxisData\n\n if (customLabels) {\n const headerText = customLabels[dataIndex]?.[0]?.header || String(axisValue)\n\n return (\n <Stack\n sx={{\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 2px 8px 0 rgba(0, 0, 0, 0.12)',\n flexDirection: 'column',\n alignItems: 'flex-start',\n borderRadius: '4px',\n width: 250,\n gap: 8,\n px: 16,\n py: 12,\n }}\n >\n <Stack\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n alignSelf: 'stretch',\n gap: 8,\n marginTop: 4,\n }}\n >\n <Text variant=\"h3\">{headerText}</Text>\n <Text bold={true} variant=\"h3\">\n {formatCurrency(series[0]?.data[dataIndex] as number, valueFormatterString)}\n </Text>\n </Stack>\n {customLabels[dataIndex]?.some((labelItem) => {\n const amount = typeof labelItem === 'string' ? 0 : labelItem.amount\n return amount !== 0\n }) ? (\n customLabels[dataIndex]?.map((labelItem) => {\n const label = typeof labelItem === 'string' ? labelItem : labelItem.label\n const amount = typeof labelItem === 'string' ? 0 : labelItem.amount\n\n if (amount === 0) return null\n return (\n <Stack\n key={label}\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n alignSelf: 'stretch',\n gap: 8,\n marginTop: 4,\n }}\n >\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n flex: 1,\n minWidth: 0,\n }}\n >\n <Box\n sx={{\n width: '12px',\n height: '12px',\n backgroundColor: series[0]?.color,\n borderRadius: '4px',\n }}\n />\n <Text variant=\"body1\">{label}</Text>\n </Stack>\n <Text bold={true} variant=\"body1\">\n {formatCurrency(Math.abs(amount), valueFormatterString)}\n </Text>\n </Stack>\n )\n })\n ) : (\n <Text variant=\"body1\">No data</Text> //TODO: localize\n )}\n </Stack>\n )\n }\n return (\n <Stack\n sx={{\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 2px 8px 0 rgba(0, 0, 0, 0.12)',\n flexDirection: 'column',\n alignItems: 'flex-start',\n borderRadius: '4px',\n width: 225,\n gap: 8,\n px: 16,\n py: 12,\n }}\n >\n <Text variant=\"h3\">{String(axisValue)}</Text>\n {series.map((s, sIndex) => (\n <Stack\n key={`${s.id}-${sIndex}`}\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n alignSelf: 'stretch',\n gap: 8,\n marginTop: 4,\n }}\n >\n <Stack sx={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>\n <svg aria-hidden=\"true\" height={12} viewBox=\"-6 -6 12 12\" width={12}>\n <path d={MARKER_SHAPE_PATHS[getMarkerShape(sIndex)]} fill={s.color} />\n </svg>\n <Text variant=\"body1\">\n {typeof labels[sIndex] === 'string' ? labels[sIndex] : labels[sIndex]?.label}\n </Text>\n </Stack>\n <Text bold={true} variant=\"body1\">\n {isCurrency\n ? formatCurrency(s.data[dataIndex] as number, valueFormatterString)\n : s.data[dataIndex]}\n </Text>\n </Stack>\n ))}\n </Stack>\n )\n}\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport type { SxProps } from '@mui/material/styles'\nimport { useTheme } from '@mui/material/styles'\n\nimport type { AllSeriesType } from '@mui/x-charts'\nimport { BarPlot } from '@mui/x-charts/BarChart'\nimport { ChartContainer as ResponsiveChartContainer } from '@mui/x-charts/ChartContainer'\nimport { ChartsAxisHighlight } from '@mui/x-charts/ChartsAxisHighlight'\nimport { ChartsReferenceLine } from '@mui/x-charts/ChartsReferenceLine'\nimport { ChartsTooltipContainer } from '@mui/x-charts/ChartsTooltip'\nimport { ChartsXAxis } from '@mui/x-charts/ChartsXAxis'\nimport { ChartsYAxis } from '@mui/x-charts/ChartsYAxis'\nimport { AreaPlot, LinePlot, MarkPlot } from '@mui/x-charts/LineChart'\n\nimport CustomLegend from './linechart/CustomLegend'\nimport { getMarkerShape } from './linechart/utils/markerShapes'\nimport { CustomLine } from './linechart/CustomLine'\nimport { CustomMark, MarkHandlers } from './linechart/CustomMark'\nimport { CustomTooltip } from './linechart/CustomTooltip'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\nimport { generateEqualIntervals } from '../../../core/utils/NumberFormatting'\n\nexport type LineChartDataset = { x: string; y: number }[]\nexport type LineChartLabel = string | { label: string; amount: number }\nexport type TooltipLabel = LineChartLabel & { header?: string }\n\ntype LineChartCurve =\n | 'catmullRom'\n | 'linear'\n | 'monotoneX'\n | 'monotoneY'\n | 'natural'\n | 'step'\n | 'stepBefore'\n | 'stepAfter'\n | 'bump'\n | 'bumpX'\n | 'bumpY'\n\ninterface LineChartProps {\n areaColor?: string\n axisColor?: string\n baseline?: string\n chartFor?: string\n chartXaxisSx?: SxProps\n chartYaxisSx?: SxProps\n // Because theme chart colors are typed string|undefined\n colors: (string | undefined)[]\n curveType?: LineChartCurve\n customLegendVariant?: string\n customLegendSx?: SxProps\n customLegendBoxSx?: SxProps\n customTooltipLabels?: TooltipLabel[][]\n datasets: LineChartDataset[]\n height?: number\n isCurrency?: boolean\n isGraphClippingXAxis?: boolean\n labels: LineChartLabel[]\n labelBackgroundColor?: string\n labelFontColor?: string\n labelFontSize?: number\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n markHandlers?: MarkHandlers\n markStyles?: (markIndex: number) => React.CSSProperties & {\n markLabelStyles?: React.CSSProperties\n }\n minRange?: number\n maxRange?: number\n onItemClick?: () => void\n peerAverage?: number\n showArea?: boolean\n showAverage?: boolean\n showAxisHighlight?: boolean\n showBars?: boolean\n showLegend?: boolean\n showMark?: boolean\n showMarkLabel?: boolean\n showTooltip?: boolean\n showXAxis?: boolean\n showXAxisTicks?: boolean\n showYAxis?: boolean\n showYAxisTicks?: boolean\n tickIntervals?: any[] | 'auto' | ((value: any, index: number) => boolean) | undefined\n title?: string\n useCustomMark?: boolean\n valueFormatterString?: string\n width?: number\n xAxisScaleType?: 'band' | 'point'\n}\n\n// TODO: Remove negative values and use a proper layout to support X-Charts v8\n\nexport const LineChart: React.FC<LineChartProps> = ({\n areaColor,\n axisColor,\n baseline = 'max',\n chartFor,\n chartXaxisSx,\n chartYaxisSx,\n colors,\n curveType = 'linear',\n customLegendVariant,\n customLegendSx,\n customLegendBoxSx,\n customTooltipLabels,\n datasets,\n height,\n isCurrency,\n isGraphClippingXAxis = false,\n labels,\n labelBackgroundColor,\n labelFontColor,\n labelFontSize,\n margin,\n markHandlers,\n markStyles,\n minRange,\n maxRange,\n onItemClick,\n peerAverage,\n showArea = false,\n showAverage = false,\n showAxisHighlight = false,\n showBars = false,\n showLegend = false,\n showMark = true,\n showMarkLabel = false,\n showTooltip = false,\n showXAxis = false,\n showXAxisTicks = false,\n showYAxis = false,\n showYAxisTicks = false,\n title,\n useCustomMark = false,\n valueFormatterString,\n width,\n xAxisScaleType,\n}) => {\n const theme = useTheme()\n\n // Data for the X axis\n const xData = datasets.flat().map((item) => item.x)\n const yData = datasets.flat().map((item) => item.y)\n\n const average = peerAverage\n ? peerAverage\n : Math.round(yData.reduce((value, total) => total + value, 0) / yData.length)\n\n // Used for the min and max Y axis values\n const yMin = Math.floor(Math.min(...yData) / 100) * 100\n const yMax = Math.ceil(Math.max(...yData) / 100) * 100\n\n const series = datasets.map((data, index) => {\n return {\n type: showBars ? 'bar' : 'line',\n curve: curveType,\n color: showBars ? theme.palette.chart?.chart6 : (colors[index] ?? theme.palette.primary.main),\n data: data.map((item) => item.y),\n area: showArea,\n baseline: baseline,\n showMark: true,\n shape: getMarkerShape(index),\n valueFormatter: (value: number) =>\n valueFormatterString ? formatCurrency(value || 0, valueFormatterString) : String(value),\n }\n })\n\n const defaultMargin = {\n top: 60,\n right: 35,\n bottom: 25,\n left: -10,\n }\n\n // Merge default margin with any provided custom margin\n const chartMargin = {\n ...defaultMargin,\n ...margin,\n }\n\n let rangeMin = minRange ?? yMin\n let rangeMax = maxRange ?? yMax\n if (chartFor === 'networthChart') {\n const valueRange = yMax - yMin\n\n const paddingRatio = valueRange < yMax * 0.05 ? 0.25 : 0.2\n const padding = Math.max(valueRange * paddingRatio, yMax * 0.015)\n rangeMin = yMin - padding < 0 ? yMin : yMin - padding\n rangeMax = yMax + padding\n }\n\n const getTickInterval = () => {\n if (chartFor === 'creditOverTime') {\n return generateEqualIntervals(rangeMin, 850, 5)\n } else if (chartFor === 'networthChart') {\n return generateEqualIntervals(rangeMin, rangeMax, 5)\n }\n return undefined\n }\n return (\n <Box\n sx={{\n position: 'relative',\n touchAction: 'pan-y', // Allow vertical scrolling\n '& svg': {\n touchAction: 'pan-y', // Allow vertical scrolling on SVG\n userSelect: 'none', // Prevent text selection\n },\n '& .recharts-wrapper': {\n touchAction: 'pan-y', // For Recharts library specifically\n },\n }}\n >\n <ResponsiveChartContainer\n height={height}\n margin={chartMargin}\n series={series as AllSeriesType[]}\n sx={{\n '& .MuiBarLabel-root': {\n fontSize: 10,\n fontWeight: 600,\n },\n '& .MuiAreaElement-root': {\n opacity: 0.15,\n },\n '& .MuiChartsAxis-tickLabel > tspan': {\n fontFamily: theme.typography.body2.fontFamily,\n },\n '& .MuiLineChart-markLabel': {\n fontFamily: theme.typography.body2.fontFamily,\n },\n }}\n width={width}\n xAxis={[{ data: xData, scaleType: xAxisScaleType || (showBars ? 'band' : 'point') }]}\n yAxis={[\n {\n tickInterval: getTickInterval(),\n min: isGraphClippingXAxis ? -22 : rangeMin,\n max: rangeMax || 100,\n colorMap:\n showArea && series.length < 2\n ? {\n type: 'continuous',\n min: rangeMin,\n max: rangeMax,\n color: [\n theme.palette.background.paper,\n colors[0] ?? theme.palette.primary.main,\n ],\n }\n : undefined,\n valueFormatter: (value: number) =>\n valueFormatterString ? formatCurrency(value, valueFormatterString) : String(value),\n width: 62,\n },\n ]}\n >\n {/** Provides the average line - positioned first to be behind other elements **/}\n {showAverage && (\n <ChartsReferenceLine\n lineStyle={{\n stroke: labelBackgroundColor\n ? theme.palette.neutral.main\n : theme.palette.neutral.dark,\n strokeDasharray: '10, 8',\n strokeWidth: 2,\n }}\n y={average}\n />\n )}\n\n {/** Area plot provides gradiant below the line **/}\n {/* Note: Must be above the LinePlot for some style rules to work */}\n <AreaPlot\n onItemClick={onItemClick}\n {...(areaColor && {\n slots: {\n area: (props) => {\n return (\n <g>\n <defs>\n <linearGradient id=\"customGradient\" x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={areaColor} />\n <stop offset=\"100%\" stopColor={areaColor} stopOpacity={0.02} />\n </linearGradient>\n </defs>\n <path {...props} fill={`url(#customGradient)`} />\n </g>\n )\n },\n },\n })}\n />\n\n {/** Line plot provides the data line **/}\n <LinePlot\n onItemClick={onItemClick}\n slots={{\n line: (props) => (\n <CustomLine\n {...props}\n lineColor={areaColor ?? props.ownerState.color ?? theme.palette.primary.main}\n />\n ),\n }}\n />\n\n {/** Mark plot provides the circles **/}\n <MarkPlot\n onItemClick={onItemClick}\n slots={\n useCustomMark\n ? {\n mark: (props) => {\n return (\n <CustomMark\n handlers={markHandlers}\n labelBackgroundColor={labelBackgroundColor}\n labelFontColor={labelFontColor}\n labelFontSize={labelFontSize}\n showLabel={showMarkLabel}\n showMark={showMark || props.dataIndex === datasets[0].length - 1}\n style={markStyles?.(props.dataIndex) ?? {}}\n valueFormatterString={valueFormatterString}\n yData={yData}\n {...props}\n />\n )\n },\n }\n : undefined\n }\n />\n\n <BarPlot\n barLabel={(item) => (Number(item.value) > 0 ? `$${item.value}` : null)}\n borderRadius={10}\n />\n\n {/** Provides the X axis line and values **/}\n <ChartsXAxis\n disableLine={!showXAxis}\n disableTicks={!showXAxisTicks}\n slotProps={\n axisColor\n ? {\n axisLine: {\n style: {\n stroke: axisColor,\n },\n },\n axisTick: {\n style: {\n stroke: axisColor,\n },\n },\n }\n : {}\n }\n sx={{ ...chartXaxisSx }}\n />\n\n {/** Provides the Y axis values **/}\n <ChartsYAxis\n disableLine={!showYAxis}\n disableTicks={!showYAxisTicks}\n slotProps={\n axisColor\n ? {\n axisLine: {\n style: {\n stroke: axisColor,\n },\n },\n axisTick: {\n style: {\n stroke: axisColor,\n },\n },\n }\n : {}\n }\n sx={{ ...chartYaxisSx }}\n />\n\n {/* Add vertical crosshair on hover */}\n {showAxisHighlight && <ChartsAxisHighlight x=\"line\" />}\n\n {showTooltip && (\n <ChartsTooltipContainer trigger=\"axis\">\n <CustomTooltip\n customLabels={customTooltipLabels}\n isCurrency={isCurrency}\n labels={labels}\n series={series}\n valueFormatterString={valueFormatterString}\n />\n </ChartsTooltipContainer>\n )}\n </ResponsiveChartContainer>\n\n {showLegend && (\n <CustomLegend\n average={showAverage ? average : undefined}\n customLegendBoxSx={customLegendBoxSx}\n customLegendVariant={customLegendVariant}\n labels={labels}\n series={series}\n style={{\n position: 'absolute',\n top: 16,\n left: 16,\n ...customLegendSx,\n }}\n title={title}\n valueFormatterString={valueFormatterString}\n />\n )}\n </Box>\n )\n}\n"],"names":["MARKER_SHAPE_PATHS","DEFAULT_SHAPES","getMarkerShape","seriesIndex","CustomLegendLabel","label","customLegendVariant","variant","jsx","Text","jsxs","Fragment","formatCurrency","CustomLegend","average","customLegendBoxSx","labels","series","style","title","valueFormatterString","commonCopy","useGlobalCopyStore","Stack","s","index","Box","CustomLegend$1","observer","CustomLine","props","CustomMark","theme","useTheme","showLabel","styles","markLabelStyles","xNumber","yNumber","handleMarkClick","handleMouseEnter","handleMouseLeave","isSmallScreenUp","useMediaQuery","formattedValue","fontSize","rectWidth","rectHeight","rectX","rectY","event","CustomTooltip","customLabels","isCurrency","tooltipData","useAxesTooltip","firstAxisData","axisValue","dataIndex","headerText","labelItem","amount","sIndex","LineChart","areaColor","axisColor","baseline","chartFor","chartXaxisSx","chartYaxisSx","colors","curveType","customLegendSx","customTooltipLabels","datasets","height","isGraphClippingXAxis","labelBackgroundColor","labelFontColor","labelFontSize","margin","markHandlers","markStyles","minRange","maxRange","onItemClick","peerAverage","showArea","showAverage","showAxisHighlight","showBars","showLegend","showMark","showMarkLabel","showTooltip","showXAxis","showXAxisTicks","showYAxis","showYAxisTicks","useCustomMark","width","xAxisScaleType","xData","item","yData","value","total","yMin","yMax","data","chartMargin","rangeMin","rangeMax","valueRange","paddingRatio","padding","getTickInterval","generateEqualIntervals","ResponsiveChartContainer","ChartsReferenceLine","AreaPlot","LinePlot","MarkPlot","BarPlot","ChartsXAxis","ChartsYAxis","ChartsAxisHighlight","ChartsTooltipContainer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LineChart-BxEIZHht.mjs","sources":["../src/common/components/charts/linechart/utils/markerShapes.ts","../src/common/components/charts/linechart/CustomLegend.tsx","../src/common/components/charts/linechart/CustomLine.tsx","../src/common/components/charts/linechart/CustomMark.tsx","../src/common/components/charts/linechart/CustomTooltip.tsx","../src/common/components/charts/LineChart.tsx"],"sourcesContent":["export type MarkerShape = 'circle' | 'square' | 'wye' | 'star' | 'cross' | 'triangle' | 'diamond'\n\n// SVG path data for each shape, centered at origin, sized to match current ~9px circle\nexport const MARKER_SHAPE_PATHS: Record<MarkerShape, string> = {\n circle: 'M4.514,0A4.514,4.514,0,1,1,-4.514,0A4.514,4.514,0,1,1,4.514,0',\n square: 'M-4,-4L4,-4L4,4L-4,4Z',\n wye: 'M0.6,0.6L0.6,4.5L-0.6,4.5L-0.6,0.6L-4,2.6L-3.4,1.5L-0.6,-0.1L-3.4,-1.5L-4,-2.6L-0.6,-0.6L-0.6,-4.5L0.6,-4.5L0.6,-0.6L4,-2.6L3.4,-1.5L0.6,-0.1L3.4,1.5L4,2.6L0.6,0.6Z',\n star: 'M0,-5L1.1,-1.5L4.8,-1.5L1.8,0.9L2.9,4.5L0,2.2L-2.9,4.5L-1.8,0.9L-4.8,-1.5L-1.1,-1.5Z',\n cross:\n 'M-1.5,-5L1.5,-5L1.5,-1.5L5,-1.5L5,1.5L1.5,1.5L1.5,5L-1.5,5L-1.5,1.5L-5,1.5L-5,-1.5L-1.5,-1.5Z',\n triangle: 'M0,-5L4.33,3.5L-4.33,3.5Z',\n diamond: 'M0,-5.5L3.9,0L0,5.5L-3.9,0Z',\n}\n\n// Default shape sequence assigned to series by index\nconst DEFAULT_SHAPES: MarkerShape[] = [\n 'circle',\n 'square',\n 'wye',\n 'star',\n 'cross',\n 'triangle',\n 'diamond',\n]\n\nexport function getMarkerShape(seriesIndex: number): MarkerShape {\n return DEFAULT_SHAPES[seriesIndex % DEFAULT_SHAPES.length]\n}\n","import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { type SxProps } from '@mui/material/styles'\nimport { Text } from '@mxenabled/mxui'\n\nimport { useGlobalCopyStore } from '../../../../common'\nimport { LineChartLabel } from '../LineChart'\nimport { getMarkerShape, MARKER_SHAPE_PATHS } from './utils/markerShapes'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\nexport const CustomLegendLabel = ({\n label,\n customLegendVariant,\n}: {\n label: LineChartLabel\n customLegendVariant?: string\n}) => {\n const variant = (customLegendVariant as any) || 'body2'\n\n if (typeof label === 'string') {\n return <Text variant={variant}>{label}</Text>\n }\n if (typeof label === 'object' && label.amount !== undefined && label.label) {\n return (\n <>\n <Text variant={variant}>{label.label}</Text>\n <Text bold={true} sx={{ marginLeft: 8 }} variant={variant}>\n {formatCurrency(label.amount, '0,0')}\n </Text>\n </>\n )\n }\n return null\n}\n\nconst CustomLegend = ({\n average,\n customLegendVariant,\n customLegendBoxSx,\n labels = [],\n series,\n style,\n title,\n valueFormatterString,\n}: {\n average?: number\n customLegendVariant?: string\n customLegendBoxSx?: SxProps\n labels?: LineChartLabel[]\n series: any[]\n title?: string\n style: any\n valueFormatterString?: string\n}) => {\n const { common: commonCopy } = useGlobalCopyStore()\n const variant = (customLegendVariant as any) || 'body2'\n\n return (\n <Stack style={{ flexDirection: 'row', gap: 24, ...style }}>\n {series.map((s, index) => {\n const label = labels[index]\n // Skip series without a label\n return label ? (\n <Stack\n key={index}\n style={{ alignItems: 'center', flexDirection: 'row', flexWrap: 'wrap' }}\n >\n {customLegendBoxSx !== undefined ? (\n <Box\n sx={{\n width: 10,\n height: 10,\n backgroundColor: s.color,\n marginRight: 8,\n ...customLegendBoxSx,\n }}\n />\n ) : (\n <svg\n aria-hidden=\"true\"\n height={14}\n style={{ marginRight: 8, flexShrink: 0 }}\n viewBox=\"-6 -6 12 12\"\n width={14}\n >\n <path\n d={MARKER_SHAPE_PATHS[getMarkerShape(index)]}\n fill={s.color}\n stroke={s.color}\n strokeWidth={1}\n />\n </svg>\n )}\n <CustomLegendLabel customLegendVariant={customLegendVariant} label={label} />\n </Stack>\n ) : null\n })}\n {average !== undefined && (\n <Stack sx={{ alignItems: 'center', flexDirection: 'row' }}>\n <Text bold={true} sx={{ marginRight: 8 }} variant={variant}>\n – –\n </Text>\n <Text variant={variant}>{title ? title : commonCopy.average} </Text>\n <Text bold={true} variant={variant}>\n {valueFormatterString ? formatCurrency(average, valueFormatterString) : average}\n </Text>\n </Stack>\n )}\n </Stack>\n )\n}\n\nexport default observer(CustomLegend)\n","import React from 'react'\n\nimport type { AnimatedLineProps } from '@mui/x-charts'\n\ninterface CustomLineProps extends AnimatedLineProps {\n lineColor?: string\n}\n\nexport const CustomLine: React.FC<CustomLineProps> = (props) => {\n return (\n <>\n <clipPath id={props.id}>\n <rect height={props.height} width={props.width} x=\"0\" y=\"0\" />\n </clipPath>\n <g>\n <path\n cursor=\"unset\"\n d={props.d}\n style={{\n strokeWidth: 2,\n strokeLinejoin: 'round',\n fill: 'none',\n stroke: props.lineColor ? props.lineColor : props.stroke,\n transition: 'opacity 0.2s ease-in, stroke 0.2s ease-in',\n opacity: 1,\n }}\n />\n </g>\n </>\n )\n}\n","import React from 'react'\n\nimport { useTheme } from '@mui/material/styles'\nimport useMediaQuery from '@mui/material/useMediaQuery'\n\nimport type { MarkElementProps } from '@mui/x-charts'\n\nimport { MARKER_SHAPE_PATHS } from './utils/markerShapes'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\nexport type MarkHandlers = {\n onMarkClick?: (event: React.MouseEvent<SVGPathElement, MouseEvent>, dataIndex: number) => void\n onMouseEnter?: (dataIndex: number) => void\n onMouseLeave?: () => void\n}\n\ninterface CustomMarkProps extends MarkElementProps {\n handlers?: MarkHandlers\n showLabel: boolean\n showMark?: boolean\n yData: number[]\n style?: React.CSSProperties & {\n markLabelStyles?: React.CSSProperties\n }\n labelBackgroundColor?: string\n labelFontColor?: string\n labelFontSize?: number\n valueFormatterString?: string\n}\n\nexport const CustomMark: React.FC<CustomMarkProps> = (props) => {\n const theme = useTheme()\n const showLabel = props.showLabel\n const styles = props.style\n const markLabelStyles = styles?.markLabelStyles\n const xNumber = Number(props.x)\n const yNumber = Number(props.y)\n\n const handleMarkClick = props.handlers?.onMarkClick\n const handleMouseEnter = props.handlers?.onMouseEnter\n const handleMouseLeave = props.handlers?.onMouseLeave\n\n const isSmallScreenUp = useMediaQuery(theme.breakpoints.up('sm'))\n\n // Calculate text dimensions for proper background sizing\n const formattedValue = props.valueFormatterString\n ? formatCurrency(props.yData[props.dataIndex], props.valueFormatterString)\n : String(props.yData[props.dataIndex])\n const fontSize = isSmallScreenUp\n ? theme.typography.body2?.fontSize\n : theme.typography.caption?.fontSize\n const rectWidth = 30\n const rectHeight = 24\n\n // Center the rectangle around the text\n const rectX = xNumber - rectWidth / 2\n const rectY = yNumber - 30\n return (\n <>\n {showLabel && (\n <>\n {props.labelBackgroundColor && (\n <rect\n fill={props.labelBackgroundColor}\n height={rectHeight}\n rx=\"3\"\n width={rectWidth}\n x={rectX}\n y={rectY}\n />\n )}\n\n <text\n className=\"MuiLineChart-markLabel\"\n dominantBaseline=\"middle\"\n fill={props.labelFontColor ? props.labelFontColor : theme.palette.text.primary}\n style={{\n fontSize: props.labelFontSize ? props.labelFontSize : fontSize,\n ...markLabelStyles,\n }}\n textAnchor=\"middle\"\n x={xNumber}\n y={yNumber - 28 + rectHeight / 2}\n >\n {formattedValue}\n </text>\n </>\n )}\n {props.showMark && (\n <path\n cursor={handleMarkClick ? 'pointer' : 'unset'}\n d={MARKER_SHAPE_PATHS[props.shape ?? 'circle']}\n height=\"20px\"\n onClick={(event) => {\n handleMarkClick?.(event, props.dataIndex)\n }}\n onMouseEnter={() => {\n handleMouseEnter?.(props.dataIndex)\n }}\n onMouseLeave={() => {\n handleMouseLeave?.()\n }}\n style={{\n fill: styles?.fill ? styles.fill : theme.palette.background.paper,\n stroke: styles?.stroke ? styles.stroke : theme.palette.primary.main,\n strokeWidth: 2,\n transform: `translate(${props.x}px, ${props.y}px)`,\n transformOrigin: `${props.x}px, ${props.y}px`,\n filter: styles?.filter ? styles.filter : 'none',\n }}\n width=\"20px\"\n />\n )}\n </>\n )\n}\n","import { Box, Stack } from '@mui/material'\nimport { useTheme } from '@mui/material/styles'\n\nimport { useAxesTooltip } from '@mui/x-charts/ChartsTooltip'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { LineChartLabel, TooltipLabel } from '../LineChart'\nimport { getMarkerShape, MARKER_SHAPE_PATHS } from './utils/markerShapes'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\ninterface CustomTooltipProps {\n customLabels?: TooltipLabel[][]\n isCurrency?: boolean\n labels?: LineChartLabel[]\n series: Array<{ id?: string; data: number[]; color?: string }>\n valueFormatterString?: string\n}\n\nexport function CustomTooltip({\n customLabels,\n isCurrency = true,\n labels = [],\n series,\n valueFormatterString = '0,0',\n}: CustomTooltipProps) {\n const tooltipData = useAxesTooltip()\n const theme = useTheme()\n\n const firstAxisData = tooltipData?.[0]\n\n if (!firstAxisData) return null\n\n const { axisValue, dataIndex = 0 } = firstAxisData\n\n if (customLabels) {\n const headerText = customLabels[dataIndex]?.[0]?.header || String(axisValue)\n\n return (\n <Stack\n sx={{\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 2px 8px 0 rgba(0, 0, 0, 0.12)',\n flexDirection: 'column',\n alignItems: 'flex-start',\n borderRadius: '4px',\n width: 250,\n gap: 8,\n px: 16,\n py: 12,\n }}\n >\n <Stack\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n alignSelf: 'stretch',\n gap: 8,\n marginTop: 4,\n }}\n >\n <Text variant=\"h3\">{headerText}</Text>\n <Text bold={true} variant=\"h3\">\n {formatCurrency(series[0]?.data[dataIndex] as number, valueFormatterString)}\n </Text>\n </Stack>\n {customLabels[dataIndex]?.some((labelItem) => {\n const amount = typeof labelItem === 'string' ? 0 : labelItem.amount\n return amount !== 0\n }) ? (\n customLabels[dataIndex]?.map((labelItem) => {\n const label = typeof labelItem === 'string' ? labelItem : labelItem.label\n const amount = typeof labelItem === 'string' ? 0 : labelItem.amount\n\n if (amount === 0) return null\n return (\n <Stack\n key={label}\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n alignSelf: 'stretch',\n gap: 8,\n marginTop: 4,\n }}\n >\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n flex: 1,\n minWidth: 0,\n }}\n >\n <Box\n sx={{\n width: '12px',\n height: '12px',\n backgroundColor: series[0]?.color,\n borderRadius: '4px',\n }}\n />\n <Text variant=\"body1\">{label}</Text>\n </Stack>\n <Text bold={true} variant=\"body1\">\n {formatCurrency(Math.abs(amount), valueFormatterString)}\n </Text>\n </Stack>\n )\n })\n ) : (\n <Text variant=\"body1\">No data</Text> //TODO: localize\n )}\n </Stack>\n )\n }\n return (\n <Stack\n sx={{\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 2px 8px 0 rgba(0, 0, 0, 0.12)',\n flexDirection: 'column',\n alignItems: 'flex-start',\n borderRadius: '4px',\n width: 225,\n gap: 8,\n px: 16,\n py: 12,\n }}\n >\n <Text variant=\"h3\">{String(axisValue)}</Text>\n {series.map((s, sIndex) => (\n <Stack\n key={`${s.id}-${sIndex}`}\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n alignSelf: 'stretch',\n gap: 8,\n marginTop: 4,\n }}\n >\n <Stack sx={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>\n <svg aria-hidden=\"true\" height={12} viewBox=\"-6 -6 12 12\" width={12}>\n <path d={MARKER_SHAPE_PATHS[getMarkerShape(sIndex)]} fill={s.color} />\n </svg>\n <Text variant=\"body1\">\n {typeof labels[sIndex] === 'string' ? labels[sIndex] : labels[sIndex]?.label}\n </Text>\n </Stack>\n <Text bold={true} variant=\"body1\">\n {isCurrency\n ? formatCurrency(s.data[dataIndex] as number, valueFormatterString)\n : s.data[dataIndex]}\n </Text>\n </Stack>\n ))}\n </Stack>\n )\n}\n","import React from 'react'\n\nimport Box from '@mui/material/Box'\nimport type { SxProps } from '@mui/material/styles'\nimport { useTheme } from '@mui/material/styles'\n\nimport type { AllSeriesType } from '@mui/x-charts'\nimport { BarPlot } from '@mui/x-charts/BarChart'\nimport { ChartContainer as ResponsiveChartContainer } from '@mui/x-charts/ChartContainer'\nimport { ChartsAxisHighlight } from '@mui/x-charts/ChartsAxisHighlight'\nimport { ChartsReferenceLine } from '@mui/x-charts/ChartsReferenceLine'\nimport { ChartsTooltipContainer } from '@mui/x-charts/ChartsTooltip'\nimport { ChartsXAxis } from '@mui/x-charts/ChartsXAxis'\nimport { ChartsYAxis } from '@mui/x-charts/ChartsYAxis'\nimport { AreaPlot, LinePlot, MarkPlot } from '@mui/x-charts/LineChart'\n\nimport CustomLegend from './linechart/CustomLegend'\nimport { getMarkerShape } from './linechart/utils/markerShapes'\nimport { CustomLine } from './linechart/CustomLine'\nimport { CustomMark, MarkHandlers } from './linechart/CustomMark'\nimport { CustomTooltip } from './linechart/CustomTooltip'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\nimport { generateEqualIntervals } from '../../../core/utils/NumberFormatting'\n\nexport type LineChartDataset = { x: string; y: number }[]\nexport type LineChartLabel = string | { label: string; amount: number }\nexport type TooltipLabel = LineChartLabel & { header?: string }\n\ntype LineChartCurve =\n | 'catmullRom'\n | 'linear'\n | 'monotoneX'\n | 'monotoneY'\n | 'natural'\n | 'step'\n | 'stepBefore'\n | 'stepAfter'\n | 'bump'\n | 'bumpX'\n | 'bumpY'\n\ninterface LineChartProps {\n areaColor?: string\n axisColor?: string\n baseline?: string\n chartFor?: string\n chartXaxisSx?: SxProps\n chartYaxisSx?: SxProps\n // Because theme chart colors are typed string|undefined\n colors: (string | undefined)[]\n curveType?: LineChartCurve\n customLegendVariant?: string\n customLegendSx?: SxProps\n customLegendBoxSx?: SxProps\n customTooltipLabels?: TooltipLabel[][]\n datasets: LineChartDataset[]\n height?: number\n isCurrency?: boolean\n isGraphClippingXAxis?: boolean\n labels: LineChartLabel[]\n labelBackgroundColor?: string\n labelFontColor?: string\n labelFontSize?: number\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n markHandlers?: MarkHandlers\n markStyles?: (markIndex: number) => React.CSSProperties & {\n markLabelStyles?: React.CSSProperties\n }\n minRange?: number\n maxRange?: number\n onItemClick?: () => void\n peerAverage?: number\n showArea?: boolean\n showAverage?: boolean\n showAxisHighlight?: boolean\n showBars?: boolean\n showLegend?: boolean\n showMark?: boolean\n showMarkLabel?: boolean\n showTooltip?: boolean\n showXAxis?: boolean\n showXAxisTicks?: boolean\n showYAxis?: boolean\n showYAxisTicks?: boolean\n tickIntervals?: any[] | 'auto' | ((value: any, index: number) => boolean) | undefined\n title?: string\n useCustomMark?: boolean\n valueFormatterString?: string\n width?: number\n xAxisScaleType?: 'band' | 'point'\n}\n\n// TODO: Remove negative values and use a proper layout to support X-Charts v8\n\nexport const LineChart: React.FC<LineChartProps> = ({\n areaColor,\n axisColor,\n baseline = 'max',\n chartFor,\n chartXaxisSx,\n chartYaxisSx,\n colors,\n curveType = 'linear',\n customLegendVariant,\n customLegendSx,\n customLegendBoxSx,\n customTooltipLabels,\n datasets,\n height,\n isCurrency,\n isGraphClippingXAxis = false,\n labels,\n labelBackgroundColor,\n labelFontColor,\n labelFontSize,\n margin,\n markHandlers,\n markStyles,\n minRange,\n maxRange,\n onItemClick,\n peerAverage,\n showArea = false,\n showAverage = false,\n showAxisHighlight = false,\n showBars = false,\n showLegend = false,\n showMark = true,\n showMarkLabel = false,\n showTooltip = false,\n showXAxis = false,\n showXAxisTicks = false,\n showYAxis = false,\n showYAxisTicks = false,\n title,\n useCustomMark = false,\n valueFormatterString,\n width,\n xAxisScaleType,\n}) => {\n const theme = useTheme()\n\n // Data for the X axis\n const xData = datasets.flat().map((item) => item.x)\n const yData = datasets.flat().map((item) => item.y)\n\n const average = peerAverage\n ? peerAverage\n : Math.round(yData.reduce((value, total) => total + value, 0) / yData.length)\n\n // Used for the min and max Y axis values\n const yMin = Math.floor(Math.min(...yData) / 100) * 100\n const yMax = Math.ceil(Math.max(...yData) / 100) * 100\n\n const series = datasets.map((data, index) => {\n return {\n type: showBars ? 'bar' : 'line',\n curve: curveType,\n color: showBars ? theme.palette.chart?.chart6 : (colors[index] ?? theme.palette.primary.main),\n data: data.map((item) => item.y),\n area: showArea,\n baseline: baseline,\n showMark: true,\n shape: getMarkerShape(index),\n valueFormatter: (value: number) =>\n valueFormatterString ? formatCurrency(value || 0, valueFormatterString) : String(value),\n }\n })\n\n const defaultMargin = {\n top: 60,\n right: 35,\n bottom: 25,\n left: -10,\n }\n\n // Merge default margin with any provided custom margin\n const chartMargin = {\n ...defaultMargin,\n ...margin,\n }\n\n let rangeMin = minRange ?? yMin\n let rangeMax = maxRange ?? yMax\n if (chartFor === 'networthChart') {\n const valueRange = yMax - yMin\n\n const paddingRatio = valueRange < yMax * 0.05 ? 0.25 : 0.2\n const padding = Math.max(valueRange * paddingRatio, yMax * 0.015)\n rangeMin = yMin - padding < 0 ? yMin : yMin - padding\n rangeMax = yMax + padding\n }\n\n const getTickInterval = () => {\n if (chartFor === 'creditOverTime') {\n return generateEqualIntervals(rangeMin, 850, 5)\n } else if (chartFor === 'networthChart') {\n return generateEqualIntervals(rangeMin, rangeMax, 5)\n }\n return undefined\n }\n return (\n <Box\n sx={{\n position: 'relative',\n touchAction: 'pan-y', // Allow vertical scrolling\n '& svg': {\n touchAction: 'pan-y', // Allow vertical scrolling on SVG\n userSelect: 'none', // Prevent text selection\n },\n '& .recharts-wrapper': {\n touchAction: 'pan-y', // For Recharts library specifically\n },\n }}\n >\n <ResponsiveChartContainer\n height={height}\n margin={chartMargin}\n series={series as AllSeriesType[]}\n sx={{\n '& .MuiBarLabel-root': {\n fontSize: 10,\n fontWeight: 600,\n },\n '& .MuiAreaElement-root': {\n opacity: 0.15,\n },\n '& .MuiChartsAxis-tickLabel > tspan': {\n fontFamily: theme.typography.body2.fontFamily,\n },\n '& .MuiLineChart-markLabel': {\n fontFamily: theme.typography.body2.fontFamily,\n },\n }}\n width={width}\n xAxis={[{ data: xData, scaleType: xAxisScaleType || (showBars ? 'band' : 'point') }]}\n yAxis={[\n {\n tickInterval: getTickInterval(),\n min: isGraphClippingXAxis ? -22 : rangeMin,\n max: rangeMax || 100,\n colorMap:\n showArea && series.length < 2\n ? {\n type: 'continuous',\n min: rangeMin,\n max: rangeMax,\n color: [\n theme.palette.background.paper,\n colors[0] ?? theme.palette.primary.main,\n ],\n }\n : undefined,\n valueFormatter: (value: number) =>\n valueFormatterString ? formatCurrency(value, valueFormatterString) : String(value),\n width: 62,\n },\n ]}\n >\n {/** Provides the average line - positioned first to be behind other elements **/}\n {showAverage && (\n <ChartsReferenceLine\n lineStyle={{\n stroke: labelBackgroundColor\n ? theme.palette.neutral.main\n : theme.palette.neutral.dark,\n strokeDasharray: '10, 8',\n strokeWidth: 2,\n }}\n y={average}\n />\n )}\n\n {/** Area plot provides gradiant below the line **/}\n {/* Note: Must be above the LinePlot for some style rules to work */}\n <AreaPlot\n onItemClick={onItemClick}\n {...(areaColor && {\n slots: {\n area: (props) => {\n return (\n <g>\n <defs>\n <linearGradient id=\"customGradient\" x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={areaColor} />\n <stop offset=\"100%\" stopColor={areaColor} stopOpacity={0.02} />\n </linearGradient>\n </defs>\n <path {...props} fill={`url(#customGradient)`} />\n </g>\n )\n },\n },\n })}\n />\n\n {/** Line plot provides the data line **/}\n <LinePlot\n onItemClick={onItemClick}\n slots={{\n line: (props) => (\n <CustomLine\n {...props}\n lineColor={areaColor ?? props.ownerState.color ?? theme.palette.primary.main}\n />\n ),\n }}\n />\n\n {/** Mark plot provides the circles **/}\n <MarkPlot\n onItemClick={onItemClick}\n slots={\n useCustomMark\n ? {\n mark: (props) => {\n return (\n <CustomMark\n handlers={markHandlers}\n labelBackgroundColor={labelBackgroundColor}\n labelFontColor={labelFontColor}\n labelFontSize={labelFontSize}\n showLabel={showMarkLabel}\n showMark={showMark || props.dataIndex === datasets[0].length - 1}\n style={markStyles?.(props.dataIndex) ?? {}}\n valueFormatterString={valueFormatterString}\n yData={yData}\n {...props}\n />\n )\n },\n }\n : undefined\n }\n />\n\n <BarPlot\n barLabel={(item) => (Number(item.value) > 0 ? `$${item.value}` : null)}\n borderRadius={10}\n />\n\n {/** Provides the X axis line and values **/}\n <ChartsXAxis\n disableLine={!showXAxis}\n disableTicks={!showXAxisTicks}\n slotProps={\n axisColor\n ? {\n axisLine: {\n style: {\n stroke: axisColor,\n },\n },\n axisTick: {\n style: {\n stroke: axisColor,\n },\n },\n }\n : {}\n }\n sx={{ ...chartXaxisSx }}\n />\n\n {/** Provides the Y axis values **/}\n <ChartsYAxis\n disableLine={!showYAxis}\n disableTicks={!showYAxisTicks}\n slotProps={\n axisColor\n ? {\n axisLine: {\n style: {\n stroke: axisColor,\n },\n },\n axisTick: {\n style: {\n stroke: axisColor,\n },\n },\n }\n : {}\n }\n sx={{ ...chartYaxisSx }}\n />\n\n {/* Add vertical crosshair on hover */}\n {showAxisHighlight && <ChartsAxisHighlight x=\"line\" />}\n\n {showTooltip && (\n <ChartsTooltipContainer trigger=\"axis\">\n <CustomTooltip\n customLabels={customTooltipLabels}\n isCurrency={isCurrency}\n labels={labels}\n series={series}\n valueFormatterString={valueFormatterString}\n />\n </ChartsTooltipContainer>\n )}\n </ResponsiveChartContainer>\n\n {showLegend && (\n <CustomLegend\n average={showAverage ? average : undefined}\n customLegendBoxSx={customLegendBoxSx}\n customLegendVariant={customLegendVariant}\n labels={labels}\n series={series}\n style={{\n position: 'absolute',\n top: 16,\n left: 16,\n ...customLegendSx,\n }}\n title={title}\n valueFormatterString={valueFormatterString}\n />\n )}\n </Box>\n )\n}\n"],"names":["MARKER_SHAPE_PATHS","DEFAULT_SHAPES","getMarkerShape","seriesIndex","CustomLegendLabel","label","customLegendVariant","variant","jsx","Text","jsxs","Fragment","formatCurrency","CustomLegend","average","customLegendBoxSx","labels","series","style","title","valueFormatterString","commonCopy","useGlobalCopyStore","Stack","s","index","Box","CustomLegend$1","observer","CustomLine","props","CustomMark","theme","useTheme","showLabel","styles","markLabelStyles","xNumber","yNumber","handleMarkClick","handleMouseEnter","handleMouseLeave","isSmallScreenUp","useMediaQuery","formattedValue","fontSize","rectWidth","rectHeight","rectX","rectY","event","CustomTooltip","customLabels","isCurrency","tooltipData","useAxesTooltip","firstAxisData","axisValue","dataIndex","headerText","labelItem","amount","sIndex","LineChart","areaColor","axisColor","baseline","chartFor","chartXaxisSx","chartYaxisSx","colors","curveType","customLegendSx","customTooltipLabels","datasets","height","isGraphClippingXAxis","labelBackgroundColor","labelFontColor","labelFontSize","margin","markHandlers","markStyles","minRange","maxRange","onItemClick","peerAverage","showArea","showAverage","showAxisHighlight","showBars","showLegend","showMark","showMarkLabel","showTooltip","showXAxis","showXAxisTicks","showYAxis","showYAxisTicks","useCustomMark","width","xAxisScaleType","xData","item","yData","value","total","yMin","yMax","data","chartMargin","rangeMin","rangeMax","valueRange","paddingRatio","padding","getTickInterval","generateEqualIntervals","ResponsiveChartContainer","ChartsReferenceLine","AreaPlot","LinePlot","MarkPlot","BarPlot","ChartsXAxis","ChartsYAxis","ChartsAxisHighlight","ChartsTooltipContainer"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import I from "@mui/material/ListItemText";
|
|
|
7
7
|
import L from "@mui/material/Stack";
|
|
8
8
|
import { ChevronRight as _ } from "@mxenabled/mx-icons";
|
|
9
9
|
import { Text as a } from "@mxenabled/mxui";
|
|
10
|
-
import { u as g } from "./hooks-
|
|
10
|
+
import { u as g } from "./hooks-DWOrMnfZ.mjs";
|
|
11
11
|
import { D as j } from "./Dialog-Bvd2n8hz.mjs";
|
|
12
12
|
const q = v(
|
|
13
13
|
({
|
|
@@ -67,4 +67,4 @@ const q = v(
|
|
|
67
67
|
export {
|
|
68
68
|
q as L
|
|
69
69
|
};
|
|
70
|
-
//# sourceMappingURL=ListItemAction-
|
|
70
|
+
//# sourceMappingURL=ListItemAction-GDU5z4BN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemAction-
|
|
1
|
+
{"version":3,"file":"ListItemAction-GDU5z4BN.mjs","sources":["../src/common/components/ListItemAction.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { Dialog, useGlobalCopyStore } from '../'\n\ninterface ListItemActionProps {\n children?: React.ReactNode\n isDisabled?: boolean\n isSaveDisabled?: boolean\n label: string\n onCancel?: () => void\n onSave: () => void\n primaryText: string\n secondaryText: string\n zeroStateText?: string\n}\n\nexport const ListItemAction = observer(\n ({\n children,\n isDisabled = false,\n isSaveDisabled = false,\n label,\n onCancel,\n onSave,\n primaryText,\n secondaryText,\n zeroStateText,\n }: ListItemActionProps) => {\n const { common: copy } = useGlobalCopyStore()\n\n const [isOpen, setIsOpen] = React.useState(false)\n\n const handleCancel = () => {\n setIsOpen(false)\n onCancel?.()\n }\n\n const handleSave = () => {\n setIsOpen(false)\n onSave()\n }\n\n return (\n <ListItem>\n <ListItemButton onClick={() => setIsOpen(!isDisabled)}>\n <ListItemText\n primary={\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"space-between\">\n <Text variant=\"body1\">{primaryText}</Text>\n <Text\n bold={true}\n color={zeroStateText ? 'primary.main' : 'text.primary'}\n sx={{ mr: 4 }}\n variant=\"body1\"\n >\n {zeroStateText || secondaryText}\n </Text>\n </Stack>\n }\n slotProps={{ primary: { variant: 'body1' } }}\n />\n {!isDisabled && !zeroStateText && <ChevronRight />}\n </ListItemButton>\n <Dialog\n copy={{ title: label, close_aria: copy.close_aria }}\n disablePrimaryButton={isSaveDisabled}\n isOpen={isOpen}\n onClose={handleCancel}\n onPrimaryAction={handleSave}\n primaryText={copy.save_button}\n >\n {children}\n </Dialog>\n </ListItem>\n )\n },\n)\n"],"names":["ListItemAction","observer","children","isDisabled","isSaveDisabled","label","onCancel","onSave","primaryText","secondaryText","zeroStateText","copy","useGlobalCopyStore","isOpen","setIsOpen","React","handleCancel","handleSave","ListItem","jsxs","ListItemButton","jsx","ListItemText","Stack","Text","ChevronRight","Dialog"],"mappings":";;;;;;;;;;;AA0BO,MAAMA,IAAiBC;AAAA,EAC5B,CAAC;AAAA,IACC,UAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,gBAAAC,IAAiB;AAAA,IACjB,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,EAAA,MACyB;AACzB,UAAM,EAAE,QAAQC,EAAA,IAASC,EAAA,GAEnB,CAACC,GAAQC,CAAS,IAAIC,EAAM,SAAS,EAAK,GAE1CC,IAAe,MAAM;AACzB,MAAAF,EAAU,EAAK,GACfR,IAAA;AAAA,IACF,GAEMW,IAAa,MAAM;AACvB,MAAAH,EAAU,EAAK,GACfP,EAAA;AAAA,IACF;AAEA,6BACGW,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAC,EAACC,KAAe,SAAS,MAAMN,EAAU,CAACX,CAAU,GAClD,UAAA;AAAA,QAAA,gBAAAkB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,2BACGC,GAAA,EAAM,YAAW,UAAS,WAAU,OAAM,gBAAe,iBACxD,UAAA;AAAA,cAAA,gBAAAF,EAACG,GAAA,EAAK,SAAQ,SAAS,UAAAhB,GAAY;AAAA,cACnC,gBAAAa;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,MAAM;AAAA,kBACN,OAAOd,IAAgB,iBAAiB;AAAA,kBACxC,IAAI,EAAE,IAAI,EAAA;AAAA,kBACV,SAAQ;AAAA,kBAEP,UAAAA,KAAiBD;AAAA,gBAAA;AAAA,cAAA;AAAA,YACpB,GACF;AAAA,YAEF,WAAW,EAAE,SAAS,EAAE,SAAS,UAAQ;AAAA,UAAE;AAAA,QAAA;AAAA,QAE5C,CAACN,KAAc,CAACO,uBAAkBe,GAAA,CAAA,CAAa;AAAA,MAAA,GAClD;AAAA,MACA,gBAAAJ;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,MAAM,EAAE,OAAOrB,GAAO,YAAYM,EAAK,WAAA;AAAA,UACvC,sBAAsBP;AAAA,UACtB,QAAAS;AAAA,UACA,SAASG;AAAA,UACT,iBAAiBC;AAAA,UACjB,aAAaN,EAAK;AAAA,UAEjB,UAAAT;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GACF;AAAA,EAEJ;AACF;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as s } from "react/jsx-runtime";
|
|
2
2
|
import o from "@mui/material/ListItem";
|
|
3
3
|
import l from "@mui/material/ListItemButton";
|
|
4
|
-
import { f } from "./hooks-
|
|
4
|
+
import { f } from "./hooks-DWOrMnfZ.mjs";
|
|
5
5
|
const g = ({
|
|
6
6
|
children: t,
|
|
7
7
|
clickEventName: e,
|
|
@@ -41,4 +41,4 @@ const g = ({
|
|
|
41
41
|
export {
|
|
42
42
|
g as L
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=ListItemWrapper-
|
|
44
|
+
//# sourceMappingURL=ListItemWrapper-D6b-6m4t.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemWrapper-
|
|
1
|
+
{"version":3,"file":"ListItemWrapper-D6b-6m4t.mjs","sources":["../src/common/components/ListItemWrapper.tsx"],"sourcesContent":["import React, { ElementType } from 'react'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport { SxProps } from '@mui/material/styles'\n\nimport { useEvent } from '../context'\n\ninterface ListItemWrapperProps {\n clickEventName?: string\n component?: ElementType\n onClick?: () => void\n sx?: SxProps\n}\n\nexport const ListItemWrapper: React.FC<React.PropsWithChildren<ListItemWrapperProps>> = ({\n children,\n clickEventName,\n component,\n onClick,\n sx = {},\n}) => {\n const { onEvent } = useEvent()\n\n if (onClick) {\n return (\n <ListItem\n className=\"list-wrapper\"\n {...(component && { component })}\n sx={{ bgcolor: 'background.paper', ...sx }}\n >\n <ListItemButton\n onClick={() => {\n if (clickEventName) {\n onEvent(clickEventName)\n }\n onClick()\n }}\n >\n {children}\n </ListItemButton>\n </ListItem>\n )\n } else {\n return (\n <ListItem\n className=\"list-wrapper\"\n {...(component && { component })}\n disableGutters={false}\n disablePadding={false}\n sx={{ bgcolor: 'background.paper', ...sx }}\n >\n {children}\n </ListItem>\n )\n }\n}\n"],"names":["ListItemWrapper","children","clickEventName","component","onClick","sx","onEvent","useEvent","jsx","ListItem","ListItemButton"],"mappings":";;;;AAeO,MAAMA,IAA2E,CAAC;AAAA,EACvF,UAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,IAAAC,IAAK,CAAA;AACP,MAAM;AACJ,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAA;AAEpB,SAAIH,IAEA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACT,GAAIN,KAAa,EAAE,WAAAA,EAAA;AAAA,MACpB,IAAI,EAAE,SAAS,oBAAoB,GAAGE,EAAA;AAAA,MAEtC,UAAA,gBAAAG;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AACb,YAAIR,KACFI,EAAQJ,CAAc,GAExBE,EAAA;AAAA,UACF;AAAA,UAEC,UAAAH;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA,IAKF,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACT,GAAIN,KAAa,EAAE,WAAAA,EAAA;AAAA,MACpB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,IAAI,EAAE,SAAS,oBAAoB,GAAGE,EAAA;AAAA,MAErC,UAAAJ;AAAA,IAAA;AAAA,EAAA;AAIT;"}
|
|
@@ -11,19 +11,19 @@ import _e from "@mui/material/ListItemAvatar";
|
|
|
11
11
|
import Fe from "@mui/material/ListItemButton";
|
|
12
12
|
import pe from "@mui/material/ListItemText";
|
|
13
13
|
import { b as ze, f as oe } from "./NumberFormatting--XMeeBfr.mjs";
|
|
14
|
-
import { R as O, F as _, g as he, a as
|
|
14
|
+
import { R as O, F as _, g as he, a as D, c as Ye, d as Be } from "./RecurringTransactionsUtil-CHWmqvW5.mjs";
|
|
15
15
|
import { subDays as ye } from "date-fns/subDays";
|
|
16
16
|
import { startOfToday as U } from "date-fns/startOfToday";
|
|
17
17
|
import { endOfMonth as We } from "date-fns/endOfMonth";
|
|
18
18
|
import fe from "@mui/material/Button";
|
|
19
19
|
import { CheckCircle as Ke, Cancel as qe, Icon as je, ChevronRight as He, Delete as Qe, Add as $e, ReceiptLong as Xe } from "@mxenabled/mx-icons";
|
|
20
|
-
import { T as Ze } from "./TransactionDetails-
|
|
21
|
-
import { a as Je } from "./AccountDetailsDrawer-
|
|
22
|
-
import { u as Ve } from "./AccountDetailsHeader-
|
|
20
|
+
import { T as Ze } from "./TransactionDetails-CDZNsKv7.mjs";
|
|
21
|
+
import { a as Je } from "./AccountDetailsDrawer-Dae8eUXt.mjs";
|
|
22
|
+
import { u as Ve } from "./AccountDetailsHeader-D_UjMD99.mjs";
|
|
23
23
|
import { C as ee } from "./Category-DEKZGLYe.mjs";
|
|
24
24
|
import { T as ge } from "./TransactionUtils-BphBJBbU.mjs";
|
|
25
|
-
import { u as Ce, T as et, S as tt, a as nt } from "./EmbeddedCard-
|
|
26
|
-
import { u as x, h as Y, g as re, f as K, a as at, c as ot,
|
|
25
|
+
import { u as Ce, T as et, S as tt, a as nt } from "./EmbeddedCard-BwfkCsUN.mjs";
|
|
26
|
+
import { u as x, h as Y, g as re, f as K, a as at, c as ot, D as rt } from "./hooks-DWOrMnfZ.mjs";
|
|
27
27
|
import { S as it } from "./SearchBox-Cpgu_gdO.mjs";
|
|
28
28
|
import { D as z } from "./Drawer-DsnW2o0v.mjs";
|
|
29
29
|
import { D as ie } from "./Dialog-Bvd2n8hz.mjs";
|
|
@@ -34,13 +34,13 @@ import { AdapterDateFns as lt } from "@mui/x-date-pickers/AdapterDateFnsV3";
|
|
|
34
34
|
import { DatePicker as dt } from "@mui/x-date-pickers";
|
|
35
35
|
import { LocalizationProvider as ut } from "@mui/x-date-pickers/LocalizationProvider";
|
|
36
36
|
import { S as q, D as te } from "./Select-CSpkK5cR.mjs";
|
|
37
|
-
import { A as
|
|
37
|
+
import { A as R } from "./Analytics-D-jdcL72.mjs";
|
|
38
38
|
import { fromUnixTime as be } from "date-fns/fromUnixTime";
|
|
39
39
|
import { getUnixTime as mt } from "date-fns/getUnixTime";
|
|
40
40
|
import _t from "@mui/material/IconButton";
|
|
41
41
|
import pt from "@mui/material/Menu";
|
|
42
42
|
import ht from "@mui/material/MenuItem";
|
|
43
|
-
import { L as yt } from "./ListItemWrapper-
|
|
43
|
+
import { L as yt } from "./ListItemWrapper-D6b-6m4t.mjs";
|
|
44
44
|
import { f as Se, D as xe } from "./DateFormats-HudZ3Bjs.mjs";
|
|
45
45
|
import ft from "@mui/material/Card";
|
|
46
46
|
import gt from "@mui/material/CardActionArea";
|
|
@@ -251,7 +251,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
251
251
|
second_recurrence_day: C
|
|
252
252
|
}), s(!1);
|
|
253
253
|
}, S = () => {
|
|
254
|
-
s(!0), a(
|
|
254
|
+
s(!0), a(R.RECURRING_TRANSACTIONS_DETAILS_CLICK_PAYMENT_SCHEDULE);
|
|
255
255
|
};
|
|
256
256
|
return /* @__PURE__ */ l(W, { children: [
|
|
257
257
|
/* @__PURE__ */ e(
|
|
@@ -286,7 +286,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
286
286
|
}
|
|
287
287
|
)
|
|
288
288
|
] });
|
|
289
|
-
}),
|
|
289
|
+
}), Dt = (n, t) => {
|
|
290
290
|
const i = n.map((o) => ({
|
|
291
291
|
key: o.guid,
|
|
292
292
|
name: o.payee || o.description || o.feed_description,
|
|
@@ -295,7 +295,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
295
295
|
merchantGuid: o.merchant_guid || "",
|
|
296
296
|
categoryGuid: o.top_level_category_guid || "",
|
|
297
297
|
category: o.category || "",
|
|
298
|
-
status:
|
|
298
|
+
status: D.Paid,
|
|
299
299
|
transactionGuid: o.guid
|
|
300
300
|
})), a = t.map((o) => ({
|
|
301
301
|
key: `missed-${o.expectedDate.getTime()}`,
|
|
@@ -305,10 +305,10 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
305
305
|
merchantGuid: o.merchantGuid,
|
|
306
306
|
categoryGuid: o.categoryGuid,
|
|
307
307
|
category: "",
|
|
308
|
-
status:
|
|
308
|
+
status: D.Missed
|
|
309
309
|
}));
|
|
310
310
|
return [...i, ...a].sort((o, s) => s.date - o.date);
|
|
311
|
-
},
|
|
311
|
+
}, Rt = ({
|
|
312
312
|
isIncome: n = !1,
|
|
313
313
|
onMarkAsUnpaidClick: t,
|
|
314
314
|
onMarkAsPaidClick: i,
|
|
@@ -318,25 +318,25 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
318
318
|
}) => {
|
|
319
319
|
const { recurring: r } = x(), { onEvent: d } = K(), { recurrences: h } = Y(), [f, C] = u.useState(null), [m, b] = u.useState(null), S = u.useMemo(
|
|
320
320
|
() => h.filter(
|
|
321
|
-
(c) => c.repeatingTransactionGuid === o.guid && c.status ===
|
|
321
|
+
(c) => c.repeatingTransactionGuid === o.guid && c.status === D.Missed
|
|
322
322
|
),
|
|
323
323
|
[h, o.guid]
|
|
324
324
|
), v = u.useMemo(
|
|
325
|
-
() =>
|
|
325
|
+
() => Dt(s, S),
|
|
326
326
|
[s, S]
|
|
327
327
|
), I = (c) => {
|
|
328
328
|
c.transactionGuid && a(c.transactionGuid);
|
|
329
329
|
}, L = (c, E) => {
|
|
330
|
-
c.stopPropagation(), C(c.currentTarget), b(E), d(
|
|
330
|
+
c.stopPropagation(), C(c.currentTarget), b(E), d(R.RECURRING_TRANSACTIONS_LIST_CLICK_MORE_MENU);
|
|
331
331
|
}, k = () => {
|
|
332
332
|
C(null), b(null);
|
|
333
333
|
}, B = () => {
|
|
334
|
-
m && (m.status ===
|
|
334
|
+
m && (m.status === D.Missed ? i() : m.transactionGuid && t(m.transactionGuid), k());
|
|
335
335
|
};
|
|
336
336
|
return /* @__PURE__ */ l(p, { direction: "column", sx: { minHeight: "30dvh" }, children: [
|
|
337
337
|
/* @__PURE__ */ e(y, { bold: !0, id: "past-activity", sx: { ml: 24, mt: 16, mb: 8 }, variant: "body1", children: r.past_activity }),
|
|
338
338
|
/* @__PURE__ */ e(ne, { "aria-labelledby": "past-activity", sx: { flex: 1, overflow: "auto" }, children: v.map((c, E) => {
|
|
339
|
-
const T = c.status ===
|
|
339
|
+
const T = c.status === D.Paid, N = c.status === D.Missed, g = E === v.length - 1;
|
|
340
340
|
return /* @__PURE__ */ l(u.Fragment, { children: [
|
|
341
341
|
/* @__PURE__ */ l(
|
|
342
342
|
yt,
|
|
@@ -409,7 +409,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
409
409
|
onClose: k,
|
|
410
410
|
open: !!f,
|
|
411
411
|
transformOrigin: { horizontal: "right", vertical: "top" },
|
|
412
|
-
children: /* @__PURE__ */ e(ht, { onClick: B, sx: { p: 12 }, children: /* @__PURE__ */ e(y, { variant: "body1", children: m?.status ===
|
|
412
|
+
children: /* @__PURE__ */ e(ht, { onClick: B, sx: { p: 12 }, children: /* @__PURE__ */ e(y, { variant: "body1", children: m?.status === D.Missed ? r.mark_as_paid_cta : r.mark_as_unpaid_cta }) })
|
|
413
413
|
}
|
|
414
414
|
)
|
|
415
415
|
] });
|
|
@@ -418,7 +418,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
418
418
|
onMarkAsPaidClick: t,
|
|
419
419
|
status: i
|
|
420
420
|
}) => {
|
|
421
|
-
const a = Ct(), { recurring: o } = x(), s = i ===
|
|
421
|
+
const a = Ct(), { recurring: o } = x(), s = i === D.Paid;
|
|
422
422
|
return /* @__PURE__ */ e(ft, { variant: "elevation", children: /* @__PURE__ */ e(gt, { onClick: t, children: /* @__PURE__ */ l(
|
|
423
423
|
p,
|
|
424
424
|
{
|
|
@@ -449,7 +449,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
449
449
|
) }) });
|
|
450
450
|
}, Tt = M(
|
|
451
451
|
({ onDeleted: n, recurringTransaction: t, selectedRecurrence: i }) => {
|
|
452
|
-
const { recurring: a } = x(), { selectedAccountGuids: o } = at(), { onEvent: s } = K(), { deleteRepeatingTransaction: r, markRecurrenceAsUnpaid: d, recurrences: h } = Y(), { detailedTransactions: f, setFilter: C, transactions: m } = re(), { setSelectedAccount: b, setSelectedMember: S } = Ve(), { members: v } = ot(), { amount: I, description: L, merchant_guid: k } = t, [B, c] = u.useState(!1), [E, T] = u.useState(!1), [N, g] = u.useState(!1), [w, X] = u.useState(!1), [
|
|
452
|
+
const { recurring: a } = x(), { selectedAccountGuids: o } = at(), { onEvent: s } = K(), { deleteRepeatingTransaction: r, markRecurrenceAsUnpaid: d, recurrences: h } = Y(), { detailedTransactions: f, setFilter: C, transactions: m } = re(), { setSelectedAccount: b, setSelectedMember: S } = Ve(), { members: v } = ot(), { amount: I, description: L, merchant_guid: k } = t, [B, c] = u.useState(!1), [E, T] = u.useState(!1), [N, g] = u.useState(!1), [w, X] = u.useState(!1), [De, Z] = u.useState(""), [Re, se] = u.useState(!1), [J, ce] = u.useState("");
|
|
453
453
|
u.useEffect(() => {
|
|
454
454
|
C({
|
|
455
455
|
accounts: o,
|
|
@@ -472,15 +472,15 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
472
472
|
}, Ee = async () => {
|
|
473
473
|
await r(t.guid), n();
|
|
474
474
|
}, Oe = () => {
|
|
475
|
-
T(!0), s(
|
|
475
|
+
T(!0), s(R.RECURRING_TRANSACTIONS_DETAILS_CLICK_DELETE);
|
|
476
476
|
}, le = () => {
|
|
477
|
-
g(!0), s(
|
|
477
|
+
g(!0), s(R.RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_PAID);
|
|
478
478
|
}, Ne = () => {
|
|
479
479
|
g(!1), se(!0);
|
|
480
480
|
}, de = (A) => {
|
|
481
|
-
Z(A), X(!0), s(
|
|
481
|
+
Z(A), X(!0), s(R.RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_UNPAID);
|
|
482
482
|
}, Ge = async () => {
|
|
483
|
-
const A = m.find((V) => V.guid ===
|
|
483
|
+
const A = m.find((V) => V.guid === De);
|
|
484
484
|
A && await d(A), X(!1), Z("");
|
|
485
485
|
};
|
|
486
486
|
return /* @__PURE__ */ l(p, { bgcolor: "background.default", direction: "column", height: "100%", children: [
|
|
@@ -503,7 +503,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
503
503
|
Mt,
|
|
504
504
|
{
|
|
505
505
|
expectedDate: i?.occurredOnDate || i?.expectedDate || Te,
|
|
506
|
-
onMarkAsPaidClick: i?.status ===
|
|
506
|
+
onMarkAsPaidClick: i?.status === D.Paid && i.transaction?.guid ? () => de(i.transaction.guid) : le,
|
|
507
507
|
status: i?.status
|
|
508
508
|
}
|
|
509
509
|
)
|
|
@@ -548,7 +548,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
548
548
|
}
|
|
549
549
|
),
|
|
550
550
|
/* @__PURE__ */ e(
|
|
551
|
-
|
|
551
|
+
Rt,
|
|
552
552
|
{
|
|
553
553
|
isIncome: P,
|
|
554
554
|
onMarkAsPaidClick: le,
|
|
@@ -602,7 +602,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
602
602
|
/* @__PURE__ */ e(
|
|
603
603
|
At,
|
|
604
604
|
{
|
|
605
|
-
isOpen:
|
|
605
|
+
isOpen: Re,
|
|
606
606
|
onClose: () => se(!1),
|
|
607
607
|
recurringTransaction: t
|
|
608
608
|
}
|
|
@@ -829,7 +829,7 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
829
829
|
label: r,
|
|
830
830
|
onAddRecurringTransaction: () => {
|
|
831
831
|
i(
|
|
832
|
-
a ?
|
|
832
|
+
a ? R.RECURRING_TRANSACTIONS_CLICK_ADD_INCOME : R.RECURRING_ACTIVITY_CLICK_ADD_EXPENSE
|
|
833
833
|
);
|
|
834
834
|
}
|
|
835
835
|
}
|
|
@@ -838,11 +838,11 @@ const Q = (n) => n.top_level_category_guid !== ee.INCOME && n.transaction_type =
|
|
|
838
838
|
}
|
|
839
839
|
), Ln = M(({ forOverview: n = !1 }) => {
|
|
840
840
|
const { recurring: t } = x(), { detailedRepeatingTransactions: i } = Y(), { onEvent: a } = K(), o = (d) => {
|
|
841
|
-
a(
|
|
841
|
+
a(R.RECURRING_TRANSACTIONS_CLICK_INCOME, {
|
|
842
842
|
repeating_transaction_guid: d.guid
|
|
843
843
|
});
|
|
844
844
|
}, s = () => {
|
|
845
|
-
a(
|
|
845
|
+
a(R.RECURRING_TRANSACTIONS_CLICK_ADD_INCOME);
|
|
846
846
|
}, r = i.filter(
|
|
847
847
|
(d) => d.repeating_transaction_type === O.Income && (d.transactions.length > 0 || d.recurrence_type === _.EveryYear)
|
|
848
848
|
);
|
|
@@ -903,4 +903,4 @@ export {
|
|
|
903
903
|
Tt as d,
|
|
904
904
|
Ae as i
|
|
905
905
|
};
|
|
906
|
-
//# sourceMappingURL=ManageIncome-
|
|
906
|
+
//# sourceMappingURL=ManageIncome-BJWVPAly.mjs.map
|