@mx-cartographer/experiences 4.0.4 → 4.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/index.es.js +637 -619
- package/dist/index.es.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as t, jsxs as l, Fragment as eA } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import C, { useMemo as ao, useRef as Ra, useEffect as me, useState as Ce, createContext as io, useContext as oo } from "react";
|
|
3
3
|
import { observer as T } from "mobx-react-lite";
|
|
4
4
|
import O from "@mui/material/Box";
|
|
5
5
|
import q from "@mui/material/Divider";
|
|
@@ -13,7 +13,7 @@ import { intlFormat as fo } from "date-fns/intlFormat";
|
|
|
13
13
|
import { Honeybadger as Mt } from "@honeybadger-io/react";
|
|
14
14
|
import Lr from "numeral";
|
|
15
15
|
import sA from "@mui/material/Button";
|
|
16
|
-
import
|
|
16
|
+
import it from "@mui/material/Tooltip";
|
|
17
17
|
import KA from "@mui/material/IconButton";
|
|
18
18
|
import On from "@mui/material/FormControlLabel";
|
|
19
19
|
import Y from "@mui/material/ListItem";
|
|
@@ -24,7 +24,7 @@ import y from "@mui/material/Stack";
|
|
|
24
24
|
import Kt from "@mui/material/Checkbox";
|
|
25
25
|
import { addMonths as ee } from "date-fns/addMonths";
|
|
26
26
|
import { addQuarters as je } from "date-fns/addQuarters";
|
|
27
|
-
import { addWeeks as
|
|
27
|
+
import { addWeeks as et } from "date-fns/addWeeks";
|
|
28
28
|
import { addYears as wt } from "date-fns/addYears";
|
|
29
29
|
import { getDay as St } from "date-fns/getDay";
|
|
30
30
|
import { isBefore as bA } from "date-fns/isBefore";
|
|
@@ -47,7 +47,7 @@ import fe from "@mui/material/Paper";
|
|
|
47
47
|
import bo from "@mui/icons-material/KeyboardArrowLeftRounded";
|
|
48
48
|
import wo from "@mui/icons-material/KeyboardArrowRightRounded";
|
|
49
49
|
import { isSameDay as YA } from "date-fns/isSameDay";
|
|
50
|
-
import { isWithinInterval as
|
|
50
|
+
import { isWithinInterval as nt } from "date-fns/isWithinInterval";
|
|
51
51
|
import * as VA from "d3";
|
|
52
52
|
import { selectAll as So, interpolateString as To, arc as Lo } from "d3";
|
|
53
53
|
import { useTheme as re, keyframes as Io, ThemeProvider as Do } from "@mui/material/styles";
|
|
@@ -85,11 +85,11 @@ import An from "@mui/icons-material/ChevronRight";
|
|
|
85
85
|
import ka from "@mui/icons-material/ExpandMore";
|
|
86
86
|
import { DataGridPro as en } from "@mui/x-data-grid-pro";
|
|
87
87
|
import { getDate as $o, fromUnixTime as kt, startOfMonth as As, format as es, differenceInMonths as ts, isSameDay as ns, subDays as rs, startOfToday as as, endOfToday as is } from "date-fns";
|
|
88
|
-
import { getMonth as
|
|
88
|
+
import { getMonth as tt } from "date-fns/getMonth";
|
|
89
89
|
import { useVirtualizer as Ga } from "@tanstack/react-virtual";
|
|
90
90
|
import { parseISO as Fa } from "date-fns/parseISO";
|
|
91
91
|
import be from "@mui/material/Skeleton";
|
|
92
|
-
import { isAfter as
|
|
92
|
+
import { isAfter as rt } from "date-fns/isAfter";
|
|
93
93
|
import { subWeeks as xr } from "date-fns/subWeeks";
|
|
94
94
|
import { formatISO as kn } from "date-fns/formatISO";
|
|
95
95
|
import Gn from "@mui/material/MenuItem";
|
|
@@ -798,14 +798,14 @@ const ut = 44, Rr = (A, e) => A.find((n) => n.guid === e), Ys = (A, e) => A.find
|
|
|
798
798
|
(i, o, s) => {
|
|
799
799
|
const c = [...i], h = o.groups;
|
|
800
800
|
if (h?.static && c.push(h.static), h?.dynamic) {
|
|
801
|
-
const d = h.dynamic.indexOf("{"), u = h.dynamic.substring(d + 1, h.dynamic.length - 1),
|
|
802
|
-
if (
|
|
803
|
-
const f = e[
|
|
801
|
+
const d = h.dynamic.indexOf("{"), u = h.dynamic.substring(d + 1, h.dynamic.length - 1), g = Number(h.dynamic.substring(1, d));
|
|
802
|
+
if (C.isValidElement(e[g - 1])) {
|
|
803
|
+
const f = e[g - 1], m = C.cloneElement(f, {
|
|
804
804
|
key: `${u}-${s}`
|
|
805
805
|
});
|
|
806
806
|
c.push(m);
|
|
807
807
|
} else
|
|
808
|
-
c.push(e[
|
|
808
|
+
c.push(e[g - 1]);
|
|
809
809
|
}
|
|
810
810
|
return h?.staticEnd && c.push(h.staticEnd), c;
|
|
811
811
|
},
|
|
@@ -905,11 +905,11 @@ const z = (A, e, n) => {
|
|
|
905
905
|
const e = St(A);
|
|
906
906
|
let n = xn(A, e);
|
|
907
907
|
for (; bA(n, AA()); )
|
|
908
|
-
n =
|
|
908
|
+
n = et(n, 1);
|
|
909
909
|
return n;
|
|
910
910
|
}, nc = (A) => {
|
|
911
911
|
const e = Ar(A);
|
|
912
|
-
return
|
|
912
|
+
return et(e, 1);
|
|
913
913
|
}, Hr = (A) => {
|
|
914
914
|
let e = Pn(AA(), A.getDate());
|
|
915
915
|
for (; bA(e, AA()); )
|
|
@@ -958,7 +958,7 @@ class oc {
|
|
|
958
958
|
throw n;
|
|
959
959
|
});
|
|
960
960
|
}
|
|
961
|
-
class
|
|
961
|
+
class at {
|
|
962
962
|
fetchInstance;
|
|
963
963
|
constructor(e, n) {
|
|
964
964
|
this.fetchInstance = new UA(e, n);
|
|
@@ -1070,7 +1070,7 @@ const yn = (A, e) => A.reduce((n, r) => (n[r.guid] = e?.includes(r.guid), n), {}
|
|
|
1070
1070
|
handleClose: d,
|
|
1071
1071
|
showAccountNumbers: u
|
|
1072
1072
|
}) => {
|
|
1073
|
-
const
|
|
1073
|
+
const g = ao(() => sc(A), [A]), f = A.length < 1, m = !!e, v = Object.values(c).every((E) => !!E);
|
|
1074
1074
|
return /* @__PURE__ */ t(
|
|
1075
1075
|
mo,
|
|
1076
1076
|
{
|
|
@@ -1159,8 +1159,8 @@ const yn = (A, e) => A.reduce((n, r) => (n[r.guid] = e?.includes(r.guid), n), {}
|
|
|
1159
1159
|
label: v ? n.unselectAllAccounts : n.selectAllAccounts
|
|
1160
1160
|
}
|
|
1161
1161
|
) }),
|
|
1162
|
-
Object.keys(
|
|
1163
|
-
const S =
|
|
1162
|
+
Object.keys(g).map((E) => {
|
|
1163
|
+
const S = g[E], L = S.every(
|
|
1164
1164
|
(w) => c[w.guid]
|
|
1165
1165
|
);
|
|
1166
1166
|
return /* @__PURE__ */ t(Y, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ t(
|
|
@@ -1177,7 +1177,7 @@ const yn = (A, e) => A.reduce((n, r) => (n[r.guid] = e?.includes(r.guid), n), {}
|
|
|
1177
1177
|
disableGutters: !0,
|
|
1178
1178
|
onClick: () => a(
|
|
1179
1179
|
E,
|
|
1180
|
-
|
|
1180
|
+
g,
|
|
1181
1181
|
L
|
|
1182
1182
|
),
|
|
1183
1183
|
sx: {
|
|
@@ -1258,14 +1258,14 @@ const yn = (A, e) => A.reduce((n, r) => (n[r.guid] = e?.includes(r.guid), n), {}
|
|
|
1258
1258
|
ii.displayName = "AccountFilterOptions";
|
|
1259
1259
|
const cc = (A, e) => {
|
|
1260
1260
|
const { session: n } = e, r = Object.values(e).reduce((i, o) => n && o?.onAnalyticEvent && typeof o?.onAnalyticEvent == "function" ? [...i, o.onAnalyticEvent] : i, []), a = [...A, ...r];
|
|
1261
|
-
return
|
|
1261
|
+
return C.useMemo(() => (i) => {
|
|
1262
1262
|
a.forEach((o) => {
|
|
1263
1263
|
n ? o(i, n) : o(i);
|
|
1264
1264
|
});
|
|
1265
1265
|
}, [A, n]);
|
|
1266
1266
|
}, lc = (A, e) => {
|
|
1267
1267
|
const { session: n } = e, r = Object.values(e).reduce((i, o) => n && o?.onAnalyticPageView && typeof o?.onAnalyticPageView == "function" ? [...i, o.onAnalyticPageView] : i, []), a = [...A, ...r];
|
|
1268
|
-
return
|
|
1268
|
+
return C.useMemo(() => (i) => {
|
|
1269
1269
|
a.forEach((o) => {
|
|
1270
1270
|
n ? o(i, n) : o(i);
|
|
1271
1271
|
});
|
|
@@ -1295,11 +1295,11 @@ const cc = (A, e) => {
|
|
|
1295
1295
|
sx: o = {},
|
|
1296
1296
|
variant: s = "outlined"
|
|
1297
1297
|
}) => {
|
|
1298
|
-
const { isMobile: c } = MA(), [h, d] =
|
|
1298
|
+
const { isMobile: c } = MA(), [h, d] = C.useState(null), [u, g] = C.useState(
|
|
1299
1299
|
yn(A, a)
|
|
1300
1300
|
);
|
|
1301
|
-
|
|
1302
|
-
|
|
1301
|
+
C.useEffect(() => {
|
|
1302
|
+
g(yn(A, a));
|
|
1303
1303
|
}, [A, a]);
|
|
1304
1304
|
const f = (v) => {
|
|
1305
1305
|
d(v.currentTarget);
|
|
@@ -1307,7 +1307,7 @@ const cc = (A, e) => {
|
|
|
1307
1307
|
d(null);
|
|
1308
1308
|
};
|
|
1309
1309
|
return /* @__PURE__ */ l(O, { className: "mx-cmn-account-filter", m: 4, sx: { ...o }, children: [
|
|
1310
|
-
c ? /* @__PURE__ */ t(
|
|
1310
|
+
c ? /* @__PURE__ */ t(it, { id: "filter-accounts", placement: "bottom", title: e.title, children: /* @__PURE__ */ t(
|
|
1311
1311
|
KA,
|
|
1312
1312
|
{
|
|
1313
1313
|
"aria-controls": "filter_accounts",
|
|
@@ -1337,23 +1337,23 @@ const cc = (A, e) => {
|
|
|
1337
1337
|
copy: e.accountFilterOptionsCopy,
|
|
1338
1338
|
handleClose: m,
|
|
1339
1339
|
onAccountClick: (v) => {
|
|
1340
|
-
|
|
1340
|
+
g({ ...u, [v.guid]: !u[v.guid] });
|
|
1341
1341
|
},
|
|
1342
1342
|
onAccountGroupClick: (v, E, S) => {
|
|
1343
1343
|
const L = { ...u };
|
|
1344
1344
|
E[v].forEach((w) => {
|
|
1345
1345
|
L[w.guid] = !S;
|
|
1346
|
-
}),
|
|
1346
|
+
}), g(L);
|
|
1347
1347
|
},
|
|
1348
1348
|
onCancelClick: () => {
|
|
1349
|
-
|
|
1349
|
+
g(yn(A, a)), m();
|
|
1350
1350
|
},
|
|
1351
1351
|
onConnectAccountClick: r,
|
|
1352
1352
|
onFilterClick: () => {
|
|
1353
1353
|
n(Object.keys(u).filter((v) => u[v])), m();
|
|
1354
1354
|
},
|
|
1355
1355
|
selectedOptions: u,
|
|
1356
|
-
setSelectedOptions:
|
|
1356
|
+
setSelectedOptions: g,
|
|
1357
1357
|
showAccountNumbers: i
|
|
1358
1358
|
}
|
|
1359
1359
|
)
|
|
@@ -1408,7 +1408,7 @@ const cc = (A, e) => {
|
|
|
1408
1408
|
}) => {
|
|
1409
1409
|
const c = RA(), h = hc(c, e, n), d = (f) => {
|
|
1410
1410
|
i && (f.key === " " || f.key === "Enter") && i(r);
|
|
1411
|
-
}, u = o === void 0 || o === r ? "primary" : "secondary",
|
|
1411
|
+
}, u = o === void 0 || o === r ? "primary" : "secondary", g = () => /* @__PURE__ */ t(
|
|
1412
1412
|
p,
|
|
1413
1413
|
{
|
|
1414
1414
|
"aria-hidden": !0,
|
|
@@ -1421,7 +1421,7 @@ const cc = (A, e) => {
|
|
|
1421
1421
|
}
|
|
1422
1422
|
);
|
|
1423
1423
|
return /* @__PURE__ */ l("div", { className: `mx-cmn-bar-container ${h} ${s < 0 ? "mx-cmn-negative" : ""}`, children: [
|
|
1424
|
-
s >= 0 && /* @__PURE__ */ t(
|
|
1424
|
+
s >= 0 && /* @__PURE__ */ t(g, {}),
|
|
1425
1425
|
/* @__PURE__ */ t(
|
|
1426
1426
|
"div",
|
|
1427
1427
|
{
|
|
@@ -1433,7 +1433,7 @@ const cc = (A, e) => {
|
|
|
1433
1433
|
tabIndex: A ? 0 : void 0
|
|
1434
1434
|
}
|
|
1435
1435
|
),
|
|
1436
|
-
s < 0 && /* @__PURE__ */ t(
|
|
1436
|
+
s < 0 && /* @__PURE__ */ t(g, {})
|
|
1437
1437
|
] });
|
|
1438
1438
|
}, hc = (A, e, n) => {
|
|
1439
1439
|
const r = `expandBar-${Math.round(n)}`, a = po(r, { from: { height: 0 }, to: { height: n } });
|
|
@@ -1481,7 +1481,7 @@ const cc = (A, e) => {
|
|
|
1481
1481
|
value: h,
|
|
1482
1482
|
valueLabel: d = "",
|
|
1483
1483
|
width: u,
|
|
1484
|
-
xAxisLabel:
|
|
1484
|
+
xAxisLabel: g = ""
|
|
1485
1485
|
}) => {
|
|
1486
1486
|
const f = RA(), m = gc(f, u), v = h / o * c, E = Math.abs(h) / o * n, S = s === void 0 || s === a ? "primary" : "secondary";
|
|
1487
1487
|
return /* @__PURE__ */ l("div", { className: `mx-cmn-barchart-bar-column ${m}`, children: [
|
|
@@ -1517,7 +1517,7 @@ const cc = (A, e) => {
|
|
|
1517
1517
|
{
|
|
1518
1518
|
className: `mx-cmn-bar-label ${i ? "mx-cmn-clickable" : ""}`,
|
|
1519
1519
|
onClick: i ? () => i(a) : void 0,
|
|
1520
|
-
children: /* @__PURE__ */ t(p, { bold: s === a, color: S, variant: "Small", children:
|
|
1520
|
+
children: /* @__PURE__ */ t(p, { bold: s === a, color: S, variant: "Small", children: g })
|
|
1521
1521
|
}
|
|
1522
1522
|
)
|
|
1523
1523
|
] });
|
|
@@ -1561,7 +1561,7 @@ const cc = (A, e) => {
|
|
|
1561
1561
|
selectedIndex: c,
|
|
1562
1562
|
valueFormatter: h = (d) => `${d}`
|
|
1563
1563
|
}) => {
|
|
1564
|
-
const d = RA(), u = vc(d),
|
|
1564
|
+
const d = RA(), u = vc(d), g = r.reduce(mc, []), f = A !== void 0 ? A : g.reduce(Cc, 0) / g.length, m = Math.max(...g), v = Math.min(...g), E = g.reduce(fc, 0), S = m >= 0, L = v < 0, w = Fr(S, L, a), D = Fr(L, S, a), P = pc(f, m, v, w || D), N = (R) => c === void 0 || R === c ? n : `${n}80`, x = () => /* @__PURE__ */ t(
|
|
1565
1565
|
Gr,
|
|
1566
1566
|
{
|
|
1567
1567
|
averageLineHeight: P,
|
|
@@ -1576,7 +1576,7 @@ const cc = (A, e) => {
|
|
|
1576
1576
|
return /* @__PURE__ */ l("div", { className: `mx-cmn-bar-chart ${u}`, children: [
|
|
1577
1577
|
/* @__PURE__ */ l("div", { className: "mx-cmn-chart-container", children: [
|
|
1578
1578
|
/* @__PURE__ */ t(x, {}),
|
|
1579
|
-
r.map((R, j) => /* @__PURE__ */ l(
|
|
1579
|
+
r.map((R, j) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
1580
1580
|
/* @__PURE__ */ t(
|
|
1581
1581
|
Gr,
|
|
1582
1582
|
{
|
|
@@ -1631,7 +1631,7 @@ const cc = (A, e) => {
|
|
|
1631
1631
|
gap: 4
|
|
1632
1632
|
}
|
|
1633
1633
|
}), bc = ({ beginDate: A, date: e, endDate: n, isInMonth: r, onClick: a }) => {
|
|
1634
|
-
const i = CA(), o = RA(), s = wc(o, i), c = A && n &&
|
|
1634
|
+
const i = CA(), o = RA(), s = wc(o, i), c = A && n && nt(e, { start: A, end: n }) && !YA(e, A) && !YA(e, n), h = A && n && YA(A, e) && !YA(A, n), d = n && A && YA(n, e) && !YA(A, n), u = A && YA(A, e) || n && YA(n, e), g = YA(e, AA());
|
|
1635
1635
|
return /* @__PURE__ */ t(
|
|
1636
1636
|
"div",
|
|
1637
1637
|
{
|
|
@@ -1658,7 +1658,7 @@ const cc = (A, e) => {
|
|
|
1658
1658
|
className: `
|
|
1659
1659
|
mx-cmn-calendar-day-text
|
|
1660
1660
|
${u ? "mx-cmn-day-selected" : ""}
|
|
1661
|
-
${
|
|
1661
|
+
${g ? "mx-cmn-today" : ""}`,
|
|
1662
1662
|
variant: "Small",
|
|
1663
1663
|
children: XA(e, "d")
|
|
1664
1664
|
}
|
|
@@ -1723,11 +1723,11 @@ const Tc = ({
|
|
|
1723
1723
|
selectionType: i = "Single"
|
|
1724
1724
|
/* Single */
|
|
1725
1725
|
}) => {
|
|
1726
|
-
const o = RA(), s = Lc(o), [c, h] =
|
|
1727
|
-
|
|
1726
|
+
const o = RA(), s = Lc(o), [c, h] = C.useState(AA), [d, u] = C.useState(e), [g, f] = C.useState(n);
|
|
1727
|
+
C.useEffect(() => {
|
|
1728
1728
|
u(e), f(n), e && h(e);
|
|
1729
1729
|
}, [e, n]);
|
|
1730
|
-
const m =
|
|
1730
|
+
const m = C.useMemo(() => {
|
|
1731
1731
|
const w = Eo({ start: yA(c), end: NA(c) }), D = [];
|
|
1732
1732
|
for (let P = 0; P < w.length; P++) {
|
|
1733
1733
|
const N = w[P], x = vo({ start: N, end: pe(N, 6) }), R = [];
|
|
@@ -1742,7 +1742,7 @@ const Tc = ({
|
|
|
1742
1742
|
u(w), r?.(w);
|
|
1743
1743
|
return;
|
|
1744
1744
|
}
|
|
1745
|
-
!d ||
|
|
1745
|
+
!d || g ? (u(w), f(void 0)) : bA(w, d) ? (f(d), u(w), a?.(w, d)) : (f(w), a?.(d, w));
|
|
1746
1746
|
}
|
|
1747
1747
|
}, E = () => {
|
|
1748
1748
|
const w = AA();
|
|
@@ -1768,7 +1768,7 @@ const Tc = ({
|
|
|
1768
1768
|
{
|
|
1769
1769
|
beginDate: d,
|
|
1770
1770
|
date: P,
|
|
1771
|
-
endDate:
|
|
1771
|
+
endDate: g,
|
|
1772
1772
|
isInMonth: yo(P, c),
|
|
1773
1773
|
onClick: v
|
|
1774
1774
|
},
|
|
@@ -1825,7 +1825,7 @@ const Tc = ({
|
|
|
1825
1825
|
children: a
|
|
1826
1826
|
}) => {
|
|
1827
1827
|
let i = 0;
|
|
1828
|
-
return
|
|
1828
|
+
return C.useEffect(() => {
|
|
1829
1829
|
So(".arc-outer").transition("roll").duration(500).attrTween("transform", () => To("rotate(0)", "rotate(360)"));
|
|
1830
1830
|
}, []), /* @__PURE__ */ l(O, { height: r, position: "relative", width: r, children: [
|
|
1831
1831
|
/* @__PURE__ */ t(O, { height: "100%", padding: r / 3.75, width: "100%", children: a }),
|
|
@@ -1961,7 +1961,7 @@ const Tc = ({
|
|
|
1961
1961
|
showArea: h = !1,
|
|
1962
1962
|
showAverage: d = !1,
|
|
1963
1963
|
showMarkLabel: u = !1,
|
|
1964
|
-
useCustomMark:
|
|
1964
|
+
useCustomMark: g = !1,
|
|
1965
1965
|
valueFormatterString: f = "0,0",
|
|
1966
1966
|
width: m
|
|
1967
1967
|
}) => {
|
|
@@ -2021,7 +2021,7 @@ const Tc = ({
|
|
|
2021
2021
|
/* @__PURE__ */ t(
|
|
2022
2022
|
No,
|
|
2023
2023
|
{
|
|
2024
|
-
slots:
|
|
2024
|
+
slots: g ? {
|
|
2025
2025
|
mark: (N) => /* @__PURE__ */ t(
|
|
2026
2026
|
Pc,
|
|
2027
2027
|
{
|
|
@@ -2080,13 +2080,13 @@ const Tc = ({
|
|
|
2080
2080
|
}
|
|
2081
2081
|
)
|
|
2082
2082
|
] });
|
|
2083
|
-
},
|
|
2083
|
+
}, ot = C.createContext(null), q7 = ({
|
|
2084
2084
|
children: A,
|
|
2085
2085
|
globalStore: e,
|
|
2086
2086
|
onEvent: n,
|
|
2087
2087
|
onPageView: r
|
|
2088
2088
|
}) => /* @__PURE__ */ t(
|
|
2089
|
-
|
|
2089
|
+
ot.Provider,
|
|
2090
2090
|
{
|
|
2091
2091
|
value: {
|
|
2092
2092
|
globalStore: e,
|
|
@@ -2096,7 +2096,7 @@ const Tc = ({
|
|
|
2096
2096
|
},
|
|
2097
2097
|
children: A
|
|
2098
2098
|
}
|
|
2099
|
-
), li =
|
|
2099
|
+
), li = C.createContext(null), di = ({ children: A, availableHeight: e, availableWidth: n }) => /* @__PURE__ */ t(
|
|
2100
2100
|
li.Provider,
|
|
2101
2101
|
{
|
|
2102
2102
|
value: {
|
|
@@ -2107,16 +2107,16 @@ const Tc = ({
|
|
|
2107
2107
|
children: A
|
|
2108
2108
|
}
|
|
2109
2109
|
), qA = (A = "useGlobalStore") => {
|
|
2110
|
-
const e =
|
|
2110
|
+
const e = C.useContext(ot);
|
|
2111
2111
|
if (!e)
|
|
2112
2112
|
throw new Error(`${A}() must be used within the GlobalDataContext`);
|
|
2113
2113
|
return e;
|
|
2114
2114
|
}, TA = () => qA("useAccountStore").globalStore.accountStore, kA = () => qA("useBudgetsStore").globalStore.budgetsStore, tr = () => qA("useCashflowStore").globalStore.cashflowStore, PA = () => qA("useCategoryStore").globalStore.categoryStore, ui = () => qA("useConnectStore").globalStore.connectStore, Rc = () => qA("useDebtsStore").globalStore.debtsStore, nr = () => qA("useGlobalStore").globalStore, fA = () => qA("useGlobalUiStore").globalStore.globalUiStore, I = () => qA("globalCopyStore").globalStore.copyStore.copy, rr = () => qA("useGoalStore").globalStore.goalStore, Hc = () => qA("useMerchantStore").globalStore.merchantStore, zc = () => qA("useNetWorthStore").globalStore.netWorthStore, hi = () => qA("useNotificationStore").globalStore.notificationStore, HA = () => qA("useRecurringActivityStore").globalStore.recurringActivityStore, uA = () => qA("useTransactionStore").globalStore.transactionStore, an = () => qA("useUserStore").globalStore.userStore, V = () => ({ onEvent: qA().onEvent }), k7 = () => ({ onPageView: qA().onPageView }), Bc = (A = "useWidgetContainerContext") => {
|
|
2115
|
-
const e =
|
|
2115
|
+
const e = C.useContext(li);
|
|
2116
2116
|
if (!e)
|
|
2117
2117
|
throw new Error(`${A}() must be used within the WidgetContainerContext`);
|
|
2118
2118
|
return e;
|
|
2119
|
-
},
|
|
2119
|
+
}, Ye = () => Bc(), gi = ({ categoryGuid: A, topLevelCategoryGuid: e }) => {
|
|
2120
2120
|
const { categories: n } = I(), r = _e[A];
|
|
2121
2121
|
return /* @__PURE__ */ l(y, { alignItems: "center", direction: "column", gap: "8", justifyContent: "center", mb: 4, children: [
|
|
2122
2122
|
/* @__PURE__ */ t(
|
|
@@ -2152,14 +2152,14 @@ const Tc = ({
|
|
|
2152
2152
|
const { common: i } = I(), o = re(), s = Ra(null), [c, h] = Ce({ x: r.x, y: r.y });
|
|
2153
2153
|
if (me(() => {
|
|
2154
2154
|
(() => {
|
|
2155
|
-
const
|
|
2156
|
-
if (!
|
|
2157
|
-
const m =
|
|
2155
|
+
const g = s.current, f = a.current;
|
|
2156
|
+
if (!g || !f) return;
|
|
2157
|
+
const m = g.getBoundingClientRect(), v = f.getBoundingClientRect();
|
|
2158
2158
|
let E = r.x, S = r.y;
|
|
2159
2159
|
E + m.width * 2 > v.right ? E = r.x - m.width : E - m.width < v.left && (E = r.x), S + m.height * 2 > v.bottom && (S = r.y - m.height), h({ x: E, y: S });
|
|
2160
2160
|
})();
|
|
2161
2161
|
}, [r, a]), !n) return null;
|
|
2162
|
-
const d = n.reduce((u,
|
|
2162
|
+
const d = n.reduce((u, g) => u + g.y, 0);
|
|
2163
2163
|
return /* @__PURE__ */ t(
|
|
2164
2164
|
ve,
|
|
2165
2165
|
{
|
|
@@ -2178,8 +2178,8 @@ const Tc = ({
|
|
|
2178
2178
|
/* @__PURE__ */ t(wA, { amount: d, bold: !0, formatString: "0,0", variant: "body2" })
|
|
2179
2179
|
] }),
|
|
2180
2180
|
/* @__PURE__ */ t(q, { sx: { my: 16, width: "100%" } }),
|
|
2181
|
-
/* @__PURE__ */ t(vt, { container: !0, children: n.map((u,
|
|
2182
|
-
|
|
2181
|
+
/* @__PURE__ */ t(vt, { container: !0, children: n.map((u, g) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
2182
|
+
g > 0 && g % 3 === 0 && /* @__PURE__ */ t(q, { sx: { my: 16, width: "100%" } }),
|
|
2183
2183
|
/* @__PURE__ */ t(vt, { item: !0, xs: 4, children: /* @__PURE__ */ l(O, { alignItems: "center", display: "flex", flexDirection: "column", children: [
|
|
2184
2184
|
/* @__PURE__ */ t(p, { color: o.palette.text.secondary, variant: "XSmall", children: $(String(u.x), Z.MONTH_SHORT) }),
|
|
2185
2185
|
/* @__PURE__ */ t(
|
|
@@ -2192,7 +2192,7 @@ const Tc = ({
|
|
|
2192
2192
|
}
|
|
2193
2193
|
)
|
|
2194
2194
|
] }) })
|
|
2195
|
-
] },
|
|
2195
|
+
] }, g)) })
|
|
2196
2196
|
] })
|
|
2197
2197
|
}
|
|
2198
2198
|
);
|
|
@@ -2217,7 +2217,7 @@ const Tc = ({
|
|
|
2217
2217
|
}) => {
|
|
2218
2218
|
const { isMobile: i } = MA();
|
|
2219
2219
|
return /* @__PURE__ */ t(y, { direction: "row", flexWrap: "wrap", gap: i ? 2 : 6, justifyContent: "start", sx: A, children: e.map(({ guid: o, top_level_guid: s }) => {
|
|
2220
|
-
const c = n === o, h = Re[o], d = Re[s], u = h ?? d ?? Re.default,
|
|
2220
|
+
const c = n === o, h = Re[o], d = Re[s], u = h ?? d ?? Re.default, g = u + "33";
|
|
2221
2221
|
return /* @__PURE__ */ l(
|
|
2222
2222
|
sA,
|
|
2223
2223
|
{
|
|
@@ -2244,7 +2244,7 @@ const Tc = ({
|
|
|
2244
2244
|
height: 16,
|
|
2245
2245
|
marginRight: i ? 5 : 10,
|
|
2246
2246
|
borderRadius: "2px",
|
|
2247
|
-
backgroundColor: n ? c ? u :
|
|
2247
|
+
backgroundColor: n ? c ? u : g : u
|
|
2248
2248
|
}
|
|
2249
2249
|
}
|
|
2250
2250
|
),
|
|
@@ -2264,7 +2264,7 @@ const Tc = ({
|
|
|
2264
2264
|
height: o,
|
|
2265
2265
|
width: s
|
|
2266
2266
|
}) => {
|
|
2267
|
-
const c = re(), { isMobile: h } = MA(), d =
|
|
2267
|
+
const c = re(), { isMobile: h } = MA(), d = C.useRef(null), [u, g] = C.useState(null), [f, m] = C.useState({
|
|
2268
2268
|
hoveredSeriesId: null,
|
|
2269
2269
|
hoveredAreaData: null,
|
|
2270
2270
|
isAreaHovered: !1,
|
|
@@ -2311,13 +2311,13 @@ const Tc = ({
|
|
|
2311
2311
|
topLevelGuid: EA?.top_level_category_guid
|
|
2312
2312
|
};
|
|
2313
2313
|
}, ge = (K) => {
|
|
2314
|
-
|
|
2314
|
+
g(K), n?.(K ?? "");
|
|
2315
2315
|
}, Xe = (K) => {
|
|
2316
2316
|
r?.(K ?? "");
|
|
2317
|
-
},
|
|
2317
|
+
}, Ze = () => {
|
|
2318
2318
|
const K = $A(String(v)).guid;
|
|
2319
2319
|
K && r?.(K);
|
|
2320
|
-
},
|
|
2320
|
+
}, $e = (K) => {
|
|
2321
2321
|
const hA = String(K?.seriesId), EA = $A(hA).guid, Ee = cA.find((dt) => dt.id === hA), mn = Ee && K?.dataIndex !== void 0, pn = Ee && K?.dataIndex === void 0;
|
|
2322
2322
|
if (mn)
|
|
2323
2323
|
m({
|
|
@@ -2388,8 +2388,8 @@ const Tc = ({
|
|
|
2388
2388
|
{
|
|
2389
2389
|
height: o || 400,
|
|
2390
2390
|
margin: { bottom: 50 },
|
|
2391
|
-
onAreaClick:
|
|
2392
|
-
onHighlightChange:
|
|
2391
|
+
onAreaClick: Ze,
|
|
2392
|
+
onHighlightChange: $e,
|
|
2393
2393
|
series: cA,
|
|
2394
2394
|
skipAnimation: !0,
|
|
2395
2395
|
slotProps: {
|
|
@@ -2493,7 +2493,7 @@ const Tc = ({
|
|
|
2493
2493
|
secondaryColor: h = "primary",
|
|
2494
2494
|
secondaryText: d = "Cancel",
|
|
2495
2495
|
children: u,
|
|
2496
|
-
...
|
|
2496
|
+
...g
|
|
2497
2497
|
}) => {
|
|
2498
2498
|
const f = () => {
|
|
2499
2499
|
i?.(), a();
|
|
@@ -2511,7 +2511,7 @@ const Tc = ({
|
|
|
2511
2511
|
},
|
|
2512
2512
|
height: "100%"
|
|
2513
2513
|
},
|
|
2514
|
-
...
|
|
2514
|
+
...g,
|
|
2515
2515
|
children: [
|
|
2516
2516
|
/* @__PURE__ */ t(
|
|
2517
2517
|
co,
|
|
@@ -2592,7 +2592,7 @@ const Tc = ({
|
|
|
2592
2592
|
primaryText: h,
|
|
2593
2593
|
secondaryColor: d = "secondary",
|
|
2594
2594
|
secondaryText: u,
|
|
2595
|
-
shouldShowHeaderBorders:
|
|
2595
|
+
shouldShowHeaderBorders: g = !0,
|
|
2596
2596
|
shouldShowHeaderShadow: f = !1,
|
|
2597
2597
|
title: m,
|
|
2598
2598
|
...v
|
|
@@ -2618,7 +2618,7 @@ const Tc = ({
|
|
|
2618
2618
|
{
|
|
2619
2619
|
ariaLabelClose: A,
|
|
2620
2620
|
onClose: i,
|
|
2621
|
-
shouldShowBorders:
|
|
2621
|
+
shouldShowBorders: g,
|
|
2622
2622
|
shouldShowShadow: f,
|
|
2623
2623
|
title: m
|
|
2624
2624
|
}
|
|
@@ -2647,7 +2647,7 @@ const Tc = ({
|
|
|
2647
2647
|
toolTipContent: i = "",
|
|
2648
2648
|
variant: o = "outlined"
|
|
2649
2649
|
}) => {
|
|
2650
|
-
const s = CA(), c = s.palette.mode === "dark", { isDesktop: h, isMobile: d } = MA(), [u,
|
|
2650
|
+
const s = CA(), c = s.palette.mode === "dark", { isDesktop: h, isMobile: d } = MA(), [u, g] = C.useState(r), [f, m] = C.useState(n.dateRangePickerCopy.dateRangeThisMonth), [v, E] = C.useState(u), [S, L] = C.useState(!1), [w, D] = C.useState(!0), [P, N] = C.useState(6), x = {
|
|
2651
2651
|
buttons: [
|
|
2652
2652
|
{ label: "3M", value: 3 },
|
|
2653
2653
|
{ label: "6M", value: 6 },
|
|
@@ -2661,9 +2661,9 @@ const Tc = ({
|
|
|
2661
2661
|
{ label: "1 Year", value: 12 }
|
|
2662
2662
|
]
|
|
2663
2663
|
};
|
|
2664
|
-
|
|
2664
|
+
C.useEffect(() => {
|
|
2665
2665
|
E(r);
|
|
2666
|
-
}, [r]),
|
|
2666
|
+
}, [r]), C.useEffect(() => {
|
|
2667
2667
|
(o === "timeframebuttons" || o === "timeframetabs") && A.onRangeChanged(R());
|
|
2668
2668
|
}, [P]);
|
|
2669
2669
|
const R = () => {
|
|
@@ -2679,9 +2679,9 @@ const Tc = ({
|
|
|
2679
2679
|
const vA = Go(gA, rA);
|
|
2680
2680
|
U[0] = Q === "previous" ? de(rA, vA) : pe(rA, vA), U[1] = Q === "previous" ? de(gA, vA) : pe(gA, vA);
|
|
2681
2681
|
}
|
|
2682
|
-
|
|
2682
|
+
g(U), A.onRangeChanged(U);
|
|
2683
2683
|
}, F = () => {
|
|
2684
|
-
|
|
2684
|
+
g(v), D(
|
|
2685
2685
|
f === n.dateRangePickerCopy.dateRangeThisMonth || f === n.dateRangePickerCopy.dateRangeLastMonth
|
|
2686
2686
|
), A.onRangeChanged(v);
|
|
2687
2687
|
}, X = (Q) => {
|
|
@@ -2689,7 +2689,7 @@ const Tc = ({
|
|
|
2689
2689
|
};
|
|
2690
2690
|
return /* @__PURE__ */ l(O, { className: "mx-cmn-date-range-selector", m: 4, children: [
|
|
2691
2691
|
/* @__PURE__ */ t(
|
|
2692
|
-
|
|
2692
|
+
it,
|
|
2693
2693
|
{
|
|
2694
2694
|
id: "select-date",
|
|
2695
2695
|
placement: "bottom",
|
|
@@ -2920,7 +2920,7 @@ const Tc = ({
|
|
|
2920
2920
|
strokeWidth: r
|
|
2921
2921
|
}
|
|
2922
2922
|
),
|
|
2923
|
-
e.map((u,
|
|
2923
|
+
e.map((u, g) => (h += 360 * d + (A ? 1 : 0), d = (u.percent - (A ? 0.3 : 0)) / 100, /* @__PURE__ */ t(
|
|
2924
2924
|
"circle",
|
|
2925
2925
|
{
|
|
2926
2926
|
cx: c,
|
|
@@ -2933,7 +2933,7 @@ const Tc = ({
|
|
|
2933
2933
|
strokeWidth: r,
|
|
2934
2934
|
transform: `rotate(${h}, ${c}, ${c})`
|
|
2935
2935
|
},
|
|
2936
|
-
|
|
2936
|
+
g
|
|
2937
2937
|
)))
|
|
2938
2938
|
] }),
|
|
2939
2939
|
/* @__PURE__ */ t("div", { className: "mx-cmn-multi-segment-donut-children", children: a })
|
|
@@ -3009,7 +3009,7 @@ const Tc = ({
|
|
|
3009
3009
|
]
|
|
3010
3010
|
}
|
|
3011
3011
|
);
|
|
3012
|
-
}, Qc = (A, e) =>
|
|
3012
|
+
}, Qc = (A, e) => C.useMemo(() => {
|
|
3013
3013
|
let n = null;
|
|
3014
3014
|
return (...r) => {
|
|
3015
3015
|
n && clearTimeout(n), n = setTimeout(() => {
|
|
@@ -3018,12 +3018,12 @@ const Tc = ({
|
|
|
3018
3018
|
};
|
|
3019
3019
|
}, [A, e]);
|
|
3020
3020
|
function fi(A = 100) {
|
|
3021
|
-
const [e, n] =
|
|
3021
|
+
const [e, n] = C.useState({
|
|
3022
3022
|
width: 0,
|
|
3023
3023
|
height: 0
|
|
3024
|
-
}), r =
|
|
3024
|
+
}), r = C.useRef(null), a = C.useRef(e), i = Qc((s, c) => {
|
|
3025
3025
|
(s !== a.current.width || c !== a.current.height) && (n({ width: s, height: c }), a.current = { width: s, height: c });
|
|
3026
|
-
}, A), o =
|
|
3026
|
+
}, A), o = C.useCallback(
|
|
3027
3027
|
(s) => {
|
|
3028
3028
|
if (r.current && (r.current.disconnect(), r.current = null), s?.nodeType === Node.ELEMENT_NODE) {
|
|
3029
3029
|
const c = new ResizeObserver(([h]) => {
|
|
@@ -3037,11 +3037,11 @@ function fi(A = 100) {
|
|
|
3037
3037
|
},
|
|
3038
3038
|
[i]
|
|
3039
3039
|
);
|
|
3040
|
-
return
|
|
3040
|
+
return C.useEffect(() => () => {
|
|
3041
3041
|
r.current && r.current.disconnect();
|
|
3042
3042
|
}, []), [o, e];
|
|
3043
3043
|
}
|
|
3044
|
-
const
|
|
3044
|
+
const Ve = ({
|
|
3045
3045
|
className: A = "mx-cmn-mini-widget",
|
|
3046
3046
|
children: e,
|
|
3047
3047
|
onPrimaryCtaClick: n,
|
|
@@ -3084,7 +3084,7 @@ const Ye = ({
|
|
|
3084
3084
|
onAccountsFilterClick: h,
|
|
3085
3085
|
showDividerAboveDateSelector: d = !0,
|
|
3086
3086
|
sx: u = {},
|
|
3087
|
-
title:
|
|
3087
|
+
title: g = ""
|
|
3088
3088
|
}) => {
|
|
3089
3089
|
const [f, { height: m, width: v }] = fi(), { onEvent: E } = V(), { isDesktop: S, isMobile: L, isTablet: w } = MA(), { displayedDateRange: D, selectedAccountGuids: P, setSelectedAccountGuids: N } = fA(), { common: x } = I(), R = () => {
|
|
3090
3090
|
c && (c(), E(k.WIDGET_BACK_CLICK));
|
|
@@ -3198,7 +3198,7 @@ const Ye = ({
|
|
|
3198
3198
|
p: S ? 48 : 24,
|
|
3199
3199
|
pb: 0
|
|
3200
3200
|
},
|
|
3201
|
-
title: S || w ? /* @__PURE__ */ t(Ie, { children:
|
|
3201
|
+
title: S || w ? /* @__PURE__ */ t(Ie, { children: g }) : /* @__PURE__ */ l(y, { alignItems: "center", flexDirection: "row", children: [
|
|
3202
3202
|
L && c && /* @__PURE__ */ t(
|
|
3203
3203
|
KA,
|
|
3204
3204
|
{
|
|
@@ -3208,7 +3208,7 @@ const Ye = ({
|
|
|
3208
3208
|
children: /* @__PURE__ */ t(M, { name: "arrow_back" })
|
|
3209
3209
|
}
|
|
3210
3210
|
),
|
|
3211
|
-
/* @__PURE__ */ t(xt, { children:
|
|
3211
|
+
/* @__PURE__ */ t(xt, { children: g })
|
|
3212
3212
|
] })
|
|
3213
3213
|
}
|
|
3214
3214
|
),
|
|
@@ -3264,10 +3264,10 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3264
3264
|
title: r
|
|
3265
3265
|
}) => {
|
|
3266
3266
|
let a;
|
|
3267
|
-
const { refreshAccounts: i } = TA(), { loadWidget: o } = ui(), { connect: s } = I(), [c, h] =
|
|
3268
|
-
palette: { mode:
|
|
3267
|
+
const { refreshAccounts: i } = TA(), { loadWidget: o } = ui(), { connect: s } = I(), [c, h] = C.useState(!1), [d, u] = C.useState(!1), {
|
|
3268
|
+
palette: { mode: g }
|
|
3269
3269
|
} = CA();
|
|
3270
|
-
return
|
|
3270
|
+
return C.useEffect(() => (n ? (h(!0), o({ mode: g, ...A }).then((f) => {
|
|
3271
3271
|
a = new Qo({
|
|
3272
3272
|
container: `#${jr}`,
|
|
3273
3273
|
style: {
|
|
@@ -3315,9 +3315,9 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3315
3315
|
setHasValidInput: d,
|
|
3316
3316
|
...u
|
|
3317
3317
|
}) => {
|
|
3318
|
-
const [
|
|
3318
|
+
const [g, f] = C.useState(""), { common: m } = I(), v = a || m.currency_input, E = RA(), S = Vc(E), L = /^[0-9]*$/, w = /^(\d)*(\,)?([0-9]{1,2})?$/, D = /^(\d)*(\.)?([0-9]{1,2})?$/;
|
|
3319
3319
|
let P;
|
|
3320
|
-
const N =
|
|
3320
|
+
const N = C.useRef(Wo());
|
|
3321
3321
|
if (A)
|
|
3322
3322
|
switch ($s()) {
|
|
3323
3323
|
case Ft.CAD:
|
|
@@ -3329,7 +3329,7 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3329
3329
|
}
|
|
3330
3330
|
else
|
|
3331
3331
|
P = L;
|
|
3332
|
-
|
|
3332
|
+
C.useEffect(() => {
|
|
3333
3333
|
x(n);
|
|
3334
3334
|
}, [n]);
|
|
3335
3335
|
const x = (R) => {
|
|
@@ -3354,8 +3354,8 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3354
3354
|
},
|
|
3355
3355
|
"aria-label": e || v.enter_amount,
|
|
3356
3356
|
className: `mx-cmn-currency-input ${S}`,
|
|
3357
|
-
error: !!
|
|
3358
|
-
helperText:
|
|
3357
|
+
error: !!g,
|
|
3358
|
+
helperText: g,
|
|
3359
3359
|
inputMode: A ? "decimal" : "numeric",
|
|
3360
3360
|
inputProps: {
|
|
3361
3361
|
noValidate: !0,
|
|
@@ -3387,7 +3387,7 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3387
3387
|
variant: i = "text"
|
|
3388
3388
|
}) => {
|
|
3389
3389
|
const o = CA();
|
|
3390
|
-
return /* @__PURE__ */ l(
|
|
3390
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
3391
3391
|
/* @__PURE__ */ t(
|
|
3392
3392
|
sA,
|
|
3393
3393
|
{
|
|
@@ -3403,7 +3403,7 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3403
3403
|
}
|
|
3404
3404
|
),
|
|
3405
3405
|
/* @__PURE__ */ t(
|
|
3406
|
-
|
|
3406
|
+
it,
|
|
3407
3407
|
{
|
|
3408
3408
|
describeChild: !0,
|
|
3409
3409
|
placement: r,
|
|
@@ -3464,7 +3464,7 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3464
3464
|
pr: 8,
|
|
3465
3465
|
py: 4,
|
|
3466
3466
|
sx: { "&:hover": { borderColor: i.palette.action.active }, ...n },
|
|
3467
|
-
children: /* @__PURE__ */ t(
|
|
3467
|
+
children: /* @__PURE__ */ t(it, { title: r, children: /* @__PURE__ */ t(
|
|
3468
3468
|
On,
|
|
3469
3469
|
{
|
|
3470
3470
|
control: /* @__PURE__ */ t(
|
|
@@ -3552,7 +3552,7 @@ const jr = "connect_widget", Qr = "connections_widget", Yc = ({
|
|
|
3552
3552
|
iconName: e = "info",
|
|
3553
3553
|
title: n
|
|
3554
3554
|
}) => /* @__PURE__ */ t(
|
|
3555
|
-
|
|
3555
|
+
it,
|
|
3556
3556
|
{
|
|
3557
3557
|
title: /* @__PURE__ */ l(y, { gap: 2, p: 12, sx: { textOverflow: "none" }, children: [
|
|
3558
3558
|
/* @__PURE__ */ t(p, { bold: !0, variant: "Body", children: n }),
|
|
@@ -3618,12 +3618,12 @@ class $c {
|
|
|
3618
3618
|
}
|
|
3619
3619
|
class Al {
|
|
3620
3620
|
beats = [];
|
|
3621
|
-
api = new
|
|
3621
|
+
api = new at("/", "");
|
|
3622
3622
|
constructor() {
|
|
3623
3623
|
SA(this);
|
|
3624
3624
|
}
|
|
3625
3625
|
initialize = async (e, n) => {
|
|
3626
|
-
this.api = new
|
|
3626
|
+
this.api = new at(e, n), await this.loadBeats();
|
|
3627
3627
|
};
|
|
3628
3628
|
loadBeats = async () => {
|
|
3629
3629
|
const e = await this.api.getBeats();
|
|
@@ -3818,7 +3818,7 @@ class rl {
|
|
|
3818
3818
|
};
|
|
3819
3819
|
}
|
|
3820
3820
|
const st = () => {
|
|
3821
|
-
if (!
|
|
3821
|
+
if (!C.useContext(ot))
|
|
3822
3822
|
throw new Error("useCashflowUiStore() must be used within the GlobalDataContext");
|
|
3823
3823
|
return tr().uiStore;
|
|
3824
3824
|
}, al = ({ remaining: A }) => {
|
|
@@ -3839,28 +3839,28 @@ const st = () => {
|
|
|
3839
3839
|
/* @__PURE__ */ t(wA, { amount: A, bold: !0, sx: { fontSize: 12 } })
|
|
3840
3840
|
] });
|
|
3841
3841
|
}, ar = T(al), il = ({ onAddIncomeClick: A }) => {
|
|
3842
|
-
const e = CA(), { availableWidth: n } =
|
|
3842
|
+
const e = CA(), { availableWidth: n } = Ye(), { cashAccounts: r, cashBalance: a } = TA(), { selectedAccountGuids: i } = fA(), { cashflow: o } = I(), { userProfile: s } = an(), {
|
|
3843
3843
|
daysUntilNextIncome: c,
|
|
3844
3844
|
expensesTilNextIncome: h,
|
|
3845
3845
|
selectedCashAccounts: d,
|
|
3846
3846
|
setNextIncome: u,
|
|
3847
|
-
setSelectedCashAccounts:
|
|
3847
|
+
setSelectedCashAccounts: g,
|
|
3848
3848
|
setUpcomingExpenses: f
|
|
3849
3849
|
} = st(), { nextIncomeActivity: m, upcomingExpenses: v } = HA();
|
|
3850
|
-
|
|
3851
|
-
|
|
3850
|
+
C.useEffect(() => {
|
|
3851
|
+
g(
|
|
3852
3852
|
r.filter((D) => i.includes(D.guid))
|
|
3853
3853
|
);
|
|
3854
|
-
}, [r, i]),
|
|
3854
|
+
}, [r, i]), C.useEffect(() => {
|
|
3855
3855
|
m && u(m), f(v);
|
|
3856
3856
|
}, [m, v]);
|
|
3857
|
-
const E =
|
|
3857
|
+
const E = C.useMemo(
|
|
3858
3858
|
() => r.filter((D) => i.includes(D.guid)).reduce((D, P) => D + (P?.balance || 0), 0),
|
|
3859
3859
|
[i, v]
|
|
3860
|
-
), S =
|
|
3860
|
+
), S = C.useMemo(
|
|
3861
3861
|
() => h.filter((D) => i.includes(D.accountGuid || "")).reduce((D, P) => D + P.amount, 0),
|
|
3862
3862
|
[i, h]
|
|
3863
|
-
), L =
|
|
3863
|
+
), L = C.useMemo(
|
|
3864
3864
|
() => E - S,
|
|
3865
3865
|
[E, S]
|
|
3866
3866
|
), w = s?.has_completed_cash_flow_onboarding && !!A;
|
|
@@ -3966,7 +3966,7 @@ const st = () => {
|
|
|
3966
3966
|
}, ol = T(il), sl = ({ onPrimaryCtaClick: A, sx: e = {} }) => {
|
|
3967
3967
|
const { cashflow: n } = I();
|
|
3968
3968
|
return /* @__PURE__ */ t(
|
|
3969
|
-
|
|
3969
|
+
Ve,
|
|
3970
3970
|
{
|
|
3971
3971
|
className: "mx-exp-cashflow-miniwidget",
|
|
3972
3972
|
onPrimaryCtaClick: A,
|
|
@@ -4433,7 +4433,7 @@ const cl = [
|
|
|
4433
4433
|
if (/^spl/i.test(o) && (s.has_been_split || s.parent_guid))
|
|
4434
4434
|
return !0;
|
|
4435
4435
|
const h = s.tags.some(
|
|
4436
|
-
(u) => ae(o, e.find((
|
|
4436
|
+
(u) => ae(o, e.find((g) => g.guid === u)?.name)
|
|
4437
4437
|
), d = IA(s.date);
|
|
4438
4438
|
return ae(o, s.payee) || ae(o, s.feed_description) || ae(o, s.category) || ae(o, $(d, Z.MONTH)) || ae(o, $(d, Z.DAY)) || ae(o, $(d, Z.FULL_MONTH_DAY)) || ae(o, $(d, Z.MONTH_DAY_YEAR)) || ae(o, XA(d, qs)) || ae(o, s.account) || ae(o, `${s.amount}`) || ae(o, s.memo) || h;
|
|
4439
4439
|
});
|
|
@@ -4515,7 +4515,7 @@ let yl = class {
|
|
|
4515
4515
|
};
|
|
4516
4516
|
class bl {
|
|
4517
4517
|
api = new Jr("/", "");
|
|
4518
|
-
beatApi = new
|
|
4518
|
+
beatApi = new at("/", "");
|
|
4519
4519
|
globalStore;
|
|
4520
4520
|
uiStore;
|
|
4521
4521
|
isLoading = !0;
|
|
@@ -4533,7 +4533,7 @@ class bl {
|
|
|
4533
4533
|
this.globalStore = e, this.uiStore = new yl(), SA(this);
|
|
4534
4534
|
}
|
|
4535
4535
|
initialize = async (e, n) => {
|
|
4536
|
-
this.api = new Jr(e, n), this.beatApi = new
|
|
4536
|
+
this.api = new Jr(e, n), this.beatApi = new at(e, n), Promise.all([
|
|
4537
4537
|
this.loadAssociatedBeats(yA(/* @__PURE__ */ new Date())),
|
|
4538
4538
|
this.loadTags(),
|
|
4539
4539
|
this.loadTaggings(),
|
|
@@ -4707,7 +4707,7 @@ class bl {
|
|
|
4707
4707
|
};
|
|
4708
4708
|
}
|
|
4709
4709
|
const ZA = () => {
|
|
4710
|
-
if (!
|
|
4710
|
+
if (!C.useContext(ot))
|
|
4711
4711
|
throw new Error("useTransactionsUiStore() must be used within the GlobalDataContext");
|
|
4712
4712
|
return uA().uiStore;
|
|
4713
4713
|
}, vi = (A, e) => {
|
|
@@ -4733,14 +4733,14 @@ const ZA = () => {
|
|
|
4733
4733
|
let e = A.parent_guid ? "Split: " : "";
|
|
4734
4734
|
return e += A.is_hidden ? "(Excluded) " : "", e += A.description, e;
|
|
4735
4735
|
}, Ll = (A, e) => A.tags.map((n) => e.filter((a) => a.guid === n)[0]?.name ?? "").join(" "), Il = ({ transaction: A, onClick: e }) => {
|
|
4736
|
-
const { associatedBeats: n } = uA(), { transactions: r } = I(), { showInsights: a } = ZA(), i = A.transaction_type === jA.CREDIT, o =
|
|
4736
|
+
const { associatedBeats: n } = uA(), { transactions: r } = I(), { showInsights: a } = ZA(), i = A.transaction_type === jA.CREDIT, o = C.useMemo(() => n.find((s) => s.associated_transaction_guid === A.guid), [n, A]);
|
|
4737
4737
|
return /* @__PURE__ */ l(
|
|
4738
4738
|
Zc,
|
|
4739
4739
|
{
|
|
4740
4740
|
clickEventName: B.ON_TRANSACTION_LIST_ITEM_CLICK,
|
|
4741
4741
|
onClick: e ? () => e(A.guid) : void 0,
|
|
4742
4742
|
children: [
|
|
4743
|
-
/* @__PURE__ */ t(OA, { children: A.parent_guid ? /* @__PURE__ */ t(
|
|
4743
|
+
/* @__PURE__ */ t(OA, { children: A.parent_guid ? /* @__PURE__ */ t(C.Fragment, {}) : /* @__PURE__ */ t(
|
|
4744
4744
|
ke,
|
|
4745
4745
|
{
|
|
4746
4746
|
categoryGuid: A.top_level_category_guid || "",
|
|
@@ -4801,23 +4801,23 @@ const ZA = () => {
|
|
|
4801
4801
|
width: o = "100%",
|
|
4802
4802
|
zeroState: s = /* @__PURE__ */ t(Ol, {})
|
|
4803
4803
|
}) => {
|
|
4804
|
-
const { isLoading: c, sortedTransactions: h } = uA(), { setShowInsights: d, toggleSplit: u } = ZA(), { onEvent:
|
|
4804
|
+
const { isLoading: c, sortedTransactions: h } = uA(), { setShowInsights: d, toggleSplit: u } = ZA(), { onEvent: g } = V(), f = (E) => {
|
|
4805
4805
|
const S = h.find((L) => L.guid === E);
|
|
4806
4806
|
if (S?.has_been_split) {
|
|
4807
4807
|
u(S.guid);
|
|
4808
4808
|
return;
|
|
4809
4809
|
}
|
|
4810
|
-
|
|
4810
|
+
g(k.ACCOUNT_DETAILS_CLICK_TRANSACTION, {
|
|
4811
4811
|
account_guid: S?.account_guid,
|
|
4812
4812
|
transaction_guid: E
|
|
4813
4813
|
}), r?.(E);
|
|
4814
|
-
}, m =
|
|
4814
|
+
}, m = C.useRef(null), v = Ga({
|
|
4815
4815
|
count: h.length,
|
|
4816
4816
|
getScrollElement: () => m.current,
|
|
4817
4817
|
estimateSize: (E) => Aa + ($r(E, h) ? ea : 0),
|
|
4818
4818
|
overscan: 5
|
|
4819
4819
|
});
|
|
4820
|
-
return
|
|
4820
|
+
return C.useEffect(() => v.measure(), [h]), C.useEffect(() => d(a), [a]), /* @__PURE__ */ t(nA, { children: /* @__PURE__ */ t(O, { height: e, overflow: "auto", ref: m, width: o, children: /* @__PURE__ */ l(
|
|
4821
4821
|
O,
|
|
4822
4822
|
{
|
|
4823
4823
|
height: (
|
|
@@ -4865,7 +4865,7 @@ const ZA = () => {
|
|
|
4865
4865
|
i && n && /* @__PURE__ */ t(p, { bold: !0, color: "action.active", variant: "XSmall", children: i.short_title })
|
|
4866
4866
|
] });
|
|
4867
4867
|
}, _l = (A) => {
|
|
4868
|
-
const { transactions: e } = I(), [n, r] =
|
|
4868
|
+
const { transactions: e } = I(), [n, r] = C.useState(!1);
|
|
4869
4869
|
return /* @__PURE__ */ l(
|
|
4870
4870
|
y,
|
|
4871
4871
|
{
|
|
@@ -4978,7 +4978,7 @@ const ZA = () => {
|
|
|
4978
4978
|
headerAlign: "right",
|
|
4979
4979
|
sortingOrder: ["asc", "desc"]
|
|
4980
4980
|
}
|
|
4981
|
-
], s =
|
|
4981
|
+
], s = C.useMemo(
|
|
4982
4982
|
() => a.map((h) => ({
|
|
4983
4983
|
id: h.guid,
|
|
4984
4984
|
isHovering: !1,
|
|
@@ -5003,7 +5003,7 @@ const ZA = () => {
|
|
|
5003
5003
|
}
|
|
5004
5004
|
) });
|
|
5005
5005
|
}, kl = T(ql), Fe = () => {
|
|
5006
|
-
if (!
|
|
5006
|
+
if (!C.useContext(ot))
|
|
5007
5007
|
throw new Error("useCategoryUiStore() must be used within the GlobalDataContext");
|
|
5008
5008
|
return PA().uiStore;
|
|
5009
5009
|
}, se = {
|
|
@@ -5027,7 +5027,7 @@ const Gl = ({
|
|
|
5027
5027
|
isOpen: r,
|
|
5028
5028
|
type: a
|
|
5029
5029
|
}) => {
|
|
5030
|
-
const [i, o] =
|
|
5030
|
+
const [i, o] = C.useState(A), { categories: s } = I(), { setShouldDisableDrawerScroll: c } = Fe();
|
|
5031
5031
|
let h = "", d = [];
|
|
5032
5032
|
const u = a === "delete";
|
|
5033
5033
|
switch (a) {
|
|
@@ -5063,7 +5063,7 @@ const Gl = ({
|
|
|
5063
5063
|
{
|
|
5064
5064
|
"aria-label": a === "edit" ? s.edit_subcategory_aria : s.add_subcategory_aria,
|
|
5065
5065
|
name: "modify-subcategory",
|
|
5066
|
-
onChange: (
|
|
5066
|
+
onChange: (g) => o(g.target.value),
|
|
5067
5067
|
placeholder: s.input_placeholder,
|
|
5068
5068
|
sx: { width: "100%" },
|
|
5069
5069
|
value: i
|
|
@@ -5072,7 +5072,7 @@ const Gl = ({
|
|
|
5072
5072
|
}
|
|
5073
5073
|
);
|
|
5074
5074
|
}, cr = T(Gl), Fl = ({ parentCategory: A }) => {
|
|
5075
|
-
const [e, n] =
|
|
5075
|
+
const [e, n] = C.useState(!1), { addCategory: r } = PA(), { categories: a } = I(), { onEvent: i } = V(), { setShouldDisableDrawerScroll: o } = Fe(), s = async (d) => {
|
|
5076
5076
|
await r(d.trim(), A.guid), i(se.ON_SUBCATEGORY_ADDED), n(!1);
|
|
5077
5077
|
}, c = async () => {
|
|
5078
5078
|
i(se.ON_SUBCATEGORY_ADD_CLICK), o(!0), n(!0);
|
|
@@ -5147,7 +5147,7 @@ const Gl = ({
|
|
|
5147
5147
|
showSelected: o,
|
|
5148
5148
|
unselectable: s,
|
|
5149
5149
|
unselectableText: c
|
|
5150
|
-
} = Fe(), { categories: h } = I(), { onEvent: d } = V(), [u,
|
|
5150
|
+
} = Fe(), { categories: h } = I(), { onEvent: d } = V(), [u, g] = C.useState(!1), [f, m] = C.useState(!1), v = !!e.revision, E = e.guid === r, S = !s.some((w) => w === e.guid);
|
|
5151
5151
|
return /* @__PURE__ */ l(
|
|
5152
5152
|
Y,
|
|
5153
5153
|
{
|
|
@@ -5184,7 +5184,7 @@ const Gl = ({
|
|
|
5184
5184
|
{
|
|
5185
5185
|
"aria-label": _(h.edit_subcategory_aria, e.name),
|
|
5186
5186
|
onClick: () => {
|
|
5187
|
-
|
|
5187
|
+
g(!0), i(!0), d(se.ON_SUBCATEGORY_EDIT_CLICK);
|
|
5188
5188
|
},
|
|
5189
5189
|
children: /* @__PURE__ */ t(Es, { color: "secondary" })
|
|
5190
5190
|
}
|
|
@@ -5213,7 +5213,7 @@ const Gl = ({
|
|
|
5213
5213
|
u && /* @__PURE__ */ t(
|
|
5214
5214
|
Ql,
|
|
5215
5215
|
{
|
|
5216
|
-
setShowRename:
|
|
5216
|
+
setShowRename: g,
|
|
5217
5217
|
showRename: u,
|
|
5218
5218
|
subCategory: e
|
|
5219
5219
|
}
|
|
@@ -5237,7 +5237,7 @@ const Gl = ({
|
|
|
5237
5237
|
className: "mx-cat-subcategory-list",
|
|
5238
5238
|
id: `subcategories-${e.guid}`,
|
|
5239
5239
|
children: [
|
|
5240
|
-
A.map((o) => /* @__PURE__ */ l(
|
|
5240
|
+
A.map((o) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
5241
5241
|
/* @__PURE__ */ t(Vl, { parentCategory: e, subCategory: o }),
|
|
5242
5242
|
/* @__PURE__ */ t(q, { sx: { ml: 58 } })
|
|
5243
5243
|
] }, o.guid)),
|
|
@@ -5252,7 +5252,7 @@ const Gl = ({
|
|
|
5252
5252
|
const c = A.guid !== n ? A.guid : null;
|
|
5253
5253
|
a(c), i(c ? se.ON_CATEGORY_EXPANDED : se.ON_CATEGORY_COLLAPSED);
|
|
5254
5254
|
};
|
|
5255
|
-
return /* @__PURE__ */ l(
|
|
5255
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
5256
5256
|
/* @__PURE__ */ t(Y, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ l(
|
|
5257
5257
|
dA,
|
|
5258
5258
|
{
|
|
@@ -5315,17 +5315,17 @@ const Gl = ({
|
|
|
5315
5315
|
searchValue: h,
|
|
5316
5316
|
setOnSelect: d,
|
|
5317
5317
|
setSearchValue: u,
|
|
5318
|
-
setSelectedGuid:
|
|
5318
|
+
setSelectedGuid: g,
|
|
5319
5319
|
setShowSelected: f,
|
|
5320
5320
|
setUnselectable: m,
|
|
5321
5321
|
setUnselectableText: v
|
|
5322
5322
|
} = Fe();
|
|
5323
|
-
return
|
|
5323
|
+
return C.useEffect(() => {
|
|
5324
5324
|
e && d(e);
|
|
5325
|
-
}),
|
|
5325
|
+
}), C.useEffect(() => {
|
|
5326
5326
|
o.length || s();
|
|
5327
|
-
}, []),
|
|
5328
|
-
A &&
|
|
5327
|
+
}, []), C.useEffect(() => {
|
|
5328
|
+
A && g(A), f(n), m(r), v(a);
|
|
5329
5329
|
}, [A, n, r, a]), /* @__PURE__ */ l("div", { className: `mx-cat-category-selector ${i}`, children: [
|
|
5330
5330
|
/* @__PURE__ */ t(
|
|
5331
5331
|
cn,
|
|
@@ -5371,16 +5371,16 @@ const Gl = ({
|
|
|
5371
5371
|
A.filter((a) => a.parent_guid === r.guid)
|
|
5372
5372
|
)
|
|
5373
5373
|
), yi = (A, e, n, r = []) => {
|
|
5374
|
-
const a = A.guid, i = A.parent_guid || a, o = a === i, s = e.find((
|
|
5375
|
-
n.filter((
|
|
5374
|
+
const a = A.guid, i = A.parent_guid || a, o = a === i, s = e.find((g) => g.category_guid === a)?.total || 0, c = ra(
|
|
5375
|
+
n.filter((g) => g.category_guid === a)
|
|
5376
5376
|
), h = ra(
|
|
5377
5377
|
n.filter(
|
|
5378
|
-
(
|
|
5378
|
+
(g) => g.category_guid === a || g.top_level_category_guid === a
|
|
5379
5379
|
)
|
|
5380
5380
|
), d = r.map(
|
|
5381
|
-
(
|
|
5381
|
+
(g) => yi(g, e, n)
|
|
5382
5382
|
), u = d.reduce(
|
|
5383
|
-
(
|
|
5383
|
+
(g, f) => g + f.currentAmount,
|
|
5384
5384
|
s
|
|
5385
5385
|
);
|
|
5386
5386
|
return {
|
|
@@ -5558,7 +5558,7 @@ class cd {
|
|
|
5558
5558
|
};
|
|
5559
5559
|
}
|
|
5560
5560
|
const bi = ({ transaction: A }) => {
|
|
5561
|
-
const { addOrUpdateTransactionRule: e, updateTransaction: n } = uA(), { categories: r } = PA(), { onEvent: a } = V(), { setShouldDisableDrawerScroll: i, updateManualTransaction: o } = ZA(), { transactions: s } = I(), [c, h] =
|
|
5561
|
+
const { addOrUpdateTransactionRule: e, updateTransaction: n } = uA(), { categories: r } = PA(), { onEvent: a } = V(), { setShouldDisableDrawerScroll: i, updateManualTransaction: o } = ZA(), { transactions: s } = I(), [c, h] = C.useState(!1), [d, u] = C.useState(""), g = async (E) => {
|
|
5562
5562
|
await n({ ...A, category_guid: d }), E && await e(d, A), u(""), a(k.TRANSACTION_DETAILS_CLICK_CATEGORY, {
|
|
5563
5563
|
transaction_guid: A.guid
|
|
5564
5564
|
});
|
|
@@ -5576,11 +5576,11 @@ const bi = ({ transaction: A }) => {
|
|
|
5576
5576
|
m();
|
|
5577
5577
|
}, m = () => {
|
|
5578
5578
|
h(!1), i(!1);
|
|
5579
|
-
}, v =
|
|
5579
|
+
}, v = C.useMemo(
|
|
5580
5580
|
() => r.find((E) => E.guid === d),
|
|
5581
5581
|
[d]
|
|
5582
5582
|
);
|
|
5583
|
-
return /* @__PURE__ */ l(
|
|
5583
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
5584
5584
|
/* @__PURE__ */ t(Y, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ l(
|
|
5585
5585
|
dA,
|
|
5586
5586
|
{
|
|
@@ -5630,8 +5630,8 @@ const bi = ({ transaction: A }) => {
|
|
|
5630
5630
|
},
|
|
5631
5631
|
isOpen: !!d,
|
|
5632
5632
|
onClose: () => u(""),
|
|
5633
|
-
onPrimaryAction: () =>
|
|
5634
|
-
onSecondaryAction: () =>
|
|
5633
|
+
onPrimaryAction: () => g(!0),
|
|
5634
|
+
onSecondaryAction: () => g(!1),
|
|
5635
5635
|
primaryText: s.actions_apply_to_all,
|
|
5636
5636
|
secondaryText: s.actions_this_time_only,
|
|
5637
5637
|
children: /* @__PURE__ */ t(p, { children: _(
|
|
@@ -5643,9 +5643,9 @@ const bi = ({ transaction: A }) => {
|
|
|
5643
5643
|
)
|
|
5644
5644
|
] });
|
|
5645
5645
|
}, wi = ({ transaction: A }) => {
|
|
5646
|
-
const e = RA(), { onEvent: n } = V(), { updateTransaction: r } = uA(), { updateManualTransaction: a } = ZA(), { common: i, transactions: o } = I(), [s, c] =
|
|
5646
|
+
const e = RA(), { onEvent: n } = V(), { updateTransaction: r } = uA(), { updateManualTransaction: a } = ZA(), { common: i, transactions: o } = I(), [s, c] = C.useState(!1), [h, d] = C.useState(A.date), u = (f) => {
|
|
5647
5647
|
d(mA(f));
|
|
5648
|
-
},
|
|
5648
|
+
}, g = async () => {
|
|
5649
5649
|
if (A.is_manual && !A.guid) {
|
|
5650
5650
|
a({ ...A, date: h }), c(!1);
|
|
5651
5651
|
return;
|
|
@@ -5679,7 +5679,7 @@ const bi = ({ transaction: A }) => {
|
|
|
5679
5679
|
ariaLabelClose: i.close_aria,
|
|
5680
5680
|
isOpen: s,
|
|
5681
5681
|
onClose: () => c(!1),
|
|
5682
|
-
onPrimaryAction:
|
|
5682
|
+
onPrimaryAction: g,
|
|
5683
5683
|
primaryText: i.save_button,
|
|
5684
5684
|
secondaryText: i.cancel_button,
|
|
5685
5685
|
title: o.date_edit_title,
|
|
@@ -5700,7 +5700,7 @@ const bi = ({ transaction: A }) => {
|
|
|
5700
5700
|
)
|
|
5701
5701
|
] });
|
|
5702
5702
|
}, ld = ({ transaction: A }) => {
|
|
5703
|
-
const { onEvent: e } = V(), { removeTransaction: n } = uA(), { setShouldDisableDrawerScroll: r } = ZA(), { common: a, transactions: i } = I(), [o, s] =
|
|
5703
|
+
const { onEvent: e } = V(), { removeTransaction: n } = uA(), { setShouldDisableDrawerScroll: r } = ZA(), { common: a, transactions: i } = I(), [o, s] = C.useState(!1), c = async () => {
|
|
5704
5704
|
await n(A.guid), e(B.ON_TRANSACTION_DELETE_DELETED);
|
|
5705
5705
|
};
|
|
5706
5706
|
return /* @__PURE__ */ l(O, { className: "mx-txn-delete", children: [
|
|
@@ -5740,7 +5740,7 @@ const bi = ({ transaction: A }) => {
|
|
|
5740
5740
|
)
|
|
5741
5741
|
] });
|
|
5742
5742
|
}, dd = T(ld), ud = ({ transaction: A }) => {
|
|
5743
|
-
const { onEvent: e } = V(), { updateTransaction: n } = uA(), { setShouldDisableDrawerScroll: r } = ZA(), { common: a, transactions: i } = I(), [o, s] =
|
|
5743
|
+
const { onEvent: e } = V(), { updateTransaction: n } = uA(), { setShouldDisableDrawerScroll: r } = ZA(), { common: a, transactions: i } = I(), [o, s] = C.useState(!1), c = async () => {
|
|
5744
5744
|
await n({ ...A, merchant_guid: "" }), e(k.TRANSACTION_DETAILS_CLICK_DELETE_LOGO, {
|
|
5745
5745
|
transaction_guid: A.guid
|
|
5746
5746
|
});
|
|
@@ -5780,7 +5780,7 @@ const bi = ({ transaction: A }) => {
|
|
|
5780
5780
|
)
|
|
5781
5781
|
] });
|
|
5782
5782
|
}, hd = T(ud), gd = ({ transaction: A }) => {
|
|
5783
|
-
const { onEvent: e } = V(), { updateTransaction: n } = uA(), { setShouldDisableDrawerScroll: r } = ZA(), { common: a, transactions: i } = I(), [o, s] =
|
|
5783
|
+
const { onEvent: e } = V(), { updateTransaction: n } = uA(), { setShouldDisableDrawerScroll: r } = ZA(), { common: a, transactions: i } = I(), [o, s] = C.useState(!1), c = A.is_hidden, h = async () => {
|
|
5784
5784
|
await n({ ...A, is_hidden: !A.is_hidden }), e(
|
|
5785
5785
|
c ? B.ON_TRANSACTION_UNHIDDEN : B.ON_TRANSACTION_HIDDEN
|
|
5786
5786
|
);
|
|
@@ -5869,8 +5869,8 @@ const bi = ({ transaction: A }) => {
|
|
|
5869
5869
|
] })
|
|
5870
5870
|
] });
|
|
5871
5871
|
}, fd = ({ transaction: A }) => {
|
|
5872
|
-
const { onEvent: e } = V(), { updateTransaction: n } = uA(), { updateManualTransaction: r } = ZA(), { common: a, transactions: i } = I(), [o, s] =
|
|
5873
|
-
|
|
5872
|
+
const { onEvent: e } = V(), { updateTransaction: n } = uA(), { updateManualTransaction: r } = ZA(), { common: a, transactions: i } = I(), [o, s] = C.useState(!1), [c, h] = C.useState("");
|
|
5873
|
+
C.useEffect(() => {
|
|
5874
5874
|
o && h(A.memo ? A.memo : "");
|
|
5875
5875
|
}, [o]);
|
|
5876
5876
|
const d = async () => {
|
|
@@ -5936,7 +5936,7 @@ const bi = ({ transaction: A }) => {
|
|
|
5936
5936
|
onUpdateAmount: r,
|
|
5937
5937
|
split: a
|
|
5938
5938
|
}) => {
|
|
5939
|
-
const i = RA(), { onEvent: o } = V(), { transactions: s } = I(), [c, h] =
|
|
5939
|
+
const i = RA(), { onEvent: o } = V(), { transactions: s } = I(), [c, h] = C.useState(`${a.amount}`), [d, u] = C.useState(!1), g = A === 0, f = (m) => {
|
|
5940
5940
|
isNaN(Number(m)) || (h(m), r(A, Number(m)));
|
|
5941
5941
|
};
|
|
5942
5942
|
return /* @__PURE__ */ l(
|
|
@@ -5947,7 +5947,7 @@ const bi = ({ transaction: A }) => {
|
|
|
5947
5947
|
pb: i.Spacing.Tiny,
|
|
5948
5948
|
px: i.Spacing.XSmall,
|
|
5949
5949
|
children: [
|
|
5950
|
-
/* @__PURE__ */ l(vt, { alignItems:
|
|
5950
|
+
/* @__PURE__ */ l(vt, { alignItems: g ? "center" : "start", container: !0, children: [
|
|
5951
5951
|
/* @__PURE__ */ t(vt, { item: !0, xs: 7, children: /* @__PURE__ */ l(y, { alignItems: "start", children: [
|
|
5952
5952
|
/* @__PURE__ */ t(
|
|
5953
5953
|
sA,
|
|
@@ -5973,7 +5973,7 @@ const bi = ({ transaction: A }) => {
|
|
|
5973
5973
|
}
|
|
5974
5974
|
) })
|
|
5975
5975
|
] }) }),
|
|
5976
|
-
/* @__PURE__ */ t(vt, { item: !0, xs: 5, children:
|
|
5976
|
+
/* @__PURE__ */ t(vt, { item: !0, xs: 5, children: g ? /* @__PURE__ */ t("div", { className: "mx-txn-split-manager-row-top-container", children: /* @__PURE__ */ t(p, { children: z(a.amount, "0,0.00") }) }) : /* @__PURE__ */ l(y, { alignItems: "start", children: [
|
|
5977
5977
|
/* @__PURE__ */ l(y, { alignItems: "start", direction: "row", gap: i.Spacing.XSmall, children: [
|
|
5978
5978
|
/* @__PURE__ */ t(
|
|
5979
5979
|
sn,
|
|
@@ -6038,8 +6038,8 @@ const bi = ({ transaction: A }) => {
|
|
|
6038
6038
|
splits: a,
|
|
6039
6039
|
transaction: i
|
|
6040
6040
|
}) => {
|
|
6041
|
-
const o = RA(), { transactions: s } = I(), { onEvent: c } = V(), [h, d] =
|
|
6042
|
-
return
|
|
6041
|
+
const o = RA(), { transactions: s } = I(), { onEvent: c } = V(), [h, d] = C.useState("");
|
|
6042
|
+
return C.useEffect(() => {
|
|
6043
6043
|
d(a.length <= 1 ? s.split_transaction_errors_min_splits : ""), d(
|
|
6044
6044
|
a[0].amount < 0 ? _(
|
|
6045
6045
|
s.split_transaction_errors_totals_must_equal_amount,
|
|
@@ -6047,16 +6047,16 @@ const bi = ({ transaction: A }) => {
|
|
|
6047
6047
|
) : ""
|
|
6048
6048
|
);
|
|
6049
6049
|
}, [a]), /* @__PURE__ */ l(O, { className: "mx-txn-split-manager", children: [
|
|
6050
|
-
a.map((u,
|
|
6050
|
+
a.map((u, g) => /* @__PURE__ */ t(
|
|
6051
6051
|
pd,
|
|
6052
6052
|
{
|
|
6053
|
-
index:
|
|
6053
|
+
index: g,
|
|
6054
6054
|
onCategoryChanged: e,
|
|
6055
6055
|
onDeleteRow: n,
|
|
6056
6056
|
onUpdateAmount: r,
|
|
6057
6057
|
split: u
|
|
6058
6058
|
},
|
|
6059
|
-
|
|
6059
|
+
g
|
|
6060
6060
|
)),
|
|
6061
6061
|
h && /* @__PURE__ */ l(
|
|
6062
6062
|
y,
|
|
@@ -6098,7 +6098,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6098
6098
|
has_been_split: !1,
|
|
6099
6099
|
parent_guid: A.guid,
|
|
6100
6100
|
top_level_category_guid: void 0
|
|
6101
|
-
}, [d, u] =
|
|
6101
|
+
}, [d, u] = C.useState(!1), [g, f] = C.useState(!1), [m, v] = C.useState([]), E = () => {
|
|
6102
6102
|
const j = [...m];
|
|
6103
6103
|
j.push({ ...h }), j[0].amount -= 1, v(j);
|
|
6104
6104
|
}, S = (j) => {
|
|
@@ -6138,11 +6138,11 @@ const bi = ({ transaction: A }) => {
|
|
|
6138
6138
|
});
|
|
6139
6139
|
const j = A.parent_guid ?? A.guid;
|
|
6140
6140
|
await r(j);
|
|
6141
|
-
}, R =
|
|
6141
|
+
}, R = C.useMemo(() => {
|
|
6142
6142
|
const j = m.some((X) => !X.category_guid), F = m.some((X) => X.amount <= 0);
|
|
6143
6143
|
return j || F;
|
|
6144
6144
|
}, [m]);
|
|
6145
|
-
return /* @__PURE__ */ l(
|
|
6145
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
6146
6146
|
A && /* @__PURE__ */ t(Y, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ l(dA, { onClick: D, children: [
|
|
6147
6147
|
/* @__PURE__ */ t(OA, { children: /* @__PURE__ */ t(xe, { sx: { bgcolor: "border.light" }, variant: "rounded", children: /* @__PURE__ */ t(M, { name: "call_split", sx: { color: "text.primary" }, weight: FA.Dark }) }) }),
|
|
6148
6148
|
/* @__PURE__ */ t(
|
|
@@ -6185,7 +6185,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6185
6185
|
DA,
|
|
6186
6186
|
{
|
|
6187
6187
|
copy: { title: i.split_transaction_unsplit_title },
|
|
6188
|
-
isOpen:
|
|
6188
|
+
isOpen: g,
|
|
6189
6189
|
onClose: () => {
|
|
6190
6190
|
o(!1), f(!1);
|
|
6191
6191
|
},
|
|
@@ -6203,18 +6203,18 @@ const bi = ({ transaction: A }) => {
|
|
|
6203
6203
|
)
|
|
6204
6204
|
] });
|
|
6205
6205
|
}, bd = T(yd), wd = () => {
|
|
6206
|
-
const A = CA(), { onEvent: e } = V(), { addTag: n } = uA(), { transactions: r } = I(), [a, i] =
|
|
6207
|
-
|
|
6206
|
+
const A = CA(), { onEvent: e } = V(), { addTag: n } = uA(), { transactions: r } = I(), [a, i] = C.useState(!1), [o, s] = C.useState(""), [c, h] = C.useState(""), d = C.useRef(null);
|
|
6207
|
+
C.useEffect(() => {
|
|
6208
6208
|
a && d?.current?.focus();
|
|
6209
6209
|
}, [a]);
|
|
6210
6210
|
const u = () => {
|
|
6211
6211
|
e(
|
|
6212
6212
|
a ? B.ON_TRANSACTION_TAGS_TAG_ADD_CANCEL_CLICK : B.ON_TRANSACTION_TAGS_TAG_ADD_CLICK
|
|
6213
6213
|
), a || s(""), i(!a);
|
|
6214
|
-
},
|
|
6214
|
+
}, g = async () => {
|
|
6215
6215
|
e(B.ON_TRANSACTION_TAGS_TAG_ADDED), await n(o), i(!1);
|
|
6216
6216
|
};
|
|
6217
|
-
return
|
|
6217
|
+
return C.useEffect(() => {
|
|
6218
6218
|
h(o.length > 40 ? r.tags_error_name_must_be_40_chars : "");
|
|
6219
6219
|
}, [o]), /* @__PURE__ */ l(O, { className: "mx-txn-tag-manager-header", children: [
|
|
6220
6220
|
/* @__PURE__ */ l(
|
|
@@ -6246,7 +6246,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6246
6246
|
copy: { title: r.tags_add_tag_btn },
|
|
6247
6247
|
isOpen: a,
|
|
6248
6248
|
onClose: () => i(!1),
|
|
6249
|
-
onPrimaryAction:
|
|
6249
|
+
onPrimaryAction: g,
|
|
6250
6250
|
onSecondaryAction: () => i(!1),
|
|
6251
6251
|
children: [
|
|
6252
6252
|
/* @__PURE__ */ t(
|
|
@@ -6290,14 +6290,14 @@ const bi = ({ transaction: A }) => {
|
|
|
6290
6290
|
}
|
|
6291
6291
|
) });
|
|
6292
6292
|
}, Ld = T(Td), Id = ({ onTagChecked: A, selectedTags: e, tag: n }) => {
|
|
6293
|
-
const { onEvent: r } = V(), { removeTag: a, updateTag: i } = uA(), { common: o, transactions: s } = I(), [c, h] =
|
|
6294
|
-
r(B.ON_TRANSACTION_TAGS_TAG_EDIT_SAVED), n && await i({ ...n, name:
|
|
6293
|
+
const { onEvent: r } = V(), { removeTag: a, updateTag: i } = uA(), { common: o, transactions: s } = I(), [c, h] = C.useState(!1), [d, u] = C.useState(!1), [g, f] = C.useState(""), [m, v] = C.useState(""), E = async () => {
|
|
6294
|
+
r(B.ON_TRANSACTION_TAGS_TAG_EDIT_SAVED), n && await i({ ...n, name: g }), h(!1);
|
|
6295
6295
|
}, S = async () => {
|
|
6296
6296
|
r(B.ON_TRANSACTION_TAGS_TAG_DELETED), await a(n.guid), u(!1);
|
|
6297
6297
|
};
|
|
6298
|
-
|
|
6299
|
-
v(
|
|
6300
|
-
}, [
|
|
6298
|
+
C.useEffect(() => {
|
|
6299
|
+
v(g.length > 40 ? s.tags_error_name_must_be_40_chars : "");
|
|
6300
|
+
}, [g]);
|
|
6301
6301
|
const L = () => {
|
|
6302
6302
|
r(B.ON_TRANSACTION_TAGS_TAG_EDIT_CLICK), f(n.name), h(!0);
|
|
6303
6303
|
}, w = () => {
|
|
@@ -6360,7 +6360,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6360
6360
|
onChange: (D) => f(D.target.value),
|
|
6361
6361
|
placeholder: "Tag name",
|
|
6362
6362
|
sx: { width: "100%" },
|
|
6363
|
-
value:
|
|
6363
|
+
value: g
|
|
6364
6364
|
}
|
|
6365
6365
|
),
|
|
6366
6366
|
/* @__PURE__ */ t(zA, { id: "update-tag-error", sx: { color: "error.main" }, variant: "ParagraphSmall", children: m })
|
|
@@ -6384,7 +6384,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6384
6384
|
}
|
|
6385
6385
|
);
|
|
6386
6386
|
}, Dd = T(Id), Od = ({ selectedTags: A, onTagChecked: e }) => {
|
|
6387
|
-
const { tags: n } = uA(), [r, a] =
|
|
6387
|
+
const { tags: n } = uA(), [r, a] = C.useState(""), i = n.filter(
|
|
6388
6388
|
(o) => o.name.toLowerCase().includes(r.toLowerCase())
|
|
6389
6389
|
);
|
|
6390
6390
|
return /* @__PURE__ */ l("div", { className: "mx-txn-tag-manager", children: [
|
|
@@ -6396,17 +6396,17 @@ const bi = ({ transaction: A }) => {
|
|
|
6396
6396
|
}
|
|
6397
6397
|
),
|
|
6398
6398
|
/* @__PURE__ */ t(Sd, {}),
|
|
6399
|
-
/* @__PURE__ */ t(fe, { sx: { boxShadow: "none" }, children: /* @__PURE__ */ t(nA, { children: i.map((o) => /* @__PURE__ */ l(
|
|
6399
|
+
/* @__PURE__ */ t(fe, { sx: { boxShadow: "none" }, children: /* @__PURE__ */ t(nA, { children: i.map((o) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
6400
6400
|
/* @__PURE__ */ t(Dd, { onTagChecked: e, selectedTags: A, tag: o }),
|
|
6401
6401
|
/* @__PURE__ */ t(q, { sx: { ml: 24 } })
|
|
6402
6402
|
] }, o.guid)) }) })
|
|
6403
6403
|
] });
|
|
6404
6404
|
}, xd = T(Od), Pd = ({ transaction: A }) => {
|
|
6405
|
-
const { onEvent: e } = V(), { tags: n, updateTaggings: r, updateTransaction: a } = uA(), { common: i, transactions: o } = I(), { updateManualTransaction: s } = ZA(), [c, h] =
|
|
6406
|
-
|
|
6405
|
+
const { onEvent: e } = V(), { tags: n, updateTaggings: r, updateTransaction: a } = uA(), { common: i, transactions: o } = I(), { updateManualTransaction: s } = ZA(), [c, h] = C.useState(!1), [d, u] = C.useState(A.tags);
|
|
6406
|
+
C.useEffect(() => {
|
|
6407
6407
|
u(A.tags);
|
|
6408
6408
|
}, [c, A]);
|
|
6409
|
-
const
|
|
6409
|
+
const g = (v) => {
|
|
6410
6410
|
const E = [...d], S = d.indexOf(v);
|
|
6411
6411
|
S >= 0 ? E.splice(S, 1) : E.push(v), u(E);
|
|
6412
6412
|
}, f = async () => {
|
|
@@ -6415,13 +6415,13 @@ const bi = ({ transaction: A }) => {
|
|
|
6415
6415
|
return;
|
|
6416
6416
|
}
|
|
6417
6417
|
await r(d, A.guid), await a({ ...A }), e(k.TRANSACTION_DETAILS_CLICK_TAGS, { transaction_guid: A.guid }), h(!1);
|
|
6418
|
-
}, m =
|
|
6418
|
+
}, m = C.useMemo(
|
|
6419
6419
|
() => A.tags.map(
|
|
6420
6420
|
(v, E, S) => `${n.find((L) => L.guid === v)?.name}${E < S.length - 1 ? " / " : ""}`
|
|
6421
6421
|
),
|
|
6422
6422
|
[n, A]
|
|
6423
6423
|
);
|
|
6424
|
-
return /* @__PURE__ */ l(
|
|
6424
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
6425
6425
|
/* @__PURE__ */ t(Y, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ l(
|
|
6426
6426
|
dA,
|
|
6427
6427
|
{
|
|
@@ -6452,13 +6452,13 @@ const bi = ({ transaction: A }) => {
|
|
|
6452
6452
|
primaryText: i.save_button,
|
|
6453
6453
|
secondaryText: i.cancel_button,
|
|
6454
6454
|
title: o.tags_title,
|
|
6455
|
-
children: /* @__PURE__ */ t(xd, { onTagChecked:
|
|
6455
|
+
children: /* @__PURE__ */ t(xd, { onTagChecked: g, selectedTags: d })
|
|
6456
6456
|
}
|
|
6457
6457
|
)
|
|
6458
6458
|
] });
|
|
6459
6459
|
}, Li = T(Pd), Nd = ({ transaction: A }) => {
|
|
6460
|
-
const { updateTransaction: e } = uA(), { common: n, transactions: r } = I(), { onEvent: a } = V(), [i, o] =
|
|
6461
|
-
|
|
6460
|
+
const { updateTransaction: e } = uA(), { common: n, transactions: r } = I(), { onEvent: a } = V(), [i, o] = C.useState(!1), [s, c] = C.useState(""), h = C.useRef(null);
|
|
6461
|
+
C.useEffect(() => {
|
|
6462
6462
|
i && (c(A.description), h?.current?.focus());
|
|
6463
6463
|
}, [i]);
|
|
6464
6464
|
const d = async () => {
|
|
@@ -6545,7 +6545,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6545
6545
|
transaction: n
|
|
6546
6546
|
}) => {
|
|
6547
6547
|
const r = RA(), a = n?.number && n.number.length > 4, { onEvent: i } = V();
|
|
6548
|
-
return
|
|
6548
|
+
return C.useEffect(
|
|
6549
6549
|
() => i(k.TRANSACTION_DETAILS_VIEW, { transaction_guid: n.guid }),
|
|
6550
6550
|
[]
|
|
6551
6551
|
), /* @__PURE__ */ t(O, { className: "mx-txn-transaction-details", width: "100%", children: n && /* @__PURE__ */ l(y, { children: [
|
|
@@ -6581,7 +6581,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6581
6581
|
}
|
|
6582
6582
|
)
|
|
6583
6583
|
] }),
|
|
6584
|
-
/* @__PURE__ */ t(fe, { square: !0, sx: { boxShadow: "none" }, children: /* @__PURE__ */ t(nA, { children: e.map((o, s) => /* @__PURE__ */ l(
|
|
6584
|
+
/* @__PURE__ */ t(fe, { square: !0, sx: { boxShadow: "none" }, children: /* @__PURE__ */ t(nA, { children: e.map((o, s) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
6585
6585
|
o === ft.Category && /* @__PURE__ */ t(bi, { transaction: n }),
|
|
6586
6586
|
o === ft.Date && /* @__PURE__ */ t(wi, { transaction: n }),
|
|
6587
6587
|
o === ft.Memo && /* @__PURE__ */ t(Ti, { transaction: n }),
|
|
@@ -6590,7 +6590,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6590
6590
|
] }, o)) }) }),
|
|
6591
6591
|
/* @__PURE__ */ t(p, { bold: !0, mb: 8, ml: 26, mt: 16, variant: "Body", children: "Actions" }),
|
|
6592
6592
|
/* @__PURE__ */ t(fe, { square: !0, sx: { boxShadow: "none" }, children: /* @__PURE__ */ l(nA, { children: [
|
|
6593
|
-
A.map((o, s) => /* @__PURE__ */ l(
|
|
6593
|
+
A.map((o, s) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
6594
6594
|
o === Bt.SplitTransaction && /* @__PURE__ */ t(bd, { transaction: n }),
|
|
6595
6595
|
o === Bt.HideTransaction && /* @__PURE__ */ t(Cd, { transaction: n }),
|
|
6596
6596
|
o === Bt.MerchantLogo && /* @__PURE__ */ t(hd, { transaction: n }),
|
|
@@ -6619,7 +6619,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6619
6619
|
}
|
|
6620
6620
|
);
|
|
6621
6621
|
}, Bd = T(zd), Kd = () => {
|
|
6622
|
-
const { selectedAccounts: A } = fA(), { common: e, transactions: n } = I(), { manualTransaction: r, setIsAmountValid: a, updateManualTransaction: i } = ZA(), [o, s] =
|
|
6622
|
+
const { selectedAccounts: A } = fA(), { common: e, transactions: n } = I(), { manualTransaction: r, setIsAmountValid: a, updateManualTransaction: i } = ZA(), [o, s] = C.useState(""), [c, h] = C.useState(""), d = C.useMemo(
|
|
6623
6623
|
() => A.filter((E) => E.is_manual),
|
|
6624
6624
|
[A]
|
|
6625
6625
|
).map((E) => ({
|
|
@@ -6630,7 +6630,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6630
6630
|
error_amount_must_be_equal_to: e.currency_input.error_amount_must_be_equal_to,
|
|
6631
6631
|
error_amount_must_be_less_than_or_equal_to: e.currency_input.error_amount_must_be_less_than_or_equal_to,
|
|
6632
6632
|
enter_amount: e.currency_input.enter_amount
|
|
6633
|
-
},
|
|
6633
|
+
}, g = (E) => {
|
|
6634
6634
|
s(E), i({ ...r, amount: Number(E) });
|
|
6635
6635
|
}, f = (E, S) => {
|
|
6636
6636
|
i({ ...r, transaction_type: Number(S) });
|
|
@@ -6655,7 +6655,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6655
6655
|
ariaLabel: n.amount_title,
|
|
6656
6656
|
copy: u,
|
|
6657
6657
|
label: n.amount_title,
|
|
6658
|
-
setAmount:
|
|
6658
|
+
setAmount: g,
|
|
6659
6659
|
setHasValidInput: a,
|
|
6660
6660
|
sx: { bgcolor: "background.paper" }
|
|
6661
6661
|
}
|
|
@@ -6717,7 +6717,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6717
6717
|
] })
|
|
6718
6718
|
] });
|
|
6719
6719
|
}, qd = T(Kd), kd = ({ onClose: A, transaction: e }) => {
|
|
6720
|
-
const { addOrUpdateTransactionRule: n, updateTransaction: r } = uA(), { transactions: a } = I(), { categories: i } = PA(), [o, s] =
|
|
6720
|
+
const { addOrUpdateTransactionRule: n, updateTransaction: r } = uA(), { transactions: a } = I(), { categories: i } = PA(), [o, s] = C.useState(""), c = C.useMemo(
|
|
6721
6721
|
() => i.find((d) => d.guid === o),
|
|
6722
6722
|
[o]
|
|
6723
6723
|
), h = async (d) => {
|
|
@@ -6769,7 +6769,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6769
6769
|
searchValue: h,
|
|
6770
6770
|
setSearchValue: d,
|
|
6771
6771
|
setShowInsights: u,
|
|
6772
|
-
updateManualTransaction:
|
|
6772
|
+
updateManualTransaction: g
|
|
6773
6773
|
} = ZA(), {
|
|
6774
6774
|
addTransaction: f,
|
|
6775
6775
|
filter: m,
|
|
@@ -6785,25 +6785,25 @@ const bi = ({ transaction: A }) => {
|
|
|
6785
6785
|
selectedAccounts: X,
|
|
6786
6786
|
setDisplayedDate: Q,
|
|
6787
6787
|
setSelectedAccounts: U
|
|
6788
|
-
} = fA(), [rA, gA] =
|
|
6789
|
-
|
|
6788
|
+
} = fA(), [rA, gA] = C.useState(""), [cA, vA] = C.useState(""), [$A, ge] = C.useState(!1), [Xe, Ze] = C.useState(!1), [$e, lt] = C.useState(!1);
|
|
6789
|
+
C.useEffect(() => {
|
|
6790
6790
|
U(a);
|
|
6791
|
-
}, [a]),
|
|
6791
|
+
}, [a]), C.useEffect(() => {
|
|
6792
6792
|
const _A = yA(AA()), br = NA(AA());
|
|
6793
6793
|
Q(_A, br), E({
|
|
6794
6794
|
dateRange: { start: _A, end: br },
|
|
6795
6795
|
accounts: X.map((ro) => ro.guid)
|
|
6796
6796
|
}), lt(!0), x(k.TRANSACTIONS_VIEW);
|
|
6797
|
-
}, []),
|
|
6798
|
-
|
|
6797
|
+
}, []), C.useEffect(() => {
|
|
6798
|
+
$e && (E({
|
|
6799
6799
|
...m,
|
|
6800
6800
|
dateRange: { start: R.start, end: R.end },
|
|
6801
6801
|
accounts: F
|
|
6802
6802
|
}), v(R.start));
|
|
6803
|
-
}, [R, F]),
|
|
6803
|
+
}, [R, F]), C.useEffect(() => {
|
|
6804
6804
|
u(n);
|
|
6805
6805
|
}, [n]);
|
|
6806
|
-
const pA =
|
|
6806
|
+
const pA = C.useMemo(
|
|
6807
6807
|
() => a.filter((_A) => _A.is_manual),
|
|
6808
6808
|
[a]
|
|
6809
6809
|
), K = cA ? L.find((_A) => _A.guid === cA) : void 0, hA = c && !!s.payee && !!s.account_guid && !!s.category_guid, EA = (_A) => {
|
|
@@ -6816,7 +6816,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6816
6816
|
}, mn = () => {
|
|
6817
6817
|
vi(L, S), x(k.TRANSACTIONS_CLICK_EXPORT);
|
|
6818
6818
|
}, pn = () => {
|
|
6819
|
-
pA.length > 0 ? (
|
|
6819
|
+
pA.length > 0 ? (g({
|
|
6820
6820
|
...pi,
|
|
6821
6821
|
date: mA(AA()),
|
|
6822
6822
|
user_guid: N?.user_guid || ""
|
|
@@ -6827,11 +6827,11 @@ const bi = ({ transaction: A }) => {
|
|
|
6827
6827
|
}, dt = async () => {
|
|
6828
6828
|
hA && await f(s), gA("");
|
|
6829
6829
|
}, vn = () => {
|
|
6830
|
-
ge(!1),
|
|
6830
|
+
ge(!1), Ze(!0);
|
|
6831
6831
|
}, En = () => {
|
|
6832
|
-
|
|
6832
|
+
Ze(!1), i();
|
|
6833
6833
|
};
|
|
6834
|
-
return !j ||
|
|
6834
|
+
return !j || !$e ? /* @__PURE__ */ t(QA, {}) : /* @__PURE__ */ l(
|
|
6835
6835
|
ue,
|
|
6836
6836
|
{
|
|
6837
6837
|
accountOptions: a,
|
|
@@ -6975,7 +6975,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6975
6975
|
repeat_month: null,
|
|
6976
6976
|
repeat_weekday: null,
|
|
6977
6977
|
start_date: mA(A.expectedDate)
|
|
6978
|
-
}, r = `${Et(A.expectedDate)}`, a = `${
|
|
6978
|
+
}, r = `${Et(A.expectedDate)}`, a = `${tt(A.expectedDate)}`, i = `${St(A.expectedDate)}`;
|
|
6979
6979
|
switch (A.recurrenceType) {
|
|
6980
6980
|
case G.EveryWeek:
|
|
6981
6981
|
n.repeat_interval = "1", n.repeat_weekday = i;
|
|
@@ -6999,7 +6999,7 @@ const bi = ({ transaction: A }) => {
|
|
|
6999
6999
|
occurs_on: kn(A.expectedDate, { representation: "date" }),
|
|
7000
7000
|
recurrence_type: A.recurrenceType
|
|
7001
7001
|
}), Xd = ({ activity: A }) => {
|
|
7002
|
-
const { recurring: e } = I(), { cashflowSequences: n, scheduledPayments: r, updateCashflowSequence: a, updateScheduledPayment: i } = HA(), { onEvent: o } = V(), [s, c] =
|
|
7002
|
+
const { recurring: e } = I(), { cashflowSequences: n, scheduledPayments: r, updateCashflowSequence: a, updateScheduledPayment: i } = HA(), { onEvent: o } = V(), [s, c] = C.useState(!1), h = A.activityType === LA.Income, d = [
|
|
7003
7003
|
{ id: G.EveryWeek, label: e.frequency_every_week },
|
|
7004
7004
|
{ id: G.EveryOtherWeek, label: e.frequency_every_other_week },
|
|
7005
7005
|
{ id: G.EveryMonth, label: e.frequency_every_month },
|
|
@@ -7017,7 +7017,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7017
7017
|
E && await a(Ii(v, E));
|
|
7018
7018
|
}
|
|
7019
7019
|
c(!1);
|
|
7020
|
-
},
|
|
7020
|
+
}, g = () => {
|
|
7021
7021
|
c(!0), o(
|
|
7022
7022
|
h ? "recurring_transactions_widget_income_details_click_payment_schedule" : "recurring_transactions_widget_expense_details_click_payment_schedule",
|
|
7023
7023
|
{
|
|
@@ -7031,7 +7031,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7031
7031
|
{
|
|
7032
7032
|
iconName: "sync",
|
|
7033
7033
|
label: e.activity_schedule,
|
|
7034
|
-
onClick:
|
|
7034
|
+
onClick: g,
|
|
7035
7035
|
value: f?.label || ""
|
|
7036
7036
|
}
|
|
7037
7037
|
),
|
|
@@ -7048,7 +7048,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7048
7048
|
// sequence doesn't support them
|
|
7049
7049
|
A.activityType === LA.Expense || m.id !== G.EveryOtherMonth && m.id !== G.EveryOtherQuarter
|
|
7050
7050
|
)
|
|
7051
|
-
).map((m) => /* @__PURE__ */ l(
|
|
7051
|
+
).map((m) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
7052
7052
|
/* @__PURE__ */ t(Y, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ l(dA, { onClick: () => u(m.id), children: [
|
|
7053
7053
|
/* @__PURE__ */ t(
|
|
7054
7054
|
tA,
|
|
@@ -7065,7 +7065,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7065
7065
|
)
|
|
7066
7066
|
] });
|
|
7067
7067
|
}, jd = T(Xd), Qd = ({ activity: A }) => {
|
|
7068
|
-
const { recurring: e } = I(), { cashflowSequences: n, scheduledPayments: r, updateCashflowSequence: a, updateScheduledPayment: i } = HA(), { onEvent: o } = V(), [s, c] =
|
|
7068
|
+
const { recurring: e } = I(), { cashflowSequences: n, scheduledPayments: r, updateCashflowSequence: a, updateScheduledPayment: i } = HA(), { onEvent: o } = V(), [s, c] = C.useState(!1), [h, d] = C.useState(A.expectedDate), u = A.activityType === LA.Income, g = () => {
|
|
7069
7069
|
d(A.expectedDate), c(!0), o(
|
|
7070
7070
|
u ? "recurring_transactions_widget_income_details_click_next_payment_due" : "recurring_transactions_widget_expense_details_click_next_payment_due",
|
|
7071
7071
|
{
|
|
@@ -7089,7 +7089,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7089
7089
|
{
|
|
7090
7090
|
iconName: "calendar_month",
|
|
7091
7091
|
label: e.activity_payment_date,
|
|
7092
|
-
onClick:
|
|
7092
|
+
onClick: g,
|
|
7093
7093
|
value: $(A.expectedDate, Z.MONTH_DAY_YEAR)
|
|
7094
7094
|
}
|
|
7095
7095
|
),
|
|
@@ -7113,16 +7113,16 @@ const bi = ({ transaction: A }) => {
|
|
|
7113
7113
|
)
|
|
7114
7114
|
] });
|
|
7115
7115
|
}, Ud = T(Qd), Wd = ({ activity: A, onDeleted: e }) => {
|
|
7116
|
-
const { recurring: n } = I(), { categories: r } = PA(), { deleteCashflowSequence: a, deleteScheduledPayment: i, paidActivities: o } = HA(), { filter: s, setFilter: c, transactions: h } = uA(), { selectedAccountGuids: d } = fA(), { onEvent: u } = V(), [
|
|
7116
|
+
const { recurring: n } = I(), { categories: r } = PA(), { deleteCashflowSequence: a, deleteScheduledPayment: i, paidActivities: o } = HA(), { filter: s, setFilter: c, transactions: h } = uA(), { selectedAccountGuids: d } = fA(), { onEvent: u } = V(), [g, f] = C.useState(!1), [m, v] = C.useState(""), E = r.find((P) => P.guid === A.categoryGuid), S = A.activityType === LA.Income, L = C.useMemo(
|
|
7117
7117
|
() => h.find((P) => P.guid === m),
|
|
7118
7118
|
[m]
|
|
7119
7119
|
);
|
|
7120
|
-
|
|
7120
|
+
C.useEffect(() => {
|
|
7121
7121
|
c({
|
|
7122
7122
|
accounts: d,
|
|
7123
7123
|
dateRange: { start: de(AA(), 90), end: NA(AA()) }
|
|
7124
7124
|
});
|
|
7125
|
-
}, []),
|
|
7125
|
+
}, []), C.useEffect(() => {
|
|
7126
7126
|
if (S && A.sequenceGuid) {
|
|
7127
7127
|
const P = o.filter((N) => N.sequenceGuid === A.sequenceGuid).map((N) => N.transactionGuid);
|
|
7128
7128
|
c({
|
|
@@ -7218,7 +7218,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7218
7218
|
title: S ? n.delete_income_title : n.delete_expense_title,
|
|
7219
7219
|
close_aria: n.close_drawer_aria
|
|
7220
7220
|
},
|
|
7221
|
-
isOpen:
|
|
7221
|
+
isOpen: g,
|
|
7222
7222
|
onClose: () => f(!1),
|
|
7223
7223
|
onPrimaryAction: w,
|
|
7224
7224
|
children: /* @__PURE__ */ t(p, { children: S ? n.delete_income_description : n.delete_expense_description })
|
|
@@ -7290,7 +7290,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7290
7290
|
},
|
|
7291
7291
|
showOrdinal: r = !1
|
|
7292
7292
|
}) => {
|
|
7293
|
-
const { recurring: a } = I(), [i, o] =
|
|
7293
|
+
const { recurring: a } = I(), [i, o] = C.useState(""), s = A.activityType === LA.Income, c = A.activityStatus === xA.Paid, h = A.activityStatus === xA.Missed, d = A.activityStatus === xA.Upcoming;
|
|
7294
7294
|
let u = a.paid?.toLowerCase();
|
|
7295
7295
|
return h ? u = a.missed?.toLowerCase() : d && (u = ia(r ? {
|
|
7296
7296
|
copy: a,
|
|
@@ -7389,7 +7389,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7389
7389
|
r.repeat_interval = "3", r.repeat_day = `${Et(n)}`;
|
|
7390
7390
|
break;
|
|
7391
7391
|
case G.EveryYear:
|
|
7392
|
-
r.repeat_day = `${Et(n)}`, r.repeat_month = `${
|
|
7392
|
+
r.repeat_day = `${Et(n)}`, r.repeat_month = `${tt(n)}`;
|
|
7393
7393
|
break;
|
|
7394
7394
|
}
|
|
7395
7395
|
return r;
|
|
@@ -7468,7 +7468,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7468
7468
|
{ id: G.EveryOtherQuarter, label: s.frequency_every_other_quarter },
|
|
7469
7469
|
{ id: G.EveryYear, label: s.frequency_every_year }
|
|
7470
7470
|
];
|
|
7471
|
-
|
|
7471
|
+
C.useEffect(() => {
|
|
7472
7472
|
const d = IA(o.date);
|
|
7473
7473
|
i(Hr(d)), a(G.EveryMonth);
|
|
7474
7474
|
}, [o]);
|
|
@@ -7538,9 +7538,9 @@ const bi = ({ transaction: A }) => {
|
|
|
7538
7538
|
label: e,
|
|
7539
7539
|
onAddActivity: n = () => null
|
|
7540
7540
|
}) => {
|
|
7541
|
-
const { recurring: r } = I(), { addCashflowEvent: a, addCashflowSequence: i, addScheduledPayment: o } = HA(), { filter: s, setFilter: c, transactions: h } = uA(), [d, u] =
|
|
7542
|
-
() => h.find((N) => N.guid ===
|
|
7543
|
-
[
|
|
7541
|
+
const { recurring: r } = I(), { addCashflowEvent: a, addCashflowSequence: i, addScheduledPayment: o } = HA(), { filter: s, setFilter: c, transactions: h } = uA(), [d, u] = C.useState(!1), [g, f] = C.useState(""), [m, v] = C.useState(G.EveryMonth), [E, S] = C.useState(null), L = C.useMemo(
|
|
7542
|
+
() => h.find((N) => N.guid === g),
|
|
7543
|
+
[g]
|
|
7544
7544
|
), w = () => {
|
|
7545
7545
|
u(!0), c(A ? { ...s, custom: It } : { ...s, custom: Rn });
|
|
7546
7546
|
}, D = async () => {
|
|
@@ -7597,7 +7597,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7597
7597
|
lA,
|
|
7598
7598
|
{
|
|
7599
7599
|
ariaLabelClose: r.close_drawer_aria,
|
|
7600
|
-
isOpen: !!
|
|
7600
|
+
isOpen: !!g,
|
|
7601
7601
|
onClose: () => f(""),
|
|
7602
7602
|
onPrimaryAction: D,
|
|
7603
7603
|
title: A ? r.income_details : r.expense_details,
|
|
@@ -7640,7 +7640,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7640
7640
|
a(k.RECURRING_ACTIVITY_CLICK_ADD_EXPENSE);
|
|
7641
7641
|
};
|
|
7642
7642
|
return /* @__PURE__ */ l(nA, { sx: { bgcolor: "background.paper" }, children: [
|
|
7643
|
-
i.map((c, h) => /* @__PURE__ */ l(
|
|
7643
|
+
i.map((c, h) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
7644
7644
|
/* @__PURE__ */ t(Vt, { activity: c, onActivityClick: o, showOrdinal: !0 }),
|
|
7645
7645
|
/* @__PURE__ */ t(q, { variant: h < i.length - 1 ? "inset" : "fullWidth" })
|
|
7646
7646
|
] }, c.scheduledPaymentGuid)),
|
|
@@ -7651,10 +7651,10 @@ const bi = ({ transaction: A }) => {
|
|
|
7651
7651
|
return A.account_number && (e = `${e} *${A.account_number}`), e;
|
|
7652
7652
|
}, zn = (A) => A ? A.repeat_interval === "1" ? G.EveryWeek : A.repeat_interval === "2" ? G.EveryOtherWeek : A.repeat_day && !A.repeat_month && !A.repeat_interval ? G.EveryMonth : A.repeat_day && A.repeat_interval === "3" ? G.EveryQuarter : A.repeat_day && A.repeat_month ? G.EveryYear : G.Unknown : G.Unknown, ou = (A, e, n, r, a, i) => {
|
|
7653
7653
|
const o = e.filter((d) => {
|
|
7654
|
-
const u = a.find((f) => f.guid === d.cashflow_sequence_guid),
|
|
7655
|
-
return u?.end_date === null &&
|
|
7654
|
+
const u = a.find((f) => f.guid === d.cashflow_sequence_guid), g = i.find((f) => f.guid === d.transaction_guid);
|
|
7655
|
+
return u?.end_date === null && g;
|
|
7656
7656
|
}).map((d) => {
|
|
7657
|
-
const u = a.find((m) => m.guid === d.cashflow_sequence_guid),
|
|
7657
|
+
const u = a.find((m) => m.guid === d.cashflow_sequence_guid), g = i.find((m) => m.guid === d.transaction_guid), f = A.find((m) => m.guid === g?.account_guid);
|
|
7658
7658
|
return {
|
|
7659
7659
|
accountGuid: u?.account_guid || f?.guid,
|
|
7660
7660
|
activityStatus: xA.Paid,
|
|
@@ -7666,26 +7666,26 @@ const bi = ({ transaction: A }) => {
|
|
|
7666
7666
|
name: d.name,
|
|
7667
7667
|
institution: f ? Hn(f) : void 0,
|
|
7668
7668
|
institutionGuid: f?.institution_guid,
|
|
7669
|
-
merchantGuid:
|
|
7669
|
+
merchantGuid: g?.merchant_guid || void 0,
|
|
7670
7670
|
recurrenceType: zn(u),
|
|
7671
7671
|
recurrenceDay: u?.repeat_day ? Number(u?.repeat_day) : void 0,
|
|
7672
7672
|
sequenceGuid: u?.guid,
|
|
7673
7673
|
transactionGuid: d.transaction_guid
|
|
7674
7674
|
};
|
|
7675
7675
|
}), s = r.filter(
|
|
7676
|
-
(d) =>
|
|
7676
|
+
(d) => nt(IA(d.expected_date), {
|
|
7677
7677
|
start: yA(AA()),
|
|
7678
7678
|
end: pe(AA(), 30)
|
|
7679
7679
|
})
|
|
7680
7680
|
).filter((d) => {
|
|
7681
|
-
const u = a.find((f) => f.guid === d.cashflow_sequence_guid),
|
|
7681
|
+
const u = a.find((f) => f.guid === d.cashflow_sequence_guid), g = e.find(
|
|
7682
7682
|
(f) => f.cashflow_sequence_guid === u?.guid && f.expected_date === d.expected_date
|
|
7683
7683
|
);
|
|
7684
|
-
return u?.end_date === null && !
|
|
7684
|
+
return u?.end_date === null && !g;
|
|
7685
7685
|
}).map((d) => {
|
|
7686
|
-
const u = a.find((v) => v.guid === d.cashflow_sequence_guid),
|
|
7686
|
+
const u = a.find((v) => v.guid === d.cashflow_sequence_guid), g = e.find(
|
|
7687
7687
|
(v) => v.cashflow_sequence_guid === d.cashflow_sequence_guid && !!v.transaction_guid
|
|
7688
|
-
), f = i.find((v) => v.guid ===
|
|
7688
|
+
), f = i.find((v) => v.guid === g?.transaction_guid), m = A.find((v) => v.guid === f?.account_guid);
|
|
7689
7689
|
return {
|
|
7690
7690
|
accountGuid: u?.account_guid || m?.guid,
|
|
7691
7691
|
activityStatus: xA.Upcoming,
|
|
@@ -7725,45 +7725,45 @@ const bi = ({ transaction: A }) => {
|
|
|
7725
7725
|
scheduledPaymentGuid: e.guid,
|
|
7726
7726
|
transactionGuid: ""
|
|
7727
7727
|
}, c = e.recurrence_day, h = AA(), d = yA(AA()), u = pe(AA(), 30);
|
|
7728
|
-
let
|
|
7728
|
+
let g = d;
|
|
7729
7729
|
switch (e.recurrence_type) {
|
|
7730
7730
|
case G.EveryWeek:
|
|
7731
|
-
for (
|
|
7731
|
+
for (g = xn(g, c); bA(g, u); )
|
|
7732
7732
|
r.push({
|
|
7733
7733
|
...s,
|
|
7734
|
-
expectedDate:
|
|
7735
|
-
}),
|
|
7734
|
+
expectedDate: g
|
|
7735
|
+
}), g = xn(g, c);
|
|
7736
7736
|
break;
|
|
7737
7737
|
case G.EveryOtherWeek:
|
|
7738
7738
|
if (bA(o, d))
|
|
7739
|
-
for (
|
|
7740
|
-
|
|
7739
|
+
for (g = et(o, 2); bA(g, u); )
|
|
7740
|
+
rt(g, d) && r.push({
|
|
7741
7741
|
...s,
|
|
7742
|
-
expectedDate:
|
|
7743
|
-
}),
|
|
7742
|
+
expectedDate: g
|
|
7743
|
+
}), g = et(g, 2);
|
|
7744
7744
|
else {
|
|
7745
7745
|
for (r.push({
|
|
7746
7746
|
...s,
|
|
7747
7747
|
expectedDate: o
|
|
7748
|
-
}),
|
|
7748
|
+
}), g = xr(o, 2); rt(g, d); )
|
|
7749
7749
|
r.push({
|
|
7750
7750
|
...s,
|
|
7751
|
-
expectedDate:
|
|
7752
|
-
}),
|
|
7753
|
-
for (
|
|
7751
|
+
expectedDate: g
|
|
7752
|
+
}), g = xr(g, 2);
|
|
7753
|
+
for (g = et(o, 2); bA(g, u); )
|
|
7754
7754
|
r.push({
|
|
7755
7755
|
...s,
|
|
7756
|
-
expectedDate:
|
|
7757
|
-
}),
|
|
7756
|
+
expectedDate: g
|
|
7757
|
+
}), g = et(g, 2);
|
|
7758
7758
|
}
|
|
7759
7759
|
break;
|
|
7760
7760
|
case G.EveryMonth:
|
|
7761
7761
|
r.push({
|
|
7762
7762
|
...s,
|
|
7763
|
-
expectedDate: Pn(
|
|
7763
|
+
expectedDate: Pn(g, c)
|
|
7764
7764
|
}), r.push({
|
|
7765
7765
|
...s,
|
|
7766
|
-
expectedDate: ee(Pn(
|
|
7766
|
+
expectedDate: ee(Pn(g, c), 1)
|
|
7767
7767
|
});
|
|
7768
7768
|
break;
|
|
7769
7769
|
case G.EveryOtherMonth:
|
|
@@ -7841,14 +7841,14 @@ const bi = ({ transaction: A }) => {
|
|
|
7841
7841
|
o(k.RECURRING_ACTIVITY_CLICK_ADD_INCOME);
|
|
7842
7842
|
};
|
|
7843
7843
|
return /* @__PURE__ */ l(nA, { sx: { bgcolor: "background.paper" }, children: [
|
|
7844
|
-
s.map((d, u) => /* @__PURE__ */ l(
|
|
7844
|
+
s.map((d, u) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
7845
7845
|
/* @__PURE__ */ t(Vt, { activity: d, onActivityClick: c, showOrdinal: !0 }),
|
|
7846
7846
|
/* @__PURE__ */ t(q, { variant: u < s.length - 1 ? "inset" : "fullWidth" })
|
|
7847
7847
|
] }, d.sequenceGuid)),
|
|
7848
7848
|
/* @__PURE__ */ t(_i, { isIncome: !0, label: A.add_income, onAddActivity: h })
|
|
7849
7849
|
] });
|
|
7850
7850
|
}, Cr = T(lu), du = () => {
|
|
7851
|
-
const [A, e] =
|
|
7851
|
+
const [A, e] = C.useState(0), { onEvent: n } = V(), { recurring: r } = I();
|
|
7852
7852
|
return /* @__PURE__ */ l(O, { bgcolor: "background.default", height: "100%", children: [
|
|
7853
7853
|
/* @__PURE__ */ l(
|
|
7854
7854
|
Oe,
|
|
@@ -7870,20 +7870,20 @@ const bi = ({ transaction: A }) => {
|
|
|
7870
7870
|
A === 0 && /* @__PURE__ */ t(iu, {}),
|
|
7871
7871
|
A === 1 && /* @__PURE__ */ t(Cr, {})
|
|
7872
7872
|
] });
|
|
7873
|
-
}, Ri = T(du), gt = (A, e) => A + e.amount, bn = (A) => A.activityType === LA.Income &&
|
|
7873
|
+
}, Ri = T(du), gt = (A, e) => A + e.amount, bn = (A) => A.activityType === LA.Income && nt(A.expectedDate, {
|
|
7874
7874
|
start: yA(AA()),
|
|
7875
7875
|
end: NA(AA())
|
|
7876
|
-
}), Rt = (A) => A.activityType === LA.Expense &&
|
|
7876
|
+
}), Rt = (A) => A.activityType === LA.Expense && nt(A.expectedDate, {
|
|
7877
7877
|
start: yA(AA()),
|
|
7878
7878
|
end: NA(AA())
|
|
7879
|
-
}), wn = (A) => A.occurredOnDate &&
|
|
7879
|
+
}), wn = (A) => A.occurredOnDate && nt(A.occurredOnDate, {
|
|
7880
7880
|
start: yA(/* @__PURE__ */ new Date()),
|
|
7881
7881
|
end: pe(AA(), 30)
|
|
7882
|
-
}) ||
|
|
7882
|
+
}) || nt(A.expectedDate, {
|
|
7883
7883
|
start: yA(/* @__PURE__ */ new Date()),
|
|
7884
7884
|
end: pe(AA(), 30)
|
|
7885
7885
|
}), uu = ({ day: A, outsideCurrentMonth: e, ...n }) => {
|
|
7886
|
-
const { recurring: r } = I(), { selectedAccountGuids: a } = fA(), { activities: i, setSelectedDay: o } = HA(), c =
|
|
7886
|
+
const { recurring: r } = I(), { selectedAccountGuids: a } = fA(), { activities: i, setSelectedDay: o } = HA(), c = C.useMemo(
|
|
7887
7887
|
() => i.filter((m) => a.includes(m.accountGuid || "")),
|
|
7888
7888
|
[a, i]
|
|
7889
7889
|
).filter(
|
|
@@ -7894,7 +7894,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7894
7894
|
(m) => m.activityType === LA.Expense && m.activityStatus === xA.Missed
|
|
7895
7895
|
), u = c.some(
|
|
7896
7896
|
(m) => m.activityType === LA.Expense && m.activityStatus === xA.Paid
|
|
7897
|
-
),
|
|
7897
|
+
), g = c.some((m) => m.activityType === LA.Income), f = (h ? 1 : 0) + (d ? 1 : 0) + (u ? 1 : 0) + (g ? 1 : 0);
|
|
7898
7898
|
return /* @__PURE__ */ t(
|
|
7899
7899
|
Xa,
|
|
7900
7900
|
{
|
|
@@ -7902,7 +7902,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7902
7902
|
d && /* @__PURE__ */ t(hr, { isOffset: !0 }),
|
|
7903
7903
|
u && /* @__PURE__ */ t(gr, { isOffset: !0 }),
|
|
7904
7904
|
h && /* @__PURE__ */ t(dr, { isOffset: !0 }),
|
|
7905
|
-
|
|
7905
|
+
g && /* @__PURE__ */ t(ur, { isOffset: !0 })
|
|
7906
7906
|
] }),
|
|
7907
7907
|
overlap: "circular",
|
|
7908
7908
|
sx: {
|
|
@@ -7919,7 +7919,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7919
7919
|
${u && r.paid},
|
|
7920
7920
|
${d && r.missed},
|
|
7921
7921
|
${h && r.upcoming},
|
|
7922
|
-
${
|
|
7922
|
+
${g && r.income}`,
|
|
7923
7923
|
day: A,
|
|
7924
7924
|
onClick: () => o(A),
|
|
7925
7925
|
outsideCurrentMonth: e,
|
|
@@ -7958,7 +7958,7 @@ const bi = ({ transaction: A }) => {
|
|
|
7958
7958
|
}
|
|
7959
7959
|
);
|
|
7960
7960
|
}, Cu = T(gu), oa = 58, fu = () => {
|
|
7961
|
-
const A = CA(), { onEvent: e } = V(), { selectedDay: n } = HA(), [r, a] =
|
|
7961
|
+
const A = CA(), { onEvent: e } = V(), { selectedDay: n } = HA(), [r, a] = C.useState(
|
|
7962
7962
|
Pr(/* @__PURE__ */ new Date()) * ut + oa
|
|
7963
7963
|
), i = (s) => {
|
|
7964
7964
|
a(Pr(s) * ut + oa), e(k.RECURRING_ACTIVITY_CLICK_CALENDAR_RIGHT);
|
|
@@ -8081,7 +8081,7 @@ const bi = ({ transaction: A }) => {
|
|
|
8081
8081
|
total: a,
|
|
8082
8082
|
onNewClick: i
|
|
8083
8083
|
}) => {
|
|
8084
|
-
const { recurring: o } = I(), s = CA(), c =
|
|
8084
|
+
const { recurring: o } = I(), s = CA(), c = C.useMemo(() => {
|
|
8085
8085
|
const h = [{ color: s.palette.success.main, percentage: `${n / e}` }];
|
|
8086
8086
|
return r && h.push({ color: s.palette.error.main, percentage: `${r / e}` }), h;
|
|
8087
8087
|
}, [n, e, r]);
|
|
@@ -8115,7 +8115,7 @@ const bi = ({ transaction: A }) => {
|
|
|
8115
8115
|
selectedDayActivities: o,
|
|
8116
8116
|
setSelectedDay: s,
|
|
8117
8117
|
upcomingActivities: c
|
|
8118
|
-
} = HA(), [h, d] =
|
|
8118
|
+
} = HA(), [h, d] = C.useState(0), { onEvent: u } = V(), g = n.filter(wn), f = a.filter(wn), m = r.filter(wn), v = g.filter(Rt).reduce(gt, 0), E = f.filter(Rt).reduce(gt, 0), S = m.filter(Rt).reduce(gt, 0), L = g.filter(Rt).length, w = g.filter(bn).reduce(gt, 0), D = f.filter(bn).reduce(gt, 0), P = g.filter(bn).length, N = (j, F) => {
|
|
8119
8119
|
d(F);
|
|
8120
8120
|
}, x = (j) => {
|
|
8121
8121
|
u(k.RECURRING_ACTIVITY_CLICK_UPCOMING, {
|
|
@@ -8198,15 +8198,15 @@ const bi = ({ transaction: A }) => {
|
|
|
8198
8198
|
] });
|
|
8199
8199
|
}, yu = T(Eu), bu = ({ onBackClick: A, sx: e = {} }) => {
|
|
8200
8200
|
const { accounts: n } = TA(), { recurring: r } = I(), { isInitialized: a, selectedAccountGuids: i, setSelectedAccounts: o } = fA(), { setFilter: s } = uA(), { isLoading: c } = HA(), { onEvent: h } = V();
|
|
8201
|
-
|
|
8201
|
+
C.useEffect(() => {
|
|
8202
8202
|
o(n);
|
|
8203
|
-
}, [n]),
|
|
8203
|
+
}, [n]), C.useEffect(() => {
|
|
8204
8204
|
a && s({
|
|
8205
8205
|
dateRange: { start: de(AA(), 90), end: Ue() },
|
|
8206
8206
|
accounts: i
|
|
8207
8207
|
});
|
|
8208
8208
|
}, [a, i]);
|
|
8209
|
-
const [d, u] =
|
|
8209
|
+
const [d, u] = C.useState(!1);
|
|
8210
8210
|
return /* @__PURE__ */ l(
|
|
8211
8211
|
ue,
|
|
8212
8212
|
{
|
|
@@ -8245,12 +8245,12 @@ const bi = ({ transaction: A }) => {
|
|
|
8245
8245
|
}
|
|
8246
8246
|
);
|
|
8247
8247
|
}, W7 = T(bu), wu = () => {
|
|
8248
|
-
const { recurring: A } = I(), { selectedAccountGuids: e } = fA(), { selectedDay: n, selectedDayActivities: r, setSelectedDay: a, upcomingActivities: i } = HA(), o =
|
|
8248
|
+
const { recurring: A } = I(), { selectedAccountGuids: e } = fA(), { selectedDay: n, selectedDayActivities: r, setSelectedDay: a, upcomingActivities: i } = HA(), o = C.useMemo(
|
|
8249
8249
|
() => i.filter(
|
|
8250
8250
|
(h) => e.includes(h.accountGuid || "")
|
|
8251
8251
|
),
|
|
8252
8252
|
[e, i]
|
|
8253
|
-
), { availableWidth: s } =
|
|
8253
|
+
), { availableWidth: s } = Ye(), c = s < 750;
|
|
8254
8254
|
return /* @__PURE__ */ l(y, { flexDirection: c ? "column" : "row", width: "100%", children: [
|
|
8255
8255
|
/* @__PURE__ */ t(Hi, {}),
|
|
8256
8256
|
!c && /* @__PURE__ */ t(q, { flexItem: !0, orientation: "vertical", sx: { my: 16, ml: 16 } }),
|
|
@@ -8270,13 +8270,13 @@ const bi = ({ transaction: A }) => {
|
|
|
8270
8270
|
] });
|
|
8271
8271
|
}, Su = T(wu), Tu = ({ onPrimaryCtaClick: A, sx: e }) => {
|
|
8272
8272
|
const { recurring: n } = I(), { isInitialized: r, selectedAccountGuids: a } = fA(), { setFilter: i } = uA();
|
|
8273
|
-
return
|
|
8273
|
+
return C.useEffect(() => {
|
|
8274
8274
|
r && i({
|
|
8275
8275
|
dateRange: { start: de(AA(), 90), end: Ue() },
|
|
8276
8276
|
accounts: a
|
|
8277
8277
|
});
|
|
8278
8278
|
}, [r, a]), /* @__PURE__ */ t(
|
|
8279
|
-
|
|
8279
|
+
Ve,
|
|
8280
8280
|
{
|
|
8281
8281
|
className: "mx-exp-upcoming-activity-miniwidget",
|
|
8282
8282
|
onPrimaryCtaClick: A,
|
|
@@ -8331,7 +8331,7 @@ class Lu {
|
|
|
8331
8331
|
return this.upcomingActivities.filter((e) => e.activityType === LA.Income);
|
|
8332
8332
|
}
|
|
8333
8333
|
get nextIncomeActivity() {
|
|
8334
|
-
return this.upcomingIncome.find((e) =>
|
|
8334
|
+
return this.upcomingIncome.find((e) => rt(e.expectedDate, AA()));
|
|
8335
8335
|
}
|
|
8336
8336
|
get selectedDayActivities() {
|
|
8337
8337
|
return this.selectedDay && this.activities.filter(
|
|
@@ -8646,7 +8646,7 @@ const Iu = {
|
|
|
8646
8646
|
tA,
|
|
8647
8647
|
{
|
|
8648
8648
|
disableTypography: !0,
|
|
8649
|
-
primary: /* @__PURE__ */ l(p, { bold: !0, variant: "Body", children: [
|
|
8649
|
+
primary: /* @__PURE__ */ l(p, { bold: !0, sx: { whiteSpace: "normal" }, variant: "Body", children: [
|
|
8650
8650
|
`${A.name || A.feed_name} ${A.account_number ? `*${A.account_number}` : ""}`,
|
|
8651
8651
|
" ",
|
|
8652
8652
|
A.is_hidden && !A.is_closed && a.is_hidden,
|
|
@@ -8726,26 +8726,26 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8726
8726
|
),
|
|
8727
8727
|
/* @__PURE__ */ t(q, {})
|
|
8728
8728
|
] });
|
|
8729
|
-
}, la = T(zu), da = (A, e) => (n) => n.accountGuid === A.guid && (Wn(n.expectedDate) ||
|
|
8730
|
-
const {
|
|
8729
|
+
}, la = T(zu), da = (A, e) => (n) => n.accountGuid === A.guid && (Wn(n.expectedDate) || rt(n.expectedDate, e.start)) && bA(n.expectedDate, e.end), Bu = () => {
|
|
8730
|
+
const { availableWidth: A } = Ye(), { cashflow: e } = I(), { upcomingExpenses: n, upcomingIncome: r } = HA(), { dateRange: a, selectedCashAccounts: i } = st();
|
|
8731
8731
|
return /* @__PURE__ */ l(y, { children: [
|
|
8732
|
-
/* @__PURE__ */ l(y, {
|
|
8733
|
-
/* @__PURE__ */ t(p, { bold: !0, sx: { fontSize: 15, mb: 12 }, children:
|
|
8734
|
-
/* @__PURE__ */ l(p, { bold: !0, sx: { fontSize: 15, mb: 12 }, children: [
|
|
8735
|
-
$(
|
|
8732
|
+
/* @__PURE__ */ l(y, { direction: A < 400 ? "column" : "row", justifyContent: "space-between", children: [
|
|
8733
|
+
/* @__PURE__ */ t(p, { bold: !0, sx: { fontSize: 15, mb: 12, whiteSpace: "normal" }, children: e.accounts_breakdown }),
|
|
8734
|
+
/* @__PURE__ */ l(p, { bold: !0, sx: { fontSize: 15, mb: 12, whiteSpace: "normal" }, children: [
|
|
8735
|
+
$(a.start, Z.FULL_MONTH_DAY),
|
|
8736
8736
|
" -",
|
|
8737
8737
|
" ",
|
|
8738
|
-
$(
|
|
8738
|
+
$(a.end, Z.FULL_MONTH_DAY)
|
|
8739
8739
|
] })
|
|
8740
8740
|
] }),
|
|
8741
|
-
/* @__PURE__ */ t(y, { children:
|
|
8742
|
-
const
|
|
8743
|
-
da(
|
|
8744
|
-
), c = o.reduce(
|
|
8745
|
-
(d, u) => d + u.amount,
|
|
8746
|
-
0
|
|
8741
|
+
/* @__PURE__ */ t(y, { children: i.map((o) => {
|
|
8742
|
+
const s = r.filter(da(o, a)).sort((u, g) => mA(u.expectedDate) - mA(g.expectedDate)), c = n.filter(
|
|
8743
|
+
da(o, a)
|
|
8747
8744
|
), h = s.reduce(
|
|
8748
|
-
(
|
|
8745
|
+
(u, g) => u + g.amount,
|
|
8746
|
+
0
|
|
8747
|
+
), d = c.reduce(
|
|
8748
|
+
(u, g) => u + g.amount,
|
|
8749
8749
|
0
|
|
8750
8750
|
);
|
|
8751
8751
|
return /* @__PURE__ */ l(
|
|
@@ -8761,7 +8761,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8761
8761
|
/* @__PURE__ */ t(
|
|
8762
8762
|
hn,
|
|
8763
8763
|
{
|
|
8764
|
-
account:
|
|
8764
|
+
account: o,
|
|
8765
8765
|
listItemProps: {
|
|
8766
8766
|
disableGutters: !1,
|
|
8767
8767
|
disablePadding: !1,
|
|
@@ -8770,41 +8770,41 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8770
8770
|
}
|
|
8771
8771
|
),
|
|
8772
8772
|
/* @__PURE__ */ t(q, {}),
|
|
8773
|
-
|
|
8773
|
+
s.length > 0 && /* @__PURE__ */ t(Y, { children: /* @__PURE__ */ t(
|
|
8774
8774
|
nA,
|
|
8775
8775
|
{
|
|
8776
|
-
subheader: /* @__PURE__ */ t(la, { total:
|
|
8776
|
+
subheader: /* @__PURE__ */ t(la, { total: h, type: Dt.INCOME }),
|
|
8777
8777
|
sx: { width: "100%" },
|
|
8778
|
-
children:
|
|
8778
|
+
children: s.map((u) => /* @__PURE__ */ t(ca, { activity: u }, u.sequenceGuid))
|
|
8779
8779
|
}
|
|
8780
8780
|
) }),
|
|
8781
|
-
|
|
8781
|
+
c.length > 0 && /* @__PURE__ */ t(Y, { children: /* @__PURE__ */ t(
|
|
8782
8782
|
nA,
|
|
8783
8783
|
{
|
|
8784
|
-
subheader: /* @__PURE__ */ t(la, { total:
|
|
8784
|
+
subheader: /* @__PURE__ */ t(la, { total: d, type: Dt.EXPENSE }),
|
|
8785
8785
|
sx: { width: "100%" },
|
|
8786
|
-
children:
|
|
8786
|
+
children: c.map((u) => /* @__PURE__ */ t(ca, { activity: u }, u.scheduledPaymentGuid))
|
|
8787
8787
|
}
|
|
8788
8788
|
) }),
|
|
8789
8789
|
/* @__PURE__ */ t(
|
|
8790
8790
|
Ru,
|
|
8791
8791
|
{
|
|
8792
|
-
remaining: (
|
|
8792
|
+
remaining: (o.available_balance || o.balance || 0) + h - d
|
|
8793
8793
|
}
|
|
8794
8794
|
)
|
|
8795
8795
|
]
|
|
8796
8796
|
},
|
|
8797
|
-
|
|
8797
|
+
o.guid
|
|
8798
8798
|
);
|
|
8799
8799
|
}) })
|
|
8800
8800
|
] });
|
|
8801
8801
|
}, Ku = T(Bu), qu = () => {
|
|
8802
|
-
const { availableWidth: A } =
|
|
8802
|
+
const { availableWidth: A } = Ye(), e = CA(), { cashflow: n } = I(), { upcomingExpenses: r, upcomingIncome: a } = HA(), { dateRange: i, selectedCashAccounts: o } = st(), s = [
|
|
8803
8803
|
{
|
|
8804
8804
|
field: "account",
|
|
8805
8805
|
flex: 1.5,
|
|
8806
8806
|
headerName: n.accounts,
|
|
8807
|
-
renderCell: ({ value: { name: h, nickname: d, institution_guid: u, account_number:
|
|
8807
|
+
renderCell: ({ value: { name: h, nickname: d, institution_guid: u, account_number: g } }) => {
|
|
8808
8808
|
const f = d || h;
|
|
8809
8809
|
return /* @__PURE__ */ l(y, { alignItems: "center", flexDirection: "row", gap: 12, children: [
|
|
8810
8810
|
/* @__PURE__ */ t(
|
|
@@ -8815,7 +8815,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8815
8815
|
size: 16
|
|
8816
8816
|
}
|
|
8817
8817
|
),
|
|
8818
|
-
`${f} ${
|
|
8818
|
+
`${f} ${g ? `*${g}` : ""}`
|
|
8819
8819
|
] });
|
|
8820
8820
|
}
|
|
8821
8821
|
},
|
|
@@ -8857,15 +8857,15 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8857
8857
|
);
|
|
8858
8858
|
}
|
|
8859
8859
|
}
|
|
8860
|
-
], c =
|
|
8861
|
-
const d = r.filter((f) => f.accountGuid === h.guid).reduce((f, m) => f + m.amount, 0), u = a.filter((f) => f.accountGuid === h.guid).reduce((f, m) => f + m.amount, 0),
|
|
8860
|
+
], c = C.useMemo(() => o.map((h) => {
|
|
8861
|
+
const d = r.filter((f) => f.accountGuid === h.guid).reduce((f, m) => f + m.amount, 0), u = a.filter((f) => f.accountGuid === h.guid).reduce((f, m) => f + m.amount, 0), g = (h.balance || 0) + u - d;
|
|
8862
8862
|
return {
|
|
8863
8863
|
account: h,
|
|
8864
8864
|
balance: h.balance || 0,
|
|
8865
8865
|
id: h.guid,
|
|
8866
8866
|
income: u,
|
|
8867
8867
|
expenses: d,
|
|
8868
|
-
remaining:
|
|
8868
|
+
remaining: g
|
|
8869
8869
|
};
|
|
8870
8870
|
}), [o, r, a]);
|
|
8871
8871
|
return /* @__PURE__ */ l(
|
|
@@ -8875,24 +8875,42 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8875
8875
|
width: "100%"
|
|
8876
8876
|
},
|
|
8877
8877
|
children: [
|
|
8878
|
-
/* @__PURE__ */ l(
|
|
8879
|
-
|
|
8880
|
-
|
|
8881
|
-
|
|
8882
|
-
|
|
8883
|
-
|
|
8884
|
-
|
|
8885
|
-
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
8889
|
-
|
|
8890
|
-
|
|
8891
|
-
|
|
8892
|
-
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
|
|
8878
|
+
/* @__PURE__ */ l(
|
|
8879
|
+
y,
|
|
8880
|
+
{
|
|
8881
|
+
direction: A < 540 ? "column" : "row",
|
|
8882
|
+
justifyContent: "space-between",
|
|
8883
|
+
mb: 12,
|
|
8884
|
+
children: [
|
|
8885
|
+
/* @__PURE__ */ l(y, { alignItems: "center", direction: "row", gap: 8, children: [
|
|
8886
|
+
/* @__PURE__ */ t(
|
|
8887
|
+
p,
|
|
8888
|
+
{
|
|
8889
|
+
bold: !0,
|
|
8890
|
+
sx: {
|
|
8891
|
+
fontSize: 15,
|
|
8892
|
+
whiteSpace: "normal"
|
|
8893
|
+
},
|
|
8894
|
+
children: n.cash_inflow_and_outflow
|
|
8895
|
+
}
|
|
8896
|
+
),
|
|
8897
|
+
/* @__PURE__ */ t(
|
|
8898
|
+
Yt,
|
|
8899
|
+
{
|
|
8900
|
+
body: n.table_tooltip_body,
|
|
8901
|
+
title: n.table_tooltip_title
|
|
8902
|
+
}
|
|
8903
|
+
)
|
|
8904
|
+
] }),
|
|
8905
|
+
/* @__PURE__ */ l(p, { bold: !0, sx: { fontSize: 15, whiteSpace: "normal" }, children: [
|
|
8906
|
+
$(i.start, Z.FULL_MONTH_DAY),
|
|
8907
|
+
" -",
|
|
8908
|
+
" ",
|
|
8909
|
+
$(i.end, Z.FULL_MONTH_DAY)
|
|
8910
|
+
] })
|
|
8911
|
+
]
|
|
8912
|
+
}
|
|
8913
|
+
),
|
|
8896
8914
|
A > 650 ? /* @__PURE__ */ t(
|
|
8897
8915
|
en,
|
|
8898
8916
|
{
|
|
@@ -8912,7 +8930,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8912
8930
|
}
|
|
8913
8931
|
}
|
|
8914
8932
|
) : c.map((h) => {
|
|
8915
|
-
const { name: d, nickname: u, institution_guid:
|
|
8933
|
+
const { name: d, nickname: u, institution_guid: g, account_number: f } = h.account, m = u || d;
|
|
8916
8934
|
return /* @__PURE__ */ t(
|
|
8917
8935
|
nA,
|
|
8918
8936
|
{
|
|
@@ -8937,7 +8955,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
8937
8955
|
Ke,
|
|
8938
8956
|
{
|
|
8939
8957
|
alt: n.institution_logo,
|
|
8940
|
-
institutionGuid:
|
|
8958
|
+
institutionGuid: g || "",
|
|
8941
8959
|
size: 16
|
|
8942
8960
|
}
|
|
8943
8961
|
),
|
|
@@ -9001,10 +9019,10 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9001
9019
|
}
|
|
9002
9020
|
);
|
|
9003
9021
|
}, ku = T(qu), Gu = () => {
|
|
9004
|
-
const { cashflow: A } = I(), { isDesktop: e } = MA(), { onEvent: n } = V(), [r, a] =
|
|
9022
|
+
const { cashflow: A } = I(), { isDesktop: e } = MA(), { onEvent: n } = V(), [r, a] = C.useState(0), i = (o, s) => {
|
|
9005
9023
|
a(s);
|
|
9006
9024
|
};
|
|
9007
|
-
return
|
|
9025
|
+
return C.useEffect(() => {
|
|
9008
9026
|
n(r === 0 ? "cash_flow_summary" : "cash_flow_details");
|
|
9009
9027
|
}, [r]), /* @__PURE__ */ l(O, { children: [
|
|
9010
9028
|
/* @__PURE__ */ l(
|
|
@@ -9065,23 +9083,23 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9065
9083
|
e && /* @__PURE__ */ t(wA, { amount: A, component: "h2", symbol: a, variant: "Small" })
|
|
9066
9084
|
]
|
|
9067
9085
|
}
|
|
9068
|
-
), ua = (A, e) => (n) => n.accountGuid && A.includes(n.accountGuid) && (Wn(n.expectedDate) ||
|
|
9069
|
-
const [A, e] =
|
|
9086
|
+
), ua = (A, e) => (n) => n.accountGuid && A.includes(n.accountGuid) && (Wn(n.expectedDate) || rt(n.expectedDate, e.start)) && bA(n.expectedDate, e.end), Xu = () => {
|
|
9087
|
+
const [A, e] = C.useState(!1), { availableWidth: n } = Ye(), { cashflow: r } = I(), { upcomingExpenses: a, upcomingIncome: i } = HA(), { selectedAccountGuids: o } = fA(), { dateRange: s, selectedCashAccounts: c } = st(), { userProfile: h } = an(), d = C.useMemo(
|
|
9070
9088
|
() => a.filter(ua(o, s)),
|
|
9071
9089
|
[s, o, a]
|
|
9072
|
-
), u =
|
|
9090
|
+
), u = C.useMemo(
|
|
9073
9091
|
() => i.filter(ua(o, s)),
|
|
9074
9092
|
[s, o, i]
|
|
9075
|
-
),
|
|
9093
|
+
), g = C.useMemo(
|
|
9076
9094
|
() => c.reduce((L, w) => L + (w?.balance || 0), 0),
|
|
9077
9095
|
[c]
|
|
9078
|
-
), f = d.reduce((L, w) => L + w.amount, 0), m = u.reduce((L, w) => L + w.amount, 0), v =
|
|
9096
|
+
), f = d.reduce((L, w) => L + w.amount, 0), m = u.reduce((L, w) => L + w.amount, 0), v = g - f + m, E = i.length > 0 && h?.has_completed_cash_flow_onboarding, S = n < 725;
|
|
9079
9097
|
return /* @__PURE__ */ l(y, { flexDirection: "row", gap: 24, justifyContent: "center", my: S ? 24 : 42, children: [
|
|
9080
9098
|
S ? /* @__PURE__ */ l(y, { border: "1px solid", borderColor: "border.light", borderRadius: 1, mx: 16, width: "100%", children: [
|
|
9081
9099
|
/* @__PURE__ */ t(
|
|
9082
9100
|
Pe,
|
|
9083
9101
|
{
|
|
9084
|
-
amount:
|
|
9102
|
+
amount: g,
|
|
9085
9103
|
isMobile: !0,
|
|
9086
9104
|
label: r.cash_and_bank
|
|
9087
9105
|
}
|
|
@@ -9132,7 +9150,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9132
9150
|
}
|
|
9133
9151
|
)
|
|
9134
9152
|
] }) : /* @__PURE__ */ l(eA, { children: [
|
|
9135
|
-
/* @__PURE__ */ t(Pe, { amount:
|
|
9153
|
+
/* @__PURE__ */ t(Pe, { amount: g, label: r.cash_and_bank }),
|
|
9136
9154
|
E ? /* @__PURE__ */ l(eA, { children: [
|
|
9137
9155
|
/* @__PURE__ */ t(p, { sx: { fontSize: 25, lineHeight: 1 }, children: "+" }),
|
|
9138
9156
|
/* @__PURE__ */ t(
|
|
@@ -9253,7 +9271,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9253
9271
|
] });
|
|
9254
9272
|
}, Uu = T(Qu), Wu = "data:image/gif;base64,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Zr5sNsOmSKx8DRiYGYADzmJHc9piSZNoXwBil0YddnSvWnRmwYYtezftr6NB2aLTabfs2b+9jqaViY4nzcd9J+d6GtMoOrKgx5Y+fevpRZ9ufP+KxXv75u5AjXCMJevGKEyme5+fqB690QGebmSiFX++/a6d3GALKAAMYN5/XI2myQ219FLggQj29AJHo81ywyOcPOhfRRNGCNRot9wgwSsPcqfYcSiOhEIDLLbYgAIygXgDF66UuGFKCLjo4mkhoZgiRj72FhICGByQwgFIViBADzJR1soNfVwCQAbItfQAARUcaeQBFUQgUpBCXgTmjRshwAEBSKZpwAUZIYERlZtACcmUJkbkJkYPaJDmnl72OGZGfw5pApppprCmTC34woseW8yZgQNkovSAAHsimUKfII0ZKUSBgmQmoWqyKRMrn3DBhSeUZMajS5NWiiSmH2n/CiiYIn1a6aEyqdKHBL5soUorMrXqKqweyQokrUOeeauoMFniiw686vCIszEJWymxHRl7UQ4qMKDCt95qUauye+KKUybVUjqsSA10+627DGz6kBQwECDAvQTIYNAAOrY4mkS2lstsWtbyORG//Tbw70B7yGDvvQIY4ANHKQxUgQYGScJlBRxzfEAOFRFg0MBpCbBRDht3XMEBkhikQQUEzYBBSBgXxACoaRIwgYcGHUDRBDgjSQADDc18EgMzuDrDzhNxUJDPgUEt0QRJVzoD0TXd7KrOBWmLntdAb401TVpXyjVBXncHdtAHDG1T2XueTVqnHwEGlN2Z0h222WPTwsS23NoFieDaW9+kNUFtMz1QAz2wgMPjj7MA439aXOA45DiwgABBYSPudlEyaGDA6KMLIC6CuERMugFSS4XlQBXDjKASL8Puy8RbVUxShzzxzvPvwAcv/PDEF2/88cgnr/zyLxU2kO+7F+Q889QvVoVI11evPWOVIJS9Rt8X1P325F82vUTnl29TKhCxr/778Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCeYkIAAACH5BAUEAMQALAAAAADwAHEAh////6axweHm7/39/uHm8KCsveDl7+Ln8P7+/qeywv7+/6iywvj5+/j5/P7///v7/fb3+qOuv/3+/+Po8W+i5uXp8vH0+KGtvubq8qGsvfn6/KWwwODm7/v8/qKu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", Yu = () => {
|
|
9255
9273
|
const { cashflow: A } = I();
|
|
9256
|
-
return /* @__PURE__ */ l(
|
|
9274
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
9257
9275
|
/* @__PURE__ */ t("div", { children: /* @__PURE__ */ t("img", { alt: "Loading", src: Wu }) }),
|
|
9258
9276
|
/* @__PURE__ */ t(Ie, { pb: 12, children: A.loading_title }),
|
|
9259
9277
|
/* @__PURE__ */ t(zA, { children: A.loading_description })
|
|
@@ -9266,7 +9284,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9266
9284
|
transform: rotate(360deg);
|
|
9267
9285
|
}
|
|
9268
9286
|
`, $u = () => {
|
|
9269
|
-
const { addCashflowEvent: A, addCashflowSequence: e, cashflowSequences: n } = HA(), { cashflow: r, common: a } = I(), { completeOnboarding: i } = tr(), { isDirty: o } = st(), { isMobile: s } = MA(), { setDisplayedDate: c } = fA(), { filter: h, setFilter: d, transactions: u } = uA(),
|
|
9287
|
+
const { addCashflowEvent: A, addCashflowSequence: e, cashflowSequences: n } = HA(), { cashflow: r, common: a } = I(), { completeOnboarding: i } = tr(), { isDirty: o } = st(), { isMobile: s } = MA(), { setDisplayedDate: c } = fA(), { filter: h, setFilter: d, transactions: u } = uA(), g = CA(), [f, m] = Ce(!0), [v, E] = C.useState(G.EveryMonth), [S, L] = Ce(!1), [w, D] = C.useState(null), [P, N] = Ce(1), [x, R] = Ce([]), [j, F] = Ce(""), X = C.useMemo(
|
|
9270
9288
|
() => u.find((cA) => cA.guid === j),
|
|
9271
9289
|
[j]
|
|
9272
9290
|
), Q = !!n.length, U = async () => {
|
|
@@ -9298,7 +9316,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9298
9316
|
sx: {
|
|
9299
9317
|
display: "flex",
|
|
9300
9318
|
alignItems: s ? "flex-start" : "center",
|
|
9301
|
-
backgroundColor:
|
|
9319
|
+
backgroundColor: g.palette.background.paper,
|
|
9302
9320
|
backgroundImage: s ? null : `url(${Ju})`,
|
|
9303
9321
|
backgroundRepeat: "no-repeat",
|
|
9304
9322
|
backgroundPosition: "left 100px",
|
|
@@ -9334,7 +9352,7 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9334
9352
|
/* @__PURE__ */ t(Ie, { pb: 12, children: r.add_income_title }),
|
|
9335
9353
|
/* @__PURE__ */ t(zA, { mb: 24, children: r.add_income_description }),
|
|
9336
9354
|
x.length > 0 && !X && /* @__PURE__ */ l(eA, { children: [
|
|
9337
|
-
/* @__PURE__ */ t(nA, { children: x.map((cA, vA) => /* @__PURE__ */ l(
|
|
9355
|
+
/* @__PURE__ */ t(nA, { children: x.map((cA, vA) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
9338
9356
|
/* @__PURE__ */ t(sr, { bgcolor: "background.paper", children: rn(
|
|
9339
9357
|
mA(cA.nextDate || cA.date)
|
|
9340
9358
|
) }),
|
|
@@ -9439,14 +9457,14 @@ const Hu = ({ activity: A }) => /* @__PURE__ */ l(eA, { children: [
|
|
|
9439
9457
|
setSelectedAccounts: a,
|
|
9440
9458
|
shouldDisableNextDate: i,
|
|
9441
9459
|
shouldDisablePrevDate: o
|
|
9442
|
-
} = fA(), { onEvent: s } = V(), { cashAccounts: c } = TA(), { setFilter: h } = uA(), { userProfile: d } = an(), { dateRange: u, setSelectedCashAccounts:
|
|
9443
|
-
return
|
|
9460
|
+
} = fA(), { onEvent: s } = V(), { cashAccounts: c } = TA(), { setFilter: h } = uA(), { userProfile: d } = an(), { dateRange: u, setSelectedCashAccounts: g } = st(), { cashflow: f } = I(), [m, v] = C.useState(!1);
|
|
9461
|
+
return C.useEffect(() => {
|
|
9444
9462
|
a(c);
|
|
9445
|
-
}, [c]),
|
|
9463
|
+
}, [c]), C.useEffect(() => {
|
|
9446
9464
|
const E = c.map((L) => L.guid), S = n.filter(
|
|
9447
9465
|
(L) => r.includes(L.guid) && E.includes(L.guid)
|
|
9448
9466
|
);
|
|
9449
|
-
|
|
9467
|
+
g(S), h({ accounts: S.map((L) => L.guid) });
|
|
9450
9468
|
}, [c, n]), d?.has_completed_cash_flow_onboarding ? /* @__PURE__ */ l(
|
|
9451
9469
|
ue,
|
|
9452
9470
|
{
|
|
@@ -9579,23 +9597,23 @@ function ah() {
|
|
|
9579
9597
|
}
|
|
9580
9598
|
const ih = ({ debts: A, height: e = 500, width: n }) => {
|
|
9581
9599
|
const r = re(), a = [
|
|
9582
|
-
...new Set(A.flatMap((u) => u.dataset.map((
|
|
9583
|
-
].sort((u,
|
|
9584
|
-
const
|
|
9585
|
-
let f =
|
|
9600
|
+
...new Set(A.flatMap((u) => u.dataset.map((g) => new Date(g.x).getTime())))
|
|
9601
|
+
].sort((u, g) => u - g).map((u) => new Date(u)), i = A.map((u) => {
|
|
9602
|
+
const g = new Map(u.dataset.map((v) => [new Date(v.x).getTime(), v.y]));
|
|
9603
|
+
let f = g.get(a[0].getTime()) ?? 0;
|
|
9586
9604
|
const m = a.map((v) => {
|
|
9587
|
-
const E =
|
|
9605
|
+
const E = g.get(v.getTime()) ?? f;
|
|
9588
9606
|
return f = E, { x: v, y: E };
|
|
9589
9607
|
});
|
|
9590
9608
|
return { ...u, dataset: m, color: ah() };
|
|
9591
9609
|
}), o = i.reduce(
|
|
9592
|
-
(u,
|
|
9610
|
+
(u, g) => u + (g.dataset[0]?.y ?? 0),
|
|
9593
9611
|
0
|
|
9594
|
-
), s = a.map((u,
|
|
9595
|
-
const f =
|
|
9612
|
+
), s = a.map((u, g) => {
|
|
9613
|
+
const f = g / (a.length - 1), m = o * (1 - f);
|
|
9596
9614
|
return { x: u, y: m };
|
|
9597
|
-
}), c = Math.ceil(o / 100) * 100, h = a, d = i.map((u,
|
|
9598
|
-
id: `debt-${
|
|
9615
|
+
}), c = Math.ceil(o / 100) * 100, h = a, d = i.map((u, g) => ({
|
|
9616
|
+
id: `debt-${g}`,
|
|
9599
9617
|
label: u.name,
|
|
9600
9618
|
data: u.dataset.map((f) => f.y),
|
|
9601
9619
|
color: u.color,
|
|
@@ -9725,7 +9743,7 @@ const uh = ({
|
|
|
9725
9743
|
onClickRow: e,
|
|
9726
9744
|
sx: n = {}
|
|
9727
9745
|
}) => {
|
|
9728
|
-
const { onEvent: r } = V(), [a, i] =
|
|
9746
|
+
const { onEvent: r } = V(), [a, i] = C.useState([
|
|
9729
9747
|
{ field: "priority", sort: "asc" }
|
|
9730
9748
|
]), o = [
|
|
9731
9749
|
{
|
|
@@ -9796,7 +9814,7 @@ const uh = ({
|
|
|
9796
9814
|
align: "left",
|
|
9797
9815
|
headerAlign: "left"
|
|
9798
9816
|
}
|
|
9799
|
-
], s =
|
|
9817
|
+
], s = C.useMemo(() => A.map((c, h) => ({
|
|
9800
9818
|
id: h,
|
|
9801
9819
|
priority: lh(c),
|
|
9802
9820
|
account: c.account,
|
|
@@ -9854,17 +9872,17 @@ const uh = ({
|
|
|
9854
9872
|
}), gh = {
|
|
9855
9873
|
title: "Debts"
|
|
9856
9874
|
}, Ch = ({ onBackClick: A, sx: e }) => {
|
|
9857
|
-
const [n, r] =
|
|
9858
|
-
|
|
9875
|
+
const [n, r] = C.useState(!1), { isInitialized: a, setSelectedAccounts: i } = fA(), { isDesktop: o } = MA(), { loadGoals: s } = rr(), { accounts: c } = TA(), { debts: h } = Rc();
|
|
9876
|
+
C.useEffect(() => {
|
|
9859
9877
|
a && (s(), i(c), r(!0));
|
|
9860
9878
|
}, [a]);
|
|
9861
|
-
const d =
|
|
9879
|
+
const d = C.useMemo(() => hh(h), [h]), u = C.useMemo(() => h, [h]), g = () => {
|
|
9862
9880
|
};
|
|
9863
9881
|
return !a || !n ? /* @__PURE__ */ t(QA, {}) : /* @__PURE__ */ t(
|
|
9864
9882
|
ue,
|
|
9865
9883
|
{
|
|
9866
9884
|
accountOptions: c,
|
|
9867
|
-
onAccountsFilterClick:
|
|
9885
|
+
onAccountsFilterClick: g,
|
|
9868
9886
|
onBackClick: A,
|
|
9869
9887
|
sx: e,
|
|
9870
9888
|
title: gh.title,
|
|
@@ -9949,11 +9967,11 @@ class vh {
|
|
|
9949
9967
|
};
|
|
9950
9968
|
};
|
|
9951
9969
|
get shouldDisableNextDate() {
|
|
9952
|
-
const e =
|
|
9970
|
+
const e = tt(this.displayedDate), n = tt(ee(/* @__PURE__ */ new Date(), 1));
|
|
9953
9971
|
return e === n;
|
|
9954
9972
|
}
|
|
9955
9973
|
get shouldDisablePrevDate() {
|
|
9956
|
-
const e =
|
|
9974
|
+
const e = tt(this.displayedDate), n = tt(/* @__PURE__ */ new Date());
|
|
9957
9975
|
return e === n;
|
|
9958
9976
|
}
|
|
9959
9977
|
}
|
|
@@ -10022,9 +10040,9 @@ const yh = T(({ goal: A }) => {
|
|
|
10022
10040
|
/* @__PURE__ */ t(p, { color: "text.secondary", variant: "Small", children: r.ongoing_title }),
|
|
10023
10041
|
/* @__PURE__ */ t(sA, { endIcon: /* @__PURE__ */ t(M, { name: "chevron_right" }), onClick: () => A(e), children: c })
|
|
10024
10042
|
] }),
|
|
10025
|
-
/* @__PURE__ */ t(Le, { container: !0, spacing: 24, children: o.map((d, u,
|
|
10043
|
+
/* @__PURE__ */ t(Le, { container: !0, spacing: 24, children: o.map((d, u, g) => (
|
|
10026
10044
|
// Goal should be full width in mobile or if it's the first goal (unless there are 2)
|
|
10027
|
-
/* @__PURE__ */ t(Le, { xs: n || u === 0 &&
|
|
10045
|
+
/* @__PURE__ */ t(Le, { xs: n || u === 0 && g.length !== 2 ? 12 : 6, children: /* @__PURE__ */ t(yh, { goal: d }, d.guid) }, u)
|
|
10028
10046
|
)) }),
|
|
10029
10047
|
e !== Ae.RETIREMENT_TRACK && /* @__PURE__ */ l(y, { gap: 16, mt: 48, children: [
|
|
10030
10048
|
/* @__PURE__ */ t(p, { color: "text.secondary", variant: "Small", children: r.complete_title }),
|
|
@@ -10039,19 +10057,19 @@ const yh = T(({ goal: A }) => {
|
|
|
10039
10057
|
] })
|
|
10040
10058
|
] });
|
|
10041
10059
|
}), $7 = T(({ onBackClick: A, sx: e }) => {
|
|
10042
|
-
const { onEvent: n } = V(), { isMobile: r } = MA(), { accounts: a } = TA(), { isInitialized: i, setSelectedAccounts: o } = fA(), { goals: s } = I(), { loadGoals: c } = rr(), [h, d] =
|
|
10060
|
+
const { onEvent: n } = V(), { isMobile: r } = MA(), { accounts: a } = TA(), { isInitialized: i, setSelectedAccounts: o } = fA(), { goals: s } = I(), { loadGoals: c } = rr(), [h, d] = C.useState(0), u = 400, g = 205, f = 624, m = _(
|
|
10043
10061
|
r ? s.tab_subtitle_mobile : s.tab_subtitle,
|
|
10044
10062
|
z(u, "0,0")
|
|
10045
10063
|
), v = _(
|
|
10046
10064
|
r ? s.tab_subtitle_mobile : s.tab_subtitle,
|
|
10047
|
-
z(
|
|
10065
|
+
z(g, "0,0")
|
|
10048
10066
|
), E = _(
|
|
10049
10067
|
r ? s.tab_subtitle_mobile : s.tab_subtitle,
|
|
10050
10068
|
z(f, "0,0")
|
|
10051
10069
|
);
|
|
10052
|
-
|
|
10070
|
+
C.useEffect(() => {
|
|
10053
10071
|
o(a), n(k.GOALS_VIEW);
|
|
10054
|
-
}, []),
|
|
10072
|
+
}, []), C.useEffect(() => {
|
|
10055
10073
|
i && c().finally();
|
|
10056
10074
|
}, [i]);
|
|
10057
10075
|
const S = () => {
|
|
@@ -10152,21 +10170,21 @@ const wh = /^[ a-zA-ZÀ-ÿ0-9]+$/, Sh = 50, fa = 65, Th = ({
|
|
|
10152
10170
|
height: A = "calc(100dvh - 120px)",
|
|
10153
10171
|
onSelect: e
|
|
10154
10172
|
}) => {
|
|
10155
|
-
const { isLoading: n, merchants: r, loadMerchants: a } = Hc(), { common: i } = I(), [o, s] =
|
|
10156
|
-
|
|
10173
|
+
const { isLoading: n, merchants: r, loadMerchants: a } = Hc(), { common: i } = I(), [o, s] = C.useState("");
|
|
10174
|
+
C.useEffect(() => {
|
|
10157
10175
|
a().finally();
|
|
10158
10176
|
}, [a]);
|
|
10159
|
-
const c = (
|
|
10160
|
-
e(
|
|
10161
|
-
}, h = async (
|
|
10162
|
-
(!
|
|
10163
|
-
}, d =
|
|
10177
|
+
const c = (g) => {
|
|
10178
|
+
e(g);
|
|
10179
|
+
}, h = async (g) => {
|
|
10180
|
+
(!g || wh.test(g)) && g.length <= Sh && (s(g), await a(g));
|
|
10181
|
+
}, d = C.useRef(null), u = Ga({
|
|
10164
10182
|
count: r.length,
|
|
10165
10183
|
getScrollElement: () => d.current,
|
|
10166
10184
|
estimateSize: () => fa,
|
|
10167
10185
|
overscan: 5
|
|
10168
10186
|
});
|
|
10169
|
-
return
|
|
10187
|
+
return C.useEffect(() => u.measure(), [r]), /* @__PURE__ */ l(y, { className: "mx-mrt-lookup", children: [
|
|
10170
10188
|
/* @__PURE__ */ t(
|
|
10171
10189
|
cn,
|
|
10172
10190
|
{
|
|
@@ -10180,14 +10198,14 @@ const wh = /^[ a-zA-ZÀ-ÿ0-9]+$/, Sh = 50, fa = 65, Th = ({
|
|
|
10180
10198
|
/* @__PURE__ */ t(fe, { sx: { boxShadow: "none" }, children: /* @__PURE__ */ t(nA, { children: /* @__PURE__ */ l(O, { height: A, overflow: "auto", ref: d, children: [
|
|
10181
10199
|
/* @__PURE__ */ l(O, { height: u.getTotalSize(), position: "relative", children: [
|
|
10182
10200
|
n && /* @__PURE__ */ t(QA, { label: "Loading...", size: 32 }),
|
|
10183
|
-
!n && u.getVirtualItems().length > 0 && u.getVirtualItems().map((
|
|
10184
|
-
const f = r[
|
|
10201
|
+
!n && u.getVirtualItems().length > 0 && u.getVirtualItems().map((g) => {
|
|
10202
|
+
const f = r[g.index];
|
|
10185
10203
|
return /* @__PURE__ */ l(
|
|
10186
10204
|
O,
|
|
10187
10205
|
{
|
|
10188
10206
|
height: fa,
|
|
10189
10207
|
position: "absolute",
|
|
10190
|
-
sx: { transform: `translateY(${
|
|
10208
|
+
sx: { transform: `translateY(${g.start}px)` },
|
|
10191
10209
|
width: "100%",
|
|
10192
10210
|
children: [
|
|
10193
10211
|
/* @__PURE__ */ t(Y, { disableGutters: !0, disablePadding: !0, children: /* @__PURE__ */ l(dA, { onClick: () => c(f.guid), children: [
|
|
@@ -10249,22 +10267,22 @@ const Bi = 13, Ih = (A, e) => A.filter((n) => {
|
|
|
10249
10267
|
const o = e.filter(
|
|
10250
10268
|
({ year_month: d }) => d === parseInt(XA(IA(i), "yyyyMM"))
|
|
10251
10269
|
), s = A.map((d) => {
|
|
10252
|
-
const u = o.find((f) => f.account_guid === d.guid),
|
|
10270
|
+
const u = o.find((f) => f.account_guid === d.guid), g = {
|
|
10253
10271
|
change: 0,
|
|
10254
10272
|
guid: d.guid,
|
|
10255
10273
|
name: d.name,
|
|
10256
10274
|
type: d.account_type,
|
|
10257
10275
|
balance: 0
|
|
10258
10276
|
};
|
|
10259
|
-
if (!u && a.length === 0 && !d.balance) return
|
|
10277
|
+
if (!u && a.length === 0 && !d.balance) return g;
|
|
10260
10278
|
if (!u && a.length === 0)
|
|
10261
10279
|
return {
|
|
10262
|
-
...
|
|
10280
|
+
...g,
|
|
10263
10281
|
value: fr(d) ? -(d.balance ?? 0) : d.balance ?? 0
|
|
10264
10282
|
};
|
|
10265
10283
|
if (!u) {
|
|
10266
10284
|
const f = a[0].accounts.find((m) => m.guid === d.guid);
|
|
10267
|
-
return f ||
|
|
10285
|
+
return f || g;
|
|
10268
10286
|
}
|
|
10269
10287
|
return {
|
|
10270
10288
|
change: u.transaction_total,
|
|
@@ -10386,12 +10404,12 @@ const Rh = ({
|
|
|
10386
10404
|
onMouseLeave: a,
|
|
10387
10405
|
selectedData: i
|
|
10388
10406
|
}) => {
|
|
10389
|
-
const { isMobile: o } = MA(), { availableWidth: s } =
|
|
10407
|
+
const { isMobile: o } = MA(), { availableWidth: s } = Ye(), c = re(), h = s - 320, d = A.map((m) => ({
|
|
10390
10408
|
x: XA(IA(m.x), "MMM"),
|
|
10391
10409
|
y: m.y
|
|
10392
|
-
})), u = i ? { index: A.findIndex((m) => m.x === i.x) } : void 0,
|
|
10410
|
+
})), u = i ? { index: A.findIndex((m) => m.x === i.x) } : void 0, g = e ? { index: A.findIndex((m) => m.x === e.x) } : void 0, f = (m) => ({
|
|
10393
10411
|
fill: m === u?.index ? c.palette.success.main : "",
|
|
10394
|
-
filter: m ===
|
|
10412
|
+
filter: m === g?.index ? `drop-shadow(0px 0px 10px ${c.palette.success.main})` : "none",
|
|
10395
10413
|
stroke: c.palette.success.main
|
|
10396
10414
|
});
|
|
10397
10415
|
return /* @__PURE__ */ t(
|
|
@@ -10420,12 +10438,12 @@ const Rh = ({
|
|
|
10420
10438
|
onMouseEnter: i,
|
|
10421
10439
|
onMouseLeave: o
|
|
10422
10440
|
}) => {
|
|
10423
|
-
const [s, c] =
|
|
10441
|
+
const [s, c] = C.useState({
|
|
10424
10442
|
color: ""
|
|
10425
10443
|
});
|
|
10426
|
-
return
|
|
10444
|
+
return C.useEffect(() => {
|
|
10427
10445
|
c(e(A));
|
|
10428
|
-
}, [n, r]), /* @__PURE__ */ l(
|
|
10446
|
+
}, [n, r]), /* @__PURE__ */ l(C.Fragment, { children: [
|
|
10429
10447
|
/* @__PURE__ */ t(
|
|
10430
10448
|
Y,
|
|
10431
10449
|
{
|
|
@@ -10466,13 +10484,13 @@ const Rh = ({
|
|
|
10466
10484
|
selectedData: o
|
|
10467
10485
|
}) => {
|
|
10468
10486
|
const { net_worth: s } = I(), c = re(), h = (d) => {
|
|
10469
|
-
const u = d.x === e?.x,
|
|
10487
|
+
const u = d.x === e?.x, g = d.x === o?.x, f = {
|
|
10470
10488
|
backgroundColor: "inherit",
|
|
10471
10489
|
borderBottom: "inherit",
|
|
10472
10490
|
color: "inherit",
|
|
10473
10491
|
padding: "12px"
|
|
10474
10492
|
};
|
|
10475
|
-
return u && (f.color =
|
|
10493
|
+
return u && (f.color = g ? "inherit" : f.color, f.backgroundColor = c.palette.action.hover), g && (f.backgroundColor = c.palette.primary.main, f.borderBottom = c.palette.border.light, f.color = c.palette.common.white), f;
|
|
10476
10494
|
};
|
|
10477
10495
|
return /* @__PURE__ */ l(y, { direction: "column", width: 320, children: [
|
|
10478
10496
|
/* @__PURE__ */ l(nA, { children: [
|
|
@@ -10485,7 +10503,7 @@ const Rh = ({
|
|
|
10485
10503
|
isHovered: d.x === e?.x,
|
|
10486
10504
|
isSelected: d.x === o?.x,
|
|
10487
10505
|
item: d,
|
|
10488
|
-
onItemClick: (
|
|
10506
|
+
onItemClick: (g) => n(g, u),
|
|
10489
10507
|
onMouseEnter: () => a(u),
|
|
10490
10508
|
onMouseLeave: () => i()
|
|
10491
10509
|
},
|
|
@@ -10532,7 +10550,7 @@ const Rh = ({
|
|
|
10532
10550
|
/* @__PURE__ */ t(mr, { currencyLabel: n.this_month, netWorth: a, theme: r })
|
|
10533
10551
|
] });
|
|
10534
10552
|
}, Fh = T(Gh), Xh = ({ accounts: A, name: e, icon: n }) => {
|
|
10535
|
-
const [r, a] =
|
|
10553
|
+
const [r, a] = C.useState(!1);
|
|
10536
10554
|
return /* @__PURE__ */ l(eA, { children: [
|
|
10537
10555
|
/* @__PURE__ */ t(Y, { sx: (i) => ({ backgroundColor: i.palette.background.paper }), children: /* @__PURE__ */ l(dA, { onClick: () => a(!r), children: [
|
|
10538
10556
|
n && /* @__PURE__ */ t(te, { children: /* @__PURE__ */ t(M, { name: n, size: 24, sx: { mr: 12 } }) }),
|
|
@@ -10641,7 +10659,7 @@ const Rh = ({
|
|
|
10641
10659
|
] })
|
|
10642
10660
|
}
|
|
10643
10661
|
) }),
|
|
10644
|
-
e?.map((s) => /* @__PURE__ */ l(
|
|
10662
|
+
e?.map((s) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
10645
10663
|
/* @__PURE__ */ t(Y, { sx: { backgroundColor: o.palette.background.paper, py: 14 }, children: /* @__PURE__ */ t(
|
|
10646
10664
|
tA,
|
|
10647
10665
|
{
|
|
@@ -10700,17 +10718,17 @@ const Rh = ({
|
|
|
10700
10718
|
loadChartData: h,
|
|
10701
10719
|
loadNetWorthData: d,
|
|
10702
10720
|
netWorthChartData: u,
|
|
10703
|
-
selectedData:
|
|
10721
|
+
selectedData: g,
|
|
10704
10722
|
setHoveredData: f,
|
|
10705
10723
|
setSelectedData: m
|
|
10706
|
-
} = zc(), { isMobile: v } = MA(), { onEvent: E } = V(), [S, L] =
|
|
10724
|
+
} = zc(), { isMobile: v } = MA(), { onEvent: E } = V(), [S, L] = C.useState(!1), [w, D] = C.useState(6), [P, N] = C.useState(!1), [x, R] = C.useState(!1), j = async () => {
|
|
10707
10725
|
await d(n), await h(w), L(!0);
|
|
10708
10726
|
};
|
|
10709
|
-
|
|
10727
|
+
C.useEffect(() => {
|
|
10710
10728
|
E(k.NET_WORTH_VIEW), r(i);
|
|
10711
|
-
}, []),
|
|
10729
|
+
}, []), C.useEffect(() => {
|
|
10712
10730
|
e && j();
|
|
10713
|
-
}, [e, n]),
|
|
10731
|
+
}, [e, n]), C.useEffect(() => {
|
|
10714
10732
|
E(k.NET_WORTH_WIDGET_CLICK_TIMEFRAME, { time_period: w + "M" }), h(w);
|
|
10715
10733
|
}, [w]);
|
|
10716
10734
|
const F = (cA, vA) => {
|
|
@@ -10731,7 +10749,7 @@ const Rh = ({
|
|
|
10731
10749
|
onDataClick: F,
|
|
10732
10750
|
onMouseEnter: X,
|
|
10733
10751
|
onMouseLeave: Q,
|
|
10734
|
-
selectedData:
|
|
10752
|
+
selectedData: g
|
|
10735
10753
|
};
|
|
10736
10754
|
return S ? /* @__PURE__ */ t(
|
|
10737
10755
|
ue,
|
|
@@ -10747,7 +10765,7 @@ const Rh = ({
|
|
|
10747
10765
|
sx: { p: v ? 0 : 48 },
|
|
10748
10766
|
title: a.net_worth,
|
|
10749
10767
|
children: S && /* @__PURE__ */ l(eA, { children: [
|
|
10750
|
-
|
|
10768
|
+
g && /* @__PURE__ */ t(Fh, { hoveredData: c, selectedData: g }),
|
|
10751
10769
|
/* @__PURE__ */ l(
|
|
10752
10770
|
y,
|
|
10753
10771
|
{
|
|
@@ -11003,7 +11021,7 @@ const Ln = ({
|
|
|
11003
11021
|
] }) }),
|
|
11004
11022
|
/* @__PURE__ */ t(q, { sx: { ml: e ? 0 : 24 } })
|
|
11005
11023
|
] }), he = () => {
|
|
11006
|
-
if (!
|
|
11024
|
+
if (!C.useContext(ot))
|
|
11007
11025
|
throw new Error("useCategoryUiStore() must be used within the GlobalDataContext");
|
|
11008
11026
|
return TA().uiStore;
|
|
11009
11027
|
}, r1 = () => {
|
|
@@ -11012,7 +11030,7 @@ const Ln = ({
|
|
|
11012
11030
|
(r) => r.member_guid === n.guid && n.successfully_aggregated_at && r.guid !== e.guid
|
|
11013
11031
|
);
|
|
11014
11032
|
}, a1 = () => {
|
|
11015
|
-
const [A, e] =
|
|
11033
|
+
const [A, e] = C.useState(!1), [n, r] = C.useState(!1), [a, i] = C.useState(!1), [o, s] = C.useState({}), { selectedAccount: c } = he(), { mergeAccounts: h, updateAccount: d } = TA(), { accounts: u } = I(), g = r1(), { onEvent: f } = V(), m = (E) => {
|
|
11016
11034
|
d({
|
|
11017
11035
|
...c,
|
|
11018
11036
|
...E
|
|
@@ -11048,7 +11066,7 @@ const Ln = ({
|
|
|
11048
11066
|
children: /* @__PURE__ */ t(M, { name: "chevron_right" })
|
|
11049
11067
|
}
|
|
11050
11068
|
),
|
|
11051
|
-
|
|
11069
|
+
g.length > 0 && /* @__PURE__ */ t(
|
|
11052
11070
|
Ln,
|
|
11053
11071
|
{
|
|
11054
11072
|
isLast: !0,
|
|
@@ -11087,9 +11105,9 @@ const Ln = ({
|
|
|
11087
11105
|
isOpen: n,
|
|
11088
11106
|
onClose: () => r(!1),
|
|
11089
11107
|
title: u.mark_as_duplicate,
|
|
11090
|
-
children: /* @__PURE__ */ t(nA, { children:
|
|
11091
|
-
const S =
|
|
11092
|
-
return /* @__PURE__ */ l(
|
|
11108
|
+
children: /* @__PURE__ */ t(nA, { children: g.map((E) => {
|
|
11109
|
+
const S = g.indexOf(E) === g.length - 1;
|
|
11110
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
11093
11111
|
/* @__PURE__ */ t(
|
|
11094
11112
|
hn,
|
|
11095
11113
|
{
|
|
@@ -11284,7 +11302,7 @@ const Ln = ({
|
|
|
11284
11302
|
gridColumn: 1,
|
|
11285
11303
|
zIndex: 2
|
|
11286
11304
|
}, o1 = () => {
|
|
11287
|
-
const [A, e] =
|
|
11305
|
+
const [A, e] = C.useState(!1), {
|
|
11288
11306
|
palette: { mode: n }
|
|
11289
11307
|
} = CA(), { selectedMember: r } = he(), { accounts: a, connect: i } = I(), o = Ki(r, i), s = $a.includes(r.connection_status) ? {
|
|
11290
11308
|
color: "error.main",
|
|
@@ -11356,7 +11374,7 @@ const Ln = ({
|
|
|
11356
11374
|
)
|
|
11357
11375
|
] });
|
|
11358
11376
|
}, s1 = T(o1), c1 = ({ field: A, isOpen: e, onClose: n }) => {
|
|
11359
|
-
const { updateAccount: r } = TA(), { selectedAccount: a } = he(), { accounts: i } = I(), [o, s] =
|
|
11377
|
+
const { updateAccount: r } = TA(), { selectedAccount: a } = he(), { accounts: i } = I(), [o, s] = C.useState(a[A.name]), [c, h] = C.useState(""), [d, u] = C.useState(!0), g = () => {
|
|
11360
11378
|
s(""), h(""), n();
|
|
11361
11379
|
}, f = () => {
|
|
11362
11380
|
switch (A.type) {
|
|
@@ -11422,7 +11440,7 @@ const Ln = ({
|
|
|
11422
11440
|
a[A.name] !== o && r({
|
|
11423
11441
|
...a,
|
|
11424
11442
|
[A.name]: o
|
|
11425
|
-
}),
|
|
11443
|
+
}), g();
|
|
11426
11444
|
}, v = (E) => {
|
|
11427
11445
|
s(E.target.value), A.validation && h(A.validation(E.target.value));
|
|
11428
11446
|
};
|
|
@@ -11435,27 +11453,27 @@ const Ln = ({
|
|
|
11435
11453
|
},
|
|
11436
11454
|
disablePrimaryButton: !!c || !d,
|
|
11437
11455
|
isOpen: e,
|
|
11438
|
-
onClose:
|
|
11456
|
+
onClose: g,
|
|
11439
11457
|
onPrimaryAction: m,
|
|
11440
11458
|
primaryText: i.save,
|
|
11441
11459
|
children: f()
|
|
11442
11460
|
}
|
|
11443
11461
|
);
|
|
11444
11462
|
}, l1 = T(c1), d1 = () => {
|
|
11445
|
-
const A = window.app?.config, { onEvent: e } = V(), { selectedAccount: n } = he(), { accounts: r } = I(), a = Mu(n, r), i = n.member_is_managed_by_user || !n.member_is_managed_by_user && A.enable_renaming_home_accounts, [o, s] =
|
|
11463
|
+
const A = window.app?.config, { onEvent: e } = V(), { selectedAccount: n } = he(), { accounts: r } = I(), a = Mu(n, r), i = n.member_is_managed_by_user || !n.member_is_managed_by_user && A.enable_renaming_home_accounts, [o, s] = C.useState(!1), [c, h] = C.useState(a[0]), d = a.filter(
|
|
11446
11464
|
(u) => i || n[u.name] || n[u.name] === 0
|
|
11447
11465
|
);
|
|
11448
11466
|
return /* @__PURE__ */ l(eA, { children: [
|
|
11449
11467
|
d.map((u) => {
|
|
11450
|
-
const
|
|
11468
|
+
const g = n[u.name] || n[u.name] === 0, f = d.indexOf(u) === d.length - 1, m = /* @__PURE__ */ t(
|
|
11451
11469
|
tA,
|
|
11452
11470
|
{
|
|
11453
11471
|
disableTypography: !0,
|
|
11454
11472
|
primary: /* @__PURE__ */ t(p, { sx: { fontSize: 11 }, children: u.label }),
|
|
11455
|
-
secondary: /* @__PURE__ */ t(p, { bold: !0, sx: { fontSize: 15 }, children:
|
|
11473
|
+
secondary: /* @__PURE__ */ t(p, { bold: !0, sx: { fontSize: 15 }, children: g ? u.valueFormatter(n[u.name]) : u.placeholder })
|
|
11456
11474
|
}
|
|
11457
11475
|
);
|
|
11458
|
-
return /* @__PURE__ */ t(
|
|
11476
|
+
return /* @__PURE__ */ t(C.Fragment, { children: i ? /* @__PURE__ */ l(eA, { children: [
|
|
11459
11477
|
/* @__PURE__ */ t(Y, { sx: { backgroundColor: "background.paper", px: 0 }, children: /* @__PURE__ */ l(
|
|
11460
11478
|
dA,
|
|
11461
11479
|
{
|
|
@@ -11469,7 +11487,7 @@ const Ln = ({
|
|
|
11469
11487
|
}
|
|
11470
11488
|
) }),
|
|
11471
11489
|
/* @__PURE__ */ t(q, { sx: { ml: f ? 0 : 24 } })
|
|
11472
|
-
] }) :
|
|
11490
|
+
] }) : g && /* @__PURE__ */ l(eA, { children: [
|
|
11473
11491
|
/* @__PURE__ */ t(Y, { sx: { backgroundColor: "background.paper", px: 24 }, children: m }),
|
|
11474
11492
|
/* @__PURE__ */ t(q, { sx: { ml: f ? 0 : 24 } })
|
|
11475
11493
|
] }) }, u.name);
|
|
@@ -11485,14 +11503,14 @@ const Ln = ({
|
|
|
11485
11503
|
] });
|
|
11486
11504
|
}, u1 = T(d1), h1 = () => {
|
|
11487
11505
|
const { onEvent: A } = V();
|
|
11488
|
-
return
|
|
11506
|
+
return C.useEffect(() => A(k.ACCOUNT_DETAILS_VIEW), []), /* @__PURE__ */ l(nA, { children: [
|
|
11489
11507
|
/* @__PURE__ */ t(u1, {}),
|
|
11490
11508
|
/* @__PURE__ */ t(s1, {}),
|
|
11491
11509
|
/* @__PURE__ */ t(i1, {})
|
|
11492
11510
|
] });
|
|
11493
11511
|
}, g1 = T(h1), C1 = ({ setTabValue: A }) => {
|
|
11494
|
-
const [e, n] =
|
|
11495
|
-
if (
|
|
11512
|
+
const [e, n] = C.useState(!1), { selectedMember: r } = he(), { accounts: a, connect: i } = I(), o = r.connection_status && $a.includes(r.connection_status);
|
|
11513
|
+
if (C.useEffect(() => {
|
|
11496
11514
|
o && A(1);
|
|
11497
11515
|
}, [o]), !o) return;
|
|
11498
11516
|
const s = Ki(r, i);
|
|
@@ -11547,13 +11565,13 @@ const Ln = ({
|
|
|
11547
11565
|
)
|
|
11548
11566
|
] });
|
|
11549
11567
|
}, f1 = T(C1), m1 = () => {
|
|
11550
|
-
const [A, e] =
|
|
11551
|
-
return
|
|
11568
|
+
const [A, e] = C.useState(""), { onEvent: n } = V(), { selectedAccount: r } = he(), { accounts: a } = I(), { setFilter: i, sortedTransactions: o } = uA(), s = C.useMemo(() => o.find((c) => c.guid === A), [A]);
|
|
11569
|
+
return C.useEffect(() => {
|
|
11552
11570
|
i({
|
|
11553
11571
|
dateRange: { start: rs(as(), 90), end: is() },
|
|
11554
11572
|
accounts: [r.guid]
|
|
11555
11573
|
});
|
|
11556
|
-
}, [r]),
|
|
11574
|
+
}, [r]), C.useEffect(() => n(k.ACCOUNT_DETAILS_VIEW_TRANSACTIONS), []), /* @__PURE__ */ l(eA, { children: [
|
|
11557
11575
|
/* @__PURE__ */ t(Ge, { onClick: e }),
|
|
11558
11576
|
s && /* @__PURE__ */ t(
|
|
11559
11577
|
lA,
|
|
@@ -11567,7 +11585,7 @@ const Ln = ({
|
|
|
11567
11585
|
)
|
|
11568
11586
|
] });
|
|
11569
11587
|
}, p1 = T(m1), v1 = () => {
|
|
11570
|
-
const [A, e] =
|
|
11588
|
+
const [A, e] = C.useState(0), { accounts: n } = I();
|
|
11571
11589
|
return /* @__PURE__ */ l(eA, { children: [
|
|
11572
11590
|
/* @__PURE__ */ t(f1, { setTabValue: e }),
|
|
11573
11591
|
/* @__PURE__ */ l(
|
|
@@ -11651,8 +11669,8 @@ const Ln = ({
|
|
|
11651
11669
|
}
|
|
11652
11670
|
) });
|
|
11653
11671
|
}, x1 = T(O1), P1 = ({ sx: A }) => {
|
|
11654
|
-
const { loadMonthlyCategoryTotals: e } = PA(), { isInitialized: n } = nr(), { selectedAccount: r } = he(), [a, i] =
|
|
11655
|
-
return
|
|
11672
|
+
const { loadMonthlyCategoryTotals: e } = PA(), { isInitialized: n } = nr(), { selectedAccount: r } = he(), [a, i] = C.useState(!1);
|
|
11673
|
+
return C.useEffect(() => {
|
|
11656
11674
|
n && e([r]).finally(() => {
|
|
11657
11675
|
i(!0);
|
|
11658
11676
|
});
|
|
@@ -11712,8 +11730,8 @@ const Ln = ({
|
|
|
11712
11730
|
h && /* @__PURE__ */ t(y, { children: /* @__PURE__ */ t(N1, {}) })
|
|
11713
11731
|
] });
|
|
11714
11732
|
}, _1 = T(M1), R1 = () => {
|
|
11715
|
-
const [A, e] =
|
|
11716
|
-
return
|
|
11733
|
+
const [A, e] = C.useState(""), { accounts: n } = I(), { selectedAccounts: r } = fA(), { setSelectedAccount: a, setSelectedMember: i } = he(), { members: o } = TA(), { onEvent: s } = V(), c = [...new Set(r.map((d) => d.account_type))], h = r.find((d) => A === d.guid);
|
|
11734
|
+
return C.useEffect(() => {
|
|
11717
11735
|
if (h) {
|
|
11718
11736
|
a(h);
|
|
11719
11737
|
const d = o.find((u) => u.guid === h?.member_guid) || {};
|
|
@@ -11721,7 +11739,7 @@ const Ln = ({
|
|
|
11721
11739
|
}
|
|
11722
11740
|
}, [h, A]), /* @__PURE__ */ l(O, { sx: { pt: 24 }, children: [
|
|
11723
11741
|
c.map((d) => {
|
|
11724
|
-
const u = r.filter((m) => m.account_type === d),
|
|
11742
|
+
const u = r.filter((m) => m.account_type === d), g = u.reduce(
|
|
11725
11743
|
(m, v) => (v.available_balance || v.balance || 0) + m,
|
|
11726
11744
|
0
|
|
11727
11745
|
), f = (m) => {
|
|
@@ -11742,13 +11760,13 @@ const Ln = ({
|
|
|
11742
11760
|
sx: { display: "flex", justifyContent: "space-between" },
|
|
11743
11761
|
children: [
|
|
11744
11762
|
/* @__PURE__ */ t(p, { bold: !0, variant: "Body", children: n.account_types[d] }),
|
|
11745
|
-
/* @__PURE__ */ t(p, { bold: !0, variant: "Body", children: z(
|
|
11763
|
+
/* @__PURE__ */ t(p, { bold: !0, variant: "Body", children: z(g, "0,0.00") })
|
|
11746
11764
|
]
|
|
11747
11765
|
}
|
|
11748
11766
|
) }),
|
|
11749
11767
|
children: /* @__PURE__ */ t(wr, { children: u.map((m) => {
|
|
11750
11768
|
const v = r.indexOf(m) === r.length - 1, E = u.indexOf(m) === u.length - 1;
|
|
11751
|
-
return /* @__PURE__ */ l(
|
|
11769
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
11752
11770
|
/* @__PURE__ */ t(
|
|
11753
11771
|
hn,
|
|
11754
11772
|
{
|
|
@@ -11792,8 +11810,8 @@ const Ln = ({
|
|
|
11792
11810
|
title: n
|
|
11793
11811
|
}) => {
|
|
11794
11812
|
let r;
|
|
11795
|
-
const { refreshAccounts: a } = TA(), { loadWidget: i } = ui(), { connect: o } = I(), s = re(), [c, h] =
|
|
11796
|
-
return
|
|
11813
|
+
const { refreshAccounts: a } = TA(), { loadWidget: i } = ui(), { connect: o } = I(), s = re(), [c, h] = C.useState(!1), [d, u] = C.useState(!1);
|
|
11814
|
+
return C.useEffect(() => (e ? (h(!0), i({ widget: "connections_widget", mode: s.palette.mode }).then((g) => {
|
|
11797
11815
|
r = new Uo({
|
|
11798
11816
|
container: `#${Qr}`,
|
|
11799
11817
|
style: {
|
|
@@ -11801,7 +11819,7 @@ const Ln = ({
|
|
|
11801
11819
|
width: "100%",
|
|
11802
11820
|
position: "absolute"
|
|
11803
11821
|
},
|
|
11804
|
-
url:
|
|
11822
|
+
url: g.url,
|
|
11805
11823
|
onSsoUrlLoadError: () => {
|
|
11806
11824
|
h(!1), u(!0);
|
|
11807
11825
|
},
|
|
@@ -11827,16 +11845,16 @@ const Ln = ({
|
|
|
11827
11845
|
}
|
|
11828
11846
|
);
|
|
11829
11847
|
}, B1 = T(z1), K1 = ({ onBackClick: A, sx: e = {} }) => {
|
|
11830
|
-
const [n, r] =
|
|
11831
|
-
|
|
11848
|
+
const [n, r] = C.useState(!1), [a, i] = C.useState(!1), { accounts: o, refreshMembers: s } = TA(), { accounts: c } = I(), { setSelectedAccounts: h, selectedAccountGuids: d } = fA(), { isDesktop: u } = MA(), { onEvent: g } = V();
|
|
11849
|
+
C.useEffect(() => {
|
|
11832
11850
|
h(o);
|
|
11833
11851
|
}, [o]);
|
|
11834
11852
|
const f = () => {
|
|
11835
11853
|
i(!0), s().finally(() => {
|
|
11836
11854
|
i(!1);
|
|
11837
|
-
}),
|
|
11855
|
+
}), g(k.ACCOUNTS_CLICK_SYNC);
|
|
11838
11856
|
}, m = () => {
|
|
11839
|
-
r(!0),
|
|
11857
|
+
r(!0), g(k.ACCOUNTS_CLICK_CONNECT);
|
|
11840
11858
|
};
|
|
11841
11859
|
return /* @__PURE__ */ t(
|
|
11842
11860
|
ue,
|
|
@@ -11854,7 +11872,7 @@ const Ln = ({
|
|
|
11854
11872
|
onClick: f
|
|
11855
11873
|
}
|
|
11856
11874
|
],
|
|
11857
|
-
onAccountsFilterClick: () =>
|
|
11875
|
+
onAccountsFilterClick: () => g(k.ACCOUNTS_CLICK_FILTER),
|
|
11858
11876
|
onBackClick: A,
|
|
11859
11877
|
sx: e,
|
|
11860
11878
|
title: c.title,
|
|
@@ -11875,11 +11893,11 @@ const Ln = ({
|
|
|
11875
11893
|
}
|
|
11876
11894
|
);
|
|
11877
11895
|
}, af = T(K1), q1 = (A, e) => A.filter((n) => e.includes(n.guid)).slice(0, 3), k1 = ({ onPrimaryCtaClick: A, sx: e }) => {
|
|
11878
|
-
const { accounts: n } = TA(), { accounts: r } = I(), { selectedAccountGuids: a } = fA(), [i, o] =
|
|
11879
|
-
return
|
|
11896
|
+
const { accounts: n } = TA(), { accounts: r } = I(), { selectedAccountGuids: a } = fA(), [i, o] = C.useState(n);
|
|
11897
|
+
return C.useEffect(() => {
|
|
11880
11898
|
o(q1(n, a));
|
|
11881
11899
|
}, [n, a]), /* @__PURE__ */ t(
|
|
11882
|
-
|
|
11900
|
+
Ve,
|
|
11883
11901
|
{
|
|
11884
11902
|
className: "mx-exp-accounts-miniwidget",
|
|
11885
11903
|
onPrimaryCtaClick: A,
|
|
@@ -11890,7 +11908,7 @@ const Ln = ({
|
|
|
11890
11908
|
i.length < 1 && /* @__PURE__ */ t(Y, { sx: { justifyContent: "center" }, children: r.no_accounts }),
|
|
11891
11909
|
i.map((s, c) => {
|
|
11892
11910
|
const h = i.indexOf(s) === i.length - 1;
|
|
11893
|
-
return /* @__PURE__ */ l(
|
|
11911
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
11894
11912
|
/* @__PURE__ */ t(
|
|
11895
11913
|
hn,
|
|
11896
11914
|
{
|
|
@@ -12347,7 +12365,7 @@ const Ln = ({
|
|
|
12347
12365
|
), F1 = ({ onPrimaryCtaClick: A, sx: e = {} }) => {
|
|
12348
12366
|
const { connect: n } = I();
|
|
12349
12367
|
return /* @__PURE__ */ t(
|
|
12350
|
-
|
|
12368
|
+
Ve,
|
|
12351
12369
|
{
|
|
12352
12370
|
className: "mx-exp-connect-miniwidget",
|
|
12353
12371
|
onPrimaryCtaClick: A,
|
|
@@ -12373,7 +12391,7 @@ const Ln = ({
|
|
|
12373
12391
|
);
|
|
12374
12392
|
}, X1 = T(F1), j1 = ({ onPrimaryCtaClick: A = () => {
|
|
12375
12393
|
}, sx: e }) => {
|
|
12376
|
-
const { connect: n } = I(), [r, a] =
|
|
12394
|
+
const { connect: n } = I(), [r, a] = C.useState(!1);
|
|
12377
12395
|
return /* @__PURE__ */ l(O, { "data-testid": "ConnectMiniWidget", children: [
|
|
12378
12396
|
/* @__PURE__ */ t(X1, { onPrimaryCtaClick: () => {
|
|
12379
12397
|
a(!0), A();
|
|
@@ -12594,7 +12612,7 @@ function ng({ bubble: A }) {
|
|
|
12594
12612
|
budgetColors: { mercury: r },
|
|
12595
12613
|
radius: a
|
|
12596
12614
|
} = A, i = `mercury-${n}`;
|
|
12597
|
-
|
|
12615
|
+
C.useEffect(() => {
|
|
12598
12616
|
VA.select(`.${i}`).selectAll(".status").remove(), VA.select(`.${i}`).append("path").transition().duration(tg).delay(0).attr("class", "status").attr("style", `fill: ${r}; fill-opacity: 1;`).attrTween("d", () => J1(A));
|
|
12599
12617
|
}, [A]);
|
|
12600
12618
|
const o = VA.arc().innerRadius((s) => s - 2 * wa).outerRadius((s) => s - wa).startAngle(0).endAngle(2 * Math.PI);
|
|
@@ -12606,14 +12624,14 @@ function ng({ bubble: A }) {
|
|
|
12606
12624
|
}
|
|
12607
12625
|
) });
|
|
12608
12626
|
}
|
|
12609
|
-
const
|
|
12627
|
+
const At = 75, Sa = 50;
|
|
12610
12628
|
function rg({ bubble: A, isDraggable: e, onClick: n = () => {
|
|
12611
12629
|
} }) {
|
|
12612
|
-
const [r, a] =
|
|
12613
|
-
if (
|
|
12630
|
+
const [r, a] = C.useState(!1);
|
|
12631
|
+
if (C.useEffect(() => {
|
|
12614
12632
|
document.fonts.ready.then(() => {
|
|
12615
12633
|
const S = VA.select(`.icon-${s}`), L = S.node()?.getComputedTextLength();
|
|
12616
|
-
S.attr("x", () => u <
|
|
12634
|
+
S.attr("x", () => u < At ? L ? L / 2 - 12 : 12 : L ? L / 2 - 16 : 16);
|
|
12617
12635
|
});
|
|
12618
12636
|
}, []), !A) return;
|
|
12619
12637
|
const {
|
|
@@ -12622,7 +12640,7 @@ function rg({ bubble: A, isDraggable: e, onClick: n = () => {
|
|
|
12622
12640
|
guid: h,
|
|
12623
12641
|
description: d,
|
|
12624
12642
|
radius: u,
|
|
12625
|
-
x:
|
|
12643
|
+
x: g,
|
|
12626
12644
|
y: f
|
|
12627
12645
|
} = A;
|
|
12628
12646
|
let m = 13;
|
|
@@ -12645,11 +12663,11 @@ function rg({ bubble: A, isDraggable: e, onClick: n = () => {
|
|
|
12645
12663
|
onMouseLeave: () => a(!1),
|
|
12646
12664
|
style: { cursor: e ? "pointer" : "default" },
|
|
12647
12665
|
textAnchor: "middle",
|
|
12648
|
-
x:
|
|
12666
|
+
x: g,
|
|
12649
12667
|
y: f,
|
|
12650
12668
|
children: [
|
|
12651
12669
|
/* @__PURE__ */ t(
|
|
12652
|
-
|
|
12670
|
+
it,
|
|
12653
12671
|
{
|
|
12654
12672
|
followCursor: !0,
|
|
12655
12673
|
open: r,
|
|
@@ -12664,14 +12682,14 @@ function rg({ bubble: A, isDraggable: e, onClick: n = () => {
|
|
|
12664
12682
|
className: `icon-${s}`,
|
|
12665
12683
|
component: "text",
|
|
12666
12684
|
name: s,
|
|
12667
|
-
size: u <=
|
|
12685
|
+
size: u <= At ? 24 : 32,
|
|
12668
12686
|
sx: {
|
|
12669
12687
|
fill: o
|
|
12670
12688
|
},
|
|
12671
12689
|
y: m
|
|
12672
12690
|
}
|
|
12673
12691
|
),
|
|
12674
|
-
u >
|
|
12692
|
+
u > At && /* @__PURE__ */ t(
|
|
12675
12693
|
p,
|
|
12676
12694
|
{
|
|
12677
12695
|
bold: !0,
|
|
@@ -12691,11 +12709,11 @@ function rg({ bubble: A, isDraggable: e, onClick: n = () => {
|
|
|
12691
12709
|
id: `budget-description-${h}-1`,
|
|
12692
12710
|
sx: { fill: o },
|
|
12693
12711
|
variant: "Body",
|
|
12694
|
-
y: u <=
|
|
12695
|
-
children: u <=
|
|
12712
|
+
y: u <= At ? 12 : 24,
|
|
12713
|
+
children: u <= At ? d.split(" ")[0] : d
|
|
12696
12714
|
}
|
|
12697
12715
|
),
|
|
12698
|
-
u <=
|
|
12716
|
+
u <= At && u > Sa && /* @__PURE__ */ t(
|
|
12699
12717
|
p,
|
|
12700
12718
|
{
|
|
12701
12719
|
component: "text",
|
|
@@ -12721,7 +12739,7 @@ const ag = ({
|
|
|
12721
12739
|
}
|
|
12722
12740
|
}) => {
|
|
12723
12741
|
const { detailedBudgets: a } = kA();
|
|
12724
|
-
return Ct =
|
|
12742
|
+
return Ct = C.useMemo(() => eg(a), [a]), C.useEffect(() => {
|
|
12725
12743
|
$1(Ct, A, e), n && Z1(Ct);
|
|
12726
12744
|
}, [Ct, A, e]), /* @__PURE__ */ t("svg", { height: A, style: { overflow: "visible" }, width: Math.abs(e), children: Ct.nodes().map((i) => /* @__PURE__ */ t(rg, { bubble: i, isDraggable: n, onClick: r }, i.guid)) });
|
|
12727
12745
|
}, ig = T(ag), og = () => {
|
|
@@ -12733,9 +12751,9 @@ const ag = ({
|
|
|
12733
12751
|
] });
|
|
12734
12752
|
}, Gi = T(
|
|
12735
12753
|
({ height: A, isDraggable: e = !1, shouldShowZeroState: n, unavailableWidth: r = 24 }) => {
|
|
12736
|
-
const { onEvent: a } = V(), { setSelectedBudget: i } = kA(), { isLoadingCategoryTotals: o } = PA(), { isInitialized: s } = fA(), { availableWidth: c } =
|
|
12737
|
-
i(
|
|
12738
|
-
budget_category:
|
|
12754
|
+
const { onEvent: a } = V(), { setSelectedBudget: i } = kA(), { isLoadingCategoryTotals: o } = PA(), { isInitialized: s } = fA(), { availableWidth: c } = Ye(), { isMobile: h } = MA(), d = C.useMemo(() => c - r, [c]), u = (g) => {
|
|
12755
|
+
i(g), a(k.BUDGETS_CLICK_BUDGET_CATEGORY, {
|
|
12756
|
+
budget_category: g.category.name,
|
|
12739
12757
|
click_type: "bubble"
|
|
12740
12758
|
});
|
|
12741
12759
|
};
|
|
@@ -12751,10 +12769,10 @@ const ag = ({
|
|
|
12751
12769
|
}
|
|
12752
12770
|
), sg = (A) => {
|
|
12753
12771
|
const e = CA(), { budgets: n, loadBudgets: r, setTheme: a } = kA(), { budgets: i } = I(), o = el(), s = n.length === 0;
|
|
12754
|
-
return
|
|
12772
|
+
return C.useEffect(() => {
|
|
12755
12773
|
a(e), r().finally();
|
|
12756
12774
|
}, []), /* @__PURE__ */ t(
|
|
12757
|
-
|
|
12775
|
+
Ve,
|
|
12758
12776
|
{
|
|
12759
12777
|
primaryCtaLabel: s ? i.get_started_cta : i.details_cta,
|
|
12760
12778
|
title: i.budgets_title,
|
|
@@ -12806,13 +12824,13 @@ const ag = ({
|
|
|
12806
12824
|
};
|
|
12807
12825
|
return /* @__PURE__ */ l(ve, { elevation: 2, sx: { borderRadius: 2 }, children: [
|
|
12808
12826
|
/* @__PURE__ */ t(We, { sx: { pb: 8, pl: 24 }, title: /* @__PURE__ */ t(xt, { children: e.budget_categories_title }) }),
|
|
12809
|
-
/* @__PURE__ */ t(De, { sx: { p: 0, ":last-child": { p: 0 } }, children: /* @__PURE__ */ t(nA, { children: n.map((i) => /* @__PURE__ */ l(
|
|
12827
|
+
/* @__PURE__ */ t(De, { sx: { p: 0, ":last-child": { p: 0 } }, children: /* @__PURE__ */ t(nA, { children: n.map((i) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
12810
12828
|
/* @__PURE__ */ t(cg, { budget: i, onClick: a }),
|
|
12811
12829
|
/* @__PURE__ */ t(q, {})
|
|
12812
12830
|
] }, i.guid)) }) })
|
|
12813
12831
|
] });
|
|
12814
12832
|
}), dg = T(() => {
|
|
12815
|
-
const A = CA(), { onEvent: e } = V(), { accounts: n } = TA(), { budgets: r, common: a, recurring: i } = I(), { incomeCategories: o, spendCategories: s } = PA(), { detailedBudgets: c, totalBudgeted: h } = kA(), { projectedIncome: d } = HA(), { setFilter: u } = uA(), [
|
|
12833
|
+
const A = CA(), { onEvent: e } = V(), { accounts: n } = TA(), { budgets: r, common: a, recurring: i } = I(), { incomeCategories: o, spendCategories: s } = PA(), { detailedBudgets: c, totalBudgeted: h } = kA(), { projectedIncome: d } = HA(), { setFilter: u } = uA(), [g, f] = C.useState(!1), [m, v] = C.useMemo(() => {
|
|
12816
12834
|
const w = s.reduce((x, R) => x + R.totalAmount, 0);
|
|
12817
12835
|
let D = w / h;
|
|
12818
12836
|
D > 1 && (D = 1);
|
|
@@ -12825,7 +12843,7 @@ const ag = ({
|
|
|
12825
12843
|
}
|
|
12826
12844
|
];
|
|
12827
12845
|
return [w, N];
|
|
12828
|
-
}, [c, s]), [E, S] =
|
|
12846
|
+
}, [c, s]), [E, S] = C.useMemo(() => {
|
|
12829
12847
|
const w = Math.abs(
|
|
12830
12848
|
o.reduce((N, x) => N + x.totalAmount, 0)
|
|
12831
12849
|
);
|
|
@@ -12884,7 +12902,7 @@ const ag = ({
|
|
|
12884
12902
|
lA,
|
|
12885
12903
|
{
|
|
12886
12904
|
ariaLabelClose: a.close_aria,
|
|
12887
|
-
isOpen:
|
|
12905
|
+
isOpen: g,
|
|
12888
12906
|
onClose: () => f(!1),
|
|
12889
12907
|
title: i.manage_income,
|
|
12890
12908
|
children: /* @__PURE__ */ l(y, { gap: 4, children: [
|
|
@@ -12914,11 +12932,11 @@ const ag = ({
|
|
|
12914
12932
|
] });
|
|
12915
12933
|
}), hg = T(
|
|
12916
12934
|
({ category: A }) => {
|
|
12917
|
-
const { budgets: e } = I(), { budgets: n } = kA(), r =
|
|
12935
|
+
const { budgets: e } = I(), { budgets: n } = kA(), r = C.useMemo(() => {
|
|
12918
12936
|
const a = n.find((s) => s.category_guid === A.guid), i = z(A.totalAverageAmount, "0,0"), o = a ? _(e.recalculate_previous_budget, z(a.amount, "0,0")) : e.recalculate_new_budget;
|
|
12919
12937
|
return `${i} - ${o}`;
|
|
12920
12938
|
}, [e, n]);
|
|
12921
|
-
return /* @__PURE__ */ l(
|
|
12939
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
12922
12940
|
/* @__PURE__ */ t(Y, { children: /* @__PURE__ */ l(dA, { children: [
|
|
12923
12941
|
/* @__PURE__ */ t(OA, { children: /* @__PURE__ */ t(ne, { categoryGuid: A.guid, variant: "filled" }) }),
|
|
12924
12942
|
/* @__PURE__ */ t(tA, { primary: A.name, secondary: r })
|
|
@@ -12927,10 +12945,10 @@ const ag = ({
|
|
|
12927
12945
|
] }, A.guid);
|
|
12928
12946
|
}
|
|
12929
12947
|
), gg = ({ onRecalculateBudgets: A }) => {
|
|
12930
|
-
const { budgets: e, common: n } = I(), { spendCategories: r } = PA(), { recalculateBudgets: a, setAlert: i } = kA(), [o, s] =
|
|
12948
|
+
const { budgets: e, common: n } = I(), { spendCategories: r } = PA(), { recalculateBudgets: a, setAlert: i } = kA(), [o, s] = C.useState(!1), c = r.filter((d) => d.totalAverageAmount > 0), h = async () => {
|
|
12931
12949
|
await a(c), s(!1), i(e.alert_recalculated_budgets), A?.();
|
|
12932
12950
|
};
|
|
12933
|
-
return /* @__PURE__ */ l(
|
|
12951
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
12934
12952
|
/* @__PURE__ */ t(sA, { onClick: () => s(!0), sx: { mt: 24, mx: 24 }, variant: "text", children: e.recalculate_button }),
|
|
12935
12953
|
/* @__PURE__ */ t(p, { sx: { mx: 24, my: 16, textAlign: "center", whiteSpace: "wrap" }, variant: "Paragraph", children: e.recalculate_help }),
|
|
12936
12954
|
/* @__PURE__ */ t(
|
|
@@ -12978,10 +12996,10 @@ const ag = ({
|
|
|
12978
12996
|
)
|
|
12979
12997
|
] });
|
|
12980
12998
|
}, Cg = T(({ category: A, onAddBudget: e }) => {
|
|
12981
|
-
const { budgets: n, common: r } = I(), [a, i] =
|
|
12999
|
+
const { budgets: n, common: r } = I(), [a, i] = C.useState(!1), [o, s] = C.useState(
|
|
12982
13000
|
`${A.totalAmount === 0 ? "" : A.totalAmount}`
|
|
12983
13001
|
);
|
|
12984
|
-
return /* @__PURE__ */ l(
|
|
13002
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
12985
13003
|
/* @__PURE__ */ t(Y, { children: /* @__PURE__ */ l(dA, { onClick: () => i(!0), children: [
|
|
12986
13004
|
/* @__PURE__ */ t(OA, { children: /* @__PURE__ */ t(ne, { categoryGuid: A.guid }) }),
|
|
12987
13005
|
/* @__PURE__ */ t(
|
|
@@ -13071,11 +13089,11 @@ const ag = ({
|
|
|
13071
13089
|
)
|
|
13072
13090
|
] }) });
|
|
13073
13091
|
}), vg = T(({ category: A, parentBudget: e }) => {
|
|
13074
|
-
const { budgets: n, common: r } = I(), { setExpandedGuid: a, setOnSelect: i } = Fe(), { addBudget: o } = kA(), [s, c] =
|
|
13075
|
-
|
|
13092
|
+
const { budgets: n, common: r } = I(), { setExpandedGuid: a, setOnSelect: i } = Fe(), { addBudget: o } = kA(), [s, c] = C.useState(!1), [h, d] = C.useState(!1), [u, g] = C.useState(""), [f, m] = C.useState(void 0);
|
|
13093
|
+
C.useEffect(() => {
|
|
13076
13094
|
i((S) => {
|
|
13077
13095
|
const L = A.subCategories.find((w) => w.guid === S);
|
|
13078
|
-
L && (m(L),
|
|
13096
|
+
L && (m(L), g(`${L.currentAmount === 0 ? "" : L.currentAmount}`), d(!0));
|
|
13079
13097
|
});
|
|
13080
13098
|
}, []);
|
|
13081
13099
|
const v = () => {
|
|
@@ -13116,15 +13134,15 @@ const ag = ({
|
|
|
13116
13134
|
{
|
|
13117
13135
|
amount: u,
|
|
13118
13136
|
categoryName: f?.name || "",
|
|
13119
|
-
onAmountChanged:
|
|
13137
|
+
onAmountChanged: g
|
|
13120
13138
|
}
|
|
13121
13139
|
)
|
|
13122
13140
|
}
|
|
13123
13141
|
)
|
|
13124
13142
|
] });
|
|
13125
13143
|
}), Eg = T(({ budget: A }) => {
|
|
13126
|
-
const { category: e, subBudgets: n } = A, { budgets: r, common: a } = I(), { deleteBudget: i, selectedSubBudget: o, setSelectedSubBudget: s, updateBudget: c } = kA(), { filter: h, setFilter: d } = uA(), [u,
|
|
13127
|
-
|
|
13144
|
+
const { category: e, subBudgets: n } = A, { budgets: r, common: a } = I(), { deleteBudget: i, selectedSubBudget: o, setSelectedSubBudget: s, updateBudget: c } = kA(), { filter: h, setFilter: d } = uA(), [u, g] = C.useState(!1), [f, m] = C.useState(!1), [v, E] = C.useState("");
|
|
13145
|
+
C.useEffect(() => {
|
|
13128
13146
|
o && (E(`${o.amount}`), d({
|
|
13129
13147
|
...h,
|
|
13130
13148
|
custom: (D) => D.category_guid === o.category_guid
|
|
@@ -13143,9 +13161,9 @@ const ag = ({
|
|
|
13143
13161
|
custom: (D) => D.category_guid === A.category_guid || D.top_level_category_guid === A.category_guid
|
|
13144
13162
|
}), s(void 0);
|
|
13145
13163
|
};
|
|
13146
|
-
return /* @__PURE__ */ l(
|
|
13164
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
13147
13165
|
/* @__PURE__ */ l(nA, { sx: { bgcolor: "background.paper" }, children: [
|
|
13148
|
-
n.length === 0 ? /* @__PURE__ */ t(mg, {}) : n.map((D) => /* @__PURE__ */ l(
|
|
13166
|
+
n.length === 0 ? /* @__PURE__ */ t(mg, {}) : n.map((D) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
13149
13167
|
/* @__PURE__ */ t(pg, { budget: D }),
|
|
13150
13168
|
/* @__PURE__ */ t(q, {})
|
|
13151
13169
|
] }, D.guid)),
|
|
@@ -13157,7 +13175,7 @@ const ag = ({
|
|
|
13157
13175
|
ariaLabelClose: a.close_aria,
|
|
13158
13176
|
isOpen: !!o,
|
|
13159
13177
|
onClose: w,
|
|
13160
|
-
onPrimaryAction: () =>
|
|
13178
|
+
onPrimaryAction: () => g(!0),
|
|
13161
13179
|
onSecondaryAction: () => m(!0),
|
|
13162
13180
|
primaryText: r.details_edit_button,
|
|
13163
13181
|
secondaryText: r.details_delete_button,
|
|
@@ -13168,14 +13186,14 @@ const ag = ({
|
|
|
13168
13186
|
] })
|
|
13169
13187
|
}
|
|
13170
13188
|
),
|
|
13171
|
-
o && /* @__PURE__ */ l(
|
|
13189
|
+
o && /* @__PURE__ */ l(C.Fragment, { children: [
|
|
13172
13190
|
/* @__PURE__ */ t(
|
|
13173
13191
|
DA,
|
|
13174
13192
|
{
|
|
13175
13193
|
copy: { close_aria: a.close_aria, title: r.details_edit_title },
|
|
13176
13194
|
disablePrimaryButton: Number(v) <= 0,
|
|
13177
13195
|
isOpen: u,
|
|
13178
|
-
onClose: () =>
|
|
13196
|
+
onClose: () => g(!1),
|
|
13179
13197
|
onPrimaryAction: S,
|
|
13180
13198
|
primaryText: r.edit_save_button,
|
|
13181
13199
|
children: /* @__PURE__ */ t(
|
|
@@ -13204,10 +13222,10 @@ const ag = ({
|
|
|
13204
13222
|
] })
|
|
13205
13223
|
] });
|
|
13206
13224
|
}), yg = T(({ budget: A }) => {
|
|
13207
|
-
const { budgets: e, common: n, transactions: r } = I(), { setAlert: a } = kA(), { sortedTransactions: i, tags: o } = uA(), [s, c] =
|
|
13225
|
+
const { budgets: e, common: n, transactions: r } = I(), { setAlert: a } = kA(), { sortedTransactions: i, tags: o } = uA(), [s, c] = C.useState(0), [h, d] = C.useState(""), u = C.useMemo(
|
|
13208
13226
|
() => i.find((m) => m.guid === h),
|
|
13209
13227
|
[h]
|
|
13210
|
-
),
|
|
13228
|
+
), g = (m, v) => {
|
|
13211
13229
|
c(v);
|
|
13212
13230
|
}, f = () => {
|
|
13213
13231
|
vi(i, o), a(e.alert_csv_downloaded);
|
|
@@ -13218,7 +13236,7 @@ const ag = ({
|
|
|
13218
13236
|
/* @__PURE__ */ l(
|
|
13219
13237
|
Oe,
|
|
13220
13238
|
{
|
|
13221
|
-
onChange:
|
|
13239
|
+
onChange: g,
|
|
13222
13240
|
sx: { width: "100%" },
|
|
13223
13241
|
value: s,
|
|
13224
13242
|
variant: "fullWidth",
|
|
@@ -13262,9 +13280,9 @@ const ag = ({
|
|
|
13262
13280
|
setAlert: s,
|
|
13263
13281
|
setSelectedBudget: c,
|
|
13264
13282
|
updateBudget: h
|
|
13265
|
-
} = kA(), { setFilter: d } = uA(), [u,
|
|
13266
|
-
|
|
13267
|
-
i && !o && (L(`${i.amount}`),
|
|
13283
|
+
} = kA(), { setFilter: d } = uA(), [u, g] = C.useState(!1), [f, m] = C.useState(!1), [v, E] = C.useState(!1), [S, L] = C.useState("");
|
|
13284
|
+
C.useEffect(() => {
|
|
13285
|
+
i && !o && (L(`${i.amount}`), g(!0), d({
|
|
13268
13286
|
accounts: A,
|
|
13269
13287
|
dateRange: r,
|
|
13270
13288
|
custom: (N) => N.category_guid === i.category_guid || N.top_level_category_guid === i.category_guid
|
|
@@ -13279,12 +13297,12 @@ const ag = ({
|
|
|
13279
13297
|
}, D = async () => {
|
|
13280
13298
|
i && (await a(i.guid), s(_(e.alert_budget_deleted, i.category.name))), E(!1), P();
|
|
13281
13299
|
}, P = () => {
|
|
13282
|
-
|
|
13300
|
+
g(!1), setTimeout(() => {
|
|
13283
13301
|
c(void 0);
|
|
13284
13302
|
}, 250);
|
|
13285
13303
|
};
|
|
13286
13304
|
if (i)
|
|
13287
|
-
return /* @__PURE__ */ l(
|
|
13305
|
+
return /* @__PURE__ */ l(C.Fragment, { children: [
|
|
13288
13306
|
/* @__PURE__ */ t(
|
|
13289
13307
|
lA,
|
|
13290
13308
|
{
|
|
@@ -13334,12 +13352,12 @@ const ag = ({
|
|
|
13334
13352
|
)
|
|
13335
13353
|
] });
|
|
13336
13354
|
}), Ta = 480, lf = T(({ onBackClick: A, sx: e }) => {
|
|
13337
|
-
const n = CA(), { onEvent: r } = V(), { accounts: a } = TA(), { budgets: i, common: o } = I(), { isInitialized: s, selectedAccounts: c, setDisplayedDate: h, setSelectedAccounts: d } = fA(), { alert: u, dateRange:
|
|
13338
|
-
|
|
13339
|
-
E(n), d(a), h(
|
|
13340
|
-
}, []),
|
|
13341
|
-
s && (D(c,
|
|
13342
|
-
}, [s, c,
|
|
13355
|
+
const n = CA(), { onEvent: r } = V(), { accounts: a } = TA(), { budgets: i, common: o } = I(), { isInitialized: s, selectedAccounts: c, setDisplayedDate: h, setSelectedAccounts: d } = fA(), { alert: u, dateRange: g, loadBudgets: f, setDateRange: m, setAlert: v, setTheme: E } = kA(), { loadCashflowSequences: S } = HA(), { isDesktop: L, isTablet: w } = MA(), { reloadCategoryTotals: D } = PA(), [P, N] = C.useState(!1), [x, R] = C.useState(!1);
|
|
13356
|
+
C.useEffect(() => {
|
|
13357
|
+
E(n), d(a), h(g.start, g.end), r(k.BUDGETS_VIEW);
|
|
13358
|
+
}, []), C.useEffect(() => {
|
|
13359
|
+
s && (D(c, g.start, g.end).finally(), P || (S().finally(), f().finally(() => N(!0))));
|
|
13360
|
+
}, [s, c, g]);
|
|
13343
13361
|
const j = (rA) => {
|
|
13344
13362
|
m({ start: rA[0] || /* @__PURE__ */ new Date(), end: rA[1] || /* @__PURE__ */ new Date() });
|
|
13345
13363
|
}, F = () => {
|
|
@@ -13348,7 +13366,7 @@ const ag = ({
|
|
|
13348
13366
|
R(!0), r(k.BUDGETS_CLICK_ADD);
|
|
13349
13367
|
}, Q = () => {
|
|
13350
13368
|
R(!1);
|
|
13351
|
-
}, U =
|
|
13369
|
+
}, U = rt(g.end, yA(/* @__PURE__ */ new Date()));
|
|
13352
13370
|
return !s || !P ? /* @__PURE__ */ t(QA, {}) : /* @__PURE__ */ l(
|
|
13353
13371
|
ue,
|
|
13354
13372
|
{
|
|
@@ -13458,16 +13476,16 @@ const wg = () => {
|
|
|
13458
13476
|
] }) });
|
|
13459
13477
|
}, Sg = T(wg), Tg = ({ widgets: A, isLoading: e }) => {
|
|
13460
13478
|
const { isDesktop: n, isMobile: r } = MA(), { copyStore: a } = nr(), { setSelectedAccounts: i } = fA(), { accounts: o } = TA();
|
|
13461
|
-
|
|
13479
|
+
C.useEffect(() => {
|
|
13462
13480
|
i(o);
|
|
13463
13481
|
}, [o]);
|
|
13464
|
-
const s =
|
|
13482
|
+
const s = C.useMemo(
|
|
13465
13483
|
() => A.sort((d, u) => d.index - u.index),
|
|
13466
13484
|
[A]
|
|
13467
|
-
), c =
|
|
13485
|
+
), c = C.useMemo(
|
|
13468
13486
|
() => s.filter((d) => d.location === Bn.Main),
|
|
13469
13487
|
[A]
|
|
13470
|
-
), h =
|
|
13488
|
+
), h = C.useMemo(
|
|
13471
13489
|
() => s.filter((d) => d.location === Bn.RightSide),
|
|
13472
13490
|
[A]
|
|
13473
13491
|
);
|
|
@@ -13479,13 +13497,13 @@ const wg = () => {
|
|
|
13479
13497
|
/* @__PURE__ */ t(be, { height: 300, variant: "rounded", width: "100%" }),
|
|
13480
13498
|
/* @__PURE__ */ t(be, { height: 300, variant: "rounded", width: "100%" })
|
|
13481
13499
|
] }),
|
|
13482
|
-
!e && /* @__PURE__ */ t(y, { direction: "column", spacing: 24, children: n ? c.map((d) => /* @__PURE__ */ t(
|
|
13500
|
+
!e && /* @__PURE__ */ t(y, { direction: "column", spacing: 24, children: n ? c.map((d) => /* @__PURE__ */ t(C.Fragment, { children: d.component }, d.index)) : s.map((d) => /* @__PURE__ */ t(C.Fragment, { children: d.component }, d.index)) })
|
|
13483
13501
|
] }),
|
|
13484
13502
|
n && /* @__PURE__ */ t(Le, { xl: 4, children: e ? /* @__PURE__ */ l(y, { direction: "column", spacing: 24, children: [
|
|
13485
13503
|
/* @__PURE__ */ t(be, { height: 200, variant: "rounded", width: "100%" }),
|
|
13486
13504
|
/* @__PURE__ */ t(be, { height: 100, variant: "rounded", width: "100%" }),
|
|
13487
13505
|
/* @__PURE__ */ t(be, { height: 300, variant: "rounded", width: "100%" })
|
|
13488
|
-
] }) : /* @__PURE__ */ t(y, { direction: "column", spacing: 24, children: h.map((d) => /* @__PURE__ */ t(
|
|
13506
|
+
] }) : /* @__PURE__ */ t(y, { direction: "column", spacing: 24, children: h.map((d) => /* @__PURE__ */ t(C.Fragment, { children: d.component }, d.index)) }) })
|
|
13489
13507
|
] });
|
|
13490
13508
|
}, df = T(Tg), vr = ({
|
|
13491
13509
|
bgcolor: A = "background.default",
|
|
@@ -13511,7 +13529,7 @@ const wg = () => {
|
|
|
13511
13529
|
toggleAccount: n,
|
|
13512
13530
|
title: r = ""
|
|
13513
13531
|
}) => {
|
|
13514
|
-
const [a, i] =
|
|
13532
|
+
const [a, i] = C.useState(!1), [o, s] = C.useState({
|
|
13515
13533
|
accountToUpdate: "",
|
|
13516
13534
|
updateType: ""
|
|
13517
13535
|
}), c = (u) => {
|
|
@@ -13529,7 +13547,7 @@ const wg = () => {
|
|
|
13529
13547
|
};
|
|
13530
13548
|
return /* @__PURE__ */ l(O, { children: [
|
|
13531
13549
|
/* @__PURE__ */ t(vr, { children: r }),
|
|
13532
|
-
A.map((u,
|
|
13550
|
+
A.map((u, g) => /* @__PURE__ */ l(O, { children: [
|
|
13533
13551
|
/* @__PURE__ */ t(Y, { children: /* @__PURE__ */ l(dA, { onClick: () => c(u), children: [
|
|
13534
13552
|
/* @__PURE__ */ t(OA, { children: /* @__PURE__ */ t(
|
|
13535
13553
|
Ke,
|
|
@@ -13547,7 +13565,7 @@ const wg = () => {
|
|
|
13547
13565
|
),
|
|
13548
13566
|
/* @__PURE__ */ t(Fn, { checked: !u.is_hidden })
|
|
13549
13567
|
] }) }),
|
|
13550
|
-
/* @__PURE__ */ t(q, { sx: { ml:
|
|
13568
|
+
/* @__PURE__ */ t(q, { sx: { ml: g < A.length - 1 ? 24 : 0 } })
|
|
13551
13569
|
] }, u.guid)),
|
|
13552
13570
|
/* @__PURE__ */ l(
|
|
13553
13571
|
DA,
|
|
@@ -13603,7 +13621,7 @@ const wg = () => {
|
|
|
13603
13621
|
/* @__PURE__ */ t(q, {})
|
|
13604
13622
|
] });
|
|
13605
13623
|
}, uf = ({ content: A, manageAccountsStore: e }) => {
|
|
13606
|
-
const { groupedAccounts: n, toggleAccount: r } = e, [a, i] =
|
|
13624
|
+
const { groupedAccounts: n, toggleAccount: r } = e, [a, i] = C.useState(!1);
|
|
13607
13625
|
return /* @__PURE__ */ l(eA, { children: [
|
|
13608
13626
|
/* @__PURE__ */ t(
|
|
13609
13627
|
Xi,
|
|
@@ -13769,10 +13787,10 @@ const Ui = ({
|
|
|
13769
13787
|
},
|
|
13770
13788
|
translatedSubCatetgory: o = ""
|
|
13771
13789
|
}) => {
|
|
13772
|
-
const s = CA(), c =
|
|
13790
|
+
const s = CA(), c = C.useMemo(
|
|
13773
13791
|
() => e.reduce((w, D) => ({ ...w, [D.name]: !1 }), {}),
|
|
13774
13792
|
[e]
|
|
13775
|
-
), [h, d] =
|
|
13793
|
+
), [h, d] = C.useState(c), { toastState: u, hideToast: g } = Qi(), f = oi(a);
|
|
13776
13794
|
me(() => {
|
|
13777
13795
|
f && !a && d(c);
|
|
13778
13796
|
}, [f, a, c, d]);
|
|
@@ -13878,7 +13896,7 @@ const Ui = ({
|
|
|
13878
13896
|
tA,
|
|
13879
13897
|
{
|
|
13880
13898
|
primary: w.title,
|
|
13881
|
-
secondary: /* @__PURE__ */ t(
|
|
13899
|
+
secondary: /* @__PURE__ */ t(C.Fragment, { children: w.description })
|
|
13882
13900
|
}
|
|
13883
13901
|
),
|
|
13884
13902
|
/* @__PURE__ */ t(
|
|
@@ -13914,7 +13932,7 @@ const Ui = ({
|
|
|
13914
13932
|
!a && /* @__PURE__ */ t(
|
|
13915
13933
|
Ui,
|
|
13916
13934
|
{
|
|
13917
|
-
handleClose:
|
|
13935
|
+
handleClose: g,
|
|
13918
13936
|
message: u.message,
|
|
13919
13937
|
open: u.isOpen,
|
|
13920
13938
|
severity: u.severity,
|
|
@@ -14020,12 +14038,12 @@ const Ui = ({
|
|
|
14020
14038
|
update: r,
|
|
14021
14039
|
isUpdateError: a,
|
|
14022
14040
|
isUpdateLoading: i
|
|
14023
|
-
} = e, [o, s, c] = _g(n), { toastState: h, showToast: d, hideToast: u, setMessage:
|
|
14041
|
+
} = e, [o, s, c] = _g(n), { toastState: h, showToast: d, hideToast: u, setMessage: g } = Qi(), [f, m] = C.useState(!1), [v, E] = C.useState(!1), [S, L] = C.useState(""), [w, D] = C.useState(""), P = oi(i);
|
|
14024
14042
|
me(() => {
|
|
14025
14043
|
P && !i && (a ? d(A.something_went_wrong, "error") : d(void 0, "success"));
|
|
14026
14044
|
}, [P, a]);
|
|
14027
14045
|
const N = () => {
|
|
14028
|
-
|
|
14046
|
+
g(
|
|
14029
14047
|
n.length > 1 ? A.insights_unhidden : A.insight_unhidden
|
|
14030
14048
|
), r(n.map((F) => F.name));
|
|
14031
14049
|
}, x = (F, X) => {
|
|
@@ -14033,7 +14051,7 @@ const Ui = ({
|
|
|
14033
14051
|
}, R = () => {
|
|
14034
14052
|
E(!1), D(""), L("");
|
|
14035
14053
|
}, j = (F, X) => {
|
|
14036
|
-
r(F), X && E(!1),
|
|
14054
|
+
r(F), X && E(!1), g(F.length > 1 ? A.insights_unhidden : A.insight_unhidden);
|
|
14037
14055
|
};
|
|
14038
14056
|
return /* @__PURE__ */ l(eA, { children: [
|
|
14039
14057
|
/* @__PURE__ */ t(
|
|
@@ -14080,7 +14098,7 @@ const Ui = ({
|
|
|
14080
14098
|
/&/g,
|
|
14081
14099
|
"&"
|
|
14082
14100
|
),
|
|
14083
|
-
secondary: /* @__PURE__ */ l(
|
|
14101
|
+
secondary: /* @__PURE__ */ l(C.Fragment, { children: [
|
|
14084
14102
|
X.beats.length,
|
|
14085
14103
|
" ",
|
|
14086
14104
|
X.beats.length > 1 ? A.insights_hidden : A.insight_hidden
|
|
@@ -14355,7 +14373,7 @@ const Er = {
|
|
|
14355
14373
|
class qg {
|
|
14356
14374
|
onAnalyticEvent = Oa;
|
|
14357
14375
|
onAnalyticPageView = xa;
|
|
14358
|
-
beatApi = new
|
|
14376
|
+
beatApi = new at("/", "");
|
|
14359
14377
|
constructor() {
|
|
14360
14378
|
SA(this);
|
|
14361
14379
|
}
|
|
@@ -14368,7 +14386,7 @@ class qg {
|
|
|
14368
14386
|
xa(a, i).then((o) => o).catch((o) => {
|
|
14369
14387
|
throw o.status === 401 && r(), o;
|
|
14370
14388
|
});
|
|
14371
|
-
}, this.beatApi = new
|
|
14389
|
+
}, this.beatApi = new at(e, n);
|
|
14372
14390
|
};
|
|
14373
14391
|
updateBeat = async (e) => {
|
|
14374
14392
|
this.beatApi.updateBeat(e);
|
|
@@ -14390,7 +14408,7 @@ class kg {
|
|
|
14390
14408
|
});
|
|
14391
14409
|
};
|
|
14392
14410
|
}
|
|
14393
|
-
const Pt =
|
|
14411
|
+
const Pt = C.createContext(null), Gg = ({
|
|
14394
14412
|
onEvent: A,
|
|
14395
14413
|
onPageview: e,
|
|
14396
14414
|
store: n,
|
|
@@ -15251,25 +15269,25 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15251
15269
|
STANDARD: 154,
|
|
15252
15270
|
XLARGE: 200,
|
|
15253
15271
|
XXLARGE: 248
|
|
15254
|
-
}, Jg = 50, Ao = 1,
|
|
15255
|
-
const A =
|
|
15272
|
+
}, Jg = 50, Ao = 1, Je = () => {
|
|
15273
|
+
const A = C.useContext(Pt);
|
|
15256
15274
|
if (!A)
|
|
15257
15275
|
throw new Error("useCopyStore() must be used within the InsightsMicroWidgetDataProvider");
|
|
15258
15276
|
return A.store.copyStore;
|
|
15259
15277
|
}, Zg = () => {
|
|
15260
|
-
const A =
|
|
15278
|
+
const A = C.useContext(Pt);
|
|
15261
15279
|
if (!A?.store?.insightsMicroWidgetStore)
|
|
15262
15280
|
throw new Error(
|
|
15263
15281
|
"useInsightsMicroWidgetStore() must be used within the InsightsMicroWidgetDataProvider"
|
|
15264
15282
|
);
|
|
15265
15283
|
return A.store.insightsMicroWidgetStore;
|
|
15266
15284
|
}, Nt = () => {
|
|
15267
|
-
const A =
|
|
15285
|
+
const A = C.useContext(Pt);
|
|
15268
15286
|
if (!A)
|
|
15269
15287
|
throw new Error("useEvent() must be used within the InsightsMicroWidgetDataProvider");
|
|
15270
15288
|
return { onEvent: A.onEvent };
|
|
15271
15289
|
}, eo = () => {
|
|
15272
|
-
const A =
|
|
15290
|
+
const A = C.useContext(Pt);
|
|
15273
15291
|
if (!A)
|
|
15274
15292
|
throw new Error("usePageview() must be used within the InsightsMicroWidgetDataProvider");
|
|
15275
15293
|
return { onPageview: A.onPageview };
|
|
@@ -15286,11 +15304,11 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15286
15304
|
posthog: h,
|
|
15287
15305
|
showIcon: d,
|
|
15288
15306
|
variant: u,
|
|
15289
|
-
widthOverrides:
|
|
15307
|
+
widthOverrides: g
|
|
15290
15308
|
}) => {
|
|
15291
15309
|
const f = window.app?.config.client_guid, { ref: m, inView: v } = Ya({
|
|
15292
15310
|
threshold: Ao
|
|
15293
|
-
}), { cardsCopy: E } =
|
|
15311
|
+
}), { cardsCopy: E } = Je(), { onEvent: S } = Nt(), { updateBeat: L } = Zg();
|
|
15294
15312
|
me(() => {
|
|
15295
15313
|
v && (n.has_been_displayed ? S(Yi(n.template)) : (L({
|
|
15296
15314
|
...n,
|
|
@@ -15337,7 +15355,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15337
15355
|
showIcon: d,
|
|
15338
15356
|
title: n.micro_title && n.micro_title.length > 0 ? n.micro_title : n.title,
|
|
15339
15357
|
variant: u,
|
|
15340
|
-
widthOverrides:
|
|
15358
|
+
widthOverrides: g
|
|
15341
15359
|
}
|
|
15342
15360
|
);
|
|
15343
15361
|
}, AC = ({
|
|
@@ -15349,7 +15367,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15349
15367
|
scrollRightBoundary: i,
|
|
15350
15368
|
scrollX: o
|
|
15351
15369
|
}) => {
|
|
15352
|
-
const s = eC(), { carouselCopy: c } =
|
|
15370
|
+
const s = eC(), { carouselCopy: c } = Je(), h = Math.floor(o) > i || e === 0, d = o < 0 || n - 1 === e, u = "#BBBCBC", g = A?.primary_300 ? A?.primary_300 : "#2D64EF";
|
|
15353
15371
|
return /* @__PURE__ */ l(O, { className: s, children: [
|
|
15354
15372
|
/* @__PURE__ */ t(
|
|
15355
15373
|
KA,
|
|
@@ -15361,7 +15379,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15361
15379
|
Rs,
|
|
15362
15380
|
{
|
|
15363
15381
|
style: {
|
|
15364
|
-
color: h ? u :
|
|
15382
|
+
color: h ? u : g
|
|
15365
15383
|
}
|
|
15366
15384
|
}
|
|
15367
15385
|
)
|
|
@@ -15372,7 +15390,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15372
15390
|
{
|
|
15373
15391
|
className: "mx-insights-micro-carousel-dots",
|
|
15374
15392
|
style: {
|
|
15375
|
-
backgroundColor: m === e ?
|
|
15393
|
+
backgroundColor: m === e ? g : u
|
|
15376
15394
|
}
|
|
15377
15395
|
},
|
|
15378
15396
|
`carousel-button-${m}`
|
|
@@ -15387,7 +15405,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15387
15405
|
An,
|
|
15388
15406
|
{
|
|
15389
15407
|
style: {
|
|
15390
|
-
color: d ? u :
|
|
15408
|
+
color: d ? u : g
|
|
15391
15409
|
}
|
|
15392
15410
|
}
|
|
15393
15411
|
)
|
|
@@ -15424,23 +15442,23 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15424
15442
|
variant: h,
|
|
15425
15443
|
widthOverrides: d
|
|
15426
15444
|
}) => {
|
|
15427
|
-
const u = rC(r, c, d),
|
|
15428
|
-
D(oe.ON_CAROUSEL_FORWARD_CLICK),
|
|
15445
|
+
const u = rC(r, c, d), g = C.useRef(null), [f, m] = C.useState(0), [v, E] = C.useState(null), [S, L] = C.useState(null), { carouselCopy: w } = Je(), { onEvent: D } = Nt(), P = () => {
|
|
15446
|
+
D(oe.ON_CAROUSEL_FORWARD_CLICK), g.current && g.current.scrollTo({
|
|
15429
15447
|
left: (
|
|
15430
15448
|
// Adds the flex gap to the carousel ulRef's width
|
|
15431
|
-
(
|
|
15449
|
+
(g.current.offsetWidth + 8) * (Math.floor(f / (g.current.offsetWidth + 8)) + 1)
|
|
15432
15450
|
),
|
|
15433
15451
|
top: 0,
|
|
15434
15452
|
behavior: "smooth"
|
|
15435
15453
|
});
|
|
15436
15454
|
}, N = () => {
|
|
15437
|
-
D(oe.ON_CAROUSEL_BACK_CLICK),
|
|
15438
|
-
left: (
|
|
15455
|
+
D(oe.ON_CAROUSEL_BACK_CLICK), g.current && g.current.scrollTo({
|
|
15456
|
+
left: (g.current.offsetWidth + 8) * (Math.floor(f / (g.current.offsetWidth + 8)) - 1),
|
|
15439
15457
|
top: 0,
|
|
15440
15458
|
behavior: "smooth"
|
|
15441
15459
|
});
|
|
15442
15460
|
}, x = () => {
|
|
15443
|
-
|
|
15461
|
+
g.current && m(g.current.scrollLeft);
|
|
15444
15462
|
}, R = () => {
|
|
15445
15463
|
if (!S || !v) return;
|
|
15446
15464
|
S - v > Jg ? D(oe.ON_CAROUSEL_FORWARD_SWIPE) : D(oe.ON_CAROUSEL_BACK_SWIPE);
|
|
@@ -15455,7 +15473,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15455
15473
|
showIcon: s,
|
|
15456
15474
|
variant: h,
|
|
15457
15475
|
widthOverrides: d
|
|
15458
|
-
}, Q =
|
|
15476
|
+
}, Q = g.current && g.current.offsetWidth ? Math.round(f / g.current.offsetWidth) : 0, U = g.current ? g.current.scrollWidth - g.current.offsetWidth : 0;
|
|
15459
15477
|
return /* @__PURE__ */ l("div", { className: u, children: [
|
|
15460
15478
|
/* @__PURE__ */ l(
|
|
15461
15479
|
"ul",
|
|
@@ -15465,7 +15483,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15465
15483
|
onTouchEnd: R,
|
|
15466
15484
|
onTouchMove: j,
|
|
15467
15485
|
onTouchStart: F,
|
|
15468
|
-
ref:
|
|
15486
|
+
ref: g,
|
|
15469
15487
|
children: [
|
|
15470
15488
|
A.map((rA, gA) => /* @__PURE__ */ t(
|
|
15471
15489
|
$g,
|
|
@@ -15533,7 +15551,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15533
15551
|
display: "none"
|
|
15534
15552
|
}
|
|
15535
15553
|
}
|
|
15536
|
-
}), fn =
|
|
15554
|
+
}), fn = C.forwardRef(
|
|
15537
15555
|
function({
|
|
15538
15556
|
actionText: e,
|
|
15539
15557
|
ariaLabel: n,
|
|
@@ -15547,19 +15565,19 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15547
15565
|
},
|
|
15548
15566
|
showIcon: d,
|
|
15549
15567
|
style: u = {},
|
|
15550
|
-
fontColors:
|
|
15568
|
+
fontColors: g = {},
|
|
15551
15569
|
title: f,
|
|
15552
15570
|
variant: m,
|
|
15553
15571
|
widthOverrides: v
|
|
15554
15572
|
}, E) {
|
|
15555
|
-
const [S, L] =
|
|
15556
|
-
|
|
15573
|
+
const [S, L] = C.useState(1);
|
|
15574
|
+
C.useEffect(() => {
|
|
15557
15575
|
v && v <= 325 && L(3), v && v > 325 && L(2);
|
|
15558
15576
|
}, [v]);
|
|
15559
15577
|
const { cardStyle: w, linkTextStyle: D } = u, P = m ? w : { border: "none", boxShadow: "none", ...w }, N = aC(
|
|
15560
15578
|
P,
|
|
15561
15579
|
a,
|
|
15562
|
-
|
|
15580
|
+
g,
|
|
15563
15581
|
S,
|
|
15564
15582
|
D,
|
|
15565
15583
|
o
|
|
@@ -15584,7 +15602,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15584
15602
|
zA,
|
|
15585
15603
|
{
|
|
15586
15604
|
className: "mx-micro-card-description",
|
|
15587
|
-
color:
|
|
15605
|
+
color: g.textColor ? "undefined" : "text.primary",
|
|
15588
15606
|
children: i && /* @__PURE__ */ t("span", { dangerouslySetInnerHTML: { __html: i } })
|
|
15589
15607
|
}
|
|
15590
15608
|
) }),
|
|
@@ -15660,7 +15678,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15660
15678
|
posthog: n,
|
|
15661
15679
|
widthOverrides: r
|
|
15662
15680
|
}) => {
|
|
15663
|
-
const { carouselCopy: a } =
|
|
15681
|
+
const { carouselCopy: a } = Je(), { onEvent: i } = Nt(), o = window.app?.config.client_guid, s = () => {
|
|
15664
15682
|
i && (i(oe.ON_VIEW_MORE_CLICKED), n?.capture && o && (e(), n.capture("micro_widget_clicked_insight", {
|
|
15665
15683
|
insight_template: "view_all",
|
|
15666
15684
|
$groups: { client: o }
|
|
@@ -15756,7 +15774,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15756
15774
|
},
|
|
15757
15775
|
posthog: d,
|
|
15758
15776
|
showBorder: u = !0,
|
|
15759
|
-
showCarouselControls:
|
|
15777
|
+
showCarouselControls: g,
|
|
15760
15778
|
showHeader: f,
|
|
15761
15779
|
showIcon: m,
|
|
15762
15780
|
showWithMargin: v = !0,
|
|
@@ -15767,12 +15785,12 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15767
15785
|
widthOverrides: D
|
|
15768
15786
|
}) => {
|
|
15769
15787
|
const [P, N] = Ce("STANDARD"), [x, R] = Ce(!1), j = cc([c], ye), F = lc([h], ye);
|
|
15770
|
-
|
|
15788
|
+
C.useEffect(() => {
|
|
15771
15789
|
ye.isInitialized || ye.initialize(a, E, o);
|
|
15772
|
-
}, [a, E, o, ye.isInitialized]),
|
|
15790
|
+
}, [a, E, o, ye.isInitialized]), C.useEffect(() => {
|
|
15773
15791
|
const U = window.innerHeight;
|
|
15774
15792
|
U < 180 ? N("STANDARD") : U >= 180 && U < 200 ? N("LARGE") : U >= 200 && U < 248 ? N("XLARGE") : U >= 248 && N("XXLARGE");
|
|
15775
|
-
}, [window.innerHeight]),
|
|
15793
|
+
}, [window.innerHeight]), C.useEffect(() => {
|
|
15776
15794
|
R(!A && ye.isInitialized);
|
|
15777
15795
|
}, [A, ye.isInitialized]);
|
|
15778
15796
|
const X = {
|
|
@@ -15818,7 +15836,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15818
15836
|
{
|
|
15819
15837
|
beats: e,
|
|
15820
15838
|
clientColorScheme: n,
|
|
15821
|
-
showCarouselControls:
|
|
15839
|
+
showCarouselControls: g,
|
|
15822
15840
|
variant: u ? w : void 0,
|
|
15823
15841
|
...X
|
|
15824
15842
|
}
|
|
@@ -15842,9 +15860,9 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15842
15860
|
variant: c,
|
|
15843
15861
|
widthOverrides: h
|
|
15844
15862
|
}) => {
|
|
15845
|
-
const { cardsCopy: d } =
|
|
15846
|
-
|
|
15847
|
-
|
|
15863
|
+
const { cardsCopy: d } = Je(), { onEvent: u } = Nt(), { onPageview: g } = eo(), f = window.app?.config.client_guid;
|
|
15864
|
+
C.useEffect(() => {
|
|
15865
|
+
g(Me.MICRO_WIDGET_CAROUSEL_NO_RELEVANT_INSIGHTS);
|
|
15848
15866
|
}, []);
|
|
15849
15867
|
const m = () => {
|
|
15850
15868
|
a && a(), u(oe.ON_NO_RELEVANT_INSIGHTS_CLICKED), i?.capture && f && i.capture("micro_widget_clicked_insight", {
|
|
@@ -15894,17 +15912,17 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15894
15912
|
variant: s,
|
|
15895
15913
|
widthOverrides: c
|
|
15896
15914
|
}) => {
|
|
15897
|
-
const h = RA(), d = window.app?.config.client_guid, { ref: u, inView:
|
|
15915
|
+
const h = RA(), d = window.app?.config.client_guid, { ref: u, inView: g } = Ya({
|
|
15898
15916
|
threshold: Ao
|
|
15899
|
-
}), { cardsCopy: f } =
|
|
15917
|
+
}), { cardsCopy: f } = Je(), { onEvent: m } = Nt();
|
|
15900
15918
|
me(() => {
|
|
15901
|
-
|
|
15902
|
-
}, [
|
|
15903
|
-
i?.capture &&
|
|
15919
|
+
g && m(Ji.ON_VIEW_MORE_VIEWED);
|
|
15920
|
+
}, [g]), me(() => {
|
|
15921
|
+
i?.capture && g && d && i.capture("micro_widget_viewed_insight", {
|
|
15904
15922
|
insight_template: "read_more_card",
|
|
15905
15923
|
$groups: { client: d }
|
|
15906
15924
|
});
|
|
15907
|
-
}, [d, i,
|
|
15925
|
+
}, [d, i, g]);
|
|
15908
15926
|
const v = () => {
|
|
15909
15927
|
a && a(), m(oe.ON_VIEW_MORE_CLICKED), i?.capture && d && i.capture("micro_widget_clicked_insight", {
|
|
15910
15928
|
insight_template: "read_more_card",
|
|
@@ -15944,8 +15962,8 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
15944
15962
|
variant: o,
|
|
15945
15963
|
widthOverrides: s
|
|
15946
15964
|
}) => {
|
|
15947
|
-
const { onPageview: c } = eo(), { zeroStateCopy: h } =
|
|
15948
|
-
return
|
|
15965
|
+
const { onPageview: c } = eo(), { zeroStateCopy: h } = Je();
|
|
15966
|
+
return C.useEffect(() => {
|
|
15949
15967
|
c(Me.MICRO_WIDGET_CAROUSEL_ZERO_STATE);
|
|
15950
15968
|
}, []), /* @__PURE__ */ t(
|
|
15951
15969
|
fn,
|
|
@@ -16067,13 +16085,13 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16067
16085
|
totalLabel: o,
|
|
16068
16086
|
variant: s = "mini"
|
|
16069
16087
|
}) => {
|
|
16070
|
-
const { spending: c } = I(), h = $t(), { isTablet: d } = MA(), u =
|
|
16088
|
+
const { spending: c } = I(), h = $t(), { isTablet: d } = MA(), u = C.useMemo(
|
|
16071
16089
|
() => a ? A.categoryData.find((v) => v.guid === a) : void 0,
|
|
16072
16090
|
[a]
|
|
16073
|
-
),
|
|
16091
|
+
), g = C.useMemo(() => A.donutData.length > 0 ? A.donutData : [{ id: "0", color: h.palette.border.light, value: 100 }], [A, h]), f = () => {
|
|
16074
16092
|
r?.(a);
|
|
16075
16093
|
}, m = d ? 32 : 48;
|
|
16076
|
-
return /* @__PURE__ */ t(xc, { data:
|
|
16094
|
+
return /* @__PURE__ */ t(xc, { data: g, onClick: n, selectedId: a, size: i, children: /* @__PURE__ */ t(y, { alignItems: "center", height: "100%", justifyContent: "center", width: "100%", children: /* @__PURE__ */ l(y, { alignItems: "center", justifyContent: "center", minHeight: i, minWidth: i, children: [
|
|
16077
16095
|
u && /* @__PURE__ */ l(
|
|
16078
16096
|
y,
|
|
16079
16097
|
{
|
|
@@ -16128,7 +16146,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16128
16146
|
},
|
|
16129
16147
|
r.guid
|
|
16130
16148
|
)) }), pC = () => {
|
|
16131
|
-
const A = CA(), { spending: e } = I(), { selectedAccounts: n } = fA(), r =
|
|
16149
|
+
const A = CA(), { spending: e } = I(), { selectedAccounts: n } = fA(), r = C.useMemo(
|
|
16132
16150
|
() => [
|
|
16133
16151
|
A.palette.chartMono.chartMono5,
|
|
16134
16152
|
A.palette.chartMono.chartMono4,
|
|
@@ -16139,17 +16157,17 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16139
16157
|
],
|
|
16140
16158
|
[A]
|
|
16141
16159
|
), { categories: a, dateRangeCategoryTotals: i, loadDateRangeCategoryTotals: o } = PA();
|
|
16142
|
-
|
|
16160
|
+
C.useEffect(() => {
|
|
16143
16161
|
o(
|
|
16144
16162
|
n,
|
|
16145
16163
|
yA(/* @__PURE__ */ new Date()),
|
|
16146
16164
|
NA(/* @__PURE__ */ new Date())
|
|
16147
16165
|
).finally();
|
|
16148
16166
|
}, [n]);
|
|
16149
|
-
const [s, c] =
|
|
16167
|
+
const [s, c] = C.useState(""), [h, d] = C.useState(0), u = C.useMemo(
|
|
16150
16168
|
() => to(a, i),
|
|
16151
16169
|
[a, i]
|
|
16152
|
-
),
|
|
16170
|
+
), g = C.useMemo(
|
|
16153
16171
|
() => no(a, i, r),
|
|
16154
16172
|
[a, i, r]
|
|
16155
16173
|
), f = (v, E) => {
|
|
@@ -16177,7 +16195,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16177
16195
|
label: /* @__PURE__ */ t(
|
|
16178
16196
|
Jt,
|
|
16179
16197
|
{
|
|
16180
|
-
amount:
|
|
16198
|
+
amount: g.totalAmount,
|
|
16181
16199
|
label: e.income_tab_title
|
|
16182
16200
|
}
|
|
16183
16201
|
)
|
|
@@ -16207,20 +16225,20 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16207
16225
|
/* @__PURE__ */ t(
|
|
16208
16226
|
Zt,
|
|
16209
16227
|
{
|
|
16210
|
-
data:
|
|
16228
|
+
data: g,
|
|
16211
16229
|
isIncome: !0,
|
|
16212
16230
|
onSelected: m,
|
|
16213
16231
|
selectedId: s,
|
|
16214
16232
|
totalLabel: e.total_income
|
|
16215
16233
|
}
|
|
16216
16234
|
),
|
|
16217
|
-
/* @__PURE__ */ t(Na, { data:
|
|
16235
|
+
/* @__PURE__ */ t(Na, { data: g, onSelected: m, selectedId: s })
|
|
16218
16236
|
] }) })
|
|
16219
16237
|
] });
|
|
16220
16238
|
}, vC = T(pC), EC = ({ onPrimaryCtaClick: A, sx: e = {} }) => {
|
|
16221
16239
|
const { spending: n } = I();
|
|
16222
16240
|
return /* @__PURE__ */ t(
|
|
16223
|
-
|
|
16241
|
+
Ve,
|
|
16224
16242
|
{
|
|
16225
16243
|
className: "mx-exp-spending-miniwidget",
|
|
16226
16244
|
onPrimaryCtaClick: A,
|
|
@@ -16240,7 +16258,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16240
16258
|
return /* @__PURE__ */ l(y, { direction: "column", justifyContent: "center", maxWidth: 400, minWidth: 275, width: "100%", children: [
|
|
16241
16259
|
/* @__PURE__ */ t(p, { bold: !0, sx: { py: 12 }, children: `${r} ${a.by_category}` }),
|
|
16242
16260
|
/* @__PURE__ */ t(q, { "aria-hidden": "true" }),
|
|
16243
|
-
/* @__PURE__ */ t(nA, { children: A.categoryData.map((o) => /* @__PURE__ */ l(
|
|
16261
|
+
/* @__PURE__ */ t(nA, { children: A.categoryData.map((o) => /* @__PURE__ */ l(C.Fragment, { children: [
|
|
16244
16262
|
/* @__PURE__ */ t(
|
|
16245
16263
|
Y,
|
|
16246
16264
|
{
|
|
@@ -16367,21 +16385,21 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16367
16385
|
A.palette.chartMono.chartMono1,
|
|
16368
16386
|
A.palette.chartMono.chartMono6
|
|
16369
16387
|
], TC = () => {
|
|
16370
|
-
const A = $t(), { categories: e, dateRangeCategoryTotals: n, loadDateRangeCategoryTotals: r } = PA(), { spending: a } = I(), { displayedDateRange: i, selectedAccounts: o, selectedAccountGuids: s } = fA(), { setFilter: c, sortedTransactions: h } = uA(), [d, u] =
|
|
16371
|
-
|
|
16388
|
+
const A = $t(), { categories: e, dateRangeCategoryTotals: n, loadDateRangeCategoryTotals: r } = PA(), { spending: a } = I(), { displayedDateRange: i, selectedAccounts: o, selectedAccountGuids: s } = fA(), { setFilter: c, sortedTransactions: h } = uA(), [d, u] = C.useState(""), [g, f] = C.useState(0), [m, v] = C.useState(""), [E, S] = C.useState(!1);
|
|
16389
|
+
C.useEffect(() => {
|
|
16372
16390
|
r(
|
|
16373
16391
|
o,
|
|
16374
16392
|
i.start,
|
|
16375
16393
|
i.end
|
|
16376
16394
|
).finally();
|
|
16377
16395
|
}, [o, i]);
|
|
16378
|
-
const L =
|
|
16396
|
+
const L = C.useMemo(
|
|
16379
16397
|
() => to(e, n),
|
|
16380
16398
|
[e, n]
|
|
16381
|
-
), w =
|
|
16399
|
+
), w = C.useMemo(
|
|
16382
16400
|
() => no(e, n, SC(A)),
|
|
16383
16401
|
[e, n]
|
|
16384
|
-
), D =
|
|
16402
|
+
), D = C.useMemo(
|
|
16385
16403
|
() => h.find((R) => R.guid === m),
|
|
16386
16404
|
[m]
|
|
16387
16405
|
), P = (R, j) => {
|
|
@@ -16393,7 +16411,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16393
16411
|
accounts: s,
|
|
16394
16412
|
dateRange: i
|
|
16395
16413
|
};
|
|
16396
|
-
if (
|
|
16414
|
+
if (g === 0)
|
|
16397
16415
|
if (R === "other") {
|
|
16398
16416
|
const F = L.categoryData.find((X) => X.guid === "other");
|
|
16399
16417
|
c({
|
|
@@ -16413,7 +16431,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16413
16431
|
S(!0);
|
|
16414
16432
|
};
|
|
16415
16433
|
return /* @__PURE__ */ l(O, { children: [
|
|
16416
|
-
/* @__PURE__ */ l(Oe, { onChange: P, value:
|
|
16434
|
+
/* @__PURE__ */ l(Oe, { onChange: P, value: g, variant: "fullWidth", children: [
|
|
16417
16435
|
/* @__PURE__ */ t(
|
|
16418
16436
|
BA,
|
|
16419
16437
|
{
|
|
@@ -16439,7 +16457,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16439
16457
|
}
|
|
16440
16458
|
)
|
|
16441
16459
|
] }),
|
|
16442
|
-
|
|
16460
|
+
g === 0 && /* @__PURE__ */ t(
|
|
16443
16461
|
Ma,
|
|
16444
16462
|
{
|
|
16445
16463
|
data: L,
|
|
@@ -16449,7 +16467,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16449
16467
|
title: a.spend_tab_title
|
|
16450
16468
|
}
|
|
16451
16469
|
),
|
|
16452
|
-
|
|
16470
|
+
g === 1 && /* @__PURE__ */ t(
|
|
16453
16471
|
Ma,
|
|
16454
16472
|
{
|
|
16455
16473
|
data: w,
|
|
@@ -16481,10 +16499,10 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16481
16499
|
)
|
|
16482
16500
|
] });
|
|
16483
16501
|
}, LC = T(TC), IC = ({ onBackClick: A, sx: e = {} }) => {
|
|
16484
|
-
const { accounts: n } = TA(), { spending: r } = I(), { isInitialized: a, setDisplayedDate: i, setSelectedAccounts: o } = fA(), { onEvent: s } = V(), [c, h] =
|
|
16485
|
-
|
|
16502
|
+
const { accounts: n } = TA(), { spending: r } = I(), { isInitialized: a, setDisplayedDate: i, setSelectedAccounts: o } = fA(), { onEvent: s } = V(), [c, h] = C.useState(!1);
|
|
16503
|
+
C.useEffect(() => {
|
|
16486
16504
|
o(n);
|
|
16487
|
-
}, [n]),
|
|
16505
|
+
}, [n]), C.useEffect(() => {
|
|
16488
16506
|
i(yA(AA()), NA(AA())), h(!0), s(k.SPENDING_VIEW);
|
|
16489
16507
|
}, []);
|
|
16490
16508
|
const d = (u) => {
|
|
@@ -16566,17 +16584,17 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16566
16584
|
height: r = "100dvh",
|
|
16567
16585
|
sx: a = {}
|
|
16568
16586
|
}) => {
|
|
16569
|
-
const { onEvent: i } = V(), o = $(/* @__PURE__ */ new Date(), Z.MONTH_SHORT), [s, c] =
|
|
16587
|
+
const { onEvent: i } = V(), o = $(/* @__PURE__ */ new Date(), Z.MONTH_SHORT), [s, c] = C.useState([
|
|
16570
16588
|
{ field: o, sort: "desc" }
|
|
16571
16589
|
]), h = A.sort(
|
|
16572
|
-
(
|
|
16573
|
-
).reduce((
|
|
16590
|
+
(g, f) => new Date(g.year, g.month - 1, 1).getTime() - new Date(f.year, f.month - 1, 1).getTime()
|
|
16591
|
+
).reduce((g, f) => {
|
|
16574
16592
|
const m = $(
|
|
16575
16593
|
// Month adjusted to 0-indexed
|
|
16576
16594
|
new Date(f.year, f.month - 1, 1),
|
|
16577
16595
|
Z.MONTH
|
|
16578
16596
|
);
|
|
16579
|
-
return
|
|
16597
|
+
return g.includes(m) || g.push(m), g;
|
|
16580
16598
|
}, []).filter(Boolean), d = [
|
|
16581
16599
|
{
|
|
16582
16600
|
field: "category",
|
|
@@ -16588,9 +16606,9 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16588
16606
|
type: "string"
|
|
16589
16607
|
},
|
|
16590
16608
|
...h.map(
|
|
16591
|
-
(
|
|
16592
|
-
field:
|
|
16593
|
-
headerName:
|
|
16609
|
+
(g) => ({
|
|
16610
|
+
field: g,
|
|
16611
|
+
headerName: g,
|
|
16594
16612
|
minWidth: 75,
|
|
16595
16613
|
renderHeader: Ne,
|
|
16596
16614
|
renderCell: MC,
|
|
@@ -16602,7 +16620,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16602
16620
|
sortComparator: NC
|
|
16603
16621
|
})
|
|
16604
16622
|
)
|
|
16605
|
-
], u =
|
|
16623
|
+
], u = C.useMemo(() => {
|
|
16606
16624
|
const f = (e ? A.filter(
|
|
16607
16625
|
(m) => m.category_guid === e || m.top_level_category_guid === e
|
|
16608
16626
|
) : A).reduce(
|
|
@@ -16629,11 +16647,11 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16629
16647
|
disableColumnMenu: !0,
|
|
16630
16648
|
hideFooter: !0,
|
|
16631
16649
|
initialState: { sorting: { sortModel: s } },
|
|
16632
|
-
onRowClick: (
|
|
16633
|
-
n?.(
|
|
16650
|
+
onRowClick: (g) => {
|
|
16651
|
+
n?.(g.row.category), i(k.TRENDS_CLICK_TABLE_ROW);
|
|
16634
16652
|
},
|
|
16635
|
-
onSortModelChange: (
|
|
16636
|
-
c(
|
|
16653
|
+
onSortModelChange: (g) => {
|
|
16654
|
+
c(g), i(k.TRENDS_CLICK_TABLE_SORT);
|
|
16637
16655
|
},
|
|
16638
16656
|
rows: u,
|
|
16639
16657
|
slotProps: { baseIconButton: { color: "secondary", sx: { ml: 8 } } },
|
|
@@ -16649,15 +16667,15 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16649
16667
|
isOpen: n,
|
|
16650
16668
|
onClose: r
|
|
16651
16669
|
}) => {
|
|
16652
|
-
const { onEvent: a } = V(), { selectedAccountGuids: i } = fA(), { common: o } = I(), { setFilter: s, sortedTransactions: c } = uA(), [h, d] =
|
|
16653
|
-
|
|
16670
|
+
const { onEvent: a } = V(), { selectedAccountGuids: i } = fA(), { common: o } = I(), { setFilter: s, sortedTransactions: c } = uA(), [h, d] = C.useState(""), u = C.useMemo(() => c.find((f) => f.guid === h), [h]);
|
|
16671
|
+
C.useEffect(() => {
|
|
16654
16672
|
s({
|
|
16655
16673
|
accounts: i,
|
|
16656
16674
|
dateRange: e,
|
|
16657
16675
|
custom: (f) => A === "" || A === f.category_guid || A === f.top_level_category_guid
|
|
16658
16676
|
});
|
|
16659
|
-
}, [i, A, e]),
|
|
16660
|
-
const
|
|
16677
|
+
}, [i, A, e]), C.useEffect(() => a(k.TRENDS_VIEW_TRANSACTIONS), []);
|
|
16678
|
+
const g = () => {
|
|
16661
16679
|
d(""), r();
|
|
16662
16680
|
};
|
|
16663
16681
|
return /* @__PURE__ */ l(
|
|
@@ -16665,7 +16683,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16665
16683
|
{
|
|
16666
16684
|
ariaLabelClose: o.close_aria,
|
|
16667
16685
|
isOpen: n,
|
|
16668
|
-
onClose:
|
|
16686
|
+
onClose: g,
|
|
16669
16687
|
title: zC.title,
|
|
16670
16688
|
children: [
|
|
16671
16689
|
u && /* @__PURE__ */ t(ct, { transaction: u }),
|
|
@@ -16676,25 +16694,25 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16676
16694
|
}, KC = T(BC), qC = {
|
|
16677
16695
|
view_transactions: "View Transactions"
|
|
16678
16696
|
}, kC = ({ onBackClick: A, sx: e }) => {
|
|
16679
|
-
const n = re(), { onEvent: r } = V(), { isDesktop: a, isTablet: i, isMobile: o } = MA(), { accounts: s } = TA(), { loadMonthlyCategoryTotals: c, monthlyCategoryTotals: h } = PA(), { sortedTransactions: d } = uA(), { isInitialized: u, selectedAccounts:
|
|
16697
|
+
const n = re(), { onEvent: r } = V(), { isDesktop: a, isTablet: i, isMobile: o } = MA(), { accounts: s } = TA(), { loadMonthlyCategoryTotals: c, monthlyCategoryTotals: h } = PA(), { sortedTransactions: d } = uA(), { isInitialized: u, selectedAccounts: g, setSelectedAccounts: f } = fA(), { trends: m } = I(), v = n.palette.mode === "dark", [E, S] = C.useState(!1), [L, w] = C.useState(!1), [D, P] = C.useState("Chart"), [N, x] = C.useState(""), [R, j] = C.useState({
|
|
16680
16698
|
start: yA(ce(/* @__PURE__ */ new Date(), 5)),
|
|
16681
16699
|
end: NA(/* @__PURE__ */ new Date())
|
|
16682
|
-
}), [F, X] =
|
|
16683
|
-
|
|
16700
|
+
}), [F, X] = C.useState(6);
|
|
16701
|
+
C.useEffect(() => {
|
|
16684
16702
|
f(s);
|
|
16685
|
-
}, [s]),
|
|
16703
|
+
}, [s]), C.useEffect(() => {
|
|
16686
16704
|
u && c(
|
|
16687
|
-
|
|
16705
|
+
g,
|
|
16688
16706
|
R.start,
|
|
16689
16707
|
R.end
|
|
16690
16708
|
).finally(() => {
|
|
16691
16709
|
S(!0);
|
|
16692
16710
|
});
|
|
16693
|
-
}, [u,
|
|
16694
|
-
const Q =
|
|
16711
|
+
}, [u, g, R]);
|
|
16712
|
+
const Q = C.useMemo(
|
|
16695
16713
|
() => PC(h),
|
|
16696
16714
|
[h]
|
|
16697
|
-
), U =
|
|
16715
|
+
), U = C.useMemo(() => {
|
|
16698
16716
|
const pA = N.length ? Q.filter(
|
|
16699
16717
|
(EA) => EA.top_level_category_guid === N || EA.category_guid === N
|
|
16700
16718
|
) : w1(Q), K = pA.filter(y1), hA = pA.filter(gn);
|
|
@@ -16702,7 +16720,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16702
16720
|
stackedDatasets: K,
|
|
16703
16721
|
unstackedDatasets: hA
|
|
16704
16722
|
};
|
|
16705
|
-
}, [Q, N]), rA =
|
|
16723
|
+
}, [Q, N]), rA = C.useMemo(() => {
|
|
16706
16724
|
const pA = _a(
|
|
16707
16725
|
U.stackedDatasets,
|
|
16708
16726
|
F
|
|
@@ -16714,7 +16732,7 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16714
16732
|
stackedDatasets: pA,
|
|
16715
16733
|
unstackedDatasets: K
|
|
16716
16734
|
};
|
|
16717
|
-
}, [U, F]), gA =
|
|
16735
|
+
}, [U, F]), gA = C.useMemo(() => {
|
|
16718
16736
|
const pA = $(
|
|
16719
16737
|
R.start,
|
|
16720
16738
|
o ? Z.MONTH_SHORT_YEAR : Z.MONTH_YEAR
|
|
@@ -16736,9 +16754,9 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16736
16754
|
x(pA);
|
|
16737
16755
|
}, Xe = (pA) => {
|
|
16738
16756
|
x(pA), r(k.TRENDS_CLICK_LEGEND, { category: _e[pA] });
|
|
16739
|
-
}, Je = (pA) => {
|
|
16740
|
-
r(k.TRENDS_HOVER_LEGEND, { category: _e[pA] });
|
|
16741
16757
|
}, Ze = (pA) => {
|
|
16758
|
+
r(k.TRENDS_HOVER_LEGEND, { category: _e[pA] });
|
|
16759
|
+
}, $e = (pA) => {
|
|
16742
16760
|
r(k.TRENDS_HOVER_AREA, { category: pA });
|
|
16743
16761
|
}, lt = (pA) => {
|
|
16744
16762
|
r(k.TRENDS_HOVER_POINT, { category: pA });
|
|
@@ -16841,8 +16859,8 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16841
16859
|
Fc,
|
|
16842
16860
|
{
|
|
16843
16861
|
onClickLegend: Xe,
|
|
16844
|
-
onHoverArea:
|
|
16845
|
-
onHoverLegend:
|
|
16862
|
+
onHoverArea: $e,
|
|
16863
|
+
onHoverLegend: Ze,
|
|
16846
16864
|
onHoverPoint: lt,
|
|
16847
16865
|
stackedDatasets: rA.stackedDatasets,
|
|
16848
16866
|
unstackedDatasets: rA.unstackedDatasets
|
|
@@ -16901,13 +16919,13 @@ const Pt = g.createContext(null), Gg = ({
|
|
|
16901
16919
|
}
|
|
16902
16920
|
);
|
|
16903
16921
|
}, XC = T(FC), jC = ({ onPrimaryCtaClick: A, sx: e }) => {
|
|
16904
|
-
const { loadMonthlyCategoryTotals: n } = PA(), { isInitialized: r } = nr(), { trends: a } = I(), { selectedAccounts: i } = fA(), [o, s] =
|
|
16905
|
-
return
|
|
16922
|
+
const { loadMonthlyCategoryTotals: n } = PA(), { isInitialized: r } = nr(), { trends: a } = I(), { selectedAccounts: i } = fA(), [o, s] = C.useState(!1);
|
|
16923
|
+
return C.useEffect(() => {
|
|
16906
16924
|
r && n(i).finally(() => {
|
|
16907
16925
|
s(!0);
|
|
16908
16926
|
});
|
|
16909
16927
|
}, [r, i]), !r || !o ? /* @__PURE__ */ t(QA, {}) : /* @__PURE__ */ t(
|
|
16910
|
-
|
|
16928
|
+
Ve,
|
|
16911
16929
|
{
|
|
16912
16930
|
onPrimaryCtaClick: A,
|
|
16913
16931
|
primaryCtaLabel: a.primary_cta,
|
|
@@ -16938,7 +16956,7 @@ export {
|
|
|
16938
16956
|
H as ApiEndpoints,
|
|
16939
16957
|
kg as AppStore,
|
|
16940
16958
|
K7 as BarChart,
|
|
16941
|
-
|
|
16959
|
+
at as BeatApi,
|
|
16942
16960
|
$g as BeatCard,
|
|
16943
16961
|
Bt as BottomActions,
|
|
16944
16962
|
cf as BubbleBudgetsMiniWidget,
|
|
@@ -16988,7 +17006,7 @@ export {
|
|
|
16988
17006
|
WA as FieldType,
|
|
16989
17007
|
jt as GlobalCopyApi,
|
|
16990
17008
|
$c as GlobalCopyStore,
|
|
16991
|
-
|
|
17009
|
+
ot as GlobalDataContext,
|
|
16992
17010
|
q7 as GlobalDataProvider,
|
|
16993
17011
|
rf as GlobalStore,
|
|
16994
17012
|
bh as GoalStore,
|
|
@@ -17013,7 +17031,7 @@ export {
|
|
|
17013
17031
|
Ja as MfaStatuses,
|
|
17014
17032
|
nC as MicroBeatCarousel,
|
|
17015
17033
|
fn as MicroInsightCard,
|
|
17016
|
-
|
|
17034
|
+
Ve as MiniWidgetContainer,
|
|
17017
17035
|
Vg as MonthlySpendComparisonIcon,
|
|
17018
17036
|
G7 as MultiSegmentDonut,
|
|
17019
17037
|
Hh as NetWorthChart,
|
|
@@ -17124,6 +17142,6 @@ export {
|
|
|
17124
17142
|
uA as useTransactionStore,
|
|
17125
17143
|
ZA as useTransactionsUiStore,
|
|
17126
17144
|
an as useUserStore,
|
|
17127
|
-
|
|
17145
|
+
Ye as useWidgetContainerProvider
|
|
17128
17146
|
};
|
|
17129
17147
|
//# sourceMappingURL=index.es.js.map
|