@mx-cartographer/experiences 7.8.2-alpha.al0 → 7.8.2-alpha.bb2

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.
@@ -77,6 +77,9 @@ class E {
77
77
  (t) => t.account_type === s.INVESTMENT
78
78
  );
79
79
  }
80
+ get manualAccounts() {
81
+ return this.detailedAccounts.filter((t) => t.is_manual);
82
+ }
80
83
  get savingsAccounts() {
81
84
  return this.detailedAccounts.filter((t) => t.account_type === s.SAVINGS);
82
85
  }
@@ -86,7 +89,7 @@ class E {
86
89
  );
87
90
  }
88
91
  get visibleAccounts() {
89
- return this.detailedAccounts.filter((t) => !t.is_hidden);
92
+ return this.detailedAccounts.filter((t) => !t.is_hidden && !t.is_closed);
90
93
  }
91
94
  get visibleCashAccounts() {
92
95
  return this.cashAccounts.filter((t) => !t.is_hidden);
@@ -17,7 +17,7 @@ import { endOfMonth as _e } from "date-fns/endOfMonth";
17
17
  import { parseISO as ue } from "date-fns/parseISO";
18
18
  import $ from "@mui/material/Button";
19
19
  import { Delete as me, Add as pe, ReceiptLong as he } from "@mxenabled/mx-icons";
20
- import { T as X, a as ye, u as ge, S as fe, b as Ce } from "./TransactionDetails-DPhRaXq1.mjs";
20
+ import { T as X, a as ye, u as ge, S as fe, b as Ce } from "./TransactionDetails-BDhz3DLT.mjs";
21
21
  import { getDayOfYear as be } from "date-fns/getDayOfYear";
22
22
  import { setDayOfYear as xe } from "date-fns/setDayOfYear";
23
23
  import { AdapterDateFns as Se } from "@mui/x-date-pickers/AdapterDateFnsV3";
@@ -26,7 +26,7 @@ import { LocalizationProvider as we } from "@mui/x-date-pickers/LocalizationProv
26
26
  import { u as w, j as G, g as P, b as Ae, h as Z, o as Ie } from "./hooks-ZMp65DFz.mjs";
27
27
  import { b as De, f as J } from "./NumberFormatting-DjTD0t3W.mjs";
28
28
  import { D as O } from "./Drawer-DV4NTsFg.mjs";
29
- import { A as E } from "./WidgetContainer-D3cBkknZ.mjs";
29
+ import { A as E } from "./WidgetContainer-BbPS3Yxz.mjs";
30
30
  import { f as Re, D as Ee, a as Te } from "./Dialog-B4PI-_bL.mjs";
31
31
  import { formatISO as Le } from "date-fns/formatISO";
32
32
  import { fromUnixTime as Oe } from "date-fns/fromUnixTime";
@@ -7,10 +7,10 @@ import R from "@mui/material/Tabs";
7
7
  import d from "@mui/material/Divider";
8
8
  import b from "@mui/material/List";
9
9
  import T from "@mui/material/Stack";
10
- import { R as C, A as S, a as E, M as v } from "./ManageIncome-DfBJAiJ4.mjs";
10
+ import { R as C, A as S, a as E, M as v } from "./ManageIncome-CL3hv8i9.mjs";
11
11
  import { u as _, j as A, g as f } from "./hooks-ZMp65DFz.mjs";
12
12
  import { R as y, F as N } from "./RepeatingTransaction-miZVnk_A.mjs";
13
- import { A as m } from "./WidgetContainer-D3cBkknZ.mjs";
13
+ import { A as m } from "./WidgetContainer-BbPS3Yxz.mjs";
14
14
  const I = h(() => {
15
15
  const { recurring: g } = _(), { detailedRepeatingTransactions: n } = A(), { onEvent: a } = f(), l = (r) => {
16
16
  a(m.RECURRING_TRANSACTIONS_CLICK_EXPENSE, {
@@ -17,7 +17,7 @@ import { fromUnixTime as j } from "date-fns/fromUnixTime";
17
17
  import { isSameDay as Ie } from "date-fns/isSameDay";
18
18
  import { h as qe } from "./DateUtil-D7U-nc1Y.mjs";
19
19
  import { L as ve } from "./Loader-DUaFpDGv.mjs";
20
- import { A as P } from "./WidgetContainer-D3cBkknZ.mjs";
20
+ import { A as P } from "./WidgetContainer-BbPS3Yxz.mjs";
21
21
  import ie from "@mui/material/Paper";
22
22
  import de from "@mui/material/Button";
23
23
  import Ze from "@mui/material/FormGroup";
@@ -1,36 +1,36 @@
1
1
  import { jsx as E } from "react/jsx-runtime";
2
- import M from "@mui/material/Box";
3
- import H from "@mui/material/FormControlLabel";
4
- import P from "@mui/material/Radio";
5
- import U from "@mui/material/styles/useTheme";
6
- import B from "@mui/material/Tooltip";
7
- import { makeAutoObservable as p } from "mobx";
8
- import { endOfToday as f } from "date-fns/endOfToday";
9
- import { formatISO as K } from "date-fns/formatISO";
2
+ import H from "@mui/material/Box";
3
+ import P from "@mui/material/FormControlLabel";
4
+ import U from "@mui/material/Radio";
5
+ import B from "@mui/material/styles/useTheme";
6
+ import K from "@mui/material/Tooltip";
7
+ import { makeAutoObservable as f, toJS as D } from "mobx";
8
+ import { endOfToday as m } from "date-fns/endOfToday";
9
+ import { formatISO as V } from "date-fns/formatISO";
10
10
  import { getUnixTime as O } from "date-fns/getUnixTime";
11
- import { isBefore as V } from "date-fns/isBefore";
11
+ import { isBefore as v } from "date-fns/isBefore";
12
12
  import { startOfMonth as h } from "date-fns/startOfMonth";
13
- import { startOfToday as m } from "date-fns/startOfToday";
14
- import { subDays as v } from "date-fns/subDays";
15
- import { O as n, a as y, T as b } from "./User-B0LnmiKO.mjs";
16
- import { T as D } from "./TransactionApi-CjBoLleL.mjs";
17
- import { b as Y } from "./Category-CevNQ03n.mjs";
18
- import { f as F } from "./exportTransactionsToCSV-DtQ7ovAR.mjs";
19
- import { format as W } from "date-fns/format";
20
- import { fromUnixTime as $ } from "date-fns/fromUnixTime";
21
- import { f as I, D as C, O as k } from "./Dialog-B4PI-_bL.mjs";
22
- import { endOfMonth as z } from "date-fns/endOfMonth";
23
- import { B as u } from "./BeatApi-De2IaqH2.mjs";
24
- const X = ({
13
+ import { startOfToday as y } from "date-fns/startOfToday";
14
+ import { subDays as Y } from "date-fns/subDays";
15
+ import { O as n, a as b, T as G } from "./User-B0LnmiKO.mjs";
16
+ import { T as u } from "./TransactionApi-CjBoLleL.mjs";
17
+ import { b as F } from "./Category-CevNQ03n.mjs";
18
+ import { f as W } from "./exportTransactionsToCSV-DtQ7ovAR.mjs";
19
+ import { format as $ } from "date-fns/format";
20
+ import { fromUnixTime as k } from "date-fns/fromUnixTime";
21
+ import { f as I, D as C, O as z } from "./Dialog-B4PI-_bL.mjs";
22
+ import { endOfMonth as X } from "date-fns/endOfMonth";
23
+ import { B as R } from "./BeatApi-De2IaqH2.mjs";
24
+ const j = ({
25
25
  checked: l = !1,
26
26
  label: t,
27
27
  sx: a = {},
28
28
  tooltip: e = "",
29
29
  value: A
30
30
  }) => {
31
- const d = U(), s = d.palette.mode === "light" ? d.palette.grey[400] : d.palette.grey[700], c = l ? d.palette.action.active : s;
31
+ const d = B(), s = d.palette.mode === "light" ? d.palette.grey[400] : d.palette.grey[700], c = l ? d.palette.action.active : s;
32
32
  return /* @__PURE__ */ E(
33
- M,
33
+ H,
34
34
  {
35
35
  bgcolor: "background.paper",
36
36
  border: `${l ? 3 : 1}px solid`,
@@ -41,11 +41,11 @@ const X = ({
41
41
  pr: 8,
42
42
  py: 4,
43
43
  sx: { "&:hover": { borderColor: d.palette.action.active }, ...a },
44
- children: /* @__PURE__ */ E(B, { title: e, children: /* @__PURE__ */ E(
45
- H,
44
+ children: /* @__PURE__ */ E(K, { title: e, children: /* @__PURE__ */ E(
45
+ P,
46
46
  {
47
47
  control: /* @__PURE__ */ E(
48
- P,
48
+ U,
49
49
  {
50
50
  disableRipple: !0,
51
51
  sx: { "&.Mui-checked": { color: d.palette.action.active } }
@@ -59,7 +59,7 @@ const X = ({
59
59
  ) })
60
60
  }
61
61
  );
62
- }, pt = X, G = {
62
+ }, ft = j, w = {
63
63
  ASC: "ASC",
64
64
  DESC: "DESC",
65
65
  DIRECTION: {
@@ -108,7 +108,7 @@ const X = ({
108
108
  TRANSACTION: "Transaction",
109
109
  TRANSACTIONS_LIST: "Transactions List",
110
110
  UNHIDE_TRANSACTION: "Unhide Transaction"
111
- }, R = {
111
+ }, p = {
112
112
  // splits
113
113
  [n.ON_TRANSACTION_SPLIT_CLICK]: {
114
114
  action: o.SELECT,
@@ -322,7 +322,7 @@ const X = ({
322
322
  category: T.TRANSACTIONS_WIDGET,
323
323
  label: r.DELETE_TRANSACTION
324
324
  }
325
- }, j = async (l, t) => !t || !R[l] ? null : t.sendAnalyticEvent(R[l]), L = {
325
+ }, J = async (l, t) => !t || !p[l] ? null : t.sendAnalyticEvent(p[l]), L = {
326
326
  FLAG: "flag",
327
327
  DATE: "date",
328
328
  PAYEE: "payee",
@@ -331,65 +331,65 @@ const X = ({
331
331
  AMOUNT: "amount"
332
332
  }, Z = (l, t, a, e = []) => {
333
333
  const A = t.reduce((c, i) => ({ ...c, [i.guid]: i }), {}), d = a.reduce((c, i) => ({ ...c, [i.guid]: i }), {}), s = e.reduce((c, i) => {
334
- const { transaction_guid: S, tag_guid: N } = i;
335
- if (!c[S])
334
+ const { transaction_guid: _, tag_guid: N } = i;
335
+ if (!c[_])
336
336
  return {
337
337
  ...c,
338
- [S]: [N]
338
+ [_]: [N]
339
339
  };
340
- const g = [...c[S], N];
340
+ const g = [...c[_], N];
341
341
  return {
342
342
  ...c,
343
- [S]: g
343
+ [_]: g
344
344
  };
345
345
  }, {});
346
346
  return l.map((c) => {
347
- const i = A[c.account_guid], S = c.category_guid ? d[c.category_guid] : null, N = s[c.guid] ?? [];
347
+ const i = A[c.account_guid], _ = c.category_guid ? d[c.category_guid] : null, N = s[c.guid] ?? [];
348
348
  return {
349
349
  ...c,
350
350
  account: i?.user_name || "Unknown",
351
351
  accountIsClosed: i?.is_closed,
352
352
  accountIsHidden: i?.is_hidden,
353
- category: S?.name || "Uncategorized",
354
- isIncome: c.top_level_category_guid === Y.INCOME,
355
- isPending: c.feed_status === y.PENDING,
353
+ category: _?.name || "Uncategorized",
354
+ isIncome: c.top_level_category_guid === F.INCOME,
355
+ isPending: c.feed_status === b.PENDING,
356
356
  number: i?.account_number || "",
357
357
  payee: c.description,
358
358
  tags: N
359
359
  };
360
360
  });
361
- }, q = "uncategorized", J = (l, t, a, e, A, d) => {
362
- const s = Q(l, A, d), c = tt(s, a, e);
361
+ }, q = "uncategorized", Q = (l, t, a, e, A, d) => {
362
+ const s = tt(l, A, d), c = at(s, a, e);
363
363
  return t.forEach((i) => {
364
- const S = c.findIndex((g) => g.guid === i), N = d.filter((g) => g.parent_guid === i);
365
- c.splice(S + 1, 0, ...N);
364
+ const _ = c.findIndex((g) => g.guid === i), N = d.filter((g) => g.parent_guid === i);
365
+ c.splice(_ + 1, 0, ...N);
366
366
  }), c;
367
- }, Q = (l, t, a) => {
367
+ }, tt = (l, t, a) => {
368
368
  const {
369
369
  accounts: e = [],
370
- dateRange: A = { start: h(m()), end: f() },
370
+ dateRange: A = { start: h(y()), end: m() },
371
371
  custom: d = () => !0,
372
372
  searchTerm: s = "",
373
373
  showSplits: c = !1
374
374
  } = l;
375
- return a.filter((i) => c ? !i.has_been_split : !i.parent_guid).filter((i) => !!e.find((S) => S === i.account_guid)).filter((i) => i.date >= O(A.start) && i.date <= O(A.end)).filter(d).filter((i) => {
375
+ return a.filter((i) => c ? !i.has_been_split : !i.parent_guid).filter((i) => !!e.find((_) => _ === i.account_guid)).filter((i) => i.date >= O(A.start) && i.date <= O(A.end)).filter(d).filter((i) => {
376
376
  if (s === q && i.has_been_split)
377
377
  return !1;
378
378
  if (/^spl/i.test(s) && (i.has_been_split || i.parent_guid))
379
379
  return !0;
380
380
  const N = i.tags.some(
381
- (w) => _(s, t.find((x) => x.guid === w)?.name)
382
- ), g = $(i.date);
383
- return _(s, i.payee) || _(s, i.feed_description) || _(s, i.category) || _(s, I(g, C.MONTH)) || _(s, I(g, C.DAY)) || _(s, I(g, C.FULL_MONTH_DAY)) || _(s, I(g, C.MONTH_DAY_YEAR)) || _(s, W(g, k)) || _(s, i.account) || _(s, `${i.amount}`) || _(s, i.memo) || N;
381
+ (x) => S(s, t.find((M) => M.guid === x)?.name)
382
+ ), g = k(i.date);
383
+ return S(s, i.payee) || S(s, i.feed_description) || S(s, i.category) || S(s, I(g, C.MONTH)) || S(s, I(g, C.DAY)) || S(s, I(g, C.FULL_MONTH_DAY)) || S(s, I(g, C.MONTH_DAY_YEAR)) || S(s, $(g, z)) || S(s, i.account) || S(s, `${i.amount}`) || S(s, i.memo) || N;
384
384
  });
385
- }, tt = (l, t, a) => [...l].sort((e, A) => {
385
+ }, at = (l, t, a) => [...l].sort((e, A) => {
386
386
  const d = t, s = (e[d] || "") > (A[d] || "");
387
387
  let c = s ? -1 : 1, i = s ? 1 : -1;
388
- return (t === L.DATE || t === L.AMOUNT) && (c = s ? 1 : -1, i = s ? -1 : 1), a === G.ASC ? c : i;
389
- }), _ = (l, t) => {
388
+ return (t === L.DATE || t === L.AMOUNT) && (c = s ? 1 : -1, i = s ? -1 : 1), a === w.ASC ? c : i;
389
+ }), S = (l, t) => {
390
390
  const a = l.toLowerCase().split(" "), e = t?.toString().toLowerCase() ?? "";
391
391
  return a.every((A) => e.indexOf(A) > -1);
392
- }, at = {
392
+ }, et = {
393
393
  account_guid: "",
394
394
  amount: 0,
395
395
  currency_code: "",
@@ -397,7 +397,7 @@ const X = ({
397
397
  description: "",
398
398
  duplicate: !1,
399
399
  feed_description: "",
400
- feed_status: y.POSTED,
400
+ feed_status: b.POSTED,
401
401
  feed_transaction_date: 0,
402
402
  has_been_split: !1,
403
403
  has_been_viewed: !1,
@@ -410,7 +410,7 @@ const X = ({
410
410
  is_subscription: !1,
411
411
  is_void: !1,
412
412
  revision: 1,
413
- transaction_type: b.DEBIT,
413
+ transaction_type: G.DEBIT,
414
414
  user_guid: "",
415
415
  is_duplicate: !1,
416
416
  feed_transacted_at: 0,
@@ -418,20 +418,20 @@ const X = ({
418
418
  memo: void 0,
419
419
  tags: []
420
420
  };
421
- class et {
421
+ class st {
422
422
  beginDate = h(/* @__PURE__ */ new Date());
423
- endDate = z(/* @__PURE__ */ new Date());
423
+ endDate = X(/* @__PURE__ */ new Date());
424
424
  expandedSplits = [];
425
425
  height = 550;
426
426
  width = 1e3;
427
427
  shouldDisableDrawerScroll = !1;
428
428
  searchValue = "";
429
429
  selectedAccountGuids = [];
430
- manualTransaction = at;
430
+ manualTransaction = et;
431
431
  isAmountValid = !1;
432
432
  showInsights = !1;
433
433
  constructor() {
434
- p(this);
434
+ f(this);
435
435
  }
436
436
  setDateRange = (t, a) => {
437
437
  this.beginDate = t, this.endDate = a;
@@ -457,11 +457,11 @@ class et {
457
457
  this.manualTransaction = t;
458
458
  };
459
459
  }
460
- class ft {
460
+ class mt {
461
461
  globalStore;
462
462
  uiStore;
463
- api = new D("/", "");
464
- beatApi = new u("/", "");
463
+ api = new u("/", "");
464
+ beatApi = new R("/", "");
465
465
  associatedBeats = [];
466
466
  associatedBeatsLoaded = !1;
467
467
  associatedBeatsLoading = !1;
@@ -477,18 +477,18 @@ class ft {
477
477
  transactionRules = [];
478
478
  transactionRulesLoaded = !1;
479
479
  transactionRulesLoading = !1;
480
- cachedStartDate = v(m(), 90);
480
+ cachedStartDate = Y(y(), 90);
481
481
  filter = {};
482
482
  isLoading = !0;
483
483
  sortColumn = L.DATE;
484
- sortDirection = G.DESC;
485
- onAnalyticEvent = j;
484
+ sortDirection = w.DESC;
485
+ onAnalyticEvent = J;
486
486
  constructor(t) {
487
- this.globalStore = t, this.uiStore = new et(), this.api = new D(
487
+ this.globalStore = t, this.uiStore = new st(), this.api = new u(
488
488
  t.endpoint,
489
489
  t.sessionToken,
490
490
  t.onError
491
- ), this.beatApi = new u(t.endpoint, t.sessionToken, t.onError), p(this);
491
+ ), this.beatApi = new R(t.endpoint, t.sessionToken, t.onError), f(this);
492
492
  }
493
493
  loadTransactionData = async () => {
494
494
  this.globalStore.accountStore.isAccountDataLoaded || await this.globalStore.accountStore.loadAccountData(), this.globalStore.categoryStore.categoriesLoaded || await this.globalStore.categoryStore.loadCategories(), await Promise.all([
@@ -512,7 +512,7 @@ class ft {
512
512
  ) : [];
513
513
  }
514
514
  get sortedTransactions() {
515
- return J(
515
+ return console.warn("Sorting & Filtering: ", D(this.filter)), console.warn("Detailed Transactions: ", D(this.detailedTransactions)), Q(
516
516
  this.filter,
517
517
  this.uiStore.expandedSplits,
518
518
  this.sortColumn,
@@ -522,7 +522,7 @@ class ft {
522
522
  );
523
523
  }
524
524
  get sortedTransactionsWithSplits() {
525
- return F(this.sortedTransactions, this.transactions);
525
+ return W(this.sortedTransactions, this.transactions);
526
526
  }
527
527
  setAssociatedBeats = (t) => {
528
528
  this.associatedBeats = t, this.associatedBeatsLoading = !1, this.associatedBeatsLoaded = !0;
@@ -566,14 +566,14 @@ class ft {
566
566
  const a = await this.api.addTransaction(t);
567
567
  if (a) {
568
568
  this.setTransactions([a, ...this.transactions]);
569
- const e = a.transaction_type === b.CREDIT ? a.amount : -a.amount;
569
+ const e = a.transaction_type === G.CREDIT ? a.amount : -a.amount;
570
570
  this.globalStore.accountStore.updateAccountBalance(a.account_guid, e);
571
571
  }
572
572
  };
573
573
  loadAssociatedBeats = async (t) => {
574
574
  if (this.associatedBeatsLoading) return;
575
575
  this.associatedBeatsLoading = !0;
576
- const a = t ? K(t, { representation: "date" }) : void 0;
576
+ const a = t ? V(t, { representation: "date" }) : void 0;
577
577
  try {
578
578
  const e = await this.beatApi.getBeatsWithAssociatedTransaction(a);
579
579
  this.setAssociatedBeats(e);
@@ -615,7 +615,7 @@ class ft {
615
615
  try {
616
616
  const a = await this.api.getTransactionsByDateRange(
617
617
  O(t),
618
- O(f())
618
+ O(m())
619
619
  );
620
620
  this.setTransactions(a);
621
621
  } catch (a) {
@@ -644,7 +644,7 @@ class ft {
644
644
  }
645
645
  };
646
646
  setFilter = (t) => {
647
- this.filter = t, t.dateRange && V(t.dateRange.start, this.cachedStartDate) && this.loadTransactions(t.dateRange.start).then(() => {
647
+ this.filter = t, t.dateRange && v(t.dateRange.start, this.cachedStartDate) && this.loadTransactions(t.dateRange.start).then(() => {
648
648
  t.dateRange && (this.cachedStartDate = t.dateRange.start);
649
649
  });
650
650
  };
@@ -699,7 +699,7 @@ class ft {
699
699
  };
700
700
  }
701
701
  export {
702
- at as D,
703
- pt as S,
704
- ft as T
702
+ et as D,
703
+ ft as S,
704
+ mt as T
705
705
  };
@@ -167,7 +167,7 @@ const Ge = {
167
167
  shouldShrinkToIcon: u = !0,
168
168
  variant: c = "outlined"
169
169
  }) => {
170
- const x = fe(), { isMobile: D } = _e(), { announce: B, ariaLive: k } = be(), [A, h] = I.useState(L), [d, f] = I.useState(t.dateRangePickerCopy.dateRangeThisMonth), [R, y] = I.useState(A), [p, O] = I.useState(!1), [T, g] = I.useState(!0), [l, v] = I.useState(6), P = {
170
+ const x = fe(), { isMobile: D } = _e(), { announce: B, ariaLive: k } = be(), [A, h] = I.useState(L), [d, f] = I.useState(t.dateRangePickerCopy.dateRangeThisMonth), [R, v] = I.useState(A), [p, O] = I.useState(!1), [T, g] = I.useState(!0), [l, y] = I.useState(6), P = {
171
171
  buttons: [
172
172
  { label: "3M", value: 3 },
173
173
  { label: "6M", value: 6 },
@@ -182,7 +182,7 @@ const Ge = {
182
182
  ]
183
183
  };
184
184
  I.useEffect(() => {
185
- h(L), y(L);
185
+ h(L), v(L);
186
186
  }, [L]), I.useEffect(() => {
187
187
  (c === "timeframebuttons" || c === "timeframetabs") && r.onRangeChanged(a());
188
188
  }, [l]);
@@ -215,9 +215,9 @@ const Ge = {
215
215
  }, K = (_, n) => {
216
216
  _[1] = _[1] ?? _[0];
217
217
  const i = [_[0], _[1] ? Ae(_[1]) : _[1]], s = S(i[0], N.MONTH_DAY_YEAR), o = S(i[1], N.MONTH_DAY_YEAR);
218
- y(i), f(n), B(`${t.dateRangePickerCopy}: ${s} - ${o}`);
218
+ v(i), f(n), B(`${t.dateRangePickerCopy}: ${s} - ${o}`);
219
219
  }, w = (_) => {
220
- v(_);
220
+ y(_);
221
221
  };
222
222
  return /* @__PURE__ */ C(X, { className: "mx-cmn-date-range-selector", m: 4, children: [
223
223
  /* @__PURE__ */ C(
@@ -354,10 +354,7 @@ const Ge = {
354
354
  dateRange: R,
355
355
  onRangeChanged: K,
356
356
  selectedShortcut: d,
357
- sx: {
358
- p: 0,
359
- "& .MuiPickersLayout-toolbar": { display: "none" }
360
- }
357
+ sx: { p: 16 }
361
358
  }
362
359
  )
363
360
  ]
@@ -414,7 +411,7 @@ const Ge = {
414
411
  sx: d = {},
415
412
  title: f = ""
416
413
  }) => {
417
- const [R, { height: y, width: p }] = oe(), { onEvent: O } = de(), { isDesktop: T, isMobile: g, isTablet: l } = _e(p), { displayedDateRange: v, isCopyLoaded: P } = Te(), { common: a } = Ie(), U = () => {
414
+ const [R, { height: v, width: p }] = oe(), { onEvent: O } = de(), { isDesktop: T, isMobile: g, isTablet: l } = _e(p), { displayedDateRange: y, isCopyLoaded: P } = Te(), { common: a } = Ie(), U = () => {
418
415
  k && (k(), O(Ge.WIDGET_BACK_CLICK));
419
416
  };
420
417
  if (!P)
@@ -437,7 +434,7 @@ const Ge = {
437
434
  dateRangeEditTitle: a.date_range_picker.edit_title,
438
435
  dateRangeNextAria: a.date_range_picker.next_aria,
439
436
  dateRangePreviousAria: a.date_range_picker.previous_aria
440
- }, K = u ? u.start : v.start, w = u ? u.end : v.end, _ = m?.length > 1;
437
+ }, K = u ? u.start : y.start, w = u ? u.end : y.end, _ = m?.length > 1;
441
438
  return /* @__PURE__ */ C(
442
439
  ae,
443
440
  {
@@ -545,7 +542,7 @@ const Ge = {
545
542
  }
546
543
  )
547
544
  ] }),
548
- /* @__PURE__ */ e(ie, { ref: R, sx: { p: 0 }, children: /* @__PURE__ */ e(Ee, { availableHeight: y, availableWidth: p, children: L }) })
545
+ /* @__PURE__ */ e(ie, { ref: R, sx: { p: 0 }, children: /* @__PURE__ */ e(Ee, { availableHeight: v, availableWidth: p, children: L }) })
549
546
  ]
550
547
  }
551
548
  );
@@ -25,7 +25,7 @@ import I1 from "@mui/material/Switch";
25
25
  import D from "@mui/material/ListItem";
26
26
  import $ from "@mui/material/ListItemButton";
27
27
  import O from "@mui/material/ListItemText";
28
- import { A as S, W as N1 } from "../WidgetContainer-D3cBkknZ.mjs";
28
+ import { A as S, W as N1 } from "../WidgetContainer-BbPS3Yxz.mjs";
29
29
  import { a as Q, f as s1, D as l1 } from "../Dialog-B4PI-_bL.mjs";
30
30
  import { b as f } from "../Localization-2MODESHW.mjs";
31
31
  import { D as t1 } from "../Drawer-DV4NTsFg.mjs";
@@ -53,7 +53,7 @@ import t3 from "@mui/material/AlertTitle";
53
53
  import n3 from "@mui/material/Link";
54
54
  import o3 from "@mui/material/Paper";
55
55
  import { subDays as i3, startOfToday as c3, endOfToday as a3 } from "date-fns";
56
- import { T as s3, a as l3 } from "../TransactionDetails-DPhRaXq1.mjs";
56
+ import { T as s3, a as l3 } from "../TransactionDetails-BDhz3DLT.mjs";
57
57
  import { T as r1 } from "../TabContentContainer-j01JYR_7.mjs";
58
58
  import { f as d1 } from "../NumberFormatting-DjTD0t3W.mjs";
59
59
  import { C as r3 } from "../ConnectionsDrawer-BDpVTTSe.mjs";
@@ -62,7 +62,7 @@ import { u as n1 } from "../useWidgetLoadTimer-hIOioiKx.mjs";
62
62
  import { L as o1 } from "../Loader-DUaFpDGv.mjs";
63
63
  import { M as A1 } from "../MiniWidgetContainer-98-hKFqm.mjs";
64
64
  import { A as i2 } from "../AccountApi-DgZ8ILj1.mjs";
65
- import { A as a2 } from "../AccountStore-BbPWe2C9.mjs";
65
+ import { A as a2 } from "../AccountStore-btBtMI9s.mjs";
66
66
  const d3 = (t, o) => {
67
67
  const n = _1.includes(o) ? b1(t) : [], i = L1.includes(o) ? S1(t) : [], c = f1.includes(o) ? R1(t) : [];
68
68
  return [n, i, c].filter((l) => l.length > 0);
@@ -25,6 +25,7 @@ export declare class AccountStore {
25
25
  get debtAccounts(): DetailedAccount[];
26
26
  get finstrongAccounts(): DetailedAccount[];
27
27
  get investmentAccounts(): DetailedAccount[];
28
+ get manualAccounts(): DetailedAccount[];
28
29
  get savingsAccounts(): DetailedAccount[];
29
30
  get retirementAccounts(): Account[];
30
31
  get visibleAccounts(): DetailedAccount[];
@@ -28,7 +28,7 @@ import { useTheme as Ve } from "@mui/material/styles";
28
28
  import { u as ie } from "../useScreenSize-B6JyS_Lj.mjs";
29
29
  import { L as ge } from "../Loader-DUaFpDGv.mjs";
30
30
  import { E as le } from "../EmptyState-DoxNUae-.mjs";
31
- import { A as N, W as Ye } from "../WidgetContainer-D3cBkknZ.mjs";
31
+ import { A as N, W as Ye } from "../WidgetContainer-BbPS3Yxz.mjs";
32
32
  import { u as Ze } from "../BudgetUtil-BmZXkL0C.mjs";
33
33
  import { u as Te } from "../useWidgetLoadTimer-hIOioiKx.mjs";
34
34
  import { M as qe } from "../MiniWidgetContainer-98-hKFqm.mjs";
@@ -39,7 +39,7 @@ import De from "@mui/material/Snackbar";
39
39
  import ye from "@mui/material/Tab";
40
40
  import Qe from "@mui/material/Tabs";
41
41
  import { e as et } from "../exportTransactionsToCSV-DtQ7ovAR.mjs";
42
- import { T as Ee, a as tt } from "../TransactionDetails-DPhRaXq1.mjs";
42
+ import { T as Ee, a as tt } from "../TransactionDetails-BDhz3DLT.mjs";
43
43
  import pe from "@mui/material/Card";
44
44
  import he from "@mui/material/CardContent";
45
45
  import { S as me } from "../StatusBar-BK_uYHAB.mjs";
@@ -48,7 +48,7 @@ import { u as nt, b as ot } from "../CategorySelectorDrawer-cQKX5dZb.mjs";
48
48
  import Oe from "@mui/material/CardHeader";
49
49
  import { subDays as at } from "date-fns/subDays";
50
50
  import rt from "@mui/material/IconButton";
51
- import { M as st } from "../ManageIncome-DfBJAiJ4.mjs";
51
+ import { M as st } from "../ManageIncome-CL3hv8i9.mjs";
52
52
  const it = E(() => {
53
53
  const { budgets: t } = w(), { totalBudgeted: o } = D(), { incomeTotal: i } = te(), s = i - o;
54
54
  return /* @__PURE__ */ g(B, { direction: "row", justifyContent: "center", my: 16, spacing: 20, children: [
@@ -18,7 +18,7 @@ import { b as $ } from "../Localization-2MODESHW.mjs";
18
18
  import { u as Oe } from "../useWidgetLoadTimer-hIOioiKx.mjs";
19
19
  import { M as Je } from "../MiniWidgetContainer-98-hKFqm.mjs";
20
20
  import { E as Ze } from "../EmptyState-DoxNUae-.mjs";
21
- import { R as et } from "../RecurringSettings-BUhJ_PBl.mjs";
21
+ import { R as et } from "../RecurringSettings-Bmnnpb48.mjs";
22
22
  import tt from "@mui/material/Tabs";
23
23
  import ye from "@mui/material/Tab";
24
24
  import { getUnixTime as z } from "date-fns/getUnixTime";
@@ -36,16 +36,16 @@ import { alpha as at, keyframes as it } from "@mui/material/styles";
36
36
  import { DataGridPro as rt } from "@mui/x-data-grid-pro";
37
37
  import { T as we } from "../TabContentContainer-j01JYR_7.mjs";
38
38
  import G from "@mui/material/Button";
39
- import { M as st, S as ct, i as lt, d as _e, c as dt } from "../ManageIncome-DfBJAiJ4.mjs";
39
+ import { M as st, S as ct, i as lt, d as _e, c as dt } from "../ManageIncome-CL3hv8i9.mjs";
40
40
  import { D as Ge } from "../Drawer-DV4NTsFg.mjs";
41
41
  import { subDays as Me } from "date-fns/subDays";
42
42
  import { endOfToday as mt } from "date-fns/endOfToday";
43
- import { W as ut, A as Ie } from "../WidgetContainer-D3cBkknZ.mjs";
43
+ import { W as ut, A as Ie } from "../WidgetContainer-BbPS3Yxz.mjs";
44
44
  import { A as Q } from "../Account-BiB1F8lL.mjs";
45
45
  import { formatISO as ht } from "date-fns/formatISO";
46
46
  import { fromUnixTime as De } from "date-fns/fromUnixTime";
47
47
  import { startOfMonth as pt } from "date-fns/startOfMonth";
48
- import { S as ft, b as gt } from "../TransactionDetails-DPhRaXq1.mjs";
48
+ import { S as ft, b as gt } from "../TransactionDetails-BDhz3DLT.mjs";
49
49
  import { F as bt, R as ve, e as Ae } from "../RepeatingTransaction-miZVnk_A.mjs";
50
50
  import { h as xt } from "../DateUtil-D7U-nc1Y.mjs";
51
51
  import { F as Ct, A as j } from "../Fetch-DecPFeGU.mjs";
@@ -12,14 +12,14 @@ import { H as at } from "../Help-DhcC-C05.mjs";
12
12
  import { E as Ss } from "../Help-DhcC-C05.mjs";
13
13
  import { M as ws } from "../MicroWidgetContainer-B2hO9rOG.mjs";
14
14
  import { M as xs } from "../MiniWidgetContainer-98-hKFqm.mjs";
15
- import { A as As, D as vs, W as Es } from "../WidgetContainer-D3cBkknZ.mjs";
15
+ import { A as As, D as vs, W as Es } from "../WidgetContainer-BbPS3Yxz.mjs";
16
16
  import { b as Bs, G as Is } from "../GlobalAccountFilter-DQCPNc95.mjs";
17
17
  import { C as Ms } from "../CurrencyInput-itK0R3wV.mjs";
18
18
  import { L as Us } from "../Loader-DUaFpDGv.mjs";
19
19
  import { R as Rs } from "../ResponsiveButton-DZFp78fJ.mjs";
20
20
  import { S as Os } from "../SearchBox-B2_zLv8-.mjs";
21
- import { T as it } from "../TransactionStore-BSp5bOKg.mjs";
22
- import { S as Fs } from "../TransactionStore-BSp5bOKg.mjs";
21
+ import { T as it } from "../TransactionStore-DUki-08W.mjs";
22
+ import { S as Fs } from "../TransactionStore-DUki-08W.mjs";
23
23
  import { T as Gs } from "../TabContentContainer-j01JYR_7.mjs";
24
24
  import { I as qs } from "../IconBacking-B9oC6uL2.mjs";
25
25
  import { D as Qs, F as Xs, c as js, d as Ks, R as zs, S as Vs } from "../RepeatingTransaction-miZVnk_A.mjs";
@@ -54,7 +54,7 @@ import { u as Mo } from "../useInsightsEnabled-B7dxpDrX.mjs";
54
54
  import { u as Uo } from "../useScreenSize-B6JyS_Lj.mjs";
55
55
  import { u as Ro } from "../useWidgetLoadTimer-hIOioiKx.mjs";
56
56
  import { makeAutoObservable as _, runInAction as S, reaction as Z, autorun as ft } from "mobx";
57
- import { A as yt } from "../AccountStore-BbPWe2C9.mjs";
57
+ import { A as yt } from "../AccountStore-btBtMI9s.mjs";
58
58
  import St from "posthog-js";
59
59
  import { B as bt } from "../BeatStore-D_NYuBSz.mjs";
60
60
  import { endOfMonth as J } from "date-fns/endOfMonth";
@@ -23,7 +23,7 @@ import Oe from "@mui/material/CardHeader";
23
23
  import ae from "@mui/material/Box";
24
24
  import { useTheme as He } from "@mui/material/styles";
25
25
  import { LineChart as Ge } from "@mui/x-charts/LineChart";
26
- import { A as T, W as We } from "../WidgetContainer-D3cBkknZ.mjs";
26
+ import { A as T, W as We } from "../WidgetContainer-BbPS3Yxz.mjs";
27
27
  import pe from "@mui/material/Tab";
28
28
  import je from "@mui/material/Tabs";
29
29
  import fe from "@mui/material/List";
@@ -41,7 +41,7 @@ import { S as rt, F as wt, e as Hn, R as kt } from "../RepeatingTransaction-miZV
41
41
  import { A as ze } from "../Account-BiB1F8lL.mjs";
42
42
  import { S as Nn } from "../StatusBar-BK_uYHAB.mjs";
43
43
  import { h as Mt } from "../DateUtil-D7U-nc1Y.mjs";
44
- import { T as jn, s as Kn, h as Vn, S as Xn, b as Yn } from "../TransactionDetails-DPhRaXq1.mjs";
44
+ import { T as jn, s as Kn, h as Vn, S as Xn, b as Yn } from "../TransactionDetails-BDhz3DLT.mjs";
45
45
  import { T as pe } from "../TabContentContainer-j01JYR_7.mjs";
46
46
  import qn from "@mui/material/useMediaQuery";
47
47
  import { BarPlot as Un } from "@mui/x-charts/BarChart";
@@ -55,10 +55,10 @@ import { formatISO as oo } from "date-fns/formatISO";
55
55
  import { fromUnixTime as ro } from "date-fns/fromUnixTime";
56
56
  import { startOfToday as at } from "date-fns/startOfToday";
57
57
  import { subDays as ao } from "date-fns/subDays";
58
- import { c as io, d as it, S as so, i as co } from "../ManageIncome-DfBJAiJ4.mjs";
58
+ import { c as io, d as it, S as so, i as co } from "../ManageIncome-CL3hv8i9.mjs";
59
59
  import { LocalizationProvider as lo, DatePicker as po, StaticDatePicker as _o } from "@mui/x-date-pickers";
60
60
  import { AdapterDateFns as Tt } from "@mui/x-date-pickers/AdapterDateFnsV3";
61
- import { R as uo } from "../RecurringSettings-BUhJ_PBl.mjs";
61
+ import { R as uo } from "../RecurringSettings-Bmnnpb48.mjs";
62
62
  import { LocalizationProvider as ho } from "@mui/x-date-pickers/LocalizationProvider";
63
63
  import { format as mo } from "date-fns/format";
64
64
  import go from "@mui/lab/Timeline";
@@ -71,7 +71,7 @@ import Co from "@mui/material/Accordion";
71
71
  import wo from "@mui/material/AccordionDetails";
72
72
  import ko from "@mui/material/AccordionSummary";
73
73
  import { u as Mo } from "../useWidgetLoadTimer-hIOioiKx.mjs";
74
- import { W as Do } from "../WidgetContainer-D3cBkknZ.mjs";
74
+ import { W as Do } from "../WidgetContainer-BbPS3Yxz.mjs";
75
75
  const Io = ({
76
76
  dialScoreData: t,
77
77
  dataIndex: o,
@@ -49,7 +49,7 @@ import { AdapterDateFns as mt } from "@mui/x-date-pickers/AdapterDateFnsV3";
49
49
  import { DatePicker as _t } from "@mui/x-date-pickers";
50
50
  import { LocalizationProvider as ut } from "@mui/x-date-pickers/LocalizationProvider";
51
51
  import { u as Ke } from "../useWidgetLoadTimer-hIOioiKx.mjs";
52
- import { A as $, W as pt } from "../WidgetContainer-D3cBkknZ.mjs";
52
+ import { A as $, W as pt } from "../WidgetContainer-BbPS3Yxz.mjs";
53
53
  import { L as Me } from "../Loader-DUaFpDGv.mjs";
54
54
  import { E as ht } from "../EmptyState-DoxNUae-.mjs";
55
55
  import bt from "@mui/material/Stack/Stack";
@@ -4,7 +4,7 @@ import { H as m } from "../Help-DODxp9uw.mjs";
4
4
  import { b as s } from "../hooks-ZMp65DFz.mjs";
5
5
  import { u as a } from "../useWidgetLoadTimer-hIOioiKx.mjs";
6
6
  import { L as p } from "../Loader-DUaFpDGv.mjs";
7
- import { W as d } from "../WidgetContainer-D3cBkknZ.mjs";
7
+ import { W as d } from "../WidgetContainer-BbPS3Yxz.mjs";
8
8
  const H = t(({ onBackClick: e, sx: i }) => {
9
9
  const { isInitialized: o } = s();
10
10
  return a({