@mx-cartographer/experiences 4.0.14-alpha.JB0 → 4.0.14-alpha.JB2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/AccountStore-B23-oV1B.mjs +244 -0
  2. package/dist/AccountStore-B23-oV1B.mjs.map +1 -0
  3. package/dist/BeatApi-BxXgbSJY.mjs +99 -0
  4. package/dist/BeatApi-BxXgbSJY.mjs.map +1 -0
  5. package/dist/BudgetUtil-BSn9Zr71.mjs +208 -0
  6. package/dist/BudgetUtil-BSn9Zr71.mjs.map +1 -0
  7. package/dist/CashflowApi-zcebgnO1.mjs +103 -0
  8. package/dist/CashflowApi-zcebgnO1.mjs.map +1 -0
  9. package/dist/CashflowStore-gPEEBiXo.mjs +53 -0
  10. package/dist/CashflowStore-gPEEBiXo.mjs.map +1 -0
  11. package/dist/Categories-XVFviD23.mjs +117 -0
  12. package/dist/Categories-XVFviD23.mjs.map +1 -0
  13. package/dist/CategoryStore-CSNSMNA6.mjs +298 -0
  14. package/dist/CategoryStore-CSNSMNA6.mjs.map +1 -0
  15. package/dist/ConnectMiniWidget-Ep65CtHH.mjs +10854 -0
  16. package/dist/ConnectMiniWidget-Ep65CtHH.mjs.map +1 -0
  17. package/dist/DebtsStore-Duf3n1vZ.mjs +127 -0
  18. package/dist/DebtsStore-Duf3n1vZ.mjs.map +1 -0
  19. package/dist/Donut-DgMeKScZ.mjs +53 -0
  20. package/dist/Donut-DgMeKScZ.mjs.map +1 -0
  21. package/dist/Fetch-DpUi1_Dx.mjs +99 -0
  22. package/dist/Fetch-DpUi1_Dx.mjs.map +1 -0
  23. package/dist/GoalStore-BYoRLx99.mjs +128 -0
  24. package/dist/GoalStore-BYoRLx99.mjs.map +1 -0
  25. package/dist/MerchantStore-RhLvDvX-.mjs +118 -0
  26. package/dist/MerchantStore-RhLvDvX-.mjs.map +1 -0
  27. package/dist/NetWorthStore-syD1VnxE.mjs +66 -0
  28. package/dist/NetWorthStore-syD1VnxE.mjs.map +1 -0
  29. package/dist/NotificationStore-CqTYHfJC.mjs +141 -0
  30. package/dist/NotificationStore-CqTYHfJC.mjs.map +1 -0
  31. package/dist/RecurringActivityStore-B_COvGWG.mjs +304 -0
  32. package/dist/RecurringActivityStore-B_COvGWG.mjs.map +1 -0
  33. package/dist/StackedLineChart-CCqGRwvs.mjs +342 -0
  34. package/dist/StackedLineChart-CCqGRwvs.mjs.map +1 -0
  35. package/dist/TransactionStore-BUrjBWkk.mjs +478 -0
  36. package/dist/TransactionStore-BUrjBWkk.mjs.map +1 -0
  37. package/dist/index.es.js +12 -17869
  38. package/dist/index.es.js.map +1 -1
  39. package/dist/index.es10.js +107 -0
  40. package/dist/index.es10.js.map +1 -0
  41. package/dist/index.es11.js +159 -0
  42. package/dist/index.es11.js.map +1 -0
  43. package/dist/index.es12.js +483 -0
  44. package/dist/index.es12.js.map +1 -0
  45. package/dist/index.es13.js +620 -0
  46. package/dist/index.es13.js.map +1 -0
  47. package/dist/index.es14.js +788 -0
  48. package/dist/index.es14.js.map +1 -0
  49. package/dist/index.es15.js +891 -0
  50. package/dist/index.es15.js.map +1 -0
  51. package/dist/index.es16.js +962 -0
  52. package/dist/index.es16.js.map +1 -0
  53. package/dist/index.es17.js +1904 -0
  54. package/dist/index.es17.js.map +1 -0
  55. package/dist/index.es2.js +11 -0
  56. package/dist/index.es2.js.map +1 -0
  57. package/dist/index.es3.js +10 -0
  58. package/dist/index.es3.js.map +1 -0
  59. package/dist/index.es4.js +9 -0
  60. package/dist/index.es4.js.map +1 -0
  61. package/dist/index.es5.js +7 -0
  62. package/dist/index.es5.js.map +1 -0
  63. package/dist/index.es6.js +7 -0
  64. package/dist/index.es6.js.map +1 -0
  65. package/dist/index.es7.js +10 -0
  66. package/dist/index.es7.js.map +1 -0
  67. package/dist/index.es8.js +10 -0
  68. package/dist/index.es8.js.map +1 -0
  69. package/dist/index.es9.js +18 -0
  70. package/dist/index.es9.js.map +1 -0
  71. package/dist/useCombineEvents-CZUDHE96.mjs +170 -0
  72. package/dist/useCombineEvents-CZUDHE96.mjs.map +1 -0
  73. package/dist/usePrevious-BLb3umpI.mjs +11 -0
  74. package/dist/usePrevious-BLb3umpI.mjs.map +1 -0
  75. package/package.json +1 -1
