visualifyjs 2.5.3-2.dev → 3.0.0

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 (252) hide show
  1. package/.claude/mem/TIMELINE.md +36 -0
  2. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
  3. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
  4. package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
  5. package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
  6. package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
  7. package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
  8. package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
  9. package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
  10. package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
  11. package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
  12. package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
  13. package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
  14. package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
  15. package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
  16. package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
  17. package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
  18. package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
  19. package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
  20. package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
  21. package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
  22. package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
  23. package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
  24. package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
  25. package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
  26. package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
  27. package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
  28. package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
  29. package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
  30. package/.claude/settings.local.json +21 -0
  31. package/.github/workflows/static.yml.bak +51 -51
  32. package/.sisyphus/boulder.json +65 -0
  33. package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
  34. package/LICENSE +674 -674
  35. package/README.md +94 -59
  36. package/config-overrides.js +31 -31
  37. package/dist/stats.html +4949 -0
  38. package/dist/visualify-3d.esm.js +1 -0
  39. package/dist/visualify-3d.js +1 -0
  40. package/dist/visualify-core.esm.js +1 -0
  41. package/dist/visualify-core.js +1 -0
  42. package/dist/visualify-docs.esm.js +1 -0
  43. package/dist/visualify-docs.js +1 -0
  44. package/dist/visualify-loader.js +1 -0
  45. package/dist/visualify-pages.esm.js +1 -0
  46. package/dist/visualify-pages.js +1 -0
  47. package/dist/visualify-portal.esm.js +1 -0
  48. package/dist/visualify-portal.js +1 -0
  49. package/dist/visualify-shared.js +26571 -0
  50. package/dist/visualify.js +1 -188
  51. package/docs/CHANGELOG.md +148 -0
  52. package/docs/cli/commands.md +513 -0
  53. package/docs/configuration/visualify-json.md +474 -0
  54. package/docs/docs/3d-visualization.md +374 -0
  55. package/docs/docs/CLI.md +303 -34
  56. package/docs/docs/README.md +65 -65
  57. package/docs/docs/Rechart/bar.md +190 -190
  58. package/docs/docs/Rechart/funnel.md +241 -241
  59. package/docs/docs/Rechart/line.md +355 -355
  60. package/docs/docs/Rechart/pie.md +225 -225
  61. package/docs/docs/Rechart/radar.md +253 -253
  62. package/docs/docs/Rechart/scatter.md +298 -298
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -44
  66. package/docs/docs/components/dotBio.md +87 -34
  67. package/docs/docs/components/echart.md +171 -82
  68. package/docs/docs/components/html.md +61 -34
  69. package/docs/docs/components/macaron.md +156 -145
  70. package/docs/docs/components/markdown.md +42 -0
  71. package/docs/docs/components/more.md +183 -142
  72. package/docs/docs/components/plotly.md +132 -62
  73. package/docs/docs/components/scatterL.md +171 -70
  74. package/docs/docs/components/visium.md +112 -57
  75. package/docs/docs/configuration.md +121 -121
  76. package/docs/docs/deploy.md +31 -31
  77. package/docs/docs/docsify-plugin.md +655 -0
  78. package/docs/docs/hmr.md +165 -0
  79. package/docs/docs/i18n.md +332 -0
  80. package/docs/docs/log.md +30 -9
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -124
  83. package/docs/docs/rechart-attributes.md +74 -74
  84. package/docs/docs/rechart-basic-usage.md +160 -162
  85. package/docs/docs/theme.md +5 -5
  86. package/docs/docs/typescript.md +306 -0
  87. package/docs/docs/visual-editor.md +359 -0
  88. package/docs/index.html +85 -71
  89. package/docs/manifest.json +23 -23
  90. package/docs/migration/v3-migration.md +392 -0
  91. package/docs/static/css/fluff-stuff.css +169 -169
  92. package/docs/static/css/font-awesome.min.css +4 -4
  93. package/docs/static/css/visualify.css +6 -25
  94. package/docs/static/js/3d-viz-examples.js +181 -0
  95. package/docs/static/js/configuration.js +630 -448
  96. package/docs/static/js/visualify.js +1 -188
  97. package/package.json +106 -84
  98. package/rollup.config.mjs +766 -76
  99. package/src/_css/404.css +115 -115
  100. package/src/_css/App.css +37 -37
  101. package/src/_css/autoSuggestion.css +26 -26
  102. package/src/_css/circular-progress.css +32 -32
  103. package/src/_css/index.css +36 -36
  104. package/src/_css/modern.css +350 -25
  105. package/src/_media/corner.svg +8 -8
  106. package/src/_media/download.svg +3 -3
  107. package/src/_media/logo.svg +14 -14
  108. package/src/_test/App.test.js +15 -15
  109. package/src/_utils/reportWebVitals.js +13 -13
  110. package/src/a11y/README.md +177 -0
  111. package/src/a11y/aria-labels.js +339 -0
  112. package/src/a11y/color-contrast.js +535 -0
  113. package/src/a11y/index.js +197 -0
  114. package/src/a11y/keyboard-nav.js +523 -0
  115. package/src/a11y/styles.css +165 -0
  116. package/src/cli/commands/dev.js +214 -0
  117. package/src/cli/commands/docs.js +521 -0
  118. package/src/cli/commands/edit.js +379 -0
  119. package/src/cli/commands/init.js +213 -0
  120. package/src/cli/commands/portal.js +236 -0
  121. package/src/cli/dev-server.js +530 -0
  122. package/src/cli/hmr.js +456 -0
  123. package/src/cli/index.js +180 -0
  124. package/src/cli/utils/config.js +207 -0
  125. package/src/cli/utils/logger.js +241 -0
  126. package/src/config/defaults.ts +122 -0
  127. package/src/config/index.ts +72 -0
  128. package/src/config/loader.ts +478 -0
  129. package/src/config/schema.ts +227 -0
  130. package/src/config/validator.ts +337 -0
  131. package/src/core/appContext.js +34 -27
  132. package/src/core/components/Bar.js +383 -0
  133. package/src/core/components/Bar3D.js +473 -0
  134. package/src/core/components/LargeDatasetChart.js +296 -0
  135. package/src/core/components/Line3D.js +310 -0
  136. package/src/core/components/Scatter.js +392 -188
  137. package/src/core/components/Scatter3D.js +455 -0
  138. package/src/core/components/ScatterBio.js +601 -572
  139. package/src/core/components/Surface3D.js +326 -0
  140. package/src/core/components/ThreeCustom.js +648 -0
  141. package/src/core/components/ThreeScene.js +459 -0
  142. package/src/core/components/VisiumPlot.js +191 -165
  143. package/src/core/components/browser.js +42 -42
  144. package/src/core/components/dotplot.js +413 -413
  145. package/src/core/components/html.js +29 -29
  146. package/src/core/components/list.js +178 -178
  147. package/src/core/components/macaron.js +206 -201
  148. package/src/core/components/markdown.js +56 -56
  149. package/src/core/components/parser.scatterBio.js +582 -587
  150. package/src/core/components/ratio.js +82 -80
  151. package/src/core/components/scatterL.js +206 -173
  152. package/src/core/components/searchbar.js +156 -131
  153. package/src/core/components/selection.js +310 -193
  154. package/src/core/components/timeline.js +236 -281
  155. package/src/core/components/visium.js +114 -97
  156. package/src/core/data-processor.js +413 -0
  157. package/src/core/fetch/condfetch.js +82 -82
  158. package/src/core/fetch/fetch.js +92 -92
  159. package/src/core/fetch/json.js +29 -29
  160. package/src/core/fetch/vfetch.js +42 -42
  161. package/src/core/hmr-client.js +724 -0
  162. package/src/core/liveEditor.js +44 -44
  163. package/src/core/modules/codeEditorWithPreview.js +104 -104
  164. package/src/core/modules/echarts/common.js +20 -20
  165. package/src/core/modules/echarts/gl.js +228 -0
  166. package/src/core/modules/echarts/presetHandler.js +41 -41
  167. package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
  168. package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
  169. package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
  170. package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
  171. package/src/core/modules/echarts.js +70 -71
  172. package/src/core/modules/echartsUtils.js +43 -43
  173. package/src/core/modules/echartswitcher.js +227 -152
  174. package/src/core/modules/replotly/presetHandler.js +24 -24
  175. package/src/core/modules/replotly/presets/minimum.js +18 -18
  176. package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
  177. package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
  178. package/src/core/modules/replotly.js +74 -71
  179. package/src/core/modules/threejs/Camera.js +373 -0
  180. package/src/core/modules/threejs/Lighting.js +459 -0
  181. package/src/core/modules/threejs/Renderer.js +364 -0
  182. package/src/core/modules/threejs/Scene.js +266 -0
  183. package/src/core/modules/threejs/index.js +155 -0
  184. package/src/core/pages/404.js +50 -50
  185. package/src/core/pages/error.js +27 -27
  186. package/src/core/pages/jsonPage.js +62 -62
  187. package/src/core/pages/loading.js +44 -44
  188. package/src/core/parser/echart.data.js +204 -183
  189. package/src/core/parser/echart.features.js +125 -125
  190. package/src/core/parser/echart.general.js +147 -147
  191. package/src/core/parser/echart.hilbert.js +57 -57
  192. package/src/core/parser/echart.parser.js +210 -210
  193. package/src/core/parser/echart.series.js +67 -67
  194. package/src/core/parser/echart.types.js +76 -76
  195. package/src/core/parser/plotly.config.js +10 -10
  196. package/src/core/parser/plotly.data.js +132 -132
  197. package/src/core/parser/plotly.layout.js +9 -9
  198. package/src/core/parser/plotly.violin.js +18 -18
  199. package/src/core/recharts.js +361 -62
  200. package/src/core/router/alias.js +49 -49
  201. package/src/core/router/jsonRouter.js +31 -31
  202. package/src/core/themes/modern.js +32 -32
  203. package/src/core/themes/themeSelector.js +33 -33
  204. package/src/core/visualify.js +213 -47
  205. package/src/core/widgets/circularProgress.js +23 -23
  206. package/src/core/widgets/controller.js +116 -83
  207. package/src/core/widgets/errorBoundary.js +36 -36
  208. package/src/core/widgets/footer.js +185 -177
  209. package/src/core/widgets/header.js +238 -234
  210. package/src/core/widgets/layout/Grid.js +31 -31
  211. package/src/core/widgets/layout.js +36 -36
  212. package/src/core/widgets/mapping.js +56 -42
  213. package/src/core/workers/data-worker.js +349 -0
  214. package/src/core/workers/worker-pool.js +396 -0
  215. package/src/docsify/bundle.js +215 -0
  216. package/src/docsify/markdown.js +271 -0
  217. package/src/docsify/plugin.js +268 -0
  218. package/src/editor/README.md +172 -0
  219. package/src/editor/components/ChartBuilder.jsx +341 -0
  220. package/src/editor/components/ChartTypeSidebar.jsx +91 -0
  221. package/src/editor/components/Editor.jsx +367 -0
  222. package/src/editor/components/Preview.jsx +446 -0
  223. package/src/editor/components/PropertyPanel.jsx +468 -0
  224. package/src/editor/components/StatusBar.jsx +85 -0
  225. package/src/editor/context/EditorContext.js +248 -0
  226. package/src/editor/hooks/useDebounce.js +32 -0
  227. package/src/editor/index.js +315 -0
  228. package/src/editor/styles/editor.css +637 -0
  229. package/src/editor/utils/chartValidator.js +263 -0
  230. package/src/entries/charts3d.js +70 -0
  231. package/src/entries/core.js +78 -0
  232. package/src/entries/docs.js +154 -0
  233. package/src/entries/pages.js +93 -0
  234. package/src/entries/portal.js +204 -0
  235. package/src/entries/shared.js +50 -0
  236. package/src/i18n/formatters.js +455 -0
  237. package/src/i18n/index.js +169 -0
  238. package/src/i18n/locales/ar.json +137 -0
  239. package/src/i18n/locales/de.json +137 -0
  240. package/src/i18n/locales/en.json +137 -0
  241. package/src/i18n/locales/es.json +137 -0
  242. package/src/i18n/locales/he.json +137 -0
  243. package/src/i18n/locales/zh.json +137 -0
  244. package/src/i18n/rtl.css +183 -0
  245. package/src/index.js +82 -62
  246. package/src/loader.js +103 -0
  247. package/src/setupTests.js +5 -5
  248. package/tsconfig.json +51 -0
  249. package/types/charts.d.ts +569 -0
  250. package/types/components.d.ts +441 -0
  251. package/types/config.d.ts +199 -0
  252. package/types/index.d.ts +353 -0
