@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
@@ -1,73 +1,172 @@
1
1
  import type { FC } from 'react';
2
2
  import type { Components, ExtraProps } from 'react-markdown';
3
3
  /**
4
+ * Text labels type for internationalization
5
+ * 文本标签类型 - 用于国际化
6
+ */
7
+ export type TextLabels = {
8
+ chartTab?: string;
9
+ codeTab?: string;
10
+ download?: string;
11
+ copy?: string;
12
+ copied?: string;
13
+ renderError?: string;
14
+ parseError?: string;
15
+ unsupportedChart?: string;
16
+ };
17
+ /**
18
+ * Chart enhancement options - contains all new feature configurations
19
+ * 图表增强选项 - 包含所有新增的功能配置
20
+ */
21
+ export type ChartEnhancementOptions = {
22
+ /**
23
+ * Controls whether tabs are displayed (default: true)
24
+ * 控制是否显示标签页 (默认: true)
25
+ */
26
+ showTabs?: boolean;
27
+ /**
28
+ * Controls whether code tab is shown (default: true)
29
+ * 控制是否显示代码标签页 (默认: true)
30
+ */
31
+ showCodeTab?: boolean;
32
+ /**
33
+ * Controls whether chart tab is shown (default: true)
34
+ * 控制是否显示图表标签页 (默认: true)
35
+ */
36
+ showChartTab?: boolean;
37
+ /**
38
+ * Default active tab (default: 'chart')
39
+ * 默认激活的标签页 (默认: 'chart')
40
+ */
41
+ defaultTab?: 'chart' | 'code';
42
+ /**
43
+ * Custom text labels
44
+ * 自定义文本标签
45
+ */
46
+ textLabels?: TextLabels;
47
+ /**
48
+ * Locale setting for default text labels (default: 'zh-CN')
49
+ * Supports: 'zh-CN' | 'en-US' | 'pt-BR'
50
+ * 语言区域设置,用于默认文本标签 (默认: 'zh-CN')
51
+ * 支持: 'zh-CN' | 'en-US' | 'pt-BR'
52
+ */
53
+ locale?: string;
54
+ };
55
+ /**
56
+ * Error render function type
4
57
  * 错误渲染函数类型
5
58
  */
6
59
  export type ErrorRender = {
7
- /** 错误对象 */
60
+ /** Error object | 错误对象 */
8
61
  error?: Error;
9
- /** 原始内容 */
62
+ /** Original content | 原始内容 */
10
63
  content: string;
11
64
  };
65
+ /**
66
+ * Component error render type
67
+ * 组件错误渲染类型
68
+ */
12
69
  export type ComponentErrorRender = {
13
- /** 错误对象 */
70
+ /** Error object | 错误对象 */
14
71
  error?: Error;
15
- /** 原始内容 */
72
+ /** Original content | 原始内容 */
16
73
  content: string;
17
74
  };
75
+ /**
76
+ * Options for withChartCode HOC
77
+ * withChartCode 高阶组件选项
78
+ */
18
79
  export type WithChartCodeOptions = {
19
80
  /**
81
+ * Additional chart components to load
20
82
  * 要额外加载的图表组件
21
83
  */
22
84
  components: ChartComponents;
23
85
  /**
86
+ * Custom renderers for other language code blocks
24
87
  * 自定义其它语言代码块渲染器
25
88
  */
26
89
  languageRenderers?: LanguageRenderers;
27
90
  /**
91
+ * Default code renderer
28
92
  * 默认的代码渲染器
29
93
  */
30
94
  defaultRenderer?: CodeRenderer;
31
95
  /**
96
+ * Enable debug logging
32
97
  * 打开调试日志
33
98
  */
34
99
  debug?: boolean;
35
100
  /**
101
+ * Loading animation timeout, default 5s
36
102
  * 设置loading动画的超时时间,默认为 5s
37
103
  */
38
104
  loadingTimeout?: number;
39
105
  /**
106
+ * Chart styles, configure container styles
40
107
  * 图表样式,配置容器样式
41
108
  */
42
109
  style?: React.CSSProperties;
43
110
  /**
111
+ * Custom component error render function
44
112
  * 自定义组件错误渲染函数
45
113
  */
46
114
  componentErrorRender?: (errorInfo: ComponentErrorRender) => React.ReactElement;
47
115
  /**
116
+ * Custom error render function
48
117
  * 自定义错误渲染函数
49
118
  */
50
119
  errorRender?: (errorInfo: ErrorRender) => React.ReactElement;
51
- };
120
+ } & ChartEnhancementOptions;
121
+ /**
122
+ * RenderVisChart component props type
123
+ * RenderVisChart 组件属性类型
124
+ */
125
+ export type RenderVisChartProps = {
126
+ /** Chart content string | 图表内容字符串 */
127
+ content: string;
128
+ /** Chart components dictionary | 图表组件字典 */
129
+ components: ChartComponents;
130
+ /** Enable debug mode | 启用调试模式 */
131
+ debug?: boolean;
132
+ /** Loading timeout in milliseconds | 加载超时时间(毫秒) */
133
+ loadingTimeout: number;
134
+ /** Container styles | 容器样式 */
135
+ style?: React.CSSProperties;
136
+ /** Custom component error renderer | 自定义组件错误渲染器 */
137
+ componentErrorRender?: (errorInfo: ComponentErrorRender) => React.ReactElement;
138
+ /** Custom error renderer | 自定义错误渲染器 */
139
+ errorRender?: (errorInfo: ErrorRender) => React.ReactElement;
140
+ } & ChartEnhancementOptions;
52
141
  /**
142
+ * Chart render data interface, for future extension, this is just an example
53
143
  * 图表渲染数据接口,后续拓展,这里只是写个示例
54
144
  */
