@mx-cartographer/experiences 7.0.27-alpha-recurring-transactions-css-bug-ram7 → 7.0.27-alpha.mm0

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 (99) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/{Account-BW3-oYEs.mjs → Account-DJ7VG5hs.mjs} +1 -1
  3. package/dist/{AccountDetailsContent-UxSEMBo_.mjs → AccountDetailsContent-YtqGgQmV.mjs} +8 -8
  4. package/dist/{AccountDetailsHeader-Eb3WvBGm.mjs → AccountDetailsHeader-DJk0hheh.mjs} +5 -5
  5. package/dist/{AccountFields-CIz-r3gP.mjs → AccountFields-BJfIdeay.mjs} +2 -2
  6. package/dist/{AccountListItem-B-ZjJ4Gp.mjs → AccountListItem-CkDTN1Bi.mjs} +3 -3
  7. package/dist/{AccountStore-BaMynkQT.mjs → AccountStore-CJl0ld02.mjs} +26 -26
  8. package/dist/{Accounts-CA-nqAjT.mjs → Accounts-BYGu-bN1.mjs} +1 -1
  9. package/dist/{BeatApi-DLu87ijw.mjs → BeatApi-DhJpgCLz.mjs} +3 -3
  10. package/dist/{BeatStore-By4aGoRM.mjs → BeatStore-IBnXd4YK.mjs} +17 -17
  11. package/dist/{BudgetUtil-CeSLAcsl.mjs → BudgetUtil-BB9gMyLW.mjs} +1 -1
  12. package/dist/{CategorySelectorDrawer-BJ9jlCyt.mjs → CategorySelectorDrawer-B-W3eXHU.mjs} +1 -1
  13. package/dist/{CategoryStore-BOyzQjQp.mjs → CategoryStore-BCcpI3oJ.mjs} +4 -4
  14. package/dist/{ConnectDrawer-phFH6OHt.mjs → ConnectDrawer-COy3Xwqv.mjs} +1 -1
  15. package/dist/{ConnectionsDrawer-ihxkAi1P.mjs → ConnectionsDrawer-B36W8Qvy.mjs} +2 -2
  16. package/dist/{CurrencyInput-bEx2Mbd0.mjs → CurrencyInput-B6gF46iv.mjs} +1 -1
  17. package/dist/{DebtsStore-VkyMADzd.mjs → DebtsStore-2yxA32_7.mjs} +1 -1
  18. package/dist/{ExportCsvAction-CbdFfDV5.mjs → ExportCsvAction-C3s1m5os.mjs} +3 -3
  19. package/dist/{Fetch-CkFKy79O.mjs → Fetch-87LIQbEA.mjs} +11 -10
  20. package/dist/{FinstrongStore-mkALvztw.mjs → FinstrongStore-F2c607dj.mjs} +4 -4
  21. package/dist/{GoalStore-eSOkI6uE.mjs → GoalStore-dBJBsl-g.mjs} +6 -6
  22. package/dist/{Help-KAAMEubC.mjs → Help-CWsL8d5P.mjs} +1 -1
  23. package/dist/{LineChart-BWWmmJxV.mjs → LineChart-CBKadOFA.mjs} +1 -1
  24. package/dist/{ListItemAction-DNZZ5fSa.mjs → ListItemAction-CpYlo5Sh.mjs} +1 -1
  25. package/dist/{ManageIncome-DbsiKUoO.mjs → ManageIncome-CGoLh7xs.mjs} +4 -4
  26. package/dist/MerchantStore-DrFvsUyy.mjs +37 -0
  27. package/dist/{MicroWidgetContainer-Dxz8uBN9.mjs → MicroWidgetContainer-DQXTwO5i.mjs} +1 -1
  28. package/dist/{MiniWidgetContainer-CTyjmE1h.mjs → MiniWidgetContainer-BF2Qwhh-.mjs} +1 -1
  29. package/dist/{NetWorthStore-B6xF9eGH.mjs → NetWorthStore-CrQtq5rq.mjs} +2 -2
  30. package/dist/{NotificationSettings-BJFyyZYE.mjs → NotificationSettings-gz1XBCBs.mjs} +2 -2
  31. package/dist/{NotificationStore-DHtSGySy.mjs → NotificationStore-C6PH6MKm.mjs} +8 -4
  32. package/dist/{OriginalBalanceAction-DepsKiJz.mjs → OriginalBalanceAction-C3afa-mq.mjs} +3 -3
  33. package/dist/{RecurringSettings-Dj29piAQ.mjs → RecurringSettings-fjYVNmPp.mjs} +3 -3
  34. package/dist/{RecurringTransactionsStore-D62XJtdL.mjs → RecurringTransactionsStore-DeLXfuC4.mjs} +20 -16
  35. package/dist/{SettingsStore-B4gi6oOw.mjs → SettingsStore-0aHfHlOE.mjs} +33 -29
  36. package/dist/{TransactionApi-DbbcjI2L.mjs → TransactionApi-B3Tksf7L.mjs} +29 -29
  37. package/dist/{TransactionDetails-C-z3HGTT.mjs → TransactionDetails--DPYM8la.mjs} +5 -5
  38. package/dist/{TransactionStore-Cep_Eeql.mjs → TransactionStore-Cd25G0gH.mjs} +29 -25
  39. package/dist/{TrendsStore-WrHxzdbQ.mjs → TrendsStore-ReCVjB8o.mjs} +1 -1
  40. package/dist/{User-Dq9Qj764.mjs → User-DD7Pb2ze.mjs} +1 -1
  41. package/dist/{ViewMoreMicroCard-DFAY0tA8.mjs → ViewMoreMicroCard-C66pzgfS.mjs} +5 -2
  42. package/dist/{WidgetContainer-CdBs9WOZ.mjs → WidgetContainer-C1NlG0pd.mjs} +2 -2
  43. package/dist/accounts/api/AccountApi.d.ts +2 -2
  44. package/dist/accounts/index.es.js +12 -12
  45. package/dist/analytics/index.es.js +2 -2
  46. package/dist/budgets/api/BudgetsApi.d.ts +2 -2
  47. package/dist/budgets/index.es.js +10 -10
  48. package/dist/cashflow/api/CashflowApi.d.ts +3 -2
  49. package/dist/cashflow/index.es.js +10 -10
  50. package/dist/categories/index.es.js +2 -2
  51. package/dist/common/api/AnalyticsApi.d.ts +2 -2
  52. package/dist/common/api/AppDataApi.d.ts +2 -2
  53. package/dist/common/api/BeatApi.d.ts +2 -2
  54. package/dist/common/api/CategoryApi.d.ts +2 -3
  55. package/dist/common/api/GlobalCopyApi.d.ts +2 -1
  56. package/dist/common/api/LocalizedCopyApi.d.ts +2 -1
  57. package/dist/common/api/NotificationApi.d.ts +2 -2
  58. package/dist/common/api/ScheduledPaymentsApi.d.ts +3 -2
  59. package/dist/common/api/UserApi.d.ts +2 -2
  60. package/dist/common/context/GlobalDataProvider.d.ts +3 -2
  61. package/dist/common/context/hooks.d.ts +4 -1
  62. package/dist/common/context/index.d.ts +1 -1
  63. package/dist/common/index.es.js +316 -310
  64. package/dist/common/stores/GlobalStore.d.ts +3 -2
  65. package/dist/common/types/Handlers.d.ts +2 -0
  66. package/dist/common/types/index.d.ts +1 -0
  67. package/dist/common/utils/Fetch.d.ts +3 -1
  68. package/dist/dashboard/index.es.js +2 -2
  69. package/dist/debts/index.es.js +9 -9
  70. package/dist/{exportTransactionsToCSV-B5qAKd6C.mjs → exportTransactionsToCSV-Ch_T5Xhk.mjs} +1 -1
  71. package/dist/finstrong/api/FinstrongApi.d.ts +2 -1
  72. package/dist/finstrong/index.es.js +7 -7
  73. package/dist/goals/api/GoalApi.d.ts +3 -2
  74. package/dist/goals/index.es.js +11 -11
  75. package/dist/help/api/HelpApi.d.ts +2 -2
  76. package/dist/help/index.es.js +3 -3
  77. package/dist/hooks-CTieq90n.mjs +74 -0
  78. package/dist/insights/index.es.js +1 -1
  79. package/dist/investments/api/HoldingApi.d.ts +3 -2
  80. package/dist/investments/index.es.js +3 -3
  81. package/dist/merchants/api/MerchantApi.d.ts +2 -1
  82. package/dist/merchants/index.es.js +2 -2
  83. package/dist/microinsights/context/InsightsMicroWidgetDataProvider.d.ts +2 -1
  84. package/dist/microinsights/context/hooks.d.ts +1 -1
  85. package/dist/microinsights/index.es.js +1 -1
  86. package/dist/networth/index.es.js +7 -7
  87. package/dist/notifications/index.es.js +5 -5
  88. package/dist/recurringtransactions/api/RepeatingTransactionsApi.d.ts +2 -2
  89. package/dist/recurringtransactions/index.es.js +339 -351
  90. package/dist/settings/api/SettingsApi.d.ts +3 -2
  91. package/dist/settings/index.es.js +7 -7
  92. package/dist/spending/index.es.js +4 -4
  93. package/dist/transactions/api/TransactionApi.d.ts +3 -2
  94. package/dist/transactions/index.es.js +14 -14
  95. package/dist/trends/index.es.js +10 -10
  96. package/dist/{useCombineEvents-DaDBSR_1.mjs → useCombineEvents-BUDIR1ba.mjs} +29 -29
  97. package/package.json +1 -1
  98. package/dist/MerchantStore-DVH-QOf0.mjs +0 -37
  99. package/dist/hooks-DkUqN6JE.mjs +0 -71
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## [7.0.27] - 09-26-2025
2
2
 