@@ -0,0 +1,569 @@
1
+ /**
2
+ * Visualify.js Chart Configuration Types
3
+ * @module types/charts
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * import { ScatterConfig, Bar3DConfig } from 'visualifyjs/types';
8
+ *
9
+ * const scatter: ScatterConfig = {
10
+ * type: 'scatter',
11
+ * data: [{ x: 1, y: 2 }, { x: 3, y: 4 }],
12
+ * title: 'My Scatter Plot'
13
+ * };
14
+ * ```
15
+ */
16
+
17
+ import { CSSProperties } from 'react';
18
+
19
+ /**
20
+ * Supported chart types
21
+ */
22
+ export type ChartType =
23
+ | 'scatter'
24
+ | 'scatter3D'
25
+ | 'bar'
26
+ | 'bar3D'
27
+ | 'line'
28
+ | 'line3D'
29
+ | 'surface3D'
30
+ | 'pie'
31
+ | 'heatmap'
32
+ | 'custom';
33
+
34
+ /**
35
+ * Axis type for charts
36
+ */
37
+ export type AxisType = 'value' | 'category' | 'time' | 'log';
38
+
39
+ /**
40
+ * Data zoom type
41
+ */
42
+ export type DataZoomType = 'inside' | 'slider' | 'both' | 'none';
43
+
44
+ /**
45
+ * 3D shading modes
46
+ */
47
+ export type ShadingType = 'lambert' | 'realistic' | 'color';
48
+
49
+ /**
50
+ * Coordinate in 2D space
51
+ */
52
+ export interface Point2D {
53
+ x: number;
54
+ y: number;
55
+ }
56
+
57
+ /**
58
+ * Coordinate in 3D space
59
+ */
60
+ export interface Point3D {
61
+ x: number;
62
+ y: number;
63
+ z: number;
64
+ }
65
+
66
+ /**
67
+ * Data point with optional metadata
68
+ */
69
+ export interface DataPoint extends Record<string, unknown> {
70
+ name?: string;
71
+ value?: number | number[];
72
+ itemStyle?: ItemStyle;
73
+ }
74
+
75
+ /**
76
+ * Item style configuration
77
+ */
78
+ export interface ItemStyle {
79
+ color?: string;
80
+ opacity?: number;
81
+ borderColor?: string;
82
+ borderWidth?: number;
83
+ [key: string]: unknown;
84
+ }
85
+
86
+ /**
87
+ * Line style configuration
88
+ */
89
+ export interface LineStyle {
90
+ color?: string;
91
+ width?: number;
92
+ type?: 'solid' | 'dashed' | 'dotted';
93
+ opacity?: number;
94
+ [key: string]: unknown;
95
+ }
96
+
97
+ /**
98
+ * Label configuration
99
+ */
100
+ export interface LabelConfig {
101
+ show?: boolean;
102
+ position?: string;
103
+ formatter?: string | ((params: unknown) => string);
104
+ fontSize?: number;
105
+ color?: string;
106
+ [key: string]: unknown;
107
+ }
108
+
109
+ /**
110
+ * Axis configuration
111
+ */
112
+ export interface AxisConfig {
113
+ /** Axis type */
114
+ type?: AxisType;
115
+ /** Axis name */
116
+ name?: string;
117
+ /** Gap between axis name and axis line */
118
+ nameGap?: number;
119
+ /** Location of axis name */
120
+ nameLocation?: 'start' | 'center' | 'end';
121
+ /** Minimum value */
122
+ min?: number | string;
123
+ /** Maximum value */
124
+ max?: number | string;
125
+ /** Axis data for category type */
126
+ data?: string[] | number[];
127
+ /** Show axis line */
128
+ axisLine?: { show?: boolean; lineStyle?: LineStyle };
129
+ /** Show axis labels */
130
+ axisLabel?: { show?: boolean; formatter?: string | ((value: unknown) => string) };
131
+ /** Show split lines */
132
+ splitLine?: { show?: boolean; lineStyle?: LineStyle };
133
+ [key: string]: unknown;
134
+ }
135
+
136
+ /**
137
+ * 3D Axis configuration
138
+ */
139
+ export interface Axis3DConfig extends AxisConfig {
140
+ /** 3D specific axis settings */
141
+ nameTextStyle?: {
142
+ fontSize?: number;
143
+ color?: string;
144
+ };
145
+ }
146
+
147
+ /**
148
+ * Grid configuration for 2D charts
149
+ */
150
+ export interface GridConfig {
151
+ left?: string | number;
152
+ right?: string | number;
153
+ top?: string | number;
154
+ bottom?: string | number;
155
+ containLabel?: boolean;
156
+ show?: boolean;
157
+ borderColor?: string;
158
+ backgroundColor?: string;
159
+ [key: string]: unknown;
160
+ }
161
+
162
+ /**
163
+ * 3D Grid configuration
164
+ */
165
+ export interface Grid3DConfig {
166
+ /** Width of the 3D box */
167
+ boxWidth?: number;
168
+ /** Depth of the 3D box */
169
+ boxDepth?: number;
170
+ /** Height of the 3D box */
171
+ boxHeight?: number;
172
+ /** View control settings */
173
+ viewControl?: {
174
+ autoRotate?: boolean;
175
+ projection?: 'perspective' | 'orthographic';
176
+ alpha?: number;
177
+ beta?: number;
178
+ distance?: number;
179
+ [key: string]: unknown;
180
+ };
181
+ /** Light settings */
182
+ light?: {
183
+ main?: {
184
+ intensity?: number;
185
+ shadow?: boolean;
186
+ [key: string]: unknown;
187
+ };
188
+ ambient?: {
189
+ intensity?: number;
190
+ [key: string]: unknown;
191
+ };
192
+ };
193
+ [key: string]: unknown;
194
+ }
195
+
196
+ /**
197
+ * Visual map configuration for data mapping
198
+ */
199
+ export interface VisualMapConfig {
200
+ show?: boolean;
201
+ type?: 'continuous' | 'piecewise';
202
+ min?: number;
203
+ max?: number;
204
+ dimension?: number;
205
+ inRange?: {
206
+ color?: string[];
207
+ symbolSize?: number[];
208
+ [key: string]: unknown;
209
+ };
210
+ [key: string]: unknown;
211
+ }
212
+
213
+ /**
214
+ * Tooltip configuration
215
+ */
216
+ export interface TooltipConfig {
217
+ show?: boolean;
218
+ trigger?: 'item' | 'axis' | 'none';
219
+ formatter?: string | ((params: unknown) => string);
220
+ axisPointer?: {
221
+ type?: 'line' | 'cross' | 'shadow';
222
+ [key: string]: unknown;
223
+ };
224
+ [key: string]: unknown;
225
+ }
226
+
227
+ /**
228
+ * Legend configuration
229
+ */
230
+ export interface LegendConfig {
231
+ show?: boolean;
232
+ data?: string[];
233
+ orient?: 'horizontal' | 'vertical';
234
+ left?: string | number;
235
+ right?: string | number;
236
+ top?: string | number;
237
+ bottom?: string | number;
238
+ [key: string]: unknown;
239
+ }
240
+
241
+ /**
242
+ * Toolbox configuration
243
+ */
244
+ export interface ToolboxConfig {
245
+ show?: boolean;
246
+ feature?: {
247
+ saveAsImage?: { show?: boolean; [key: string]: unknown };
248
+ dataZoom?: { show?: boolean; [key: string]: unknown };
249
+ restore?: { show?: boolean; [key: string]: unknown };
250
+ [key: string]: unknown;
251
+ };
252
+ [key: string]: unknown;
253
+ }
254
+
255
+ /**
256
+ * Series configuration base interface
257
+ */
258
+ export interface SeriesConfig {
259
+ type?: string;
260
+ name?: string;
261
+ data?: unknown[];
262
+ itemStyle?: ItemStyle;
263
+ label?: LabelConfig;
264
+ emphasis?: {
265
+ itemStyle?: ItemStyle;
266
+ label?: LabelConfig;
267
+ [key: string]: unknown;
268
+ };
269
+ [key: string]: unknown;
270
+ }
271
+
272
+ /**
273
+ * Scatter series configuration
274
+ */
275
+ export interface ScatterSeriesConfig extends SeriesConfig {
276
+ type: 'scatter';
277
+ symbolSize?: number | ((data: unknown) => number);
278
+ symbol?: string;
279
+ }
280
+
281
+ /**
282
+ * 3D Scatter series configuration
283
+ */
284
+ export interface Scatter3DSeriesConfig extends SeriesConfig {
285
+ type: 'scatter3D';
286
+ symbolSize?: number;
287
+ opacity?: number;
288
+ shading?: ShadingType;
289
+ }
290
+
291
+ /**
292
+ * Bar series configuration
293
+ */
294
+ export interface BarSeriesConfig extends SeriesConfig {
295
+ type: 'bar';
296
+ barWidth?: string | number;
297
+ barGap?: string | number;
298
+ stack?: string;
299
+ }
300
+
301
+ /**
302
+ * 3D Bar series configuration
303
+ */
304
+ export interface Bar3DSeriesConfig extends SeriesConfig {
305
+ type: 'bar3D';
306
+ shading?: ShadingType;
307
+ bevelSize?: number;
308
+ bevelSmoothness?: number;
309
+ }
310
+
311
+ /**
312
+ * Line series configuration
313
+ */
314
+ export interface LineSeriesConfig extends SeriesConfig {
315
+ type: 'line';
316
+ smooth?: boolean;
317
+ lineStyle?: LineStyle;
318
+ areaStyle?: ItemStyle;
319
+ symbol?: string;
320
+ symbolSize?: number;
321
+ connectNulls?: boolean;
322
+ }
323
+
324
+ /**
325
+ * 3D Line series configuration
326
+ */
327
+ export interface Line3DSeriesConfig extends SeriesConfig {
328
+ type: 'line3D';
329
+ lineStyle?: LineStyle;
330
+ symbol?: string;
331
+ symbolSize?: number;
332
+ }
333
+
334
+ /**
335
+ * 3D Surface series configuration
336
+ */
337
+ export interface SurfaceSeriesConfig extends SeriesConfig {
338
+ type: 'surface';
339
+ shading?: ShadingType;
340
+ wireframe?: {
341
+ show?: boolean;
342
+ lineStyle?: LineStyle;
343
+ };
344
+ contour?: {
345
+ show?: boolean;
346
+ color?: string;
347
+ [key: string]: unknown;
348
+ };
349
+ }
350
+
351
+ /**
352
+ * Title configuration
353
+ */
354
+ export interface TitleConfig {
355
+ text?: string;
356
+ subtext?: string;
357
+ left?: string | number;
358
+ right?: string | number;
359
+ top?: string | number;
360
+ bottom?: string | number;
361
+ textStyle?: {
362
+ fontSize?: number;
363
+ color?: string;
364
+ fontWeight?: string | number;
365
+ [key: string]: unknown;
366
+ };
367
+ [key: string]: unknown;
368
+ }
369
+
370
+ /**
371
+ * Base chart configuration interface
372
+ * All chart configurations extend this interface.
373
+ */
374
+ export interface ChartConfig {
375
+ /** Chart type identifier */
376
+ type: ChartType;
377
+ /** Chart data - format varies by chart type */
378
+ data: Record<string, unknown> | unknown[];
379
+ /** Chart title configuration */
380
+ title?: string | TitleConfig;
381
+ /** Chart width */
382
+ chartWidth?: string | number;
383
+ /** Chart height */
384
+ chartHeight?: string | number;
385
+ /** Background color */
386
+ backgroundColor?: string;
387
+ /** Color palette */
388
+ color?: string[];
389
+ /** CSS styles */
390
+ style?: CSSProperties;
391
+ [key: string]: unknown;
392
+ }
393
+
394
+ /**
395
+ * Scatter chart configuration
396
+ */
397
+ export interface ScatterConfig extends ChartConfig {
398
+ type: 'scatter';
399
+ data: Point2D[] | number[][] | DataPoint[];
400
+ xAxis?: AxisConfig;
401
+ yAxis?: AxisConfig;
402
+ series?: ScatterSeriesConfig | ScatterSeriesConfig[];
403
+ visualMap?: VisualMapConfig | VisualMapConfig[];
404
+ tooltip?: TooltipConfig;
405
+ legend?: LegendConfig;
406
+ toolbox?: ToolboxConfig;
407
+ grid?: GridConfig;
408
+ dataZoom?: DataZoomType;
409
+ labels?: { x?: string; y?: string };
410
+ formatter?: string | ((params: unknown) => string);
411
+ is3D?: boolean;
412
+ }
413
+
414
+ /**
415
+ * Bar chart configuration
416
+ */
417
+ export interface BarConfig extends ChartConfig {
418
+ type: 'bar';
419
+ data: number[] | DataPoint[] | Record<string, unknown>[];
420
+ xAxis?: AxisConfig;
421
+ yAxis?: AxisConfig;
422
+ series?: BarSeriesConfig | BarSeriesConfig[];
423
+ visualMap?: VisualMapConfig | VisualMapConfig[];
424
+ tooltip?: TooltipConfig;
425
+ legend?: LegendConfig;
426
+ toolbox?: ToolboxConfig;
427
+ grid?: GridConfig;
428
+ }
429
+
430
+ /**
431
+ * Line chart configuration
432
+ */
433
+ export interface LineConfig extends ChartConfig {
434
+ type: 'line';
435
+ data: number[] | DataPoint[] | Record<string, unknown>[];
436
+ xAxis?: AxisConfig;
437
+ yAxis?: AxisConfig;
438
+ series?: LineSeriesConfig | LineSeriesConfig[];
439
+ visualMap?: VisualMapConfig | VisualMapConfig[];
440
+ tooltip?: TooltipConfig;
441
+ legend?: LegendConfig;
442
+ toolbox?: ToolboxConfig;
443
+ grid?: GridConfig;
444
+ }
445
+
446
+ /**
447
+ * 3D Scatter chart configuration
448
+ */
449
+ export interface Scatter3DConfig extends ChartConfig {
450
+ type: 'scatter3D';
451
+ data: Point3D[] | number[][];
452
+ xAxis3D?: Axis3DConfig;
453
+ yAxis3D?: Axis3DConfig;
454
+ zAxis3D?: Axis3DConfig;
455
+ grid3D?: Grid3DConfig;
456
+ series?: Scatter3DSeriesConfig;
457
+ visualMap?: VisualMapConfig | VisualMapConfig[];
458
+ tooltip?: TooltipConfig;
459
+ legend?: LegendConfig;
460
+ toolbox?: ToolboxConfig;
461
+ }
462
+
463
+ /**
464
+ * 3D Bar chart configuration
465
+ */
466
+ export interface Bar3DConfig extends ChartConfig {
467
+ type: 'bar3D';
468
+ data: Point3D[] | number[][];
469
+ xAxis3D?: Axis3DConfig;
470
+ yAxis3D?: Axis3DConfig;
471
+ zAxis3D?: Axis3DConfig;
472
+ grid3D?: Grid3DConfig;
473
+ series?: Bar3DSeriesConfig;
474
+ visualMap?: VisualMapConfig | VisualMapConfig[];
475
+ tooltip?: TooltipConfig;
476
+ legend?: LegendConfig;
477
+ toolbox?: ToolboxConfig;
478
+ }
479
+
480
+ /**
481
+ * 3D Line chart configuration
482
+ */
483
+ export interface Line3DConfig extends ChartConfig {
484
+ type: 'line3D';
485
+ data: Point3D[] | number[][] | { x: number[]; y: number[]; z: number[] };
486
+ xAxis3D?: Axis3DConfig;
487
+ yAxis3D?: Axis3DConfig;
488
+ zAxis3D?: Axis3DConfig;
489
+ grid3D?: Grid3DConfig;
490
+ series?: Line3DSeriesConfig;
491
+ visualMap?: VisualMapConfig | VisualMapConfig[];
492
+ tooltip?: TooltipConfig;
493
+ legend?: LegendConfig;
494
+ toolbox?: ToolboxConfig;
495
+ }
496
+
497
+ /**
498
+ * 3D Surface chart configuration
499
+ */
500
+ export interface Surface3DConfig extends ChartConfig {
501
+ type: 'surface3D';
502
+ data: Point3D[] | number[][] | ((x: number, y: number) => number);
503
+ xAxis3D?: Axis3DConfig;
504
+ yAxis3D?: Axis3DConfig;
505
+ zAxis3D?: Axis3DConfig;
506
+ grid3D?: Grid3DConfig;
507
+ series?: SurfaceSeriesConfig;
508
+ visualMap?: VisualMapConfig | VisualMapConfig[];
509
+ tooltip?: TooltipConfig;
510
+ legend?: LegendConfig;
511
+ toolbox?: ToolboxConfig;
512
+ contour?: {
513
+ show?: boolean;
514
+ color?: string;
515
+ [key: string]: unknown;
516
+ };
517
+ range?: {
518
+ xMin?: number;
519
+ xMax?: number;
520
+ yMin?: number;
521
+ yMax?: number;
522
+ step?: number;
523
+ };
524
+ }
525
+
526
+ /**
527
+ * Union type of all chart configurations
528
+ */
529
+ export type AnyChartConfig =
530
+ | ScatterConfig
531
+ | BarConfig
532
+ | LineConfig
533
+ | Scatter3DConfig
534
+ | Bar3DConfig
535
+ | Line3DConfig
536
+ | Surface3DConfig;
537
+
538
+ /**
539
+ * Chart data format types
540
+ */
541
+ export type ChartData =
542
+ | Point2D[]
543
+ | Point3D[]
544
+ | number[][]
545
+ | DataPoint[]
546
+ | Record<string, unknown>[];
547
+
548
+ /**
549
+ * ECharts option object (simplified)
550
+ */
551
+ export interface EChartsOption {
552
+ title?: TitleConfig;
553
+ legend?: LegendConfig;
554
+ tooltip?: TooltipConfig;
555
+ toolbox?: ToolboxConfig;
556
+ grid?: GridConfig | GridConfig[];
557
+ grid3D?: Grid3DConfig;
558
+ xAxis?: AxisConfig | AxisConfig[];
559
+ yAxis?: AxisConfig | AxisConfig[];
560
+ xAxis3D?: Axis3DConfig;
561
+ yAxis3D?: Axis3DConfig;
562
+ zAxis3D?: Axis3DConfig;
563
+ series?: SeriesConfig | SeriesConfig[];
564
+ visualMap?: VisualMapConfig | VisualMapConfig[];
565
+ dataZoom?: unknown[];
566
+ backgroundColor?: string;
567
+ color?: string[];
568
+ [key: string]: unknown;
569
+ }