visualifyjs 2.5.3 → 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 -193
  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 -0
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -43
  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 -123
  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 -1
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -119
  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 -579
  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 -143
  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,374 @@
1
+ <!-- Load 3D visualization examples from external script to avoid docsify parsing issues -->
2
+ <script src="./static/js/3d-viz-examples.js"></script>
3
+
4
+ # 3D Visualization
5
+
6
+ Visualify.js supports 3D visualization through ECharts GL and Three.js integration.
7
+
8
+ ## Table of Contents
9
+
10
+ - [Overview](#overview)
11
+ - [ECharts GL 3D Charts](#echarts-gl-3d-charts)
12
+ - [Scatter3D](#scatter3d)
13
+ - [Bar3D](#bar3d)
14
+ - [Surface3D](#surface3d)
15
+ - [Line3D](#line3d)
16
+ - [Three.js Integration](#threejs-integration)
17
+ - [WebGL Support](#webgl-support)
18
+ - [Performance Considerations](#performance-considerations)
19
+
20
+ ---
21
+
22
+ ## Overview
23
+
24
+ Visualify.js provides two approaches to 3D visualization:
25
+
26
+ 1. **ECharts GL** - For standard 3D charts (scatter, bar, surface, line)
27
+ 2. **Three.js** - For custom 3D scenes and advanced visualizations
28
+
29
+ Both libraries are loaded on-demand to minimize initial bundle size.
30
+
31
+ ---
32
+
33
+ ## ECharts GL 3D Charts
34
+
35
+ ### Scatter3D
36
+
37
+ Create interactive 3D scatter plots with x, y, z dimensions.
38
+
39
+ <!-- tabs:start -->
40
+
41
+ #### **Output**
42
+
43
+ <div id="scatter3d-example" style="height: 400px;">
44
+ <p>Loading 3D Scatter Plot... (requires WebGL support)</p>
45
+ </div>
46
+
47
+ #### **Configuration**
48
+
49
+ ```json
50
+ {
51
+ "type": "scatter3d",
52
+ "title": "3D Scatter Plot Example",
53
+ "data": {
54
+ "x": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
55
+ "y": [10, 15, 8, 20, 12, 18, 22, 16, 14, 25],
56
+ "z": [5, 8, 12, 7, 9, 11, 6, 13, 10, 15]
57
+ },
58
+ "xAxis3D": { "name": "X Dimension", "type": "value" },
59
+ "yAxis3D": { "name": "Y Dimension", "type": "value" },
60
+ "zAxis3D": { "name": "Z Dimension", "type": "value" },
61
+ "grid3D": {
62
+ "boxWidth": 100,
63
+ "boxDepth": 80,
64
+ "viewControl": {
65
+ "autoRotate": true,
66
+ "autoRotateSpeed": 10
67
+ }
68
+ },
69
+ "visualMap": {
70
+ "dimension": 2,
71
+ "max": 25,
72
+ "inRange": {
73
+ "color": ["#313695", "#4575b4", "#74add1", "#abd9e9", "#e0f3f8"]
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ <!-- tabs:end -->
80
+
81
+ #### Configuration Options
82
+
83
+ | Property | Type | Description |
84
+ |----------|------|-------------|
85
+ | `data.x` | Array | X-axis data values |
86
+ | `data.y` | Array | Y-axis data values |
87
+ | `data.z` | Array | Z-axis data values |
88
+ | `xAxis3D` | Object | X-axis configuration (name, type, min, max) |
89
+ | `yAxis3D` | Object | Y-axis configuration |
90
+ | `zAxis3D` | Object | Z-axis configuration |
91
+ | `grid3D.viewControl.autoRotate` | Boolean | Enable auto-rotation |
92
+ | `visualMap` | Object | Color mapping based on dimension |
93
+
94
+ ---
95
+
96
+ ### Bar3D
97
+
98
+ Create 3D bar charts for volumetric data visualization.
99
+
100
+ <!-- tabs:start -->
101
+
102
+ #### **Output**
103
+
104
+ <div id="bar3d-example" style="height: 400px;">
105
+ <p>Loading 3D Bar Chart... (requires WebGL support)</p>
106
+ </div>
107
+
108
+ #### **Configuration**
109
+
110
+ ```json
111
+ {
112
+ "type": "bar3d",
113
+ "title": "3D Bar Chart Example",
114
+ "data": [
115
+ [0, 0, 10], [0, 1, 20], [0, 2, 15],
116
+ [1, 0, 25], [1, 1, 30], [1, 2, 20],
117
+ [2, 0, 15], [2, 1, 25], [2, 2, 35]
118
+ ],
119
+ "xAxis3D": {
120
+ "type": "category",
121
+ "data": ["A", "B", "C"]
122
+ },
123
+ "yAxis3D": {
124
+ "type": "category",
125
+ "data": ["X", "Y", "Z"]
126
+ },
127
+ "zAxis3D": { "type": "value" },
128
+ "grid3D": {
129
+ "boxWidth": 200,
130
+ "boxDepth": 80,
131
+ "light": {
132
+ "main": { "intensity": 1.2, "shadow": true }
133
+ }
134
+ },
135
+ "shading": "lambert"
136
+ }
137
+ ```
138
+
139
+ <!-- tabs:end -->
140
+
141
+ #### Configuration Options
142
+
143
+ | Property | Type | Description |
144
+ |----------|------|-------------|
145
+ | `data` | Array | Array of [x, y, z] values |
146
+ | `xAxis3D.type` | String | `"category"` for discrete values |
147
+ | `yAxis3D.type` | String | `"category"` for discrete values |
148
+ | `shading` | String | `"lambert"` for realistic lighting |
149
+ | `grid3D.light` | Object | Lighting configuration |
150
+
151
+ ---
152
+
153
+ ### Surface3D
154
+
155
+ Create 3D surface plots for continuous data visualization.
156
+
157
+ <!-- tabs:start -->
158
+
159
+ #### **Output**
160
+
161
+ <div id="surface3d-example" style="height: 400px;">
162
+ <p>Loading 3D Surface Plot... (requires WebGL support)</p>
163
+ </div>
164
+
165
+ #### **Configuration**
166
+
167
+ ```json
168
+ {
169
+ "type": "surface3d",
170
+ "title": "3D Surface Plot Example",
171
+ "data": {
172
+ "x": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
173
+ "y": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
174
+ "z": [
175
+ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1, 0],
176
+ [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1],
177
+ [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2],
178
+ [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3],
179
+ [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4],
180
+ [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5],
181
+ [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4],
182
+ [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3],
183
+ [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2],
184
+ [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1],
185
+ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1, 0]
186
+ ]
187
+ },
188
+ "xAxis3D": { "type": "value" },
189
+ "yAxis3D": { "type": "value" },
190
+ "zAxis3D": { "type": "value" },
191
+ "grid3D": {
192
+ "viewControl": { "autoRotate": true }
193
+ },
194
+ "visualMap": {
195
+ "show": true,
196
+ "dimension": 2,
197
+ "min": 0,
198
+ "max": 1.0,
199
+ "inRange": {
200
+ "color": ["#313695", "#4575b4", "#74add1", "#abd9e9", "#e0f3f8", "#ffffbf", "#fee090", "#fdae61", "#f46d43", "#d73027", "#a50026"]
201
+ }
202
+ }
203
+ }
204
+ ```
205
+
206
+ <!-- tabs:end -->
207
+
208
+ #### Configuration Options
209
+
210
+ | Property | Type | Description |
211
+ |----------|------|-------------|
212
+ | `data.x` | Array | X-axis grid values |
213
+ | `data.y` | Array | Y-axis grid values |
214
+ | `data.z` | 2D Array | Height values (z[x][y]) |
215
+ | `visualMap` | Object | Color gradient for height values |
216
+
217
+ ---
218
+
219
+ ### Line3D
220
+
221
+ Create 3D line charts for trajectory visualization.
222
+
223
+ ```json
224
+ {
225
+ "type": "line3d",
226
+ "title": "3D Line Chart",
227
+ "data": [
228
+ [0, 0, 0],
229
+ [1, 2, 3],
230
+ [2, 4, 2],
231
+ [3, 6, 5],
232
+ [4, 8, 4],
233
+ [5, 10, 7]
234
+ ],
235
+ "xAxis3D": { "type": "value" },
236
+ "yAxis3D": { "type": "value" },
237
+ "zAxis3D": { "type": "value" },
238
+ "grid3D": {
239
+ "viewControl": {
240
+ "projection": "perspective",
241
+ "autoRotate": false
242
+ }
243
+ },
244
+ "lineStyle": {
245
+ "width": 4,
246
+ "color": "#5470c6"
247
+ }
248
+ }
249
+ ```
250
+
251
+ ---
252
+
253
+ ## Three.js Integration
254
+
255
+ For custom 3D scenes beyond standard charts, Visualify.js provides Three.js integration through `@react-three/fiber`.
256
+
257
+ ### Basic Three.js Scene
258
+
259
+ ```json
260
+ {
261
+ "type": "threejs",
262
+ "scene": {
263
+ "camera": {
264
+ "position": [0, 0, 100],
265
+ "fov": 75,
266
+ "near": 0.1,
267
+ "far": 1000
268
+ },
269
+ "lights": [
270
+ {
271
+ "type": "ambient",
272
+ "color": "#ffffff",
273
+ "intensity": 0.5
274
+ },
275
+ {
276
+ "type": "directional",
277
+ "position": [10, 10, 10],
278
+ "castShadow": true
279
+ }
280
+ ],
281
+ "objects": [
282
+ {
283
+ "type": "mesh",
284
+ "geometry": {
285
+ "type": "box",
286
+ "width": 10,
287
+ "height": 10,
288
+ "depth": 10
289
+ },
290
+ "material": {
291
+ "type": "standard",
292
+ "color": "#ff0000"
293
+ },
294
+ "position": [0, 0, 0],
295
+ "rotation": [0, 0.5, 0]
296
+ }
297
+ ]
298
+ },
299
+ "controls": "orbit",
300
+ "animation": {
301
+ "autoRotate": true,
302
+ "speed": 0.01
303
+ }
304
+ }
305
+ ```
306
+
307
+ ---
308
+
309
+ ## WebGL Support
310
+
311
+ 3D charts require WebGL support. Visualify.js automatically detects WebGL availability and shows a fallback message if not supported.
312
+
313
+ ### Browser Compatibility
314
+
315
+ | Browser | Version | WebGL Support |
316
+ |---------|---------|---------------|
317
+ | Chrome | 9+ | ✓ Full |
318
+ | Firefox | 4+ | ✓ Full |
319
+ | Safari | 5.1+ | ✓ Full |
320
+ | Edge | 12+ | ✓ Full |
321
+ | IE | 11 | ⚠ Limited |
322
+
323
+ ### Fallback Behavior
324
+
325
+ If WebGL is not supported:
326
+ 1. A user-friendly error message is displayed
327
+ 2. The chart container shows fallback content
328
+ 3. Console warnings provide debugging information
329
+
330
+ ---
331
+
332
+ ## Performance Considerations
333
+
334
+ ### Large Datasets
335
+
336
+ For datasets with 10,000+ points:
337
+ - Use `sampling` or `progressive` rendering
338
+ - Consider level-of-detail (LOD) techniques
339
+ - Enable `large` mode in ECharts GL
340
+
341
+ ```json
342
+ {
343
+ "type": "scatter3d",
344
+ "data": { ... },
345
+ "series": [{
346
+ "type": "scatter3D",
347
+ "large": true,
348
+ "largeThreshold": 2000,
349
+ "progressive": 400,
350
+ "progressiveThreshold": 3000
351
+ }]
352
+ }
353
+ ```
354
+
355
+ ### Lazy Loading
356
+
357
+ 3D libraries are loaded on-demand:
358
+ - ECharts GL loads when first 3D chart is rendered
359
+ - Three.js loads when ThreeScene component is used
360
+ - No impact on initial page load if no 3D charts are present
361
+
362
+ ### Memory Management
363
+
364
+ - WebGL contexts are automatically cleaned up when charts unmount
365
+ - Dispose geometries, materials, and textures properly
366
+ - Use `cleanupWebGL()` utility for manual cleanup if needed
367
+
368
+ ---
369
+
370
+ ## See Also
371
+
372
+ - [Configuration Reference](./configuration/visualify-json.md)
373
+ - [CLI Commands](./cli/commands.md)
374
+ - [Migration Guide](./migration/v3-migration.md)
package/docs/docs/CLI.md CHANGED
@@ -1,34 +1,303 @@
1
- # CLI tools for Visualify
2
-
3
- ## Description
4
-
5
- The Visualify.CLI command line interface organizes spatial data using R-tree,
6
- for efficient data searching and loading.
7
- By this means, data portals created by Visualifyjs are able to handle large-scale databases.
8
-
9
- ## Installation
10
-
11
- ```bash
12
- npm install -g @visualify/cli
13
- ```
14
-
15
- ## Usage
16
-
17
- To use Visualify.CLI, you can run the following command:
18
-
19
- - init [path] - Create new documentation
20
- - serve [path] - Run local server to preview site
21
- - start [path] - Start a web server to serve the specified path
22
- - load-json <path> - Load points from JSON file
23
- - mapping [options] <path> - Create a mapping with optional keys
24
- - rtree2d [options] <path> - Create a 2D R-tree
25
- - help [command] - display help for command
26
-
27
- ```bash
28
- visualify --help
29
-
30
- visualify init --help
31
- visualify serve --help
32
- visualify start --help
33
- visualify load-json --help
34
- ```
1
+ # CLI Reference
2
+
3
+ Visualify.js provides a unified command-line interface for documentation, data visualization, and development workflows.
4
+
5
+ ## Installation
6
+
7
+ ### Global Installation
8
+
9
+ ```bash
10
+ npm install -g visualify
11
+ ```
12
+
13
+ ### Local Installation
14
+
15
+ ```bash
16
+ npm install --save-dev visualify
17
+ npx visualify --help
18
+ ```
19
+
20
+ ## Commands Overview
21
+
22
+ | Command | Description |
23
+ |---------|-------------|
24
+ | `dev` | Start development server with HMR |
25
+ | `docs` | Build and serve documentation |
26
+ | `portal` | Start data portal server |
27
+ | `init` | Initialize a new Visualify project |
28
+ | `edit` / `editor` | Launch visual configuration editor |
29
+
30
+ ## Global Options
31
+
32
+ | Option | Description |
33
+ |--------|-------------|
34
+ | `-v, --version` | Display version number |
35
+ | `-h, --help` | Display help information |
36
+ | `--verbose` | Enable verbose logging |
37
+
38
+ ## Command Details
39
+
40
+ ### `dev` - Development Server
41
+
42
+ Start a development server with Hot Module Replacement (HMR).
43
+
44
+ ```bash
45
+ visualify dev [mode]
46
+ ```
47
+
48
+ **Arguments:**
49
+ - `mode` - Development mode: `auto`, `docs`, or `portal` (default: `auto`)
50
+
51
+ **Options:**
52
+ - `-p, --port <number>` - Port number (default: 3000)
53
+ - `-h, --host <host>` - Host to bind to (default: `localhost`)
54
+
55
+ **Examples:**
56
+
57
+ ```bash
58
+ # Auto-detect mode based on project structure
59
+ visualify dev
60
+
61
+ # Start docs dev server
62
+ visualify dev docs
63
+
64
+ # Start portal dev server on custom port
65
+ visualify dev portal --port 8080
66
+ ```
67
+
68
+ ### `docs` - Documentation
69
+
70
+ Build and serve static documentation.
71
+
72
+ ```bash
73
+ visualify docs [action]
74
+ ```
75
+
76
+ **Arguments:**
77
+ - `action` - Action to perform: `build`, `serve`, or `deploy` (default: `serve`)
78
+
79
+ **Options:**
80
+ - `-p, --port <number>` - Port for serve mode (default: 3000)
81
+ - `-o, --output <dir>` - Output directory for build (default: `dist/docs`)
82
+
83
+ **Examples:**
84
+
85
+ ```bash
86
+ # Serve docs with live reload
87
+ visualify docs serve
88
+
89
+ # Build static documentation
90
+ visualify docs build
91
+
92
+ # Build to custom directory
93
+ visualify docs build --output ./site
94
+ ```
95
+
96
+ ### `portal` - Data Portal
97
+
98
+ Start the data portal server for spatial data visualization.
99
+
100
+ ```bash
101
+ visualify portal [action]
102
+ ```
103
+
104
+ **Arguments:**
105
+ - `action` - Action to perform: `dev`, `build`, or `start` (default: `dev`)
106
+
107
+ **Options:**
108
+ - `-p, --port <number>` - Port number (default: 3000)
109
+ - `-d, --data <path>` - Path to data directory
110
+
111
+ **Examples:**
112
+
113
+ ```bash
114
+ # Start portal dev server
115
+ visualify portal dev
116
+
117
+ # Build portal for production
118
+ visualify portal build
119
+
120
+ # Start production server
121
+ visualify portal start --port 8080
122
+ ```
123
+
124
+ ### `init` - Initialize Project
125
+
126
+ Create a new Visualify project with boilerplate files.
127
+
128
+ ```bash
129
+ visualify init [path]
130
+ ```
131
+
132
+ **Arguments:**
133
+ - `path` - Project directory path (default: current directory)
134
+
135
+ **Options:**
136
+ - `-t, --template <name>` - Project template: `docs`, `portal`, or `full` (default: `docs`)
137
+ - `-f, --force` - Overwrite existing files
138
+
139
+ **Examples:**
140
+
141
+ ```bash
142
+ # Initialize docs project in current directory
143
+ visualify init
144
+
145
+ # Create new portal project
146
+ visualify init my-portal --template portal
147
+
148
+ # Force overwrite existing project
149
+ visualify init ./project --force
150
+ ```
151
+
152
+ **Templates:**
153
+
154
+ - `docs` - Documentation site with Docsify
155
+ - `portal` - Data portal with spatial visualization
156
+ - `full` - Full-featured project with both docs and portal
157
+
158
+ ### `edit` / `editor` - Visual Editor
159
+
160
+ Launch the visual configuration editor for creating and editing charts.
161
+
162
+ ```bash
163
+ visualify edit [file]
164
+ ```
165
+
166
+ **Aliases:** `editor`
167
+
168
+ **Arguments:**
169
+ - `file` - Configuration file to edit (optional)
170
+
171
+ **Options:**
172
+ - `-p, --port <number>` - Editor server port (default: 3456)
173
+ - `-h, --host <host>` - Host to bind to (default: `localhost`)
174
+ - `--no-open` - Do not open browser automatically
175
+
176
+ **Examples:**
177
+
178
+ ```bash
179
+ # Start editor with new configuration
180
+ visualify edit
181
+
182
+ # Edit existing configuration file
183
+ visualify edit ./my-chart.json
184
+
185
+ # Start on custom port without opening browser
186
+ visualify edit --port 8080 --no-open
187
+ ```
188
+
189
+ ## Configuration File
190
+
191
+ Create a `visualify.json` or `.visualify.json` file to configure default options:
192
+
193
+ ```json
194
+ {
195
+ "mode": "auto",
196
+ "port": 3000,
197
+ "host": "localhost",
198
+ "docs": {
199
+ "title": "My Documentation",
200
+ "theme": "vue"
201
+ },
202
+ "portal": {
203
+ "dataPath": "./data",
204
+ "rtreeEnabled": true
205
+ }
206
+ }
207
+ ```
208
+
209
+ ### Configuration Options
210
+
211
+ | Option | Type | Default | Description |
212
+ |--------|------|---------|-------------|
213
+ | `mode` | string | `"auto"` | Default mode: `auto`, `docs`, `portal` |
214
+ | `port` | number | `3000` | Default server port |
215
+ | `host` | string | `"localhost"` | Default host |
216
+ | `docs.title` | string | `"Documentation"` | Documentation site title |
217
+ | `docs.theme` | string | `"vue"` | Docsify theme name |
218
+ | `portal.dataPath` | string | `"./data"` | Path to data files |
219
+ | `portal.rtreeEnabled` | boolean | `true` | Enable spatial indexing |
220
+
221
+ ## Environment Variables
222
+
223
+ | Variable | Description |
224
+ |----------|-------------|
225
+ | `VISUALIFY_PORT` | Default port override |
226
+ | `VISUALIFY_HOST` | Default host override |
227
+ | `VISUALIFY_VERBOSE` | Enable verbose logging (set to `1` or `true`) |
228
+ | `VISUALIFY_HMR` | Enable HMR (set to `1` or `true`) |
229
+
230
+ ## Examples
231
+
232
+ ### Complete Workflow
233
+
234
+ ```bash
235
+ # 1. Initialize new project
236
+ visualify init my-project --template full
237
+ cd my-project
238
+
239
+ # 2. Start development server
240
+ visualify dev
241
+
242
+ # 3. Edit configuration visually
243
+ visualify edit
244
+
245
+ # 4. Build for production
246
+ visualify docs build
247
+ visualify portal build
248
+ ```
249
+
250
+ ### Legacy Commands
251
+
252
+ The following legacy commands from `@visualify/cli` have been integrated into the unified CLI:
253
+
254
+ | Legacy | New Equivalent | Notes |
255
+ |--------|----------------|-------|
256
+ | `serve` | `dev` or `docs serve` | Use `dev` for development |
257
+ | `start` | `portal start` | Start production portal |
258
+ | `load-json` | Portal data import | Use portal UI or API |
259
+ | `mapping` | Portal configuration | Configure in `visualify.json` |
260
+ | `rtree2d` | Automatic | Enabled by default in portal |
261
+
262
+ ## Troubleshooting
263
+
264
+ ### Port Already in Use
265
+
266
+ ```bash
267
+ # Try a different port
268
+ visualify dev --port 8080
269
+ ```
270
+
271
+ ### Permission Denied
272
+
273
+ ```bash
274
+ # Fix npm permissions
275
+ sudo chown -R $(whoami) ~/.npm
276
+
277
+ # Or use npx without global install
278
+ npx visualify dev
279
+ ```
280
+
281
+ ### Command Not Found
282
+
283
+ ```bash
284
+ # Verify installation
285
+ npm list -g visualify
286
+
287
+ # Reinstall if needed
288
+ npm install -g visualify
289
+ ```
290
+
291
+ ## Getting Help
292
+
293
+ ```bash
294
+ # General help
295
+ visualify --help
296
+
297
+ # Command-specific help
298
+ visualify dev --help
299
+ visualify docs --help
300
+ visualify portal --help
301
+ visualify init --help
302
+ visualify edit --help
303
+ ```