@antv/gpt-vis 0.5.4 → 0.5.6

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 (86) hide show
  1. package/dist/cjs/Area/index.d.ts +2 -3
  2. package/dist/cjs/Area/index.js +48 -5
  3. package/dist/cjs/Bar/index.d.ts +2 -2
  4. package/dist/cjs/Bar/index.js +38 -7
  5. package/dist/cjs/ChartCodeRender/VisChart.d.ts +7 -1
  6. package/dist/cjs/ChartCodeRender/VisChart.js +100 -12
  7. package/dist/cjs/ChartCodeRender/index.js +16 -2
  8. package/dist/cjs/ChartCodeRender/type.d.ts +104 -5
  9. package/dist/cjs/Column/index.d.ts +2 -3
  10. package/dist/cjs/Column/index.js +38 -7
  11. package/dist/cjs/ConfigProvider/hooks/useConfig.js +2 -1
  12. package/dist/cjs/DualAxes/index.d.ts +1 -1
  13. package/dist/cjs/DualAxes/index.js +20 -8
  14. package/dist/cjs/FishboneDiagram/index.d.ts +1 -0
  15. package/dist/cjs/FishboneDiagram/index.js +21 -7
  16. package/dist/cjs/Histogram/index.d.ts +4 -3
  17. package/dist/cjs/Histogram/index.js +32 -3
  18. package/dist/cjs/IndentedTree/index.d.ts +1 -0
  19. package/dist/cjs/IndentedTree/index.js +32 -20
  20. package/dist/cjs/Line/index.d.ts +2 -3
  21. package/dist/cjs/Line/index.js +36 -3
  22. package/dist/cjs/MindMap/index.d.ts +1 -0
  23. package/dist/cjs/MindMap/index.js +29 -21
  24. package/dist/cjs/Pie/index.d.ts +2 -2
  25. package/dist/cjs/Pie/index.js +22 -3
  26. package/dist/cjs/Radar/index.d.ts +5 -3
  27. package/dist/cjs/Radar/index.js +106 -37
  28. package/dist/cjs/Scatter/index.d.ts +2 -3
  29. package/dist/cjs/Scatter/index.js +46 -3
  30. package/dist/cjs/Treemap/index.d.ts +2 -3
  31. package/dist/cjs/Treemap/index.js +22 -3
  32. package/dist/cjs/WordCloud/index.d.ts +2 -3
  33. package/dist/cjs/WordCloud/index.js +34 -7
  34. package/dist/cjs/theme.d.ts +2 -0
  35. package/dist/cjs/theme.js +133 -0
  36. package/dist/cjs/types/chart.d.ts +11 -0
  37. package/dist/cjs/utils/palette.d.ts +2 -0
  38. package/dist/cjs/utils/palette.js +54 -0
  39. package/dist/cjs/utils/plot.d.ts +1 -0
  40. package/dist/cjs/utils/plot.js +15 -0
  41. package/dist/cjs/version.d.ts +1 -1
  42. package/dist/cjs/version.js +1 -1
  43. package/dist/esm/Area/index.d.ts +2 -3
  44. package/dist/esm/Area/index.js +80 -6
  45. package/dist/esm/Bar/index.d.ts +2 -2
  46. package/dist/esm/Bar/index.js +56 -9
  47. package/dist/esm/ChartCodeRender/VisChart.d.ts +7 -1
  48. package/dist/esm/ChartCodeRender/VisChart.js +144 -34
  49. package/dist/esm/ChartCodeRender/index.js +15 -1
  50. package/dist/esm/ChartCodeRender/type.d.ts +104 -5
  51. package/dist/esm/Column/index.d.ts +2 -3
  52. package/dist/esm/Column/index.js +56 -9
  53. package/dist/esm/ConfigProvider/hooks/useConfig.js +9 -1
  54. package/dist/esm/DualAxes/index.d.ts +1 -1
  55. package/dist/esm/DualAxes/index.js +35 -12
  56. package/dist/esm/FishboneDiagram/index.d.ts +1 -0
  57. package/dist/esm/FishboneDiagram/index.js +23 -7
  58. package/dist/esm/Histogram/index.d.ts +4 -3
  59. package/dist/esm/Histogram/index.js +55 -5
  60. package/dist/esm/IndentedTree/index.d.ts +1 -0
  61. package/dist/esm/IndentedTree/index.js +36 -29
  62. package/dist/esm/Line/index.d.ts +2 -3
  63. package/dist/esm/Line/index.js +63 -4
  64. package/dist/esm/MindMap/index.d.ts +1 -0
  65. package/dist/esm/MindMap/index.js +37 -30
  66. package/dist/esm/Pie/index.d.ts +2 -2
  67. package/dist/esm/Pie/index.js +37 -4
  68. package/dist/esm/Radar/index.d.ts +5 -3
  69. package/dist/esm/Radar/index.js +138 -42
  70. package/dist/esm/Scatter/index.d.ts +2 -3
  71. package/dist/esm/Scatter/index.js +65 -5
  72. package/dist/esm/Treemap/index.d.ts +2 -3
  73. package/dist/esm/Treemap/index.js +38 -4
  74. package/dist/esm/WordCloud/index.d.ts +2 -3
  75. package/dist/esm/WordCloud/index.js +51 -9
  76. package/dist/esm/theme.d.ts +2 -0
  77. package/dist/esm/theme.js +103 -0
  78. package/dist/esm/types/chart.d.ts +11 -0
  79. package/dist/esm/utils/palette.d.ts +2 -0
  80. package/dist/esm/utils/palette.js +2 -0
  81. package/dist/esm/utils/plot.d.ts +1 -0
  82. package/dist/esm/utils/plot.js +10 -0
  83. package/dist/esm/version.d.ts +1 -1
  84. package/dist/esm/version.js +1 -1
  85. package/dist/umd/index.min.js +1 -1
  86. package/package.json +2 -1