@@ -0,0 +1,891 @@
1
+ import { G as P } from "./useCombineEvents-CZUDHE96.mjs";
2
+ import { A as Ma, b as Oa, u as Pa, a as Ua } from "./useCombineEvents-CZUDHE96.mjs";
3
+ import { B as U } from "./BeatApi-BxXgbSJY.mjs";
4
+ import { a as G, C as V } from "./CategoryStore-CSNSMNA6.mjs";
5
+ import { F as v, A as g } from "./Fetch-DpUi1_Dx.mjs";
6
+ import { N as J } from "./NotificationStore-CqTYHfJC.mjs";
7
+ import { a as za } from "./NotificationStore-CqTYHfJC.mjs";
8
+ import { R as Q } from "./RecurringActivityStore-B_COvGWG.mjs";
9
+ import { S as Wa } from "./RecurringActivityStore-B_COvGWG.mjs";
10
+ import "date-fns/intlFormat";
11
+ import "date-fns/getUnixTime";
12
+ import "bowser";
13
+ import { jsxs as h, jsx as o } from "react/jsx-runtime";
14
+ import j from "react";
15
+ import k from "@mui/material/Button";
16
+ import { useTokens as C, Text as T } from "@kyper/mui";
17
+ import tt from "@mui/material/Tooltip";
18
+ import "@mui/material/Box";
19
+ import et from "@mui/material/IconButton";
20
+ import { V as _ } from "./ConnectMiniWidget-Ep65CtHH.mjs";
21
+ import { at as Xa, ac as Ya, be as Ha, bf as ja, bg as Ka, W as qa, bh as Za, _ as Va, $ as Ja, aO as Qa, aP as ka, aj as tr, am as er, al as ar, aF as rr, a1 as ir, bi as or, aX as sr, aG as nr, ah as cr, ag as lr, aL as dr, aR as ur, aE as mr, av as gr, a2 as hr, ba as pr, bb as Sr, aT as br, aK as fr, aM as yr, aC as Cr, aN as wr, az as xr, a4 as Ar, aD as Br, bj as Dr, ap as Nr, aS as Tr, aU as vr, aW as Er, a3 as Rr, bk as Ir, bl as _r, aZ as $r, aY as Mr, aV as Or, aH as Pr, aI as Ur, a_ as Gr, aQ as zr, bm as Lr, a$ as Wr, aJ as Fr, X as Xr, an as Yr, Y as Hr, aA as jr, bc as Kr, bd as qr, a6 as Zr, bn as Vr, a7 as Jr, af as Qr, bo as kr, bp as ti, bs as ei, bq as ai, a0 as ri, br as ii, a8 as oi, a5 as si, b0 as ni, ai as ci, b1 as li, ar as di, ab as ui, ad as mi, a9 as gi, b2 as hi, b3 as pi, b4 as Si, b5 as bi, b6 as fi, b7 as yi, aa as Ci, au as wi, b8 as xi, b9 as Ai } from "./ConnectMiniWidget-Ep65CtHH.mjs";
22
+ import at from "@mui/material/styles/useTheme";
23
+ import "@mui/material/useMediaQuery";
24
+ import { css as w, keyframes as rt } from "@mxenabled/cssinjs";
25
+ import "date-fns/addDays";
26
+ import { addMonths as it } from "date-fns/addMonths";
27
+ import "date-fns/eachDayOfInterval";
28
+ import "date-fns/eachWeekOfInterval";
29
+ import { endOfMonth as K } from "date-fns/endOfMonth";
30
+ import "date-fns/format";
31
+ import "date-fns/isBefore";
32
+ import "date-fns/isSameMonth";
33
+ import { startOfMonth as q } from "date-fns/startOfMonth";
34
+ import { startOfToday as z } from "date-fns/startOfToday";
35
+ import "date-fns/subMonths";
36
+ import "@mui/material/Paper";
37
+ import "@mui/icons-material/KeyboardArrowLeftRounded";
38
+ import "@mui/icons-material/KeyboardArrowRightRounded";
39
+ import "date-fns/isSameDay";
40
+ import "date-fns/isWithinInterval";
41
+ import "d3";
42
+ import "@mui/material/styles";
43
+ import "@mui/x-charts";
44
+ import "@mui/material/Stack";
45
+ import "@mui/material";
46
+ import "date-fns/addYears";
47
+ import "date-fns/differenceInCalendarDays";
48
+ import "date-fns/endOfToday";
49
+ import "date-fns/endOfYear";
50
+ import "date-fns/startOfYear";
51
+ import "date-fns/subDays";
52
+ import "date-fns/subYears";
53
+ import "@mui/material/ButtonGroup";
54
+ import "@mui/material/Tab";
55
+ import "@mui/material/Tabs";
56
+ import "@mui/material/ToggleButton";
57
+ import "@mui/material/ToggleButtonGroup";
58
+ import "@mui/material/Dialog";
59
+ import "@mui/material/DialogContent";
60
+ import "@mui/icons-material/ArrowBackOutlined";
61
+ import "@mui/material/Card";
62
+ import "@mui/material/CardHeader";
63
+ import "@mui/material/CardContent";
64
+ import "uuid";
65
+ import "numeral";
66
+ import "@mui/material/CircularProgress";
67
+ import "@mui/material/FormControlLabel";
68
+ import "@mui/material/Radio";
69
+ import "@mui/material/Avatar";
70
+ import "@mui/material/ListItem";
71
+ import "@mui/material/ListItemAvatar";
72
+ import "@mui/material/ListItemButton";
73
+ import "@mui/material/ListItemText";
74
+ import "@mui/material/ListItemIcon";
75
+ import { makeAutoObservable as b, runInAction as p, reaction as ot } from "mobx";
76
+ import "date-fns/differenceInDays";
77
+ import "date-fns/fromUnixTime";
78
+ import "@mui/x-data-grid-pro";
79
+ import "date-fns";
80
+ import { getMonth as N } from "date-fns/getMonth";
81
+ import "date-fns/isAfter";
82
+ import "date-fns/addQuarters";
83
+ import "date-fns/addWeeks";
84
+ import "date-fns/nextDay";
85
+ import "date-fns/parseISO";
86
+ import "date-fns/setDate";
87
+ import "date-fns/subWeeks";
88
+ import "date-fns/getDay";
89
+ import "date-fns/formatISO";
90
+ import { D as Di } from "./Donut-DgMeKScZ.mjs";
91
+ import { S as Ti } from "./StackedLineChart-CCqGRwvs.mjs";
92
+ import { D as st, a as nt, f as ct, b as lt, c as dt } from "./BudgetUtil-BSn9Zr71.mjs";
93
+ import { S as Ei } from "./BudgetUtil-BSn9Zr71.mjs";
94
+ import { u as Ii } from "./usePrevious-BLb3umpI.mjs";
95
+ import "@honeybadger-io/react";
96
+ import { C as ut } from "./CashflowStore-gPEEBiXo.mjs";
97
+ import { D as mt } from "./DebtsStore-Duf3n1vZ.mjs";
98
+ import { G as gt } from "./GoalStore-BYoRLx99.mjs";
99
+ import { M as ht } from "./MerchantStore-RhLvDvX-.mjs";
100
+ import { N as pt } from "./NetWorthStore-syD1VnxE.mjs";
101
+ import { a as St } from "./TransactionStore-BUrjBWkk.mjs";
102
+ import { a as bt } from "./AccountStore-B23-oV1B.mjs";
103
+ import { b as $i, c as Mi, g as Oi, a as Pi, i as Ui } from "./Categories-XVFviD23.mjs";
104
+ const Na = {
105
+ ERROR: "ERROR",
106
+ LOADING: "LOADING",
107
+ SUCCESS: "SUCCESS"
108
+ };
109
+ var ft = /* @__PURE__ */ ((a) => (a[a.SpendingPlan = 0] = "SpendingPlan", a[a.Budgets = 1] = "Budgets", a))(ft || {}), yt = /* @__PURE__ */ ((a) => (a[a.RecurringExpense = 0] = "RecurringExpense", a[a.PlannedExpense = 1] = "PlannedExpense", a[a.Other = 2] = "Other", a[a.Income = 3] = "Income", a))(yt || {});
110
+ class Ta {
111
+ fetchInstance;
112
+ constructor(t, e) {
113
+ this.fetchInstance = new v(t, e);
114
+ }
115
+ getLocalizedCopy = async (t) => this.fetchInstance.post(g.LOCALIZED_COPY, t).then((e) => e);
116
+ getLocalizedContent = async (t) => this.fetchInstance.post(`${g.LOCALIZED_CONTENT}/${t}`).then((e) => e);
117
+ }
118
+ class L {
119
+ fetchInstance;
120
+ constructor(t, e) {
121
+ this.fetchInstance = new v(t, e);
122
+ }
123
+ getUserProfile = async () => this.fetchInstance.get(g.APP_DATA).then((t) => t.user_profile);
124
+ updateUserProfile = async (t) => this.fetchInstance.put(`${g.USER_PROFILES}/${t.guid}`, t).then((e) => e.user_profile);
125
+ }
126
+ class W {
127
+ fetchInstance;
128
+ constructor(t, e) {
129
+ this.fetchInstance = new v(t, e);
130
+ }
131
+ requestWidgetUrl = async (t) => this.fetchInstance.post(g.WIDGET_URLS, t).then((e) => e.widget_url);
132
+ }
133
+ const Ct = ({ color: a, labelAverage: t, labelMain: e }) => {
134
+ const r = C(), i = wt(r, a);
135
+ return /* @__PURE__ */ h("div", { className: `mx-cmn-bar-chart-legend ${i}`, children: [
136
+ /* @__PURE__ */ o("div", { "aria-label": e, className: "mx-cmn-color-square", role: "img" }),
137
+ /* @__PURE__ */ o(T, { variant: "XSmall", children: e }),
138
+ /* @__PURE__ */ h("div", { "aria-label": t, className: "mx-cmn-triple-dot", role: "img", children: [
139
+ /* @__PURE__ */ o("div", { className: "mx-cmn-dot" }),
140
+ /* @__PURE__ */ o("div", { className: "mx-cmn-dot" }),
141
+ /* @__PURE__ */ o("div", { className: "mx-cmn-dot" })
142
+ ] }),
143
+ /* @__PURE__ */ o(T, { variant: "XSmall", children: t })
144
+ ] });
145
+ }, wt = (a, t) => w({
146
+ alignItems: "center",
147
+ display: "flex",
148
+ gap: a.Spacing.XSmall,
149
+ justifyContent: "flex-end",
150
+ marginRight: a.Spacing.XLarge,
151
+ paddingBottom: a.Spacing.XSmall,
152
+ width: "100%",
153
+ "& .mx-cmn-color-square": {
154
+ backgroundColor: t,
155
+ height: 6,
156
+ width: 6
157
+ },
158
+ "& .mx-cmn-triple-dot": {
159
+ display: "flex",
160
+ gap: 1
161
+ },
162
+ "& .mx-cmn-dot": {
163
+ backgroundColor: a.Color.Neutral500,
164
+ height: 3,
165
+ width: 3,
166
+ borderRadius: 1.5
167
+ },
168
+ "& > .kyper-text": {
169
+ marginRight: a.Spacing.XSmall
170
+ }
171
+ }), F = ({
172
+ ariaLabel: a,
173
+ color: t,
174
+ height: e,
175
+ index: r,
176
+ label: i,
177
+ onClick: s,
178
+ selectedIndex: l,
179
+ value: n
180
+ }) => {
181
+ const c = C(), d = xt(c, t, e), u = (f) => {
182
+ s && (f.key === " " || f.key === "Enter") && s(r);
183
+ }, S = l === void 0 || l === r ? "primary" : "secondary", m = () => /* @__PURE__ */ o(
184
+ T,
185
+ {
186
+ "aria-hidden": !0,
187
+ bold: l === r,
188
+ className: "mx-cmn-bar-text",
189
+ color: S,
190
+ component: "div",
191
+ variant: "Small",
192
+ children: i
193
+ }
194
+ );
195
+ return /* @__PURE__ */ h("div", { className: `mx-cmn-bar-container ${d} ${n < 0 ? "mx-cmn-negative" : ""}`, children: [
196
+ n >= 0 && /* @__PURE__ */ o(m, {}),
197
+ /* @__PURE__ */ o(
198
+ "div",
199
+ {
200
+ "aria-label": a,
201
+ className: `mx-cmn-bar ${s ? "mx-cmn-clickable" : ""} ${n < 0 ? "mx-cmn-bar-negative" : ""}`,
202
+ onClick: s ? () => s?.(r) : void 0,
203
+ onKeyDown: u,
204
+ role: a ? "button" : void 0,
205
+ tabIndex: a ? 0 : void 0
206
+ }
207
+ ),
208
+ n < 0 && /* @__PURE__ */ o(m, {})
209
+ ] });
210
+ }, xt = (a, t, e) => {
211
+ const r = `expandBar-${Math.round(e)}`, i = rt(r, { from: { height: 0 }, to: { height: e } });
212
+ return w({
213
+ display: "flex",
214
+ flexDirection: "column",
215
+ justifyContent: "flex-end",
216
+ height: "100%",
217
+ "&.mx-cmn-negative": {
218
+ justifyContent: "flex-start"
219
+ },
220
+ "& .mx-cmn-bar": {
221
+ animationDelay: ".5s",
222
+ animationDuration: "1s",
223
+ animationFillMode: "forwards",
224
+ animationName: i,
225
+ animationTimingFunction: a.Easing.Default,
226
+ backgroundColor: t,
227
+ borderRadius: `${a.BorderRadius.Medium}px ${a.BorderRadius.Medium}px 0 0`,
228
+ maxHeight: e
229
+ },
230
+ "& .mx-cmn-bar-negative": {
231
+ borderRadius: `0 0 ${a.BorderRadius.Medium}px ${a.BorderRadius.Medium}px`,
232
+ marginTop: -a.Spacing.XTiny
233
+ },
234
+ "& .mx-cmn-bar-text": {
235
+ display: "flex",
236
+ justifyContent: "center",
237
+ marginBottom: a.Spacing.Tiny,
238
+ marginTop: a.Spacing.Tiny,
239
+ whiteSpace: "nowrap",
240
+ width: "100%"
241
+ }
242
+ });
243
+ }, X = ({
244
+ ariaLabel: a,
245
+ averageLineHeight: t,
246
+ bottomHeight: e,
247
+ color: r,
248
+ index: i = -1,
249
+ onClick: s,
250
+ range: l,
251
+ selectedIndex: n,
252
+ topHeight: c,
253
+ value: d,
254
+ valueLabel: u = "",
255
+ width: S,
256
+ xAxisLabel: m = ""
257
+ }) => {
258
+ const f = C(), x = At(f, S), A = d / l * c, B = Math.abs(d) / l * e, D = n === void 0 || n === i ? "primary" : "secondary";
259
+ return /* @__PURE__ */ h("div", { className: `mx-cmn-barchart-bar-column ${x}`, children: [
260
+ /* @__PURE__ */ o("div", { style: { height: c }, children: d >= 0 && /* @__PURE__ */ o(
261
+ F,
262
+ {
263
+ ariaLabel: a,
264
+ color: r,
265
+ height: A,
266
+ index: i,
267
+ label: u,
268
+ onClick: s,
269
+ selectedIndex: n,
270
+ value: d
271
+ }
272
+ ) }),
273
+ /* @__PURE__ */ o("div", { className: "mx-cmn-zero-line" }),
274
+ t !== 0 && /* @__PURE__ */ o("div", { className: "mx-cmn-chart-average", style: { bottom: t } }),
275
+ /* @__PURE__ */ o("div", { style: { height: e }, children: d < 0 && /* @__PURE__ */ o(
276
+ F,
277
+ {
278
+ ariaLabel: a,
279
+ color: r,
280
+ height: B,
281
+ index: i,
282
+ label: u,
283
+ onClick: s,
284
+ value: d
285
+ }
286
+ ) }),
287
+ /* @__PURE__ */ o(
288
+ "div",
289
+ {
290
+ className: `mx-cmn-bar-label ${s ? "mx-cmn-clickable" : ""}`,
291
+ onClick: s ? () => s(i) : void 0,
292
+ children: /* @__PURE__ */ o(T, { bold: n === i, color: D, variant: "Small", children: m })
293
+ }
294
+ )
295
+ ] });
296
+ }, At = (a, t) => w({
297
+ display: "flex",
298
+ flexDirection: "column",
299
+ flexGrow: t === void 0 ? 1 : 0,
300
+ width: t,
301
+ "& .mx-cmn-chart-average": {
302
+ borderTop: `${a.Spacing.XTiny}px dotted ${a.Color.Neutral500}`,
303
+ position: "relative",
304
+ marginRight: a.Spacing.XTiny
305
+ },
306
+ "& .mx-cmn-zero-line": {
307
+ borderBottom: "1px solid text.primary",
308
+ width: "100%"
309
+ },
310
+ "& .mx-cmn-bar-label": {
311
+ minHeight: a.Spacing.Medium,
312
+ maxHeight: a.Spacing.Medium,
313
+ marginBottom: a.Spacing.XSmall,
314
+ marginTop: a.Spacing.XSmall,
315
+ textAlign: "center",
316
+ width: "100%"
317
+ },
318
+ "& .mx-cmn-clickable": {
319
+ cursor: "pointer"
320
+ }
321
+ }), Bt = (a, t) => a + t, Dt = (a, t) => Math.abs(t) > a ? Math.abs(t) : a, Nt = (a, t) => [...a, t.value], Y = (a, t, e) => {
322
+ const r = a && t ? e / 2 : e;
323
+ return a ? r : 0;
324
+ }, Tt = (a, t, e, r) => a / (t < 0 ? -e : t) * r || 0, va = ({
325
+ average: a,
326
+ barWidth: t = "8%",
327
+ color: e,
328
+ data: r,
329
+ height: i,
330
+ legendLabelAverage: s,
331
+ legendLabelMain: l,
332
+ onBarClick: n,
333
+ selectedIndex: c,
334
+ valueFormatter: d = (u) => `${u}`
335
+ }) => {
336
+ const u = C(), S = vt(u), m = r.reduce(Nt, []), f = a !== void 0 ? a : m.reduce(Bt, 0) / m.length, x = Math.max(...m), A = Math.min(...m), B = m.reduce(Dt, 0), D = x >= 0, $ = A < 0, E = Y(D, $, i), R = Y($, D, i), M = Tt(f, x, A, E || R), Z = (y) => c === void 0 || y === c ? e : `${e}80`, O = () => /* @__PURE__ */ o(
337
+ X,
338
+ {
339
+ averageLineHeight: M,
340
+ bottomHeight: R,
341
+ color: "",
342
+ range: B,
343
+ topHeight: E,
344
+ value: 0,
345
+ width: void 0
346
+ }
347
+ );
348
+ return /* @__PURE__ */ h("div", { className: `mx-cmn-bar-chart ${S}`, children: [
349
+ /* @__PURE__ */ h("div", { className: "mx-cmn-chart-container", children: [
350
+ /* @__PURE__ */ o(O, {}),
351
+ r.map((y, I) => /* @__PURE__ */ h(j.Fragment, { children: [
352
+ /* @__PURE__ */ o(
353
+ X,
354
+ {
355
+ ariaLabel: y.ariaLabel,
356
+ averageLineHeight: M,
357
+ bottomHeight: R,
358
+ color: Z(I),
359
+ index: I,
360
+ onClick: n,
361
+ range: B,
362
+ selectedIndex: c,
363
+ topHeight: E,
364
+ value: y.value,
365
+ valueLabel: d(y.value),
366
+ width: t,
367
+ xAxisLabel: y.label
368
+ }
369
+ ),
370
+ /* @__PURE__ */ o(O, {})
371
+ ] }, `column-${I}`))
372
+ ] }),
373
+ /* @__PURE__ */ o(Ct, { color: e, labelAverage: s, labelMain: l })
374
+ ] });
375
+ }, vt = (a) => w({
376
+ "& .mx-cmn-chart-container": {
377
+ alignItems: "flex-end",
378
+ display: "flex",
379
+ justifyContent: "space-evenly",
380
+ marginTop: a.Spacing.Large,
381
+ marginBottom: a.Spacing.Medium
382
+ }
383
+ }), Ea = ({
384
+ hasGap: a = !1,
385
+ segments: t,
386
+ size: e = st,
387
+ strokeWidth: r = nt,
388
+ children: i
389
+ }) => {
390
+ const s = C(), l = Et(s, e), n = (e - r) / 2, c = e / 2;
391
+ let d = -90 - (a ? 1 : 0), u = 0;
392
+ return /* @__PURE__ */ h("div", { className: `mx-cmn-multi-segment-donut ${l}`, children: [
393
+ /* @__PURE__ */ h("svg", { height: e, width: e, children: [
394
+ /* @__PURE__ */ o(
395
+ "circle",
396
+ {
397
+ cx: c,
398
+ cy: c,
399
+ fill: "none",
400
+ r: n,
401
+ stroke: s.Color.Neutral300,
402
+ strokeWidth: r
403
+ }
404
+ ),
405
+ t.map((S, m) => (d += 360 * u + (a ? 1 : 0), u = (S.percent - (a ? 0.3 : 0)) / 100, /* @__PURE__ */ o(
406
+ "circle",
407
+ {
408
+ cx: c,
409
+ cy: c,
410
+ fill: "none",
411
+ r: n,
412
+ stroke: S.color,
413
+ strokeDasharray: 2 * Math.PI * n,
414
+ strokeDashoffset: 2 * Math.PI * n * (1 - u),
415
+ strokeWidth: r,
416
+ transform: `rotate(${d}, ${c}, ${c})`
417
+ },
418
+ m
419
+ )))
420
+ ] }),
421
+ /* @__PURE__ */ o("div", { className: "mx-cmn-multi-segment-donut-children", children: i })
422
+ ] });
423
+ }, Et = (a, t) => w({
424
+ height: t,
425
+ marginTop: `-${a.Spacing.XSmall}px`,
426
+ position: "relative",
427
+ width: t,
428
+ "& .mx-cmn-multi-segment-donut-children": {
429
+ left: "50%",
430
+ position: "absolute",
431
+ textAlign: "center",
432
+ top: "50%",
433
+ transform: "translate(-50%, -50%)"
434
+ }
435
+ }), Ra = ({
436
+ icon: a,
437
+ label: t,
438
+ onClick: e,
439
+ placement: r = "bottom",
440
+ tooltipText: i,
441
+ variant: s = "text"
442
+ }) => {
443
+ const l = at();
444
+ return /* @__PURE__ */ h(j.Fragment, { children: [
445
+ /* @__PURE__ */ o(
446
+ k,
447
+ {
448
+ onClick: e,
449
+ startIcon: a,
450
+ sx: {
451
+ [l.breakpoints.down("lg")]: { display: "none" },
452
+ [l.breakpoints.up("lg")]: { display: "inline-flex" }
453
+ },
454
+ title: i,
455
+ variant: s,
456
+ children: t
457
+ }
458
+ ),
459
+ /* @__PURE__ */ o(
460
+ tt,
461
+ {
462
+ describeChild: !0,
463
+ placement: r,
464
+ sx: { display: { xs: "inline-flex", lg: "none" } },
465
+ title: i,
466
+ children: /* @__PURE__ */ o(et, { onClick: e, children: a })
467
+ }
468
+ )
469
+ ] });
470
+ };
471
+ class Rt {
472
+ copy = {};
473
+ featureNamespace = "experiences";
474
+ api = new P("/", "");
475
+ isInitialized = !1;
476
+ constructor() {
477
+ b(this);
478
+ }
479
+ initialize = async (t, e) => {
480
+ this.api = new P(t, e), await this.getCopy(this.featureNamespace), p(() => {
481
+ this.isInitialized = !0;
482
+ });
483
+ };
484
+ getCopy = async (t, e = "") => {
485
+ try {
486
+ const r = await this.api.getGlobalCopy(t, e);
487
+ p(() => {
488
+ this.copy = r[t];
489
+ });
490
+ } catch (r) {
491
+ console.error(`Error occurred while fetching ${this.featureNamespace} copy: ${r}`);
492
+ }
493
+ };
494
+ }
495
+ class It {
496
+ beats = [];
497
+ api = new U("/", "");
498
+ constructor() {
499
+ b(this);
500
+ }
501
+ initialize = async (t, e) => {
502
+ this.api = new U(t, e), await this.loadBeats();
503
+ };
504
+ loadBeats = async () => {
505
+ const t = await this.api.getBeats();
506
+ p(() => {
507
+ this.beats = t;
508
+ });
509
+ };
510
+ }
511
+ class H {
512
+ fetchInstance;
513
+ constructor(t, e) {
514
+ this.fetchInstance = new v(t, e);
515
+ }
516
+ addBudget = async (t, e, r = null) => this.fetchInstance.post(g.BUDGETS, {
517
+ amount: e,
518
+ category_guid: t.guid,
519
+ category_name: t.name,
520
+ parent_guid: r
521
+ }).then((i) => i.budget).catch((i) => i);
522
+ deleteBudget = async (t) => this.fetchInstance.delete(`${g.BUDGETS}/${t}`).then((e) => e);
523
+ generateBudgets = async () => this.fetchInstance.post(`${g.BUDGETS}/generate`).then((t) => t);
524
+ getBudgets = async () => this.fetchInstance.get(g.BUDGETS).then((t) => t.budgets).catch((t) => t);
525
+ updateBudget = async (t) => this.fetchInstance.put(`${g.BUDGETS}/${t.guid}`, t).then((e) => e.budget).catch((e) => e);
526
+ }
527
+ class _t {
528
+ api = new H("/", "");
529
+ categoryApi = new G("/", "");
530
+ globalStore;
531
+ alert = "";
532
+ dateRange = { start: q(z()), end: K(z()) };
533
+ budgets = [];
534
+ selectedBudget;
535
+ selectedSubBudget;
536
+ theme = {};
537
+ constructor(t) {
538
+ this.globalStore = t, b(this);
539
+ }
540
+ initialize = async (t, e) => {
541
+ this.api = new H(t, e), this.categoryApi = new G(t, e), ot(
542
+ () => this.detailedBudgets,
543
+ (r) => {
544
+ if (r) {
545
+ const i = this.selectedBudget;
546
+ i && (this.selectedBudget = ct(r, i.guid));
547
+ const s = this.selectedSubBudget;
548
+ s && s.parent_guid && (this.selectedSubBudget = lt(
549
+ r,
550
+ s.guid,
551
+ s.parent_guid
552
+ ));
553
+ }
554
+ }
555
+ );
556
+ };
557
+ get detailedBudgets() {
558
+ return dt(
559
+ this.budgets.filter(
560
+ (t) => t.category_guid !== _.INCOME && t.category_guid !== _.TRANSFER && t.category_guid !== _.INVESTMENTS
561
+ ),
562
+ this.globalStore.categoryStore.detailedCategories,
563
+ this.globalStore.copyStore.copy.budgets,
564
+ this.theme
565
+ ).sort((t, e) => t.percentage > e.percentage ? -1 : t.percentage < e.percentage ? 1 : 0);
566
+ }
567
+ get unbudgetedCategories() {
568
+ return this.globalStore.categoryStore.spendCategories.filter(
569
+ (t) => !this.detailedBudgets.find((e) => e.category_guid === t.guid)
570
+ );
571
+ }
572
+ get totalBudgeted() {
573
+ return this.detailedBudgets.reduce((t, e) => t + e.amount, 0);
574
+ }
575
+ addBudget = async (t, e, r = null) => {
576
+ try {
577
+ const i = await this.api.addBudget(t, e, r);
578
+ p(() => {
579
+ this.budgets.push(i);
580
+ });
581
+ } catch (i) {
582
+ console.error(`Error adding budget: ${i}`);
583
+ }
584
+ };
585
+ deleteBudget = async (t) => {
586
+ try {
587
+ await this.api.deleteBudget(t), p(() => {
588
+ const e = this.budgets.findIndex((r) => r.guid === t);
589
+ e >= 0 && this.budgets.splice(e, 1);
590
+ });
591
+ } catch (e) {
592
+ console.error(`Error deleting budget: ${e}`);
593
+ }
594
+ };
595
+ loadBudgets = async () => {
596
+ try {
597
+ const t = await this.api.getBudgets();
598
+ p(() => {
599
+ this.budgets = t;
600
+ });
601
+ } catch (t) {
602
+ console.error(`Error occurred while loading budgets: ${t}`);
603
+ }
604
+ };
605
+ setAlert = (t) => this.alert = t;
606
+ setDateRange = (t) => this.dateRange = t;
607
+ setSelectedBudget = (t) => this.selectedBudget = t;
608
+ setSelectedSubBudget = (t) => this.selectedSubBudget = t;
609
+ setTheme = (t) => this.theme = t;
610
+ /**
611
+ * Recalculate budget by using the average amount from top-level categories
612
+ * @param categories Detailed categories
613
+ */
614
+ recalculateBudgets = async (t) => {
615
+ for (const r of t) {
616
+ const i = this.budgets.find((s) => s.category_guid === r.guid);
617
+ i ? await this.api.updateBudget({ ...i, amount: r.totalAverageAmount }) : await this.api.addBudget(r, r.totalAverageAmount);
618
+ }
619
+ const e = this.budgets.filter(
620
+ (r) => !t.find((i) => i.guid === r.category_guid)
621
+ );
622
+ for (const r of e)
623
+ await this.api.deleteBudget(r.guid);
624
+ await this.loadBudgets();
625
+ };
626
+ updateBudget = async (t) => {
627
+ try {
628
+ const e = await this.api.updateBudget(t);
629
+ p(() => {
630
+ const r = this.budgets.findIndex((i) => i.guid === t.guid);
631
+ r >= 0 && (this.budgets[r] = e);
632
+ });
633
+ } catch (e) {
634
+ console.error(`Error updating budget: ${e}`);
635
+ }
636
+ };
637
+ }
638
+ var $t = /* @__PURE__ */ ((a) => (a[a.UNKNOWN = 0] = "UNKNOWN", a[a.CORRECT = 1] = "CORRECT", a[a.INCORRECT = 2] = "INCORRECT", a))($t || {}), Mt = /* @__PURE__ */ ((a) => (a.Missed = "Missed", a.Paid = "Paid", a.Upcoming = "Upcoming expense", a.Income = "Income", a))(Mt || {}), Ot = /* @__PURE__ */ ((a) => (a[a.Unknown = 0] = "Unknown", a[a.Subscription = 1] = "Subscription", a[a.Bill = 2] = "Bill", a))(Ot || {}), Pt = /* @__PURE__ */ ((a) => (a.Desktop = "Desktop", a.Mobile = "Mobile", a))(Pt || {});
639
+ class Ut {
640
+ widgetApi = new W("/", "");
641
+ globalStore;
642
+ constructor(t) {
643
+ this.globalStore = t, b(this);
644
+ }
645
+ initialize = async (t, e) => {
646
+ this.widgetApi = new W(t, e);
647
+ };
648
+ loadWidget = async ({ widget: t = "connect_widget", mode: e = "light", ...r }) => await this.widgetApi.requestWidgetUrl({
649
+ widget_url: { widget_type: t, color_scheme: e, ...r }
650
+ });
651
+ }
652
+ class Gt {
653
+ globalStore;
654
+ isInitialized = !1;
655
+ selectedAccounts = [];
656
+ selectedAccountGuids = this.selectedAccounts.map((t) => t.guid);
657
+ displayedDate = /* @__PURE__ */ new Date();
658
+ displayedDateRange = {
659
+ start: q(this.displayedDate),
660
+ end: K(this.displayedDate)
661
+ };
662
+ constructor(t) {
663
+ b(this), this.globalStore = t;
664
+ }
665
+ setInitialized = (t) => {
666
+ this.isInitialized = t;
667
+ };
668
+ setSelectedAccounts = (t) => {
669
+ this.selectedAccounts = t, this.selectedAccountGuids = this.selectedAccounts.map((e) => e.guid);
670
+ };
671
+ // Sets an array of selected account guids for the AccountFilter component
672
+ setSelectedAccountGuids = (t) => {
673
+ this.selectedAccounts = this.globalStore.accountStore.accounts.filter(
674
+ (e) => t.includes(e.guid)
675
+ ), this.selectedAccountGuids = t;
676
+ };
677
+ setDisplayedDate = (t, e) => {
678
+ this.displayedDate = e, this.displayedDateRange = {
679
+ start: t,
680
+ end: e
681
+ };
682
+ };
683
+ get shouldDisableNextDate() {
684
+ const t = N(this.displayedDate), e = N(it(/* @__PURE__ */ new Date(), 1));
685
+ return t === e;
686
+ }
687
+ get shouldDisablePrevDate() {
688
+ const t = N(this.displayedDate), e = N(/* @__PURE__ */ new Date());
689
+ return t === e;
690
+ }
691
+ }
692
+ class zt {
693
+ api = new L("/", "");
694
+ userProfile = null;
695
+ constructor() {
696
+ b(this);
697
+ }
698
+ initialize = async (t, e) => {
699
+ this.api = new L(t, e), await this.loadUserProfile();
700
+ };
701
+ loadUserProfile = async () => {
702
+ try {
703
+ const t = await this.api.getUserProfile();
704
+ p(() => {
705
+ this.userProfile = t;
706
+ });
707
+ } catch (t) {
708
+ console.error(`Error occurred while loading user profile: ${t}`);
709
+ }
710
+ };
711
+ updateUserProfile = async (t) => {
712
+ try {
713
+ const e = await this.api.updateUserProfile(t);
714
+ p(() => {
715
+ this.userProfile = e;
716
+ });
717
+ } catch (e) {
718
+ console.error(`Error occurred while updating user profile: ${e}`);
719
+ }
720
+ };
721
+ }
722
+ class Ia {
723
+ accountStore;
724
+ beatStore;
725
+ budgetsStore;
726
+ cashflowStore;
727
+ categoryStore;
728
+ connectStore;
729
+ copyStore;
730
+ goalStore;
731
+ debtsStore;
732
+ merchantStore;
733
+ netWorthStore;
734
+ notificationStore;
735
+ recurringActivityStore;
736
+ transactionStore;
737
+ userStore;
738
+ globalUiStore;
739
+ isInitialized = !1;
740
+ constructor() {
741
+ this.accountStore = new bt(this), this.beatStore = new It(), this.budgetsStore = new _t(this), this.cashflowStore = new ut(this), this.categoryStore = new V(this), this.connectStore = new Ut(this), this.goalStore = new gt(this), this.debtsStore = new mt(this), this.copyStore = new Rt(), this.merchantStore = new ht(), this.netWorthStore = new pt(this), this.notificationStore = new J(), this.recurringActivityStore = new Q(this), this.transactionStore = new St(this), this.userStore = new zt(), this.globalUiStore = new Gt(this), b(this);
742
+ }
743
+ initialize = async (t, e) => {
744
+ await this.copyStore.initialize(t, e), Promise.all([
745
+ this.accountStore.initialize(t, e),
746
+ this.beatStore.initialize(t, e),
747
+ this.goalStore.initialize(t, e),
748
+ this.merchantStore.initialize(t, e),
749
+ this.userStore.initialize(t, e),
750
+ this.categoryStore.initialize(t, e),
751
+ this.transactionStore.initialize(t, e),
752
+ this.recurringActivityStore.initialize(t, e),
753
+ this.budgetsStore.initialize(t, e),
754
+ this.notificationStore.initialize(t, e),
755
+ this.connectStore.initialize(t, e)
756
+ ]).then(() => {
757
+ this.isInitialized = !0, this.globalUiStore.setInitialized(!0);
758
+ });
759
+ };
760
+ }
761
+ export {
762
+ Xa as ANALYTICS_EVENTS,
763
+ Ya as AccountFilter,
764
+ Ha as AccountIcon,
765
+ ja as AccountIconVariants,
766
+ Ka as AccountSubType,
767
+ qa as AccountType,
768
+ Za as AccountTypeName,
769
+ Va as ActivityStatus,
770
+ Ja as ActivityType,
771
+ Ma as AnalyticsApi,
772
+ g as ApiEndpoints,
773
+ va as BarChart,
774
+ U as BeatApi,
775
+ Qa as Calendar,
776
+ ka as CalendarSelectionTypes,
777
+ G as CategoryApi,
778
+ tr as CategoryColors,
779
+ er as CategoryGuidToName,
780
+ _ as CategoryGuids,
781
+ ar as CategoryIcon,
782
+ rr as ConnectDrawer,
783
+ ir as ConnectionStatus,
784
+ or as ConnectionStatusEnums,
785
+ sr as CurrencyCodes,
786
+ nr as CurrencyInput,
787
+ cr as CurrencyText,
788
+ lr as DATE_FORMATS_INTL,
789
+ st as DEFAULT_DONUT_SIZE,
790
+ nt as DEFAULT_STROKE_WIDTH,
791
+ dr as DataRow,
792
+ ur as DateRangeSelector,
793
+ mr as Dialog,
794
+ Di as Donut,
795
+ gr as Drawer,
796
+ hr as ErrorStatuses,
797
+ Mt as ExpenseStatus,
798
+ v as Fetch,
799
+ P as GlobalCopyApi,
800
+ Rt as GlobalCopyStore,
801
+ pr as GlobalDataContext,
802
+ Sr as GlobalDataProvider,
803
+ Ia as GlobalStore,
804
+ br as INCOME_ACCOUNT_TYPES,
805
+ fr as IconBacking,
806
+ yr as InformationTooltip,
807
+ yt as IterationItemTypes,
808
+ Na as LOADING_STATUS,
809
+ Cr as LineChart,
810
+ wr as ListItemWrapper,
811
+ xr as Loader,
812
+ Ta as LocalizedCopyApi,
813
+ Ar as MfaStatuses,
814
+ Br as MiniWidgetContainer,
815
+ Ea as MultiSegmentDonut,
816
+ Dr as NonConnectedStatuses,
817
+ za as NotificationApi,
818
+ Nr as ORDINAL_DATE_FORMAT,
819
+ Tr as ORDINAL_MONTH_DAY_YEAR_FORMAT,
820
+ vr as PAYMENT_ACCOUNT_TYPES,
821
+ Er as PaymentCategories,
822
+ ft as PlanTypes,
823
+ Rr as ProcessingStatuses,
824
+ Ir as PropertyType,
825
+ _r as PropertyTypeName,
826
+ $r as RECURRENCE_COPY,
827
+ Mr as RecurrenceTypes,
828
+ Ra as ResponsiveButton,
829
+ Or as SPENDING_ACCOUNT_TYPES,
830
+ Ot as ScheduledPaymentTypes,
831
+ Wa as ScheduledPaymentsApi,
832
+ Pt as ScreenSize,
833
+ Pr as SearchBox,
834
+ Ur as SelectionBox,
835
+ Ei as SingleSegmentDonut,
836
+ Gr as Sizes,
837
+ Ti as StackedLineChart,
838
+ zr as StatusBar,
839
+ Lr as StatusName,
840
+ Wr as TOUCH_TARGET,
841
+ Fr as TabContentContainer,
842
+ Xr as TrackType,
843
+ Yr as TransactionStatus,
844
+ Hr as TransactionType,
845
+ L as UserApi,
846
+ zt as UserStore,
847
+ $t as UserVerification,
848
+ W as WidgetApi,
849
+ jr as WidgetContainer,
850
+ Kr as WidgetContainerContext,
851
+ qr as WidgetContainerProvider,
852
+ Oa as analyticsSession,
853
+ Zr as buildDynamicCopy,
854
+ Vr as buildPluralCopy,
855
+ Jr as formatCurrency,
856
+ Qr as formatDate,
857
+ kr as formatOrdinal,
858
+ ti as formatPercentage,
859
+ ei as fromTimestampToMonthYear,
860
+ $i as getCategory,
861
+ Mi as getCategoryTotalsByParent,
862
+ ai as getCurrencyCodes,
863
+ Oi as getDetailedCategory,
864
+ Pi as getDetailedSubCategory,
865
+ ri as getLocale,
866
+ Ui as isIncome,
867
+ ii as isValidNumber,
868
+ oi as useAccountStore,
869
+ si as useBudgetsStore,
870
+ ni as useCashflowStore,
871
+ ci as useCategoryStore,
872
+ Pa as useCombineEvents,
873
+ Ua as useCombinePageviews,
874
+ li as useDebtStore,
875
+ di as useEvent,
876
+ ui as useGlobalCopyStore,
877
+ mi as useGlobalStore,
878
+ gi as useGlobalUiStore,
879
+ hi as useGoalStore,
880
+ pi as useMerchantStore,
881
+ Si as useNetWorthStore,
882
+ bi as useNotificationStore,
883
+ fi as usePageView,
884
+ Ii as usePrevious,
885
+ yi as useRecurringActivityStore,
886
+ Ci as useScreenSize,
887
+ wi as useTransactionStore,
888
+ xi as useUserStore,
889
+ Ai as useWidgetContainerProvider
890
+ };
891
+ //# sourceMappingURL=index.es15.js.map