@mx-cartographer/experiences 9.1.0 → 9.1.1
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 +5 -0
- package/dist/{AccountDetailsDrawer-CZPeLsCq.mjs → AccountDetailsDrawer-C1hhmlmI.mjs} +2 -2
- package/dist/{AccountDetailsDrawer-CZPeLsCq.mjs.map → AccountDetailsDrawer-C1hhmlmI.mjs.map} +1 -1
- package/dist/AccountDetailsHeader-BliEZhz7.mjs +230 -0
- package/dist/AccountDetailsHeader-BliEZhz7.mjs.map +1 -0
- package/dist/AccountUtils-Cbh8r9cP.mjs +29 -0
- package/dist/AccountUtils-Cbh8r9cP.mjs.map +1 -0
- package/dist/{ManageIncome-Dcsnnz86.mjs → ManageIncome-Be9WHv-s.mjs} +3 -3
- package/dist/{ManageIncome-Dcsnnz86.mjs.map → ManageIncome-Be9WHv-s.mjs.map} +1 -1
- package/dist/{NetWorthUtils-DfSH3z70.mjs → NetWorthUtils-Dj7CgAg2.mjs} +2 -2
- package/dist/{NetWorthUtils-DfSH3z70.mjs.map → NetWorthUtils-Dj7CgAg2.mjs.map} +1 -1
- package/dist/{RecurringSettings-D8hBbXV_.mjs → RecurringSettings-kRqAViNn.mjs} +2 -2
- package/dist/{RecurringSettings-D8hBbXV_.mjs.map → RecurringSettings-kRqAViNn.mjs.map} +1 -1
- package/dist/{UserStore-C1fdL3Iu.mjs → UserStore-BjnNCO5a.mjs} +266 -199
- package/dist/UserStore-BjnNCO5a.mjs.map +1 -0
- package/dist/accounts/index.es.js +4 -4
- package/dist/budgets/index.es.js +1 -1
- package/dist/cashflow/context/hooks.d.ts +7 -6
- package/dist/cashflow/index.es.js +435 -463
- package/dist/cashflow/index.es.js.map +1 -1
- package/dist/common/index.es.js +1 -1
- package/dist/core/index.es.js +1 -1
- package/dist/core/stores/CashflowStore.d.ts +8 -7
- package/dist/core/stores/RecurringTransactionsStore.d.ts +24 -0
- package/dist/core/utils/AccountUtils.d.ts +8 -0
- package/dist/debts/index.es.js +1 -1
- package/dist/finstrong/index.es.js +3 -3
- package/dist/networth/index.es.js +1 -1
- package/dist/recurringtransactions/index.es.js +4 -4
- package/package.json +1 -1
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs +0 -231
- package/dist/AccountDetailsHeader-BvbCUQSS.mjs.map +0 -1
- package/dist/AccountUtils-B8ZzWI-d.mjs +0 -28
- package/dist/AccountUtils-B8ZzWI-d.mjs.map +0 -1
- package/dist/UserStore-C1fdL3Iu.mjs.map +0 -1
|
@@ -30,7 +30,7 @@ import { C as x } from "../CurrencyText-CCbE6MmF.mjs";
|
|
|
30
30
|
import { Stack as fe } from "@mui/material";
|
|
31
31
|
import xe from "@mui/material/Collapse";
|
|
32
32
|
import K from "@mui/material/ListItemIcon";
|
|
33
|
-
import { g as U } from "../NetWorthUtils-
|
|
33
|
+
import { g as U } from "../NetWorthUtils-Dj7CgAg2.mjs";
|
|
34
34
|
import { D as V } from "../Drawer-DsnW2o0v.mjs";
|
|
35
35
|
import { W as ge } from "../WidgetContainer-DJnp6t6c.mjs";
|
|
36
36
|
import { E as ye } from "../EmptyState-CJUDc3kD.mjs";
|
|
@@ -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-
|
|
12
|
-
import { M as Jn } from "../RecurringSettings-
|
|
11
|
+
import { R as _e } from "../RecurringSettings-kRqAViNn.mjs";
|
|
12
|
+
import { M as Jn } from "../RecurringSettings-kRqAViNn.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";
|
|
@@ -52,8 +52,8 @@ 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-
|
|
56
|
-
import { c as er, M as tr, S as nr } from "../ManageIncome-
|
|
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";
|
|
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";
|
package/package.json
CHANGED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
import { jsx as l, jsxs as p } from "react/jsx-runtime";
|
|
2
|
-
import { observer as v } from "mobx-react-lite";
|
|
3
|
-
import d from "@mui/material/Stack";
|
|
4
|
-
import { Text as b, Icon as y, H3 as w, InstitutionLogo as G, H2 as M } from "@mxenabled/mxui";
|
|
5
|
-
import { f as _, i as C, a as H, b as U } from "./NumberFormatting--XMeeBfr.mjs";
|
|
6
|
-
import h from "react";
|
|
7
|
-
import { G as Y, c as A, l as j, e as k, i as V, u as B } from "./hooks-97sNJ_lf.mjs";
|
|
8
|
-
import { c as u, b as z, f as W, h as $ } from "./Account-DR7Plrqy.mjs";
|
|
9
|
-
import { a as q, u as K, i as J, b as Q, c as X } from "./AccountUtils-B8ZzWI-d.mjs";
|
|
10
|
-
import { F as o } from "./Connect-BH0Pt6zc.mjs";
|
|
11
|
-
import { j as g } from "./DateUtil-CzBmbjmA.mjs";
|
|
12
|
-
import { b as s } from "./Localization-DnoVyBNK.mjs";
|
|
13
|
-
import { f as T, D } from "./DateFormats-HudZ3Bjs.mjs";
|
|
14
|
-
import Z from "@mui/material/Card";
|
|
15
|
-
import ee from "@mui/material/CardContent";
|
|
16
|
-
import te from "@mui/material/CardHeader";
|
|
17
|
-
import { L as ae } from "./Loader-CxeBwuPG.mjs";
|
|
18
|
-
import { I as ne, P as ie, S as re } from "./TabContentContainer-B0eYJP5p.mjs";
|
|
19
|
-
import { u as le } from "./useAccountDisplayName-BsiXA0qf.mjs";
|
|
20
|
-
const S = () => {
|
|
21
|
-
if (!h.useContext(Y))
|
|
22
|
-
throw new Error("useCategoryUiStore() must be used within the GlobalDataContext");
|
|
23
|
-
return A().uiStore;
|
|
24
|
-
}, Oe = (a, e) => {
|
|
25
|
-
const r = [
|
|
26
|
-
{
|
|
27
|
-
event: "account_details_click_account_name",
|
|
28
|
-
label: e.account_name,
|
|
29
|
-
name: "user_name",
|
|
30
|
-
placeholder: s(e.enter_value, e.account_name),
|
|
31
|
-
type: o.Input,
|
|
32
|
-
validation: (t) => t ? "" : s(e.field_is_required, e.account_name),
|
|
33
|
-
valueFormatter: (t) => t
|
|
34
|
-
}
|
|
35
|
-
];
|
|
36
|
-
if (q(a)) {
|
|
37
|
-
r.unshift({
|
|
38
|
-
label: e.account_balance,
|
|
39
|
-
name: "balance",
|
|
40
|
-
placeholder: s(e.enter_value, e.account_balance),
|
|
41
|
-
type: o.Currency,
|
|
42
|
-
valueFormatter: (n) => _(n, "0,0.00")
|
|
43
|
-
});
|
|
44
|
-
const t = Object.keys(u).filter((n) => Number(n)).map((n) => ({
|
|
45
|
-
label: e.account_types[n],
|
|
46
|
-
value: Number(n),
|
|
47
|
-
icon: /* @__PURE__ */ l(y, { name: z[n] })
|
|
48
|
-
}));
|
|
49
|
-
r.push({
|
|
50
|
-
label: e.account_type,
|
|
51
|
-
name: "account_type",
|
|
52
|
-
options: t,
|
|
53
|
-
placeholder: s(e.select_value, e.account_type),
|
|
54
|
-
type: o.Select,
|
|
55
|
-
valueFormatter: (n) => t.find((i) => i.value === n)?.label
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
if (a.account_type === u.PROPERTY) {
|
|
59
|
-
const t = Object.keys(W).filter((n) => Number(n)).map((n) => ({
|
|
60
|
-
label: e.property_types[n],
|
|
61
|
-
value: Number(n),
|
|
62
|
-
icon: /* @__PURE__ */ l(y, { name: $[n] })
|
|
63
|
-
}));
|
|
64
|
-
r.push({
|
|
65
|
-
label: e.property_type,
|
|
66
|
-
name: "property_type",
|
|
67
|
-
options: t,
|
|
68
|
-
placeholder: s(e.select_value, e.property_type),
|
|
69
|
-
type: o.Select,
|
|
70
|
-
valueFormatter: (n) => t.find((i) => i.value === n)?.label
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
if (K(a)) {
|
|
74
|
-
let t = e.interest_rate, n = "interest_rate";
|
|
75
|
-
a.is_manual || (typeof a.apr == "number" && (t = e.apr, n = "apr"), typeof a.apy == "number" && (t = e.apy, n = "apy")), r.push({
|
|
76
|
-
event: "account_details_click_interest_rate",
|
|
77
|
-
label: t,
|
|
78
|
-
name: n,
|
|
79
|
-
placeholder: s(e.enter_value, t),
|
|
80
|
-
type: o.Input,
|
|
81
|
-
validation: (i) => C(i) ? "" : e.error_amount_is_invalid,
|
|
82
|
-
valueFormatter: (i) => C(i) ? H(i / 100) : i
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
return J(a) && (r.push({
|
|
86
|
-
label: e.minimum_payment,
|
|
87
|
-
name: "minimum_payment",
|
|
88
|
-
placeholder: s(e.enter_value, e.minimum_payment),
|
|
89
|
-
type: o.Currency,
|
|
90
|
-
valueFormatter: (t) => _(t, "0,0.00")
|
|
91
|
-
}), a.payment_due_at ? r.push({
|
|
92
|
-
label: e.next_payment,
|
|
93
|
-
name: "payment_due_at",
|
|
94
|
-
type: o.Date,
|
|
95
|
-
valueFormatter: (t) => {
|
|
96
|
-
const n = typeof t == "number" ? g(t) : t;
|
|
97
|
-
return T(n, D.MED_MONTH_SHORT_DAY_FULL_YEAR);
|
|
98
|
-
}
|
|
99
|
-
}) : r.push({
|
|
100
|
-
label: e.day_payment_due,
|
|
101
|
-
name: "day_payment_is_due",
|
|
102
|
-
placeholder: s(e.enter_value, e.day_payment_due),
|
|
103
|
-
type: o.Date,
|
|
104
|
-
valueFormatter: (t) => s(
|
|
105
|
-
e.day_of_every_month,
|
|
106
|
-
U(t <= 31 ? t : new Date(t).getDate())
|
|
107
|
-
)
|
|
108
|
-
})), Q(a) && r.push({
|
|
109
|
-
label: e.credit_limit,
|
|
110
|
-
name: "credit_limit",
|
|
111
|
-
placeholder: s(e.enter_value, e.credit_limit),
|
|
112
|
-
type: o.Currency,
|
|
113
|
-
valueFormatter: (t) => _(t, "0,0.00")
|
|
114
|
-
}), X(a) && r.push({
|
|
115
|
-
label: e.original_balance,
|
|
116
|
-
minAmount: 1,
|
|
117
|
-
name: "original_balance",
|
|
118
|
-
placeholder: s(e.enter_value, e.original_balance),
|
|
119
|
-
type: o.Currency,
|
|
120
|
-
valueFormatter: (t) => _(t, "0,0.00")
|
|
121
|
-
}), r;
|
|
122
|
-
}, I = (a, e, r) => {
|
|
123
|
-
let t = "", n = null, i = null, m = null, c = !1;
|
|
124
|
-
switch (a.account_type) {
|
|
125
|
-
// checking or savings
|
|
126
|
-
case 1:
|
|
127
|
-
case 2: {
|
|
128
|
-
a.available_balance && r ? (t = e.available_balance, n = a.available_balance, i = a.available_balance ? e.current_balance : null, m = _(a.balance, "0,0.00"), c = !0) : (t = e.current_balance, n = a.balance);
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
// credit cards, loans, investments, etc
|
|
132
|
-
default:
|
|
133
|
-
if (t = e.current_balance, n = a.balance, a.minimum_payment && a.payment_due_at) {
|
|
134
|
-
const f = g(a.payment_due_at);
|
|
135
|
-
i = /* @__PURE__ */ l(b, { component: "strong", variant: "caption", children: s(
|
|
136
|
-
e.payment_due_on,
|
|
137
|
-
_(a.minimum_payment, "0,0.00"),
|
|
138
|
-
T(f, D.FULL_MONTH_DAY)
|
|
139
|
-
) });
|
|
140
|
-
} else a.credit_limit && (i = e.available_credit, m = _(a.credit_limit - (a?.balance ?? 0), "0,0.00"));
|
|
141
|
-
}
|
|
142
|
-
return {
|
|
143
|
-
firstSubtitle: t,
|
|
144
|
-
firstValue: n,
|
|
145
|
-
secondSubtitle: i,
|
|
146
|
-
secondValue: m,
|
|
147
|
-
hasAvailableBalance: c
|
|
148
|
-
};
|
|
149
|
-
}, Pe = (a, e, r) => a.reduce((n, i) => {
|
|
150
|
-
const c = I(i, e, r).firstValue || 0;
|
|
151
|
-
return n + c;
|
|
152
|
-
}, 0), se = (a, e) => {
|
|
153
|
-
const r = [u.LOAN, u.MORTGAGE, u.PROPERTY].includes(
|
|
154
|
-
a
|
|
155
|
-
), t = [
|
|
156
|
-
u.CREDIT_CARD,
|
|
157
|
-
u.LINE_OF_CREDIT,
|
|
158
|
-
u.PREPAID,
|
|
159
|
-
u.CHECKING_LINE_OF_CREDIT
|
|
160
|
-
].includes(a);
|
|
161
|
-
return r ? { title: e.label_payments, description: e.chart_title_payments } : t ? { title: e.label_payments_spend, description: e.chart_title_payments_spend } : { title: e.label_income_spend, description: e.chart_title_income_spend };
|
|
162
|
-
}, oe = ({
|
|
163
|
-
sx: a,
|
|
164
|
-
ChartComponent: e,
|
|
165
|
-
header: r
|
|
166
|
-
}) => {
|
|
167
|
-
const { loadMonthlyCategoryTotals: t } = j(), { isInitialized: n } = k(), { selectedAccount: i } = S(), [m, c] = h.useState(!1);
|
|
168
|
-
return h.useEffect(() => {
|
|
169
|
-
n && t([i]).finally(() => {
|
|
170
|
-
c(!0);
|
|
171
|
-
});
|
|
172
|
-
}, [n, i]), !n || !m ? /* @__PURE__ */ l(ae, {}) : /* @__PURE__ */ p(
|
|
173
|
-
Z,
|
|
174
|
-
{
|
|
175
|
-
sx: {
|
|
176
|
-
"& .MuiCardContent-root:last-child": {
|
|
177
|
-
pb: 0
|
|
178
|
-
},
|
|
179
|
-
...a
|
|
180
|
-
},
|
|
181
|
-
children: [
|
|
182
|
-
/* @__PURE__ */ l(te, { sx: { pb: 0 }, title: /* @__PURE__ */ l(w, { sx: { pb: 4 }, children: r }) }),
|
|
183
|
-
/* @__PURE__ */ l(ee, { sx: { p: 0 }, children: e ? /* @__PURE__ */ l(e, {}) : null })
|
|
184
|
-
]
|
|
185
|
-
}
|
|
186
|
-
);
|
|
187
|
-
}, ue = v(oe), me = ({
|
|
188
|
-
customDetailsChart: a,
|
|
189
|
-
ChartComponent: e
|
|
190
|
-
}) => {
|
|
191
|
-
const { institutions: r } = A(), { selectedAccount: t } = S(), { config: n } = V(), { accounts: i } = B(), { firstSubtitle: m, firstValue: c, hasAvailableBalance: f, secondSubtitle: N, secondValue: E } = I(t, i, n.display_available_balance_in_accounts), F = r.find(
|
|
192
|
-
(L) => L.guid === t?.institution_guid
|
|
193
|
-
), O = [
|
|
194
|
-
...ne,
|
|
195
|
-
...ie,
|
|
196
|
-
...re
|
|
197
|
-
].includes(t.account_type), P = le(t), { title: x, description: R } = se(t.account_type, i);
|
|
198
|
-
return /* @__PURE__ */ p(d, { bgcolor: "background.default", p: 24, children: [
|
|
199
|
-
/* @__PURE__ */ p(d, { gap: 12, children: [
|
|
200
|
-
/* @__PURE__ */ l(
|
|
201
|
-
G,
|
|
202
|
-
{
|
|
203
|
-
alt: i.institution_logo_alt,
|
|
204
|
-
institutionGuid: t.institution_guid || "",
|
|
205
|
-
size: 64
|
|
206
|
-
}
|
|
207
|
-
),
|
|
208
|
-
/* @__PURE__ */ l(b, { variant: "body2", children: F?.name })
|
|
209
|
-
] }),
|
|
210
|
-
/* @__PURE__ */ p(d, { gap: 8, mb: 24, mt: 4, children: [
|
|
211
|
-
/* @__PURE__ */ l(M, { children: P }),
|
|
212
|
-
/* @__PURE__ */ p(d, { direction: "row", justifyContent: "space-between", children: [
|
|
213
|
-
/* @__PURE__ */ l(b, { bold: f, variant: "body1", children: m }),
|
|
214
|
-
/* @__PURE__ */ l(b, { bold: !0, variant: "body1", children: _(c, "0,0.00") })
|
|
215
|
-
] }),
|
|
216
|
-
/* @__PURE__ */ p(d, { direction: "row", justifyContent: "space-between", children: [
|
|
217
|
-
/* @__PURE__ */ l(b, { variant: "body2", children: N }),
|
|
218
|
-
/* @__PURE__ */ l(b, { variant: "body2", children: E })
|
|
219
|
-
] })
|
|
220
|
-
] }),
|
|
221
|
-
O && /* @__PURE__ */ l(d, { "aria-label": R, role: "img", children: a || /* @__PURE__ */ l(ue, { ChartComponent: e, header: x }) })
|
|
222
|
-
] });
|
|
223
|
-
}, xe = v(me);
|
|
224
|
-
export {
|
|
225
|
-
xe as A,
|
|
226
|
-
I as a,
|
|
227
|
-
Oe as b,
|
|
228
|
-
Pe as g,
|
|
229
|
-
S as u
|
|
230
|
-
};
|
|
231
|
-
//# sourceMappingURL=AccountDetailsHeader-BvbCUQSS.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AccountDetailsHeader-BvbCUQSS.mjs","sources":["../src/accounts/hooks/useUiStore.ts","../src/accounts/utils/AccountFields.tsx","../src/accounts/utils/AccountDetails.ts","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsChart.tsx","../src/accounts/components/detailsdrawer/Accounts/AccountDetailsHeader.tsx"],"sourcesContent":["import React from 'react'\nimport { GlobalDataContext, useAccountStore } from '../../common'\n\nexport const useAccountUiStore = () => {\n const context = React.useContext(GlobalDataContext)\n\n if (!context) {\n throw new Error('useCategoryUiStore() must be used within the GlobalDataContext')\n }\n\n return useAccountStore().uiStore\n}\n","import { Icon, Text } from '@mxenabled/mxui'\n\nimport { DATE_FORMATS_INTL, formatDate } from '../../core/constants'\nimport { AccountIcon, AccountType, PropertyType } from '../../core'\nimport type { Account, AccountsCopy } from '../../core'\n\nimport { PropertyIcon } from '../../core/types/Account'\nimport {\n isAccountLiability,\n isManual,\n usesCreditLimitField,\n usesInterestRateField,\n usesOriginalBalanceField,\n} from '../../core/utils/AccountUtils'\nimport { FieldType } from '../constants/Accounts'\nimport { fromUnixUTC } from '../../core/utils/DateUtil'\nimport {\n formatCurrency,\n formatOrdinal,\n formatPercentage,\n isValidNumber,\n} from '../../core/utils/NumberFormatting'\nimport { buildDynamicCopy } from '../../core/utils/Localization'\n\ntype SelectOption = {\n label: string\n value: number\n icon: React.ReactElement\n}\n\nexport type AccountField = {\n event?: string\n label: string\n minAmount?: number\n options?: SelectOption[]\n name: keyof Account\n placeholder?: string\n type?: string\n validation?: (val: any) => string\n valueFormatter: (val: any) => any\n}\n\nexport const getAccountDetailFields = (account: Account, copy: AccountsCopy) => {\n const fields: AccountField[] = [\n {\n event: 'account_details_click_account_name',\n label: copy.account_name,\n name: 'user_name',\n placeholder: buildDynamicCopy(copy.enter_value, copy.account_name) as string,\n type: FieldType.Input,\n validation: (val: string) =>\n val ? '' : (buildDynamicCopy(copy.field_is_required, copy.account_name) as string),\n valueFormatter: (val) => val,\n },\n ]\n\n if (isManual(account)) {\n fields.unshift({\n label: copy.account_balance,\n name: 'balance',\n placeholder: buildDynamicCopy(copy.enter_value, copy.account_balance) as string,\n type: FieldType.Currency,\n valueFormatter: (val) => formatCurrency(val, '0,0.00'),\n })\n\n const accountTypeOptions = Object.keys(AccountType)\n .filter((key) => Number(key))\n .map((value) => ({\n label: copy.account_types[value],\n value: Number(value),\n icon: <Icon name={AccountIcon[value]} />,\n }))\n\n fields.push({\n label: copy.account_type,\n name: 'account_type',\n options: accountTypeOptions,\n placeholder: buildDynamicCopy(copy.select_value, copy.account_type) as string,\n type: FieldType.Select,\n valueFormatter: (val) => accountTypeOptions.find((option) => option.value === val)?.label,\n })\n }\n\n if (account.account_type === AccountType.PROPERTY) {\n const propertyTypeOptions = Object.keys(PropertyType)\n .filter((key) => Number(key))\n .map((value) => ({\n label: copy.property_types[value],\n value: Number(value),\n icon: <Icon name={PropertyIcon[value]} />,\n }))\n\n fields.push({\n label: copy.property_type,\n name: 'property_type',\n options: propertyTypeOptions,\n placeholder: buildDynamicCopy(copy.select_value, copy.property_type) as string,\n type: FieldType.Select,\n valueFormatter: (val) => propertyTypeOptions.find((option) => option.value === val)?.label,\n })\n }\n\n if (usesInterestRateField(account)) {\n let label = copy.interest_rate\n let fieldName = 'interest_rate' as keyof Account\n\n if (!account.is_manual) {\n if (typeof account.apr === 'number') {\n label = copy.apr\n fieldName = 'apr'\n }\n if (typeof account.apy === 'number') {\n label = copy.apy\n fieldName = 'apy'\n }\n }\n\n fields.push({\n event: 'account_details_click_interest_rate',\n label,\n name: fieldName,\n placeholder: buildDynamicCopy(copy.enter_value, label) as string,\n type: FieldType.Input,\n validation: (val) => (!isValidNumber(val) ? copy.error_amount_is_invalid : ''),\n valueFormatter: (val) => (isValidNumber(val) ? formatPercentage(val / 100) : val),\n })\n }\n\n if (isAccountLiability(account)) {\n fields.push({\n label: copy.minimum_payment,\n name: 'minimum_payment',\n placeholder: buildDynamicCopy(copy.enter_value, copy.minimum_payment) as string,\n type: FieldType.Currency,\n valueFormatter: (val) => formatCurrency(val, '0,0.00'),\n })\n\n if (account.payment_due_at) {\n fields.push({\n label: copy.next_payment,\n name: 'payment_due_at',\n type: FieldType.Date,\n valueFormatter: (val) => {\n // accounts for Unix and DateTime values\n const dateTimeStamp = typeof val === 'number' ? fromUnixUTC(val) : val\n return formatDate(dateTimeStamp, DATE_FORMATS_INTL.MED_MONTH_SHORT_DAY_FULL_YEAR)\n },\n })\n } else {\n fields.push({\n label: copy.day_payment_due,\n name: 'day_payment_is_due',\n placeholder: buildDynamicCopy(copy.enter_value, copy.day_payment_due) as string,\n type: FieldType.Date,\n valueFormatter: (val) =>\n buildDynamicCopy(\n copy.day_of_every_month,\n formatOrdinal(val <= 31 ? val : new Date(val).getDate()),\n ) as string,\n })\n }\n }\n\n if (usesCreditLimitField(account)) {\n fields.push({\n label: copy.credit_limit,\n name: 'credit_limit',\n placeholder: buildDynamicCopy(copy.enter_value, copy.credit_limit) as string,\n type: FieldType.Currency,\n valueFormatter: (val) => formatCurrency(val, '0,0.00'),\n })\n }\n\n if (usesOriginalBalanceField(account)) {\n fields.push({\n label: copy.original_balance,\n minAmount: 1,\n name: 'original_balance',\n placeholder: buildDynamicCopy(copy.enter_value, copy.original_balance) as string,\n type: FieldType.Currency,\n valueFormatter: (val) => formatCurrency(val, '0,0.00'),\n })\n }\n\n return fields\n}\n\nexport const getAccountBalanceDetails = (\n account: Account,\n copy: AccountsCopy,\n showAvailableBalance: boolean,\n) => {\n let firstSubtitle = ''\n let firstValue = null\n let secondSubtitle = null\n let secondValue = null\n let hasAvailableBalance = false\n\n switch (account.account_type) {\n // checking or savings\n case 1:\n case 2: {\n // some savings accounts only have balance, and not available_balance\n if (account.available_balance && showAvailableBalance) {\n firstSubtitle = copy.available_balance\n firstValue = account.available_balance\n secondSubtitle = account.available_balance ? copy.current_balance : null\n secondValue = formatCurrency(account.balance, '0,0.00')\n hasAvailableBalance = true\n } else {\n firstSubtitle = copy.current_balance\n firstValue = account.balance\n }\n break\n }\n // credit cards, loans, investments, etc\n default: {\n firstSubtitle = copy.current_balance\n firstValue = account.balance\n if (account.minimum_payment && account.payment_due_at) {\n const dateTimeStamp = fromUnixUTC(account.payment_due_at)\n secondSubtitle = (\n <Text component=\"strong\" variant=\"caption\">\n {\n buildDynamicCopy(\n copy.payment_due_on,\n formatCurrency(account.minimum_payment, '0,0.00'),\n formatDate(dateTimeStamp, DATE_FORMATS_INTL.FULL_MONTH_DAY),\n ) as string\n }\n </Text>\n )\n } else if (account.credit_limit) {\n secondSubtitle = copy.available_credit\n secondValue = formatCurrency(account.credit_limit - (account?.balance ?? 0), '0,0.00')\n }\n }\n }\n\n return {\n firstSubtitle,\n firstValue,\n secondSubtitle,\n secondValue,\n hasAvailableBalance,\n }\n}\n\nexport const getClosedAccountBalanceTotal = (\n accounts: Account[],\n copy: AccountsCopy,\n showAvailableBalance: boolean,\n) => {\n const total = accounts.reduce((sum, account) => {\n const details = getAccountBalanceDetails(account, copy, showAvailableBalance)\n const firstValue = details.firstValue || 0\n return sum + firstValue\n }, 0)\n\n return total\n}\n","import { AccountType, type AccountsCopy } from '../../core'\n\nexport const getChartLabels = (\n accountType: AccountType,\n copy: AccountsCopy,\n): { title: string; description: string } => {\n const hasPayments = [AccountType.LOAN, AccountType.MORTGAGE, AccountType.PROPERTY].includes(\n accountType,\n )\n\n const hasPaymentsAndSpend = [\n AccountType.CREDIT_CARD,\n AccountType.LINE_OF_CREDIT,\n AccountType.PREPAID,\n AccountType.CHECKING_LINE_OF_CREDIT,\n ].includes(accountType)\n\n if (hasPayments) return { title: copy.label_payments, description: copy.chart_title_payments }\n if (hasPaymentsAndSpend)\n return { title: copy.label_payments_spend, description: copy.chart_title_payments_spend }\n return { title: copy.label_income_spend, description: copy.chart_title_income_spend }\n}\n","import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Card from '@mui/material/Card'\nimport CardContent from '@mui/material/CardContent'\nimport CardHeader from '@mui/material/CardHeader'\n\nimport { H3 } from '@mxenabled/mxui'\n\nimport { Loader, useCategoryStore, useGlobalStore } from '../../../../common'\nimport { MiniWidgetProps } from '../../../../core'\n\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\n\ninterface AccountDetailsChartProps extends MiniWidgetProps {\n ChartComponent?: React.ComponentType\n header?: string\n}\n\nconst AccountDetailsChart: React.FC<AccountDetailsChartProps> = ({\n sx,\n ChartComponent,\n header,\n}) => {\n const { loadMonthlyCategoryTotals } = useCategoryStore()\n const { isInitialized } = useGlobalStore()\n const { selectedAccount } = useAccountUiStore()\n\n const [isWidgetInitialized, setIsWidgetInitialized] = React.useState(false)\n\n React.useEffect(() => {\n if (isInitialized) {\n loadMonthlyCategoryTotals([selectedAccount]).finally(() => {\n setIsWidgetInitialized(true)\n })\n }\n }, [isInitialized, selectedAccount])\n\n if (!isInitialized || !isWidgetInitialized) {\n return <Loader />\n }\n\n return (\n <Card\n sx={{\n '& .MuiCardContent-root:last-child': {\n pb: 0,\n },\n ...sx,\n }}\n >\n <CardHeader sx={{ pb: 0 }} title={<H3 sx={{ pb: 4 }}>{header}</H3>} />\n\n <CardContent sx={{ p: 0 }}>{ChartComponent ? <ChartComponent /> : null}</CardContent>\n </Card>\n )\n}\n\nexport default observer(AccountDetailsChart)\n","import { observer } from 'mobx-react-lite'\n\nimport Stack from '@mui/material/Stack'\n\nimport { H2, InstitutionLogo, Text } from '@mxenabled/mxui'\n\nimport {\n useAccountStore,\n INCOME_ACCOUNT_TYPES,\n PAYMENT_ACCOUNT_TYPES,\n SPENDING_ACCOUNT_TYPES,\n useAccountDisplayName,\n useGlobalCopyStore,\n useAppConfig,\n} from '../../../../common'\nimport { useAccountUiStore } from '../../../hooks/useUiStore'\nimport { getAccountBalanceDetails } from '../../../utils/AccountFields'\nimport { getChartLabels } from '../../../utils/AccountDetails'\n\nimport AccountDetailsChart from './AccountDetailsChart'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\ninterface AccountDetailsHeaderProps {\n ChartComponent?: React.ComponentType\n customDetailsChart?: React.ReactElement\n}\n\nconst AccountDetailsHeader = ({\n customDetailsChart,\n ChartComponent,\n}: AccountDetailsHeaderProps) => {\n const { institutions } = useAccountStore()\n const { selectedAccount: account } = useAccountUiStore()\n const { config } = useAppConfig()\n const { accounts: accountsCopy } = useGlobalCopyStore()\n const { firstSubtitle, firstValue, hasAvailableBalance, secondSubtitle, secondValue } =\n getAccountBalanceDetails(account, accountsCopy, config.display_available_balance_in_accounts)\n\n const institution = institutions.find(\n (institution) => institution.guid === account?.institution_guid,\n )\n\n const showChart = [\n ...INCOME_ACCOUNT_TYPES,\n ...PAYMENT_ACCOUNT_TYPES,\n ...SPENDING_ACCOUNT_TYPES,\n ].includes(account.account_type)\n\n const displayName = useAccountDisplayName(account)\n\n const { title, description } = getChartLabels(account.account_type, accountsCopy)\n\n return (\n <Stack bgcolor=\"background.default\" p={24}>\n <Stack gap={12}>\n <InstitutionLogo\n alt={accountsCopy.institution_logo_alt}\n institutionGuid={account.institution_guid || ''}\n size={64}\n />\n <Text variant=\"body2\">{institution?.name}</Text>\n </Stack>\n <Stack gap={8} mb={24} mt={4}>\n <H2>{displayName}</H2>\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text bold={hasAvailableBalance} variant=\"body1\">\n {firstSubtitle}\n </Text>\n <Text bold={true} variant=\"body1\">\n {formatCurrency(firstValue, '0,0.00')}\n </Text>\n </Stack>\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Text variant=\"body2\">{secondSubtitle}</Text>\n <Text variant=\"body2\">{secondValue}</Text>\n </Stack>\n </Stack>\n {showChart && (\n <Stack aria-label={description} role=\"img\">\n {customDetailsChart ? (\n customDetailsChart\n ) : (\n <AccountDetailsChart ChartComponent={ChartComponent} header={title} />\n )}\n </Stack>\n )}\n </Stack>\n )\n}\n\nexport default observer(AccountDetailsHeader)\n"],"names":["useAccountUiStore","React","GlobalDataContext","useAccountStore","getAccountDetailFields","account","copy","fields","buildDynamicCopy","FieldType","val","isManual","formatCurrency","accountTypeOptions","AccountType","key","value","jsx","Icon","AccountIcon","option","propertyTypeOptions","PropertyType","PropertyIcon","usesInterestRateField","label","fieldName","isValidNumber","formatPercentage","isAccountLiability","dateTimeStamp","fromUnixUTC","formatDate","DATE_FORMATS_INTL","formatOrdinal","usesCreditLimitField","usesOriginalBalanceField","getAccountBalanceDetails","showAvailableBalance","firstSubtitle","firstValue","secondSubtitle","secondValue","hasAvailableBalance","Text","getClosedAccountBalanceTotal","accounts","sum","getChartLabels","accountType","hasPayments","hasPaymentsAndSpend","AccountDetailsChart","sx","ChartComponent","header","loadMonthlyCategoryTotals","useCategoryStore","isInitialized","useGlobalStore","selectedAccount","isWidgetInitialized","setIsWidgetInitialized","Loader","jsxs","Card","CardHeader","H3","CardContent","AccountDetailsChart$1","observer","AccountDetailsHeader","customDetailsChart","institutions","config","useAppConfig","accountsCopy","useGlobalCopyStore","institution","showChart","INCOME_ACCOUNT_TYPES","PAYMENT_ACCOUNT_TYPES","SPENDING_ACCOUNT_TYPES","displayName","useAccountDisplayName","title","description","Stack","InstitutionLogo","H2","AccountDetailsHeader$1"],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { c as e, C as u, E as p, P as y, M as d } from "./Account-DR7Plrqy.mjs";
|
|
2
|
-
const m = (t) => t && (t.account_type === e.CREDIT_CARD || t.account_type === e.LOAN || t.account_type === e.MORTGAGE || t.account_type === e.LINE_OF_CREDIT || t.account_type === e.CHECKING_LINE_OF_CREDIT), I = (t) => t.is_manual || !t.guid, f = (t) => t.account_type === e.LINE_OF_CREDIT || t.account_type === e.CREDIT_CARD || t.account_type === e.CHECKING_LINE_OF_CREDIT, R = (t) => t.account_type === e.SAVINGS || t.account_type === e.CHECKING || t.account_type === e.LINE_OF_CREDIT || t.account_type === e.CREDIT_CARD || t.account_type === e.LOAN || t.account_type === e.MORTGAGE, A = (t) => t.account_type === e.LOAN || t.account_type === e.MORTGAGE, N = (t, n, s, _, a) => t.filter((i) => !(i.member_is_managed_by_user && _)).filter((i) => !(!i.member_is_managed_by_user && a)).sort(C).map((i) => {
|
|
3
|
-
const r = n.find((c) => c.guid === i.institution_guid), o = s.find((c) => c.guid === i.member_guid);
|
|
4
|
-
return E(i, r, o);
|
|
5
|
-
}), E = (t, n, s) => {
|
|
6
|
-
let _ = u.Connected;
|
|
7
|
-
s && (p.includes(s.connection_status) ? _ = u.Error : y.includes(s.connection_status) ? _ = u.Processing : d.includes(s.connection_status) && (_ = u.RequiresMfa));
|
|
8
|
-
const a = [
|
|
9
|
-
t.user_name || t.feed_name || "",
|
|
10
|
-
t.account_number ? `*${t.account_number}` : ""
|
|
11
|
-
].join(" ").trim();
|
|
12
|
-
return {
|
|
13
|
-
...t,
|
|
14
|
-
connectionStatus: _,
|
|
15
|
-
displayName: a,
|
|
16
|
-
institution: n,
|
|
17
|
-
member: s
|
|
18
|
-
};
|
|
19
|
-
}, C = (t, n) => t.account_type > n.account_type ? 1 : t.account_type < n.account_type ? -1 : (t.name || "") > (n.name || "") ? 1 : (t.name || "") < (n.name || "") ? -1 : 0;
|
|
20
|
-
export {
|
|
21
|
-
I as a,
|
|
22
|
-
f as b,
|
|
23
|
-
A as c,
|
|
24
|
-
N as d,
|
|
25
|
-
m as i,
|
|
26
|
-
R as u
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=AccountUtils-B8ZzWI-d.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AccountUtils-B8ZzWI-d.mjs","sources":["../src/core/utils/AccountUtils.ts"],"sourcesContent":["import {\n type Account,\n type DetailedAccount,\n type Institution,\n type Member,\n AccountType,\n ConnectionStatus,\n ErrorStatuses,\n MfaStatuses,\n ProcessingStatuses,\n} from '../'\n\nexport const isAccountLiability = (account: Account) =>\n account &&\n (account.account_type === AccountType.CREDIT_CARD ||\n account.account_type === AccountType.LOAN ||\n account.account_type === AccountType.MORTGAGE ||\n account.account_type === AccountType.LINE_OF_CREDIT ||\n account.account_type === AccountType.CHECKING_LINE_OF_CREDIT)\n\nexport const isManual = (account: Account) => account.is_manual || !account.guid\n\nexport const usesCreditLimitField = (account: Account) =>\n account.account_type === AccountType.LINE_OF_CREDIT ||\n account.account_type === AccountType.CREDIT_CARD ||\n account.account_type === AccountType.CHECKING_LINE_OF_CREDIT\n\nexport const usesInterestRateField = (account: Account) =>\n account.account_type === AccountType.SAVINGS ||\n account.account_type === AccountType.CHECKING ||\n account.account_type === AccountType.LINE_OF_CREDIT ||\n account.account_type === AccountType.CREDIT_CARD ||\n account.account_type === AccountType.LOAN ||\n account.account_type === AccountType.MORTGAGE\n\nexport const usesOriginalBalanceField = (account: Account) =>\n account.account_type === AccountType.LOAN || account.account_type === AccountType.MORTGAGE\n\nexport const augmentAccounts = (\n accounts: Account[],\n institutions: Institution[],\n members: Member[],\n shouldExcludeExternalAccounts: boolean,\n shouldExcludeHeldAccounts: boolean,\n): DetailedAccount[] => {\n return accounts\n .filter((account) => !(account.member_is_managed_by_user && shouldExcludeExternalAccounts))\n .filter((account) => !(!account.member_is_managed_by_user && shouldExcludeHeldAccounts))\n .sort(accountSorter)\n .map((account) => {\n const institution = institutions.find((inst) => inst.guid === account.institution_guid)\n const member = members.find((member) => member.guid === account.member_guid)\n\n return buildDetailedAccount(account, institution, member)\n })\n}\n\nconst buildDetailedAccount = (account: Account, institution?: Institution, member?: Member) => {\n // TODO: Needs to be localized here\n let connectionStatus = ConnectionStatus.Connected\n if (member) {\n if (ErrorStatuses.includes(member.connection_status)) {\n connectionStatus = ConnectionStatus.Error\n } else if (ProcessingStatuses.includes(member.connection_status)) {\n connectionStatus = ConnectionStatus.Processing\n } else if (MfaStatuses.includes(member.connection_status)) {\n connectionStatus = ConnectionStatus.RequiresMfa\n }\n }\n\n const displayName = [\n account.user_name || account.feed_name || '',\n account.account_number ? `*${account.account_number}` : '',\n ]\n .join(' ')\n .trim()\n\n return {\n ...account,\n connectionStatus,\n displayName,\n institution,\n member,\n }\n}\n\nconst accountSorter = (a: Account, b: Account) => {\n // orders by account type descending (Checking -> Savings -> Credit card)\n if (a.account_type > b.account_type) return 1\n if (a.account_type < b.account_type) return -1\n // orders by name (Emergency Savings -> Health Savings -> Rainy Day Savings)\n if ((a.name || '') > (b.name || '')) return 1\n if ((a.name || '') < (b.name || '')) return -1\n return 0\n}\n"],"names":["isAccountLiability","account","AccountType","isManual","usesCreditLimitField","usesInterestRateField","usesOriginalBalanceField","augmentAccounts","accounts","institutions","members","shouldExcludeExternalAccounts","shouldExcludeHeldAccounts","accountSorter","institution","inst","member","buildDetailedAccount","connectionStatus","ConnectionStatus","ErrorStatuses","ProcessingStatuses","MfaStatuses","displayName","a","b"],"mappings":";AAYO,MAAMA,IAAqB,CAACC,MACjCA,MACCA,EAAQ,iBAAiBC,EAAY,eACpCD,EAAQ,iBAAiBC,EAAY,QACrCD,EAAQ,iBAAiBC,EAAY,YACrCD,EAAQ,iBAAiBC,EAAY,kBACrCD,EAAQ,iBAAiBC,EAAY,0BAE5BC,IAAW,CAACF,MAAqBA,EAAQ,aAAa,CAACA,EAAQ,MAE/DG,IAAuB,CAACH,MACnCA,EAAQ,iBAAiBC,EAAY,kBACrCD,EAAQ,iBAAiBC,EAAY,eACrCD,EAAQ,iBAAiBC,EAAY,yBAE1BG,IAAwB,CAACJ,MACpCA,EAAQ,iBAAiBC,EAAY,WACrCD,EAAQ,iBAAiBC,EAAY,YACrCD,EAAQ,iBAAiBC,EAAY,kBACrCD,EAAQ,iBAAiBC,EAAY,eACrCD,EAAQ,iBAAiBC,EAAY,QACrCD,EAAQ,iBAAiBC,EAAY,UAE1BI,IAA2B,CAACL,MACvCA,EAAQ,iBAAiBC,EAAY,QAAQD,EAAQ,iBAAiBC,EAAY,UAEvEK,IAAkB,CAC7BC,GACAC,GACAC,GACAC,GACAC,MAEOJ,EACJ,OAAO,CAACP,MAAY,EAAEA,EAAQ,6BAA6BU,EAA8B,EACzF,OAAO,CAACV,MAAY,EAAE,CAACA,EAAQ,6BAA6BW,EAA0B,EACtF,KAAKC,CAAa,EAClB,IAAI,CAACZ,MAAY;AAChB,QAAMa,IAAcL,EAAa,KAAK,CAACM,MAASA,EAAK,SAASd,EAAQ,gBAAgB,GAChFe,IAASN,EAAQ,KAAK,CAACM,MAAWA,EAAO,SAASf,EAAQ,WAAW;AAE3E,SAAOgB,EAAqBhB,GAASa,GAAaE,CAAM;AAC1D,CAAC,GAGCC,IAAuB,CAAChB,GAAkBa,GAA2BE,MAAoB;AAE7F,MAAIE,IAAmBC,EAAiB;AACxC,EAAIH,MACEI,EAAc,SAASJ,EAAO,iBAAiB,IACjDE,IAAmBC,EAAiB,QAC3BE,EAAmB,SAASL,EAAO,iBAAiB,IAC7DE,IAAmBC,EAAiB,aAC3BG,EAAY,SAASN,EAAO,iBAAiB,MACtDE,IAAmBC,EAAiB;AAIxC,QAAMI,IAAc;AAAA,IAClBtB,EAAQ,aAAaA,EAAQ,aAAa;AAAA,IAC1CA,EAAQ,iBAAiB,IAAIA,EAAQ,cAAc,KAAK;AAAA,EAAA,EAEvD,KAAK,GAAG,EACR,KAAA;AAEH,SAAO;AAAA,IACL,GAAGA;AAAA,IACH,kBAAAiB;AAAA,IACA,aAAAK;AAAA,IACA,aAAAT;AAAA,IACA,QAAAE;AAAA,EAAA;AAEJ,GAEMH,IAAgB,CAACW,GAAYC,MAE7BD,EAAE,eAAeC,EAAE,eAAqB,IACxCD,EAAE,eAAeC,EAAE,eAAqB,MAEvCD,EAAE,QAAQ,OAAOC,EAAE,QAAQ,MAAY,KACvCD,EAAE,QAAQ,OAAOC,EAAE,QAAQ,MAAY,KACrC;"}
|