@mx-cartographer/experiences 9.1.0 → 9.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{AccountDetailsDrawer-CZPeLsCq.mjs → AccountDetailsDrawer-Cq4kiiKD.mjs} +5 -5
  3. package/dist/{AccountDetailsDrawer-CZPeLsCq.mjs.map → AccountDetailsDrawer-Cq4kiiKD.mjs.map} +1 -1
  4. package/dist/AccountDetailsHeader-BliEZhz7.mjs +230 -0
  5. package/dist/AccountDetailsHeader-BliEZhz7.mjs.map +1 -0
  6. package/dist/AccountUtils-Cbh8r9cP.mjs +29 -0
  7. package/dist/AccountUtils-Cbh8r9cP.mjs.map +1 -0
  8. package/dist/{Analytics-WeZYytR0.mjs → Analytics-D-jdcL72.mjs} +3 -3
  9. package/dist/Analytics-D-jdcL72.mjs.map +1 -0
  10. package/dist/{EmbeddedCard-DH8vQ3qN.mjs → EmbeddedCard-DCOQnTz-.mjs} +2 -2
  11. package/dist/{EmbeddedCard-DH8vQ3qN.mjs.map → EmbeddedCard-DCOQnTz-.mjs.map} +1 -1
  12. package/dist/{ExportCsvAction-C9KWH3Az.mjs → ExportCsvAction-C-IisDcv.mjs} +2 -2
  13. package/dist/{ExportCsvAction-C9KWH3Az.mjs.map → ExportCsvAction-C-IisDcv.mjs.map} +1 -1
  14. package/dist/{Help-aERwhajy.mjs → Help-zVZdcmlk.mjs} +2 -2
  15. package/dist/{Help-aERwhajy.mjs.map → Help-zVZdcmlk.mjs.map} +1 -1
  16. package/dist/{ManageIncome-Dcsnnz86.mjs → ManageIncome-B_8i71mE.mjs} +6 -6
  17. package/dist/{ManageIncome-Dcsnnz86.mjs.map → ManageIncome-B_8i71mE.mjs.map} +1 -1
  18. package/dist/{NetWorthUtils-DfSH3z70.mjs → NetWorthUtils-Dj7CgAg2.mjs} +2 -2
  19. package/dist/{NetWorthUtils-DfSH3z70.mjs.map → NetWorthUtils-Dj7CgAg2.mjs.map} +1 -1
  20. package/dist/{RecurringSettings-D8hBbXV_.mjs → RecurringSettings-hs0YUp83.mjs} +3 -3
  21. package/dist/{RecurringSettings-D8hBbXV_.mjs.map → RecurringSettings-hs0YUp83.mjs.map} +1 -1
  22. package/dist/{TransactionDetails-roZ5xLq8.mjs → TransactionDetails-DT-MQqOB.mjs} +3 -3
  23. package/dist/{TransactionDetails-roZ5xLq8.mjs.map → TransactionDetails-DT-MQqOB.mjs.map} +1 -1
  24. package/dist/{UserStore-C1fdL3Iu.mjs → UserStore-BjnNCO5a.mjs} +266 -199
  25. package/dist/UserStore-BjnNCO5a.mjs.map +1 -0
  26. package/dist/{WidgetContainer-DJnp6t6c.mjs → WidgetContainer-CjdCY4sj.mjs} +21 -21
  27. package/dist/WidgetContainer-CjdCY4sj.mjs.map +1 -0
  28. package/dist/accounts/index.es.js +6 -6
  29. package/dist/budgets/index.es.js +5 -5
  30. package/dist/cashflow/context/hooks.d.ts +7 -6
  31. package/dist/cashflow/index.es.js +436 -464
  32. package/dist/cashflow/index.es.js.map +1 -1
  33. package/dist/common/components/daterangeselector/DateRangeSelector.d.ts +5 -0
  34. package/dist/common/index.es.js +3 -3
  35. package/dist/core/index.es.js +1 -1
  36. package/dist/core/stores/CashflowStore.d.ts +8 -7
  37. package/dist/core/stores/RecurringTransactionsStore.d.ts +24 -0
  38. package/dist/core/utils/AccountUtils.d.ts +8 -0
  39. package/dist/debts/index.es.js +3 -3
  40. package/dist/finstrong/index.es.js +5 -5
  41. package/dist/goals/index.es.js +2 -2
  42. package/dist/help/index.es.js +2 -2
  43. package/dist/insights/index.es.js +2 -2
  44. package/dist/investments/index.es.js +2 -2
  45. package/dist/networth/index.es.js +79 -77
  46. package/dist/networth/index.es.js.map +1 -1
  47. package/dist/recurringtransactions/index.es.js +6 -6
  48. package/dist/settings/index.es.js +2 -2
  49. package/dist/spending/index.es.js +4 -4
  50. package/dist/transactions/index.es.js +7 -7
  51. package/dist/trends/index.es.js +5 -5
  52. package/package.json +1 -1
  53. package/dist/AccountDetailsHeader-BvbCUQSS.mjs +0 -231
  54. package/dist/AccountDetailsHeader-BvbCUQSS.mjs.map +0 -1
  55. package/dist/AccountUtils-B8ZzWI-d.mjs +0 -28
  56. package/dist/AccountUtils-B8ZzWI-d.mjs.map +0 -1
  57. package/dist/Analytics-WeZYytR0.mjs.map +0 -1
  58. package/dist/UserStore-C1fdL3Iu.mjs.map +0 -1
  59. package/dist/WidgetContainer-DJnp6t6c.mjs.map +0 -1
