@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,127 @@
1
+ import { makeAutoObservable as c } from "mobx";
2
+ import { getDate as u, fromUnixTime as _, startOfMonth as l } from "date-fns";
3
+ import "bowser";
4
+ import "date-fns/getUnixTime";
5
+ import "date-fns/intlFormat";
6
+ import { W as d } from "./ConnectMiniWidget-Ep65CtHH.mjs";
7
+ import "react";
8
+ import "@honeybadger-io/react";
9
+ import "numeral";
10
+ import "date-fns/addMonths";
11
+ import "date-fns/addQuarters";
12
+ import "date-fns/addWeeks";
13
+ import "date-fns/addYears";
14
+ import "date-fns/getDay";
15
+ import "date-fns/isBefore";
16
+ import "date-fns/nextDay";
17
+ import "date-fns/setDate";
18
+ import "date-fns/startOfToday";
19
+ import "date-fns/fromUnixTime";
20
+ import "react/jsx-runtime";
21
+ import "@mui/material/Button";
22
+ import "@kyper/mui";
23
+ import "@mui/material/Tooltip";
24
+ import "@mui/material/Box";
25
+ import "@mui/material/IconButton";
26
+ import "@mui/material/styles/useTheme";
27
+ import "@mui/material/useMediaQuery";
28
+ import "@mxenabled/cssinjs";
29
+ import "date-fns/addDays";
30
+ import "date-fns/eachDayOfInterval";
31
+ import "date-fns/eachWeekOfInterval";
32
+ import "date-fns/endOfMonth";
33
+ import "date-fns/format";
34
+ import "date-fns/isSameMonth";
35
+ import "date-fns/startOfMonth";
36
+ import "date-fns/subMonths";
37
+ import "@mui/material/Paper";
38
+ import "@mui/icons-material/KeyboardArrowLeftRounded";
39
+ import "@mui/icons-material/KeyboardArrowRightRounded";
40
+ import "date-fns/isSameDay";
41
+ import "date-fns/isWithinInterval";
42
+ import "d3";
43
+ import "@mui/material/styles";
44
+ import "@mui/x-charts";
45
+ import "@mui/material/Stack";
46
+ import "@mui/material";
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 "@mui/material/CircularProgress";
66
+ import "@mui/material/FormControlLabel";
67
+ import "@mui/material/Radio";
68
+ import "@mui/material/Avatar";
69
+ import "@mui/material/ListItem";
70
+ import "@mui/material/ListItemAvatar";
71
+ import "@mui/material/ListItemButton";
72
+ import "@mui/material/ListItemText";
73
+ import "@mui/material/ListItemIcon";
74
+ import "date-fns/differenceInDays";
75
+ import "@mui/x-data-grid-pro";
76
+ import "date-fns/getMonth";
77
+ import "date-fns/isAfter";
78
+ import "date-fns/parseISO";
79
+ import "date-fns/subWeeks";
80
+ import "date-fns/formatISO";
81
+ function f(i, t) {
82
+ const r = t.map((o) => {
83
+ const e = i.find((p) => p.guid === o.account_guid);
84
+ return e ? a(e, o) : null;
85
+ }).filter((o) => o !== null), m = i.filter((o) => !r.some((e) => e?.account.guid === o.guid)).map((o) => a(o));
86
+ return [...r, ...m].filter((o) => o?.account ? o.account.account_type === d.CHECKING_LINE_OF_CREDIT ? Number(o.account.balance) < 0 : !0 : !1);
87
+ }
88
+ function a(i, t) {
89
+ const r = t?.payment_due_at ? u(_(t.payment_due_at)) : 1, m = l(/* @__PURE__ */ new Date()).setDate(r);
90
+ return {
91
+ account: i,
92
+ goal: t,
93
+ guid: t?.guid,
94
+ name: t?.name ?? "Unknown",
95
+ position: t?.position,
96
+ balance: t?.current_amount ?? 0,
97
+ interest_rate: t?.interest_rate ?? 0,
98
+ monthly_payment: t?.monthly_payment ?? 0,
99
+ current_amount: t?.current_amount ?? 0,
100
+ payment_due_date: m,
101
+ projected_payoff_date: t?.projected_to_complete_at,
102
+ is_excluded: i.is_excluded_from_debts,
103
+ is_paid_off: !!t?.completed_at,
104
+ is_impossible: t ? b(t) : void 0
105
+ };
106
+ }
107
+ function b(i) {
108
+ const { current_amount: t, interest_rate: r, monthly_payment: m } = i;
109
+ if (!r || !m) return !0;
110
+ const s = 12, o = 100, e = 1200, p = r / (s * o);
111
+ let n;
112
+ return p !== 0 ? n = -Math.log(1 - p * t / m) / Math.log(1 + p) : n = t / m, !Number.isFinite(n) || n > e;
113
+ }
114
+ class Bt {
115
+ globalStore;
116
+ constructor(t) {
117
+ this.globalStore = t, c(this);
118
+ }
119
+ get debts() {
120
+ const { accounts: t } = this.globalStore.accountStore, { debtGoals: r } = this.globalStore.goalStore;
121
+ return f(t, r);
122
+ }
123
+ }
124
+ export {
125
+ Bt as D
126
+ };
127
+ //# sourceMappingURL=DebtsStore-Duf3n1vZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebtsStore-Duf3n1vZ.mjs","sources":["../src/debts/utils/DebtStore.ts","../src/debts/store/DebtsStore.ts"],"sourcesContent":["import { fromUnixTime, getDate, startOfMonth } from 'date-fns'\nimport { AccountType, type Account, type Debt, type Goal } from '../../common'\n\nfunction loadDebts(accounts: Account[], goals: Goal[]): Debt[] {\n const goalDebts = goals\n .map((goal) => {\n const account = accounts.find((acc) => acc.guid === goal.account_guid)\n return account ? createDebt(account, goal) : null\n })\n .filter((debt) => debt !== null)\n\n const liabilityDebts = accounts\n .filter((acc) => !goalDebts.some((debt) => debt?.account.guid === acc.guid))\n .map((account) => createDebt(account))\n\n const debts = [...goalDebts, ...liabilityDebts].filter((debt) => {\n if (!debt?.account) return false\n // Exclude checking line of credit accounts with positive balance\n if (debt.account.account_type === AccountType.CHECKING_LINE_OF_CREDIT) {\n return Number(debt.account.balance) < 0\n }\n return true\n })\n\n return debts\n}\n\nfunction createDebt(account: Account, goal?: Goal): Debt {\n // Get payment day of month; default to 1st\n const paymentDay = goal?.payment_due_at ? getDate(fromUnixTime(goal.payment_due_at)) : 1\n const paymentDate = startOfMonth(new Date()).setDate(paymentDay)\n\n return {\n account,\n goal,\n guid: goal?.guid,\n name: goal?.name ?? 'Unknown',\n position: goal?.position,\n balance: goal?.current_amount ?? 0,\n interest_rate: goal?.interest_rate ?? 0,\n monthly_payment: goal?.monthly_payment ?? 0,\n current_amount: goal?.current_amount ?? 0,\n payment_due_date: paymentDate,\n projected_payoff_date: goal?.projected_to_complete_at,\n is_excluded: account.is_excluded_from_debts,\n is_paid_off: Boolean(goal?.completed_at),\n is_impossible: goal ? isImpossible(goal) : undefined,\n }\n}\n\nfunction isImpossible(goal: Goal) {\n const { current_amount, interest_rate, monthly_payment } = goal\n if (!interest_rate || !monthly_payment) return true\n\n const MONTHS = 12\n const INTEREST_TO_DECIMAL = 100\n const MAX_MONTHLY_PAYMENTS = 1200 // 1 payment / month * 12 months * 100 years\n\n const monthlyInterestRate = interest_rate / (MONTHS * INTEREST_TO_DECIMAL)\n let numberOfMonthlyPayments\n\n // Calculates the total number of monthly payments needed\n // Source https://brownmath.com/bsci/loan.htm#Eq3\n if (monthlyInterestRate !== 0) {\n numberOfMonthlyPayments =\n -Math.log(1 - (monthlyInterestRate * current_amount) / monthly_payment) /\n Math.log(1 + monthlyInterestRate)\n } else {\n numberOfMonthlyPayments = current_amount / monthly_payment\n }\n\n return !Number.isFinite(numberOfMonthlyPayments) || numberOfMonthlyPayments > MAX_MONTHLY_PAYMENTS\n}\n\nexport { createDebt, isImpossible, loadDebts }\n","import { makeAutoObservable } from 'mobx'\n\nimport { type GlobalStore, type Debt } from '../../common'\nimport { loadDebts } from '../utils/DebtStore'\n\nexport class DebtsStore {\n globalStore: GlobalStore\n\n constructor(globalStore: GlobalStore) {\n this.globalStore = globalStore\n makeAutoObservable(this)\n }\n\n get debts(): Debt[] {\n const { accounts } = this.globalStore.accountStore\n const { debtGoals } = this.globalStore.goalStore\n\n return loadDebts(accounts, debtGoals)\n }\n}\n"],"names":["loadDebts","accounts","goals","goalDebts","goal","account","acc","createDebt","debt","liabilityDebts","AccountType","paymentDay","getDate","fromUnixTime","paymentDate","startOfMonth","isImpossible","current_amount","interest_rate","monthly_payment","MONTHS","INTEREST_TO_DECIMAL","MAX_MONTHLY_PAYMENTS","monthlyInterestRate","numberOfMonthlyPayments","DebtsStore","globalStore","makeAutoObservable","debtGoals"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAASA,EAAUC,GAAqBC,GAAuB;AAC7D,QAAMC,IAAYD,EACf,IAAI,CAACE,MAAS;AACP,UAAAC,IAAUJ,EAAS,KAAK,CAACK,MAAQA,EAAI,SAASF,EAAK,YAAY;AACrE,WAAOC,IAAUE,EAAWF,GAASD,CAAI,IAAI;AAAA,EAC9C,CAAA,EACA,OAAO,CAACI,MAASA,MAAS,IAAI,GAE3BC,IAAiBR,EACpB,OAAO,CAACK,MAAQ,CAACH,EAAU,KAAK,CAACK,MAASA,GAAM,QAAQ,SAASF,EAAI,IAAI,CAAC,EAC1E,IAAI,CAACD,MAAYE,EAAWF,CAAO,CAAC;AAWhC,SATO,CAAC,GAAGF,GAAW,GAAGM,CAAc,EAAE,OAAO,CAACD,MACjDA,GAAM,UAEPA,EAAK,QAAQ,iBAAiBE,EAAY,0BACrC,OAAOF,EAAK,QAAQ,OAAO,IAAI,IAEjC,KALoB,EAM5B;AAGH;AAEA,SAASD,EAAWF,GAAkBD,GAAmB;AAEjD,QAAAO,IAAaP,GAAM,iBAAiBQ,EAAQC,EAAaT,EAAK,cAAc,CAAC,IAAI,GACjFU,IAAcC,EAAa,oBAAI,KAAM,CAAA,EAAE,QAAQJ,CAAU;AAExD,SAAA;AAAA,IACL,SAAAN;AAAA,IACA,MAAAD;AAAA,IACA,MAAMA,GAAM;AAAA,IACZ,MAAMA,GAAM,QAAQ;AAAA,IACpB,UAAUA,GAAM;AAAA,IAChB,SAASA,GAAM,kBAAkB;AAAA,IACjC,eAAeA,GAAM,iBAAiB;AAAA,IACtC,iBAAiBA,GAAM,mBAAmB;AAAA,IAC1C,gBAAgBA,GAAM,kBAAkB;AAAA,IACxC,kBAAkBU;AAAA,IAClB,uBAAuBV,GAAM;AAAA,IAC7B,aAAaC,EAAQ;AAAA,IACrB,aAAa,EAAQD,GAAM;AAAA,IAC3B,eAAeA,IAAOY,EAAaZ,CAAI,IAAI;AAAA,EAAA;AAE/C;AAEA,SAASY,EAAaZ,GAAY;AAChC,QAAM,EAAE,gBAAAa,GAAgB,eAAAC,GAAe,iBAAAC,EAAA,IAAoBf;AAC3D,MAAI,CAACc,KAAiB,CAACC,EAAwB,QAAA;AAE/C,QAAMC,IAAS,IACTC,IAAsB,KACtBC,IAAuB,MAEvBC,IAAsBL,KAAiBE,IAASC;AAClD,MAAAG;AAIJ,SAAID,MAAwB,IAExBC,IAAA,CAAC,KAAK,IAAI,IAAKD,IAAsBN,IAAkBE,CAAe,IACtE,KAAK,IAAI,IAAII,CAAmB,IAElCC,IAA0BP,IAAiBE,GAGtC,CAAC,OAAO,SAASK,CAAuB,KAAKA,IAA0BF;AAChF;ACnEO,MAAMG,GAAW;AAAA,EACtB;AAAA,EAEA,YAAYC,GAA0B;AACpC,SAAK,cAAcA,GACnBC,EAAmB,IAAI;AAAA,EACzB;AAAA,EAEA,IAAI,QAAgB;AAClB,UAAM,EAAE,UAAA1B,EAAa,IAAA,KAAK,YAAY,cAChC,EAAE,WAAA2B,EAAc,IAAA,KAAK,YAAY;AAEhC,WAAA5B,EAAUC,GAAU2B,CAAS;AAAA,EACtC;AACF;"}
@@ -0,0 +1,53 @@
1
+ import { jsxs as p, jsx as e } from "react/jsx-runtime";
2
+ import u from "react";
3
+ import { selectAll as f, interpolateString as g, arc as m } from "d3";
4
+ import n from "@mui/material/Box";
5
+ const R = 100, A = 140, I = 10, v = ({
6
+ data: i,
7
+ onClick: a,
8
+ selectedId: s,
9
+ size: t = 300,
10
+ children: l
11
+ }) => {
12
+ let r = 0;
13
+ return u.useEffect(() => {
14
+ f(".arc-outer").transition("roll").duration(500).attrTween("transform", () => g("rotate(0)", "rotate(360)"));
15
+ }, []), /* @__PURE__ */ p(n, { height: t, position: "relative", width: t, children: [
16
+ /* @__PURE__ */ e(n, { height: "100%", padding: t / 3.75, width: "100%", children: l }),
17
+ /* @__PURE__ */ e(
18
+ "svg",
19
+ {
20
+ height: t,
21
+ style: { position: "absolute", top: 0, left: 0 },
22
+ viewBox: "-150 -150 300 300",
23
+ width: t,
24
+ children: /* @__PURE__ */ e("g", { children: i.map((o) => {
25
+ const c = r;
26
+ r = r + 2 * Math.PI * (o.value / 100);
27
+ const d = r, h = m().cornerRadius(4)({
28
+ innerRadius: R,
29
+ outerRadius: A + (o.id === s ? I : 0),
30
+ startAngle: c,
31
+ endAngle: d,
32
+ padAngle: 0.025
33
+ });
34
+ return /* @__PURE__ */ e(
35
+ "path",
36
+ {
37
+ className: "arc-outer",
38
+ d: h,
39
+ fill: o.color,
40
+ onClick: () => a?.(o.id),
41
+ style: { cursor: "pointer" }
42
+ },
43
+ o.id
44
+ );
45
+ }) })
46
+ }
47
+ )
48
+ ] });
49
+ };
50
+ export {
51
+ v as D
52
+ };
53
+ //# sourceMappingURL=Donut-DgMeKScZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Donut-DgMeKScZ.mjs","sources":["../src/common/components/charts/Donut.tsx"],"sourcesContent":["import React from 'react'\nimport { arc, selectAll, interpolateString } from 'd3'\n\nimport Box from '@mui/material/Box'\n\nconst INNER_RADIUS = 100\nconst OUT_RADIUS = 140\nconst SELECTION_RADIUS = 10\n\nexport interface DonutData {\n id: string\n label?: string\n color: string\n value: number\n}\n\nexport interface DonutProps {\n data: DonutData[]\n onClick?: (id: string) => void\n selectedId?: string\n size?: number\n}\n\nconst Donut: React.FC<React.PropsWithChildren<DonutProps>> = ({\n data,\n onClick,\n selectedId,\n size = 300,\n children,\n}) => {\n let offset = 0\n\n React.useEffect(() => {\n selectAll('.arc-outer')\n .transition('roll')\n .duration(500)\n .attrTween('transform', () => interpolateString('rotate(0)', 'rotate(360)'))\n }, [])\n\n return (\n <Box height={size} position=\"relative\" width={size}>\n <Box height=\"100%\" padding={size / 3.75} width=\"100%\">\n {children}\n </Box>\n <svg\n height={size}\n style={{ position: 'absolute', top: 0, left: 0 }}\n viewBox={`-150 -150 300 300`}\n width={size}\n >\n <g>\n {data.map((item) => {\n const startAngle = offset\n offset = offset + 2 * Math.PI * (item.value / 100)\n const endAngle = offset\n\n const segment = arc().cornerRadius(4)({\n innerRadius: INNER_RADIUS,\n outerRadius: OUT_RADIUS + (item.id === selectedId ? SELECTION_RADIUS : 0),\n startAngle,\n endAngle,\n padAngle: 0.025,\n }) as string\n\n return (\n <path\n className=\"arc-outer\"\n d={segment}\n fill={item.color}\n key={item.id}\n onClick={() => onClick?.(item.id)}\n style={{ cursor: 'pointer' }}\n />\n )\n })}\n </g>\n </svg>\n </Box>\n )\n}\n\nexport default Donut\n"],"names":["INNER_RADIUS","OUT_RADIUS","SELECTION_RADIUS","Donut","data","onClick","selectedId","size","children","offset","React","selectAll","interpolateString","Box","jsx","item","startAngle","endAngle","segment","arc"],"mappings":";;;;AAKA,MAAMA,IAAe,KACfC,IAAa,KACbC,IAAmB,IAgBnBC,IAAuD,CAAC;AAAA,EAC5D,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC;AACF,MAAM;AACJ,MAAIC,IAAS;AAEb,SAAAC,EAAM,UAAU,MAAM;AACpB,IAAAC,EAAU,YAAY,EACnB,WAAW,MAAM,EACjB,SAAS,GAAG,EACZ,UAAU,aAAa,MAAMC,EAAkB,aAAa,aAAa,CAAC;AAAA,EAC/E,GAAG,CAAE,CAAA,qBAGFC,GAAI,EAAA,QAAQN,GAAM,UAAS,YAAW,OAAOA,GAC5C,UAAA;AAAA,IAAC,gBAAAO,EAAAD,GAAA,EAAI,QAAO,QAAO,SAASN,IAAO,MAAM,OAAM,QAC5C,UAAAC,EACH,CAAA;AAAA,IACA,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQP;AAAA,QACR,OAAO,EAAE,UAAU,YAAY,KAAK,GAAG,MAAM,EAAE;AAAA,QAC/C,SAAS;AAAA,QACT,OAAOA;AAAA,QAEP,UAAC,gBAAAO,EAAA,KAAA,EACE,UAAKV,EAAA,IAAI,CAACW,MAAS;AAClB,gBAAMC,IAAaP;AACnB,UAAAA,IAASA,IAAS,IAAI,KAAK,MAAMM,EAAK,QAAQ;AAC9C,gBAAME,IAAWR,GAEXS,IAAUC,EAAA,EAAM,aAAa,CAAC,EAAE;AAAA,YACpC,aAAanB;AAAA,YACb,aAAaC,KAAcc,EAAK,OAAOT,IAAaJ,IAAmB;AAAA,YACvE,YAAAc;AAAA,YACA,UAAAC;AAAA,YACA,UAAU;AAAA,UAAA,CACX;AAGC,iBAAA,gBAAAH;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,GAAGI;AAAA,cACH,MAAMH,EAAK;AAAA,cAEX,SAAS,MAAMV,IAAUU,EAAK,EAAE;AAAA,cAChC,OAAO,EAAE,QAAQ,UAAU;AAAA,YAAA;AAAA,YAFtBA,EAAK;AAAA,UAAA;AAAA,QAKf,CAAA,GACH;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
@@ -0,0 +1,99 @@
1
+ import { a0 as h } from "./ConnectMiniWidget-Ep65CtHH.mjs";
2
+ import { Honeybadger as a } from "@honeybadger-io/react";
3
+ const T = {
4
+ ACCOUNTS: "accounts",
5
+ ANALYTICS_EVENTS: "analytics_events",
6
+ ANALYTICS_FEATURE_VISITS: "feature_visits",
7
+ ANALYTICS_PAGEVIEWS: "analytics_pageviews",
8
+ ANALYTICS_SESSION: "analytics_sessions",
9
+ APP_DATA: "raja/data?type=master",
10
+ BEATS: "beats",
11
+ BUDGETS: "budgets",
12
+ CASHFLOW_EVENTS: "cashflow_events",
13
+ CASHFLOW_SEQUENCES: "cashflow_sequences",
14
+ CATEGORIES: "categories",
15
+ DATE_RANGE_CATEGORY_TOTALS: "date_range_category_totals",
16
+ GOALS: "goals",
17
+ INSTITUTIONS: "institutions",
18
+ LOCALIZED_COPY: "localized_copies",
19
+ LOCALIZED_CONTENT: "localized_content",
20
+ MEMBERS: "members",
21
+ MERCHANTS: "merchants",
22
+ MONTHLY_CATEGORY_TOTALS: "monthly_category_totals",
23
+ NOTIFICATIONS: "notifications",
24
+ SCHEDULED_PAYMENTS: "scheduled_payments",
25
+ SPENDING_PLANS: "spending_plans",
26
+ TAGGINGS: "taggings",
27
+ TAGS: "tags",
28
+ TRANSACTION_RULES: "transaction_rules",
29
+ TRANSACTIONS: "transactions",
30
+ USER_PROFILES: "user_profiles",
31
+ WIDGET_URLS: "widget_urls"
32
+ };
33
+ class A {
34
+ endpoint = "/";
35
+ headers = {};
36
+ constructor(s, n) {
37
+ this.endpoint = s, this.headers = {
38
+ Accept: "application/json",
39
+ "Accept-Language": h(),
40
+ "Content-Type": "application/json",
41
+ "MD-Session-Token": n
42
+ };
43
+ }
44
+ get = async (s) => {
45
+ const n = {
46
+ method: "GET",
47
+ headers: this.headers
48
+ };
49
+ return fetch(`${this.endpoint}${s}`, n).then((t) => {
50
+ if (t.ok)
51
+ return t.text();
52
+ throw t;
53
+ }).then((t) => t.length ? JSON.parse(t) : {}).then((t) => t).catch((t) => {
54
+ throw a.notify(t), t;
55
+ });
56
+ };
57
+ post = async (s, n) => {
58
+ const t = n ? JSON.stringify(n) : void 0, o = {
59
+ method: "POST",
60
+ headers: this.headers,
61
+ body: t
62
+ };
63
+ return fetch(`${this.endpoint}${s}`, o).then((e) => {
64
+ if (!e.ok)
65
+ throw e;
66
+ return e.text();
67
+ }).then((e) => e.length ? JSON.parse(e) : {}).then((e) => e).catch((e) => {
68
+ throw a.notify(e), e;
69
+ });
70
+ };
71
+ put = async (s, n) => {
72
+ const t = JSON.stringify(n), o = {
73
+ method: "PUT",
74
+ headers: this.headers,
75
+ body: t
76
+ };
77
+ return fetch(`${this.endpoint}${s}`, o).then((e) => e.ok ? e.text() : e.text().then((i) => {
78
+ throw new Error(i);
79
+ })).then((e) => e.length ? JSON.parse(e) : {}).then((e) => e).catch((e) => {
80
+ throw a.notify(e), e;
81
+ });
82
+ };
83
+ delete = async (s) => {
84
+ const n = {
85
+ method: "DELETE",
86
+ headers: this.headers
87
+ };
88
+ return fetch(`${this.endpoint}${s}`, n).then((t) => t.ok ? t.text() : t.text().then((o) => {
89
+ throw new Error(o);
90
+ })).then((t) => t.length ? JSON.parse(t) : {}).then((t) => t).catch((t) => {
91
+ throw a.notify(t), t;
92
+ });
93
+ };
94
+ }
95
+ export {
96
+ T as A,
97
+ A as F
98
+ };
99
+ //# sourceMappingURL=Fetch-DpUi1_Dx.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fetch-DpUi1_Dx.mjs","sources":["../src/common/constants/ApiEndpoints.ts","../src/common/utils/Fetch.ts"],"sourcesContent":["export const ApiEndpoints = {\n ACCOUNTS: 'accounts',\n ANALYTICS_EVENTS: 'analytics_events',\n ANALYTICS_FEATURE_VISITS: 'feature_visits',\n ANALYTICS_PAGEVIEWS: 'analytics_pageviews',\n ANALYTICS_SESSION: 'analytics_sessions',\n APP_DATA: 'raja/data?type=master',\n BEATS: 'beats',\n BUDGETS: 'budgets',\n CASHFLOW_EVENTS: 'cashflow_events',\n CASHFLOW_SEQUENCES: 'cashflow_sequences',\n CATEGORIES: 'categories',\n DATE_RANGE_CATEGORY_TOTALS: 'date_range_category_totals',\n GOALS: 'goals',\n INSTITUTIONS: 'institutions',\n LOCALIZED_COPY: 'localized_copies',\n LOCALIZED_CONTENT: 'localized_content',\n MEMBERS: 'members',\n MERCHANTS: 'merchants',\n MONTHLY_CATEGORY_TOTALS: 'monthly_category_totals',\n NOTIFICATIONS: 'notifications',\n SCHEDULED_PAYMENTS: 'scheduled_payments',\n SPENDING_PLANS: 'spending_plans',\n TAGGINGS: 'taggings',\n TAGS: 'tags',\n TRANSACTION_RULES: 'transaction_rules',\n TRANSACTIONS: 'transactions',\n USER_PROFILES: 'user_profiles',\n WIDGET_URLS: 'widget_urls',\n}\n","import { getLocale } from './Localization'\nimport { Honeybadger } from '@honeybadger-io/react'\n\nexport class Fetch {\n endpoint = '/'\n headers = {}\n\n constructor(endpoint: string, token: string) {\n this.endpoint = endpoint\n this.headers = {\n Accept: 'application/json',\n 'Accept-Language': getLocale(),\n 'Content-Type': 'application/json',\n 'MD-Session-Token': token,\n }\n }\n\n get = async (url: string) => {\n const options = {\n method: 'GET',\n headers: this.headers,\n }\n\n return fetch(`${this.endpoint}${url}`, options)\n .then((response) => {\n if (response.ok) {\n return response.text()\n } else {\n throw response\n }\n })\n .then((text) => (text.length ? JSON.parse(text) : {}))\n .then((data) => data)\n .catch((err) => {\n Honeybadger.notify(err)\n throw err\n })\n }\n\n post = async (url: string, data?: any) => {\n const body = data ? JSON.stringify(data) : undefined\n const options = {\n method: 'POST',\n headers: this.headers,\n body,\n }\n\n return fetch(`${this.endpoint}${url}`, options)\n .then((response) => {\n if (!response.ok) {\n throw response\n }\n\n return response.text()\n })\n .then((text) => (text.length ? JSON.parse(text) : {}))\n .then((data) => data)\n .catch((error) => {\n Honeybadger.notify(error)\n throw error\n })\n }\n\n put = async (url: string, data: any) => {\n const body = JSON.stringify(data)\n const options = {\n method: 'PUT',\n headers: this.headers,\n body,\n }\n\n return fetch(`${this.endpoint}${url}`, options)\n .then((response) => {\n if (response.ok) {\n return response.text()\n } else {\n return response.text().then((text) => {\n throw new Error(text)\n })\n }\n })\n .then((text) => (text.length ? JSON.parse(text) : {}))\n .then((data) => data)\n .catch((err) => {\n Honeybadger.notify(err)\n throw err\n })\n }\n\n delete = async (url: string) => {\n const options = {\n method: 'DELETE',\n headers: this.headers,\n }\n\n return fetch(`${this.endpoint}${url}`, options)\n .then((response) => {\n if (response.ok) {\n return response.text()\n } else {\n return response.text().then((text) => {\n throw new Error(text)\n })\n }\n })\n .then((text) => (text.length ? JSON.parse(text) : {}))\n .then((data) => data)\n .catch((err) => {\n Honeybadger.notify(err)\n throw err\n })\n }\n}\n\nexport default Fetch\n"],"names":["ApiEndpoints","Fetch","endpoint","token","getLocale","url","options","response","text","data","err","Honeybadger","body","error"],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { makeAutoObservable as s, runInAction as a } from "mobx";
2
+ import "bowser";
3
+ import "date-fns/getUnixTime";
4
+ import { F as n, A as o } from "./Fetch-DpUi1_Dx.mjs";
5
+ import "date-fns/intlFormat";
6
+ import { X as i } from "./ConnectMiniWidget-Ep65CtHH.mjs";
7
+ import "react";
8
+ import "numeral";
9
+ import "date-fns/addMonths";
10
+ import "date-fns/addQuarters";
11
+ import "date-fns/addWeeks";
12
+ import "date-fns/addYears";
13
+ import "date-fns/getDay";
14
+ import "date-fns/isBefore";
15
+ import "date-fns/nextDay";
16
+ import "date-fns/setDate";
17
+ import "date-fns/startOfToday";
18
+ import "date-fns/fromUnixTime";
19
+ import "react/jsx-runtime";
20
+ import "@mui/material/Button";
21
+ import "@kyper/mui";
22
+ import "@mui/material/Tooltip";
23
+ import "@mui/material/Box";
24
+ import "@mui/material/IconButton";
25
+ import "@mui/material/styles/useTheme";
26
+ import "@mui/material/useMediaQuery";
27
+ import "@mxenabled/cssinjs";
28
+ import "date-fns/addDays";
29
+ import "date-fns/eachDayOfInterval";
30
+ import "date-fns/eachWeekOfInterval";
31
+ import "date-fns/endOfMonth";
32
+ import "date-fns/format";
33
+ import "date-fns/isSameMonth";
34
+ import "date-fns/startOfMonth";
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/differenceInCalendarDays";
47
+ import "date-fns/endOfToday";
48
+ import "date-fns/endOfYear";
49
+ import "date-fns/startOfYear";
50
+ import "date-fns/subDays";
51
+ import "date-fns/subYears";
52
+ import "@mui/material/ButtonGroup";
53
+ import "@mui/material/Tab";
54
+ import "@mui/material/Tabs";
55
+ import "@mui/material/ToggleButton";
56
+ import "@mui/material/ToggleButtonGroup";
57
+ import "@mui/material/Dialog";
58
+ import "@mui/material/DialogContent";
59
+ import "@mui/icons-material/ArrowBackOutlined";
60
+ import "@mui/material/Card";
61
+ import "@mui/material/CardHeader";
62
+ import "@mui/material/CardContent";
63
+ import "uuid";
64
+ import "@mui/material/CircularProgress";
65
+ import "@mui/material/FormControlLabel";
66
+ import "@mui/material/Radio";
67
+ import "@mui/material/Avatar";
68
+ import "@mui/material/ListItem";
69
+ import "@mui/material/ListItemAvatar";
70
+ import "@mui/material/ListItemButton";
71
+ import "@mui/material/ListItemText";
72
+ import "@mui/material/ListItemIcon";
73
+ import "date-fns/differenceInDays";
74
+ import "@mui/x-data-grid-pro";
75
+ import "date-fns";
76
+ import "date-fns/getMonth";
77
+ import "date-fns/isAfter";
78
+ import "date-fns/parseISO";
79
+ import "date-fns/subWeeks";
80
+ import "date-fns/formatISO";
81
+ import "@honeybadger-io/react";
82
+ class p {
83
+ fetchInstance;
84
+ constructor(t, r) {
85
+ this.fetchInstance = new n(t, r);
86
+ }
87
+ addGoal = async (t) => this.fetchInstance.post(o.GOALS, t).then((r) => r);
88
+ getGoalByGuid = async (t) => this.fetchInstance.get(`${o.GOALS}/${t}`).then((r) => r);
89
+ getGoals = async () => this.fetchInstance.get(o.GOALS).then((t) => t);
90
+ removeGoal = async (t) => this.fetchInstance.delete(`${o}/${t}`).then((r) => r);
91
+ updateGoal = async (t, r) => this.fetchInstance.put(`${o.GOALS}/${r}`, t).then((e) => e);
92
+ }
93
+ class Nt {
94
+ api = new p("/", "");
95
+ globalStore;
96
+ goals = [];
97
+ selectedGoal = void 0;
98
+ constructor(t) {
99
+ this.globalStore = t, s(this);
100
+ }
101
+ initialize = async (t, r) => {
102
+ this.api = new p(t, r);
103
+ };
104
+ get debtGoals() {
105
+ return this.goals.filter((t) => t.track_type === i.DEBT_TRACK);
106
+ }
107
+ get retirementGoals() {
108
+ return this.goals.filter((t) => t.track_type === i.RETIREMENT_TRACK);
109
+ }
110
+ get savingsGoals() {
111
+ return this.goals.filter((t) => t.track_type === i.SAVINGS_TRACK);
112
+ }
113
+ loadGoals = async () => {
114
+ try {
115
+ const t = await this.api.getGoals();
116
+ a(() => {
117
+ this.goals = t;
118
+ });
119
+ } catch (t) {
120
+ console.error(`Error occured while getting goals: ${t}`);
121
+ }
122
+ };
123
+ setSelectedGoal = (t) => this.selectedGoal = t;
124
+ }
125
+ export {
126
+ Nt as G
127
+ };
128
+ //# sourceMappingURL=GoalStore-BYoRLx99.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoalStore-BYoRLx99.mjs","sources":["../src/goals/api/GoalApi.ts","../src/goals/stores/GoalStore.ts"],"sourcesContent":["import { ApiEndpoints, Fetch, Goal } from '../../common'\n\nexport class GoalApi {\n fetchInstance: Fetch\n\n constructor(endpoint: string, token: string) {\n this.fetchInstance = new Fetch(endpoint, token)\n }\n\n addGoal = async (goal: Goal) => {\n return this.fetchInstance.post(ApiEndpoints.GOALS, goal).then(data => data)\n }\n\n getGoalByGuid = async (guid: string) => {\n return this.fetchInstance.get(`${ApiEndpoints.GOALS}/${guid}`).then(data => data)\n }\n\n getGoals = async () => {\n return this.fetchInstance.get(ApiEndpoints.GOALS).then(data => data)\n }\n\n removeGoal = async (guid: string) => {\n return this.fetchInstance.delete(`${ApiEndpoints}/${guid}`).then(data => data)\n }\n\n updateGoal = async (goal: Goal, guid: string) => {\n return this.fetchInstance.put(`${ApiEndpoints.GOALS}/${guid}`, goal).then(data => data)\n }\n}","import { makeAutoObservable, runInAction } from 'mobx'\n\nimport { GoalApi } from '../api/GoalApi'\n\nimport { type Goal, GlobalStore, TrackType } from '../../common'\n\nexport class GoalStore {\n api = new GoalApi('/', '')\n globalStore: GlobalStore\n goals: Goal[] = []\n selectedGoal: Goal | undefined = undefined\n\n constructor(globalStore: GlobalStore) {\n this.globalStore = globalStore\n makeAutoObservable(this)\n }\n\n initialize = async (endpoint: string, token: string) => {\n this.api = new GoalApi(endpoint, token)\n }\n\n get debtGoals() {\n return this.goals.filter((goal) => goal.track_type === TrackType.DEBT_TRACK)\n }\n\n get retirementGoals() {\n return this.goals.filter((goal) => goal.track_type === TrackType.RETIREMENT_TRACK)\n }\n\n get savingsGoals() {\n return this.goals.filter((goal) => goal.track_type === TrackType.SAVINGS_TRACK)\n }\n\n loadGoals = async () => {\n try {\n const goals = await this.api.getGoals()\n\n runInAction(() => {\n this.goals = goals\n })\n } catch (error) {\n console.error(`Error occured while getting goals: ${error}`)\n }\n }\n\n setSelectedGoal = (goal: Goal | undefined) => (this.selectedGoal = goal)\n}\n"],"names":["GoalApi","endpoint","token","Fetch","goal","ApiEndpoints","data","guid","GoalStore","globalStore","makeAutoObservable","TrackType","goals","runInAction","error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAMA,EAAQ;AAAA,EACnB;AAAA,EAEA,YAAYC,GAAkBC,GAAe;AAC3C,SAAK,gBAAgB,IAAIC,EAAMF,GAAUC,CAAK;AAAA,EAChD;AAAA,EAEA,UAAU,OAAOE,MACR,KAAK,cAAc,KAAKC,EAAa,OAAOD,CAAI,EAAE,KAAK,CAAAE,MAAQA,CAAI;AAAA,EAG5E,gBAAgB,OAAOC,MACd,KAAK,cAAc,IAAI,GAAGF,EAAa,KAAK,IAAIE,CAAI,EAAE,EAAE,KAAK,CAAAD,MAAQA,CAAI;AAAA,EAGlF,WAAW,YACF,KAAK,cAAc,IAAID,EAAa,KAAK,EAAE,KAAK,OAAQC,CAAI;AAAA,EAGrE,aAAa,OAAOC,MACX,KAAK,cAAc,OAAO,GAAGF,CAAY,IAAIE,CAAI,EAAE,EAAE,KAAK,CAAAD,MAAQA,CAAI;AAAA,EAG/E,aAAa,OAAOF,GAAYG,MACvB,KAAK,cAAc,IAAI,GAAGF,EAAa,KAAK,IAAIE,CAAI,IAAIH,CAAI,EAAE,KAAK,OAAQE,CAAI;AAE1F;ACtBO,MAAME,GAAU;AAAA,EACrB,MAAM,IAAIR,EAAQ,KAAK,EAAE;AAAA,EACzB;AAAA,EACA,QAAgB,CAAA;AAAA,EAChB,eAAiC;AAAA,EAEjC,YAAYS,GAA0B;AACpC,SAAK,cAAcA,GACnBC,EAAmB,IAAI;AAAA,EACzB;AAAA,EAEA,aAAa,OAAOT,GAAkBC,MAAkB;AACtD,SAAK,MAAM,IAAIF,EAAQC,GAAUC,CAAK;AAAA,EAAA;AAAA,EAGxC,IAAI,YAAY;AACP,WAAA,KAAK,MAAM,OAAO,CAACE,MAASA,EAAK,eAAeO,EAAU,UAAU;AAAA,EAC7E;AAAA,EAEA,IAAI,kBAAkB;AACb,WAAA,KAAK,MAAM,OAAO,CAACP,MAASA,EAAK,eAAeO,EAAU,gBAAgB;AAAA,EACnF;AAAA,EAEA,IAAI,eAAe;AACV,WAAA,KAAK,MAAM,OAAO,CAACP,MAASA,EAAK,eAAeO,EAAU,aAAa;AAAA,EAChF;AAAA,EAEA,YAAY,YAAY;AAClB,QAAA;AACF,YAAMC,IAAQ,MAAM,KAAK,IAAI,SAAS;AAEtC,MAAAC,EAAY,MAAM;AAChB,aAAK,QAAQD;AAAA,MAAA,CACd;AAAA,aACME,GAAO;AACN,cAAA,MAAM,sCAAsCA,CAAK,EAAE;AAAA,IAC7D;AAAA,EAAA;AAAA,EAGF,kBAAkB,CAACV,MAA4B,KAAK,eAAeA;AACrE;"}
@@ -0,0 +1,118 @@
1
+ import { makeAutoObservable as c, runInAction as m } from "mobx";
2
+ import "bowser";
3
+ import "date-fns/getUnixTime";
4
+ import { F as h, A as p } from "./Fetch-DpUi1_Dx.mjs";
5
+ import "date-fns/intlFormat";
6
+ import "./ConnectMiniWidget-Ep65CtHH.mjs";
7
+ import "react";
8
+ import "numeral";
9
+ import "date-fns/addMonths";
10
+ import "date-fns/addQuarters";
11
+ import "date-fns/addWeeks";
12
+ import "date-fns/addYears";
13
+ import "date-fns/getDay";
14
+ import "date-fns/isBefore";
15
+ import "date-fns/nextDay";
16
+ import "date-fns/setDate";
17
+ import "date-fns/startOfToday";
18
+ import "date-fns/fromUnixTime";
19
+ import "react/jsx-runtime";
20
+ import "@mui/material/Button";
21
+ import "@kyper/mui";
22
+ import "@mui/material/Tooltip";
23
+ import "@mui/material/Box";
24
+ import "@mui/material/IconButton";
25
+ import "@mui/material/styles/useTheme";
26
+ import "@mui/material/useMediaQuery";
27
+ import "@mxenabled/cssinjs";
28
+ import "date-fns/addDays";
29
+ import "date-fns/eachDayOfInterval";
30
+ import "date-fns/eachWeekOfInterval";
31
+ import "date-fns/endOfMonth";
32
+ import "date-fns/format";
33
+ import "date-fns/isSameMonth";
34
+ import "date-fns/startOfMonth";
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/differenceInCalendarDays";
47
+ import "date-fns/endOfToday";
48
+ import "date-fns/endOfYear";
49
+ import "date-fns/startOfYear";
50
+ import "date-fns/subDays";
51
+ import "date-fns/subYears";
52
+ import "@mui/material/ButtonGroup";
53
+ import "@mui/material/Tab";
54
+ import "@mui/material/Tabs";
55
+ import "@mui/material/ToggleButton";
56
+ import "@mui/material/ToggleButtonGroup";
57
+ import "@mui/material/Dialog";
58
+ import "@mui/material/DialogContent";
59
+ import "@mui/icons-material/ArrowBackOutlined";
60
+ import "@mui/material/Card";
61
+ import "@mui/material/CardHeader";
62
+ import "@mui/material/CardContent";
63
+ import "uuid";
64
+ import "@mui/material/CircularProgress";
65
+ import "@mui/material/FormControlLabel";
66
+ import "@mui/material/Radio";
67
+ import "@mui/material/Avatar";
68
+ import "@mui/material/ListItem";
69
+ import "@mui/material/ListItemAvatar";
70
+ import "@mui/material/ListItemButton";
71
+ import "@mui/material/ListItemText";
72
+ import "@mui/material/ListItemIcon";
73
+ import "date-fns/differenceInDays";
74
+ import "@mui/x-data-grid-pro";
75
+ import "date-fns";
76
+ import "date-fns/getMonth";
77
+ import "date-fns/isAfter";
78
+ import "date-fns/parseISO";
79
+ import "date-fns/subWeeks";
80
+ import "date-fns/formatISO";
81
+ class n {
82
+ fetchInstance;
83
+ constructor(t, i) {
84
+ this.fetchInstance = new h(t, i);
85
+ }
86
+ getMerchants = async (t = [], i = [], a = 1, s = 25) => {
87
+ let o = p.MERCHANTS;
88
+ return o += `?page=${a}&per_page=${s}`, t.length && t.forEach((r) => o += `&fuzzy_name[]=${r}`), i.length && i.forEach((r) => o += `&guid[]=${r}`), this.fetchInstance.get(o).then((r) => r.merchants);
89
+ };
90
+ getMerchantByGuid = async (t) => this.fetchInstance.get(`${p.MERCHANTS}/${t}`).then((i) => i.merchant);
91
+ }
92
+ class vt {
93
+ api = new n("/", "");
94
+ merchant = null;
95
+ merchants = [];
96
+ isLoading = !1;
97
+ constructor() {
98
+ c(this);
99
+ }
100
+ initialize = async (t, i) => {
101
+ this.api = new n(t, i);
102
+ };
103
+ loadMerchants = async (t = "") => {
104
+ this.isLoading = !0;
105
+ const i = await this.api.getMerchants([t]);
106
+ m(() => {
107
+ this.merchants = i, this.isLoading = !1;
108
+ });
109
+ };
110
+ loadMerchantByGuid = async (t) => {
111
+ const i = await this.api.getMerchantByGuid(t);
112
+ m(() => this.merchant = i);
113
+ };
114
+ }
115
+ export {
116
+ vt as M
117
+ };
118
+ //# sourceMappingURL=MerchantStore-RhLvDvX-.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerchantStore-RhLvDvX-.mjs","sources":["../src/merchants/api/MerchantApi.ts","../src/merchants/stores/MerchantStore.ts"],"sourcesContent":["import { ApiEndpoints, Fetch } from '../../common'\n\nexport class MerchantApi {\n fetchInstance: Fetch\n\n constructor(endpoint: string, token: string) {\n this.fetchInstance = new Fetch(endpoint, token)\n }\n\n getMerchants = async (\n searchValues = [] as string[],\n guids = [] as string[],\n page = 1,\n perPage = 25,\n ) => {\n let url = ApiEndpoints.MERCHANTS\n url += `?page=${page}&per_page=${perPage}`\n\n if (searchValues.length) {\n searchValues.forEach((value) => (url += `&fuzzy_name[]=${value}`))\n }\n\n if (guids.length) {\n guids.forEach((guid) => (url += `&guid[]=${guid}`))\n }\n\n return this.fetchInstance.get(url).then((data) => data.merchants)\n }\n\n getMerchantByGuid = async (guid: string) => {\n return this.fetchInstance.get(`${ApiEndpoints.MERCHANTS}/${guid}`).then((data) => data.merchant)\n }\n}\n","import { makeAutoObservable, runInAction } from 'mobx'\n\nimport { MerchantApi } from '../api/MerchantApi'\n\nimport type { Merchant } from '../../common'\n\nexport interface CopyObject {\n [key: string]: string\n}\n\nexport class MerchantStore {\n api: MerchantApi = new MerchantApi('/', '')\n\n merchant: Merchant | null = null\n merchants: Merchant[] = []\n isLoading = false\n\n constructor() {\n makeAutoObservable(this)\n }\n\n initialize = async (endpoint: string, token: string) => {\n this.api = new MerchantApi(endpoint, token)\n }\n\n loadMerchants = async (searchValue = '') => {\n this.isLoading = true\n\n const merchants = await this.api.getMerchants([searchValue])\n\n runInAction(() => {\n this.merchants = merchants\n this.isLoading = false\n })\n }\n\n loadMerchantByGuid = async (guid: string) => {\n const merchant = await this.api.getMerchantByGuid(guid)\n\n runInAction(() => (this.merchant = merchant))\n }\n}\n"],"names":["MerchantApi","endpoint","token","Fetch","searchValues","guids","page","perPage","url","ApiEndpoints","value","guid","data","MerchantStore","makeAutoObservable","searchValue","merchants","runInAction","merchant"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAMA,EAAY;AAAA,EACvB;AAAA,EAEA,YAAYC,GAAkBC,GAAe;AAC3C,SAAK,gBAAgB,IAAIC,EAAMF,GAAUC,CAAK;AAAA,EAChD;AAAA,EAEA,eAAe,OACbE,IAAe,CAAA,GACfC,IAAQ,CACR,GAAAC,IAAO,GACPC,IAAU,OACP;AACH,QAAIC,IAAMC,EAAa;AAChB,WAAAD,KAAA,SAASF,CAAI,aAAaC,CAAO,IAEpCH,EAAa,UACfA,EAAa,QAAQ,CAACM,MAAWF,KAAO,iBAAiBE,CAAK,EAAG,GAG/DL,EAAM,UACRA,EAAM,QAAQ,CAACM,MAAUH,KAAO,WAAWG,CAAI,EAAG,GAG7C,KAAK,cAAc,IAAIH,CAAG,EAAE,KAAK,CAACI,MAASA,EAAK,SAAS;AAAA,EAAA;AAAA,EAGlE,oBAAoB,OAAOD,MAClB,KAAK,cAAc,IAAI,GAAGF,EAAa,SAAS,IAAIE,CAAI,EAAE,EAAE,KAAK,CAACC,MAASA,EAAK,QAAQ;AAEnG;ACtBO,MAAMC,GAAc;AAAA,EACzB,MAAmB,IAAIb,EAAY,KAAK,EAAE;AAAA,EAE1C,WAA4B;AAAA,EAC5B,YAAwB,CAAA;AAAA,EACxB,YAAY;AAAA,EAEZ,cAAc;AACZ,IAAAc,EAAmB,IAAI;AAAA,EACzB;AAAA,EAEA,aAAa,OAAOb,GAAkBC,MAAkB;AACtD,SAAK,MAAM,IAAIF,EAAYC,GAAUC,CAAK;AAAA,EAAA;AAAA,EAG5C,gBAAgB,OAAOa,IAAc,OAAO;AAC1C,SAAK,YAAY;AAEjB,UAAMC,IAAY,MAAM,KAAK,IAAI,aAAa,CAACD,CAAW,CAAC;AAE3D,IAAAE,EAAY,MAAM;AAChB,WAAK,YAAYD,GACjB,KAAK,YAAY;AAAA,IAAA,CAClB;AAAA,EAAA;AAAA,EAGH,qBAAqB,OAAOL,MAAiB;AAC3C,UAAMO,IAAW,MAAM,KAAK,IAAI,kBAAkBP,CAAI;AAE1C,IAAAM,EAAA,MAAO,KAAK,WAAWC,CAAS;AAAA,EAAA;AAEhD;"}
@@ -0,0 +1,66 @@
1
+ import { makeAutoObservable as i, runInAction as o } from "mobx";
2
+ import { I as l, J as h, K as u, L as D, P as c, Q as d, S as b } from "./ConnectMiniWidget-Ep65CtHH.mjs";
3
+ class A {
4
+ globalStore;
5
+ netWorthData = { accounts: [], monthlyAccountBalances: [] };
6
+ netWorthChartData = [];
7
+ hoveredData;
8
+ selectedData;
9
+ constructor(t) {
10
+ this.globalStore = t, i(this);
11
+ }
12
+ loadNetWorthData = async (t) => {
13
+ try {
14
+ const a = this.globalStore.accountStore.members, e = l(t, a), r = await (await Promise.all(
15
+ e.map((n) => this.globalStore.accountStore.api.getMonthlyAccountBalances(n.guid))
16
+ )).reduce(h, []).sort(u);
17
+ o(() => {
18
+ this.netWorthData = {
19
+ accounts: e,
20
+ monthlyAccountBalances: r
21
+ };
22
+ });
23
+ } catch (a) {
24
+ console.error(`Error occured while loading net worth data: ${a}`);
25
+ }
26
+ };
27
+ loadChartData = async (t) => {
28
+ try {
29
+ const { accounts: a, monthlyAccountBalances: e } = this.netWorthData, s = await D(a, e, t), r = c(s);
30
+ o(() => {
31
+ this.netWorthChartData = s, this.selectedData = r;
32
+ });
33
+ } catch (a) {
34
+ console.error(`Error occured while loading chart data: ${a}`);
35
+ }
36
+ };
37
+ get gainsLosses() {
38
+ return d(this.selectedData);
39
+ }
40
+ get assetsLiabilities() {
41
+ const { assets: t, liabilities: a, totalAssets: e, totalLiabilities: s } = b(
42
+ this.netWorthData.accounts
43
+ );
44
+ return {
45
+ netWorth: c(this.netWorthChartData),
46
+ assets: t,
47
+ liabilities: a,
48
+ totalAssets: e,
49
+ totalLiabilities: s
50
+ };
51
+ }
52
+ setSelectedData = (t) => {
53
+ o(() => {
54
+ this.selectedData = this.netWorthChartData[t];
55
+ });
56
+ };
57
+ setHoveredData = (t) => {
58
+ o(() => {
59
+ this.hoveredData = t !== null ? this.netWorthChartData[t] : void 0;
60
+ });
61
+ };
62
+ }
63
+ export {
64
+ A as N
65
+ };
66
+ //# sourceMappingURL=NetWorthStore-syD1VnxE.mjs.map