@@ -63,9 +63,10 @@ function usePlotConfig(name, defaultConfig, props) {
63
63
  const mergedProps = { ...globalConfig, ...props };
64
64
  const transformedProps = (0, import_plot.transform2ADCProps)(mergedProps);
65
65
  const _defaultConfig = typeof defaultConfig === "function" ? defaultConfig(transformedProps) : defaultConfig;
66
+ const { style, ...restTransformedProps } = transformedProps;
66
67
  const config = {
67
68
  ..._defaultConfig,
68
- ...transformedProps
69
+ ...restTransformedProps
69
70
  };
70
71
  return config;
71
72
  }
@@ -4,7 +4,7 @@ export type DualAxesProps = Partial<DualAxesConfig> & {
4
4
  categories: string[];
5
5
  axisXTitle?: string;
6
6
  series: DualAxesSeriesItem[];
7
- legendTypeList: string[];
7
+ legendTypeList?: string[];
8
8
  };
9
9
  export type DualAxesSeriesItem = {
10
10
  type: string;
@@ -35,9 +35,20 @@ module.exports = __toCommonJS(DualAxes_exports);
35
35
  var import_plots = require("@ant-design/plots");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_hooks = require("../ConfigProvider/hooks");
38
+ var import_theme = require("../theme");
38
39
  var import_util = require("./util");
39
40
  var defaultConfig = (props) => {
40
- const { xField = "category", axisXTitle, legendTypeList } = props;
41
+ const { xField = "category", axisXTitle, legendTypeList, style = {} } = props;
42
+ const { palette, backgroundColor } = style;
43
+ const hasPalette = !!(palette == null ? void 0 : palette[0]);
44
+ let paletteConfig = { color: void 0 };
45
+ if (hasPalette) {
46
+ paletteConfig = {
47
+ color: {
48
+ range: palette
49
+ }
50
+ };
51
+ }
41
52
  return {
42
53
  xField,
43
54
  axis: {
@@ -48,23 +59,24 @@ var defaultConfig = (props) => {
48
59
  legend: {
49
60
  color: {
50
61
  itemMarker: (v, i) => {
51
- return legendTypeList[i];
62
+ return legendTypeList == null ? void 0 : legendTypeList[i];
52
63
  }
53
64
  }
54
65
  },
55
66
  scale: {
56
- color: {
57
- palette: "category10"
58
- }
59
- }
67
+ ...paletteConfig
68
+ },
69
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : { viewStyle: void 0 }
60
70
  };
61
71
  };
62
72
  var DualAxes = (props) => {
63
- const { categories, series, ...others } = props;
73
+ const { categories, series, theme = "default", ...others } = props;
74
+ const themeConfig = import_theme.THEME_MAP[theme];
64
75
  const transformData = (0, import_react.useMemo)(() => (0, import_util.transform)(series, categories), [props]);
65
76
  const config = (0, import_hooks.usePlotConfig)("DualAxes", defaultConfig, {
66
77
  ...others,
67
- ...transformData
78
+ ...transformData,
79
+ theme: themeConfig
68
80
  });
69
81
  return /* @__PURE__ */ import_react.default.createElement(import_plots.DualAxes, { ...config });
70
82
  };
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { TreeGraphProps } from '../types';
3
3
  export interface FishboneDiagramProps extends TreeGraphProps {
4
+ theme?: 'default' | 'academy';
4
5
  }
5
6
  declare const FishboneDiagram: React.FC<FishboneDiagramProps>;
6
7
  export default FishboneDiagram;
@@ -35,18 +35,32 @@ module.exports = __toCommonJS(FishboneDiagram_exports);
35
35
  var import_graphs = require("@ant-design/graphs");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_hooks = require("../ConfigProvider/hooks");
38
+ var import_theme = require("../theme");
38
39
  var import_graph = require("../utils/graph");
39
- var defaultConfig = {
40
- autoFit: "view",
41
- autoResize: true,
42
- zoomRange: [0.1, 5],
43
- zoom: 1,
44
- behaviors: ["drag-canvas"]
40
+ var getDefaultConfig = (props) => {
41
+ const { theme = "default" } = props;
42
+ return {
43
+ autoFit: "view",
44
+ autoResize: true,
45
+ zoomRange: [0.1, 5],
46
+ zoom: 1,
47
+ behaviors: ["drag-canvas"],
48
+ transforms: (prev) => [
49
+ {
50
+ ...prev.find((transform) => transform.key === "assign-color-by-branch") || {},
51
+ ...import_theme.G6THEME_MAP[theme]
52
+ }
53
+ ]
54
+ };
45
55
  };
46
56
  var FishboneDiagram = (props) => {
47
57
  const { data: propsData, ...restProps } = props;
48
58
  const data = (0, import_react.useMemo)(() => (0, import_graph.visTreeData2GraphData)(propsData), [propsData]);
49
- const config = (0, import_hooks.useGraphConfig)("FishboneDiagram", defaultConfig, restProps);
59
+ const config = (0, import_hooks.useGraphConfig)(
60
+ "FishboneDiagram",
61
+ getDefaultConfig(props),
62
+ restProps
63
+ );
50
64
  return /* @__PURE__ */ import_react.default.createElement(import_graphs.Fishbone, { data, ...config });
51
65
  };
52
66
  var FishboneDiagram_default = FishboneDiagram;
@@ -1,6 +1,7 @@
1
- import type { HistogramConfig } from '@ant-design/plots';
2
1
  import React from 'react';
3
- import type { BasePlotProps } from '../types';
4
- export type HistogramProps = BasePlotProps<number> & Partial<HistogramConfig>;
2
+ import type { BasePlotProps, Style, Theme } from '../types';
3
+ export type HistogramProps = BasePlotProps<number> & Theme & Style & {
4
+ binNumber: number;
5
+ };
5
6
  declare const Histogram: (props: HistogramProps) => React.JSX.Element;
6
7
  export default Histogram;
@@ -35,16 +35,45 @@ module.exports = __toCommonJS(Histogram_exports);
35
35
  var import_plots = require("@ant-design/plots");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_hooks = require("../ConfigProvider/hooks");
38
+ var import_theme = require("../theme");
38
39
  var defaultConfig = (props) => {
39
- const { binField = (d) => d, binNumber } = props;
40
+ const { binField = (d) => d, binNumber, style = {} } = props;
41
+ const { backgroundColor, palette } = style;
42
+ const hasPalette = !!(palette == null ? void 0 : palette[0]);
43
+ let paletteConfig = { color: void 0 };
44
+ if (hasPalette) {
45
+ paletteConfig = {
46
+ color: {
47
+ range: palette
48
+ }
49
+ };
50
+ }
40
51
  return {
41
52
  binField,
42
53
  binNumber,
43
- style: { inset: 0.5 }
54
+ style: { inset: 0.5, minHeight: 1, columnWidthRatio: 1 },
55
+ legend: false,
56
+ // @ts-ignore
57
+ encode: {
58
+ x: (d) => d,
59
+ y: "count",
60
+ color: () => "all"
61
+ },
62
+ scale: {
63
+ y: {
64
+ nice: true
65
+ },
66
+ ...paletteConfig
67
+ },
68
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : { viewStyle: void 0 }
44
69
  };
45
70
  };
46
71
  var Histogram = (props) => {
47
- const config = (0, import_hooks.usePlotConfig)("Histogram", defaultConfig, props);
72
+ const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
73
+ const config = (0, import_hooks.usePlotConfig)("Histogram", defaultConfig, {
74
+ ...props,
75
+ theme: themeConfig
76
+ });
48
77
  return /* @__PURE__ */ import_react.default.createElement(import_plots.Histogram, { ...config });
49
78
  };
50
79
  var Histogram_default = Histogram;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { TreeGraphProps } from '../types';
3
3
  export interface IndentedTreeProps extends TreeGraphProps {
4
+ theme?: 'default' | 'academy';
4
5
  }
5
6
  declare const IndentedTree: React.FC<IndentedTreeProps>;
6
7
  export default IndentedTree;
@@ -35,32 +35,44 @@ module.exports = __toCommonJS(IndentedTree_exports);
35
35
  var import_graphs = require("@ant-design/graphs");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_hooks = require("../ConfigProvider/hooks");
38
+ var import_theme = require("../theme");
38
39
  var import_graph = require("../utils/graph");
39
- var defaultConfig = {
40
- type: "linear",
41
- autoFit: "view",
42
- autoResize: true,
43
- zoomRange: [0.1, 5],
44
- zoom: 1,
45
- node: { animation: { update: false, translate: false } },
46
- edge: { animation: { update: false, translate: false } },
47
- transforms: (prev) => [
48
- ...prev.filter(
49
- (transform) => transform.type !== "collapse-expand-react-node"
50
- ),
51
- {
52
- ...prev.find(
53
- (transform) => transform.type === "collapse-expand-react-node"
40
+ var getDefaultConfig = (props) => {
41
+ const { theme = "default" } = props;
42
+ return {
43
+ type: "linear",
44
+ autoFit: "view",
45
+ autoResize: true,
46
+ zoomRange: [0.1, 5],
47
+ zoom: 1,
48
+ node: { animation: { update: false, translate: false } },
49
+ edge: { animation: { update: false, translate: false } },
50
+ transforms: (prev) => [
51
+ ...prev.filter(
52
+ (transform) => transform.type !== "collapse-expand-react-node"
54
53
  ),
55
- enable: true
56
- }
57
- ],
58
- behaviors: ["drag-canvas"]
54
+ {
55
+ ...prev.find(
56
+ (transform) => transform.type === "collapse-expand-react-node"
57
+ ),
58
+ enable: true
59
+ },
60
+ {
61
+ ...prev.find((transform) => transform.key === "assign-color-by-branch") || {},
62
+ ...import_theme.G6THEME_MAP[theme]
63
+ }
64
+ ],
65
+ behaviors: ["drag-canvas"]
66
+ };
59
67
  };
60
68
  var IndentedTree = (props) => {
61
69
  const { data: propsData, ...restProps } = props;
62
70
  const data = (0, import_react.useMemo)(() => (0, import_graph.visTreeData2GraphData)(propsData), [propsData]);
63
- const config = (0, import_hooks.useGraphConfig)("IndentedTree", defaultConfig, restProps);
71
+ const config = (0, import_hooks.useGraphConfig)(
72
+ "IndentedTree",
73
+ getDefaultConfig(props),
74
+ restProps
75
+ );
64
76
  return /* @__PURE__ */ import_react.default.createElement(import_graphs.IndentedTree, { data, ...config });
65
77
  };
66
78
  var IndentedTree_default = IndentedTree;
@@ -1,11 +1,10 @@
1
- import type { LineConfig } from '@ant-design/plots';
2
1
  import React from 'react';
3
- import type { BasePlotProps } from '../types';
2
+ import type { BasePlotProps, Style, Theme } from '../types';
4
3
  export type LineDataItem = {
5
4
  time: string | number;
6
5
  value: number;
7
6
  [key: string]: string | number;
8
7
  };
9
- export type LineProps = BasePlotProps<LineDataItem> & Partial<LineConfig>;
8
+ export type LineProps = BasePlotProps<LineDataItem> & Theme & Style;
10
9
  declare const Line: (props: LineProps) => React.JSX.Element;
11
10
  export default Line;
@@ -36,25 +36,58 @@ var import_plots = require("@ant-design/plots");
36
36
  var import_lodash = require("lodash");
37
37
  var import_react = __toESM(require("react"));
38
38
  var import_hooks = require("../ConfigProvider/hooks");
39
+ var import_theme = require("../theme");
39
40
  var defaultConfig = (props) => {
40
- const { data, xField = "time", yField = "value" } = props;
41
+ const { data, xField = "time", yField = "value", style = {} } = props;
42
+ const { palette, lineWidth, backgroundColor } = style;
41
43
  const hasGroupField = (0, import_lodash.get)(data, "[0].group") !== void 0;
42
44
  const axisYTitle = (0, import_lodash.get)(props, "axis.y.title");
45
+ const hasPalette = !!(palette == null ? void 0 : palette[0]);
46
+ let encode = {};
47
+ let paletteConfig = { color: void 0 };
48
+ if (hasGroupField) {
49
+ encode = { x: xField, y: yField, color: "group" };
50
+ } else {
51
+ encode = { x: xField, y: yField, color: () => "all" };
52
+ }
53
+ if (hasPalette) {
54
+ paletteConfig = {
55
+ color: {
56
+ range: palette
57
+ }
58
+ };
59
+ }
43
60
  return {
44
61
  xField,
45
62
  yField,
46
63
  colorField: hasGroupField ? "group" : void 0,
64
+ encode,
65
+ legend: hasGroupField ? {} : false,
47
66
  tooltip: (d) => {
48
67
  const tooltipName = axisYTitle || d[xField];
49
68
  return {
50
69
  name: tooltipName,
51
70
  value: d[yField]
52
71
  };
53
- }
72
+ },
73
+ scale: {
74
+ y: {
75
+ nice: true
76
+ },
77
+ ...paletteConfig
78
+ },
79
+ style: {
80
+ lineWidth: lineWidth || 2
81
+ },
82
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : { viewStyle: void 0 }
54
83
  };
55
84
  };
56
85
  var Line = (props) => {
57
- const config = (0, import_hooks.usePlotConfig)("Line", defaultConfig, props);
86
+ const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
87
+ const config = (0, import_hooks.usePlotConfig)("Line", defaultConfig, {
88
+ ...props,
89
+ theme: themeConfig
90
+ });
58
91
  return /* @__PURE__ */ import_react.default.createElement(import_plots.Line, { ...config });
59
92
  };
60
93
  var Line_default = Line;
@@ -1,6 +1,7 @@
1
1
  import type { FC } from 'react';
2
2
  import type { TreeGraphProps } from '../types';
3
3
  export interface MindMapProps extends TreeGraphProps {
4
+ theme?: 'default' | 'academy';
4
5
  }
5
6
  declare const MindMap: FC<MindMapProps>;
6
7
  export default MindMap;
@@ -35,33 +35,41 @@ module.exports = __toCommonJS(MindMap_exports);
35
35
  var import_graphs = require("@ant-design/graphs");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_hooks = require("../ConfigProvider/hooks");
38
+ var import_theme = require("../theme");
38
39
  var import_graph = require("../utils/graph");
39
- var defaultConfig = {
40
- type: "boxed",
41
- autoFit: "view",
42
- autoResize: true,
43
- padding: 2,
44
- zoomRange: [0.1, 5],
45
- zoom: 1,
46
- node: { animation: { translate: false, update: false } },
47
- edge: { animation: { translate: false, update: false } },
48
- transforms: (prev) => [
49
- ...prev.filter(
50
- (transform) => transform.type !== "collapse-expand-react-node"
51
- ),
52
- {
53
- ...prev.find(
54
- (transform) => transform.type === "collapse-expand-react-node"
40
+ var getDefaultConfig = (props) => {
41
+ const { theme = "default" } = props;
42
+ return {
43
+ type: "boxed",
44
+ autoFit: "view",
45
+ autoResize: true,
46
+ padding: 2,
47
+ zoomRange: [0.1, 5],
48
+ zoom: 1,
49
+ node: { animation: { translate: false, update: false } },
50
+ edge: { animation: { translate: false, update: false } },
51
+ transforms: (prev) => [
52
+ ...prev.filter(
53
+ (transform) => transform.type !== "collapse-expand-react-node"
55
54
  ),
56
- enable: true
57
- }
58
- ],
59
- behaviors: ["drag-canvas"]
55
+ {
56
+ ...prev.find(
57
+ (transform) => transform.type === "collapse-expand-react-node"
58
+ ),
59
+ enable: true
60
+ },
61
+ {
62
+ ...prev.find((transform) => transform.key === "assign-color-by-branch") || {},
63
+ ...import_theme.G6THEME_MAP[theme]
64
+ }
65
+ ],
66
+ behaviors: ["drag-canvas"]
67
+ };
60
68
  };
61
69
  var MindMap = (props) => {
62
70
  const { data: propsData, ...restProps } = props;
63
71
  const data = (0, import_react.useMemo)(() => (0, import_graph.visTreeData2GraphData)(propsData), [propsData]);
64
- const config = (0, import_hooks.useGraphConfig)("MindMap", defaultConfig, restProps);
72
+ const config = (0, import_hooks.useGraphConfig)("MindMap", getDefaultConfig(props), restProps);
65
73
  return /* @__PURE__ */ import_react.default.createElement(import_graphs.MindMap, { data, ...config });
66
74
  };
67
75
  var MindMap_default = MindMap;
@@ -1,6 +1,6 @@
1
1
  import type { PieConfig } from '@ant-design/plots';
2
2
  import React from 'react';
3
- import type { BasePlotProps } from '../types';
3
+ import type { BasePlotProps, Theme } from '../types';
4
4
  /**
5
5
  * PieDataItem is the type for each data item in the pie chart.
6
6
  * It includes the name of the sector and its corresponding value.
@@ -16,6 +16,6 @@ type PieDataItem = {
16
16
  * the props for the Pie
17
17
  * @param data pie data
18
18
  */
19
- export type PieProps = BasePlotProps<PieDataItem> & Partial<PieConfig>;
19
+ export type PieProps = BasePlotProps<PieDataItem> & Partial<PieConfig> & Theme;
20
20
  declare const Pie: (props: PieProps) => React.JSX.Element;
21
21
  export default Pie;
@@ -36,9 +36,20 @@ var import_plots = require("@ant-design/plots");
36
36
  var import_lodash = require("lodash");
37
37
  var import_react = __toESM(require("react"));
38
38
  var import_hooks = require("../ConfigProvider/hooks");
39
+ var import_theme = require("../theme");
39
40
  var defaultConfig = (props) => {
40
- const { data = [], angleField = "value", colorField = "category" } = props;
41
+ const { data = [], angleField = "value", colorField = "category", style = {} } = props;
41
42
  const sumValue = (0, import_lodash.sumBy)(data, angleField);
43
+ const { backgroundColor, palette } = style;
44
+ const hasPalette = !!(palette == null ? void 0 : palette[0]);
45
+ let paletteConfig = { color: void 0 };
46
+ if (hasPalette) {
47
+ paletteConfig = {
48
+ color: {
49
+ range: palette
50
+ }
51
+ };
52
+ }
42
53
  return {
43
54
  angleField,
44
55
  colorField,
@@ -63,11 +74,19 @@ var defaultConfig = (props) => {
63
74
  elementSelect: {
64
75
  single: true
65
76
  }
66
- }
77
+ },
78
+ scale: {
79
+ ...paletteConfig
80
+ },
81
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : { viewStyle: void 0 }
67
82
  };
68
83
  };
69
84
  var Pie = (props) => {
70
- const config = (0, import_hooks.usePlotConfig)("Pie", defaultConfig, props);
85
+ const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
86
+ const config = (0, import_hooks.usePlotConfig)("Pie", defaultConfig, {
87
+ ...props,
88
+ theme: themeConfig
89
+ });
71
90
  return /* @__PURE__ */ import_react.default.createElement(import_plots.Pie, { ...config });
72
91
  };
73
92
  var Pie_default = Pie;
@@ -1,11 +1,13 @@
1
- import type { RadarConfig } from '@ant-design/plots';
2
1
  import React from 'react';
3
- import type { BasePlotProps } from '../types';
2
+ import type { BasePlotProps, Style, Theme } from '../types';
4
3
  export type RadarDataItem = {
5
4
  name: string;
6
5
  value: number;
7
6
  [key: string]: string | number;
8
7
  };
9
- export type RadarProps = BasePlotProps<RadarDataItem> & Partial<RadarConfig>;
8
+ export type RadarProps = BasePlotProps<RadarDataItem> & Theme & Style & {
9
+ width?: number;
10
+ height?: number;
11
+ };
10
12
  declare const Radar: (props: RadarProps) => React.JSX.Element;
11
13
  export default Radar;
@@ -32,53 +32,122 @@ __export(Radar_exports, {
32
32
  default: () => Radar_default
33
33
  });
34
34
  module.exports = __toCommonJS(Radar_exports);
35
- var import_plots = require("@ant-design/plots");
36
- var import_lodash = require("lodash");
35
+ var import_g2 = require("@antv/g2");
37
36
  var import_react = __toESM(require("react"));
38
- var import_hooks = require("../ConfigProvider/hooks");
37
+ var import_theme = require("../theme");
38
+ var import_plot = require("../utils/plot");
39
+ function transformRadartoParallel(data) {
40
+ if (!data || data.length === 0) {
41
+ return [];
42
+ }
43
+ const groups = (0, import_plot.groupBy)(data, (d) => d.group || "");
44
+ return Object.entries(groups).map(([group, values]) => {
45
+ const paralleValues = (values || []).reduce((acc, { name, value }) => {
46
+ acc[name] = value;
47
+ return acc;
48
+ }, {});
49
+ return {
50
+ ...paralleValues,
51
+ group
52
+ };
53
+ });
54
+ }
39
55
  var defaultConfig = (props) => {
40
- const { data, xField = "name", yField = "value" } = props;
41
- const hasGroupField = (0, import_lodash.get)(data, "[0].group") !== void 0;
56
+ const { data, title, theme = "default", style = {} } = props;
57
+ const { backgroundColor, palette = [], lineWidth = 2 } = style;
58
+ const parallelData = transformRadartoParallel(data);
59
+ const position = Object.keys(parallelData[0] || {}).filter((key) => key !== "group");
42
60
  return {
43
- xField,
44
- yField,
45
- colorField: hasGroupField ? "group" : void 0,
46
- area: {
47
- style: {
48
- fillOpacity: 0.5
49
- }
61
+ title,
62
+ autoFit: true,
63
+ theme: import_theme.THEME_MAP[theme],
64
+ inset: 18,
65
+ type: "line",
66
+ data: parallelData,
67
+ coordinate: { type: "radar" },
68
+ encode: {
69
+ position,
70
+ color: "group"
71
+ },
72
+ style: {
73
+ lineWidth,
74
+ lineCap: "round",
75
+ lineJoin: "round"
76
+ },
77
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : {},
78
+ legend: {
79
+ color: parallelData.length > 1 ? { itemMarker: "point" } : false
50
80
  },
51
81
  scale: {
52
- x: {
53
- padding: 0.6,
54
- align: 0
55
- },
56
- y: {
57
- nice: true
58
- }
82
+ ...Object.fromEntries(
83
+ Array.from({ length: position.length }, (_, i) => [
84
+ `position${i === 0 ? "" : i}`,
85
+ {
86
+ domainMin: 0,
87
+ nice: true
88
+ }
89
+ ])
90
+ ),
91
+ ...(palette == null ? void 0 : palette[0]) ? {
92
+ color: {
93
+ range: palette
94
+ }
95
+ } : {}
59
96
  },
60
- axis: {
61
- x: {
62
- title: false,
63
- grid: true
64
- },
65
- y: {
66
- zIndex: 1,
67
- title: false,
68
- gridConnect: "line",
69
- gridLineWidth: 1
97
+ axis: Object.fromEntries(
98
+ Array.from({ length: position.length }, (_, i) => {
99
+ return [
100
+ `position${i === 0 ? "" : i}`,
101
+ {
102
+ zIndex: 1,
103
+ titleFontSize: 10,
104
+ titleSpacing: 8,
105
+ label: true,
106
+ labelFill: theme === "dark" ? "#fff" : "#000",
107
+ labelOpacity: 0.45,
108
+ labelFontSize: 10,
109
+ line: true,
110
+ lineFill: "#000",
111
+ lineStrokeOpacity: 0.25,
112
+ tickFilter: (_2, idx) => {
113
+ return !(i !== 0 && idx === 0);
114
+ },
115
+ tickCount: 4,
116
+ gridStrokeOpacity: 0.45,
117
+ gridStroke: theme === "dark" ? "#fff" : "#000",
118
+ gridLineWidth: 1,
119
+ gridLineDash: [4, 4]
120
+ }
121
+ ];
122
+ })
123
+ ),
124
+ interaction: {
125
+ tooltip: {
126
+ series: false
70
127
  }
71
- },
72
- tooltip: (d) => {
73
- return {
74
- name: d[xField],
75
- value: d[yField]
76
- };
77
128
  }
78
129
  };
79
130
  };
80
131
  var Radar = (props) => {
81
- const config = (0, import_hooks.usePlotConfig)("Radar", defaultConfig, props);
82
- return /* @__PURE__ */ import_react.default.createElement(import_plots.Radar, { ...config });
132
+ const containerRef = (0, import_react.useRef)(null);
133
+ const chartRef = (0, import_react.useRef)(null);
134
+ (0, import_react.useEffect)(() => {
135
+ if (!containerRef.current)
136
+ return;
137
+ const chart = new import_g2.Chart({
138
+ container: containerRef.current,
139
+ autoFit: true,
140
+ padding: "auto"
141
+ });
142
+ const config = defaultConfig(props);
143
+ chart.options(config);
144
+ chart.render();
145
+ chartRef.current = chart;
146
+ return () => {
147
+ chart.destroy();
148
+ chartRef.current = null;
149
+ };
150
+ }, [props]);
151
+ return /* @__PURE__ */ import_react.default.createElement("div", { ref: containerRef });
83
152
  };
84
153
  var Radar_default = Radar;
@@ -1,11 +1,10 @@
1
- import type { ScatterConfig } from '@ant-design/plots';
2
1
  import React from 'react';
3
- import type { BasePlotProps } from '../types';
2
+ import type { BasePlotProps, Style, Theme } from '../types';
4
3
  type ScatterDataItem = {
5
4
  x: number;
6
5
  y: number;
7
6
  [key: string]: string | number;
8
7
  };
9
- export type ScatterProps = BasePlotProps<ScatterDataItem> & Partial<ScatterConfig>;
8
+ export type ScatterProps = BasePlotProps<ScatterDataItem> & Theme & Style;
10
9
  declare const Scatter: (props: ScatterProps) => React.JSX.Element;
11
10
  export default Scatter;