@antv/gpt-vis 0.5.5 → 0.5.7

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 (118) 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 +5 -2
  4. package/dist/cjs/Bar/index.js +43 -7
  5. package/dist/cjs/Boxplot/index.d.ts +13 -0
  6. package/dist/cjs/Boxplot/index.js +88 -0
  7. package/dist/cjs/ChartCodeRender/VisChart.d.ts +7 -1
  8. package/dist/cjs/ChartCodeRender/VisChart.js +100 -12
  9. package/dist/cjs/ChartCodeRender/index.js +16 -2
  10. package/dist/cjs/ChartCodeRender/type.d.ts +104 -5
  11. package/dist/cjs/Column/index.d.ts +5 -3
  12. package/dist/cjs/Column/index.js +44 -7
  13. package/dist/cjs/ConfigProvider/hooks/useConfig.js +2 -1
  14. package/dist/cjs/DualAxes/index.d.ts +1 -1
  15. package/dist/cjs/DualAxes/index.js +20 -8
  16. package/dist/cjs/FishboneDiagram/index.d.ts +1 -0
  17. package/dist/cjs/FishboneDiagram/index.js +21 -7
  18. package/dist/cjs/Funnel/index.d.ts +12 -0
  19. package/dist/cjs/Funnel/index.js +173 -0
  20. package/dist/cjs/Histogram/index.d.ts +4 -3
  21. package/dist/cjs/Histogram/index.js +32 -3
  22. package/dist/cjs/IndentedTree/index.d.ts +1 -0
  23. package/dist/cjs/IndentedTree/index.js +32 -20
  24. package/dist/cjs/Line/index.d.ts +2 -3
  25. package/dist/cjs/Line/index.js +36 -3
  26. package/dist/cjs/Liquid/index.d.ts +11 -0
  27. package/dist/cjs/Liquid/index.js +85 -0
  28. package/dist/cjs/MindMap/index.d.ts +1 -0
  29. package/dist/cjs/MindMap/index.js +29 -21
  30. package/dist/cjs/Pie/index.d.ts +2 -2
  31. package/dist/cjs/Pie/index.js +22 -3
  32. package/dist/cjs/Radar/index.d.ts +5 -3
  33. package/dist/cjs/Radar/index.js +106 -37
  34. package/dist/cjs/Sankey/index.d.ts +12 -0
  35. package/dist/cjs/Sankey/index.js +106 -0
  36. package/dist/cjs/Scatter/index.d.ts +2 -3
  37. package/dist/cjs/Scatter/index.js +52 -6
  38. package/dist/cjs/Treemap/index.d.ts +2 -3
  39. package/dist/cjs/Treemap/index.js +23 -3
  40. package/dist/cjs/Venn/index.d.ts +32 -0
  41. package/dist/cjs/Venn/index.js +87 -0
  42. package/dist/cjs/Violin/index.d.ts +10 -0
  43. package/dist/cjs/Violin/index.js +185 -0
  44. package/dist/cjs/WordCloud/index.d.ts +2 -3
  45. package/dist/cjs/WordCloud/index.js +34 -7
  46. package/dist/cjs/export.d.ts +7 -1
  47. package/dist/cjs/export.js +38 -8
  48. package/dist/cjs/theme.d.ts +2 -0
  49. package/dist/cjs/theme.js +133 -0
  50. package/dist/cjs/types/chart.d.ts +17 -0
  51. package/dist/cjs/types/chart.js +6 -0
  52. package/dist/cjs/utils/palette.d.ts +2 -0
  53. package/dist/cjs/utils/palette.js +54 -0
  54. package/dist/cjs/utils/plot.d.ts +1 -0
  55. package/dist/cjs/utils/plot.js +15 -0
  56. package/dist/cjs/version.d.ts +1 -1
  57. package/dist/cjs/version.js +1 -1
  58. package/dist/esm/Area/index.d.ts +2 -3
  59. package/dist/esm/Area/index.js +80 -6
  60. package/dist/esm/Bar/index.d.ts +5 -2
  61. package/dist/esm/Bar/index.js +66 -9
  62. package/dist/esm/Boxplot/index.d.ts +13 -0
  63. package/dist/esm/Boxplot/index.js +83 -0
  64. package/dist/esm/ChartCodeRender/VisChart.d.ts +7 -1
  65. package/dist/esm/ChartCodeRender/VisChart.js +144 -34
  66. package/dist/esm/ChartCodeRender/index.js +15 -1
  67. package/dist/esm/ChartCodeRender/type.d.ts +104 -5
  68. package/dist/esm/Column/index.d.ts +5 -3
  69. package/dist/esm/Column/index.js +67 -9
  70. package/dist/esm/ConfigProvider/hooks/useConfig.js +9 -1
  71. package/dist/esm/DualAxes/index.d.ts +1 -1
  72. package/dist/esm/DualAxes/index.js +35 -12
  73. package/dist/esm/FishboneDiagram/index.d.ts +1 -0
  74. package/dist/esm/FishboneDiagram/index.js +23 -7
  75. package/dist/esm/Funnel/index.d.ts +12 -0
  76. package/dist/esm/Funnel/index.js +171 -0
  77. package/dist/esm/Histogram/index.d.ts +4 -3
  78. package/dist/esm/Histogram/index.js +55 -5
  79. package/dist/esm/IndentedTree/index.d.ts +1 -0
  80. package/dist/esm/IndentedTree/index.js +36 -29
  81. package/dist/esm/Line/index.d.ts +2 -3
  82. package/dist/esm/Line/index.js +63 -4
  83. package/dist/esm/Liquid/index.d.ts +11 -0
  84. package/dist/esm/Liquid/index.js +100 -0
  85. package/dist/esm/MindMap/index.d.ts +1 -0
  86. package/dist/esm/MindMap/index.js +37 -30
  87. package/dist/esm/Pie/index.d.ts +2 -2
  88. package/dist/esm/Pie/index.js +37 -4
  89. package/dist/esm/Radar/index.d.ts +5 -3
  90. package/dist/esm/Radar/index.js +138 -42
  91. package/dist/esm/Sankey/index.d.ts +12 -0
  92. package/dist/esm/Sankey/index.js +88 -0
  93. package/dist/esm/Scatter/index.d.ts +2 -3
  94. package/dist/esm/Scatter/index.js +76 -11
  95. package/dist/esm/Treemap/index.d.ts +2 -3
  96. package/dist/esm/Treemap/index.js +39 -4
  97. package/dist/esm/Venn/index.d.ts +32 -0
  98. package/dist/esm/Venn/index.js +69 -0
  99. package/dist/esm/Violin/index.d.ts +10 -0
  100. package/dist/esm/Violin/index.js +192 -0
  101. package/dist/esm/WordCloud/index.d.ts +2 -3
  102. package/dist/esm/WordCloud/index.js +51 -9
  103. package/dist/esm/export.d.ts +7 -1
  104. package/dist/esm/export.js +8 -2
  105. package/dist/esm/theme.d.ts +2 -0
  106. package/dist/esm/theme.js +103 -0
  107. package/dist/esm/types/chart.d.ts +17 -0
  108. package/dist/esm/types/chart.js +6 -0
  109. package/dist/esm/utils/palette.d.ts +2 -0
  110. package/dist/esm/utils/palette.js +2 -0
  111. package/dist/esm/utils/plot.d.ts +1 -0
  112. package/dist/esm/utils/plot.js +10 -0
  113. package/dist/esm/version.d.ts +1 -1
  114. package/dist/esm/version.js +1 -1
  115. package/dist/umd/373.async.js +1 -0
  116. package/dist/umd/index.min.js +1 -1
  117. package/package.json +2 -1
  118. package/dist/umd/962.async.js +0 -1