3
- - **FIXED** - Recurring Transactions padding too much on both sides in mobile devices - css bug fixed
3
+ - **ADDED** - Global onError handler to GlobalStore and passed to stores that make API calls
4
4
 
5
5
  ## [7.0.26] - 09-26-2025
6
6
 
@@ -1,4 +1,4 @@
1
- import { A as C } from "./ConnectDrawer-phFH6OHt.mjs";
1
+ import { A as C } from "./ConnectDrawer-COy3Xwqv.mjs";
2
2
  const I = [
3
3
  C.ANY,
4
4
  C.CASH,
@@ -11,10 +11,10 @@ import M from "@mui/material/Divider";
11
11
  import v from "@mui/material/ListItem";
12
12
  import N from "@mui/material/ListItemButton";
13
13
  import w from "@mui/material/ListItemText";
14
- import { u as D } from "./AccountDetailsHeader-Eb3WvBGm.mjs";
15
- import { c as z, u as E, e as O, f as X } from "./hooks-DkUqN6JE.mjs";
16
- import { A as at } from "./AccountListItem-B-ZjJ4Gp.mjs";
17
- import { A as k } from "./WidgetContainer-CdBs9WOZ.mjs";
14
+ import { u as D } from "./AccountDetailsHeader-DJk0hheh.mjs";
15
+ import { c as z, u as E, e as O, f as X } from "./hooks-CTieq90n.mjs";
16
+ import { A as at } from "./AccountListItem-CkDTN1Bi.mjs";
17
+ import { A as k } from "./WidgetContainer-C1NlG0pd.mjs";
18
18
  import { a as V, f as B, D as j } from "./Dialog-CWW597AF.mjs";
19
19
  import { b as h } from "./Localization-2MODESHW.mjs";
20
20
  import { D as J } from "./Drawer-kEE73B87.mjs";
@@ -22,7 +22,7 @@ import R from "@mui/material/ListItemAvatar";
22
22
  import ct from "@mui/material/Stack";
23
23
  import st from "@mui/material/styles/useTheme";
24
24
  import { Error as q, CheckCircle as it, Language as rt } from "@mxenabled/mx-icons";
25
- import { k as m, N as Q, j as Z, F as P } from "./ConnectDrawer-phFH6OHt.mjs";
25
+ import { k as m, N as Q, j as Z, F as P } from "./ConnectDrawer-COy3Xwqv.mjs";
26
26
  import { fromUnixTime as lt } from "date-fns/fromUnixTime";
27
27
  import { isToday as dt } from "date-fns/isToday";
28
28
  import { isYesterday as ut } from "date-fns/isYesterday";
@@ -37,14 +37,14 @@ import { LocalizationProvider as ft } from "@mui/x-date-pickers-pro";
37
37
  import At from "@mui/material/MenuItem";
38
38
  import bt from "@mui/material/Select";
39
39
  import Tt from "@mui/material/TextField";
40
- import { C as St } from "./CurrencyInput-bEx2Mbd0.mjs";
41
- import { a as Dt } from "./AccountFields-CIz-r3gP.mjs";
40
+ import { C as St } from "./CurrencyInput-B6gF46iv.mjs";
41
+ import { a as Dt } from "./AccountFields-BJfIdeay.mjs";
42
42
  import Et from "@mui/material/Alert";
43
43
  import yt from "@mui/material/AlertTitle";
44
44
  import xt from "@mui/material/Link";
45
45
  import wt from "@mui/material/Paper";
46
46
  import { subDays as kt, startOfToday as It, endOfToday as Mt } from "date-fns";
47
- import { T as vt, a as Lt } from "./TransactionDetails-C-z3HGTT.mjs";
47
+ import { T as vt, a as Lt } from "./TransactionDetails--DPYM8la.mjs";
48
48
  import { T as K } from "./TabContentContainer-j01JYR_7.mjs";
49
49
  const U = ({
50
50
  children: e,
@@ -2,17 +2,17 @@ import { jsx as e, jsxs as u } from "react/jsx-runtime";
2
2
  import { observer as p } from "mobx-react-lite";
3
3
  import d from "@mui/material/Stack";
4
4
  import { H3 as w, InstitutionLogo as I, Text as m, H2 as L } from "@mxenabled/mxui";
5
- import { g as N } from "./AccountFields-CIz-r3gP.mjs";
5
+ import { g as N } from "./AccountFields-BJfIdeay.mjs";
6
6
  import h from "react";
7
- import { G as v, c as S, k as y, u as _, l as E } from "./hooks-DkUqN6JE.mjs";
7
+ import { G as v, c as S, k as y, u as _, l as E } from "./hooks-CTieq90n.mjs";
8
8
  import G from "@mui/material/Card";
9
9
  import O from "@mui/material/CardContent";
10
10
  import P from "@mui/material/CardHeader";
11
11
  import { useTheme as M } from "@mui/material/styles";
12
12
  import { g as B, a as H, b as U } from "./SpendingData-D5vsfYKo.mjs";
13
- import { L as j } from "./LineChart-BWWmmJxV.mjs";
14
- import { I as f, P as g, S as C } from "./Account-BW3-oYEs.mjs";
15
- import { A } from "./ConnectDrawer-phFH6OHt.mjs";
13
+ import { L as j } from "./LineChart-CBKadOFA.mjs";
14
+ import { I as f, P as g, S as C } from "./Account-DJ7VG5hs.mjs";
15
+ import { A } from "./ConnectDrawer-COy3Xwqv.mjs";
16
16
  import { L as z } from "./Loader-DUaFpDGv.mjs";
17
17
  import { f as Y, D as k } from "./Dialog-CWW597AF.mjs";
18
18
  import { f as R } from "./NumberFormatting-CtWHhyBX.mjs";
@@ -1,7 +1,7 @@
1
1
  import { jsx as s } from "react/jsx-runtime";
2
2
  import { Icon as p, Text as c } from "@mxenabled/mxui";
3
- import { F as m, A as b, a as v, P as h, b as F } from "./ConnectDrawer-phFH6OHt.mjs";
4
- import { i as D, u as T, a as A, b as O, c as g } from "./Accounts-CA-nqAjT.mjs";
3
+ import { F as m, A as b, a as v, P as h, b as F } from "./ConnectDrawer-COy3Xwqv.mjs";
4
+ import { i as D, u as T, a as A, b as O, c as g } from "./Accounts-BYGu-bN1.mjs";
5
5
  import { f as _, i as d, a as N, b as S } from "./NumberFormatting-CtWHhyBX.mjs";
6
6
  import { b as i } from "./Localization-2MODESHW.mjs";
7
7
  import { f, D as o } from "./Dialog-CWW597AF.mjs";
@@ -10,9 +10,9 @@ import C from "@mui/material/styles/useTheme";
10
10
  import { InstitutionLogo as B, Text as o } from "@mxenabled/mxui";
11
11
  import { Error as L } from "@mxenabled/mx-icons";
12
12
  import { I as A } from "./IconBacking-B9oC6uL2.mjs";
13
- import { g as j } from "./AccountFields-CIz-r3gP.mjs";
14
- import { d } from "./ConnectDrawer-phFH6OHt.mjs";
15
- import { u as T } from "./hooks-DkUqN6JE.mjs";
13
+ import { g as j } from "./AccountFields-BJfIdeay.mjs";
14
+ import { d } from "./ConnectDrawer-COy3Xwqv.mjs";
15
+ import { u as T } from "./hooks-CTieq90n.mjs";
16
16
  import { f as X } from "./NumberFormatting-CtWHhyBX.mjs";
17
17
  const $ = {
18
18
  gridRow: 1,
@@ -1,11 +1,11 @@
1
1
  import { makeAutoObservable as _, runInAction as a } from "mobx";
2
- import { i as g } from "./User-Dq9Qj764.mjs";
3
- import { F as f, A as i } from "./Fetch-CkFKy79O.mjs";
4
- import { A as s, d as h, E as p, g as y, h as I } from "./ConnectDrawer-phFH6OHt.mjs";
2
+ import { i as g } from "./User-DD7Pb2ze.mjs";
3
+ import { F as f, A as i } from "./Fetch-87LIQbEA.mjs";
4
+ import { A as n, d as h, E as p, g as y, h as I } from "./ConnectDrawer-COy3Xwqv.mjs";
5
5
  class l {
6
6
  fetchInstance;
7
- constructor(t, e) {
8
- this.fetchInstance = new f(t, e);
7
+ constructor(t, e, s) {
8
+ this.fetchInstance = new f(t, e, void 0, s);
9
9
  }
10
10
  createAccount = async (t) => this.fetchInstance.post(i.ACCOUNTS, t).then((e) => e.account).catch((e) => e);
11
11
  deleteAccount = async (t) => this.fetchInstance.delete(`${i.ACCOUNTS}/${t}`).catch((e) => e);
@@ -36,7 +36,7 @@ class N {
36
36
  members = [];
37
37
  uiStore;
38
38
  constructor(t) {
39
- this.globalStore = t, this.uiStore = new b(), this.api = new l(t.endpoint, t.sessionToken), _(this);
39
+ this.globalStore = t, this.uiStore = new b(), this.api = new l(t.endpoint, t.sessionToken, t.onError), _(this);
40
40
  }
41
41
  loadAccountData = async ({
42
42
  accounts: t,
@@ -46,36 +46,36 @@ class N {
46
46
  };
47
47
  get cashAccounts() {
48
48
  return this.accounts.filter(
49
- (t) => t.account_type === s.CASH || t.account_type === s.CHECKING || t.account_type === s.PREPAID || t.account_type === s.SAVINGS || t.account_type === s.CHECKING_LINE_OF_CREDIT
49
+ (t) => t.account_type === n.CASH || t.account_type === n.CHECKING || t.account_type === n.PREPAID || t.account_type === n.SAVINGS || t.account_type === n.CHECKING_LINE_OF_CREDIT
50
50
  );
51
51
  }
52
52
  get cashBalance() {
53
53
  return this.cashAccounts.reduce((t, e) => t + (e?.balance || 0), 0);
54
54
  }
55
55
  get checkingAccounts() {
56
- return this.accounts.filter((t) => t.account_type === s.CHECKING);
56
+ return this.accounts.filter((t) => t.account_type === n.CHECKING);
57
57
  }
58
58
  get debtAccounts() {
59
59
  return this.accounts.filter(
60
- (t) => t.account_type === s.CREDIT_CARD || t.account_type === s.LOAN || t.account_type === s.MORTGAGE || t.account_type === s.LINE_OF_CREDIT || t.account_type === s.CHECKING_LINE_OF_CREDIT
60
+ (t) => t.account_type === n.CREDIT_CARD || t.account_type === n.LOAN || t.account_type === n.MORTGAGE || t.account_type === n.LINE_OF_CREDIT || t.account_type === n.CHECKING_LINE_OF_CREDIT
61
61
  );
62
62
  }
63
63
  get finstrongAccounts() {
64
64
  const t = /* @__PURE__ */ new Set([
65
- s.CHECKING,
66
- s.SAVINGS,
67
- s.CREDIT_CARD,
68
- s.INVESTMENT
65
+ n.CHECKING,
66
+ n.SAVINGS,
67
+ n.CREDIT_CARD,
68
+ n.INVESTMENT
69
69
  ]);
70
70
  return this.accounts.filter((e) => t.has(e.account_type));
71
71
  }
72
72
  get investmentAccounts() {
73
73
  return this.accounts.filter(
74
- (t) => t.account_type === s.INVESTMENT
74
+ (t) => t.account_type === n.INVESTMENT
75
75
  );
76
76
  }
77
77
  get savingsAccounts() {
78
- return this.accounts.filter((t) => t.account_type === s.SAVINGS);
78
+ return this.accounts.filter((t) => t.account_type === n.SAVINGS);
79
79
  }
80
80
  get visibleAccounts() {
81
81
  return this.accounts.filter((t) => !t.is_hidden);
@@ -114,8 +114,8 @@ class N {
114
114
  }
115
115
  };
116
116
  augmentAccounts = (t = this.accounts) => {
117
- const e = [], n = this.globalStore.userStore.userFeatures, c = g(
118
- n,
117
+ const e = [], s = this.globalStore.userStore.userFeatures, c = g(
118
+ s,
119
119
  "MD_EXCLUDE_EXTERNAL_ACCOUNTS"
120
120
  );
121
121
  for (const r of t) {
@@ -170,18 +170,18 @@ class N {
170
170
  };
171
171
  mergeAccounts = async (t) => {
172
172
  try {
173
- const e = await this.api.mergeAccounts(t), n = e[Object.keys(e)[0]];
173
+ const e = await this.api.mergeAccounts(t), s = e[Object.keys(e)[0]];
174
174
  a(() => {
175
175
  const c = this.accounts.findIndex((o) => o.guid === t[1]);
176
176
  this.accounts.splice(c, 1);
177
177
  const r = this.accounts.findIndex((o) => o.guid === t[0]);
178
- this.accounts.splice(r, 1, n);
178
+ this.accounts.splice(r, 1, s);
179
179
  });
180
180
  } catch (e) {
181
181
  console.error(`Error occurred while merging accounts: ${e}`);
182
182
  }
183
183
  };
184
- sortAccounts = (t = this.accounts) => t.sort((e, n) => e.account_type > n.account_type ? 1 : e.account_type < n.account_type ? -1 : (e.name || "") > (n.name || "") ? 1 : (e.name || "") < (n.name || "") ? -1 : 0);
184
+ sortAccounts = (t = this.accounts) => t.sort((e, s) => e.account_type > s.account_type ? 1 : e.account_type < s.account_type ? -1 : (e.name || "") > (s.name || "") ? 1 : (e.name || "") < (s.name || "") ? -1 : 0);
185
185
  refreshAccounts = async () => {
186
186
  this.uiStore.setIsLoading(!0), await Promise.all([this.loadAccounts(), this.loadInstitutions()]), this.uiStore.setIsLoading(!1);
187
187
  };
@@ -195,7 +195,7 @@ class N {
195
195
  removeAccount = async (t) => {
196
196
  try {
197
197
  await this.api.deleteAccount(t), a(() => {
198
- const e = this.accounts.findIndex((n) => n.guid === t);
198
+ const e = this.accounts.findIndex((s) => s.guid === t);
199
199
  this.accounts.splice(e, 1);
200
200
  });
201
201
  } catch (e) {
@@ -206,24 +206,24 @@ class N {
206
206
  try {
207
207
  const e = await this.api.updateAccount(t);
208
208
  a(() => {
209
- const n = this.accounts.findIndex(
209
+ const s = this.accounts.findIndex(
210
210
  (c) => c.guid === e.guid
211
211
  );
212
- this.accounts.splice(n, 1, e), this.accounts = this.augmentAccounts(this.accounts);
212
+ this.accounts.splice(s, 1, e), this.accounts = this.augmentAccounts(this.accounts);
213
213
  });
214
214
  } catch (e) {
215
215
  console.error(`Error occurred while updating account: ${e}`);
216
216
  }
217
217
  };
218
218
  updateAccountFiltering = async (t, e) => {
219
- for (const n of t) {
220
- const c = this.accounts.find((r) => r.guid === n);
219
+ for (const s of t) {
220
+ const c = this.accounts.find((r) => r.guid === s);
221
221
  if (c) {
222
222
  c.is_excluded_from_accounts = e, c.is_excluded_from_budgets = e, c.is_excluded_from_cash_flow = e, c.is_excluded_from_debts = e, c.is_excluded_from_goals = e, c.is_excluded_from_investments = e, c.is_excluded_from_net_worth = e, c.is_excluded_from_spending = e, c.is_excluded_from_transactions = e, c.is_excluded_from_trends = e;
223
223
  try {
224
224
  this.updateAccount(c);
225
225
  } catch (r) {
226
- console.error(`Failed to update account ${n} (added):`, r);
226
+ console.error(`Failed to update account ${s} (added):`, r);
227
227
  }
228
228
  }
229
229
  }
@@ -1,4 +1,4 @@
1
- import { A as _ } from "./ConnectDrawer-phFH6OHt.mjs";
1
+ import { A as _ } from "./ConnectDrawer-COy3Xwqv.mjs";
2
2
  const s = (t) => t && (t.account_type === _.CREDIT_CARD || t.account_type === _.LOAN || t.account_type === _.MORTGAGE || t.account_type === _.LINE_OF_CREDIT || t.account_type === _.CHECKING_LINE_OF_CREDIT), p = (t) => t.is_manual || !t.guid, E = (t) => t.account_type === _.LINE_OF_CREDIT || t.account_type === _.CREDIT_CARD || t.account_type === _.CHECKING_LINE_OF_CREDIT, a = (t) => t.account_type === _.SAVINGS || t.account_type === _.CHECKING || t.account_type === _.LINE_OF_CREDIT || t.account_type === _.CREDIT_CARD || t.account_type === _.LOAN || t.account_type === _.MORTGAGE, y = (t) => t.account_type === _.LOAN || t.account_type === _.MORTGAGE;
3
3
  export {
4
4
  s as a,
@@ -1,8 +1,8 @@
1
- import { F as c, A as s } from "./Fetch-CkFKy79O.mjs";
1
+ import { F as c, A as s } from "./Fetch-87LIQbEA.mjs";
2
2
  class i {
3
3
  fetchInstance;
4
- constructor(t, e) {
5
- this.fetchInstance = new c(t, e);
4
+ constructor(t, e, n) {
5
+ this.fetchInstance = new c(t, e, void 0, n);
6
6
  }
7
7
  getBeats = async (t, e) => {
8
8
  const n = `page=${t || 1}&per_page=${e || 5}`;
@@ -1,8 +1,8 @@
1
1
  import { makeAutoObservable as c, runInAction as r } from "mobx";
2
- import { B as n } from "./BeatApi-DLu87ijw.mjs";
3
- function d(t, a, s, i = "asc") {
4
- const e = i === "desc" ? -1 : 1;
5
- return [...t, ...a].sort((_, l) => _[s] < l[s] ? -1 * e : _[s] > l[s] ? 1 * e : 0);
2
+ import { B as l } from "./BeatApi-DhJpgCLz.mjs";
3
+ function d(t, e, s, i = "asc") {
4
+ const a = i === "desc" ? -1 : 1;
5
+ return [...t, ...e].sort((_, n) => _[s] < n[s] ? -1 * a : _[s] > n[s] ? 1 * a : 0);
6
6
  }
7
7
  const m = (t) => ({
8
8
  ...t,
@@ -49,31 +49,31 @@ const m = (t) => ({
49
49
  });
50
50
  class u {
51
51
  globalStore;
52
- api = new n("/", "");
52
+ api = new l("/", "");
53
53
  beats = [];
54
54
  isLoading = !1;
55
- constructor(a) {
56
- this.globalStore = a, this.api = new n(a.endpoint, a.sessionToken), c(this);
55
+ constructor(e) {
56
+ this.globalStore = e, this.api = new l(e.endpoint, e.sessionToken, e.onError), c(this);
57
57
  }
58
58
  loadBeats = async () => {
59
59
  this.isLoading = !0;
60
- const a = await this.api.getBeats(), i = (await this.api.getOffers()).map((e) => m(e));
60
+ const e = await this.api.getBeats(), i = (await this.api.getOffers()).map((a) => m(a));
61
61
  r(() => {
62
- this.beats = d(a, i, "active_at", "desc"), this.isLoading = !1;
62
+ this.beats = d(e, i, "active_at", "desc"), this.isLoading = !1;
63
63
  });
64
64
  };
65
- getFilteredBeats(a) {
66
- const { categoryGuids: s, templates: i } = a;
67
- let e = this.beats;
68
- return s && (e = this.filterBeatsByCategory(e, s)), i && (e = this.filterBeatsByTemplate(e, i)), e;
65
+ getFilteredBeats(e) {
66
+ const { categoryGuids: s, templates: i } = e;
67
+ let a = this.beats;
68
+ return s && (a = this.filterBeatsByCategory(a, s)), i && (a = this.filterBeatsByTemplate(a, i)), a;
69
69
  }
70
70
  // Return beats with any beat.category_guids that are in categoryGuids
71
- filterBeatsByCategory(a, s) {
72
- return a.filter((i) => i.category_guids?.some((e) => s.includes(e)));
71
+ filterBeatsByCategory(e, s) {
72
+ return e.filter((i) => i.category_guids?.some((a) => s.includes(a)));
73
73
  }
74
74
  // Return beats with a beat.template that is in templates
75
- filterBeatsByTemplate(a, s) {
76
- return a.filter((i) => s.some((e) => i.template === e));
75
+ filterBeatsByTemplate(e, s) {
76
+ return e.filter((i) => s.some((a) => i.template === a));
77
77
  }
78
78
  }
79
79
  export {
@@ -1,4 +1,4 @@
1
- import { g as _ } from "./hooks-DkUqN6JE.mjs";
1
+ import { g as _ } from "./hooks-CTieq90n.mjs";
2
2
  import { b as d } from "./Category-CevNQ03n.mjs";
3
3
  import { b as f } from "./Localization-2MODESHW.mjs";
4
4
  import { f as l } from "./NumberFormatting-CtWHhyBX.mjs";
@@ -2,7 +2,7 @@ import { jsx as t, jsxs as E } from "react/jsx-runtime";
2
2
  import { observer as g } from "mobx-react-lite";
3
3
  import C from "react";
4
4
  import $ from "@mui/material/Stack";
5
- import { G as K, k as y, u as b, e as D, a as U } from "./hooks-DkUqN6JE.mjs";
5
+ import { G as K, k as y, u as b, e as D, a as U } from "./hooks-CTieq90n.mjs";
6
6
  import Y from "@mui/material/List";
7
7
  import V from "@mui/material/Paper";
8
8
  import v from "@mui/material/Divider";
@@ -4,12 +4,12 @@ import { subMonths as g } from "date-fns/subMonths";
4
4
  import { startOfMonth as h } from "date-fns/startOfMonth";
5
5
  import { endOfMonth as d } from "date-fns/endOfMonth";
6
6
  import { a as T, g as m } from "./CategoryUtil-BR3H5i6n.mjs";
7
- import { F as p, A as i } from "./Fetch-CkFKy79O.mjs";
7
+ import { F as p, A as i } from "./Fetch-87LIQbEA.mjs";
8
8
  import { b as f, c as w } from "./Category-CevNQ03n.mjs";
9
9
  class y {
10
10
  fetchInstance;
11
- constructor(t, e) {
12
- this.fetchInstance = new p(t, e);
11
+ constructor(t, e, o) {
12
+ this.fetchInstance = new p(t, e, void 0, o);
13
13
  }
14
14
  addCategory = async (t) => this.fetchInstance.post(i.CATEGORIES, t).then((e) => e.category);
15
15
  getCategories = async () => this.fetchInstance.get(i.CATEGORIES).then((t) => t.categories);
@@ -65,7 +65,7 @@ class G {
65
65
  isLoadingCategoryTotals = !1;
66
66
  monthlyTotalsLoaded = !1;
67
67
  constructor(t) {
68
- this.globalStore = t, this.uiStore = new S(), this.api = new y(t.endpoint, t.sessionToken), u(this);
68
+ this.globalStore = t, this.uiStore = new S(), this.api = new y(t.endpoint, t.sessionToken, t.onError), u(this);
69
69
  }
70
70
  get detailedCategories() {
71
71
  return T(
@@ -14,7 +14,7 @@ import p from "@mui/material/ListItemText";
14
14
  import y from "@mui/material/Popover";
15
15
  import g from "@mui/material/Stack";
16
16
  import v from "@mui/material/Checkbox";
17
- import { u as B, c, d as u } from "./hooks-DkUqN6JE.mjs";
17
+ import { u as B, c, d as u } from "./hooks-CTieq90n.mjs";
18
18
  import { b as W } from "./Localization-2MODESHW.mjs";
19
19
  import { u as EE } from "./useScreenSize-B6JyS_Lj.mjs";
20
20
  import { observer as z } from "mobx-react-lite";
@@ -3,8 +3,8 @@ import r from "react";
3
3
  import { observer as E } from "mobx-react-lite";
4
4
  import { useTheme as D } from "@mui/material/styles";
5
5
  import { ConnectionsWidget as L } from "@mxenabled/web-widget-sdk";
6
- import { C as a, c, M as i } from "./ConnectDrawer-phFH6OHt.mjs";
7
- import { c as b, d as w, u as _ } from "./hooks-DkUqN6JE.mjs";
6
+ import { C as a, c, M as i } from "./ConnectDrawer-COy3Xwqv.mjs";
7
+ import { c as b, d as w, u as _ } from "./hooks-CTieq90n.mjs";
8
8
  import { D as x } from "./Drawer-kEE73B87.mjs";
9
9
  const I = ({
10
10
  onClose: l,
@@ -5,7 +5,7 @@ import { v4 as B } from "uuid";
5
5
  import { useTokens as O, TextField as W, P as p } from "@mxenabled/mxui";
6
6
  import { b as _, g as d } from "./Localization-2MODESHW.mjs";
7
7
  import { g as j, C as D, f as y, M as C } from "./NumberFormatting-CtWHhyBX.mjs";
8
- import { u as F } from "./hooks-DkUqN6JE.mjs";
8
+ import { u as F } from "./hooks-CTieq90n.mjs";
9
9
  const G = ({
10
10
  allowDecimals: o = !0,
11
11
  ariaLabel: g,
@@ -1,6 +1,6 @@
1
1
  import { makeAutoObservable as l } from "mobx";
2
2
  import { getDate as r, fromUnixTime as _, startOfMonth as m } from "date-fns";
3
- import { A as p } from "./ConnectDrawer-phFH6OHt.mjs";
3
+ import { A as p } from "./ConnectDrawer-COy3Xwqv.mjs";
4
4
  const E = 12, T = 100;
5
5
  var c = /* @__PURE__ */ ((a) => (a[a.FASTEST_PAYOFF_FIRST = 1] = "FASTEST_PAYOFF_FIRST", a[a.HIGHEST_INTEREST = 2] = "HIGHEST_INTEREST", a[a.LOWEST_BALANCE = 3] = "LOWEST_BALANCE", a[a.HIGHEST_BALANCE = 4] = "HIGHEST_BALANCE", a))(c || {});
6
6
  const b = {
@@ -1,10 +1,10 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
2
  import { observer as c } from "mobx-react-lite";
3
3
  import { Icon as i } from "@mxenabled/mxui";
4
- import { e as p } from "./exportTransactionsToCSV-B5qAKd6C.mjs";
5
- import { O as m } from "./User-Dq9Qj764.mjs";
4
+ import { e as p } from "./exportTransactionsToCSV-Ch_T5Xhk.mjs";
5
+ import { O as m } from "./User-DD7Pb2ze.mjs";
6
6
  import { R as x } from "./ResponsiveButton-DZFp78fJ.mjs";
7
- import { e as _, f as C, u as l } from "./hooks-DkUqN6JE.mjs";
7
+ import { e as _, f as C, u as l } from "./hooks-CTieq90n.mjs";
8
8
  const v = ({ filter: t }) => {
9
9
  const { onEvent: r } = _(), { tags: e, sortedTransactions: s } = C(), { transactions: n } = l(), a = () => {
10
10
  r(m.ON_TRANSACTION_EXPORT_CSV_CLICK), p(t ? s.filter(t) : s, e);
@@ -1,5 +1,5 @@
1
- import { g as a } from "./Localization-2MODESHW.mjs";
2
- const S = {
1
+ import { g as r } from "./Localization-2MODESHW.mjs";
2
+ const E = {
3
3
  ACCOUNTS: "accounts",
4
4
  ANALYTICS_EVENTS: "analytics_events",
5
5
  ANALYTICS_FEATURE_VISITS: "feature_visits",
@@ -46,18 +46,19 @@ const S = {
46
46
  USER_PROFILES: "user_profiles",
47
47
  WIDGET_URLS: "widget_urls"
48
48
  };
49
- class c {
49
+ class S {
50
50
  endpoint = "/";
51
51
  headers;
52
- constructor(s, n, t) {
52
+ onError;
53
+ constructor(s, n, t, o) {
53
54
  this.endpoint = s;
54
- const o = {
55
+ const e = {
55
56
  Accept: "application/json",
56
- "Accept-Language": a(),
57
+ "Accept-Language": r(),
57
58
  "Content-Type": "application/json",
58
59
  "MD-Session-Token": n
59
60
  };
60
- this.headers = t || o;
61
+ this.headers = t || e, this.onError = o;
61
62
  }
62
63
  get = async (s) => {
63
64
  const n = {
@@ -69,7 +70,7 @@ class c {
69
70
  return t.text();
70
71
  throw t;
71
72
  }).then((t) => t.length ? JSON.parse(t) : {}).then((t) => t).catch((t) => {
72
- throw t;
73
+ throw this.onError?.(t, void 0, "ApiGetRequestError"), t;
73
74
  });
74
75
  };
75
76
  post = async (s, n) => {
@@ -111,6 +112,6 @@ class c {
111
112
  };
112
113
  }
113
114
  export {
114
- S as A,
115
- c as F
115
+ E as A,
116
+ S as F
116
117
  };
@@ -3,12 +3,12 @@ import { format as i } from "date-fns/format";
3
3
  import { fromUnixTime as g } from "date-fns/fromUnixTime";
4
4
  import { getUnixTime as s } from "date-fns/getUnixTime";
5
5
  import { subMonths as S } from "date-fns/subMonths";
6
- import { F as m, A as o } from "./Fetch-CkFKy79O.mjs";
6
+ import { F as m, A as o } from "./Fetch-87LIQbEA.mjs";
7
7
  import { f as p, D as u } from "./Dialog-CWW597AF.mjs";
8
8
  class n {
9
9
  fetchInstance;
10
- constructor(e, t) {
11
- this.fetchInstance = new m(e, t);
10
+ constructor(e, t, a) {
11
+ this.fetchInstance = new m(e, t, void 0, a);
12
12
  }
13
13
  calculateHealthScore = async () => this.fetchInstance.post(`${o.HEALTH_SCORES}/calculate`).then((e) => e.health_score);
14
14
  getAverageHealthScores = async () => this.fetchInstance.get(`${o.HEALTH_SCORES}/monthly_averages`).then((e) => e);
@@ -34,7 +34,7 @@ class v {
34
34
  healthScoreChangeReports = [];
35
35
  peerScore = null;
36
36
  constructor(e) {
37
- this.globalStore = e, this.api = new n(e.endpoint, e.sessionToken), l(this);
37
+ this.globalStore = e, this.api = new n(e.endpoint, e.sessionToken, e.onError), l(this);
38
38
  }
39
39
  calculateHealthScore = async () => {
40
40
  try {
@@ -7,10 +7,10 @@ import O from "@mui/material/CardHeader";
7
7
  import S from "@mui/material/Stack";
8
8
  import { AccountBalance as w, ChevronRight as L } from "@mxenabled/mx-icons";
9
9
  import { Text as A } from "@mxenabled/mxui";
10
- import { j as b } from "./ConnectDrawer-phFH6OHt.mjs";
11
- import { m as y } from "./hooks-DkUqN6JE.mjs";
10
+ import { j as b } from "./ConnectDrawer-COy3Xwqv.mjs";
11
+ import { m as y } from "./hooks-CTieq90n.mjs";
12
12
  import { makeAutoObservable as D, runInAction as c } from "mobx";
13
- import { F as v, A as i } from "./Fetch-CkFKy79O.mjs";
13
+ import { F as v, A as i } from "./Fetch-87LIQbEA.mjs";
14
14
  import { fromUnixTime as G } from "date-fns/fromUnixTime";
15
15
  import { addYears as x } from "date-fns/addYears";
16
16
  import { getUnixTime as K } from "date-fns/getUnixTime";
@@ -61,8 +61,8 @@ const at = ({ description: e, label: t, title: o }) => {
61
61
  var a = /* @__PURE__ */ ((e) => (e[e.DEBT_TRACK = 1] = "DEBT_TRACK", e[e.SAVINGS_TRACK = 2] = "SAVINGS_TRACK", e[e.RETIREMENT_TRACK = 3] = "RETIREMENT_TRACK", e[e.EMERGENCY_FUND_TRACK = 4] = "EMERGENCY_FUND_TRACK", e))(a || {}), $ = /* @__PURE__ */ ((e) => (e[e.SAVE_AMOUNT = 1] = "SAVE_AMOUNT", e[e.KEEP_BALANCE_BELOW = 2] = "KEEP_BALANCE_BELOW", e[e.KEEP_BALANCE_ABOVE = 3] = "KEEP_BALANCE_ABOVE", e[e.ACTION = 4] = "ACTION", e))($ || {}), l = /* @__PURE__ */ ((e) => (e[e.AUTOMOBILE = 1] = "AUTOMOBILE", e[e.COLLEGE = 2] = "COLLEGE", e[e.HOUSE = 3] = "HOUSE", e[e.RECREATIONAL_VEHICLE = 4] = "RECREATIONAL_VEHICLE", e[e.VACATION = 5] = "VACATION", e[e.ELECTRONIC = 6] = "ELECTRONIC", e[e.OTHER = 7] = "OTHER", e[e.RETIREMENT = 8] = "RETIREMENT", e[e.EMERGENCY_FUND = 9] = "EMERGENCY_FUND", e[e.SETUP_BUDGETS = 10] = "SETUP_BUDGETS", e[e.START_MONEY_MANAGEMENT = 11] = "START_MONEY_MANAGEMENT", e[e.CREDIT_CARD = 12] = "CREDIT_CARD", e[e.LINE_OF_CREDIT = 13] = "LINE_OF_CREDIT", e[e.LOANS = 14] = "LOANS", e))(l || {});
62
62
  class R {
63
63
  fetchInstance;
64
- constructor(t, o) {
65
- this.fetchInstance = new v(t, o);
64
+ constructor(t, o, r) {
65
+ this.fetchInstance = new v(t, o, void 0, r);
66
66
  }
67
67
  addGoal = async (t) => this.fetchInstance.post(i.GOALS, t).then((o) => o.goal);
68
68
  addRetirementGoal = async (t) => this.fetchInstance.post(i.RETIREMENT_GOALS, t).then((o) => o.retirement_goal);
@@ -182,7 +182,7 @@ class lt {
182
182
  monthlyCashFlowProfile = void 0;
183
183
  goalsLoaded = !1;
184
184
  constructor(t) {
185
- this.globalStore = t, this.api = new R(t.endpoint, t.sessionToken), D(this);
185
+ this.globalStore = t, this.api = new R(t.endpoint, t.sessionToken, t.onError), D(this);
186
186
  }
187
187
  get orderedGoals() {
188
188
  return this.goals.slice().sort((t, o) => t.position - o.position);
@@ -13,7 +13,7 @@ import E from "@mui/material/Stack";
13
13
  import { H3 as y, P as H, Icon as X, Text as T, H2 as _t, InstitutionLogo as bt } from "@mxenabled/mxui";
14
14
  import { ExpandMore as ot, ChevronRight as wt } from "@mxenabled/mx-icons";
15
15
  import xt from "@mui/material/Breadcrumbs";
16
- import { u as V, y as tt, c as ft, o as St, a as It, m as Tt } from "./hooks-DkUqN6JE.mjs";
16
+ import { u as V, z as tt, c as ft, o as St, a as It, m as Tt } from "./hooks-CTieq90n.mjs";
17
17
  import { useTheme as Z } from "@mui/material/styles";
18
18
  import { b as s } from "./Localization-2MODESHW.mjs";
19
19
  import { E as Et, a as Ct, P as At } from "./Help-DhcC-C05.mjs";
@@ -7,7 +7,7 @@ import { f as y } from "./NumberFormatting-CtWHhyBX.mjs";
7
7
  import { observer as se } from "mobx-react-lite";
8
8
  import { Stack as x, Box as W, useTheme as ce } from "@mui/material";
9
9
  import { Text as l } from "@mxenabled/mxui";
10
- import { u as de } from "./hooks-DkUqN6JE.mjs";
10
+ import { u as de } from "./hooks-CTieq90n.mjs";
11
11
  import { ChartsTooltip as he } from "@mui/x-charts/ChartsTooltip";
12
12
  const ue = (e) => {
13
13
  const a = N(), o = e.showLabel, s = e.style, g = Number(e.x), m = Number(e.y), u = e.handlers?.onMarkClick, f = e.handlers?.onMouseEnter, c = e.handlers?.onMouseLeave, d = le(a.breakpoints.up("sm")), n = e.valueFormatterString ? y(e.yData[e.dataIndex], e.valueFormatterString) : String(e.yData[e.dataIndex]), h = d ? a.typography.Small?.fontSize : a.typography.XSmall?.fontSize, k = h ? parseFloat(h.toString()) * 0.6 : 8, C = n.length * k + 8 + 8, M = 24, S = g - C / 2, T = m - 30;
@@ -8,7 +8,7 @@ import L from "@mui/material/Stack";
8
8
  import { ChevronRight as g } from "@mxenabled/mx-icons";
9
9
  import { Text as m } from "@mxenabled/mxui";
10
10
  import { a as j } from "./Dialog-CWW597AF.mjs";
11
- import { u as P } from "./hooks-DkUqN6JE.mjs";
11
+ import { u as P } from "./hooks-CTieq90n.mjs";
12
12
  const D = v(
13
13
  ({
14
14
  children: n,
@@ -16,23 +16,23 @@ import { startOfToday as z } from "date-fns/startOfToday";
16
16
  import { endOfMonth as _e } from "date-fns/endOfMonth";
17
17
  import H from "@mui/material/Button";
18
18
  import { Delete as me, Add as ye, ReceiptLong as pe } from "@mxenabled/mx-icons";
19
- import { T as X, a as he, u as ge, S as fe, b as Ce } from "./TransactionDetails-C-z3HGTT.mjs";
19
+ import { T as X, a as he, u as ge, S as fe, b as Ce } from "./TransactionDetails--DPYM8la.mjs";
20
20
  import { getDayOfYear as be } from "date-fns/getDayOfYear";
21
21
  import { setDayOfYear as Se } from "date-fns/setDayOfYear";
22
22
  import { AdapterDateFns as ve } from "@mui/x-date-pickers/AdapterDateFnsV3";
23
23
  import { DatePicker as xe } from "@mui/x-date-pickers";
24
24
  import { LocalizationProvider as we } from "@mui/x-date-pickers/LocalizationProvider";
25
- import { u as w, h as M, e as F, a as Ae, f as Z, o as De } from "./hooks-DkUqN6JE.mjs";
25
+ import { u as w, h as M, e as F, a as Ae, f as Z, o as De } from "./hooks-CTieq90n.mjs";
26
26
  import { b as Ie, f as J } from "./NumberFormatting-CtWHhyBX.mjs";
27
27
  import { D as O } from "./Drawer-kEE73B87.mjs";
28
- import { A as R } from "./WidgetContainer-CdBs9WOZ.mjs";
28
+ import { A as R } from "./WidgetContainer-C1NlG0pd.mjs";
29
29
  import { f as Ee, D as Re, a as Te } from "./Dialog-CWW597AF.mjs";
30
30
  import { formatISO as Le } from "date-fns/formatISO";
31
31
  import { fromUnixTime as Oe } from "date-fns/fromUnixTime";
32
32
  import { S as ke } from "./SearchBox-B2_zLv8-.mjs";
33
33
  import { h as Ne } from "./DateUtil-BcuH7ErC.mjs";
34
34
  import { b as B } from "./Category-CevNQ03n.mjs";
35
- import { T as V } from "./User-Dq9Qj764.mjs";
35
+ import { T as V } from "./User-DD7Pb2ze.mjs";
36
36
  const ee = ({
37
37
  frequency: n,
38
38
  firstDay: t,