@mx-cartographer/experiences 9.6.7 → 9.6.8
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/common/components/Banner.es.js +66 -26
- package/dist/common/components/Banner.es.js.map +1 -1
- package/dist/common/components/ConnectDrawer.d.ts +2 -0
- package/dist/common/components/ConnectDrawer.es.js +15 -14
- package/dist/common/components/ConnectDrawer.es.js.map +1 -1
- package/dist/common/components/ConnectWidgetPanel.d.ts +2 -0
- package/dist/common/components/ConnectWidgetPanel.es.js +48 -39
- package/dist/common/components/ConnectWidgetPanel.es.js.map +1 -1
- package/dist/common/constants/Analytics.d.ts +6 -0
- package/dist/common/constants/Analytics.es.js +7 -1
- package/dist/common/constants/Analytics.es.js.map +1 -1
- package/dist/common/constants/Connect.d.ts +7 -0
- package/dist/common/constants/Connect.es.js +6 -4
- package/dist/common/constants/Connect.es.js.map +1 -1
- package/dist/common/constants/index.d.ts +2 -1
- package/dist/common/index.es.js +95 -93
- package/dist/core/api/BannerApi.d.ts +1 -0
- package/dist/core/api/BannerApi.es.js +4 -2
- package/dist/core/api/BannerApi.es.js.map +1 -1
- package/dist/core/stores/AppDataStore.d.ts +1 -0
- package/dist/core/stores/AppDataStore.es.js +9 -2
- package/dist/core/stores/AppDataStore.es.js.map +1 -1
- package/dist/core/types/AppData.d.ts +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## [9.6.8] - 10-13-2026
|
|
2
|
+
|
|
3
|
+
- **ADDED** - Dashboard banner can open the Connect widget in-app: a connect-type banner (`deep_link_type`) opens `ConnectDrawer` instead of an external link, with banner and connect-widget analytics (MEW-3504)
|
|
4
|
+
|
|
1
5
|
## [9.6.7] - 10-13-2026
|
|
2
6
|
|
|
3
7
|
- **ADDED** - `debts_block` component block for the Debt Payoff Strategies beat, registered through `BlockType` and the `blocks` registry. Renders the new presentational `DebtPayoffCard` (account row with an optional strategy pill, current balance, and projected payoff / monthly payment / interest rate rows) from facts carried flat on `instance_slot`: `payoff_date`, `monthly_payment` and `interest_rate` are new optional `InstanceSlot` fields beside the shared `amount`, `account_*`, `institution_*` and `status_text`. One look for now (`instance_slot.variant` is not read until a second design branch exists); the logo falls back to a card glyph for credit-card debt and the bank glyph otherwise. Row labels come from a new `insights_feed.debts_block` copy namespace; until a host ships it, the card renders the account row only and warns once (`debts_block: copy namespace missing`), and a slot with no `amount` renders no balance rather than `$0.00`. Mock payloads, beats fixtures, stories and tests (WEC-1298)
|
|
@@ -1,39 +1,79 @@
|
|
|
1
|
-
import { useGlobalStore as
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
},
|
|
1
|
+
import { useEvent as f, useGlobalCopyStore as g, useGlobalStore as C } from "../context/hooks.es.js";
|
|
2
|
+
import { ANALYTICS_EVENTS as s } from "../constants/Analytics.es.js";
|
|
3
|
+
import { CONNECT_WIDGET_SOURCES as b, DEEP_LINK_TYPE as y } from "../constants/Connect.es.js";
|
|
4
|
+
import E from "./ConnectDrawer.es.js";
|
|
5
|
+
import t from "react";
|
|
6
|
+
import { observer as h } from "mobx-react-lite";
|
|
7
|
+
import k from "@mui/material/Stack";
|
|
8
|
+
import { jsx as r, jsxs as N } from "react/jsx-runtime";
|
|
9
|
+
import { useTheme as S } from "@mui/material/styles";
|
|
10
|
+
var P = h(() => {
|
|
11
|
+
const d = S(), { appDataStore: { banner: e, loadBanner: p, markBannerClicked: m, user: u } } = C(), { onEvent: n } = f(), { connect: _ } = g(), [o, i] = t.useState(!1);
|
|
12
|
+
if (t.useEffect(() => {
|
|
13
|
+
p();
|
|
14
|
+
}, [u]), t.useEffect(() => {
|
|
15
|
+
e?.image_url && n(s.BANNER_VIEW, {
|
|
16
|
+
banner_guid: e.guid,
|
|
17
|
+
deep_link_type: e.deep_link_type
|
|
18
|
+
});
|
|
19
|
+
}, [e?.guid, e?.image_url]), !e?.image_url) return null;
|
|
20
|
+
const l = e.deep_link_type === y.CONNECT, a = () => {
|
|
21
|
+
n(s.BANNER_CLICK, {
|
|
22
|
+
banner_guid: e.guid,
|
|
23
|
+
deep_link_type: e.deep_link_type
|
|
24
|
+
}), l && (e.guid && m(e.guid), i(!0));
|
|
25
|
+
}, c = /* @__PURE__ */ r("img", {
|
|
26
|
+
alt: "",
|
|
27
|
+
referrerPolicy: "no-referrer",
|
|
28
|
+
src: e.image_url,
|
|
29
|
+
style: {
|
|
30
|
+
width: "100%",
|
|
31
|
+
height: "auto",
|
|
32
|
+
border: `1px solid ${d.palette.grey[300]}`,
|
|
33
|
+
display: "block"
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return /* @__PURE__ */ N(t.Fragment, { children: [/* @__PURE__ */ r(k, {
|
|
12
37
|
sx: {
|
|
13
38
|
alignItems: "center",
|
|
14
39
|
width: "100%",
|
|
15
40
|
mb: 24
|
|
16
41
|
},
|
|
17
|
-
children: /* @__PURE__ */
|
|
42
|
+
children: l ? /* @__PURE__ */ r("button", {
|
|
43
|
+
"aria-label": "Banner",
|
|
44
|
+
onClick: a,
|
|
45
|
+
style: {
|
|
46
|
+
background: "none",
|
|
47
|
+
border: "none",
|
|
48
|
+
cursor: "pointer",
|
|
49
|
+
display: "block",
|
|
50
|
+
padding: 0,
|
|
51
|
+
width: "100%"
|
|
52
|
+
},
|
|
53
|
+
type: "button",
|
|
54
|
+
children: c
|
|
55
|
+
}) : /* @__PURE__ */ r("a", {
|
|
18
56
|
"aria-label": "Banner",
|
|
19
|
-
href:
|
|
20
|
-
|
|
21
|
-
|
|
57
|
+
href: e.redirect_url,
|
|
58
|
+
onClick: a,
|
|
59
|
+
referrerPolicy: "no-referrer",
|
|
60
|
+
rel: "noopener noreferrer",
|
|
61
|
+
style: {
|
|
62
|
+
display: "block",
|
|
63
|
+
width: "100%"
|
|
64
|
+
},
|
|
22
65
|
target: "_blank",
|
|
23
|
-
children:
|
|
24
|
-
alt: "",
|
|
25
|
-
src: r.image_url,
|
|
26
|
-
style: {
|
|
27
|
-
width: "100%",
|
|
28
|
-
height: "auto",
|
|
29
|
-
border: `1px solid ${t.palette.grey[300]}`
|
|
30
|
-
}
|
|
31
|
-
})
|
|
66
|
+
children: c
|
|
32
67
|
})
|
|
33
|
-
})
|
|
68
|
+
}), o && /* @__PURE__ */ r(E, {
|
|
69
|
+
onClose: () => i(!1),
|
|
70
|
+
showConnectWidget: o,
|
|
71
|
+
source: b.BANNER,
|
|
72
|
+
title: _?.mini_title ?? ""
|
|
73
|
+
})] });
|
|
34
74
|
});
|
|
35
75
|
export {
|
|
36
|
-
|
|
76
|
+
P as Banner
|
|
37
77
|
};
|
|
38
78
|
|
|
39
79
|
//# sourceMappingURL=Banner.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.es.js","names":[],"sources":["../../../src/common/components/Banner.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\n\nimport { useGlobalStore } from '..'\n\nexport const Banner = observer(() => {\n const theme = useTheme()\n const {\n appDataStore: { banner, loadBanner, user },\n } = useGlobalStore()\n\n React.useEffect(() => {\n loadBanner().
|
|
1
|
+
{"version":3,"file":"Banner.es.js","names":[],"sources":["../../../src/common/components/Banner.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport { useTheme } from '@mui/material/styles'\nimport Stack from '@mui/material/Stack'\n\nimport ConnectDrawer from './ConnectDrawer'\nimport { useGlobalCopyStore, useGlobalStore } from '..'\nimport { useEvent } from '../context/hooks'\nimport { ANALYTICS_EVENTS, CONNECT_WIDGET_SOURCES, DEEP_LINK_TYPE } from '../constants'\n\nexport const Banner = observer(() => {\n const theme = useTheme()\n const {\n appDataStore: { banner, loadBanner, markBannerClicked, user },\n } = useGlobalStore()\n const { onEvent } = useEvent()\n const { connect: connectCopy } = useGlobalCopyStore()\n const [showConnectWidget, setShowConnectWidget] = React.useState(false)\n\n React.useEffect(() => {\n void loadBanner()\n }, [user])\n\n React.useEffect(() => {\n if (banner?.image_url) {\n onEvent(ANALYTICS_EVENTS.BANNER_VIEW, {\n banner_guid: banner.guid,\n deep_link_type: banner.deep_link_type,\n })\n }\n }, [banner?.guid, banner?.image_url])\n\n if (!banner?.image_url) {\n return null\n }\n\n const isConnect = banner.deep_link_type === DEEP_LINK_TYPE.CONNECT\n\n const handleClick = () => {\n onEvent(ANALYTICS_EVENTS.BANNER_CLICK, {\n banner_guid: banner.guid,\n deep_link_type: banner.deep_link_type,\n })\n\n if (isConnect) {\n // Record the click server-side (see AppDataStore.markBannerClicked).\n if (banner.guid) markBannerClicked(banner.guid)\n setShowConnectWidget(true)\n }\n }\n\n const image = (\n <img\n alt=\"\"\n referrerPolicy=\"no-referrer\"\n src={banner.image_url}\n style={{\n width: '100%',\n height: 'auto',\n border: `1px solid ${theme.palette.grey['300']}`,\n display: 'block',\n }}\n />\n )\n\n return (\n <React.Fragment>\n <Stack\n sx={{\n alignItems: 'center',\n width: '100%',\n mb: 24,\n }}\n >\n {isConnect ? (\n // Connect opens the drawer in-app, so render a button with no href/target:\n // there is no external destination to middle-click or open in a new tab,\n // so every interaction is forced through onClick.\n <button\n aria-label=\"Banner\"\n onClick={handleClick}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n display: 'block',\n padding: 0,\n width: '100%',\n }}\n type=\"button\"\n >\n {image}\n </button>\n ) : (\n // Every other type (incl. today's API, which omits deep_link_type) is a\n // real external link, keeping native middle-click / open-in-new-tab.\n <a\n aria-label=\"Banner\"\n href={banner.redirect_url}\n onClick={handleClick}\n referrerPolicy=\"no-referrer\"\n rel=\"noopener noreferrer\"\n style={{ display: 'block', width: '100%' }}\n target=\"_blank\"\n >\n {image}\n </a>\n )}\n </Stack>\n {showConnectWidget && (\n <ConnectDrawer\n onClose={() => setShowConnectWidget(false)}\n showConnectWidget={showConnectWidget}\n source={CONNECT_WIDGET_SOURCES.BANNER}\n title={connectCopy?.mini_title ?? ''}\n />\n )}\n </React.Fragment>\n )\n})\n"],"mappings":";;;;;;;;;AAWA,IAAa,IAAS,EAAA,MAAe;AACnC,QAAM,IAAQ,EAAS,GACjB,EACJ,cAAc,EAAE,QAAA,GAAQ,YAAA,GAAY,mBAAA,GAAmB,MAAA,EAAA,EAAA,IACrD,EAAe,GACb,EAAE,SAAA,EAAA,IAAY,EAAS,GACvB,EAAE,SAAS,EAAA,IAAgB,EAAmB,GAC9C,CAAC,GAAmB,CAAA,IAAwB,EAAM,SAAS,EAAK;AAetE,MAbA,EAAM,UAAA,MAAgB;AACpB,IAAA,EAAgB;AAAA,EAClB,GAAG,CAAC,CAAI,CAAC,GAET,EAAM,UAAA,MAAgB;AACpB,IAAI,GAAQ,aACV,EAAQ,EAAiB,aAAa;AAAA,MACpC,aAAa,EAAO;AAAA,MACpB,gBAAgB,EAAO;AAAA,IACzB,CAAC;AAAA,EAEL,GAAG,CAAC,GAAQ,MAAM,GAAQ,SAAS,CAAC,GAEhC,CAAC,GAAQ,UACX,QAAO;AAGT,QAAM,IAAY,EAAO,mBAAmB,EAAe,SAErD,IAAA,MAAoB;AACxB,IAAA,EAAQ,EAAiB,cAAc;AAAA,MACrC,aAAa,EAAO;AAAA,MACpB,gBAAgB,EAAO;AAAA,IACzB,CAAC,GAEG,MAEE,EAAO,QAAM,EAAkB,EAAO,IAAI,GAC9C,EAAqB,EAAI;AAAA,EAE7B,GAEM,IACJ,gBAAA,EAAC,OAAD;AAAA,IACE,KAAI;AAAA,IACJ,gBAAe;AAAA,IACf,KAAK,EAAO;AAAA,IACZ,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ,aAAa,EAAM,QAAQ,KAAK,GAAA,CAAA;AAAA,MACxC,SAAS;AAAA,IACX;AAAA,EACD,CAAA;AAGH,SACE,gBAAA,EAAC,EAAM,UAAP,EAAA,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,IACE,IAAI;AAAA,MACF,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,IAAI;AAAA,IACN;AAAA,IAEC,UAAA,IAIC,gBAAA,EAAC,UAAD;AAAA,MACE,cAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA,MAAK;AAAA,MAEJ,UAAA;AAAA,IACK,CAAA,IAIR,gBAAA,EAAC,KAAD;AAAA,MACE,cAAW;AAAA,MACX,MAAM,EAAO;AAAA,MACb,SAAS;AAAA,MACT,gBAAe;AAAA,MACf,KAAI;AAAA,MACJ,OAAO;AAAA,QAAE,SAAS;AAAA,QAAS,OAAO;AAAA,MAAO;AAAA,MACzC,QAAO;AAAA,MAEN,UAAA;AAAA,IACA,CAAA;AAAA,EAEA,CAAA,GACN,KACC,gBAAA,EAAC,GAAD;AAAA,IACE,SAAA,MAAe,EAAqB,EAAK;AAAA,IACtB,mBAAA;AAAA,IACnB,QAAQ,EAAuB;AAAA,IAC/B,OAAO,GAAa,cAAc;AAAA,EACnC,CAAA,CAEW,EAAA,CAAA;AAEpB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
import { ConnectWidgetSource } from '../constants/Connect';
|
|
2
3
|
interface ConnectDrawerProps {
|
|
3
4
|
loadWidgetProps?: object;
|
|
4
5
|
onClose: () => void;
|
|
5
6
|
showConnectWidget: boolean;
|
|
7
|
+
source?: ConnectWidgetSource;
|
|
6
8
|
title: string;
|
|
7
9
|
}
|
|
8
10
|
declare const _default: React.FunctionComponent<ConnectDrawerProps>;
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { useAccountStore as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { useAccountStore as m, useGlobalCopyStore as s } from "../context/hooks.es.js";
|
|
2
|
+
import l from "./drawer/Drawer.es.js";
|
|
3
|
+
import f from "./ConnectWidgetPanel.es.js";
|
|
4
4
|
import "react";
|
|
5
|
-
import { observer as
|
|
5
|
+
import { observer as p } from "mobx-react-lite";
|
|
6
6
|
import { jsx as r } from "react/jsx-runtime";
|
|
7
|
-
var
|
|
8
|
-
const { refreshAccounts:
|
|
9
|
-
return /* @__PURE__ */ r(
|
|
10
|
-
ariaLabelClose:
|
|
7
|
+
var u = ({ loadWidgetProps: e, onClose: t, showConnectWidget: o, source: n, title: a }) => {
|
|
8
|
+
const { refreshAccounts: c } = m(), { connect: i } = s();
|
|
9
|
+
return /* @__PURE__ */ r(l, {
|
|
10
|
+
ariaLabelClose: i.close_manage_connection_aria,
|
|
11
11
|
isOpen: o,
|
|
12
12
|
onClose: () => {
|
|
13
|
-
t(),
|
|
13
|
+
t(), c();
|
|
14
14
|
},
|
|
15
|
-
title:
|
|
16
|
-
children: /* @__PURE__ */ r(
|
|
15
|
+
title: a,
|
|
16
|
+
children: /* @__PURE__ */ r(f, {
|
|
17
17
|
isActive: o,
|
|
18
|
-
loadWidgetProps: e
|
|
18
|
+
loadWidgetProps: e,
|
|
19
|
+
source: n
|
|
19
20
|
})
|
|
20
21
|
});
|
|
21
|
-
},
|
|
22
|
+
}, w = p(u);
|
|
22
23
|
export {
|
|
23
|
-
|
|
24
|
+
w as default
|
|
24
25
|
};
|
|
25
26
|
|
|
26
27
|
//# sourceMappingURL=ConnectDrawer.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectDrawer.es.js","names":[],"sources":["../../../src/common/components/ConnectDrawer.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ConnectWidgetPanel from './ConnectWidgetPanel'\nimport { Drawer, useAccountStore, useGlobalCopyStore } from '../../common'\n\ninterface ConnectDrawerProps {\n loadWidgetProps?: object\n onClose: () => void\n showConnectWidget: boolean\n title: string\n}\n\n/**\n * Drawer wrapper around `ConnectWidgetPanel` (SSO url via ConnectStore, the\n * iframe-based `@mxenabled/web-widget-sdk` ConnectWidget, loading/error\n * statuses) with an account refresh on close. Unchanged behaviour for its\n * existing callers; `ConnectWidgetActionBlock` renders `ConnectWidgetPanel`\n * directly instead, since `ActionBlockLayer` already supplies its own Drawer.\n */\nconst ConnectDrawer: React.FC<ConnectDrawerProps> = ({\n loadWidgetProps,\n onClose,\n showConnectWidget,\n title,\n}) => {\n const { refreshAccounts } = useAccountStore()\n const { connect: connectCopy } = useGlobalCopyStore()\n\n return (\n <Drawer\n ariaLabelClose={connectCopy.close_manage_connection_aria}\n isOpen={showConnectWidget}\n onClose={() => {\n onClose()\n refreshAccounts()\n }}\n title={title}\n >\n <ConnectWidgetPanel
|
|
1
|
+
{"version":3,"file":"ConnectDrawer.es.js","names":[],"sources":["../../../src/common/components/ConnectDrawer.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ConnectWidgetPanel from './ConnectWidgetPanel'\nimport { Drawer, useAccountStore, useGlobalCopyStore } from '../../common'\nimport { type ConnectWidgetSource } from '../constants/Connect'\n\ninterface ConnectDrawerProps {\n loadWidgetProps?: object\n onClose: () => void\n showConnectWidget: boolean\n // Optional entry point; forwarded to ConnectWidgetPanel for lifecycle analytics.\n source?: ConnectWidgetSource\n title: string\n}\n\n/**\n * Drawer wrapper around `ConnectWidgetPanel` (SSO url via ConnectStore, the\n * iframe-based `@mxenabled/web-widget-sdk` ConnectWidget, loading/error\n * statuses) with an account refresh on close. Unchanged behaviour for its\n * existing callers; `ConnectWidgetActionBlock` renders `ConnectWidgetPanel`\n * directly instead, since `ActionBlockLayer` already supplies its own Drawer.\n */\nconst ConnectDrawer: React.FC<ConnectDrawerProps> = ({\n loadWidgetProps,\n onClose,\n showConnectWidget,\n source,\n title,\n}) => {\n const { refreshAccounts } = useAccountStore()\n const { connect: connectCopy } = useGlobalCopyStore()\n\n return (\n <Drawer\n ariaLabelClose={connectCopy.close_manage_connection_aria}\n isOpen={showConnectWidget}\n onClose={() => {\n onClose()\n refreshAccounts()\n }}\n title={title}\n >\n <ConnectWidgetPanel\n isActive={showConnectWidget}\n loadWidgetProps={loadWidgetProps}\n source={source}\n />\n </Drawer>\n )\n}\n\nexport default observer(ConnectDrawer)\n"],"mappings":";;;;;;AAuBA,IAAM,IAAA,CAA+C,EACnD,iBAAA,GACA,SAAA,GACA,mBAAA,GACA,QAAA,GACA,OAAA,EAAA,MACI;AACJ,QAAM,EAAE,iBAAA,EAAA,IAAoB,EAAgB,GACtC,EAAE,SAAS,EAAA,IAAgB,EAAmB;AAEpD,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,gBAAgB,EAAY;AAAA,IAC5B,QAAQ;AAAA,IACR,SAAA,MAAe;AACb,MAAA,EAAQ,GACR,EAAgB;AAAA,IAClB;AAAA,IACO,OAAA;AAAA,IAEP,UAAA,gBAAA,EAAC,GAAD;AAAA,MACE,UAAU;AAAA,MACO,iBAAA;AAAA,MACT,QAAA;AAAA,IACT,CAAA;AAAA,EACK,CAAA;AAEZ,GAEA,IAAe,EAAS,CAAa"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
import { ConnectWidgetSource } from '../constants';
|
|
2
3
|
export interface ConnectWidgetPanelProps {
|
|
3
4
|
loadWidgetProps?: object;
|
|
4
5
|
/** Mounts/unmounts the underlying iframe-based ConnectWidget. */
|
|
5
6
|
isActive: boolean;
|
|
7
|
+
source?: ConnectWidgetSource;
|
|
6
8
|
}
|
|
7
9
|
declare const _default: React.FunctionComponent<ConnectWidgetPanelProps>;
|
|
8
10
|
export default _default;
|
|
@@ -1,44 +1,53 @@
|
|
|
1
|
-
import { useConnectStore as
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
import { useConnectStore as D, useEvent as W } from "../context/hooks.es.js";
|
|
2
|
+
import { ANALYTICS_EVENTS as n } from "../constants/Analytics.es.js";
|
|
3
|
+
import { CONNECT_WIDGET_ID as d, MemberConnectionStatus as u } from "../constants/Connect.es.js";
|
|
4
|
+
import c from "./ConnectStatus.es.js";
|
|
5
|
+
import t from "react";
|
|
6
|
+
import { observer as g } from "mobx-react-lite";
|
|
7
|
+
import { jsx as C, jsxs as O } from "react/jsx-runtime";
|
|
8
|
+
import { useTheme as I } from "@mui/material/styles";
|
|
9
|
+
import { ConnectWidget as S } from "@mxenabled/web-widget-sdk";
|
|
10
|
+
var L = ({ isActive: a, loadWidgetProps: N, source: e }) => {
|
|
11
|
+
let E;
|
|
12
|
+
const { loadWidget: p } = D(), { onEvent: r } = W(), [T, o] = t.useState(!1), [s, f] = t.useState(!1), i = t.useRef(!1), l = t.useRef(s);
|
|
13
|
+
l.current = s;
|
|
14
|
+
const { palette: { mode: _ } } = I();
|
|
15
|
+
return t.useEffect(() => {
|
|
16
|
+
const m = () => {
|
|
17
|
+
o(!1), f(!0), e && r(n.CONNECT_WIDGET_ERRORED, { source: e });
|
|
18
|
+
};
|
|
19
|
+
return a ? (i.current = !1, e && r(n.CONNECT_WIDGET_OPENED, { source: e }), o(!0), p({
|
|
20
|
+
mode: _,
|
|
21
|
+
...N
|
|
22
|
+
}).then((h) => {
|
|
23
|
+
E = new S({
|
|
24
|
+
container: `#${d}`,
|
|
25
|
+
style: {
|
|
26
|
+
border: "none",
|
|
27
|
+
height: "calc(100% - 62px)",
|
|
28
|
+
maxWidth: "450px",
|
|
29
|
+
position: "absolute",
|
|
30
|
+
width: "100%"
|
|
31
|
+
},
|
|
32
|
+
url: h.url,
|
|
33
|
+
onSsoUrlLoadError: m,
|
|
34
|
+
onLoad: () => {
|
|
35
|
+
o(!1), f(!1);
|
|
36
|
+
},
|
|
37
|
+
onMemberConnected: () => {
|
|
38
|
+
i.current = !0, e && r(n.CONNECT_WIDGET_COMPLETED, { source: e });
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}).catch(m)) : (o(!1), f(!1)), () => {
|
|
42
|
+
E?.unmount(), a && e && !i.current && !l.current && r(n.CONNECT_WIDGET_ABANDONED, { source: e });
|
|
43
|
+
};
|
|
44
|
+
}, [a]), /* @__PURE__ */ O("div", {
|
|
45
|
+
id: d,
|
|
46
|
+
children: [s && /* @__PURE__ */ C(c, { status: u.Error }), T && /* @__PURE__ */ C(c, { status: u.Loading })]
|
|
38
47
|
});
|
|
39
|
-
},
|
|
48
|
+
}, A = g(L);
|
|
40
49
|
export {
|
|
41
|
-
|
|
50
|
+
A as default
|
|
42
51
|
};
|
|
43
52
|
|
|
44
53
|
//# sourceMappingURL=ConnectWidgetPanel.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectWidgetPanel.es.js","names":[],"sources":["../../../src/common/components/ConnectWidgetPanel.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\nimport { ConnectWidget } from '@mxenabled/web-widget-sdk'\n\nimport ConnectStatus from './ConnectStatus'\nimport {
|
|
1
|
+
{"version":3,"file":"ConnectWidgetPanel.es.js","names":[],"sources":["../../../src/common/components/ConnectWidgetPanel.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\nimport { useTheme } from '@mui/material/styles'\nimport { ConnectWidget } from '@mxenabled/web-widget-sdk'\n\nimport ConnectStatus from './ConnectStatus'\nimport {\n ANALYTICS_EVENTS,\n CONNECT_WIDGET_ID,\n MemberConnectionStatus,\n type ConnectWidgetSource,\n} from '../constants'\nimport { useConnectStore, useEvent } from '../context/hooks'\n\nexport interface ConnectWidgetPanelProps {\n loadWidgetProps?: object\n /** Mounts/unmounts the underlying iframe-based ConnectWidget. */\n isActive: boolean\n // Optional entry point. When set, the widget lifecycle emits PostHog events:\n // opened on open, completed on member-connect, errored on load failure, and\n // abandoned when an open session ends (close/unmount) without connecting or\n // erroring. Emits nothing when unset, so existing call sites are unaffected.\n source?: ConnectWidgetSource\n}\n\n/**\n * The Connect widget itself (SSO url via ConnectStore, the iframe-based\n * `@mxenabled/web-widget-sdk` ConnectWidget, loading/error statuses) with no\n * `Drawer` of its own — content-only, so a caller can put it inside any\n * container (a `Drawer`, as `ConnectDrawer` does, or directly inside another\n * drawer's content slot, as `ConnectWidgetActionBlock` does).\n *\n * Extracted from `ConnectDrawer` so `ConnectWidgetActionBlock` can render just\n * the widget without nesting a second `Drawer` inside `ActionBlockLayer`'s.\n */\nconst ConnectWidgetPanel: React.FC<ConnectWidgetPanelProps> = ({\n isActive,\n loadWidgetProps,\n source,\n}) => {\n let connectWidget: ConnectWidget\n\n const { loadWidget } = useConnectStore()\n const { onEvent } = useEvent()\n const [isLoading, setIsLoading] = React.useState(false)\n const [hasError, setHasError] = React.useState(false)\n const hasConnectedMember = React.useRef(false)\n // Latest-value mirror of hasError so the effect cleanup's `abandoned` check\n // reads the current error, not the stale value captured when the effect ran.\n const hasErrorRef = React.useRef(hasError)\n hasErrorRef.current = hasError\n const {\n palette: { mode },\n } = useTheme()\n\n React.useEffect(() => {\n // Terminal failure path (SSO url fetch rejects or the widget reports a load\n // error): show the error state and close the funnel with an errored event.\n const handleError = () => {\n setIsLoading(false)\n setHasError(true)\n if (source) onEvent(ANALYTICS_EVENTS.CONNECT_WIDGET_ERRORED, { source })\n }\n\n if (isActive) {\n hasConnectedMember.current = false\n if (source) onEvent(ANALYTICS_EVENTS.CONNECT_WIDGET_OPENED, { source })\n setIsLoading(true)\n loadWidget({ mode: mode, ...loadWidgetProps })\n .then((res) => {\n connectWidget = new ConnectWidget({\n container: `#${CONNECT_WIDGET_ID}`,\n style: {\n border: 'none',\n height: 'calc(100% - 62px)',\n maxWidth: '450px',\n position: 'absolute',\n width: '100%',\n },\n url: res.url,\n onSsoUrlLoadError: handleError,\n onLoad: () => {\n setIsLoading(false)\n setHasError(false)\n },\n onMemberConnected: () => {\n hasConnectedMember.current = true\n if (source) onEvent(ANALYTICS_EVENTS.CONNECT_WIDGET_COMPLETED, { source })\n },\n })\n })\n .catch(handleError)\n } else {\n setIsLoading(false)\n setHasError(false)\n }\n\n return () => {\n connectWidget?.unmount()\n // Only an open session's cleanup (isActive captured true) is an abandonment;\n // skip initial-mount cleanup and completed/errored runs (the latter already\n // emitted their own terminal event).\n if (isActive && source && !hasConnectedMember.current && !hasErrorRef.current) {\n onEvent(ANALYTICS_EVENTS.CONNECT_WIDGET_ABANDONED, { source })\n }\n }\n }, [isActive])\n\n return (\n <div id={CONNECT_WIDGET_ID}>\n {hasError && <ConnectStatus status={MemberConnectionStatus.Error} />}\n {isLoading && <ConnectStatus status={MemberConnectionStatus.Loading} />}\n </div>\n )\n}\n\nexport default observer(ConnectWidgetPanel)\n"],"mappings":";;;;;;;;;AAmCA,IAAM,IAAA,CAAyD,EAC7D,UAAA,GACA,iBAAA,GACA,QAAA,EAAA,MACI;AACJ,MAAI;AAEJ,QAAM,EAAE,YAAA,EAAA,IAAe,EAAgB,GACjC,EAAE,SAAA,EAAA,IAAY,EAAS,GACvB,CAAC,GAAW,CAAA,IAAgB,EAAM,SAAS,EAAK,GAChD,CAAC,GAAU,CAAA,IAAe,EAAM,SAAS,EAAK,GAC9C,IAAqB,EAAM,OAAO,EAAK,GAGvC,IAAc,EAAM,OAAO,CAAQ;AACzC,EAAA,EAAY,UAAU;AACtB,QAAM,EACJ,SAAS,EAAE,MAAA,EAAA,EAAA,IACT,EAAS;AAEb,SAAA,EAAM,UAAA,MAAgB;AAGpB,UAAM,IAAA,MAAoB;AACxB,MAAA,EAAa,EAAK,GAClB,EAAY,EAAI,GACZ,KAAQ,EAAQ,EAAiB,wBAAwB,EAAE,QAAA,EAAO,CAAC;AAAA,IACzE;AAEA,WAAI,KACF,EAAmB,UAAU,IACzB,KAAQ,EAAQ,EAAiB,uBAAuB,EAAE,QAAA,EAAO,CAAC,GACtE,EAAa,EAAI,GACjB,EAAW;AAAA,MAAQ,MAAA;AAAA,MAAM,GAAG;AAAA,IAAgB,CAAC,EAC1C,KAAA,CAAM,MAAQ;AACb,MAAA,IAAgB,IAAI,EAAc;AAAA,QAChC,WAAW,IAAI,CAAA;AAAA,QACf,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,UAAU;AAAA,UACV,OAAO;AAAA,QACT;AAAA,QACA,KAAK,EAAI;AAAA,QACT,mBAAmB;AAAA,QACnB,QAAA,MAAc;AACZ,UAAA,EAAa,EAAK,GAClB,EAAY,EAAK;AAAA,QACnB;AAAA,QACA,mBAAA,MAAyB;AACvB,UAAA,EAAmB,UAAU,IACzB,KAAQ,EAAQ,EAAiB,0BAA0B,EAAE,QAAA,EAAO,CAAC;AAAA,QAC3E;AAAA,MACF,CAAC;AAAA,IACH,CAAC,EACA,MAAM,CAAW,MAEpB,EAAa,EAAK,GAClB,EAAY,EAAK,IAGnB,MAAa;AACX,MAAA,GAAe,QAAQ,GAInB,KAAY,KAAU,CAAC,EAAmB,WAAW,CAAC,EAAY,WACpE,EAAQ,EAAiB,0BAA0B,EAAE,QAAA,EAAO,CAAC;AAAA,IAEjE;AAAA,EACF,GAAG,CAAC,CAAQ,CAAC,GAGX,gBAAA,EAAC,OAAD;AAAA,IAAK,IAAI;AAAA,IAAT,UAAA,CACG,KAAY,gBAAA,EAAC,GAAD,EAAe,QAAQ,EAAuB,MAAQ,CAAA,GAClE,KAAa,gBAAA,EAAC,GAAD,EAAe,QAAQ,EAAuB,QAAU,CAAA,CACnE;AAAA;AAET,GAEA,IAAe,EAAS,CAAkB"}
|
|
@@ -132,4 +132,10 @@ export declare const ANALYTICS_EVENTS: {
|
|
|
132
132
|
TRENDS_LOAD_WIDGET: string;
|
|
133
133
|
TRENDS_VIEW_TRANSACTIONS: string;
|
|
134
134
|
WIDGET_SIZE_CHANGED: string;
|
|
135
|
+
BANNER_VIEW: string;
|
|
136
|
+
BANNER_CLICK: string;
|
|
137
|
+
CONNECT_WIDGET_OPENED: string;
|
|
138
|
+
CONNECT_WIDGET_COMPLETED: string;
|
|
139
|
+
CONNECT_WIDGET_ABANDONED: string;
|
|
140
|
+
CONNECT_WIDGET_ERRORED: string;
|
|
135
141
|
};
|
|
@@ -131,7 +131,13 @@ var _ = {
|
|
|
131
131
|
TRENDS_HOVER_LEGEND: "trends_hover_ChartLegend",
|
|
132
132
|
TRENDS_LOAD_WIDGET: "trends_load_widget",
|
|
133
133
|
TRENDS_VIEW_TRANSACTIONS: "trends_view_transactions",
|
|
134
|
-
WIDGET_SIZE_CHANGED: "widget_size_changed"
|
|
134
|
+
WIDGET_SIZE_CHANGED: "widget_size_changed",
|
|
135
|
+
BANNER_VIEW: "viewed_banner",
|
|
136
|
+
BANNER_CLICK: "clicked_banner",
|
|
137
|
+
CONNECT_WIDGET_OPENED: "opened_connect_widget",
|
|
138
|
+
CONNECT_WIDGET_COMPLETED: "completed_connect_widget",
|
|
139
|
+
CONNECT_WIDGET_ABANDONED: "abandoned_connect_widget",
|
|
140
|
+
CONNECT_WIDGET_ERRORED: "errored_connect_widget"
|
|
135
141
|
};
|
|
136
142
|
export {
|
|
137
143
|
_ as ANALYTICS_EVENTS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Analytics.es.js","names":[],"sources":["../../../src/common/constants/Analytics.ts"],"sourcesContent":["export const ANALYTICS_EVENTS = {\n ACCOUNTS_CLICK_ACCOUNT: 'accounts_widget_click_account',\n ACCOUNTS_CLICK_CONNECT: 'accounts_widget_click_connect_accounts',\n ACCOUNTS_CLICK_FILTER: 'accounts_widget_click_filter_accounts',\n ACCOUNTS_CLICK_SYNC: 'accounts_widget_click_sync',\n ACCOUNT_DETAILS_CLICK_HIDE: 'account_details_click_hide_account',\n ACCOUNT_DETAILS_CLICK_MARK_CLOSED: 'account_details_click_mark_as_closed',\n ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE: 'account_details_click_mark_as_duplicate',\n ACCOUNT_DETAILS_CLICK_TRANSACTION: 'account_details_click_transaction',\n ACCOUNT_DETAILS_VIEW: 'account_details',\n ACCOUNT_DETAILS_VIEW_TRANSACTIONS: 'account_details_transactions',\n BUDGETS_CLICK_ADD: 'budgets_widget_click_add_budget',\n BUDGETS_CLICK_BUDGET_CATEGORY: 'budgets_widget_click_budget_category',\n BUDGETS_CLICK_EDIT_INCOME: 'budgets_widget_click_edit_income',\n BUDGETS_CLICK_FILTER: 'budgets_widget_click_filter_accounts',\n BUDGETS_VIEW: 'budgets',\n CASH_FLOW_CLICK_FILTER: 'cash_flow_widget_click_filter_accounts',\n CASH_FLOW_CLICK_SETTINGS: 'cash_flow_widget_click_settings',\n DEBTS_CLICK_CHART_AREA: 'debts_widget_click_chart_area',\n DEBTS_CLICK_FILTER: 'debts_widget_click_filter_accounts',\n DEBTS_CLICK_PAYDOWN: 'debts_widget_click_paydown',\n DEBTS_CLICK_PRIORITY: 'debts_widget_click_priority',\n DEBTS_CLICK_PRIORITIZE: 'debts_widget_click_prioritize',\n DEBTS_CLICK_SNOWBALL_CTA: 'debts_widget_click_snowball_cta',\n DEBTS_CLICK_TABLE_ROW: 'debts_widget_click_table_row',\n DEBTS_CLICK_TABLE_SORT: 'debts_widget_click_table_sort',\n DEBTS_SAVE_BALANCE_ACTION: 'debts_widget_click_balance_action',\n DEBTS_SAVE_PAYDOWN_ACTION: 'debts_widget_click_paydown_action',\n DEBTS_SAVE_PAYMENT_ACTION: 'debts_widget_click_payment_action',\n DEBTS_SAVE_RATE_ACTION: 'debts_widget_click_rate_action',\n DEBTS_VIEW: 'debts',\n DEBT_DETAILS_VIEW: 'debt_details',\n DEBT_SCHEDULE_VIEW: 'debt_schedule',\n GOALS_CLICK_ADD: 'goals_widget_click_add',\n GOALS_CLICK_FILTER: 'goals_widget_click_filter_accounts',\n GOALS_VIEW: 'goals',\n GOALS_MICRO_WIDGET_CTA: 'goals_micro_widget_click_see_details_cta',\n HELP_CLICK_CATEGORY: 'help_click_category',\n HELP_CLICK_NEED_MORE_ASSISTANCE: 'help_click_needMoreAssistance',\n HELP_CLICK_OPEN_CASE: 'help_click_openCase',\n HELP_CLICK_REQUEST_SUPPORT: 'help_click_requestSupport',\n HELP_CLICK_SUPPORT_FOR_INSTITUTION: 'help_click_supportForInstitution',\n HELP_CLICK_SUPPORT_FOR_MISSING_INSTITUTION: 'help_click_supportForMissingInstitution',\n HELP_CLICK_SUPPORT_TOPIC: 'help_click_supportTopic',\n HELP_CLICK_TOPIC: 'help_click_topic',\n HELP_EXPAND_CATEGORY: 'help_expand_category',\n HELP_EXPAND_TOPIC: 'help_expand_topic',\n HELP_SUBMIT_SUPPORT_REQUEST: 'help_submit_supportRequest',\n INVESTMENTS: 'Investments',\n INVESTMENT_WIDGET_ACCOUNT_FILTER_CLICK: 'investment_widget_account_filter_click',\n INVESTMENT_WIDGET_ALLOCATION_CLICK: 'investment_widget_allocation_click',\n INVESTMENT_WIDGET_ANALYSIS_CLICK: 'investment_widget_analysis_click',\n INVESTMENT_WIDGET_DETAILS_CLICK: 'investment_widget_details_click',\n NET_WORTH_VIEW: 'netWorth',\n NETWORTH_MICRO_WIDGET_CTA: 'net_worth_micro_widget_click_see_details_cta',\n NET_WORTH_WIDGET_CLICK_ASSETS_LIABILITIES: 'net_worth_widget_click_view_assets_liabilities',\n NET_WORTH_WIDGET_CLICK_FILTER: 'net_worth_widget_click_filter_accounts',\n NET_WORTH_WIDGET_CLICK_TIMEFRAME: 'netWorth_click_timePeriod',\n RECURRING_ACTIVITY_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_ACTIVITY_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_ACTIVITY_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_ACTIVITY_CLICK_EXPENSE: 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_ACTIVITY_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_ACTIVITY_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_ACTIVITY_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_ACTIVITY_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_ACTIVITY_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_TRANSACTIONS_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_TRANSACTIONS_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_TRANSACTIONS_CLICK_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_TRANSACTIONS_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_TRANSACTIONS_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_TRANSACTIONS_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_TRANSACTIONS_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_TRANSACTIONS_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_DELETE: 'recurring_transactions_widget_details_click_delete',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_PAYMENT_SCHEDULE:\n 'recurring_transactions_widget_details_click_payment_schedule',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_PAID:\n 'recurring_transactions_widget_list_click_mark_as_paid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_UNPAID:\n 'recurring_transactions_widget_list_click_mark_as_unpaid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MORE_MENU: 'recurring_transactions_widget_list_click_more_menu',\n RECURRING_TRANSACTIONS_MICRO_WIDGET_CTA: 'recurring_transactions_micro_widget_click_view_all_cta',\n SPENDING_CLICK_FILTER: 'spending_widget_click_filter_accounts',\n SPENDING_VIEW: 'spending',\n TRANSACTIONS_ADD_MANUAL_ACCOUNT_MODAL: 'transactions_add_manual_account_modal',\n TRANSACTIONS_CLICK_ADD: 'transactions_click_add_transaction',\n TRANSACTIONS_CLICK_DETAILS: 'transactions_click_transaction_details',\n TRANSACTIONS_CLICK_EXPORT: 'transactions_click_export_csv',\n TRANSACTIONS_CLICK_FILTER: 'transactions_click_filter_accounts',\n TRANSACTIONS_CLICK_SEARCH: 'transactions_click_search',\n TRANSACTIONS_VIEW: 'transactions',\n TRANSACTION_DETAILS_CLICK_AMOUNT: 'transaction_details_click_transaction_amount',\n TRANSACTION_DETAILS_CLICK_CATEGORY: 'transaction_details_click_category',\n TRANSACTION_DETAILS_CLICK_DATE: 'transaction_details_click_date',\n TRANSACTION_DETAILS_CLICK_DELETE_LOGO: 'transaction_details_click_delete_merchant_logo',\n TRANSACTION_DETAILS_CLICK_DESCRIPTION: 'transaction_details_click_edit_description',\n TRANSACTION_DETAILS_CLICK_FLAG: 'transaction_details_click_flag_transaction',\n TRANSACTION_DETAILS_CLICK_MEMO: 'transaction_details_click_memo',\n TRANSACTION_DETAILS_CLICK_SPLIT: 'transaction_details_click_split_transaction',\n TRANSACTION_DETAILS_CLICK_TAGS: 'transaction_details_click_tags',\n TRANSACTION_DETAILS_CLICK_UNSPLIT: 'transaction_details_click_unsplit_transaction',\n TRANSACTION_DETAILS_VIEW: 'transaction_details',\n TRANSACTIONS_TABLE_CLICK_CATEGORY: 'transactions_table_click_category',\n WIDGET_BACK_CLICK: 'widget_back_button_click',\n\n // NEW ANAYTICS EVENT FORMAT\n // widget_action_subject\n GOALS_CLICK_GET_STARTED: 'goals_click_getStarted',\n GOALS_CLICK_VIEW_DETAILS: 'goals_click_viewDetails',\n GOALS_LOAD_WIDGET: 'goals_load_widget',\n NET_WORTH_CLICK_GET_STARTED: 'netWorth_click_getStarted',\n NET_WORTH_CLICK_VIEW_DETAILS: 'netWorth_click_viewDetails',\n NET_WORTH_LOAD_WIDGET: 'netWorth_load_widget',\n RECURRING_TRANSACTIONS_CLICK_GET_STARTED: 'recurringTransactions_click_getStarted',\n RECURRING_TRANSACTIONS_CLICK_VIEW_ALL: 'recurringTransactions_click_viewAll',\n RECURRING_TRANSACTIONS_LOAD_WIDGET: 'recurringTransactions_load_widget',\n TRENDS_CLICK_ALL_CATEGORIES: 'trends_click_allCategories',\n TRENDS_CLICK_BACK: 'trends_click_back',\n TRENDS_CLICK_CHART: 'trends_click_chart',\n TRENDS_CLICK_CONNECT_ACCOUNTS: 'trends_click_connectAccounts',\n TRENDS_CLICK_EXPORT_CSV: 'trends_click_exportCSV',\n TRENDS_CLICK_FILTER: 'trends_click_filter',\n TRENDS_CLICK_GET_STARTED: 'trends_click_getStarted',\n TRENDS_CLICK_INSIGHT: 'trends_click_insight',\n TRENDS_CLICK_LEGEND: 'trends_click_legend',\n TRENDS_CLICK_LIST_ITEM: 'trends_click_listItem',\n TRENDS_CLICK_TABLE_SORT: 'trends_click_tableSort',\n TRENDS_CLICK_TIME_WINDOW: 'trends_click_timeWindow',\n TRENDS_CLICK_TOGGLE_VIEW: 'trends_click_toggleView',\n TRENDS_CLICK_VIEW_MORE: 'trends_click_viewMore',\n TRENDS_CLICK_VIEW_TRANSACTIONS: 'trends_click_viewTransactions',\n TRENDS_HOVER_AREA: 'trends_hover_chartArea',\n TRENDS_HOVER_POINT: 'trends_hover_chartPoint',\n TRENDS_HOVER_LEGEND: 'trends_hover_ChartLegend',\n TRENDS_LOAD_WIDGET: 'trends_load_widget',\n TRENDS_VIEW_TRANSACTIONS: 'trends_view_transactions',\n WIDGET_SIZE_CHANGED: 'widget_size_changed',\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Analytics.es.js","names":[],"sources":["../../../src/common/constants/Analytics.ts"],"sourcesContent":["export const ANALYTICS_EVENTS = {\n ACCOUNTS_CLICK_ACCOUNT: 'accounts_widget_click_account',\n ACCOUNTS_CLICK_CONNECT: 'accounts_widget_click_connect_accounts',\n ACCOUNTS_CLICK_FILTER: 'accounts_widget_click_filter_accounts',\n ACCOUNTS_CLICK_SYNC: 'accounts_widget_click_sync',\n ACCOUNT_DETAILS_CLICK_HIDE: 'account_details_click_hide_account',\n ACCOUNT_DETAILS_CLICK_MARK_CLOSED: 'account_details_click_mark_as_closed',\n ACCOUNT_DETAILS_CLICK_MARK_DUPLICATE: 'account_details_click_mark_as_duplicate',\n ACCOUNT_DETAILS_CLICK_TRANSACTION: 'account_details_click_transaction',\n ACCOUNT_DETAILS_VIEW: 'account_details',\n ACCOUNT_DETAILS_VIEW_TRANSACTIONS: 'account_details_transactions',\n BUDGETS_CLICK_ADD: 'budgets_widget_click_add_budget',\n BUDGETS_CLICK_BUDGET_CATEGORY: 'budgets_widget_click_budget_category',\n BUDGETS_CLICK_EDIT_INCOME: 'budgets_widget_click_edit_income',\n BUDGETS_CLICK_FILTER: 'budgets_widget_click_filter_accounts',\n BUDGETS_VIEW: 'budgets',\n CASH_FLOW_CLICK_FILTER: 'cash_flow_widget_click_filter_accounts',\n CASH_FLOW_CLICK_SETTINGS: 'cash_flow_widget_click_settings',\n DEBTS_CLICK_CHART_AREA: 'debts_widget_click_chart_area',\n DEBTS_CLICK_FILTER: 'debts_widget_click_filter_accounts',\n DEBTS_CLICK_PAYDOWN: 'debts_widget_click_paydown',\n DEBTS_CLICK_PRIORITY: 'debts_widget_click_priority',\n DEBTS_CLICK_PRIORITIZE: 'debts_widget_click_prioritize',\n DEBTS_CLICK_SNOWBALL_CTA: 'debts_widget_click_snowball_cta',\n DEBTS_CLICK_TABLE_ROW: 'debts_widget_click_table_row',\n DEBTS_CLICK_TABLE_SORT: 'debts_widget_click_table_sort',\n DEBTS_SAVE_BALANCE_ACTION: 'debts_widget_click_balance_action',\n DEBTS_SAVE_PAYDOWN_ACTION: 'debts_widget_click_paydown_action',\n DEBTS_SAVE_PAYMENT_ACTION: 'debts_widget_click_payment_action',\n DEBTS_SAVE_RATE_ACTION: 'debts_widget_click_rate_action',\n DEBTS_VIEW: 'debts',\n DEBT_DETAILS_VIEW: 'debt_details',\n DEBT_SCHEDULE_VIEW: 'debt_schedule',\n GOALS_CLICK_ADD: 'goals_widget_click_add',\n GOALS_CLICK_FILTER: 'goals_widget_click_filter_accounts',\n GOALS_VIEW: 'goals',\n GOALS_MICRO_WIDGET_CTA: 'goals_micro_widget_click_see_details_cta',\n HELP_CLICK_CATEGORY: 'help_click_category',\n HELP_CLICK_NEED_MORE_ASSISTANCE: 'help_click_needMoreAssistance',\n HELP_CLICK_OPEN_CASE: 'help_click_openCase',\n HELP_CLICK_REQUEST_SUPPORT: 'help_click_requestSupport',\n HELP_CLICK_SUPPORT_FOR_INSTITUTION: 'help_click_supportForInstitution',\n HELP_CLICK_SUPPORT_FOR_MISSING_INSTITUTION: 'help_click_supportForMissingInstitution',\n HELP_CLICK_SUPPORT_TOPIC: 'help_click_supportTopic',\n HELP_CLICK_TOPIC: 'help_click_topic',\n HELP_EXPAND_CATEGORY: 'help_expand_category',\n HELP_EXPAND_TOPIC: 'help_expand_topic',\n HELP_SUBMIT_SUPPORT_REQUEST: 'help_submit_supportRequest',\n INVESTMENTS: 'Investments',\n INVESTMENT_WIDGET_ACCOUNT_FILTER_CLICK: 'investment_widget_account_filter_click',\n INVESTMENT_WIDGET_ALLOCATION_CLICK: 'investment_widget_allocation_click',\n INVESTMENT_WIDGET_ANALYSIS_CLICK: 'investment_widget_analysis_click',\n INVESTMENT_WIDGET_DETAILS_CLICK: 'investment_widget_details_click',\n NET_WORTH_VIEW: 'netWorth',\n NETWORTH_MICRO_WIDGET_CTA: 'net_worth_micro_widget_click_see_details_cta',\n NET_WORTH_WIDGET_CLICK_ASSETS_LIABILITIES: 'net_worth_widget_click_view_assets_liabilities',\n NET_WORTH_WIDGET_CLICK_FILTER: 'net_worth_widget_click_filter_accounts',\n NET_WORTH_WIDGET_CLICK_TIMEFRAME: 'netWorth_click_timePeriod',\n RECURRING_ACTIVITY_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_ACTIVITY_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_ACTIVITY_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_ACTIVITY_CLICK_EXPENSE: 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_ACTIVITY_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_ACTIVITY_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_ACTIVITY_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_ACTIVITY_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_ACTIVITY_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_CLICK_ADD_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_add_expense',\n RECURRING_TRANSACTIONS_CLICK_ADD_INCOME:\n 'recurring_transactions_widget_income_details_click_add_income',\n RECURRING_TRANSACTIONS_CLICK_CALENDAR_RIGHT: 'recurring_transactions_widget_click_calendar_right',\n RECURRING_TRANSACTIONS_CLICK_EXPENSE:\n 'recurring_transactions_widget_manage_expenses_click_expense',\n RECURRING_TRANSACTIONS_CLICK_FILTER: 'recurring_transactions_widget_click_filter_accounts',\n RECURRING_TRANSACTIONS_CLICK_INCOME: 'recurring_transactions_widget_click_income',\n RECURRING_TRANSACTIONS_CLICK_PAID: 'recurring_transactions_widget_click_paid_expense',\n RECURRING_TRANSACTIONS_CLICK_SETTINGS: 'recurring_transactions_widget_click_settings',\n RECURRING_TRANSACTIONS_CLICK_UPCOMING: 'recurring_transactions_widget_click_upcoming_transaction',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_DELETE: 'recurring_transactions_widget_details_click_delete',\n RECURRING_TRANSACTIONS_DETAILS_CLICK_PAYMENT_SCHEDULE:\n 'recurring_transactions_widget_details_click_payment_schedule',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_PAID:\n 'recurring_transactions_widget_list_click_mark_as_paid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MARK_AS_UNPAID:\n 'recurring_transactions_widget_list_click_mark_as_unpaid',\n RECURRING_TRANSACTIONS_LIST_CLICK_MORE_MENU: 'recurring_transactions_widget_list_click_more_menu',\n RECURRING_TRANSACTIONS_MICRO_WIDGET_CTA: 'recurring_transactions_micro_widget_click_view_all_cta',\n SPENDING_CLICK_FILTER: 'spending_widget_click_filter_accounts',\n SPENDING_VIEW: 'spending',\n TRANSACTIONS_ADD_MANUAL_ACCOUNT_MODAL: 'transactions_add_manual_account_modal',\n TRANSACTIONS_CLICK_ADD: 'transactions_click_add_transaction',\n TRANSACTIONS_CLICK_DETAILS: 'transactions_click_transaction_details',\n TRANSACTIONS_CLICK_EXPORT: 'transactions_click_export_csv',\n TRANSACTIONS_CLICK_FILTER: 'transactions_click_filter_accounts',\n TRANSACTIONS_CLICK_SEARCH: 'transactions_click_search',\n TRANSACTIONS_VIEW: 'transactions',\n TRANSACTION_DETAILS_CLICK_AMOUNT: 'transaction_details_click_transaction_amount',\n TRANSACTION_DETAILS_CLICK_CATEGORY: 'transaction_details_click_category',\n TRANSACTION_DETAILS_CLICK_DATE: 'transaction_details_click_date',\n TRANSACTION_DETAILS_CLICK_DELETE_LOGO: 'transaction_details_click_delete_merchant_logo',\n TRANSACTION_DETAILS_CLICK_DESCRIPTION: 'transaction_details_click_edit_description',\n TRANSACTION_DETAILS_CLICK_FLAG: 'transaction_details_click_flag_transaction',\n TRANSACTION_DETAILS_CLICK_MEMO: 'transaction_details_click_memo',\n TRANSACTION_DETAILS_CLICK_SPLIT: 'transaction_details_click_split_transaction',\n TRANSACTION_DETAILS_CLICK_TAGS: 'transaction_details_click_tags',\n TRANSACTION_DETAILS_CLICK_UNSPLIT: 'transaction_details_click_unsplit_transaction',\n TRANSACTION_DETAILS_VIEW: 'transaction_details',\n TRANSACTIONS_TABLE_CLICK_CATEGORY: 'transactions_table_click_category',\n WIDGET_BACK_CLICK: 'widget_back_button_click',\n\n // NEW ANAYTICS EVENT FORMAT\n // widget_action_subject\n GOALS_CLICK_GET_STARTED: 'goals_click_getStarted',\n GOALS_CLICK_VIEW_DETAILS: 'goals_click_viewDetails',\n GOALS_LOAD_WIDGET: 'goals_load_widget',\n NET_WORTH_CLICK_GET_STARTED: 'netWorth_click_getStarted',\n NET_WORTH_CLICK_VIEW_DETAILS: 'netWorth_click_viewDetails',\n NET_WORTH_LOAD_WIDGET: 'netWorth_load_widget',\n RECURRING_TRANSACTIONS_CLICK_GET_STARTED: 'recurringTransactions_click_getStarted',\n RECURRING_TRANSACTIONS_CLICK_VIEW_ALL: 'recurringTransactions_click_viewAll',\n RECURRING_TRANSACTIONS_LOAD_WIDGET: 'recurringTransactions_load_widget',\n TRENDS_CLICK_ALL_CATEGORIES: 'trends_click_allCategories',\n TRENDS_CLICK_BACK: 'trends_click_back',\n TRENDS_CLICK_CHART: 'trends_click_chart',\n TRENDS_CLICK_CONNECT_ACCOUNTS: 'trends_click_connectAccounts',\n TRENDS_CLICK_EXPORT_CSV: 'trends_click_exportCSV',\n TRENDS_CLICK_FILTER: 'trends_click_filter',\n TRENDS_CLICK_GET_STARTED: 'trends_click_getStarted',\n TRENDS_CLICK_INSIGHT: 'trends_click_insight',\n TRENDS_CLICK_LEGEND: 'trends_click_legend',\n TRENDS_CLICK_LIST_ITEM: 'trends_click_listItem',\n TRENDS_CLICK_TABLE_SORT: 'trends_click_tableSort',\n TRENDS_CLICK_TIME_WINDOW: 'trends_click_timeWindow',\n TRENDS_CLICK_TOGGLE_VIEW: 'trends_click_toggleView',\n TRENDS_CLICK_VIEW_MORE: 'trends_click_viewMore',\n TRENDS_CLICK_VIEW_TRANSACTIONS: 'trends_click_viewTransactions',\n TRENDS_HOVER_AREA: 'trends_hover_chartArea',\n TRENDS_HOVER_POINT: 'trends_hover_chartPoint',\n TRENDS_HOVER_LEGEND: 'trends_hover_ChartLegend',\n TRENDS_LOAD_WIDGET: 'trends_load_widget',\n TRENDS_VIEW_TRANSACTIONS: 'trends_view_transactions',\n WIDGET_SIZE_CHANGED: 'widget_size_changed',\n\n // Banner ads & connect-widget lifecycle funnel (entry point in the `source`\n // property). Names are the contract with PostHog/Insights — do not rename.\n BANNER_VIEW: 'viewed_banner',\n BANNER_CLICK: 'clicked_banner',\n CONNECT_WIDGET_OPENED: 'opened_connect_widget',\n CONNECT_WIDGET_COMPLETED: 'completed_connect_widget',\n CONNECT_WIDGET_ABANDONED: 'abandoned_connect_widget',\n CONNECT_WIDGET_ERRORED: 'errored_connect_widget',\n}\n"],"mappings":"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"}
|
|
@@ -4,3 +4,10 @@ export declare enum MemberConnectionStatus {
|
|
|
4
4
|
Loading = "loading",
|
|
5
5
|
Error = "error"
|
|
6
6
|
}
|
|
7
|
+
export declare const DEEP_LINK_TYPE: {
|
|
8
|
+
readonly CONNECT: 2;
|
|
9
|
+
};
|
|
10
|
+
export declare const CONNECT_WIDGET_SOURCES: {
|
|
11
|
+
readonly BANNER: "banner";
|
|
12
|
+
};
|
|
13
|
+
export type ConnectWidgetSource = (typeof CONNECT_WIDGET_SOURCES)[keyof typeof CONNECT_WIDGET_SOURCES];
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
var
|
|
1
|
+
var E = "connect_widget", N = "connections_widget", _ = /* @__PURE__ */ (function(r) {
|
|
2
2
|
return r.Loading = "loading", r.Error = "error", r;
|
|
3
|
-
})({});
|
|
3
|
+
})({}), n = { CONNECT: 2 }, C = { BANNER: "banner" };
|
|
4
4
|
export {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
N as CONNECTIONS_WIDGET_ID,
|
|
6
|
+
E as CONNECT_WIDGET_ID,
|
|
7
|
+
C as CONNECT_WIDGET_SOURCES,
|
|
8
|
+
n as DEEP_LINK_TYPE,
|
|
7
9
|
_ as MemberConnectionStatus
|
|
8
10
|
};
|
|
9
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connect.es.js","names":[],"sources":["../../../src/common/constants/Connect.ts"],"sourcesContent":["export const CONNECT_WIDGET_ID = 'connect_widget'\nexport const CONNECTIONS_WIDGET_ID = 'connections_widget'\n\n// Connection state shared by the foundational `common` layer (ConnectDrawer /\n// ConnectStatus) and the accounts widget. Lives in `common` so `common` does not\n// have to depend on `accounts` (which created a common->accounts layering\n// violation and blocked per-widget code splitting).\nexport enum MemberConnectionStatus {\n Loading = 'loading',\n Error = 'error',\n}\n"],"mappings":"AAAA,IAAa,IAAoB,kBACpB,IAAwB,sBAMzB,IAAL,0BAAA,GAAA;AACL,SAAA,EAAA,UAAA,WACA,EAAA,QAAA;AACF,GAAA,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"Connect.es.js","names":[],"sources":["../../../src/common/constants/Connect.ts"],"sourcesContent":["export const CONNECT_WIDGET_ID = 'connect_widget'\nexport const CONNECTIONS_WIDGET_ID = 'connections_widget'\n\n// Connection state shared by the foundational `common` layer (ConnectDrawer /\n// ConnectStatus) and the accounts widget. Lives in `common` so `common` does not\n// have to depend on `accounts` (which created a common->accounts layering\n// violation and blocked per-widget code splitting).\nexport enum MemberConnectionStatus {\n Loading = 'loading',\n Error = 'error',\n}\n\n// In-app destination advertised by a banner ad (`Banner.deep_link_type`). Value\n// matches bullseye's DeepLinkType enum (CONNECT_WIDGET = 2). Longbow does not\n// surface it in the banner response yet, so until it does every banner falls\n// back to its external `redirect_url` and this path stays inert.\nexport const DEEP_LINK_TYPE = {\n CONNECT: 2,\n} as const\n\n// Entry point a ConnectDrawer was opened from, sent as `source` on the\n// connect-widget lifecycle events. Call sites with no source emit no events.\nexport const CONNECT_WIDGET_SOURCES = {\n BANNER: 'banner',\n} as const\n\nexport type ConnectWidgetSource =\n (typeof CONNECT_WIDGET_SOURCES)[keyof typeof CONNECT_WIDGET_SOURCES]\n"],"mappings":"AAAA,IAAa,IAAoB,kBACpB,IAAwB,sBAMzB,IAAL,0BAAA,GAAA;AACL,SAAA,EAAA,UAAA,WACA,EAAA,QAAA;AACF,GAAA,CAAA,CAAA,GAMa,IAAiB,EAC5B,SAAS,EACX,GAIa,IAAyB,EACpC,QAAQ,SACV"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { ANALYTICS_EVENTS } from './Analytics';
|
|
2
|
-
export { CONNECT_WIDGET_ID, CONNECTIONS_WIDGET_ID, MemberConnectionStatus } from './Connect';
|
|
2
|
+
export { CONNECT_WIDGET_ID, CONNECT_WIDGET_SOURCES, CONNECTIONS_WIDGET_ID, DEEP_LINK_TYPE, MemberConnectionStatus, } from './Connect';
|
|
3
|
+
export type { ConnectWidgetSource } from './Connect';
|
|
3
4
|
export { INCOME_ACCOUNT_TYPES, PAYMENT_ACCOUNT_TYPES, SPENDING_ACCOUNT_TYPES } from './Account';
|
|
4
5
|
export { RECURRENCE_COPY } from './ScheduledPayment';
|
|
5
6
|
export { LOADING_STATUS } from './SpendingPlan';
|
package/dist/common/index.es.js
CHANGED
|
@@ -4,9 +4,9 @@ import a from "./components/charts/StatusBar.es.js";
|
|
|
4
4
|
import p from "./components/charts/Donut.es.js";
|
|
5
5
|
import u from "./hooks/useAccountDisplayName.es.js";
|
|
6
6
|
import { useCombineEvents as C, useCombinePageviews as S } from "./hooks/useCombineEvents.es.js";
|
|
7
|
-
import { GlobalDataContext as c, GlobalDataProvider as
|
|
8
|
-
import { WidgetContainerContext as
|
|
9
|
-
import { useAccountStore as I, useActionContext as N, useAppConfig as P, useBudgetsStore as y, useCashflowStore as A, useCategoryStore as
|
|
7
|
+
import { GlobalDataContext as c, GlobalDataProvider as T } from "./context/GlobalDataProvider.es.js";
|
|
8
|
+
import { WidgetContainerContext as d, WidgetContainerProvider as D } from "./context/WidgetContainerProvider.es.js";
|
|
9
|
+
import { useAccountStore as I, useActionContext as N, useAppConfig as P, useBudgetsStore as y, useCashflowStore as A, useCategoryStore as O, useDebtStore as b, useError as W, useEvent as G, useFinstrongStore as L, useGlobalCopyStore as R, useGlobalStore as U, useGlobalUiStore as v, useGoalStore as B, useHelpStore as h, useHoldingStore as w, useInsightsV2Store as x, useLoad as M, useMerchantStore as Y, useNetWorthStore as H, useNotificationStore as F, usePageView as z, useRecurringTransactionsStore as V, useSettingsStore as Z, useTransactionStore as K, useTrendsStore as k, useUserStore as q, useWidgetContainerProvider as j } from "./context/hooks.es.js";
|
|
10
10
|
import { useInsightsEnabled as Q } from "./hooks/useInsightsEnabled.es.js";
|
|
11
11
|
import { useScreenSize as $ } from "./hooks/useScreenSize.es.js";
|
|
12
12
|
import ro from "./hooks/usePrevious.es.js";
|
|
@@ -18,112 +18,114 @@ import co from "./components/dialog/Dialog.es.js";
|
|
|
18
18
|
import Eo from "./components/drawer/Drawer.es.js";
|
|
19
19
|
import _o from "./components/daterangeselector/DateRangeSelector.es.js";
|
|
20
20
|
import { ANALYTICS_EVENTS as No } from "./constants/Analytics.es.js";
|
|
21
|
-
import { CONNECTIONS_WIDGET_ID as yo, CONNECT_WIDGET_ID as Ao,
|
|
22
|
-
import { GlobalStore as
|
|
23
|
-
import { INCOME_ACCOUNT_TYPES as
|
|
24
|
-
import { RECURRENCE_COPY as
|
|
25
|
-
import { LOADING_STATUS as
|
|
26
|
-
import { DEFAULT_DONUT_SIZE as
|
|
27
|
-
import { Sizes as
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
import
|
|
31
|
-
import
|
|
32
|
-
import
|
|
33
|
-
import
|
|
34
|
-
import { GlobalAccountFilter as
|
|
35
|
-
import
|
|
36
|
-
import { WidgetContainer as
|
|
37
|
-
import
|
|
38
|
-
import
|
|
39
|
-
import
|
|
40
|
-
import
|
|
21
|
+
import { CONNECTIONS_WIDGET_ID as yo, CONNECT_WIDGET_ID as Ao, CONNECT_WIDGET_SOURCES as Oo, DEEP_LINK_TYPE as bo, MemberConnectionStatus as Wo } from "./constants/Connect.es.js";
|
|
22
|
+
import { GlobalStore as Lo } from "../core/stores/GlobalStore.es.js";
|
|
23
|
+
import { INCOME_ACCOUNT_TYPES as Uo, PAYMENT_ACCOUNT_TYPES as vo, SPENDING_ACCOUNT_TYPES as Bo } from "./constants/Account.es.js";
|
|
24
|
+
import { RECURRENCE_COPY as wo } from "./constants/ScheduledPayment.es.js";
|
|
25
|
+
import { LOADING_STATUS as Mo } from "./constants/SpendingPlan.es.js";
|
|
26
|
+
import { DEFAULT_DONUT_SIZE as Ho, DEFAULT_STROKE_WIDTH as Fo } from "./constants/Donut.es.js";
|
|
27
|
+
import { Sizes as Vo, TOUCH_TARGET as Zo } from "./constants/Sizes.es.js";
|
|
28
|
+
import ko from "./components/donuts/MultiSegmentDonut.es.js";
|
|
29
|
+
import jo from "./components/donuts/SingleSegmentDonut.es.js";
|
|
30
|
+
import Qo from "./components/ErrorBoundary.es.js";
|
|
31
|
+
import $o from "./components/Error.es.js";
|
|
32
|
+
import rr from "./components/MicroWidgetContainer.es.js";
|
|
33
|
+
import er from "./components/MiniWidgetContainer.es.js";
|
|
34
|
+
import { GlobalAccountFilter as mr } from "./components/GlobalAccountFilter.es.js";
|
|
35
|
+
import ar from "./components/Loader.es.js";
|
|
36
|
+
import { WidgetContainer as pr } from "./components/WidgetContainer.es.js";
|
|
37
|
+
import ur from "./components/ConnectWidgetPanel.es.js";
|
|
38
|
+
import Cr from "./components/ConnectDrawer.es.js";
|
|
39
|
+
import gr from "./components/CurrencyDialog.es.js";
|
|
40
|
+
import Tr from "./components/CurrencyInput.es.js";
|
|
41
41
|
import dr from "./components/ResponsiveButton.es.js";
|
|
42
|
-
import
|
|
43
|
-
import
|
|
44
|
-
import
|
|
45
|
-
import
|
|
46
|
-
import
|
|
47
|
-
import
|
|
48
|
-
import
|
|
49
|
-
import { ConnectCard as
|
|
50
|
-
import { CurrencyText as
|
|
51
|
-
import { EmptyState as
|
|
52
|
-
import { ListItemAction as
|
|
53
|
-
import { ListItemRow as
|
|
54
|
-
import { ListItemWrapper as
|
|
55
|
-
import { Select as
|
|
56
|
-
import { ToggleButtonListItem as
|
|
57
|
-
import { ToggleListItem as
|
|
58
|
-
import { analyticsSession as
|
|
59
|
-
import { getClientComponentOverrides as
|
|
42
|
+
import _r from "./components/SearchBox.es.js";
|
|
43
|
+
import Nr from "./components/SelectionBox.es.js";
|
|
44
|
+
import yr from "./components/TabContentContainer.es.js";
|
|
45
|
+
import Or from "./components/IconBacking.es.js";
|
|
46
|
+
import Wr from "./components/DataRow.es.js";
|
|
47
|
+
import Lr from "./components/ZeroState.es.js";
|
|
48
|
+
import Ur from "./components/InformationTooltip.es.js";
|
|
49
|
+
import { ConnectCard as Br } from "./components/ConnectCard.es.js";
|
|
50
|
+
import { CurrencyText as wr } from "./components/CurrencyText.es.js";
|
|
51
|
+
import { EmptyState as Mr } from "./components/EmptyState.es.js";
|
|
52
|
+
import { ListItemAction as Hr } from "./components/ListItemAction.es.js";
|
|
53
|
+
import { ListItemRow as zr } from "./components/ListItemRow.es.js";
|
|
54
|
+
import { ListItemWrapper as Zr } from "./components/ListItemWrapper.es.js";
|
|
55
|
+
import { Select as kr } from "./components/Select.es.js";
|
|
56
|
+
import { ToggleButtonListItem as jr } from "./components/listitems/ToggleButtonListItem.es.js";
|
|
57
|
+
import { ToggleListItem as Qr } from "./components/listitems/ToggleListItem.es.js";
|
|
58
|
+
import { analyticsSession as $r } from "./utils/Analytics.es.js";
|
|
59
|
+
import { getClientComponentOverrides as rt, getClientCustomizations as tt, getClientPaletteOptions as et, getClientTheme as it } from "./utils/Theme.es.js";
|
|
60
60
|
export {
|
|
61
61
|
No as ANALYTICS_EVENTS,
|
|
62
62
|
yo as CONNECTIONS_WIDGET_ID,
|
|
63
63
|
Ao as CONNECT_WIDGET_ID,
|
|
64
|
+
Oo as CONNECT_WIDGET_SOURCES,
|
|
64
65
|
i as Calendar,
|
|
65
66
|
m as CalendarSelectionTypes,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
Br as ConnectCard,
|
|
68
|
+
Cr as ConnectDrawer,
|
|
69
|
+
ur as ConnectWidgetPanel,
|
|
70
|
+
gr as CurrencyDialog,
|
|
71
|
+
Tr as CurrencyInput,
|
|
72
|
+
wr as CurrencyText,
|
|
73
|
+
bo as DEEP_LINK_TYPE,
|
|
74
|
+
Ho as DEFAULT_DONUT_SIZE,
|
|
75
|
+
Fo as DEFAULT_STROKE_WIDTH,
|
|
76
|
+
Wr as DataRow,
|
|
75
77
|
_o as DateRangeSelector,
|
|
76
78
|
co as Dialog,
|
|
77
79
|
p as Donut,
|
|
78
80
|
Eo as Drawer,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
Mr as EmptyState,
|
|
82
|
+
$o as Error,
|
|
83
|
+
Qo as ErrorBoundary,
|
|
84
|
+
mr as GlobalAccountFilter,
|
|
83
85
|
c as GlobalDataContext,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
86
|
+
T as GlobalDataProvider,
|
|
87
|
+
Lo as GlobalStore,
|
|
88
|
+
Uo as INCOME_ACCOUNT_TYPES,
|
|
89
|
+
Or as IconBacking,
|
|
90
|
+
Ur as InformationTooltip,
|
|
91
|
+
Mo as LOADING_STATUS,
|
|
92
|
+
Hr as ListItemAction,
|
|
93
|
+
zr as ListItemRow,
|
|
94
|
+
Zr as ListItemWrapper,
|
|
95
|
+
ar as Loader,
|
|
96
|
+
Wo as MemberConnectionStatus,
|
|
97
|
+
rr as MicroWidgetContainer,
|
|
98
|
+
er as MiniWidgetContainer,
|
|
99
|
+
ko as MultiSegmentDonut,
|
|
100
|
+
vo as PAYMENT_ACCOUNT_TYPES,
|
|
101
|
+
wo as RECURRENCE_COPY,
|
|
100
102
|
dr as ResponsiveButton,
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
Bo as SPENDING_ACCOUNT_TYPES,
|
|
104
|
+
_r as SearchBox,
|
|
105
|
+
kr as Select,
|
|
106
|
+
Nr as SelectionBox,
|
|
107
|
+
jo as SingleSegmentDonut,
|
|
108
|
+
Vo as Sizes,
|
|
107
109
|
a as StatusBar,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
Zo as TOUCH_TARGET,
|
|
111
|
+
yr as TabContentContainer,
|
|
112
|
+
jr as ToggleButtonListItem,
|
|
113
|
+
Qr as ToggleListItem,
|
|
114
|
+
pr as WidgetContainer,
|
|
115
|
+
d as WidgetContainerContext,
|
|
114
116
|
D as WidgetContainerProvider,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
Lr as ZeroState,
|
|
118
|
+
$r as analyticsSession,
|
|
117
119
|
r as buildDynamicCopy,
|
|
118
120
|
t as buildPluralCopy,
|
|
119
121
|
eo as formatCurrency,
|
|
120
122
|
io as formatOrdinal,
|
|
121
123
|
mo as formatPercentage,
|
|
122
124
|
no as generateEqualIntervals,
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
rt as getClientComponentOverrides,
|
|
126
|
+
tt as getClientCustomizations,
|
|
127
|
+
et as getClientPaletteOptions,
|
|
128
|
+
it as getClientTheme,
|
|
127
129
|
ao as getCurrencyCodes,
|
|
128
130
|
so as getPluralRules,
|
|
129
131
|
u as useAccountDisplayName,
|
|
@@ -132,10 +134,10 @@ export {
|
|
|
132
134
|
P as useAppConfig,
|
|
133
135
|
y as useBudgetsStore,
|
|
134
136
|
A as useCashflowStore,
|
|
135
|
-
|
|
137
|
+
O as useCategoryStore,
|
|
136
138
|
C as useCombineEvents,
|
|
137
139
|
S as useCombinePageviews,
|
|
138
|
-
|
|
140
|
+
b as useDebtStore,
|
|
139
141
|
W as useError,
|
|
140
142
|
G as useEvent,
|
|
141
143
|
L as useFinstrongStore,
|
|
@@ -157,9 +159,9 @@ export {
|
|
|
157
159
|
fo as useRepeatingTransactionEligibility,
|
|
158
160
|
$ as useScreenSize,
|
|
159
161
|
Z as useSettingsStore,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
K as useTransactionStore,
|
|
163
|
+
k as useTrendsStore,
|
|
164
|
+
q as useUserStore,
|
|
163
165
|
j as useWidgetContainerProvider,
|
|
164
166
|
lo as useWidgetHeaderStyles,
|
|
165
167
|
So as useWidgetLoadTimer
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { ApiEndpoints as c } from "../constants/ApiEndpoints.es.js";
|
|
1
2
|
import { Fetch as r } from "../utils/Fetch.es.js";
|
|
2
|
-
var
|
|
3
|
+
var s = class {
|
|
3
4
|
fetchInstance;
|
|
4
5
|
constructor(n) {
|
|
5
6
|
this.fetchInstance = new r(n, "", {
|
|
@@ -15,9 +16,10 @@ var a = class {
|
|
|
15
16
|
return console.error("Error fetching banner:", t), null;
|
|
16
17
|
}
|
|
17
18
|
};
|
|
19
|
+
markClicked = async (n) => this.fetchInstance?.put(`/${c.OFFERS}/${encodeURIComponent(n)}/clicked`, {});
|
|
18
20
|
};
|
|
19
21
|
export {
|
|
20
|
-
|
|
22
|
+
s as BannerApi
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
//# sourceMappingURL=BannerApi.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BannerApi.es.js","names":[],"sources":["../../../src/core/api/BannerApi.ts"],"sourcesContent":["import { Fetch } from '../utils'\n\nexport class BannerApi {\n fetchInstance: Fetch | null\n\n constructor(bullseyeEndpoint: string) {\n // Override headers without MD-Session-Token to avoid CORS error in bullseye\n this.fetchInstance = new Fetch(bullseyeEndpoint, '', {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n })\n }\n\n getBanner = async (userGuid: string) => {\n try {\n const path = `/banner/${userGuid}/account_widget_banner`\n return this.fetchInstance?.get(path).then((data) => data.banner) ?? {}\n } catch (error) {\n console.error('Error fetching banner:', error)\n return null\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BannerApi.es.js","names":[],"sources":["../../../src/core/api/BannerApi.ts"],"sourcesContent":["import { Fetch } from '../utils'\nimport { ApiEndpoints } from '../constants'\n\nexport class BannerApi {\n fetchInstance: Fetch | null\n\n constructor(bullseyeEndpoint: string) {\n // Override headers without MD-Session-Token to avoid CORS error in bullseye\n this.fetchInstance = new Fetch(bullseyeEndpoint, '', {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n })\n }\n\n getBanner = async (userGuid: string) => {\n try {\n const path = `/banner/${userGuid}/account_widget_banner`\n return this.fetchInstance?.get(path).then((data) => data.banner) ?? {}\n } catch (error) {\n console.error('Error fetching banner:', error)\n return null\n }\n }\n\n // Records a banner click server-side. The deep-link path needs this because it\n // never hits `redirect_url`, which is what records the click for external\n // banners. Rejections propagate so AppDataStore can report them via its\n // captureException handler instead of being silently swallowed here.\n markClicked = async (guid: string) =>\n this.fetchInstance?.put(`/${ApiEndpoints.OFFERS}/${encodeURIComponent(guid)}/clicked`, {})\n}\n"],"mappings":";;AAGA,IAAa,IAAb,MAAuB;AAAA,EACrB;AAAA,EAEA,YAAY,GAA0B;AAEpC,SAAK,gBAAgB,IAAI,EAAM,GAAkB,IAAI;AAAA,MACnD,QAAQ;AAAA,MACR,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,YAAY,OAAO,MAAqB;AACtC,QAAI;AACF,YAAM,IAAO,WAAW,CAAA;AACxB,aAAO,KAAK,eAAe,IAAI,CAAI,EAAE,KAAA,CAAM,MAAS,EAAK,MAAM,KAAK,CAAC;AAAA,IACvE,SAAS,GAAO;AACd,qBAAQ,MAAM,0BAA0B,CAAK,GACtC;AAAA,IACT;AAAA,EACF;AAAA,EAMA,cAAc,OAAO,MACnB,KAAK,eAAe,IAAI,IAAI,EAAa,MAAA,IAAU,mBAAmB,CAAI,CAAA,YAAa,CAAC,CAAC;AAC7F"}
|
|
@@ -18,6 +18,7 @@ export declare class AppDataStore {
|
|
|
18
18
|
setAppData: (appData: AppData) => void;
|
|
19
19
|
loadAppData: () => Promise<void>;
|
|
20
20
|
loadBanner: () => Promise<void>;
|
|
21
|
+
markBannerClicked: (guid: string) => Promise<void>;
|
|
21
22
|
setUser: (user: User) => User;
|
|
22
23
|
setUserCommunicationProfile: (profile: UserCommunicationProfile) => UserCommunicationProfile;
|
|
23
24
|
setUserProfile: (userProfile: UserProfile) => UserProfile;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AppDataApi as a } from "../api/AppDataApi.es.js";
|
|
2
2
|
import { BannerApi as e } from "../api/BannerApi.es.js";
|
|
3
3
|
import { makeAutoObservable as i, runInAction as o } from "mobx";
|
|
4
|
-
var
|
|
4
|
+
var c = class {
|
|
5
5
|
globalStore;
|
|
6
6
|
api = new a("/", "");
|
|
7
7
|
bannerApi = new e("/");
|
|
@@ -50,12 +50,19 @@ var l = class {
|
|
|
50
50
|
console.error("Error loading banner:", t), this.globalStore.captureException(t, { store: "AppDataStore" });
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
+
markBannerClicked = async (t) => {
|
|
54
|
+
try {
|
|
55
|
+
await this.bannerApi.markClicked(t);
|
|
56
|
+
} catch (r) {
|
|
57
|
+
console.error("Error marking banner clicked:", r), this.globalStore.captureException(r, { store: "AppDataStore" });
|
|
58
|
+
}
|
|
59
|
+
};
|
|
53
60
|
setUser = (t) => this.appData.user = t;
|
|
54
61
|
setUserCommunicationProfile = (t) => this.appData.user_communication_profile = t;
|
|
55
62
|
setUserProfile = (t) => this.appData.user_profile = t;
|
|
56
63
|
};
|
|
57
64
|
export {
|
|
58
|
-
|
|
65
|
+
c as AppDataStore
|
|
59
66
|
};
|
|
60
67
|
|
|
61
68
|
//# sourceMappingURL=AppDataStore.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppDataStore.es.js","names":[],"sources":["../../../src/core/stores/AppDataStore.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from 'mobx'\n\nimport { AppDataApi, BannerApi } from '../api'\nimport type {\n AppConfig,\n AppData,\n Banner,\n User,\n UserCommunicationProfile,\n UserProfile,\n} from '../types'\n\nimport { GlobalStore } from './GlobalStore'\n\nexport class AppDataStore {\n globalStore: GlobalStore\n api: AppDataApi = new AppDataApi('/', '')\n bannerApi: BannerApi = new BannerApi('/')\n\n appData: AppData = {} as AppData\n isAppDataLoaded: boolean = false\n banner: Banner = {}\n\n constructor(globalStore: GlobalStore) {\n this.globalStore = globalStore\n this.api = new AppDataApi(globalStore.endpoint, globalStore.sessionToken, globalStore.onError)\n\n makeAutoObservable(this)\n }\n\n get appConfig(): AppConfig {\n return this.globalStore.appConfig\n }\n\n get clientCommunicationProfile() {\n return this.appData.client_communication_profile\n }\n\n get clientInsightProfile() {\n return this.appData.client_insight_profile\n }\n\n get user() {\n return this.appData.user\n }\n\n get userCommunicationProfile() {\n return this.appData.user_communication_profile\n }\n\n get userProfile() {\n return this.appData.user_profile\n }\n\n setAppData = (appData: AppData) => {\n this.appData = appData\n this.bannerApi = new BannerApi(appData.address?.bullseye || '/')\n this.isAppDataLoaded = true\n }\n\n loadAppData = async () => {\n try {\n const appData = await this.api.getAppData()\n this.setAppData(appData)\n } catch (error) {\n console.error('Error loading app data:', error)\n this.globalStore.captureException(error, { store: 'AppDataStore' })\n }\n }\n\n loadBanner = async () => {\n try {\n const userGuid = this.user?.guid ?? null\n const banner = userGuid ? await this.bannerApi.getBanner(userGuid) : {}\n\n runInAction(() => {\n this.banner = banner\n })\n } catch (error) {\n console.error('Error loading banner:', error)\n this.globalStore.captureException(error, { store: 'AppDataStore' })\n }\n }\n\n setUser = (user: User) => (this.appData.user = user)\n\n setUserCommunicationProfile = (profile: UserCommunicationProfile) =>\n (this.appData.user_communication_profile = profile)\n\n setUserProfile = (userProfile: UserProfile) => (this.appData.user_profile = userProfile)\n}\n"],"mappings":";;;AAcA,IAAa,IAAb,MAA0B;AAAA,EACxB;AAAA,EACA,MAAkB,IAAI,EAAW,KAAK,EAAE;AAAA,EACxC,YAAuB,IAAI,EAAU,GAAG;AAAA,EAExC,UAAmB,CAAC;AAAA,EACpB,kBAA2B;AAAA,EAC3B,SAAiB,CAAC;AAAA,EAElB,YAAY,GAA0B;AACpC,SAAK,cAAc,GACnB,KAAK,MAAM,IAAI,EAAW,EAAY,UAAU,EAAY,cAAc,EAAY,OAAO,GAE7F,EAAmB,IAAI;AAAA,EACzB;AAAA,EAEA,IAAI,YAAuB;AACzB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,6BAA6B;AAC/B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,uBAAuB;AACzB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACT,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,2BAA2B;AAC7B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,cAAc;AAChB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,aAAA,CAAc,MAAqB;AACjC,SAAK,UAAU,GACf,KAAK,YAAY,IAAI,EAAU,EAAQ,SAAS,YAAY,GAAG,GAC/D,KAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,cAAc,YAAY;AACxB,QAAI;AACF,YAAM,IAAU,MAAM,KAAK,IAAI,WAAW;AAC1C,WAAK,WAAW,CAAO;AAAA,IACzB,SAAS,GAAO;AACd,cAAQ,MAAM,2BAA2B,CAAK,GAC9C,KAAK,YAAY,iBAAiB,GAAO,EAAE,OAAO,eAAe,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,aAAa,YAAY;AACvB,QAAI;AACF,YAAM,IAAW,KAAK,MAAM,QAAQ,MAC9B,IAAS,IAAW,MAAM,KAAK,UAAU,UAAU,CAAQ,IAAI,CAAC;AAEtE,MAAA,EAAA,MAAkB;AAChB,aAAK,SAAS;AAAA,MAChB,CAAC;AAAA,IACH,SAAS,GAAO;AACd,cAAQ,MAAM,yBAAyB,CAAK,GAC5C,KAAK,YAAY,iBAAiB,GAAO,EAAE,OAAO,eAAe,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,UAAA,CAAW,MAAgB,KAAK,QAAQ,OAAO;AAAA,EAE/C,8BAAA,CAA+B,MAC5B,KAAK,QAAQ,6BAA6B;AAAA,EAE7C,iBAAA,CAAkB,MAA8B,KAAK,QAAQ,eAAe;AAC9E"}
|
|
1
|
+
{"version":3,"file":"AppDataStore.es.js","names":[],"sources":["../../../src/core/stores/AppDataStore.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from 'mobx'\n\nimport { AppDataApi, BannerApi } from '../api'\nimport type {\n AppConfig,\n AppData,\n Banner,\n User,\n UserCommunicationProfile,\n UserProfile,\n} from '../types'\n\nimport { GlobalStore } from './GlobalStore'\n\nexport class AppDataStore {\n globalStore: GlobalStore\n api: AppDataApi = new AppDataApi('/', '')\n bannerApi: BannerApi = new BannerApi('/')\n\n appData: AppData = {} as AppData\n isAppDataLoaded: boolean = false\n banner: Banner = {}\n\n constructor(globalStore: GlobalStore) {\n this.globalStore = globalStore\n this.api = new AppDataApi(globalStore.endpoint, globalStore.sessionToken, globalStore.onError)\n\n makeAutoObservable(this)\n }\n\n get appConfig(): AppConfig {\n return this.globalStore.appConfig\n }\n\n get clientCommunicationProfile() {\n return this.appData.client_communication_profile\n }\n\n get clientInsightProfile() {\n return this.appData.client_insight_profile\n }\n\n get user() {\n return this.appData.user\n }\n\n get userCommunicationProfile() {\n return this.appData.user_communication_profile\n }\n\n get userProfile() {\n return this.appData.user_profile\n }\n\n setAppData = (appData: AppData) => {\n this.appData = appData\n this.bannerApi = new BannerApi(appData.address?.bullseye || '/')\n this.isAppDataLoaded = true\n }\n\n loadAppData = async () => {\n try {\n const appData = await this.api.getAppData()\n this.setAppData(appData)\n } catch (error) {\n console.error('Error loading app data:', error)\n this.globalStore.captureException(error, { store: 'AppDataStore' })\n }\n }\n\n loadBanner = async () => {\n try {\n const userGuid = this.user?.guid ?? null\n const banner = userGuid ? await this.bannerApi.getBanner(userGuid) : {}\n\n runInAction(() => {\n this.banner = banner\n })\n } catch (error) {\n console.error('Error loading banner:', error)\n this.globalStore.captureException(error, { store: 'AppDataStore' })\n }\n }\n\n // Fire-and-forget click receipt for the deep-link banner path (see BannerApi).\n markBannerClicked = async (guid: string) => {\n try {\n await this.bannerApi.markClicked(guid)\n } catch (error) {\n console.error('Error marking banner clicked:', error)\n this.globalStore.captureException(error, { store: 'AppDataStore' })\n }\n }\n\n setUser = (user: User) => (this.appData.user = user)\n\n setUserCommunicationProfile = (profile: UserCommunicationProfile) =>\n (this.appData.user_communication_profile = profile)\n\n setUserProfile = (userProfile: UserProfile) => (this.appData.user_profile = userProfile)\n}\n"],"mappings":";;;AAcA,IAAa,IAAb,MAA0B;AAAA,EACxB;AAAA,EACA,MAAkB,IAAI,EAAW,KAAK,EAAE;AAAA,EACxC,YAAuB,IAAI,EAAU,GAAG;AAAA,EAExC,UAAmB,CAAC;AAAA,EACpB,kBAA2B;AAAA,EAC3B,SAAiB,CAAC;AAAA,EAElB,YAAY,GAA0B;AACpC,SAAK,cAAc,GACnB,KAAK,MAAM,IAAI,EAAW,EAAY,UAAU,EAAY,cAAc,EAAY,OAAO,GAE7F,EAAmB,IAAI;AAAA,EACzB;AAAA,EAEA,IAAI,YAAuB;AACzB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,6BAA6B;AAC/B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,uBAAuB;AACzB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACT,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,2BAA2B;AAC7B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,cAAc;AAChB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,aAAA,CAAc,MAAqB;AACjC,SAAK,UAAU,GACf,KAAK,YAAY,IAAI,EAAU,EAAQ,SAAS,YAAY,GAAG,GAC/D,KAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,cAAc,YAAY;AACxB,QAAI;AACF,YAAM,IAAU,MAAM,KAAK,IAAI,WAAW;AAC1C,WAAK,WAAW,CAAO;AAAA,IACzB,SAAS,GAAO;AACd,cAAQ,MAAM,2BAA2B,CAAK,GAC9C,KAAK,YAAY,iBAAiB,GAAO,EAAE,OAAO,eAAe,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,aAAa,YAAY;AACvB,QAAI;AACF,YAAM,IAAW,KAAK,MAAM,QAAQ,MAC9B,IAAS,IAAW,MAAM,KAAK,UAAU,UAAU,CAAQ,IAAI,CAAC;AAEtE,MAAA,EAAA,MAAkB;AAChB,aAAK,SAAS;AAAA,MAChB,CAAC;AAAA,IACH,SAAS,GAAO;AACd,cAAQ,MAAM,yBAAyB,CAAK,GAC5C,KAAK,YAAY,iBAAiB,GAAO,EAAE,OAAO,eAAe,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EAGA,oBAAoB,OAAO,MAAiB;AAC1C,QAAI;AACF,YAAM,KAAK,UAAU,YAAY,CAAI;AAAA,IACvC,SAAS,GAAO;AACd,cAAQ,MAAM,iCAAiC,CAAK,GACpD,KAAK,YAAY,iBAAiB,GAAO,EAAE,OAAO,eAAe,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,UAAA,CAAW,MAAgB,KAAK,QAAQ,OAAO;AAAA,EAE/C,8BAAA,CAA+B,MAC5B,KAAK,QAAQ,6BAA6B;AAAA,EAE7C,iBAAA,CAAkB,MAA8B,KAAK,QAAQ,eAAe;AAC9E"}
|
|
@@ -27,8 +27,10 @@ export interface AppConfig {
|
|
|
27
27
|
userFeatures: UserFeature[];
|
|
28
28
|
}
|
|
29
29
|
export interface Banner {
|
|
30
|
+
guid?: string;
|
|
30
31
|
image_url?: string;
|
|
31
32
|
redirect_url?: string;
|
|
33
|
+
deep_link_type?: number | null;
|
|
32
34
|
}
|
|
33
35
|
interface TransactionConfig {
|
|
34
36
|
selected_account_guid?: string;
|