@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.
- package/dist/cjs/Area/index.d.ts +2 -3
- package/dist/cjs/Area/index.js +48 -5
- package/dist/cjs/Bar/index.d.ts +5 -2
- package/dist/cjs/Bar/index.js +43 -7
- package/dist/cjs/Boxplot/index.d.ts +13 -0
- package/dist/cjs/Boxplot/index.js +88 -0
- package/dist/cjs/ChartCodeRender/VisChart.d.ts +7 -1
- package/dist/cjs/ChartCodeRender/VisChart.js +100 -12
- package/dist/cjs/ChartCodeRender/index.js +16 -2
- package/dist/cjs/ChartCodeRender/type.d.ts +104 -5
- package/dist/cjs/Column/index.d.ts +5 -3
- package/dist/cjs/Column/index.js +44 -7
- package/dist/cjs/ConfigProvider/hooks/useConfig.js +2 -1
- package/dist/cjs/DualAxes/index.d.ts +1 -1
- package/dist/cjs/DualAxes/index.js +20 -8
- package/dist/cjs/FishboneDiagram/index.d.ts +1 -0
- package/dist/cjs/FishboneDiagram/index.js +21 -7
- package/dist/cjs/Funnel/index.d.ts +12 -0
- package/dist/cjs/Funnel/index.js +173 -0
- package/dist/cjs/Histogram/index.d.ts +4 -3
- package/dist/cjs/Histogram/index.js +32 -3
- package/dist/cjs/IndentedTree/index.d.ts +1 -0
- package/dist/cjs/IndentedTree/index.js +32 -20
- package/dist/cjs/Line/index.d.ts +2 -3
- package/dist/cjs/Line/index.js +36 -3
- package/dist/cjs/Liquid/index.d.ts +11 -0
- package/dist/cjs/Liquid/index.js +85 -0
- package/dist/cjs/MindMap/index.d.ts +1 -0
- package/dist/cjs/MindMap/index.js +29 -21
- package/dist/cjs/Pie/index.d.ts +2 -2
- package/dist/cjs/Pie/index.js +22 -3
- package/dist/cjs/Radar/index.d.ts +5 -3
- package/dist/cjs/Radar/index.js +106 -37
- package/dist/cjs/Sankey/index.d.ts +12 -0
- package/dist/cjs/Sankey/index.js +106 -0
- package/dist/cjs/Scatter/index.d.ts +2 -3
- package/dist/cjs/Scatter/index.js +52 -6
- package/dist/cjs/Treemap/index.d.ts +2 -3
- package/dist/cjs/Treemap/index.js +23 -3
- package/dist/cjs/Venn/index.d.ts +32 -0
- package/dist/cjs/Venn/index.js +87 -0
- package/dist/cjs/Violin/index.d.ts +10 -0
- package/dist/cjs/Violin/index.js +185 -0
- package/dist/cjs/WordCloud/index.d.ts +2 -3
- package/dist/cjs/WordCloud/index.js +34 -7
- package/dist/cjs/export.d.ts +7 -1
- package/dist/cjs/export.js +38 -8
- package/dist/cjs/theme.d.ts +2 -0
- package/dist/cjs/theme.js +133 -0
- package/dist/cjs/types/chart.d.ts +17 -0
- package/dist/cjs/types/chart.js +6 -0
- package/dist/cjs/utils/palette.d.ts +2 -0
- package/dist/cjs/utils/palette.js +54 -0
- package/dist/cjs/utils/plot.d.ts +1 -0
- package/dist/cjs/utils/plot.js +15 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Area/index.d.ts +2 -3
- package/dist/esm/Area/index.js +80 -6
- package/dist/esm/Bar/index.d.ts +5 -2
- package/dist/esm/Bar/index.js +66 -9
- package/dist/esm/Boxplot/index.d.ts +13 -0
- package/dist/esm/Boxplot/index.js +83 -0
- package/dist/esm/ChartCodeRender/VisChart.d.ts +7 -1
- package/dist/esm/ChartCodeRender/VisChart.js +144 -34
- package/dist/esm/ChartCodeRender/index.js +15 -1
- package/dist/esm/ChartCodeRender/type.d.ts +104 -5
- package/dist/esm/Column/index.d.ts +5 -3
- package/dist/esm/Column/index.js +67 -9
- package/dist/esm/ConfigProvider/hooks/useConfig.js +9 -1
- package/dist/esm/DualAxes/index.d.ts +1 -1
- package/dist/esm/DualAxes/index.js +35 -12
- package/dist/esm/FishboneDiagram/index.d.ts +1 -0
- package/dist/esm/FishboneDiagram/index.js +23 -7
- package/dist/esm/Funnel/index.d.ts +12 -0
- package/dist/esm/Funnel/index.js +171 -0
- package/dist/esm/Histogram/index.d.ts +4 -3
- package/dist/esm/Histogram/index.js +55 -5
- package/dist/esm/IndentedTree/index.d.ts +1 -0
- package/dist/esm/IndentedTree/index.js +36 -29
- package/dist/esm/Line/index.d.ts +2 -3
- package/dist/esm/Line/index.js +63 -4
- package/dist/esm/Liquid/index.d.ts +11 -0
- package/dist/esm/Liquid/index.js +100 -0
- package/dist/esm/MindMap/index.d.ts +1 -0
- package/dist/esm/MindMap/index.js +37 -30
- package/dist/esm/Pie/index.d.ts +2 -2
- package/dist/esm/Pie/index.js +37 -4
- package/dist/esm/Radar/index.d.ts +5 -3
- package/dist/esm/Radar/index.js +138 -42
- package/dist/esm/Sankey/index.d.ts +12 -0
- package/dist/esm/Sankey/index.js +88 -0
- package/dist/esm/Scatter/index.d.ts +2 -3
- package/dist/esm/Scatter/index.js +76 -11
- package/dist/esm/Treemap/index.d.ts +2 -3
- package/dist/esm/Treemap/index.js +39 -4
- package/dist/esm/Venn/index.d.ts +32 -0
- package/dist/esm/Venn/index.js +69 -0
- package/dist/esm/Violin/index.d.ts +10 -0
- package/dist/esm/Violin/index.js +192 -0
- package/dist/esm/WordCloud/index.d.ts +2 -3
- package/dist/esm/WordCloud/index.js +51 -9
- package/dist/esm/export.d.ts +7 -1
- package/dist/esm/export.js +8 -2
- package/dist/esm/theme.d.ts +2 -0
- package/dist/esm/theme.js +103 -0
- package/dist/esm/types/chart.d.ts +17 -0
- package/dist/esm/types/chart.js +6 -0
- package/dist/esm/utils/palette.d.ts +2 -0
- package/dist/esm/utils/palette.js +2 -0
- package/dist/esm/utils/plot.d.ts +1 -0
- package/dist/esm/utils/plot.js +10 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/373.async.js +1 -0
- package/dist/umd/index.min.js +1 -1
- package/package.json +2 -1
- package/dist/umd/962.async.js +0 -1
package/dist/cjs/Area/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { AreaConfig } 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 AreaDataItem = {
|
|
5
4
|
time: string | number;
|
|
6
5
|
value: number;
|
|
7
6
|
[key: string]: string | number;
|
|
8
7
|
};
|
|
9
|
-
export type AreaProps = BasePlotProps<AreaDataItem> &
|
|
8
|
+
export type AreaProps = BasePlotProps<AreaDataItem> & Theme & Style;
|
|
10
9
|
declare const Area: (props: AreaProps) => React.JSX.Element;
|
|
11
10
|
export default Area;
|
package/dist/cjs/Area/index.js
CHANGED
|
@@ -36,27 +36,70 @@ 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");
|
|
40
|
+
var getLinearGradientColor = (color) => `linear-gradient(-90deg, white 0%, ${color} 100%)`;
|
|
41
|
+
var DEFAULT_COLOR = "#3A95FF";
|
|
39
42
|
var defaultConfig = (props) => {
|
|
40
|
-
const { data, xField = "time", yField = "value" } = props;
|
|
43
|
+
const { data, xField = "time", yField = "value", style = {} } = props;
|
|
44
|
+
const { backgroundColor, palette, lineWidth = 2 } = style;
|
|
41
45
|
const hasGroupField = (0, import_lodash.get)(data, "[0].group") !== void 0;
|
|
42
46
|
const axisYTitle = (0, import_lodash.get)(props, "axis.y.title");
|
|
43
|
-
const
|
|
47
|
+
const fillColor = getLinearGradientColor((palette == null ? void 0 : palette[0]) || DEFAULT_COLOR);
|
|
48
|
+
const defaultStyle = hasGroupField ? { opacity: 0.6 } : { opacity: 0.6, fill: fillColor };
|
|
49
|
+
let paletteConfig = { color: void 0 };
|
|
50
|
+
let encode = {};
|
|
51
|
+
const hasPalette = !!(palette == null ? void 0 : palette[0]);
|
|
52
|
+
if (hasPalette) {
|
|
53
|
+
paletteConfig = {
|
|
54
|
+
color: {
|
|
55
|
+
range: palette
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (hasGroupField) {
|
|
60
|
+
encode = { x: xField, y: yField, color: "group" };
|
|
61
|
+
} else {
|
|
62
|
+
encode = { x: xField, y: yField, color: () => "all" };
|
|
63
|
+
}
|
|
44
64
|
return {
|
|
45
65
|
xField,
|
|
46
66
|
yField,
|
|
47
|
-
style:
|
|
67
|
+
style: defaultStyle,
|
|
48
68
|
colorField: hasGroupField ? "group" : void 0,
|
|
69
|
+
stack: hasGroupField,
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
encode,
|
|
72
|
+
legend: hasGroupField ? {} : false,
|
|
49
73
|
tooltip: (d) => {
|
|
50
74
|
const tooltipName = axisYTitle || d[xField];
|
|
51
75
|
return {
|
|
52
76
|
name: tooltipName,
|
|
53
77
|
value: d[yField]
|
|
54
78
|
};
|
|
55
|
-
}
|
|
79
|
+
},
|
|
80
|
+
scale: {
|
|
81
|
+
y: {
|
|
82
|
+
nice: true
|
|
83
|
+
},
|
|
84
|
+
...paletteConfig
|
|
85
|
+
},
|
|
86
|
+
line: {
|
|
87
|
+
encode,
|
|
88
|
+
style: {
|
|
89
|
+
lineWidth,
|
|
90
|
+
strokeOpacity: 0.6
|
|
91
|
+
},
|
|
92
|
+
...paletteConfig
|
|
93
|
+
},
|
|
94
|
+
...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : { viewStyle: void 0 }
|
|
56
95
|
};
|
|
57
96
|
};
|
|
58
97
|
var Area = (props) => {
|
|
59
|
-
const
|
|
98
|
+
const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
|
|
99
|
+
const config = (0, import_hooks.usePlotConfig)("Area", defaultConfig, {
|
|
100
|
+
...props,
|
|
101
|
+
theme: themeConfig
|
|
102
|
+
});
|
|
60
103
|
return /* @__PURE__ */ import_react.default.createElement(import_plots.Area, { ...config });
|
|
61
104
|
};
|
|
62
105
|
var Area_default = Area;
|
package/dist/cjs/Bar/index.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { BarConfig } from '@ant-design/plots';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import type { BasePlotProps } from '../types';
|
|
3
|
+
import type { BasePlotProps, Style, Theme } from '../types';
|
|
4
4
|
type BarDataItem = {
|
|
5
5
|
category: string;
|
|
6
6
|
value: number;
|
|
7
7
|
[key: string]: string | number;
|
|
8
8
|
};
|
|
9
|
-
export type BarProps = BasePlotProps<BarDataItem> & Partial<BarConfig
|
|
9
|
+
export type BarProps = BasePlotProps<BarDataItem> & Partial<BarConfig> & Theme & Style & {
|
|
10
|
+
group?: boolean;
|
|
11
|
+
stack?: boolean;
|
|
12
|
+
};
|
|
10
13
|
declare const Bar: (props: BarProps) => React.JSX.Element;
|
|
11
14
|
export default Bar;
|
package/dist/cjs/Bar/index.js
CHANGED
|
@@ -36,14 +36,35 @@ 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 = "category", yField = "value" } = props;
|
|
41
|
+
const { data, xField = "category", yField = "value", style = {}, theme = {} } = props;
|
|
42
|
+
const { backgroundColor, palette } = 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 paletteConfig = { color: void 0 };
|
|
47
|
+
let radiusStyle = {
|
|
48
|
+
radiusTopLeft: 4,
|
|
49
|
+
radiusTopRight: 4
|
|
50
|
+
};
|
|
51
|
+
if ((theme == null ? void 0 : theme.type) === "academy") {
|
|
52
|
+
radiusStyle = {
|
|
53
|
+
radiusTopLeft: 0,
|
|
54
|
+
radiusTopRight: 0
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (hasPalette) {
|
|
58
|
+
paletteConfig = {
|
|
59
|
+
color: {
|
|
60
|
+
range: palette
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
43
64
|
return {
|
|
44
65
|
xField,
|
|
45
66
|
yField,
|
|
46
|
-
colorField: hasGroupField ? "group" :
|
|
67
|
+
colorField: hasGroupField ? "group" : xField,
|
|
47
68
|
tooltip: (d) => {
|
|
48
69
|
const tooltipName = axisYTitle || d[xField];
|
|
49
70
|
return {
|
|
@@ -52,14 +73,29 @@ var defaultConfig = (props) => {
|
|
|
52
73
|
};
|
|
53
74
|
},
|
|
54
75
|
style: {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
76
|
+
...radiusStyle,
|
|
77
|
+
columnWidthRatio: 0.8
|
|
78
|
+
},
|
|
79
|
+
scale: {
|
|
80
|
+
y: {
|
|
81
|
+
nice: true
|
|
82
|
+
},
|
|
83
|
+
...paletteConfig
|
|
84
|
+
},
|
|
85
|
+
...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : { viewStyle: void 0 },
|
|
86
|
+
legend: hasGroupField ? {} : false
|
|
59
87
|
};
|
|
60
88
|
};
|
|
61
89
|
var Bar = (props) => {
|
|
62
|
-
const
|
|
90
|
+
const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
|
|
91
|
+
const { data, group = false, stack = false } = props;
|
|
92
|
+
const hasGroupField = (0, import_lodash.get)(data, "[0].group") !== void 0;
|
|
93
|
+
const config = (0, import_hooks.usePlotConfig)("Bar", defaultConfig, {
|
|
94
|
+
...props,
|
|
95
|
+
theme: themeConfig,
|
|
96
|
+
group: hasGroupField && group,
|
|
97
|
+
stack: hasGroupField && stack
|
|
98
|
+
});
|
|
63
99
|
return /* @__PURE__ */ import_react.default.createElement(import_plots.Bar, { ...config });
|
|
64
100
|
};
|
|
65
101
|
var Bar_default = Bar;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BasePlotProps, Style, Theme } from '../types';
|
|
3
|
+
type BoxplotDatum = {
|
|
4
|
+
category: string;
|
|
5
|
+
value: number;
|
|
6
|
+
group?: string;
|
|
7
|
+
};
|
|
8
|
+
export type BoxplotProps = BasePlotProps<BoxplotDatum> & Theme & Style & {
|
|
9
|
+
xField?: string;
|
|
10
|
+
yField?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const Boxplot: (props: BoxplotProps) => React.JSX.Element;
|
|
13
|
+
export default Boxplot;
|
|
@@ -0,0 +1,88 @@
|
|
|
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/Boxplot/index.tsx
|
|
30
|
+
var Boxplot_exports = {};
|
|
31
|
+
__export(Boxplot_exports, {
|
|
32
|
+
default: () => Boxplot_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(Boxplot_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
|
+
var _a;
|
|
41
|
+
const { data, style = {}, axisYTitle, axisXTitle, xField = "category", yField = "value" } = props;
|
|
42
|
+
const { backgroundColor, palette } = style;
|
|
43
|
+
const hasGroupField = ((_a = (data || [])[0]) == null ? void 0 : _a.group) !== void 0;
|
|
44
|
+
let paletteConfig = { color: void 0 };
|
|
45
|
+
const hasPalette = !!(palette == null ? void 0 : palette[0]);
|
|
46
|
+
const colorField = hasGroupField ? "group" : "category";
|
|
47
|
+
const seriesField = hasGroupField ? "group" : "category";
|
|
48
|
+
if (hasPalette) {
|
|
49
|
+
paletteConfig = {
|
|
50
|
+
color: {
|
|
51
|
+
range: palette
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
data,
|
|
57
|
+
boxType: "boxplot",
|
|
58
|
+
xField,
|
|
59
|
+
yField,
|
|
60
|
+
colorField,
|
|
61
|
+
seriesField,
|
|
62
|
+
axis: {
|
|
63
|
+
y: {
|
|
64
|
+
title: axisYTitle || false
|
|
65
|
+
},
|
|
66
|
+
x: {
|
|
67
|
+
title: axisXTitle || false
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
scale: {
|
|
71
|
+
x: { paddingInner: 0.6, paddingOuter: 0.3 },
|
|
72
|
+
series: { paddingInner: 0.3, paddingOuter: 0.1 },
|
|
73
|
+
y: { nice: true },
|
|
74
|
+
...paletteConfig
|
|
75
|
+
},
|
|
76
|
+
style: { stroke: "black" },
|
|
77
|
+
...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : {}
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
var Boxplot = (props) => {
|
|
81
|
+
const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
|
|
82
|
+
const config = (0, import_hooks.usePlotConfig)("Boxplot", defaultConfig, {
|
|
83
|
+
...props,
|
|
84
|
+
theme: themeConfig
|
|
85
|
+
});
|
|
86
|
+
return /* @__PURE__ */ import_react.default.createElement(import_plots.Box, { ...config });
|
|
87
|
+
};
|
|
88
|
+
var Boxplot_default = Boxplot;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { ChartComponents, ComponentErrorRender, ErrorRender } from './type';
|
|
2
|
+
import type { ChartComponents, ComponentErrorRender, ErrorRender, TextLabels } from './type';
|
|
3
3
|
type RenderVisChartProps = {
|
|
4
4
|
content: string;
|
|
5
5
|
components: ChartComponents;
|
|
@@ -8,6 +8,12 @@ type RenderVisChartProps = {
|
|
|
8
8
|
style?: React.CSSProperties;
|
|
9
9
|
componentErrorRender?: (errorInfo: ComponentErrorRender) => React.ReactElement;
|
|
10
10
|
errorRender?: (errorInfo: ErrorRender) => React.ReactElement;
|
|
11
|
+
showTabs?: boolean;
|
|
12
|
+
showCodeTab?: boolean;
|
|
13
|
+
showChartTab?: boolean;
|
|
14
|
+
defaultTab?: 'chart' | 'code';
|
|
15
|
+
textLabels?: TextLabels;
|
|
16
|
+
locale?: string;
|
|
11
17
|
};
|
|
12
18
|
export declare const RenderVisChart: React.FC<RenderVisChartProps>;
|
|
13
19
|
export {};
|
|
@@ -51,16 +51,77 @@ var G6List = [
|
|
|
51
51
|
"network-graph",
|
|
52
52
|
"indented-tree"
|
|
53
53
|
];
|
|
54
|
+
var DEFAULT_LABELS = {
|
|
55
|
+
"zh-CN": {
|
|
56
|
+
chartTab: "图表",
|
|
57
|
+
codeTab: "代码",
|
|
58
|
+
download: "下载",
|
|
59
|
+
copy: "复制",
|
|
60
|
+
copied: "完成",
|
|
61
|
+
renderError: "图表渲染失败",
|
|
62
|
+
parseError: "GPT-Vis parse content error!",
|
|
63
|
+
unsupportedChart: "Chart type not supported"
|
|
64
|
+
},
|
|
65
|
+
"en-US": {
|
|
66
|
+
chartTab: "Chart",
|
|
67
|
+
codeTab: "Code",
|
|
68
|
+
download: "Download",
|
|
69
|
+
copy: "Copy",
|
|
70
|
+
copied: "Copied",
|
|
71
|
+
renderError: "Chart render failed",
|
|
72
|
+
parseError: "Parse content error!",
|
|
73
|
+
unsupportedChart: "Chart type not supported"
|
|
74
|
+
},
|
|
75
|
+
"pt-BR": {
|
|
76
|
+
chartTab: "Gráfico",
|
|
77
|
+
codeTab: "Código",
|
|
78
|
+
download: "Baixar",
|
|
79
|
+
copy: "Copiar",
|
|
80
|
+
copied: "Copiado",
|
|
81
|
+
renderError: "Erro ao renderizar gráfico",
|
|
82
|
+
parseError: "Erro ao analisar conteúdo!",
|
|
83
|
+
unsupportedChart: "Tipo de gráfico não suportado"
|
|
84
|
+
}
|
|
85
|
+
};
|
|
54
86
|
var RenderVisChart = (0, import_react.memo)(
|
|
55
|
-
({
|
|
87
|
+
({
|
|
88
|
+
style,
|
|
89
|
+
content,
|
|
90
|
+
components,
|
|
91
|
+
debug = false,
|
|
92
|
+
loadingTimeout,
|
|
93
|
+
componentErrorRender,
|
|
94
|
+
errorRender,
|
|
95
|
+
showTabs = true,
|
|
96
|
+
showCodeTab = true,
|
|
97
|
+
showChartTab = true,
|
|
98
|
+
defaultTab = "chart",
|
|
99
|
+
textLabels = {},
|
|
100
|
+
locale = "zh-CN"
|
|
101
|
+
}) => {
|
|
56
102
|
const timeoutRef = (0, import_react.useRef)();
|
|
57
103
|
const copyTimeoutRef = (0, import_react.useRef)();
|
|
58
104
|
const [loading, setLoading] = (0, import_react.useState)(true);
|
|
59
|
-
const [activeTab, setActiveTab] = (0, import_react.useState)("chart");
|
|
60
105
|
const [hasRenderError, setHasRenderError] = (0, import_react.useState)(false);
|
|
61
106
|
const [copied, setCopied] = (0, import_react.useState)(false);
|
|
62
107
|
const chartRef = (0, import_react.useRef)(null);
|
|
63
108
|
const chartContainerRef = (0, import_react.useRef)(null);
|
|
109
|
+
const labels = {
|
|
110
|
+
...DEFAULT_LABELS[locale] || DEFAULT_LABELS["en-US"],
|
|
111
|
+
...textLabels
|
|
112
|
+
};
|
|
113
|
+
const getValidDefaultTab = () => {
|
|
114
|
+
if (defaultTab === "chart" && showChartTab)
|
|
115
|
+
return "chart";
|
|
116
|
+
if (defaultTab === "code" && showCodeTab)
|
|
117
|
+
return "code";
|
|
118
|
+
if (showChartTab)
|
|
119
|
+
return "chart";
|
|
120
|
+
if (showCodeTab)
|
|
121
|
+
return "code";
|
|
122
|
+
return "chart";
|
|
123
|
+
};
|
|
124
|
+
const [activeTab, setActiveTab] = (0, import_react.useState)(getValidDefaultTab());
|
|
64
125
|
let chartJson;
|
|
65
126
|
try {
|
|
66
127
|
chartJson = JSON.parse(content);
|
|
@@ -84,7 +145,7 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
84
145
|
content
|
|
85
146
|
});
|
|
86
147
|
}
|
|
87
|
-
return /* @__PURE__ */ import_react.default.createElement("div", null,
|
|
148
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, labels.parseError);
|
|
88
149
|
}
|
|
89
150
|
const { type, ...chartProps } = chartJson;
|
|
90
151
|
const ChartComponent = components[type];
|
|
@@ -92,20 +153,22 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
92
153
|
console.log("GPT-Vis withChartCode get chartJson parse from vis-chart code block", chartJson);
|
|
93
154
|
}
|
|
94
155
|
if (!ChartComponent) {
|
|
95
|
-
const message =
|
|
156
|
+
const message = `${labels.unsupportedChart}: "${type}"`;
|
|
96
157
|
if (errorRender) {
|
|
97
158
|
return errorRender({
|
|
98
159
|
error: new Error(message),
|
|
99
160
|
content
|
|
100
161
|
});
|
|
101
162
|
}
|
|
102
|
-
return /* @__PURE__ */ import_react.default.createElement("div", null,
|
|
163
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, message);
|
|
103
164
|
}
|
|
104
165
|
const FallbackComponent = (fallbackProps) => {
|
|
105
166
|
const { error } = fallbackProps;
|
|
106
167
|
if (!hasRenderError) {
|
|
107
168
|
setHasRenderError(true);
|
|
108
|
-
|
|
169
|
+
if (showCodeTab && showTabs) {
|
|
170
|
+
setActiveTab("code");
|
|
171
|
+
}
|
|
109
172
|
}
|
|
110
173
|
if (componentErrorRender) {
|
|
111
174
|
return componentErrorRender({
|
|
@@ -113,7 +176,7 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
113
176
|
content
|
|
114
177
|
});
|
|
115
178
|
}
|
|
116
|
-
return /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(import_styles.ErrorMessage, null,
|
|
179
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(import_styles.ErrorMessage, null, labels.renderError));
|
|
117
180
|
};
|
|
118
181
|
const handleCopy = async () => {
|
|
119
182
|
try {
|
|
@@ -126,7 +189,7 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
126
189
|
setCopied(false);
|
|
127
190
|
}, 1e3);
|
|
128
191
|
} catch (error) {
|
|
129
|
-
console.error("
|
|
192
|
+
console.error("Copy failed:", error);
|
|
130
193
|
}
|
|
131
194
|
};
|
|
132
195
|
const handleDownload = async () => {
|
|
@@ -139,7 +202,7 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
139
202
|
});
|
|
140
203
|
}
|
|
141
204
|
} catch (error) {
|
|
142
|
-
console.error("
|
|
205
|
+
console.error("Download image failed:", error);
|
|
143
206
|
}
|
|
144
207
|
};
|
|
145
208
|
const isG6 = G6List.includes(type);
|
|
@@ -157,7 +220,30 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
157
220
|
chartRef.current.zoomTo(newZoom);
|
|
158
221
|
}
|
|
159
222
|
};
|
|
160
|
-
|
|
223
|
+
if (!showTabs) {
|
|
224
|
+
return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledGPTVis, { className: "gpt-vis", style }, /* @__PURE__ */ import_react.default.createElement(import_styles.GlobalStyles, null), /* @__PURE__ */ import_react.default.createElement(import_styles.ChartWrapper, { ref: chartContainerRef }, /* @__PURE__ */ import_react.default.createElement(
|
|
225
|
+
import_react_error_boundary.ErrorBoundary,
|
|
226
|
+
{
|
|
227
|
+
FallbackComponent,
|
|
228
|
+
onError: (error, errorInfo) => {
|
|
229
|
+
console.error("GPT-Vis Render error:", error);
|
|
230
|
+
if (debug) {
|
|
231
|
+
console.error("GPT-Vis Render error info:", errorInfo);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
/* @__PURE__ */ import_react.default.createElement(
|
|
236
|
+
ChartComponent,
|
|
237
|
+
{
|
|
238
|
+
...chartProps,
|
|
239
|
+
onReady: (chart) => {
|
|
240
|
+
chartRef.current = chart;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
)
|
|
244
|
+
)));
|
|
245
|
+
}
|
|
246
|
+
return /* @__PURE__ */ import_react.default.createElement(import_styles.TabContainer, { style }, /* @__PURE__ */ import_react.default.createElement(import_styles.TabHeader, null, /* @__PURE__ */ import_react.default.createElement(import_styles.TabLeftGroup, null, showChartTab && /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabButton, { active: activeTab === "chart", onClick: () => setActiveTab("chart") }, labels.chartTab), showCodeTab && /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabButton, { active: activeTab === "code", onClick: () => setActiveTab("code") }, labels.codeTab)), /* @__PURE__ */ import_react.default.createElement(import_styles.TabRightGroup, null, activeTab === "chart" ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, isG6 && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
|
|
161
247
|
import_styles.TextButton,
|
|
162
248
|
{
|
|
163
249
|
onClick: handleZoomIn,
|
|
@@ -171,7 +257,7 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
171
257
|
style: { width: "24px", height: "24px", padding: 0 }
|
|
172
258
|
},
|
|
173
259
|
/* @__PURE__ */ import_react.default.createElement(import_icon.ZoomOut, { size: 18 })
|
|
174
|
-
), /* @__PURE__ */ import_react.default.createElement(import_styles.Divider, null)), /* @__PURE__ */ import_react.default.createElement(import_styles.TextButton, { onClick: handleDownload }, /* @__PURE__ */ import_react.default.createElement(import_icon.DownLoad, { size: 16 }),
|
|
260
|
+
), /* @__PURE__ */ import_react.default.createElement(import_styles.Divider, null)), /* @__PURE__ */ import_react.default.createElement(import_styles.TextButton, { onClick: handleDownload }, /* @__PURE__ */ import_react.default.createElement(import_icon.DownLoad, { size: 16 }), labels.download)) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_styles.TextButton, { onClick: handleCopy }, copied ? /* @__PURE__ */ import_react.default.createElement(import_icon.Check, null) : /* @__PURE__ */ import_react.default.createElement(import_icon.Copy, null), copied ? labels.copied : labels.copy)))), /* @__PURE__ */ import_react.default.createElement(import_styles.TabContent, null, activeTab === "chart" ? /* @__PURE__ */ import_react.default.createElement(
|
|
175
261
|
import_react_error_boundary.ErrorBoundary,
|
|
176
262
|
{
|
|
177
263
|
FallbackComponent,
|
|
@@ -179,7 +265,9 @@ var RenderVisChart = (0, import_react.memo)(
|
|
|
179
265
|
console.error("GPT-Vis Render error:", error);
|
|
180
266
|
if (!hasRenderError) {
|
|
181
267
|
setHasRenderError(true);
|
|
182
|
-
|
|
268
|
+
if (showCodeTab) {
|
|
269
|
+
setActiveTab("code");
|
|
270
|
+
}
|
|
183
271
|
}
|
|
184
272
|
if (debug) {
|
|
185
273
|
console.error("GPT-Vis Render error info:", errorInfo);
|
|
@@ -55,7 +55,15 @@ var withCodeBlock = (options) => {
|
|
|
55
55
|
loadingTimeout = 5e3,
|
|
56
56
|
style,
|
|
57
57
|
errorRender,
|
|
58
|
-
componentErrorRender
|
|
58
|
+
componentErrorRender,
|
|
59
|
+
// New options for tab control
|
|
60
|
+
showTabs,
|
|
61
|
+
showCodeTab,
|
|
62
|
+
showChartTab,
|
|
63
|
+
defaultTab,
|
|
64
|
+
// New options for text customization
|
|
65
|
+
textLabels,
|
|
66
|
+
locale
|
|
59
67
|
} = options;
|
|
60
68
|
if (isVisChart) {
|
|
61
69
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
@@ -67,7 +75,13 @@ var withCodeBlock = (options) => {
|
|
|
67
75
|
debug,
|
|
68
76
|
loadingTimeout,
|
|
69
77
|
errorRender,
|
|
70
|
-
componentErrorRender
|
|
78
|
+
componentErrorRender,
|
|
79
|
+
showTabs,
|
|
80
|
+
showCodeTab,
|
|
81
|
+
showChartTab,
|
|
82
|
+
defaultTab,
|
|
83
|
+
textLabels,
|
|
84
|
+
locale
|
|
71
85
|
}
|
|
72
86
|
);
|
|
73
87
|
}
|