@burdenoff/microfe-bigconsole 2026.613.3 → 2026.613.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/bigconsole/components/widgets/WidgetRegistry.js +55 -1
  2. package/dist/bigconsole/components/widgets/WidgetRegistry.js.map +1 -1
  3. package/dist/bigconsole/components/widgets/chart/ChartWidget.js +123 -91
  4. package/dist/bigconsole/components/widgets/chart/ChartWidget.js.map +1 -1
  5. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js +40 -35
  6. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js.map +1 -1
  7. package/dist/bigconsole/components/widgets/chart/charts/BarChart.js +30 -25
  8. package/dist/bigconsole/components/widgets/chart/charts/BarChart.js.map +1 -1
  9. package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js +139 -0
  10. package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js.map +1 -0
  11. package/dist/bigconsole/components/widgets/chart/charts/LineChart.js +35 -30
  12. package/dist/bigconsole/components/widgets/chart/charts/LineChart.js.map +1 -1
  13. package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js +128 -0
  14. package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js.map +1 -0
  15. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js +111 -0
  16. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js.map +1 -0
  17. package/dist/bigconsole/components/widgets/chart/charts/index.js +4 -0
  18. package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js +49 -0
  19. package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js.map +1 -0
  20. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +72 -68
  21. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +1 -1
  22. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +74 -24
  23. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +1 -1
  24. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +87 -86
  25. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +1 -1
  26. package/dist/bigconsole/components/widgets/table/TableCell.js +55 -26
  27. package/dist/bigconsole/components/widgets/table/TableCell.js.map +1 -1
  28. package/dist/bigconsole/components/widgets/table/TableHeader.js +25 -18
  29. package/dist/bigconsole/components/widgets/table/TableHeader.js.map +1 -1
  30. package/dist/bigconsole/components/widgets/table/TableWidget.js +255 -107
  31. package/dist/bigconsole/components/widgets/table/TableWidget.js.map +1 -1
  32. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js +91 -0
  33. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js.map +1 -0
  34. package/dist/bigconsole/hooks/index.js +1 -0
  35. package/dist/bigconsole/hooks/useDashboardImageExport.js +1 -0
  36. package/dist/bigconsole/utils/widgetTypeMapping.js +1 -0
  37. package/dist/bigconsole/utils/widgetTypeMapping.js.map +1 -1
  38. package/package.json +1 -1
@@ -1,24 +1,25 @@
1
1
  import e from "../ChartTooltip.js";
2
- import { memo as t, useMemo as n } from "react";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
- import { Area as a, AreaChart as o, CartesianGrid as s, Legend as c, ResponsiveContainer as l, Tooltip as u, XAxis as d, YAxis as f } from "recharts";
2
+ import { buildReferenceElements as t } from "./referenceElements.js";
3
+ import { memo as n, useMemo as r } from "react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { Area as o, AreaChart as s, CartesianGrid as c, Legend as l, ResponsiveContainer as u, Tooltip as d, XAxis as f, YAxis as p } from "recharts";
5
6
  //#region src/bigconsole/components/widgets/chart/charts/AreaChart.tsx