55
145
  export interface ChartJson {
146
+ /** Chart type | 图表类型 */
56
147
  type: string;
148
+ /** Chart data | 图表数据 */
57
149
  data: any;
58
150
  }
59
151
  /**
152
+ * Chart components dictionary
60
153
  * 图表组件字典
61
154
  */
62
155
  export interface ChartComponents {
63
156
  [key: string]: FC<any>;
64
157
  }
65
158
  /**
159
+ * Code block renderer interface
66
160
  * 代码块渲染器接口
67
161
  */
68
162
  export type CodeBlockComponent = Components['code'];
163
+ /**
164
+ * Code renderer type
165
+ * 代码渲染器类型
166
+ */
69
167
  type CodeRenderer = FC<React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement> & ExtraProps>;
70
168
  /**
169
+ * Custom renderers for other language code blocks
71
170
  * 自定义其它语言代码块渲染器
72
171
  */
73
172
  interface LanguageRenderers {
@@ -1,11 +1,13 @@
1
- import type { ColumnConfig } 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 ColumnDataItem = {
5
4
  category: string | number;
6
5
  value: number;
7
6
  [key: string]: string | number;
8
7
  };
9
- export type ColumnProps = BasePlotProps<ColumnDataItem> & Partial<ColumnConfig>;
8
+ export type ColumnProps = BasePlotProps<ColumnDataItem> & Theme & Style & {
9
+ group?: boolean;
10
+ stack?: boolean;
11
+ };
10
12
  declare const Column: (props: ColumnProps) => React.JSX.Element;
11
13
  export default Column;
@@ -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;
44
+ const hasPalette = !!(palette == null ? void 0 : palette[0]);
42
45
  const axisYTitle = (0, import_lodash.get)(props, "axis.y.title");
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" : void 0,
67
+ colorField: hasGroupField ? "group" : xField,
47
68
  tooltip: (d) => {
48
69
  const tooltipName = axisYTitle || d[xField];
49
70
  return {
@@ -52,14 +73,30 @@ var defaultConfig = (props) => {
52
73
  };
53
74
  },
54
75
  style: {
55
- // 圆角样式
56
- radiusTopLeft: 10,
57
- radiusTopRight: 10
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,
87
+ group: hasGroupField
59
88
  };
60
89
  };
61
90
  var Column = (props) => {
62
- const config = (0, import_hooks.usePlotConfig)("Column", defaultConfig, props);
91
+ const themeConfig = import_theme.THEME_MAP[props.theme ?? "default"];
92
+ const { data, group = false, stack = false } = props;
93
+ const hasGroupField = (0, import_lodash.get)(data, "[0].group") !== void 0;
94
+ const config = (0, import_hooks.usePlotConfig)("Column", defaultConfig, {
95
+ ...props,
96
+ theme: themeConfig,
97
+ group: hasGroupField && group,
98
+ stack: hasGroupField && stack
99
+ });
63
100
  return /* @__PURE__ */ import_react.default.createElement(import_plots.Column, { ...config });
64
101
  };
65
102
  var Column_default = Column;
@@ -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;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { BasePlotProps, Style, Theme } from '../types';
3
+ type FunnelDatum = {
4
+ category: string;
5
+ value: number;
6
+ };
7
+ export type FunnelProps = BasePlotProps<FunnelDatum> & Theme & Style & {
8
+ width?: number;
9
+ height?: number;
10
+ };
11
+ declare const Funnel: (props: FunnelProps) => React.JSX.Element;
12
+ export default Funnel;
@@ -0,0 +1,173 @@
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/Funnel/index.tsx
30
+ var Funnel_exports = {};
31
+ __export(Funnel_exports, {
32
+ default: () => Funnel_default
33
+ });
34
+ module.exports = __toCommonJS(Funnel_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 { data, title, theme = "default", style = {} } = props;
40
+ const { backgroundColor, palette = [] } = style;
41
+ const r = (start, end) => `${(end / start * 100).toFixed(2)} %`;
42
+ return {
43
+ type: "view",
44
+ data,
45
+ theme: import_theme.THEME_MAP[theme],
46
+ title,
47
+ padding: 40,
48
+ insetRight: 28,
49
+ children: [
50
+ {
51
+ type: "interval",
52
+ data,
53
+ encode: { x: "category", y: "value", color: "category", shape: "funnel" },
54
+ transform: [{ type: "symmetryY" }],
55
+ scale: {
56
+ x: { padding: 0 },
57
+ ...(palette == null ? void 0 : palette[0]) ? {
58
+ color: {
59
+ range: palette
60
+ }
61
+ } : {}
62
+ },
63
+ coordinate: { transform: [{ type: "transpose" }] },
64
+ legend: {
65
+ color: {
66
+ position: "top",
67
+ layout: {
68
+ justifyContent: "center"
69
+ }
70
+ }
71
+ },
72
+ labels: [
73
+ {
74
+ text: (d) => `${d.category}
75
+ ${d.value}`,
76
+ position: "inside",
77
+ transform: [{ type: "contrastReverse" }]
78
+ },
79
+ {
80
+ text: (d, i) => i !== 0 ? "———" : "",
81
+ style: {
82
+ "font-size": "1px",
83
+ color: "#666",
84
+ "letter-spacing": "0px"
85
+ },
86
+ position: "top-right",
87
+ fill: "#666",
88
+ dx: 35,
89
+ dy: -8
90
+ },
91
+ {
92
+ text: (d, i) => i !== 0 ? "转化率" : "",
93
+ position: "top-right",
94
+ textAlign: "left",
95
+ textBaseline: "middle",
96
+ fill: "#666",
97
+ dx: 40
98
+ },
99
+ {
100
+ text: (d, i, data2) => i !== 0 ? r(data2[i - 1].value, data2[i].value) : "",
101
+ position: "top-right",
102
+ textAlign: "left",
103
+ textBaseline: "middle",
104
+ dx: 80
105
+ }
106
+ ],
107
+ ...backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : {}
108
+ },
109
+ {
110
+ type: "connector",
111
+ data: [
112
+ {
113
+ startX: data[0].category,
114
+ startY: data[data.length - 1].category,
115
+ endX: 0,
116
+ endY: (data[0].value - data[data.length - 1].value) / 2
117
+ }
118
+ ],
119
+ encode: { x: "startX", x1: "startY", y: "endX", y1: "endY" },
120
+ style: {
121
+ stroke: "#666",
122
+ markerEnd: false,
123
+ connectLength1: -12,
124
+ offset2: -20,
125
+ connectorStroke: "#0649f2",
126
+ lineDash: [12, 2]
127
+ },
128
+ labels: [
129
+ {
130
+ text: "转化率",
131
+ position: "left",
132
+ textAlign: "start",
133
+ textBaseline: "middle",
134
+ fill: "#666",
135
+ dx: 10
136
+ },
137
+ {
138
+ text: r(data[0].value, data[data.length - 1].value),
139
+ position: "left",
140
+ textAlign: "start",
141
+ dx: 50,
142
+ fill: "#000"
143
+ }
144
+ ]
145
+ }
146
+ ],
147
+ axis: false,
148
+ animate: false
149
+ };
150
+ };
151
+ var Funnel = (props) => {
152
+ const containerRef = (0, import_react.useRef)(null);
153
+ const chartRef = (0, import_react.useRef)(null);
154
+ (0, import_react.useEffect)(() => {
155
+ if (!containerRef.current)
156
+ return;
157
+ const chart = new import_g2.Chart({
158
+ container: containerRef.current,
159
+ autoFit: true,
160
+ padding: "auto"
161
+ });
162
+ const config = defaultConfig(props);
163
+ chart.options(config);
164
+ chart.render();
165
+ chartRef.current = chart;
166
+ return () => {
167
+ chart.destroy();
168
+ chartRef.current = null;
169
+ };
170
+ }, [props]);
171
+ return /* @__PURE__ */ import_react.default.createElement("div", { ref: containerRef });
172
+ };
173
+ var Funnel_default = Funnel;
@@ -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;