@@ -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;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { Style, Theme } from '../types';
3
+ export type LiquidProps = Theme & Style & {
4
+ percent: number;
5
+ shape?: 'rect' | 'circle' | 'pin' | 'triangle';
6
+ title?: string;
7
+ width?: number;
8
+ height?: number;
9
+ };
10
+ declare const Liquid: (props: LiquidProps) => React.JSX.Element;
11
+ export default Liquid;
@@ -0,0 +1,85 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/Liquid/index.tsx
30
+ var Liquid_exports = {};
31
+ __export(Liquid_exports, {
32
+ default: () => Liquid_default
33
+ });
34
+ module.exports = __toCommonJS(Liquid_exports);
35
+ var import_plots = require("@ant-design/plots");
36
+ var import_react = __toESM(require("react"));
37
+ var import_hooks = require("../ConfigProvider/hooks");
38
+ var import_theme = require("../theme");
39
+ var defaultConfig = (props) => {
40
+ const { percent, shape = "circle", style = {}, width = 600, height = 400 } = props;
41
+ const { backgroundColor, palette } = style;
42
+ const inferFontSize = Math.min(width, height) / 10;
43
+ const fontSize = Math.min(Math.max(inferFontSize, 24), 64);
44
+ const hasPalette = !!(palette == null ? void 0 : palette[0]);
45
+ let paletteConfig = { fill: void 0, outlineStroke: void 0 };
46
+ if (hasPalette) {
47
+ paletteConfig = { fill: palette[0], outlineStroke: palette[0] };
48
+ }
49
+ return {
50
+ percent,
51
+ style: {
52
+ shape,
53
+ contentFontSize: fontSize,
54
+ contentFill: "#000",
55
+ contentStroke: "#fff",
56
+ contentLineWidth: 2,
57
+ outlineBorder: 4,
58
+ outlineDistance: 4,
59
+ waveLength: 128,
60
+ ...paletteConfig
61
+ },
62
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : {},
63
+ interaction: { tooltip: false },
64
+ animate: false
65
+ };
66
+ };
67
+ var Liquid = (props) => {
68
+ const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
69
+ const containerRef = (0, import_react.useRef)(null);
70
+ const [size, setSize] = (0, import_react.useState)({ width: 0, height: 0 });
71
+ const config = (0, import_hooks.usePlotConfig)("Liquid", defaultConfig, {
72
+ ...props,
73
+ theme: themeConfig,
74
+ width: size.width,
75
+ height: size.height
76
+ });
77
+ (0, import_react.useEffect)(() => {
78
+ if (containerRef.current) {
79
+ const { offsetWidth, offsetHeight } = containerRef.current;
80
+ setSize({ width: offsetWidth, height: offsetHeight });
81
+ }
82
+ }, []);
83
+ return /* @__PURE__ */ import_react.default.createElement("div", { ref: containerRef, style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react.default.createElement(import_plots.Liquid, { ...config }));
84
+ };
85
+ var Liquid_default = Liquid;
@@ -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;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { BasePlotProps, Style, Theme } from '../types';
3
+ type SankeyDatum = {
4
+ source: string;
5
+ target: string;
6
+ value: number;
7
+ };
8
+ export type SankeyProps = BasePlotProps<SankeyDatum> & Theme & Style & {
9
+ nodeAlign?: 'left' | 'center' | 'right' | 'justify';
10
+ };
11
+ declare const Sankey: (props: SankeyProps) => React.JSX.Element;
12
+ export default Sankey;
@@ -0,0 +1,106 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/Sankey/index.tsx
30
+ var Sankey_exports = {};
31
+ __export(Sankey_exports, {
32
+ default: () => Sankey_default
33
+ });
34
+ module.exports = __toCommonJS(Sankey_exports);
35
+ var import_g2 = require("@antv/g2");
36
+ var import_react = __toESM(require("react"));
37
+ var import_theme = require("../theme");
38
+ var defaultConfig = (props) => {
39
+ const { title, data, theme = "default", nodeAlign = "center", style = {} } = props;
40
+ const { backgroundColor, palette } = style;
41
+ const hasPalette = !!(palette == null ? void 0 : palette[0]);
42
+ let paletteConfig = {};
43
+ if (hasPalette) {
44
+ paletteConfig = {
45
+ color: {
46
+ range: palette
47
+ }
48
+ };
49
+ }
50
+ return {
51
+ title,
52
+ type: "sankey",
53
+ theme: import_theme.THEME_MAP[theme],
54
+ layout: {
55
+ nodeAlign,
56
+ nodePadding: 0.01
57
+ },
58
+ data: {
59
+ type: "inline",
60
+ value: data,
61
+ transform: [
62
+ {
63
+ type: "custom",
64
+ callback: (data2) => ({
65
+ links: data2
66
+ })
67
+ }
68
+ ]
69
+ },
70
+ scale: {
71
+ ...paletteConfig
72
+ },
73
+ style: {
74
+ labelSpacing: 2,
75
+ nodeLineWidth: 1,
76
+ linkFillOpacity: 0.3
77
+ },
78
+ viewStyle: {
79
+ viewFill: "red"
80
+ },
81
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : {}
82
+ };
83
+ };
84
+ var Sankey = (props) => {
85
+ const containerRef = (0, import_react.useRef)(null);
86
+ const chartRef = (0, import_react.useRef)(null);
87
+ (0, import_react.useEffect)(() => {
88
+ if (!containerRef.current)
89
+ return;
90
+ const chart = new import_g2.Chart({
91
+ container: containerRef.current,
92
+ autoFit: true,
93
+ padding: "auto"
94
+ });
95
+ const config = defaultConfig(props);
96
+ chart.options(config);
97
+ chart.render();
98
+ chartRef.current = chart;
99
+ return () => {
100
+ chart.destroy();
101
+ chartRef.current = null;
102
+ };
103
+ }, [props]);
104
+ return /* @__PURE__ */ import_react.default.createElement("div", { ref: containerRef });
105
+ };
106
+ var Sankey_default = Sankey;