6
- var p = [
7
+ var m = [
7
8
  "var(--color-chart-1)",
8
9
  "var(--color-chart-2)",
9
10
  "var(--color-chart-3)",
10
11
  "var(--color-chart-4)",
11
12
  "var(--color-chart-5)"
12
- ], m = t(function({ data: t = [], config: m, hiddenSeries: h = [], onDataClick: g }) {
13
- let _ = n(() => t?.length ? Object.keys(t[0]).filter((e) => e !== m.xAxisKey && typeof t[0][e] == "number") : [], [t, m.xAxisKey]), v = (e) => typeof e == "number" ? new Intl.NumberFormat("en-US", {
13
+ ], h = n(function({ data: n = [], config: h, hiddenSeries: g = [], onDataClick: _ }) {
14
+ let v = r(() => n?.length ? Object.keys(n[0]).filter((e) => e !== h.xAxisKey && typeof n[0][e] == "number") : [], [n, h.xAxisKey]), y = (e) => typeof e == "number" ? new Intl.NumberFormat("en-US", {
14
15
  notation: e >= 1e4 ? "compact" : "standard",
15
16
  maximumFractionDigits: 2
16
- }).format(e) : String(e), y = (e) => `gradient-${e}`;
17
- return t?.length ? /* @__PURE__ */ r(l, {
17
+ }).format(e) : String(e), b = (e) => `gradient-${e}`;
18
+ return n?.length ? /* @__PURE__ */ i(u, {
18
19
  width: "100%",
19
20
  height: "100%",
20
- children: /* @__PURE__ */ i(o, {
21
- data: t,
21
+ children: /* @__PURE__ */ a(s, {
22
+ data: n,
22
23
  margin: {
23
24
  top: 10,
24
25
  right: 10,
@@ -26,35 +27,35 @@ var p = [
26
27
  bottom: 0
27
28
  },
28
29
  onClick: (e) => {
29
- e?.activePayload?.[0] && g && g(e.activePayload[0].payload, e.activeTooltipIndex || 0);
30
+ e?.activePayload?.[0] && _ && _(e.activePayload[0].payload, e.activeTooltipIndex || 0);
30
31
  },
31
32
  children: [
32
- /* @__PURE__ */ r("defs", { children: _.map((e, t) => {
33
- let n = m.colors?.[t] || p[t % p.length];
34
- return /* @__PURE__ */ i("linearGradient", {
35
- id: y(e),
33
+ /* @__PURE__ */ i("defs", { children: v.map((e, t) => {
34
+ let n = h.colors?.[t] || m[t % m.length];
35
+ return /* @__PURE__ */ a("linearGradient", {
36
+ id: b(e),
36
37
  x1: "0",
37
38
  y1: "0",
38
39
  x2: "0",
39
40
  y2: "1",
40
- children: [/* @__PURE__ */ r("stop", {
41
+ children: [/* @__PURE__ */ i("stop", {
41
42
  offset: "0%",
42
43
  stopColor: n,
43
44
  stopOpacity: .4
44
- }), /* @__PURE__ */ r("stop", {
45
+ }), /* @__PURE__ */ i("stop", {
45
46
  offset: "95%",
46
47
  stopColor: n,
47
48
  stopOpacity: .05
48
49
  })]
49
50
  }, e);
50
51
  }) }),
51
- m.showGrid !== !1 && /* @__PURE__ */ r(s, {
52
+ h.showGrid !== !1 && /* @__PURE__ */ i(c, {
52
53
  strokeDasharray: "3 3",
53
54
  stroke: "var(--color-border-default)",
54
55
  opacity: .5
55
56
  }),
56
- /* @__PURE__ */ r(d, {
57
- dataKey: m.xAxisKey || "name",
57
+ /* @__PURE__ */ i(f, {
58
+ dataKey: h.xAxisKey || "name",
58
59
  tick: {
59
60
  fill: "var(--color-text-secondary)",
60
61
  fontSize: 12
@@ -62,43 +63,47 @@ var p = [
62
63
  tickLine: { stroke: "var(--color-border-default)" },
63
64
  axisLine: { stroke: "var(--color-border-default)" }
64
65
  }),
65
- /* @__PURE__ */ r(f, {
66
+ /* @__PURE__ */ i(p, {
66
67
  tick: {
67
68
  fill: "var(--color-text-secondary)",
68
69
  fontSize: 12
69
70
  },
70
71
  tickLine: { stroke: "var(--color-border-default)" },
71
72
  axisLine: { stroke: "var(--color-border-default)" },
72
- tickFormatter: v
73
+ tickFormatter: y,
74
+ scale: h.logScale ? "log" : "auto",
75
+ domain: h.logScale ? ["auto", "auto"] : void 0,
76
+ allowDataOverflow: h.logScale || void 0
73
77
  }),
74
- /* @__PURE__ */ r(u, {
75
- content: /* @__PURE__ */ r(e, { valueFormatter: v }),
78
+ /* @__PURE__ */ i(d, {
79
+ content: /* @__PURE__ */ i(e, { valueFormatter: y }),
76
80
  cursor: { stroke: "var(--color-border-default)" }
77
81
  }),
78
- m.showLegend !== !1 && /* @__PURE__ */ r(c, {
82
+ h.showLegend !== !1 && /* @__PURE__ */ i(l, {
79
83
  wrapperStyle: { paddingTop: 20 },
80
- formatter: (e) => /* @__PURE__ */ r("span", {
84
+ formatter: (e) => /* @__PURE__ */ i("span", {
81
85
  style: { color: "var(--color-text-primary)" },
82
86
  children: e
83
87
  })
84
88
  }),
85
- _.map((e, t) => /* @__PURE__ */ r(a, {
86
- type: m.curveType || "monotone",
89
+ t(h.referenceLines),
90
+ v.map((e, t) => /* @__PURE__ */ i(o, {
91
+ type: h.curveType || "monotone",
87
92
  dataKey: e,
88
- name: m.seriesNames?.[e] || e,
89
- stroke: m.colors?.[t] || p[t % p.length],
93
+ name: h.seriesNames?.[e] || e,
94
+ stroke: h.colors?.[t] || m[t % m.length],
90
95
  strokeWidth: 2,
91
- fill: `url(#${y(e)})`,
92
- dot: m.showDots,
96
+ fill: `url(#${b(e)})`,
97
+ dot: h.showDots,
93
98
  activeDot: { r: 6 },
94
- hide: h.includes(e),
95
- stackId: m.stacked ? "stack" : void 0
99
+ hide: g.includes(e),
100
+ stackId: h.stacked ? "stack" : void 0
96
101
  }, e))
97
102
  ]
98
103
  })
99
104
  }) : null;
100
105
  });
101
106
  //#endregion
102
- export { m as default };
107
+ export { h as default };
103
108
 
104
109
  //# sourceMappingURL=AreaChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AreaChart.js","names":[],"sources":["../../../../../../src/bigconsole/components/widgets/chart/charts/AreaChart.tsx"],"sourcesContent":["/**\n * AreaChart Component\n *\n * Area chart using Recharts.\n */\n\nimport { type FC, memo, useMemo } from 'react';\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n Legend,\n} from 'recharts';\nimport { ChartTooltip } from '../ChartTooltip';\nimport type { ChartConfig, ChartData } from './types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AreaChartProps {\n /** Chart data */\n data: ChartData[];\n /** Chart configuration */\n config: ChartConfig;\n /** Series to hide */\n hiddenSeries?: string[];\n /** Click handler for data points */\n onDataClick?: (data: ChartData, index: number) => void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst DEFAULT_COLORS = [\n 'var(--color-chart-1)',\n 'var(--color-chart-2)',\n 'var(--color-chart-3)',\n 'var(--color-chart-4)',\n 'var(--color-chart-5)',\n];\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const AreaChart: FC<AreaChartProps> = memo(function AreaChart({\n data = [],\n config,\n hiddenSeries = [],\n onDataClick,\n}) {\n // Extract data keys (series)\n const dataKeys = useMemo(() => {\n if (!data?.length) return [];\n const keys = Object.keys(data[0]).filter((key) => key !== config.xAxisKey && typeof data[0][key] === 'number');\n return keys;\n }, [data, config.xAxisKey]);\n\n // Format value\n const formatValue = (value: number | string): string => {\n if (typeof value !== 'number') return String(value);\n return new Intl.NumberFormat('en-US', {\n notation: value >= 10000 ? 'compact' : 'standard',\n maximumFractionDigits: 2,\n }).format(value);\n };\n\n // Generate gradient ID\n const getGradientId = (key: string) => `gradient-${key}`;\n\n if (!data?.length) {\n return null;\n }\n\n return (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsAreaChart\n data={data}\n margin={{ top: 10, right: 10, left: 0, bottom: 0 }}\n onClick={(e) => {\n if (e?.activePayload?.[0] && onDataClick) {\n onDataClick(e.activePayload[0].payload, e.activeTooltipIndex || 0);\n }\n }}\n >\n {/* Gradients */}\n <defs>\n {dataKeys.map((key, index) => {\n const color = config.colors?.[index] || DEFAULT_COLORS[index % DEFAULT_COLORS.length];\n return (\n <linearGradient key={key} id={getGradientId(key)} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color} stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor={color} stopOpacity={0.05} />\n </linearGradient>\n );\n })}\n </defs>\n\n {config.showGrid !== false && (\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"var(--color-border-default)\" opacity={0.5} />\n )}\n\n <XAxis\n dataKey={config.xAxisKey || 'name'}\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n />\n\n <YAxis\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n tickFormatter={formatValue}\n />\n\n <Tooltip\n content={<ChartTooltip valueFormatter={formatValue} />}\n cursor={{ stroke: 'var(--color-border-default)' }}\n />\n\n {config.showLegend !== false && (\n <Legend\n wrapperStyle={{ paddingTop: 20 }}\n formatter={(value) => <span style={{ color: 'var(--color-text-primary)' }}>{value}</span>}\n />\n )}\n\n {dataKeys.map((key, index) => (\n <Area\n key={key}\n type={config.curveType || 'monotone'}\n dataKey={key}\n name={config.seriesNames?.[key] || key}\n stroke={config.colors?.[index] || DEFAULT_COLORS[index % DEFAULT_COLORS.length]}\n strokeWidth={2}\n fill={`url(#${getGradientId(key)})`}\n dot={config.showDots}\n activeDot={{ r: 6 }}\n hide={hiddenSeries.includes(key)}\n stackId={config.stacked ? 'stack' : undefined}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n );\n});\n\nexport default AreaChart;\n"],"mappings":";;;;;AAuCA,IAAM,IAAiB;CACrB;CACA;CACA;CACA;CACA;CACD,EAMY,IAAgC,EAAK,SAAmB,EACnE,UAAO,EAAE,EACT,WACA,kBAAe,EAAE,EACjB,kBACC;CAED,IAAM,IAAW,QACV,GAAM,SACE,OAAO,KAAK,EAAK,GAAG,CAAC,QAAQ,MAAQ,MAAQ,EAAO,YAAY,OAAO,EAAK,GAAG,MAAS,SAAS,GADpF,EAAE,EAG3B,CAAC,GAAM,EAAO,SAAS,CAAC,EAGrB,KAAe,MACf,OAAO,KAAU,WACd,IAAI,KAAK,aAAa,SAAS;EACpC,UAAU,KAAS,MAAQ,YAAY;EACvC,uBAAuB;EACxB,CAAC,CAAC,OAAO,EAAM,GAJsB,OAAO,EAAM,EAQ/C,KAAiB,MAAgB,YAAY;AAMnD,QAJK,GAAM,SAKT,kBAAC,GAAD;EAAqB,OAAM;EAAO,QAAO;YACvC,kBAAC,GAAD;GACQ;GACN,QAAQ;IAAE,KAAK;IAAI,OAAO;IAAI,MAAM;IAAG,QAAQ;IAAG;GAClD,UAAU,MAAM;AACd,IAAI,GAAG,gBAAgB,MAAM,KAC3B,EAAY,EAAE,cAAc,GAAG,SAAS,EAAE,sBAAsB,EAAE;;aALxE;IAUE,kBAAC,QAAD,EAAA,UACG,EAAS,KAAK,GAAK,MAAU;KAC5B,IAAM,IAAQ,EAAO,SAAS,MAAU,EAAe,IAAQ,EAAe;AAC9E,YACE,kBAAC,kBAAD;MAA0B,IAAI,EAAc,EAAI;MAAE,IAAG;MAAI,IAAG;MAAI,IAAG;MAAI,IAAG;gBAA1E,CACE,kBAAC,QAAD;OAAM,QAAO;OAAK,WAAW;OAAO,aAAa;OAAO,CAAA,EACxD,kBAAC,QAAD;OAAM,QAAO;OAAM,WAAW;OAAO,aAAa;OAAQ,CAAA,CAC3C;QAHI,EAGJ;MAEnB,EACG,CAAA;IAEN,EAAO,aAAa,MACnB,kBAAC,GAAD;KAAe,iBAAgB;KAAM,QAAO;KAA8B,SAAS;KAAO,CAAA;IAG5F,kBAAC,GAAD;KACE,SAAS,EAAO,YAAY;KAC5B,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU,EAAE,QAAQ,+BAA+B;KACnD,UAAU,EAAE,QAAQ,+BAA+B;KACnD,CAAA;IAEF,kBAAC,GAAD;KACE,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU,EAAE,QAAQ,+BAA+B;KACnD,UAAU,EAAE,QAAQ,+BAA+B;KACnD,eAAe;KACf,CAAA;IAEF,kBAAC,GAAD;KACE,SAAS,kBAAC,GAAD,EAAc,gBAAgB,GAAe,CAAA;KACtD,QAAQ,EAAE,QAAQ,+BAA+B;KACjD,CAAA;IAED,EAAO,eAAe,MACrB,kBAAC,GAAD;KACE,cAAc,EAAE,YAAY,IAAI;KAChC,YAAY,MAAU,kBAAC,QAAD;MAAM,OAAO,EAAE,OAAO,6BAA6B;gBAAG;MAAa,CAAA;KACzF,CAAA;IAGH,EAAS,KAAK,GAAK,MAClB,kBAAC,GAAD;KAEE,MAAM,EAAO,aAAa;KAC1B,SAAS;KACT,MAAM,EAAO,cAAc,MAAQ;KACnC,QAAQ,EAAO,SAAS,MAAU,EAAe,IAAQ,EAAe;KACxE,aAAa;KACb,MAAM,QAAQ,EAAc,EAAI,CAAC;KACjC,KAAK,EAAO;KACZ,WAAW,EAAE,GAAG,GAAG;KACnB,MAAM,EAAa,SAAS,EAAI;KAChC,SAAS,EAAO,UAAU,UAAU,KAAA;KACpC,EAXK,EAWL,CACF;IACgB;;EACA,CAAA,GAzEf;EA2ET"}
1
+ {"version":3,"file":"AreaChart.js","names":[],"sources":["../../../../../../src/bigconsole/components/widgets/chart/charts/AreaChart.tsx"],"sourcesContent":["/**\n * AreaChart Component\n *\n * Area chart using Recharts.\n */\n\nimport { type FC, memo, useMemo } from 'react';\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n Legend,\n} from 'recharts';\nimport { ChartTooltip } from '../ChartTooltip';\nimport type { ChartConfig, ChartData } from './types';\nimport { buildReferenceElements } from './referenceElements';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AreaChartProps {\n /** Chart data */\n data: ChartData[];\n /** Chart configuration */\n config: ChartConfig;\n /** Series to hide */\n hiddenSeries?: string[];\n /** Click handler for data points */\n onDataClick?: (data: ChartData, index: number) => void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst DEFAULT_COLORS = [\n 'var(--color-chart-1)',\n 'var(--color-chart-2)',\n 'var(--color-chart-3)',\n 'var(--color-chart-4)',\n 'var(--color-chart-5)',\n];\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const AreaChart: FC<AreaChartProps> = memo(function AreaChart({\n data = [],\n config,\n hiddenSeries = [],\n onDataClick,\n}) {\n // Extract data keys (series)\n const dataKeys = useMemo(() => {\n if (!data?.length) return [];\n const keys = Object.keys(data[0]).filter((key) => key !== config.xAxisKey && typeof data[0][key] === 'number');\n return keys;\n }, [data, config.xAxisKey]);\n\n // Format value\n const formatValue = (value: number | string): string => {\n if (typeof value !== 'number') return String(value);\n return new Intl.NumberFormat('en-US', {\n notation: value >= 10000 ? 'compact' : 'standard',\n maximumFractionDigits: 2,\n }).format(value);\n };\n\n // Generate gradient ID\n const getGradientId = (key: string) => `gradient-${key}`;\n\n if (!data?.length) {\n return null;\n }\n\n return (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsAreaChart\n data={data}\n margin={{ top: 10, right: 10, left: 0, bottom: 0 }}\n onClick={(e) => {\n if (e?.activePayload?.[0] && onDataClick) {\n onDataClick(e.activePayload[0].payload, e.activeTooltipIndex || 0);\n }\n }}\n >\n {/* Gradients */}\n <defs>\n {dataKeys.map((key, index) => {\n const color = config.colors?.[index] || DEFAULT_COLORS[index % DEFAULT_COLORS.length];\n return (\n <linearGradient key={key} id={getGradientId(key)} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color} stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor={color} stopOpacity={0.05} />\n </linearGradient>\n );\n })}\n </defs>\n\n {config.showGrid !== false && (\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"var(--color-border-default)\" opacity={0.5} />\n )}\n\n <XAxis\n dataKey={config.xAxisKey || 'name'}\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n />\n\n <YAxis\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n tickFormatter={formatValue}\n scale={config.logScale ? 'log' : 'auto'}\n domain={config.logScale ? ['auto', 'auto'] : undefined}\n allowDataOverflow={config.logScale || undefined}\n />\n\n <Tooltip\n content={<ChartTooltip valueFormatter={formatValue} />}\n cursor={{ stroke: 'var(--color-border-default)' }}\n />\n\n {config.showLegend !== false && (\n <Legend\n wrapperStyle={{ paddingTop: 20 }}\n formatter={(value) => <span style={{ color: 'var(--color-text-primary)' }}>{value}</span>}\n />\n )}\n\n {buildReferenceElements(config.referenceLines)}\n\n {dataKeys.map((key, index) => (\n <Area\n key={key}\n type={config.curveType || 'monotone'}\n dataKey={key}\n name={config.seriesNames?.[key] || key}\n stroke={config.colors?.[index] || DEFAULT_COLORS[index % DEFAULT_COLORS.length]}\n strokeWidth={2}\n fill={`url(#${getGradientId(key)})`}\n dot={config.showDots}\n activeDot={{ r: 6 }}\n hide={hiddenSeries.includes(key)}\n stackId={config.stacked ? 'stack' : undefined}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n );\n});\n\nexport default AreaChart;\n"],"mappings":"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"}
@@ -1,24 +1,25 @@
1
1
  import e from "../ChartTooltip.js";
2
- import { memo as t, useMemo as n } from "react";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
- import { Bar as a, BarChart as o, CartesianGrid as s, Legend as c, ResponsiveContainer as l, Tooltip as u, XAxis as d, YAxis as f } from "recharts";
2
+ import { buildReferenceElements as t } from "./referenceElements.js";
3
+ import { memo as n, useMemo as r } from "react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { Bar as o, BarChart as s, CartesianGrid as c, Legend as l, ResponsiveContainer as u, Tooltip as d, XAxis as f, YAxis as p } from "recharts";
5
6
  //#region src/bigconsole/components/widgets/chart/charts/BarChart.tsx
6
- var p = [
7
+ var m = [
7
8
  "var(--color-chart-1)",
8
9
  "var(--color-chart-2)",
9
10
  "var(--color-chart-3)",
10
11
  "var(--color-chart-4)",
11
12
  "var(--color-chart-5)"
12
- ], m = t(function({ data: t = [], config: m, hiddenSeries: h = [], onDataClick: g }) {
13
- let _ = n(() => t?.length ? Object.keys(t[0]).filter((e) => e !== m.xAxisKey && typeof t[0][e] == "number") : [], [t, m.xAxisKey]), v = (e) => typeof e == "number" ? new Intl.NumberFormat("en-US", {
13
+ ], h = n(function({ data: n = [], config: h, hiddenSeries: g = [], onDataClick: _ }) {
14
+ let v = r(() => n?.length ? Object.keys(n[0]).filter((e) => e !== h.xAxisKey && typeof n[0][e] == "number") : [], [n, h.xAxisKey]), y = (e) => typeof e == "number" ? new Intl.NumberFormat("en-US", {
14
15
  notation: e >= 1e4 ? "compact" : "standard",
15
16
  maximumFractionDigits: 2
16
17
  }).format(e) : String(e);
17
- return t?.length ? /* @__PURE__ */ r(l, {
18
+ return n?.length ? /* @__PURE__ */ i(u, {
18
19
  width: "100%",
19
20
  height: "100%",
20
- children: /* @__PURE__ */ i(o, {
21
- data: t,
21
+ children: /* @__PURE__ */ a(s, {
22
+ data: n,
22
23
  margin: {
23
24
  top: 10,
24
25
  right: 10,
@@ -26,17 +27,17 @@ var p = [
26
27
  bottom: 0
27
28
  },
28
29
  onClick: (e) => {
29
- e?.activePayload?.[0] && g && g(e.activePayload[0].payload, e.activeTooltipIndex || 0);
30
+ e?.activePayload?.[0] && _ && _(e.activePayload[0].payload, e.activeTooltipIndex || 0);
30
31
  },
31
32
  children: [
32
- m.showGrid !== !1 && /* @__PURE__ */ r(s, {
33
+ h.showGrid !== !1 && /* @__PURE__ */ i(c, {
33
34
  strokeDasharray: "3 3",
34
35
  stroke: "var(--color-border-default)",
35
36
  opacity: .5,
36
37
  vertical: !1
37
38
  }),
38
- /* @__PURE__ */ r(d, {
39
- dataKey: m.xAxisKey || "name",
39
+ /* @__PURE__ */ i(f, {
40
+ dataKey: h.xAxisKey || "name",
40
41
  tick: {
41
42
  fill: "var(--color-text-secondary)",
42
43
  fontSize: 12
@@ -44,47 +45,51 @@ var p = [
44
45
  tickLine: { stroke: "var(--color-border-default)" },
45
46
  axisLine: { stroke: "var(--color-border-default)" }
46
47
  }),
47
- /* @__PURE__ */ r(f, {
48
+ /* @__PURE__ */ i(p, {
48
49
  tick: {
49
50
  fill: "var(--color-text-secondary)",
50
51
  fontSize: 12
51
52
  },
52
53
  tickLine: { stroke: "var(--color-border-default)" },
53
54
  axisLine: { stroke: "var(--color-border-default)" },
54
- tickFormatter: v
55
+ tickFormatter: y,
56
+ scale: h.logScale ? "log" : "auto",
57
+ domain: h.logScale ? ["auto", "auto"] : void 0,
58
+ allowDataOverflow: h.logScale || void 0
55
59
  }),
56
- /* @__PURE__ */ r(u, {
57
- content: /* @__PURE__ */ r(e, { valueFormatter: v }),
60
+ /* @__PURE__ */ i(d, {
61
+ content: /* @__PURE__ */ i(e, { valueFormatter: y }),
58
62
  cursor: {
59
63
  fill: "var(--color-bg-muted)",
60
64
  opacity: .5
61
65
  }
62
66
  }),
63
- m.showLegend !== !1 && /* @__PURE__ */ r(c, {
67
+ h.showLegend !== !1 && /* @__PURE__ */ i(l, {
64
68
  wrapperStyle: { paddingTop: 20 },
65
- formatter: (e) => /* @__PURE__ */ r("span", {
69
+ formatter: (e) => /* @__PURE__ */ i("span", {
66
70
  style: { color: "var(--color-text-primary)" },
67
71
  children: e
68
72
  })
69
73
  }),
70
- _.map((e, t) => /* @__PURE__ */ r(a, {
74
+ t(h.referenceLines),
75
+ v.map((e, t) => /* @__PURE__ */ i(o, {
71
76
  dataKey: e,
72
- name: m.seriesNames?.[e] || e,
73
- fill: m.colors?.[t] || p[t % p.length],
77
+ name: h.seriesNames?.[e] || e,
78
+ fill: h.colors?.[t] || m[t % m.length],
74
79
  radius: [
75
80
  4,
76
81
  4,
77
82
  0,
78
83
  0
79
84
  ],
80
- hide: h.includes(e),
81
- stackId: m.stacked ? "stack" : void 0
85
+ hide: g.includes(e),
86
+ stackId: h.stacked ? "stack" : void 0
82
87
  }, e))
83
88
  ]
84
89
  })
85
90
  }) : null;
86
91
  });
87
92
  //#endregion
88
- export { m as default };
93
+ export { h as default };
89
94
 
90
95
  //# sourceMappingURL=BarChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.js","names":[],"sources":["../../../../../../src/bigconsole/components/widgets/chart/charts/BarChart.tsx"],"sourcesContent":["/**\n * BarChart Component\n *\n * Bar chart using Recharts.\n */\n\nimport { type FC, memo, useMemo } from 'react';\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n Legend,\n} from 'recharts';\nimport { ChartTooltip } from '../ChartTooltip';\nimport type { ChartConfig, ChartData } from './types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface BarChartProps {\n /** Chart data */\n data: ChartData[];\n /** Chart configuration */\n config: ChartConfig;\n /** Series to hide */\n hiddenSeries?: string[];\n /** Click handler for bars */\n onDataClick?: (data: ChartData, index: number) => void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst DEFAULT_COLORS = [\n 'var(--color-chart-1)',\n 'var(--color-chart-2)',\n 'var(--color-chart-3)',\n 'var(--color-chart-4)',\n 'var(--color-chart-5)',\n];\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const BarChart: FC<BarChartProps> = memo(function BarChart({\n data = [],\n config,\n hiddenSeries = [],\n onDataClick,\n}) {\n // Extract data keys (series)\n const dataKeys = useMemo(() => {\n if (!data?.length) return [];\n const keys = Object.keys(data[0]).filter((key) => key !== config.xAxisKey && typeof data[0][key] === 'number');\n return keys;\n }, [data, config.xAxisKey]);\n\n // Format value\n const formatValue = (value: number | string): string => {\n if (typeof value !== 'number') return String(value);\n return new Intl.NumberFormat('en-US', {\n notation: value >= 10000 ? 'compact' : 'standard',\n maximumFractionDigits: 2,\n }).format(value);\n };\n\n if (!data?.length) {\n return null;\n }\n\n return (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n margin={{ top: 10, right: 10, left: 0, bottom: 0 }}\n onClick={(e) => {\n if (e?.activePayload?.[0] && onDataClick) {\n onDataClick(e.activePayload[0].payload, e.activeTooltipIndex || 0);\n }\n }}\n >\n {config.showGrid !== false && (\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"var(--color-border-default)\" opacity={0.5} vertical={false} />\n )}\n\n <XAxis\n dataKey={config.xAxisKey || 'name'}\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n />\n\n <YAxis\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n tickFormatter={formatValue}\n />\n\n <Tooltip\n content={<ChartTooltip valueFormatter={formatValue} />}\n cursor={{ fill: 'var(--color-bg-muted)', opacity: 0.5 }}\n />\n\n {config.showLegend !== false && (\n <Legend\n wrapperStyle={{ paddingTop: 20 }}\n formatter={(value) => <span style={{ color: 'var(--color-text-primary)' }}>{value}</span>}\n />\n )}\n\n {dataKeys.map((key, index) => (\n <Bar\n key={key}\n dataKey={key}\n name={config.seriesNames?.[key] || key}\n fill={config.colors?.[index] || DEFAULT_COLORS[index % DEFAULT_COLORS.length]}\n radius={[4, 4, 0, 0]}\n hide={hiddenSeries.includes(key)}\n stackId={config.stacked ? 'stack' : undefined}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n );\n});\n\nexport default BarChart;\n"],"mappings":";;;;;AAuCA,IAAM,IAAiB;CACrB;CACA;CACA;CACA;CACA;CACD,EAMY,IAA8B,EAAK,SAAkB,EAChE,UAAO,EAAE,EACT,WACA,kBAAe,EAAE,EACjB,kBACC;CAED,IAAM,IAAW,QACV,GAAM,SACE,OAAO,KAAK,EAAK,GAAG,CAAC,QAAQ,MAAQ,MAAQ,EAAO,YAAY,OAAO,EAAK,GAAG,MAAS,SAAS,GADpF,EAAE,EAG3B,CAAC,GAAM,EAAO,SAAS,CAAC,EAGrB,KAAe,MACf,OAAO,KAAU,WACd,IAAI,KAAK,aAAa,SAAS;EACpC,UAAU,KAAS,MAAQ,YAAY;EACvC,uBAAuB;EACxB,CAAC,CAAC,OAAO,EAAM,GAJsB,OAAO,EAAM;AAWrD,QAJK,GAAM,SAKT,kBAAC,GAAD;EAAqB,OAAM;EAAO,QAAO;YACvC,kBAAC,GAAD;GACQ;GACN,QAAQ;IAAE,KAAK;IAAI,OAAO;IAAI,MAAM;IAAG,QAAQ;IAAG;GAClD,UAAU,MAAM;AACd,IAAI,GAAG,gBAAgB,MAAM,KAC3B,EAAY,EAAE,cAAc,GAAG,SAAS,EAAE,sBAAsB,EAAE;;aALxE;IASG,EAAO,aAAa,MACnB,kBAAC,GAAD;KAAe,iBAAgB;KAAM,QAAO;KAA8B,SAAS;KAAK,UAAU;KAAS,CAAA;IAG7G,kBAAC,GAAD;KACE,SAAS,EAAO,YAAY;KAC5B,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU,EAAE,QAAQ,+BAA+B;KACnD,UAAU,EAAE,QAAQ,+BAA+B;KACnD,CAAA;IAEF,kBAAC,GAAD;KACE,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU,EAAE,QAAQ,+BAA+B;KACnD,UAAU,EAAE,QAAQ,+BAA+B;KACnD,eAAe;KACf,CAAA;IAEF,kBAAC,GAAD;KACE,SAAS,kBAAC,GAAD,EAAc,gBAAgB,GAAe,CAAA;KACtD,QAAQ;MAAE,MAAM;MAAyB,SAAS;MAAK;KACvD,CAAA;IAED,EAAO,eAAe,MACrB,kBAAC,GAAD;KACE,cAAc,EAAE,YAAY,IAAI;KAChC,YAAY,MAAU,kBAAC,QAAD;MAAM,OAAO,EAAE,OAAO,6BAA6B;gBAAG;MAAa,CAAA;KACzF,CAAA;IAGH,EAAS,KAAK,GAAK,MAClB,kBAAC,GAAD;KAEE,SAAS;KACT,MAAM,EAAO,cAAc,MAAQ;KACnC,MAAM,EAAO,SAAS,MAAU,EAAe,IAAQ,EAAe;KACtE,QAAQ;MAAC;MAAG;MAAG;MAAG;MAAE;KACpB,MAAM,EAAa,SAAS,EAAI;KAChC,SAAS,EAAO,UAAU,UAAU,KAAA;KACpC,EAPK,EAOL,CACF;IACe;;EACC,CAAA,GAxDf;EA0DT"}
1
+ {"version":3,"file":"BarChart.js","names":[],"sources":["../../../../../../src/bigconsole/components/widgets/chart/charts/BarChart.tsx"],"sourcesContent":["/**\n * BarChart Component\n *\n * Bar chart using Recharts.\n */\n\nimport { type FC, memo, useMemo } from 'react';\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n Legend,\n} from 'recharts';\nimport { ChartTooltip } from '../ChartTooltip';\nimport type { ChartConfig, ChartData } from './types';\nimport { buildReferenceElements } from './referenceElements';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface BarChartProps {\n /** Chart data */\n data: ChartData[];\n /** Chart configuration */\n config: ChartConfig;\n /** Series to hide */\n hiddenSeries?: string[];\n /** Click handler for bars */\n onDataClick?: (data: ChartData, index: number) => void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst DEFAULT_COLORS = [\n 'var(--color-chart-1)',\n 'var(--color-chart-2)',\n 'var(--color-chart-3)',\n 'var(--color-chart-4)',\n 'var(--color-chart-5)',\n];\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const BarChart: FC<BarChartProps> = memo(function BarChart({\n data = [],\n config,\n hiddenSeries = [],\n onDataClick,\n}) {\n // Extract data keys (series)\n const dataKeys = useMemo(() => {\n if (!data?.length) return [];\n const keys = Object.keys(data[0]).filter((key) => key !== config.xAxisKey && typeof data[0][key] === 'number');\n return keys;\n }, [data, config.xAxisKey]);\n\n // Format value\n const formatValue = (value: number | string): string => {\n if (typeof value !== 'number') return String(value);\n return new Intl.NumberFormat('en-US', {\n notation: value >= 10000 ? 'compact' : 'standard',\n maximumFractionDigits: 2,\n }).format(value);\n };\n\n if (!data?.length) {\n return null;\n }\n\n return (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n margin={{ top: 10, right: 10, left: 0, bottom: 0 }}\n onClick={(e) => {\n if (e?.activePayload?.[0] && onDataClick) {\n onDataClick(e.activePayload[0].payload, e.activeTooltipIndex || 0);\n }\n }}\n >\n {config.showGrid !== false && (\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"var(--color-border-default)\" opacity={0.5} vertical={false} />\n )}\n\n <XAxis\n dataKey={config.xAxisKey || 'name'}\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n />\n\n <YAxis\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n tickFormatter={formatValue}\n scale={config.logScale ? 'log' : 'auto'}\n domain={config.logScale ? ['auto', 'auto'] : undefined}\n allowDataOverflow={config.logScale || undefined}\n />\n\n <Tooltip\n content={<ChartTooltip valueFormatter={formatValue} />}\n cursor={{ fill: 'var(--color-bg-muted)', opacity: 0.5 }}\n />\n\n {config.showLegend !== false && (\n <Legend\n wrapperStyle={{ paddingTop: 20 }}\n formatter={(value) => <span style={{ color: 'var(--color-text-primary)' }}>{value}</span>}\n />\n )}\n\n {buildReferenceElements(config.referenceLines)}\n\n {dataKeys.map((key, index) => (\n <Bar\n key={key}\n dataKey={key}\n name={config.seriesNames?.[key] || key}\n fill={config.colors?.[index] || DEFAULT_COLORS[index % DEFAULT_COLORS.length]}\n radius={[4, 4, 0, 0]}\n hide={hiddenSeries.includes(key)}\n stackId={config.stacked ? 'stack' : undefined}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n );\n});\n\nexport default BarChart;\n"],"mappings":";;;;;;AAwCA,IAAM,IAAiB;CACrB;CACA;CACA;CACA;CACA;CACD,EAMY,IAA8B,EAAK,SAAkB,EAChE,UAAO,EAAE,EACT,WACA,kBAAe,EAAE,EACjB,kBACC;CAED,IAAM,IAAW,QACV,GAAM,SACE,OAAO,KAAK,EAAK,GAAG,CAAC,QAAQ,MAAQ,MAAQ,EAAO,YAAY,OAAO,EAAK,GAAG,MAAS,SAAS,GADpF,EAAE,EAG3B,CAAC,GAAM,EAAO,SAAS,CAAC,EAGrB,KAAe,MACf,OAAO,KAAU,WACd,IAAI,KAAK,aAAa,SAAS;EACpC,UAAU,KAAS,MAAQ,YAAY;EACvC,uBAAuB;EACxB,CAAC,CAAC,OAAO,EAAM,GAJsB,OAAO,EAAM;AAWrD,QAJK,GAAM,SAKT,kBAAC,GAAD;EAAqB,OAAM;EAAO,QAAO;YACvC,kBAAC,GAAD;GACQ;GACN,QAAQ;IAAE,KAAK;IAAI,OAAO;IAAI,MAAM;IAAG,QAAQ;IAAG;GAClD,UAAU,MAAM;AACd,IAAI,GAAG,gBAAgB,MAAM,KAC3B,EAAY,EAAE,cAAc,GAAG,SAAS,EAAE,sBAAsB,EAAE;;aALxE;IASG,EAAO,aAAa,MACnB,kBAAC,GAAD;KAAe,iBAAgB;KAAM,QAAO;KAA8B,SAAS;KAAK,UAAU;KAAS,CAAA;IAG7G,kBAAC,GAAD;KACE,SAAS,EAAO,YAAY;KAC5B,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU,EAAE,QAAQ,+BAA+B;KACnD,UAAU,EAAE,QAAQ,+BAA+B;KACnD,CAAA;IAEF,kBAAC,GAAD;KACE,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU,EAAE,QAAQ,+BAA+B;KACnD,UAAU,EAAE,QAAQ,+BAA+B;KACnD,eAAe;KACf,OAAO,EAAO,WAAW,QAAQ;KACjC,QAAQ,EAAO,WAAW,CAAC,QAAQ,OAAO,GAAG,KAAA;KAC7C,mBAAmB,EAAO,YAAY,KAAA;KACtC,CAAA;IAEF,kBAAC,GAAD;KACE,SAAS,kBAAC,GAAD,EAAc,gBAAgB,GAAe,CAAA;KACtD,QAAQ;MAAE,MAAM;MAAyB,SAAS;MAAK;KACvD,CAAA;IAED,EAAO,eAAe,MACrB,kBAAC,GAAD;KACE,cAAc,EAAE,YAAY,IAAI;KAChC,YAAY,MAAU,kBAAC,QAAD;MAAM,OAAO,EAAE,OAAO,6BAA6B;gBAAG;MAAa,CAAA;KACzF,CAAA;IAGH,EAAuB,EAAO,eAAe;IAE7C,EAAS,KAAK,GAAK,MAClB,kBAAC,GAAD;KAEE,SAAS;KACT,MAAM,EAAO,cAAc,MAAQ;KACnC,MAAM,EAAO,SAAS,MAAU,EAAe,IAAQ,EAAe;KACtE,QAAQ;MAAC;MAAG;MAAG;MAAG;MAAE;KACpB,MAAM,EAAa,SAAS,EAAI;KAChC,SAAS,EAAO,UAAU,UAAU,KAAA;KACpC,EAPK,EAOL,CACF;IACe;;EACC,CAAA,GA7Df;EA+DT"}
@@ -0,0 +1,139 @@
1
+ import e from "../ChartTooltip.js";
2
+ import { buildReferenceElements as t } from "./referenceElements.js";
3
+ import { memo as n, useMemo as r } from "react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { Bar as o, CartesianGrid as s, ComposedChart as c, Legend as l, Line as u, ResponsiveContainer as d, Tooltip as f, XAxis as p, YAxis as m } from "recharts";
6
+ //#region src/bigconsole/components/widgets/chart/charts/ComboChart.tsx
7
+ var h = [
8
+ "var(--color-chart-1)",
9
+ "var(--color-chart-2)",
10
+ "var(--color-chart-3)",
11
+ "var(--color-chart-4)",
12
+ "var(--color-chart-5)"
13
+ ], g = n(function({ data: n = [], config: g, hiddenSeries: _ = [], onDataClick: v }) {
14
+ let y = r(() => g.series?.length ? g.series : n.length ? Object.keys(n[0]).filter((e) => e !== g.xAxisKey && typeof n[0][e] == "number").map((e, t) => ({
15
+ field: e,
16
+ type: t === 0 ? "bar" : "line",
17
+ axis: t === 0 ? "left" : "right"
18
+ })) : [], [
19
+ g.series,
20
+ n,
21
+ g.xAxisKey
22
+ ]), b = r(() => y.some((e) => e.axis === "right"), [y]), x = (e) => typeof e == "number" ? new Intl.NumberFormat("en-US", {
23
+ notation: e >= 1e4 ? "compact" : "standard",
24
+ maximumFractionDigits: 2
25
+ }).format(e) : String(e);
26
+ return n?.length ? /* @__PURE__ */ i(d, {
27
+ width: "100%",
28
+ height: "100%",
29
+ children: /* @__PURE__ */ a(c, {
30
+ data: n,
31
+ margin: {
32
+ top: 10,
33
+ right: 10,
34
+ left: 0,
35
+ bottom: 0
36
+ },
37
+ onClick: (e) => {
38
+ e?.activePayload?.[0] && v && v(e.activePayload[0].payload, e.activeTooltipIndex || 0);
39
+ },
40
+ children: [
41
+ g.showGrid !== !1 && /* @__PURE__ */ i(s, {
42
+ strokeDasharray: "3 3",
43
+ stroke: "var(--color-border-default)",
44
+ opacity: .5,
45
+ vertical: !1
46
+ }),
47
+ /* @__PURE__ */ i(p, {
48
+ dataKey: g.xAxisKey || "name",
49
+ tick: {
50
+ fill: "var(--color-text-secondary)",
51
+ fontSize: 12
52
+ },
53
+ tickLine: { stroke: "var(--color-border-default)" },
54
+ axisLine: { stroke: "var(--color-border-default)" }
55
+ }),
56
+ /* @__PURE__ */ i(m, {
57
+ yAxisId: "left",
58
+ tick: {
59
+ fill: "var(--color-text-secondary)",
60
+ fontSize: 12
61
+ },
62
+ tickLine: { stroke: "var(--color-border-default)" },
63
+ axisLine: { stroke: "var(--color-border-default)" },
64
+ tickFormatter: x,
65
+ label: g.yAxisLabel ? {
66
+ value: g.yAxisLabel,
67
+ angle: -90,
68
+ position: "insideLeft",
69
+ fill: "var(--color-text-secondary)"
70
+ } : void 0
71
+ }),
72
+ b && /* @__PURE__ */ i(m, {
73
+ yAxisId: "right",
74
+ orientation: "right",
75
+ tick: {
76
+ fill: "var(--color-text-secondary)",
77
+ fontSize: 12
78
+ },
79
+ tickLine: { stroke: "var(--color-border-default)" },
80
+ axisLine: { stroke: "var(--color-border-default)" },
81
+ tickFormatter: x,
82
+ label: g.yAxisRightLabel ? {
83
+ value: g.yAxisRightLabel,
84
+ angle: 90,
85
+ position: "insideRight",
86
+ fill: "var(--color-text-secondary)"
87
+ } : void 0
88
+ }),
89
+ /* @__PURE__ */ i(f, {
90
+ content: /* @__PURE__ */ i(e, { valueFormatter: x }),
91
+ cursor: {
92
+ fill: "var(--color-bg-muted)",
93
+ opacity: .5
94
+ }
95
+ }),
96
+ g.showLegend !== !1 && /* @__PURE__ */ i(l, {
97
+ wrapperStyle: { paddingTop: 20 },
98
+ formatter: (e) => /* @__PURE__ */ i("span", {
99
+ style: { color: "var(--color-text-primary)" },
100
+ children: e
101
+ })
102
+ }),
103
+ y.map((e, t) => {
104
+ let n = e.color || g.colors?.[t] || h[t % h.length], r = e.axis === "right" && b ? "right" : "left", a = e.label || g.seriesNames?.[e.field] || e.field, s = _.includes(e.field);
105
+ return e.type === "line" ? /* @__PURE__ */ i(u, {
106
+ yAxisId: r,
107
+ type: g.curveType || "monotone",
108
+ dataKey: e.field,
109
+ name: a,
110
+ stroke: n,
111
+ strokeWidth: 2,
112
+ dot: g.showDots !== !1,
113
+ activeDot: { r: 6 },
114
+ hide: s,
115
+ connectNulls: !0
116
+ }, e.field) : /* @__PURE__ */ i(o, {
117
+ yAxisId: r,
118
+ dataKey: e.field,
119
+ name: a,
120
+ fill: n,
121
+ radius: [
122
+ 4,
123
+ 4,
124
+ 0,
125
+ 0
126
+ ],
127
+ hide: s,
128
+ stackId: g.stacked ? "stack" : void 0
129
+ }, e.field);
130
+ }),
131
+ t(g.referenceLines, { yAxisId: "left" })
132
+ ]
133
+ })
134
+ }) : null;
135
+ });
136
+ //#endregion
137
+ export { g as default };
138
+
139
+ //# sourceMappingURL=ComboChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboChart.js","names":[],"sources":["../../../../../../src/bigconsole/components/widgets/chart/charts/ComboChart.tsx"],"sourcesContent":["/**\n * ComboChart Component\n *\n * Combo / dual-axis chart (mix of bars and lines, optional secondary Y-axis)\n * using Recharts `ComposedChart`. Drives the marketed\n * \"spend (bars) vs conversions (line)\" dual-axis view.\n */\n\nimport { type FC, memo, useMemo } from 'react';\nimport { ComposedChart, Bar, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend } from 'recharts';\nimport { ChartTooltip } from '../ChartTooltip';\nimport type { ChartConfig, ChartData, SeriesConfig } from './types';\nimport { buildReferenceElements } from './referenceElements';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ComboChartProps {\n data: ChartData[];\n config: ChartConfig;\n hiddenSeries?: string[];\n onDataClick?: (data: ChartData, index: number) => void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst DEFAULT_COLORS = [\n 'var(--color-chart-1)',\n 'var(--color-chart-2)',\n 'var(--color-chart-3)',\n 'var(--color-chart-4)',\n 'var(--color-chart-5)',\n];\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const ComboChart: FC<ComboChartProps> = memo(function ComboChart({\n data = [],\n config,\n hiddenSeries = [],\n onDataClick,\n}) {\n // Resolve series: explicit config wins; otherwise derive from numeric keys\n // (first → bar on the left axis, the rest → lines on the right axis).\n const series: SeriesConfig[] = useMemo(() => {\n if (config.series?.length) return config.series;\n if (!data.length) return [];\n const keys = Object.keys(data[0]).filter((k) => k !== config.xAxisKey && typeof data[0][k] === 'number');\n return keys.map((field, i) => ({\n field,\n type: i === 0 ? 'bar' : 'line',\n axis: i === 0 ? 'left' : 'right',\n }));\n }, [config.series, data, config.xAxisKey]);\n\n const hasRightAxis = useMemo(() => series.some((s) => s.axis === 'right'), [series]);\n\n const formatValue = (value: number | string): string => {\n if (typeof value !== 'number') return String(value);\n return new Intl.NumberFormat('en-US', {\n notation: value >= 10000 ? 'compact' : 'standard',\n maximumFractionDigits: 2,\n }).format(value);\n };\n\n if (!data?.length) {\n return null;\n }\n\n return (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ComposedChart\n data={data}\n margin={{ top: 10, right: 10, left: 0, bottom: 0 }}\n onClick={(e) => {\n if (e?.activePayload?.[0] && onDataClick) {\n onDataClick(e.activePayload[0].payload, e.activeTooltipIndex || 0);\n }\n }}\n >\n {config.showGrid !== false && (\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"var(--color-border-default)\" opacity={0.5} vertical={false} />\n )}\n\n <XAxis\n dataKey={config.xAxisKey || 'name'}\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n />\n\n <YAxis\n yAxisId=\"left\"\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n tickFormatter={formatValue}\n label={\n config.yAxisLabel\n ? { value: config.yAxisLabel, angle: -90, position: 'insideLeft', fill: 'var(--color-text-secondary)' }\n : undefined\n }\n />\n\n {hasRightAxis && (\n <YAxis\n yAxisId=\"right\"\n orientation=\"right\"\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 12 }}\n tickLine={{ stroke: 'var(--color-border-default)' }}\n axisLine={{ stroke: 'var(--color-border-default)' }}\n tickFormatter={formatValue}\n label={\n config.yAxisRightLabel\n ? {\n value: config.yAxisRightLabel,\n angle: 90,\n position: 'insideRight',\n fill: 'var(--color-text-secondary)',\n }\n : undefined\n }\n />\n )}\n\n <Tooltip\n content={<ChartTooltip valueFormatter={formatValue} />}\n cursor={{ fill: 'var(--color-bg-muted)', opacity: 0.5 }}\n />\n\n {config.showLegend !== false && (\n <Legend\n wrapperStyle={{ paddingTop: 20 }}\n formatter={(value) => <span style={{ color: 'var(--color-text-primary)' }}>{value}</span>}\n />\n )}\n\n {series.map((s, index) => {\n const color = s.color || config.colors?.[index] || DEFAULT_COLORS[index % DEFAULT_COLORS.length];\n const yAxisId = s.axis === 'right' && hasRightAxis ? 'right' : 'left';\n const name = s.label || config.seriesNames?.[s.field] || s.field;\n const hidden = hiddenSeries.includes(s.field);\n\n if (s.type === 'line') {\n return (\n <Line\n key={s.field}\n yAxisId={yAxisId}\n type={config.curveType || 'monotone'}\n dataKey={s.field}\n name={name}\n stroke={color}\n strokeWidth={2}\n dot={config.showDots !== false}\n activeDot={{ r: 6 }}\n hide={hidden}\n connectNulls\n />\n );\n }\n return (\n <Bar\n key={s.field}\n yAxisId={yAxisId}\n dataKey={s.field}\n name={name}\n fill={color}\n radius={[4, 4, 0, 0]}\n hide={hidden}\n stackId={config.stacked ? 'stack' : undefined}\n />\n );\n })}\n\n {buildReferenceElements(config.referenceLines, { yAxisId: 'left' })}\n </ComposedChart>\n </ResponsiveContainer>\n );\n});\n\nexport default ComboChart;\n"],"mappings":"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"}
@@ -1,24 +1,25 @@
1
1
  import e from "../ChartTooltip.js";
2
- import { memo as t, useMemo as n } from "react";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
- import { CartesianGrid as a, Legend as o, Line as s, LineChart as c, ResponsiveContainer as l, Tooltip as u, XAxis as d, YAxis as f } from "recharts";
2
+ import { buildReferenceElements as t } from "./referenceElements.js";
3
+ import { memo as n, useMemo as r } from "react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { CartesianGrid as o, Legend as s, Line as c, LineChart as l, ResponsiveContainer as u, Tooltip as d, XAxis as f, YAxis as p } from "recharts";
5
6
  //#region src/bigconsole/components/widgets/chart/charts/LineChart.tsx
6
- var p = [
7
+ var m = [
7
8
  "var(--color-chart-1)",
8
9
  "var(--color-chart-2)",
9
10
  "var(--color-chart-3)",
10
11
  "var(--color-chart-4)",
11
12
  "var(--color-chart-5)"
12
- ], m = t(function({ data: t = [], config: m, hiddenSeries: h = [], onDataClick: g }) {
13
- let _ = n(() => t?.length ? Object.keys(t[0]).filter((e) => e !== m.xAxisKey && typeof t[0][e] == "number") : [], [t, m.xAxisKey]), v = (e) => typeof e == "number" ? new Intl.NumberFormat("en-US", {
13
+ ], h = n(function({ data: n = [], config: h, hiddenSeries: g = [], onDataClick: _ }) {
14
+ let v = r(() => n?.length ? Object.keys(n[0]).filter((e) => e !== h.xAxisKey && typeof n[0][e] == "number") : [], [n, h.xAxisKey]), y = (e) => typeof e == "number" ? new Intl.NumberFormat("en-US", {
14
15
  notation: e >= 1e4 ? "compact" : "standard",
15
16
  maximumFractionDigits: 2
16
17
  }).format(e) : String(e);
17
- return t?.length ? /* @__PURE__ */ r(l, {
18
+ return n?.length ? /* @__PURE__ */ i(u, {
18
19
  width: "100%",
19
20
  height: "100%",
20
- children: /* @__PURE__ */ i(c, {
21
- data: t,
21
+ children: /* @__PURE__ */ a(l, {
22
+ data: n,
22
23
  margin: {
23
24
  top: 10,
24
25
  right: 10,
@@ -26,64 +27,68 @@ var p = [
26
27
  bottom: 0
27
28
  },
28
29
  onClick: (e) => {
29
- e?.activePayload?.[0] && g && g(e.activePayload[0].payload, e.activeTooltipIndex || 0);
30
+ e?.activePayload?.[0] && _ && _(e.activePayload[0].payload, e.activeTooltipIndex || 0);
30
31
  },
31
32
  children: [
32
- m.showGrid !== !1 && /* @__PURE__ */ r(a, {
33
+ h.showGrid !== !1 && /* @__PURE__ */ i(o, {
33
34
  strokeDasharray: "3 3",
34
35
  stroke: "var(--color-border-default)",
35
36
  opacity: .5
36
37
  }),
37
- /* @__PURE__ */ r(d, {
38
- dataKey: m.xAxisKey || "name",
38
+ /* @__PURE__ */ i(f, {
39
+ dataKey: h.xAxisKey || "name",
39
40
  tick: {
40
41
  fill: "var(--color-text-secondary)",
41
42
  fontSize: 12
42
43
  },
43
44
  tickLine: { stroke: "var(--color-border-default)" },
44
45
  axisLine: { stroke: "var(--color-border-default)" },
45
- label: m.xAxisLabel ? {
46
- value: m.xAxisLabel,
46
+ label: h.xAxisLabel ? {
47
+ value: h.xAxisLabel,
47
48
  position: "insideBottom",
48
49
  offset: -5,
49
50
  fill: "var(--color-text-secondary)"
50
51
  } : void 0
51
52
  }),
52
- /* @__PURE__ */ r(f, {
53
+ /* @__PURE__ */ i(p, {
53
54
  tick: {
54
55
  fill: "var(--color-text-secondary)",
55
56
  fontSize: 12
56
57
  },
57
58
  tickLine: { stroke: "var(--color-border-default)" },
58
59
  axisLine: { stroke: "var(--color-border-default)" },
59
- tickFormatter: v,
60
- label: m.yAxisLabel ? {
61
- value: m.yAxisLabel,
60
+ tickFormatter: y,
61
+ scale: h.logScale ? "log" : "auto",
62
+ domain: h.logScale ? ["auto", "auto"] : void 0,
63
+ allowDataOverflow: h.logScale || void 0,
64
+ label: h.yAxisLabel ? {
65
+ value: h.yAxisLabel,
62
66
  angle: -90,
63
67
  position: "insideLeft",
64
68
  fill: "var(--color-text-secondary)"
65
69
  } : void 0
66
70
  }),
67
- /* @__PURE__ */ r(u, {
68
- content: /* @__PURE__ */ r(e, { valueFormatter: v }),
71
+ /* @__PURE__ */ i(d, {
72
+ content: /* @__PURE__ */ i(e, { valueFormatter: y }),
69
73
  cursor: { stroke: "var(--color-border-default)" }
70
74
  }),
71
- m.showLegend !== !1 && /* @__PURE__ */ r(o, {
75
+ h.showLegend !== !1 && /* @__PURE__ */ i(s, {
72
76
  wrapperStyle: { paddingTop: 20 },
73
- formatter: (e) => /* @__PURE__ */ r("span", {
77
+ formatter: (e) => /* @__PURE__ */ i("span", {
74
78
  style: { color: "var(--color-text-primary)" },
75
79
  children: e
76
80
  })
77
81
  }),
78
- _.map((e, t) => /* @__PURE__ */ r(s, {
79
- type: m.curveType || "monotone",
82
+ t(h.referenceLines),
83
+ v.map((e, t) => /* @__PURE__ */ i(c, {
84
+ type: h.curveType || "monotone",
80
85
  dataKey: e,
81
- name: m.seriesNames?.[e] || e,
82
- stroke: m.colors?.[t] || p[t % p.length],
86
+ name: h.seriesNames?.[e] || e,
87
+ stroke: h.colors?.[t] || m[t % m.length],
83
88
  strokeWidth: 2,
84
- dot: m.showDots !== !1,
89
+ dot: h.showDots !== !1,
85
90
  activeDot: { r: 6 },
86
- hide: h.includes(e),
91
+ hide: g.includes(e),
87
92
  connectNulls: !0
88
93
  }, e))
89
94
  ]
@@ -91,6 +96,6 @@ var p = [
91
96
  }) : null;
92
97
  });
93
98
  //#endregion
94
- export { m as default };
99
+ export { h as default };
95
100
 
96
101
  //# sourceMappingURL=LineChart.js.map