@mx-cartographer/experiences 9.4.22 → 9.4.24
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 +17 -2
- package/dist/common/utils/PostMessage.d.ts +51 -0
- package/dist/common/utils/PostMessage.es.js +44 -11
- package/dist/common/utils/PostMessage.es.js.map +1 -1
- package/dist/core/stores/InsightsV2Store.d.ts +23 -4
- package/dist/core/stores/InsightsV2Store.es.js +16 -7
- package/dist/core/stores/InsightsV2Store.es.js.map +1 -1
- package/dist/core/types/Insights.d.ts +2 -0
- package/dist/core/types/localization/InsightsFeedCopy.d.ts +1 -0
- package/dist/insights-v2/actionBlocks/ActionBlockLayer.es.js +15 -14
- package/dist/insights-v2/actionBlocks/ActionBlockLayer.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/transactionDetailsActions.d.ts +1 -2
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/transactionDetailsActions.es.js +8 -14
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/transactionDetailsActions.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/useTransactionDetailsBlock.es.js +9 -8
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/useTransactionDetailsBlock.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/util.d.ts +3 -0
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/util.es.js +8 -0
- package/dist/insights-v2/actionBlocks/TransactionDetailsBlock/util.es.js.map +1 -0
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionDrillDown.d.ts +2 -1
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionDrillDown.es.js +37 -34
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionDrillDown.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionHistoryBlock.es.js +89 -73
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/TransactionHistoryBlock.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/layout.d.ts +1 -1
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/layout.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/utils.d.ts +1 -1
- package/dist/insights-v2/actionBlocks/TransactionHistoryBlock/utils.es.js.map +1 -1
- package/dist/insights-v2/actionBlocks/util.d.ts +13 -0
- package/dist/insights-v2/actionBlocks/util.es.js +7 -0
- package/dist/insights-v2/actionBlocks/util.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/BarchartBlock.es.js +19 -15
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/BarchartBlock.es.js.map +1 -1
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChartBlock.es.js +15 -13
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChartBlock.es.js.map +1 -1
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/StepChartBlock.d.ts +1 -1
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/StepChartBlock.es.js.map +1 -1
- package/dist/insights-v2/components/BaseLayout.es.js +69 -62
- package/dist/insights-v2/components/BaseLayout.es.js.map +1 -1
- package/dist/insights-v2/components/SaveAnExtraCard.es.js +11 -11
- package/dist/insights-v2/components/SaveAnExtraCard.es.js.map +1 -1
- package/dist/insights-v2/mappings/actionBlocksKey.d.ts +6 -0
- package/dist/insights-v2/mappings/actionBlocksKey.es.js +11 -0
- package/dist/insights-v2/mappings/actionBlocksKey.es.js.map +1 -0
- package/dist/insights-v2/mappings/blocks.es.js +47 -46
- package/dist/insights-v2/mappings/blocks.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,32 +1,36 @@
|
|
|
1
1
|
import { useInsightsV2Store as b } from "../../../../common/context/hooks.es.js";
|
|
2
2
|
import { formatCurrency as B } from "../../../../core/utils/NumberFormatting.es.js";
|
|
3
3
|
import { BarChartV2 as C } from "../../../components/chartblocks/BarchartV2.es.js";
|
|
4
|
-
import { EmptyBarChart as
|
|
5
|
-
import { barChartVariant as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
import { EmptyBarChart as _ } from "../../../components/chartblocks/EmptyBarChart.es.js";
|
|
5
|
+
import { barChartVariant as A, buildChartData as I, buildDataSeries as T } from "./utils.es.js";
|
|
6
|
+
import { actionBlocksKey as x } from "../../../mappings/actionBlocksKey.es.js";
|
|
7
|
+
import S from "react";
|
|
8
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
9
|
+
import { useTheme as k } from "@mui/material/styles";
|
|
10
|
+
var j = ({ payload: n, beatGuid: m = "" }) => {
|
|
11
|
+
const c = k(), { openActionDrawer: s } = b(), { instance_slot: i, instance_slot_data: a } = n, { data_series: l, ariaLabel: h = "", average_amount: o = 0, legends: p = [] } = a, t = I(T(l), h), [d] = S.useState(t.length - 1), { color: u } = A(i, a, c), [f, g] = p.map((r) => r.label);
|
|
12
|
+
return t.length ? /* @__PURE__ */ e(C, {
|
|
12
13
|
amounts: {
|
|
13
|
-
average:
|
|
14
|
-
formattedAverage: B(
|
|
14
|
+
average: o,
|
|
15
|
+
formattedAverage: B(o, "0,0")
|
|
15
16
|
},
|
|
16
17
|
color: u,
|
|
17
18
|
data: t,
|
|
18
19
|
monthlyAmountLabel: f,
|
|
19
|
-
onBarClick: (r) =>
|
|
20
|
+
onBarClick: (r) => s({
|
|
20
21
|
guid: m,
|
|
21
22
|
trigger: "chartBar",
|
|
22
|
-
context: {
|
|
23
|
+
context: {
|
|
24
|
+
chartBarIndex: r,
|
|
25
|
+
block: x.TRANSCATION_HISTORY_ACTION_BLOCK
|
|
26
|
+
}
|
|
23
27
|
}),
|
|
24
|
-
selectedTabIndex:
|
|
28
|
+
selectedTabIndex: d,
|
|
25
29
|
trendAmountLabel: g
|
|
26
|
-
}) : /* @__PURE__ */
|
|
30
|
+
}) : /* @__PURE__ */ e(_, {});
|
|
27
31
|
};
|
|
28
32
|
export {
|
|
29
|
-
|
|
33
|
+
j as BarchartBlock
|
|
30
34
|
};
|
|
31
35
|
|
|
32
36
|
//# sourceMappingURL=BarchartBlock.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarchartBlock.es.js","names":[],"sources":["../../../../../src/insights-v2/blocks/ChartBlocks/BarchartBlock/BarchartBlock.tsx"],"sourcesContent":["import React from 'react'\nimport { useTheme } from '@mui/material/styles'\n\nimport { formatCurrency, useInsightsV2Store } from '../../../../common'\nimport type { DataSeries, DrilldownPayload } from '../../../../core'\nimport type { BarChartBlockData } from '../../../../core/types/InsightsInstanceSlotData'\n\nimport { BarChartV2 } from '../../../components/chartblocks/BarchartV2'\nimport { EmptyBarChart } from '../../../components/chartblocks/EmptyBarChart'\n\nimport type { BlockProps } from '../../types'\n\nimport { barChartVariant, buildChartData, buildDataSeries } from './utils'\n\nexport const BarchartBlock = ({ payload, beatGuid = '' }: BlockProps<BarChartBlockData>) => {\n const theme = useTheme()\n const { openActionDrawer } = useInsightsV2Store()\n const { instance_slot, instance_slot_data } = payload\n const { data_series, ariaLabel = '', average_amount = 0, legends = [] } = instance_slot_data\n const chartData = buildChartData(buildDataSeries(data_series as DataSeries), ariaLabel)\n const [selectedTabIndex] = React.useState(chartData.length - 1)\n const { color } = barChartVariant(instance_slot, instance_slot_data, theme)\n\n const [monthlyAmountLabel, trendAmountLabel] = legends.map((legend) => legend.label)\n\n return chartData.length ? (\n <BarChartV2\n amounts={{\n average: average_amount,\n formattedAverage: formatCurrency(average_amount, '0,0'),\n }}\n color={color}\n data={chartData}\n monthlyAmountLabel={monthlyAmountLabel}\n onBarClick={(index) =>\n openActionDrawer({\n guid: beatGuid,\n trigger: 'chartBar',\n context: {
|
|
1
|
+
{"version":3,"file":"BarchartBlock.es.js","names":[],"sources":["../../../../../src/insights-v2/blocks/ChartBlocks/BarchartBlock/BarchartBlock.tsx"],"sourcesContent":["import React from 'react'\nimport { useTheme } from '@mui/material/styles'\n\nimport { formatCurrency, useInsightsV2Store } from '../../../../common'\nimport type { DataSeries, DrilldownPayload } from '../../../../core'\nimport type { BarChartBlockData } from '../../../../core/types/InsightsInstanceSlotData'\n\nimport { BarChartV2 } from '../../../components/chartblocks/BarchartV2'\nimport { EmptyBarChart } from '../../../components/chartblocks/EmptyBarChart'\n\nimport type { BlockProps } from '../../types'\n\nimport { barChartVariant, buildChartData, buildDataSeries } from './utils'\nimport { actionBlocksKey } from '../../../mappings/actionBlocksKey'\n\nexport const BarchartBlock = ({ payload, beatGuid = '' }: BlockProps<BarChartBlockData>) => {\n const theme = useTheme()\n const { openActionDrawer } = useInsightsV2Store()\n const { instance_slot, instance_slot_data } = payload\n const { data_series, ariaLabel = '', average_amount = 0, legends = [] } = instance_slot_data\n const chartData = buildChartData(buildDataSeries(data_series as DataSeries), ariaLabel)\n const [selectedTabIndex] = React.useState(chartData.length - 1)\n const { color } = barChartVariant(instance_slot, instance_slot_data, theme)\n\n const [monthlyAmountLabel, trendAmountLabel] = legends.map((legend) => legend.label)\n\n return chartData.length ? (\n <BarChartV2\n amounts={{\n average: average_amount,\n formattedAverage: formatCurrency(average_amount, '0,0'),\n }}\n color={color}\n data={chartData}\n monthlyAmountLabel={monthlyAmountLabel}\n onBarClick={(index) =>\n openActionDrawer({\n guid: beatGuid,\n trigger: 'chartBar',\n context: {\n chartBarIndex: index,\n block: actionBlocksKey.TRANSCATION_HISTORY_ACTION_BLOCK,\n } satisfies DrilldownPayload,\n })\n }\n selectedTabIndex={selectedTabIndex}\n trendAmountLabel={trendAmountLabel}\n />\n ) : (\n <EmptyBarChart />\n )\n}\n"],"mappings":";;;;;;;;;AAeA,IAAa,IAAA,CAAiB,EAAE,SAAA,GAAS,UAAA,IAAW,GAAA,MAAwC;AAC1F,QAAM,IAAQ,EAAS,GACjB,EAAE,kBAAA,EAAA,IAAqB,EAAmB,GAC1C,EAAE,eAAA,GAAe,oBAAA,EAAA,IAAuB,GACxC,EAAE,aAAA,GAAa,WAAA,IAAY,IAAI,gBAAA,IAAiB,GAAG,SAAA,IAAU,CAAC,EAAA,IAAM,GACpE,IAAY,EAAe,EAAgB,CAAyB,GAAG,CAAS,GAChF,CAAC,CAAA,IAAoB,EAAM,SAAS,EAAU,SAAS,CAAC,GACxD,EAAE,OAAA,EAAA,IAAU,EAAgB,GAAe,GAAoB,CAAK,GAEpE,CAAC,GAAoB,CAAA,IAAoB,EAAQ,IAAA,CAAK,MAAW,EAAO,KAAK;AAEnF,SAAO,EAAU,SACf,gBAAA,EAAC,GAAD;AAAA,IACE,SAAS;AAAA,MACP,SAAS;AAAA,MACT,kBAAkB,EAAe,GAAgB,KAAK;AAAA,IACxD;AAAA,IACO,OAAA;AAAA,IACP,MAAM;AAAA,IACc,oBAAA;AAAA,IACpB,YAAA,CAAa,MACX,EAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,QACP,eAAe;AAAA,QACf,OAAO,EAAgB;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,IAEe,kBAAA;AAAA,IACA,kBAAA;AAAA,EACnB,CAAA,IAED,gBAAA,EAAC,GAAD,CAAgB,CAAA;AAEpB"}
|
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
import { useInsightsV2Store as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { useInsightsV2Store as B } from "../../../../common/context/hooks.es.js";
|
|
2
|
+
import { actionBlocksKey as C } from "../../../mappings/actionBlocksKey.es.js";
|
|
3
|
+
import { DoubleBarChart as b } from "../../../components/chartblocks/DoubleBarChart.es.js";
|
|
4
|
+
import { buildComparisonSeries as d } from "./comparisonUtils.es.js";
|
|
5
|
+
import { getLayoutConfig as g } from "./layout.es.js";
|
|
6
|
+
import { jsx as h } from "react/jsx-runtime";
|
|
7
|
+
import { useTheme as I } from "@mui/material/styles";
|
|
8
|
+
var y = ({ payload: { instance_slot: o, instance_slot_data: r, widget_type: t }, beatGuid: e = "" }) => {
|
|
9
|
+
const a = I(), { openActionDrawer: i } = B(), { variant: n } = o, { ariaLabel: s = "", data_series: m, legends: c } = r, l = d(m, s), p = g(a, n)?.color ?? [];
|
|
10
|
+
return /* @__PURE__ */ h(b, {
|
|
10
11
|
bars: l,
|
|
11
12
|
colors: p,
|
|
12
13
|
isMini: t === "mini",
|
|
13
14
|
legends: c,
|
|
14
|
-
onBarClick: (
|
|
15
|
+
onBarClick: (f, u) => i({
|
|
15
16
|
guid: e,
|
|
16
17
|
trigger: "chartBar",
|
|
17
18
|
context: {
|
|
18
|
-
chartBarIndex:
|
|
19
|
-
tabIndex:
|
|
19
|
+
chartBarIndex: f,
|
|
20
|
+
tabIndex: u,
|
|
21
|
+
block: C.TRANSCATION_HISTORY_ACTION_BLOCK
|
|
20
22
|
}
|
|
21
23
|
})
|
|
22
24
|
});
|
|
23
25
|
};
|
|
24
26
|
export {
|
|
25
|
-
|
|
27
|
+
y as DoubleBarChartBlock
|
|
26
28
|
};
|
|
27
29
|
|
|
28
30
|
//# sourceMappingURL=DoubleBarChartBlock.es.js.map
|
package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChartBlock.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoubleBarChartBlock.es.js","names":[],"sources":["../../../../../src/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChartBlock.tsx"],"sourcesContent":["import { useTheme } from '@mui/material/styles'\n\nimport { useInsightsV2Store } from '../../../../common'\nimport type { DataSeries, DrilldownPayload } from '../../../../core'\nimport { DoubleBarChart } from '../../../components/chartblocks/DoubleBarChart'\n\nimport type { BlockProps } from '../../types'\n\nimport { buildComparisonSeries } from './comparisonUtils'\nimport { getLayoutConfig } from './layout'\n\n/**\n * Card block for the double-bar chart. Mirrors BarchartBlock: it builds the shaped series\n * (buildComparisonSeries) and resolves the card palette (getLayoutConfig), then renders the reusable\n * DoubleBarChart and injects the card click behavior \\u2014 open the shared drawer scoped to this beat\n * (chartBarIndex = clicked column, tabIndex = clicked sub-series).\n */\nexport const DoubleBarChartBlock = ({\n payload: { instance_slot, instance_slot_data, widget_type },\n beatGuid = '',\n}: BlockProps) => {\n const theme = useTheme()\n const { openActionDrawer } = useInsightsV2Store()\n const { variant } = instance_slot\n const { ariaLabel = '', data_series, legends } = instance_slot_data\n const bars = buildComparisonSeries(data_series as DataSeries, ariaLabel)\n // getLayoutConfig returns undefined for an unknown/unsupported variant; fall back to an empty\n // palette so an unregistered beat can't throw on mount.\n const colors = getLayoutConfig(theme, variant)?.color ?? []\n\n return (\n <DoubleBarChart\n bars={bars}\n colors={colors}\n isMini={widget_type === 'mini'}\n legends={legends}\n onBarClick={(columnIndex, subIndex) =>\n openActionDrawer({\n guid: beatGuid,\n trigger: 'chartBar',\n context: {
|
|
1
|
+
{"version":3,"file":"DoubleBarChartBlock.es.js","names":[],"sources":["../../../../../src/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChartBlock.tsx"],"sourcesContent":["import { useTheme } from '@mui/material/styles'\n\nimport { useInsightsV2Store } from '../../../../common'\nimport type { DataSeries, DrilldownPayload } from '../../../../core'\nimport { DoubleBarChart } from '../../../components/chartblocks/DoubleBarChart'\n\nimport type { BlockProps } from '../../types'\n\nimport { buildComparisonSeries } from './comparisonUtils'\nimport { getLayoutConfig } from './layout'\nimport { actionBlocksKey } from '../../../mappings/actionBlocksKey'\n\n/**\n * Card block for the double-bar chart. Mirrors BarchartBlock: it builds the shaped series\n * (buildComparisonSeries) and resolves the card palette (getLayoutConfig), then renders the reusable\n * DoubleBarChart and injects the card click behavior \\u2014 open the shared drawer scoped to this beat\n * (chartBarIndex = clicked column, tabIndex = clicked sub-series).\n */\nexport const DoubleBarChartBlock = ({\n payload: { instance_slot, instance_slot_data, widget_type },\n beatGuid = '',\n}: BlockProps) => {\n const theme = useTheme()\n const { openActionDrawer } = useInsightsV2Store()\n const { variant } = instance_slot\n const { ariaLabel = '', data_series, legends } = instance_slot_data\n const bars = buildComparisonSeries(data_series as DataSeries, ariaLabel)\n // getLayoutConfig returns undefined for an unknown/unsupported variant; fall back to an empty\n // palette so an unregistered beat can't throw on mount.\n const colors = getLayoutConfig(theme, variant)?.color ?? []\n\n return (\n <DoubleBarChart\n bars={bars}\n colors={colors}\n isMini={widget_type === 'mini'}\n legends={legends}\n onBarClick={(columnIndex, subIndex) =>\n openActionDrawer({\n guid: beatGuid,\n trigger: 'chartBar',\n context: {\n chartBarIndex: columnIndex,\n tabIndex: subIndex,\n block: actionBlocksKey.TRANSCATION_HISTORY_ACTION_BLOCK,\n } satisfies DrilldownPayload,\n })\n }\n />\n )\n}\n"],"mappings":";;;;;;;AAkBA,IAAa,IAAA,CAAuB,EAClC,SAAS,EAAE,eAAA,GAAe,oBAAA,GAAoB,aAAA,EAAA,GAC9C,UAAA,IAAW,GAAA,MACK;AAChB,QAAM,IAAQ,EAAS,GACjB,EAAE,kBAAA,EAAA,IAAqB,EAAmB,GAC1C,EAAE,SAAA,EAAA,IAAY,GACd,EAAE,WAAA,IAAY,IAAI,aAAA,GAAa,SAAA,EAAA,IAAY,GAC3C,IAAO,EAAsB,GAA2B,CAAS,GAGjE,IAAS,EAAgB,GAAO,CAAO,GAAG,SAAS,CAAC;AAE1D,SACE,gBAAA,EAAC,GAAD;AAAA,IACQ,MAAA;AAAA,IACE,QAAA;AAAA,IACR,QAAQ,MAAgB;AAAA,IACf,SAAA;AAAA,IACT,YAAA,CAAa,GAAa,MACxB,EAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,QACP,eAAe;AAAA,QACf,UAAU;AAAA,QACV,OAAO,EAAgB;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EAEJ,CAAA;AAEL"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { StepChartBlockData } from '../../../../core/types/InsightsInstanceSlotData';
|
|
2
|
-
import { BlockProps } from '
|
|
2
|
+
import { BlockProps } from '../../types';
|
|
3
3
|
declare const StepChartBlock: ({ payload }: BlockProps<StepChartBlockData>) => import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
export default StepChartBlock;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepChartBlock.es.js","names":[],"sources":["../../../../../src/insights-v2/blocks/ChartBlocks/StepChartBlock/StepChartBlock.tsx"],"sourcesContent":["import Stack from '@mui/material/Stack'\n\nimport type { StepChartBlockData } from '../../../../core/types/InsightsInstanceSlotData'\n\nimport type { BlockProps } from '
|
|
1
|
+
{"version":3,"file":"StepChartBlock.es.js","names":[],"sources":["../../../../../src/insights-v2/blocks/ChartBlocks/StepChartBlock/StepChartBlock.tsx"],"sourcesContent":["import Stack from '@mui/material/Stack'\n\nimport type { StepChartBlockData } from '../../../../core/types/InsightsInstanceSlotData'\n\nimport type { BlockProps } from '../../types'\n\nimport { variants } from '.'\n\nconst StepChartBlock = ({ payload }: BlockProps<StepChartBlockData>) => {\n const {\n instance_slot: { variant },\n instance_slot_data,\n } = payload\n\n const Variant = variants[variant as keyof typeof variants]\n\n return (\n <Stack sx={{ p: 16 }}>\n <Variant slotData={instance_slot_data} />\n </Stack>\n )\n}\n\nexport default StepChartBlock\n"],"mappings":";;;AAQA,IAAM,IAAA,CAAkB,EAAE,SAAA,EAAA,MAA8C;AACtE,QAAM,EACJ,eAAe,EAAE,SAAA,EAAA,GACjB,oBAAA,EAAA,IACE,GAEE,IAAU,EAAS,CAAA;AAEzB,SACE,gBAAA,EAAC,GAAD;AAAA,IAAO,IAAI,EAAE,GAAG,GAAG;AAAA,IACjB,UAAA,gBAAA,EAAC,GAAD,EAAS,UAAU,EAAqB,CAAA;AAAA,EACnC,CAAA;AAEX"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import { useGlobalCopyStore as
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
1
|
+
import { useAppConfig as B, useGlobalCopyStore as D, useInsightsV2Store as L } from "../../common/context/hooks.es.js";
|
|
2
|
+
import { sendBeatCta as O } from "../../common/utils/PostMessage.es.js";
|
|
3
|
+
import { blocks as T, hasDrawerBlock as F } from "../mappings/blocks.es.js";
|
|
4
|
+
import A from "./Footer.es.js";
|
|
5
|
+
import { BeatActionsProvider as I } from "../beatActions.es.js";
|
|
6
|
+
import E from "./Header.es.js";
|
|
7
|
+
import { FeedbackBar as H } from "./FeedbackBar.es.js";
|
|
8
|
+
import M from "./FeedbackDialog.es.js";
|
|
9
|
+
import { DismissInsightDialog as G } from "./DismissInsightDialog.es.js";
|
|
10
|
+
import { HiddenConfirmationCard as R } from "./HiddenConfirmationCard.es.js";
|
|
11
|
+
import { ObsolesceBanner as j } from "./ObsolesceBanner.es.js";
|
|
12
|
+
import { ActionBlockLayer as z } from "../actionBlocks/ActionBlockLayer.es.js";
|
|
13
|
+
import { useBeatFeedbackFlow as N } from "../hooks/useBeatFeedbackFlow.es.js";
|
|
14
|
+
import { observer as U } from "mobx-react-lite";
|
|
14
15
|
import m from "@mui/material/Stack";
|
|
15
16
|
import d from "@mui/material/Button";
|
|
16
|
-
import { ChevronRight as
|
|
17
|
-
import { Fragment as
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
var
|
|
17
|
+
import { ChevronRight as V } from "@mxenabled/mx-icons";
|
|
18
|
+
import { Fragment as P, jsx as o, jsxs as t } from "react/jsx-runtime";
|
|
19
|
+
import W from "@mui/material/Box";
|
|
20
|
+
import X from "@mui/material/Card";
|
|
21
|
+
var Y = {}, q = {
|
|
21
22
|
position: "absolute",
|
|
22
23
|
top: 0,
|
|
23
24
|
left: 0,
|
|
@@ -26,23 +27,29 @@ var z = {}, G = {
|
|
|
26
27
|
backgroundColor: "background.default",
|
|
27
28
|
opacity: 0.7,
|
|
28
29
|
zIndex: 1
|
|
29
|
-
},
|
|
30
|
-
const { openCtaDrawer:
|
|
31
|
-
if (!r ||
|
|
32
|
-
const { instance_slot:
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
}, be = U(({ beat: i, beatActions: b = Y, obsolete: s }) => {
|
|
31
|
+
const { openCtaDrawer: h } = L(), y = D(), { is_mobile_webview: g, clientConfig: k } = B(), e = N(i, b), r = i.insights_payload;
|
|
32
|
+
if (!r || e.cardState === "dismissed") return null;
|
|
33
|
+
const { instance_slot: v, primary_cta: n, secondary_cta: a, subtitle: C, widget_type: _ } = r, { block: x } = v, p = (S, w) => {
|
|
34
|
+
F(S) ? h(i.guid, w) : O(i, {
|
|
35
|
+
isMobileWebview: g,
|
|
36
|
+
webviewScheme: k?.master?.ui_message_webview_url_scheme,
|
|
37
|
+
userGuid: i.user_guid
|
|
38
|
+
});
|
|
39
|
+
}, u = T[x], f = _ === "mini", l = y.insights_feed?.general, c = s?.state === "not_refreshable" && !i.dismissed_at && !!l;
|
|
40
|
+
return /* @__PURE__ */ o(I, {
|
|
41
|
+
value: e.wrappedActions,
|
|
35
42
|
children: /* @__PURE__ */ t(m, {
|
|
36
43
|
sx: { mb: 16 },
|
|
37
44
|
children: [
|
|
38
|
-
|
|
39
|
-
onClose:
|
|
40
|
-
onLeaveFeedback:
|
|
41
|
-
onUndo:
|
|
42
|
-
}) : /* @__PURE__ */ t(
|
|
45
|
+
e.cardState === "confirming" ? /* @__PURE__ */ o(R, {
|
|
46
|
+
onClose: e.collapseConfirmation,
|
|
47
|
+
onLeaveFeedback: e.openHideSurvey,
|
|
48
|
+
onUndo: e.undoDismiss
|
|
49
|
+
}) : /* @__PURE__ */ t(P, { children: [s && l && /* @__PURE__ */ o(j, {
|
|
43
50
|
...s,
|
|
44
51
|
copy: l
|
|
45
|
-
}), /* @__PURE__ */ t(
|
|
52
|
+
}), /* @__PURE__ */ t(X, {
|
|
46
53
|
inert: c,
|
|
47
54
|
sx: { ...c && {
|
|
48
55
|
position: "relative",
|
|
@@ -50,13 +57,13 @@ var z = {}, G = {
|
|
|
50
57
|
pointerEvents: "none"
|
|
51
58
|
} },
|
|
52
59
|
children: [
|
|
53
|
-
c && /* @__PURE__ */
|
|
54
|
-
/* @__PURE__ */
|
|
60
|
+
c && /* @__PURE__ */ o(W, { sx: q }),
|
|
61
|
+
/* @__PURE__ */ o(E, {
|
|
55
62
|
isMini: f,
|
|
56
|
-
subtitle:
|
|
63
|
+
subtitle: C,
|
|
57
64
|
title: i.title
|
|
58
65
|
}),
|
|
59
|
-
u && /* @__PURE__ */
|
|
66
|
+
u && /* @__PURE__ */ o(u, {
|
|
60
67
|
beatGuid: i.guid,
|
|
61
68
|
payload: r
|
|
62
69
|
}),
|
|
@@ -68,11 +75,11 @@ var z = {}, G = {
|
|
|
68
75
|
pr: 16,
|
|
69
76
|
pt: 12
|
|
70
77
|
},
|
|
71
|
-
children: [/* @__PURE__ */
|
|
78
|
+
children: [/* @__PURE__ */ o("div", {
|
|
72
79
|
dangerouslySetInnerHTML: { __html: i.html_description },
|
|
73
80
|
style: { paddingLeft: 4 }
|
|
74
|
-
}), i?.in_description_cta && /* @__PURE__ */
|
|
75
|
-
endIcon: /* @__PURE__ */
|
|
81
|
+
}), i?.in_description_cta && /* @__PURE__ */ o(d, {
|
|
82
|
+
endIcon: /* @__PURE__ */ o(V, {}),
|
|
76
83
|
onClick: () => {
|
|
77
84
|
},
|
|
78
85
|
sx: {
|
|
@@ -89,48 +96,48 @@ var z = {}, G = {
|
|
|
89
96
|
pb: 16,
|
|
90
97
|
px: 16
|
|
91
98
|
},
|
|
92
|
-
children: [/* @__PURE__ */
|
|
93
|
-
onClick: () => n.block
|
|
99
|
+
children: [/* @__PURE__ */ o(d, {
|
|
100
|
+
onClick: () => p(n.block, "primaryCta"),
|
|
94
101
|
variant: "outlined",
|
|
95
102
|
children: n.label
|
|
96
|
-
}), a?.label && /* @__PURE__ */
|
|
103
|
+
}), a?.label && /* @__PURE__ */ o(d, {
|
|
97
104
|
color: "secondary",
|
|
98
|
-
onClick: () => a.block
|
|
105
|
+
onClick: () => p(a.block, "secondaryCta"),
|
|
99
106
|
children: a.label
|
|
100
107
|
})]
|
|
101
108
|
}),
|
|
102
|
-
/* @__PURE__ */
|
|
103
|
-
onTellUsMore:
|
|
104
|
-
show:
|
|
109
|
+
/* @__PURE__ */ o(H, {
|
|
110
|
+
onTellUsMore: e.openRatingSurvey,
|
|
111
|
+
show: e.isFeedbackBarShown
|
|
105
112
|
})
|
|
106
113
|
]
|
|
107
114
|
})] }),
|
|
108
|
-
/* @__PURE__ */
|
|
109
|
-
/* @__PURE__ */
|
|
110
|
-
isOpen:
|
|
111
|
-
onClose:
|
|
112
|
-
onDismiss:
|
|
115
|
+
/* @__PURE__ */ o(z, { beat: i }),
|
|
116
|
+
/* @__PURE__ */ o(G, {
|
|
117
|
+
isOpen: e.isDismissOpen,
|
|
118
|
+
onClose: e.closeDismissDialog,
|
|
119
|
+
onDismiss: e.confirmDismiss
|
|
113
120
|
}),
|
|
114
|
-
|
|
115
|
-
characterLimitLabel:
|
|
116
|
-
closeAriaLabel:
|
|
121
|
+
e.isSurveyOpen && /* @__PURE__ */ o(M, {
|
|
122
|
+
characterLimitLabel: e.survey.characterLimitLabel,
|
|
123
|
+
closeAriaLabel: e.survey.closeAriaLabel,
|
|
117
124
|
isOpen: !0,
|
|
118
|
-
onBackClick:
|
|
119
|
-
onClose:
|
|
120
|
-
onSubmit:
|
|
121
|
-
onTextInputFocus:
|
|
122
|
-
options:
|
|
123
|
-
primaryText:
|
|
124
|
-
secondaryText:
|
|
125
|
-
title:
|
|
125
|
+
onBackClick: e.feedbackDialogCallbacks.onBackClick,
|
|
126
|
+
onClose: e.closeSurvey,
|
|
127
|
+
onSubmit: e.submitSurvey,
|
|
128
|
+
onTextInputFocus: e.feedbackDialogCallbacks.onTextInputFocus,
|
|
129
|
+
options: e.survey.options,
|
|
130
|
+
primaryText: e.survey.submitText,
|
|
131
|
+
secondaryText: e.survey.backText,
|
|
132
|
+
title: e.survey.title
|
|
126
133
|
}),
|
|
127
|
-
|
|
134
|
+
e.cardState === "visible" && r.footer && /* @__PURE__ */ o(A, { footer: r.footer })
|
|
128
135
|
]
|
|
129
136
|
})
|
|
130
137
|
});
|
|
131
138
|
});
|
|
132
139
|
export {
|
|
133
|
-
|
|
140
|
+
be as default
|
|
134
141
|
};
|
|
135
142
|
|
|
136
143
|
//# sourceMappingURL=BaseLayout.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseLayout.es.js","names":[],"sources":["../../../src/insights-v2/components/BaseLayout.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { blocks } from '../mappings/blocks'\n\nimport Footer from './Footer'\nimport Header from './Header'\nimport FeedbackBar from './FeedbackBar'\nimport FeedbackDialog from './FeedbackDialog'\nimport DismissInsightDialog from './DismissInsightDialog'\nimport HiddenConfirmationCard from './HiddenConfirmationCard'\nimport { ObsolesceBanner, type ObsolesceBannerState } from './ObsolesceBanner'\nimport { useGlobalCopyStore, useInsightsV2Store } from '../../common'\nimport type { Beat } from '../../core'\nimport { BeatActionsProvider, type BeatActions } from '../beatActions'\nimport { ActionBlockLayer } from '../actionBlocks/ActionBlockLayer'\nimport { useBeatFeedbackFlow } from '../hooks/useBeatFeedbackFlow'\n\nexport interface ObsoleteState {\n state: ObsolesceBannerState\n onRefresh: () => void\n onDismiss: () => void\n}\n\ninterface BaseLayoutProps {\n beat: Beat\n beatActions?: BeatActions\n obsolete?: ObsoleteState\n}\n\nconst NO_BEAT_ACTIONS: BeatActions = {}\n\nconst OBSOLETE_OVERLAY_SX = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'background.default',\n opacity: 0.7,\n zIndex: 1,\n} as const\n\nconst BaseLayout = observer(\n ({ beat, beatActions = NO_BEAT_ACTIONS, obsolete }: BaseLayoutProps) => {\n const { openCtaDrawer } = useInsightsV2Store()\n const copy = useGlobalCopyStore()\n const flow = useBeatFeedbackFlow(beat, beatActions)\n\n const insights_payload = beat.insights_payload\n\n if (!insights_payload) return null\n if (flow.cardState === 'dismissed') return null\n\n const { instance_slot, primary_cta, secondary_cta, subtitle, widget_type } = insights_payload\n const { block } = instance_slot\n\n const Block = blocks[block as keyof typeof blocks]\n\n const isMini = widget_type === 'mini'\n const obsoleteCopy = copy.insights_feed?.general\n const isObsoleteDimmed =\n obsolete?.state === 'not_refreshable' && !beat.dismissed_at && !!obsoleteCopy\n\n return (\n <BeatActionsProvider value={flow.wrappedActions}>\n <Stack sx={{ mb: 16 }}>\n {flow.cardState === 'confirming' ? (\n <HiddenConfirmationCard\n onClose={flow.collapseConfirmation}\n onLeaveFeedback={flow.openHideSurvey}\n onUndo={flow.undoDismiss}\n />\n ) : (\n <>\n {obsolete && obsoleteCopy && <ObsolesceBanner {...obsolete} copy={obsoleteCopy} />}\n <Card\n inert={isObsoleteDimmed}\n sx={{\n ...(isObsoleteDimmed && {\n position: 'relative',\n zIndex: 2,\n pointerEvents: 'none',\n }),\n }}\n >\n {isObsoleteDimmed && <Box sx={OBSOLETE_OVERLAY_SX} />}\n <Header isMini={isMini} subtitle={subtitle} title={beat.title} />\n {Block && <Block beatGuid={beat.guid} payload={insights_payload} />}\n\n <Stack sx={{ gap: 6, pb: 16, pl: 12, pr: 16, pt: 12 }}>\n <div\n dangerouslySetInnerHTML={{\n __html: beat.html_description as string,\n }}\n style={{ paddingLeft: 4 }}\n />\n {beat?.in_description_cta && (\n <Button\n endIcon={<ChevronRight />}\n onClick={() => {}}\n sx={{ height: 24, p: 4, width: 'max-content' }}\n >\n {beat.in_description_cta}\n </Button>\n )}\n </Stack>\n\n {!isMini && primary_cta?.label && (\n <Stack sx={{ gap: 8, pb: 16, px: 16 }}>\n <Button\n onClick={() => primary_cta.block && openCtaDrawer(beat.guid, 'primaryCta')}\n variant=\"outlined\"\n >\n {primary_cta.label}\n </Button>\n {secondary_cta?.label && (\n <Button\n color=\"secondary\"\n onClick={() =>\n secondary_cta.block && openCtaDrawer(beat.guid, 'secondaryCta')\n }\n >\n {secondary_cta.label}\n </Button>\n )}\n </Stack>\n )}\n\n <FeedbackBar onTellUsMore={flow.openRatingSurvey} show={flow.isFeedbackBarShown} />\n </Card>\n </>\n )}\n\n <ActionBlockLayer beat={beat} />\n\n <DismissInsightDialog\n isOpen={flow.isDismissOpen}\n onClose={flow.closeDismissDialog}\n onDismiss={flow.confirmDismiss}\n />\n\n {flow.isSurveyOpen && (\n <FeedbackDialog\n characterLimitLabel={flow.survey.characterLimitLabel}\n closeAriaLabel={flow.survey.closeAriaLabel}\n isOpen={true}\n onBackClick={flow.feedbackDialogCallbacks.onBackClick}\n onClose={flow.closeSurvey}\n onSubmit={flow.submitSurvey}\n onTextInputFocus={flow.feedbackDialogCallbacks.onTextInputFocus}\n options={flow.survey.options}\n primaryText={flow.survey.submitText}\n secondaryText={flow.survey.backText}\n title={flow.survey.title}\n />\n )}\n\n {flow.cardState === 'visible' && insights_payload.footer && (\n <Footer footer={insights_payload.footer} />\n )}\n </Stack>\n </BeatActionsProvider>\n )\n },\n)\n\nexport default BaseLayout\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoCA,IAAM,IAA+B,CAAC,GAEhC,IAAsB;AAAA,EAC1B,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AACV,GAEM,KAAa,EAAA,CAChB,EAAE,MAAA,GAAM,aAAA,IAAc,GAAiB,UAAA,EAAA,MAAgC;AACtE,QAAM,EAAE,eAAA,EAAA,IAAkB,EAAmB,GACvC,IAAO,EAAmB,GAC1B,IAAO,EAAoB,GAAM,CAAW,GAE5C,IAAmB,EAAK;AAG9B,MADI,CAAC,KACD,EAAK,cAAc,YAAa,QAAO;AAE3C,QAAM,EAAE,eAAA,GAAe,aAAA,GAAa,eAAA,GAAe,UAAA,GAAU,aAAA,EAAA,IAAgB,GACvE,EAAE,OAAA,EAAA,IAAU,GAEZ,IAAQ,EAAO,CAAA,GAEf,IAAS,MAAgB,QACzB,IAAe,EAAK,eAAe,SACnC,IACJ,GAAU,UAAU,qBAAqB,CAAC,EAAK,gBAAgB,CAAC,CAAC;AAEnE,SACE,gBAAA,EAAC,GAAD;AAAA,IAAqB,OAAO,EAAK;AAAA,IAC/B,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAO,IAAI,EAAE,IAAI,GAAG;AAAA,MAApB,UAAA;AAAA,QACG,EAAK,cAAc,eAClB,gBAAA,EAAC,GAAD;AAAA,UACE,SAAS,EAAK;AAAA,UACd,iBAAiB,EAAK;AAAA,UACtB,QAAQ,EAAK;AAAA,QACd,CAAA,IAED,gBAAA,EAAA,GAAA,EAAA,UAAA,CACG,KAAY,KAAgB,gBAAA,EAAC,GAAD;AAAA,UAAiB,GAAI;AAAA,UAAU,MAAM;AAAA,QAAe,CAAA,GACjF,gBAAA,EAAC,GAAD;AAAA,UACE,OAAO;AAAA,UACP,IAAI,EACF,GAAI,KAAoB;AAAA,YACtB,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,eAAe;AAAA,UACjB,EACF;AAAA,UARF,UAAA;AAAA,YAUG,KAAoB,gBAAA,EAAC,GAAD,EAAK,IAAI,EAAsB,CAAA;AAAA,YACpD,gBAAA,EAAC,GAAD;AAAA,cAAgB,QAAA;AAAA,cAAkB,UAAA;AAAA,cAAU,OAAO,EAAK;AAAA,YAAQ,CAAA;AAAA,YAC/D,KAAS,gBAAA,EAAC,GAAD;AAAA,cAAO,UAAU,EAAK;AAAA,cAAM,SAAS;AAAA,YAAmB,CAAA;AAAA,YAElE,gBAAA,EAAC,GAAD;AAAA,cAAO,IAAI;AAAA,gBAAE,KAAK;AAAA,gBAAG,IAAI;AAAA,gBAAI,IAAI;AAAA,gBAAI,IAAI;AAAA,gBAAI,IAAI;AAAA,cAAG;AAAA,cAApD,UAAA,CACE,gBAAA,EAAC,OAAD;AAAA,gBACE,yBAAyB,EACvB,QAAQ,EAAK,iBACf;AAAA,gBACA,OAAO,EAAE,aAAa,EAAE;AAAA,cACzB,CAAA,GACA,GAAM,sBACL,gBAAA,EAAC,GAAD;AAAA,gBACE,SAAS,gBAAA,EAAC,GAAD,CAAe,CAAA;AAAA,gBACxB,SAAA,MAAe;AAAA,gBAAC;AAAA,gBAChB,IAAI;AAAA,kBAAE,QAAQ;AAAA,kBAAI,GAAG;AAAA,kBAAG,OAAO;AAAA,gBAAc;AAAA,gBAE5C,UAAA,EAAK;AAAA,cACA,CAAA,CAEL;AAAA;YAEN,CAAC,KAAU,GAAa,SACvB,gBAAA,EAAC,GAAD;AAAA,cAAO,IAAI;AAAA,gBAAE,KAAK;AAAA,gBAAG,IAAI;AAAA,gBAAI,IAAI;AAAA,cAAG;AAAA,cAApC,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,gBACE,SAAA,MAAe,EAAY,SAAS,EAAc,EAAK,MAAM,YAAY;AAAA,gBACzE,SAAQ;AAAA,gBAEP,UAAA,EAAY;AAAA,cACP,CAAA,GACP,GAAe,SACd,gBAAA,EAAC,GAAD;AAAA,gBACE,OAAM;AAAA,gBACN,SAAA,MACE,EAAc,SAAS,EAAc,EAAK,MAAM,cAAc;AAAA,gBAG/D,UAAA,EAAc;AAAA,cACT,CAAA,CAEL;AAAA;YAGT,gBAAA,EAAC,GAAD;AAAA,cAAa,cAAc,EAAK;AAAA,cAAkB,MAAM,EAAK;AAAA,YAAqB,CAAA;AAAA,UAC9E;AAAA,QACN,CAAA,CAAA,EAAA,CAAA;AAAA,QAGJ,gBAAA,EAAC,GAAD,EAAwB,MAAA,EAAO,CAAA;AAAA,QAE/B,gBAAA,EAAC,GAAD;AAAA,UACE,QAAQ,EAAK;AAAA,UACb,SAAS,EAAK;AAAA,UACd,WAAW,EAAK;AAAA,QACjB,CAAA;AAAA,QAEA,EAAK,gBACJ,gBAAA,EAAC,GAAD;AAAA,UACE,qBAAqB,EAAK,OAAO;AAAA,UACjC,gBAAgB,EAAK,OAAO;AAAA,UAC5B,QAAQ;AAAA,UACR,aAAa,EAAK,wBAAwB;AAAA,UAC1C,SAAS,EAAK;AAAA,UACd,UAAU,EAAK;AAAA,UACf,kBAAkB,EAAK,wBAAwB;AAAA,UAC/C,SAAS,EAAK,OAAO;AAAA,UACrB,aAAa,EAAK,OAAO;AAAA,UACzB,eAAe,EAAK,OAAO;AAAA,UAC3B,OAAO,EAAK,OAAO;AAAA,QACpB,CAAA;AAAA,QAGF,EAAK,cAAc,aAAa,EAAiB,UAChD,gBAAA,EAAC,GAAD,EAAQ,QAAQ,EAAiB,OAAS,CAAA;AAAA,MAEvC;AAAA;EACY,CAAA;AAEzB,CACF"}
|
|
1
|
+
{"version":3,"file":"BaseLayout.es.js","names":[],"sources":["../../../src/insights-v2/components/BaseLayout.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite'\n\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Card from '@mui/material/Card'\nimport Stack from '@mui/material/Stack'\n\nimport { ChevronRight } from '@mxenabled/mx-icons'\n\nimport { blocks, hasDrawerBlock } from '../mappings/blocks'\n\nimport Footer from './Footer'\nimport Header from './Header'\nimport FeedbackBar from './FeedbackBar'\nimport FeedbackDialog from './FeedbackDialog'\nimport DismissInsightDialog from './DismissInsightDialog'\nimport HiddenConfirmationCard from './HiddenConfirmationCard'\nimport { ObsolesceBanner, type ObsolesceBannerState } from './ObsolesceBanner'\nimport { useAppConfig, useGlobalCopyStore, useInsightsV2Store } from '../../common'\nimport { sendBeatCta } from '../../common/utils/PostMessage'\nimport type { Beat } from '../../core'\nimport { BeatActionsProvider, type BeatActions } from '../beatActions'\nimport { ActionBlockLayer } from '../actionBlocks/ActionBlockLayer'\nimport { useBeatFeedbackFlow } from '../hooks/useBeatFeedbackFlow'\n\nexport interface ObsoleteState {\n state: ObsolesceBannerState\n onRefresh: () => void\n onDismiss: () => void\n}\n\ninterface BaseLayoutProps {\n beat: Beat\n beatActions?: BeatActions\n obsolete?: ObsoleteState\n}\n\nconst NO_BEAT_ACTIONS: BeatActions = {}\n\nconst OBSOLETE_OVERLAY_SX = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'background.default',\n opacity: 0.7,\n zIndex: 1,\n} as const\n\nconst BaseLayout = observer(\n ({ beat, beatActions = NO_BEAT_ACTIONS, obsolete }: BaseLayoutProps) => {\n const { openCtaDrawer } = useInsightsV2Store()\n const copy = useGlobalCopyStore()\n const { is_mobile_webview, clientConfig } = useAppConfig()\n const flow = useBeatFeedbackFlow(beat, beatActions)\n\n const insights_payload = beat.insights_payload\n\n if (!insights_payload) return null\n if (flow.cardState === 'dismissed') return null\n\n const { instance_slot, primary_cta, secondary_cta, subtitle, widget_type } = insights_payload\n const { block } = instance_slot\n\n // A CTA with a real drilldown `block` opens a drawer; otherwise it notifies\n // the host app via a beat/cta post message (the \"Make a Transfer\" CTA on the\n // Save an extra $100 beat). Mirrors Pulse's SaveAnExtra100Dollars beat.\n const handleCtaClick = (\n ctaBlock: string | null | undefined,\n source: 'primaryCta' | 'secondaryCta',\n ) => {\n if (hasDrawerBlock(ctaBlock)) {\n openCtaDrawer(beat.guid, source)\n } else {\n sendBeatCta(beat, {\n isMobileWebview: is_mobile_webview,\n webviewScheme: clientConfig?.master?.ui_message_webview_url_scheme,\n userGuid: beat.user_guid,\n })\n }\n }\n\n const Block = blocks[block as keyof typeof blocks]\n\n const isMini = widget_type === 'mini'\n const obsoleteCopy = copy.insights_feed?.general\n const isObsoleteDimmed =\n obsolete?.state === 'not_refreshable' && !beat.dismissed_at && !!obsoleteCopy\n\n return (\n <BeatActionsProvider value={flow.wrappedActions}>\n <Stack sx={{ mb: 16 }}>\n {flow.cardState === 'confirming' ? (\n <HiddenConfirmationCard\n onClose={flow.collapseConfirmation}\n onLeaveFeedback={flow.openHideSurvey}\n onUndo={flow.undoDismiss}\n />\n ) : (\n <>\n {obsolete && obsoleteCopy && <ObsolesceBanner {...obsolete} copy={obsoleteCopy} />}\n <Card\n inert={isObsoleteDimmed}\n sx={{\n ...(isObsoleteDimmed && {\n position: 'relative',\n zIndex: 2,\n pointerEvents: 'none',\n }),\n }}\n >\n {isObsoleteDimmed && <Box sx={OBSOLETE_OVERLAY_SX} />}\n <Header isMini={isMini} subtitle={subtitle} title={beat.title} />\n {Block && <Block beatGuid={beat.guid} payload={insights_payload} />}\n\n <Stack sx={{ gap: 6, pb: 16, pl: 12, pr: 16, pt: 12 }}>\n <div\n dangerouslySetInnerHTML={{\n __html: beat.html_description as string,\n }}\n style={{ paddingLeft: 4 }}\n />\n {beat?.in_description_cta && (\n <Button\n endIcon={<ChevronRight />}\n onClick={() => {}}\n sx={{ height: 24, p: 4, width: 'max-content' }}\n >\n {beat.in_description_cta}\n </Button>\n )}\n </Stack>\n\n {!isMini && primary_cta?.label && (\n <Stack sx={{ gap: 8, pb: 16, px: 16 }}>\n <Button\n onClick={() => handleCtaClick(primary_cta.block, 'primaryCta')}\n variant=\"outlined\"\n >\n {primary_cta.label}\n </Button>\n {secondary_cta?.label && (\n <Button\n color=\"secondary\"\n onClick={() => handleCtaClick(secondary_cta.block, 'secondaryCta')}\n >\n {secondary_cta.label}\n </Button>\n )}\n </Stack>\n )}\n\n <FeedbackBar onTellUsMore={flow.openRatingSurvey} show={flow.isFeedbackBarShown} />\n </Card>\n </>\n )}\n\n <ActionBlockLayer beat={beat} />\n\n <DismissInsightDialog\n isOpen={flow.isDismissOpen}\n onClose={flow.closeDismissDialog}\n onDismiss={flow.confirmDismiss}\n />\n\n {flow.isSurveyOpen && (\n <FeedbackDialog\n characterLimitLabel={flow.survey.characterLimitLabel}\n closeAriaLabel={flow.survey.closeAriaLabel}\n isOpen={true}\n onBackClick={flow.feedbackDialogCallbacks.onBackClick}\n onClose={flow.closeSurvey}\n onSubmit={flow.submitSurvey}\n onTextInputFocus={flow.feedbackDialogCallbacks.onTextInputFocus}\n options={flow.survey.options}\n primaryText={flow.survey.submitText}\n secondaryText={flow.survey.backText}\n title={flow.survey.title}\n />\n )}\n\n {flow.cardState === 'visible' && insights_payload.footer && (\n <Footer footer={insights_payload.footer} />\n )}\n </Stack>\n </BeatActionsProvider>\n )\n },\n)\n\nexport default BaseLayout\n"],"mappings":"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"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { formatCurrency as
|
|
2
|
-
import { getLogoElevation as
|
|
1
|
+
import { formatCurrency as h } from "../../core/utils/NumberFormatting.es.js";
|
|
2
|
+
import { getLogoElevation as m } from "./logoShadow.es.js";
|
|
3
3
|
import { Text as r } from "@mxenabled/mxui";
|
|
4
4
|
import { jsx as o, jsxs as e } from "react/jsx-runtime";
|
|
5
5
|
import t from "@mui/material/Box";
|
|
6
|
-
var C = ({ primaryText:
|
|
7
|
-
const [d, s
|
|
6
|
+
var C = ({ primaryText: i = [], secondaryText: n = [], bgcolor: a = "success.main", sx: c }) => {
|
|
7
|
+
const [l, d, s] = i, [p, x] = n;
|
|
8
8
|
return /* @__PURE__ */ e(t, {
|
|
9
9
|
sx: {
|
|
10
10
|
border: "1px solid",
|
|
11
11
|
borderColor: "success.main",
|
|
12
12
|
borderRadius: 2,
|
|
13
|
-
boxShadow:
|
|
13
|
+
boxShadow: m,
|
|
14
14
|
overflow: "hidden",
|
|
15
|
-
...
|
|
15
|
+
...c
|
|
16
16
|
},
|
|
17
17
|
children: [/* @__PURE__ */ e(t, {
|
|
18
18
|
sx: {
|
|
19
|
-
bgcolor:
|
|
19
|
+
bgcolor: a,
|
|
20
20
|
color: "success.contrastText",
|
|
21
21
|
p: 16,
|
|
22
22
|
pt: 12,
|
|
@@ -26,18 +26,18 @@ var C = ({ primaryText: n = [], secondaryText: a = [], bgcolor: c = "success.mai
|
|
|
26
26
|
/* @__PURE__ */ o(r, {
|
|
27
27
|
color: "inherit",
|
|
28
28
|
variant: "subtitle1",
|
|
29
|
-
children:
|
|
29
|
+
children: l
|
|
30
30
|
}),
|
|
31
31
|
/* @__PURE__ */ o(r, {
|
|
32
32
|
bold: !0,
|
|
33
33
|
color: "inherit",
|
|
34
34
|
variant: "h1",
|
|
35
|
-
children:
|
|
35
|
+
children: h(Number(d ?? "0"), "0,0.00")
|
|
36
36
|
}),
|
|
37
37
|
/* @__PURE__ */ o(r, {
|
|
38
38
|
color: "inherit",
|
|
39
39
|
variant: "caption",
|
|
40
|
-
children:
|
|
40
|
+
children: s
|
|
41
41
|
})
|
|
42
42
|
]
|
|
43
43
|
}), /* @__PURE__ */ e(t, {
|
|
@@ -49,7 +49,7 @@ var C = ({ primaryText: n = [], secondaryText: a = [], bgcolor: c = "success.mai
|
|
|
49
49
|
},
|
|
50
50
|
children: [/* @__PURE__ */ o(r, {
|
|
51
51
|
variant: "h3",
|
|
52
|
-
children:
|
|
52
|
+
children: p
|
|
53
53
|
}), /* @__PURE__ */ o(r, {
|
|
54
54
|
color: "text.secondary",
|
|
55
55
|
variant: "caption",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveAnExtraCard.es.js","names":[],"sources":["../../../src/insights-v2/components/SaveAnExtraCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\nimport { getLogoElevation } from './logoShadow'\n\ninterface SaveAnExtraCardProps {\n primaryText?: string[]\n secondaryText?: string[]\n bgcolor?: string\n sx?: SxProps<Theme>\n}\n\nconst SaveAnExtraCard = ({\n primaryText = [],\n secondaryText = [],\n bgcolor = 'success.main',\n sx,\n}: SaveAnExtraCardProps) => {\n const [leadIn, amount, trailingCopy] = primaryText\n const [projected, projectedCaption] = secondaryText\n\n return (\n <Box\n sx={{\n border: '1px solid',\n borderColor: 'success.main',\n borderRadius: 2,\n boxShadow: getLogoElevation,\n overflow: 'hidden',\n ...sx,\n }}\n >\n {/* Green header */}\n <Box\n sx={{\n bgcolor,\n color: 'success.contrastText',\n p: 16,\n pt: 12,\n textAlign: 'center',\n }}\n >\n <Text color=\"inherit\" variant=\"subtitle1\">\n {leadIn}\n </Text>\n <Text bold={true} color=\"inherit\" variant=\"h1\">\n {formatCurrency(Number(amount ?? '0'), '0,0.00')}\n </Text>\n <Text color=\"inherit\" variant=\"caption\">\n {trailingCopy}\n </Text>\n </Box>\n\n {/* White footer with projected amount */}\n <Box sx={{ bgcolor: 'background.paper', px: 16, py: 12, textAlign: 'center' }}>\n <Text variant=\"h3\">{
|
|
1
|
+
{"version":3,"file":"SaveAnExtraCard.es.js","names":[],"sources":["../../../src/insights-v2/components/SaveAnExtraCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { formatCurrency } from '../../core/utils/NumberFormatting'\n\nimport { getLogoElevation } from './logoShadow'\n\ninterface SaveAnExtraCardProps {\n primaryText?: string[]\n secondaryText?: string[]\n bgcolor?: string\n sx?: SxProps<Theme>\n}\n\nconst SaveAnExtraCard = ({\n primaryText = [],\n secondaryText = [],\n bgcolor = 'success.main',\n sx,\n}: SaveAnExtraCardProps) => {\n const [leadIn, amount, trailingCopy] = primaryText\n const [projected, projectedCaption] = secondaryText\n\n return (\n <Box\n sx={{\n border: '1px solid',\n borderColor: 'success.main',\n borderRadius: 2,\n boxShadow: getLogoElevation,\n overflow: 'hidden',\n ...sx,\n }}\n >\n {/* Green header */}\n <Box\n sx={{\n bgcolor,\n color: 'success.contrastText',\n p: 16,\n pt: 12,\n textAlign: 'center',\n }}\n >\n <Text color=\"inherit\" variant=\"subtitle1\">\n {leadIn}\n </Text>\n <Text bold={true} color=\"inherit\" variant=\"h1\">\n {formatCurrency(Number(amount ?? '0'), '0,0.00')}\n </Text>\n <Text color=\"inherit\" variant=\"caption\">\n {trailingCopy}\n </Text>\n </Box>\n\n {/* White footer with projected amount. The projected balance arrives\n pre-formatted from the backend (e.g. \"$3,320\"), so render it as-is. */}\n <Box sx={{ bgcolor: 'background.paper', px: 16, py: 12, textAlign: 'center' }}>\n <Text variant=\"h3\">{projected}</Text>\n <Text color=\"text.secondary\" variant=\"caption\">\n {projectedCaption}\n </Text>\n </Box>\n </Box>\n )\n}\n\nexport default SaveAnExtraCard\n"],"mappings":";;;;;AAgBA,IAAM,IAAA,CAAmB,EACvB,aAAA,IAAc,CAAC,GACf,eAAA,IAAgB,CAAC,GACjB,SAAA,IAAU,gBACV,IAAA,EAAA,MAC0B;AAC1B,QAAM,CAAC,GAAQ,GAAQ,CAAA,IAAgB,GACjC,CAAC,GAAW,CAAA,IAAoB;AAEtC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,IAAI;AAAA,MACF,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,cAAc;AAAA,MACd,WAAW;AAAA,MACX,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IARF,UAAA,CAWE,gBAAA,EAAC,GAAD;AAAA,MACE,IAAI;AAAA,QACF,SAAA;AAAA,QACA,OAAO;AAAA,QACP,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,WAAW;AAAA,MACb;AAAA,MAPF,UAAA;AAAA,QASE,gBAAA,EAAC,GAAD;AAAA,UAAM,OAAM;AAAA,UAAU,SAAQ;AAAA,UAC3B,UAAA;AAAA,QACG,CAAA;AAAA,QACN,gBAAA,EAAC,GAAD;AAAA,UAAM,MAAM;AAAA,UAAM,OAAM;AAAA,UAAU,SAAQ;AAAA,UACvC,UAAA,EAAe,OAAO,KAAU,GAAG,GAAG,QAAQ;AAAA,QAC3C,CAAA;AAAA,QACN,gBAAA,EAAC,GAAD;AAAA,UAAM,OAAM;AAAA,UAAU,SAAQ;AAAA,UAC3B,UAAA;AAAA,QACG,CAAA;AAAA,MACH;AAAA,IAIL,CAAA,GAAA,gBAAA,EAAC,GAAD;AAAA,MAAK,IAAI;AAAA,QAAE,SAAS;AAAA,QAAoB,IAAI;AAAA,QAAI,IAAI;AAAA,QAAI,WAAW;AAAA,MAAS;AAAA,MAA5E,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,QAAM,SAAQ;AAAA,QAAM,UAAA;AAAA,MAAgB,CAAA,GACpC,gBAAA,EAAC,GAAD;AAAA,QAAM,OAAM;AAAA,QAAiB,SAAQ;AAAA,QAClC,UAAA;AAAA,MACG,CAAA,CACH;AAAA,IACF,CAAA,CAAA;AAAA;AAET"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var _ = {
|
|
2
|
+
PLACEHOLDER_ACTION_BLOCK: "PlaceholderActionBlock",
|
|
3
|
+
MAKE_TRANSFER_ACTION_BLOCK: "make_transfer",
|
|
4
|
+
TRANSCATION_HISTORY_ACTION_BLOCK: "transaction_history_block",
|
|
5
|
+
TRANSACTION_DETAILS_ACTION_BLOCK: "TransactionDetailsBlock"
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
_ as actionBlocksKey
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=actionBlocksKey.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionBlocksKey.es.js","names":[],"sources":["../../../src/insights-v2/mappings/actionBlocksKey.ts"],"sourcesContent":["// Keys for the drawer drilldown registry in `blocks.ts`, extracted into their own module.\n//\n// Why: chart blocks (e.g. BarchartBlock, DoubleBarChartBlock) need\n// `TRANSCATION_HISTORY_ACTION_BLOCK` to tag a chart bar's drilldown context, but they are\n// themselves re-exported through `../blocks` -> `mappings/blocks.ts` imports from that same\n// barrel to build its `blocks` registry. Importing the key straight from `mappings/blocks.ts`\n// closed that loop into a circular import: evaluating `mappings/blocks.ts` pulled in the\n// `blocks` barrel, which (before it got to `ComponentBlocks`/`AccountBlock`) loaded\n// `BarchartBlock`, which imported back into the still-initializing `mappings/blocks.ts` —\n// tripping a \"Cannot access 'AccountBlock' before initialization\" TDZ error in Storybook/Vite.\n//\n// Keeping the keys here (no dependency on `mappings/blocks.ts`) lets chart blocks reference\n// them without re-entering that module.\nexport const actionBlocksKey = {\n PLACEHOLDER_ACTION_BLOCK: 'PlaceholderActionBlock',\n MAKE_TRANSFER_ACTION_BLOCK: 'make_transfer',\n TRANSCATION_HISTORY_ACTION_BLOCK: 'transaction_history_block',\n TRANSACTION_DETAILS_ACTION_BLOCK: 'TransactionDetailsBlock',\n}\n"],"mappings":"AAaA,IAAa,IAAkB;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,kCAAkC;AAAA,EAClC,kCAAkC;AACpC"}
|