@@ -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;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Analytics-WeZYytR0.mjs","sources":["../src/common/constants/Analytics.ts"],"sourcesContent":["export const ANALYTICS_EVENTS = {\n ACCOUNTS_CLICK_ACCOUNT: 'accounts_widget_click_account',\n ACCOUNTS_CLICK_CONNECT: 'accounts_widget_click_connect_accounts',\n ACCOUNTS_CLICK_FILTER: 'accounts_widget_click_filter_accounts',\n ACCOUNTS_CLICK_SYNC: 'accounts_widget_click_sync',\n ACCOUNT_DETAILS_CLICK_HIDE: 'account_details_click_hide_account',\n ACCOUNT_DETAILS_CLICK_MARK_CLOSED: 'account_details_click_mark_as_closed',\n ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE: 'account_details_click_mark_as_duplicate',\n ACCOUNT_DETAILS_CLICK_TRANSACTION: 'account_details_click_transaction',\n ACCOUNT_DETAILS_VIEW: 'account_details',\n ACCOUNT_DETAILS_VIEW_TRANSACTIONS: 'account_details_transactions',\n BUDGETS_CLICK_ADD: 'budgets_widget_click_add_budget',\n BUDGETS_CLICK_BUDGET_CATEGORY: 'budgets_widget_click_budget_category',\n BUDGETS_CLICK_EDIT_INCOME: 'budgets_widget_click_edit_income',\n BUDGETS_CLICK_FILTER: 'budgets_widget_click_filter_accounts',\n BUDGETS_VIEW: 'budgets',\n CASH_FLOW_CLICK_FILTER: 'cash_flow_widget_click_filter_accounts',\n CASH_FLOW_CLICK_SETTINGS: 'cash_flow_widget_click_settings',\n DEBTS_CLICK_CHART_AREA: 'debts_widget_click_chart_area',\n DEBTS_CLICK_FILTER: 'debts_widget_click_filter_accounts',\n DEBTS_CLICK_PAYDOWN: 'debts_widget_click_paydown',\n DEBTS_CLICK_PRIORITY: 'debts_widget_click_priority',\n DEBTS_CLICK_PRIORITIZE: 'debts_widget_click_prioritize',\n DEBTS_CLICK_SNOWBALL_CTA: 'debts_widget_click_snowball_cta',\n DEBTS_CLICK_TABLE_ROW: 'debts_widget_click_table_row',\n DEBTS_CLICK_TABLE_SORT: 'debts_widget_click_table_sort',\n DEBTS_SAVE_BALANCE_ACTION: 'debts_widget_click_balance_action',\n DEBTS_SAVE_PAYDOWN_ACTION: 'debts_widget_click_paydown_action',\n DEBTS_SAVE_PAYMENT_ACTION: 'debts_widget_click_payment_action',\n DEBTS_SAVE_RATE_ACTION: 'debts_widget_click_rate_action',\n DEBTS_VIEW: 'debts',\n DEBT_DETAILS_VIEW: 'debt_details',\n DEBT_SCHEDULE_VIEW: 'debt_schedule',\n GOALS_CLICK_ADD: 'goals_widget_click_add',\n GOALS_CLICK_FILTER: 'goals_widget_click_filter_accounts',\n GOALS_VIEW: 'goals',\n GOALS_MICRO_WIDGET_CTA: 'goals_micro_widget_click_see_details_cta',\n HELP_CLICK_CATEGORY: 'help_click_category',\n HELP_CLICK_REQUEST_SUPPORT: 'help_click_requestSupport',\n HELP_CLICK_SUPPORT_FOR_INSTITUTION: 'help_click_supportForInstitution',\n HELP_CLICK_SUPPORT_FOR_MISSING_INSTITUTION: 'help_click_supportForMissingInstitution',\n HELP_CLICK_SUPPORT_TOPIC: 'help_click_supportTopic',\n HELP_CLICK_TOPIC: 'help_click_topic',\n HELP_EXPAND_CATEGORY: 'help_expand_category',\n HELP_EXPAND_TOPIC: 'help_expand_topic',\n HELP_OPEN_SUPPORT_REQUEST: 'help_open_supportRequest',\n HELP_SUBMIT_SUPPORT_REQUEST: 'help_submit_supportRequest',\n INVESTMENTS: 'Investments',\n INVESTMENT_WIDGET_ACCOUNT_FILTER_CLICK: 'investment_widget_account_filter_click',\n INVESTMENT_WIDGET_ALLOCATION_CLICK: 'investment_widget_allocation_click',\n INVESTMENT_WIDGET_ANALYSIS_CLICK: 'investment_widget_analysis_click',\n INVESTMENT_WIDGET_DETAILS_CLICK: 'investment_widget_details_click',\n NET_WORTH_VIEW: 'net_worth',\n NETWORTH_MICRO_WIDGET_CTA: 'net_worth_micro_widget_click_see_details_cta',\n NET_WORTH_WIDGET_CLICK_ASSETS_LIABILITIES: 'net_worth_widget_click_view_assets_liabilities',\n NET_WORTH_WIDGET_CLICK_FILTER: 'net_worth_widget_click_filter_accounts',\n NET_WORTH_WIDGET_CLICK_TIMEFRAME: 'net_worth_widget_click_time_period',\n RECURRING_ACTIVITY_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_ACTIVITY_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_ACTIVITY_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_ACTIVITY_CLICK_EXPENSE: 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_ACTIVITY_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_ACTIVITY_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_ACTIVITY_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_ACTIVITY_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_ACTIVITY_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_TRANSACTIONS_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_TRANSACTIONS_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_TRANSACTIONS_CLICK_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_TRANSACTIONS_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_TRANSACTIONS_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_TRANSACTIONS_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_TRANSACTIONS_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_TRANSACTIONS_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_DELETE: 'recurring_transactions_widget_details_click_delete',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_PAYMENT_SCHEDULE:\n 'recurring_transactions_widget_details_click_payment_schedule',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_PAID:\n 'recurring_transactions_widget_list_click_mark_as_paid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_UNPAID:\n 'recurring_transactions_widget_list_click_mark_as_unpaid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MORE_MENU: 'recurring_transactions_widget_list_click_more_menu',\n RECURRING_TRANSACTIONS_MICRO_WIDGET_CTA: 'recurring_transactions_micro_widget_click_view_all_cta',\n SPENDING_CLICK_FILTER: 'spending_widget_click_filter_accounts',\n SPENDING_VIEW: 'spending',\n TRANSACTIONS_ADD_MANUAL_ACCOUNT_MODAL: 'transactions_add_manual_account_modal',\n TRANSACTIONS_CLICK_ADD: 'transactions_click_add_transaction',\n TRANSACTIONS_CLICK_DETAILS: 'transactions_click_transaction_details',\n TRANSACTIONS_CLICK_EXPORT: 'transactions_click_export_csv',\n TRANSACTIONS_CLICK_FILTER: 'transactions_click_filter_accounts',\n TRANSACTIONS_CLICK_SEARCH: 'transactions_click_search',\n TRANSACTIONS_VIEW: 'transactions',\n TRANSACTION_DETAILS_CLICK_AMOUNT: 'transaction_details_click_transaction_amount',\n TRANSACTION_DETAILS_CLICK_CATEGORY: 'transaction_details_click_category',\n TRANSACTION_DETAILS_CLICK_DATE: 'transaction_details_click_date',\n TRANSACTION_DETAILS_CLICK_DELETE_LOGO: 'transaction_details_click_delete_merchant_logo',\n TRANSACTION_DETAILS_CLICK_DESCRIPTION: 'transaction_details_click_edit_description',\n TRANSACTION_DETAILS_CLICK_FLAG: 'transaction_details_click_flag_transaction',\n TRANSACTION_DETAILS_CLICK_MEMO: 'transaction_details_click_memo',\n TRANSACTION_DETAILS_CLICK_SPLIT: 'transaction_details_click_split_transaction',\n TRANSACTION_DETAILS_CLICK_TAGS: 'transaction_details_click_tags',\n TRANSACTION_DETAILS_CLICK_UNSPLIT: 'transaction_details_click_unsplit_transaction',\n TRANSACTION_DETAILS_VIEW: 'transaction_details',\n TRANSACTIONS_TABLE_CLICK_CATEGORY: 'transactions_table_click_category',\n WIDGET_BACK_CLICK: 'widget_back_button_click',\n\n // NEW ANAYTICS EVENT FORMAT\n // widget_action_subject\n GOALS_CLICK_GET_STARTED: 'goals_click_getStarted',\n GOALS_CLICK_VIEW_DETAILS: 'goals_click_viewDetails',\n GOALS_LOAD_WIDGET: 'goals_load_widget',\n NET_WORTH_CLICK_GET_STARTED: 'netWorth_click_getStarted',\n NET_WORTH_CLICK_VIEW_DETAILS: 'netWorth_click_viewDetails',\n NET_WORTH_LOAD_WIDGET: 'netWorth_load_widget',\n RECURRING_TRANSACTIONS_CLICK_GET_STARTED: 'recurringTransactions_click_getStarted',\n RECURRING_TRANSACTIONS_CLICK_VIEW_ALL: 'recurringTransactions_click_viewAll',\n RECURRING_TRANSACTIONS_LOAD_WIDGET: 'recurringTransactions_load_widget',\n TRENDS_CLICK_ALL_CATEGORIES: 'trends_click_allCategories',\n TRENDS_CLICK_BACK: 'trends_click_back',\n TRENDS_CLICK_CHART: 'trends_click_chart',\n TRENDS_CLICK_CONNECT_ACCOUNTS: 'trends_click_connectAccounts',\n TRENDS_CLICK_EXPORT_CSV: 'trends_click_exportCSV',\n TRENDS_CLICK_FILTER: 'trends_click_filter',\n TRENDS_CLICK_GET_STARTED: 'trends_click_getStarted',\n TRENDS_CLICK_INSIGHT: 'trends_click_insight',\n TRENDS_CLICK_LEGEND: 'trends_click_legend',\n TRENDS_CLICK_LIST_ITEM: 'trends_click_listItem',\n TRENDS_CLICK_TABLE_SORT: 'trends_click_tableSort',\n TRENDS_CLICK_TIME_WINDOW: 'trends_click_timeWindow',\n TRENDS_CLICK_TOGGLE_VIEW: 'trends_click_toggleView',\n TRENDS_CLICK_VIEW_MORE: 'trends_click_viewMore',\n TRENDS_CLICK_VIEW_TRANSACTIONS: 'trends_click_viewTransactions',\n TRENDS_HOVER_AREA: 'trends_hover_chartArea',\n TRENDS_HOVER_POINT: 'trends_hover_chartPoint',\n TRENDS_HOVER_LEGEND: 'trends_hover_ChartLegend',\n TRENDS_LOAD_WIDGET: 'trends_load_widget',\n TRENDS_VIEW_TRANSACTIONS: 'trends_view_transactions',\n WIDGET_SIZE_CHANGED: 'widget_size_changed',\n}\n"],"names":["ANALYTICS_EVENTS"],"mappings":"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"}