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,359 @@
1
+ # Visual Configuration Editor
2
+
3
+ Visualify.js includes a built-in visual editor for creating and modifying chart configurations through an intuitive graphical interface.
4
+
5
+ ## Overview
6
+
7
+ The Visual Editor enables:
8
+ - Point-and-click chart configuration
9
+ - Real-time preview of changes
10
+ - Drag-and-drop data import
11
+ - Theme customization
12
+ - Export to JSON/JavaScript
13
+
14
+ ## Launching the Editor
15
+
16
+ ### CLI Command
17
+
18
+ ```bash
19
+ # Start the visual editor
20
+ visualify edit
21
+
22
+ # With a specific configuration file
23
+ visualify edit ./my-chart.json
24
+
25
+ # With custom port
26
+ visualify edit --port 8080
27
+ ```
28
+
29
+ ### Programmatic API
30
+
31
+ ```javascript
32
+ import { launchEditor } from 'visualify';
33
+
34
+ // Launch editor
35
+ const editor = await launchEditor({
36
+ port: 3000,
37
+ config: './chart-config.json',
38
+ theme: 'dark'
39
+ });
40
+
41
+ // Close editor
42
+ editor.close();
43
+ ```
44
+
45
+ ### React Component
46
+
47
+ ```javascript
48
+ import { VisualEditor } from 'visualify';
49
+
50
+ function App() {
51
+ return (
52
+ <VisualEditor
53
+ initialConfig={chartConfig}
54
+ onChange={(config) => console.log('Updated:', config)}
55
+ onSave={(config) => saveToFile(config)}
56
+ />
57
+ );
58
+ }
59
+ ```
60
+
61
+ ## Editor Interface
62
+
63
+ ### Layout
64
+
65
+ The editor consists of four main panels:
66
+
67
+ 1. **Toolbar** (Top) - Chart type, save, export, undo/redo
68
+ 2. **Canvas** (Center) - Live chart preview
69
+ 3. **Properties** (Right) - Configuration options
70
+ 4. **Data** (Bottom) - Data table and import
71
+
72
+ ### Chart Type Selection
73
+
74
+ ```javascript
75
+ // Available chart types in editor
76
+ const chartTypes = [
77
+ 'line', // Line charts
78
+ 'bar', // Bar/Column charts
79
+ 'pie', // Pie/Donut charts
80
+ 'scatter', // Scatter plots
81
+ 'radar', // Radar/Spider charts
82
+ 'funnel', // Funnel charts
83
+ 'heatmap', // Heat maps
84
+ 'scatter3d', // 3D scatter plots
85
+ 'bar3d', // 3D bar charts
86
+ 'surface3d' // 3D surface plots
87
+ ];
88
+ ```
89
+
90
+ ## Data Import
91
+
92
+ ### Supported Formats
93
+
94
+ The editor accepts data in multiple formats:
95
+
96
+ | Format | Extension | Description |
97
+ |--------|-----------|-------------|
98
+ | JSON | `.json` | Standard JSON array/object |
99
+ | CSV | `.csv` | Comma-separated values |
100
+ | Excel | `.xlsx`, `.xls` | Microsoft Excel files |
101
+ | Google Sheets | URL | Import from Google Sheets |
102
+
103
+ ### Drag and Drop
104
+
105
+ ```javascript
106
+ // Enable drag-and-drop in editor
107
+ <VisualEditor
108
+ allowDragDrop={true}
109
+ onDataImport={(data, format) => {
110
+ console.log(`Imported ${data.length} rows from ${format}`);
111
+ }}
112
+ />
113
+ ```
114
+
115
+ ### Data Transformation
116
+
117
+ ```javascript
118
+ // Transform imported data
119
+ const transformConfig = {
120
+ // Map columns to chart dimensions
121
+ mapping: {
122
+ x: 'date',
123
+ y: 'revenue',
124
+ category: 'region'
125
+ },
126
+ // Apply aggregations
127
+ aggregation: {
128
+ type: 'sum',
129
+ groupBy: 'region'
130
+ },
131
+ // Filter data
132
+ filter: {
133
+ date: { from: '2024-01-01', to: '2024-12-31' }
134
+ }
135
+ };
136
+ ```
137
+
138
+ ## Property Panels
139
+
140
+ ### Basic Properties
141
+
142
+ Configure fundamental chart settings:
143
+
144
+ - **Title** - Chart title and subtitle
145
+ - **Legend** - Position, orientation, styling
146
+ - **Tooltip** - Trigger, formatter, position
147
+ - **Toolbox** - Export, data view, magic type
148
+
149
+ ### Axis Configuration
150
+
151
+ ```javascript
152
+ // X-axis properties
153
+ {
154
+ "xAxis": {
155
+ "type": "category",
156
+ "name": "Month",
157
+ "nameLocation": "middle",
158
+ "nameGap": 30,
159
+ "axisLine": { "show": true },
160
+ "axisLabel": { "rotate": 45 }
161
+ }
162
+ }
163
+ ```
164
+
165
+ ### Series Styling
166
+
167
+ Visual styling options:
168
+
169
+ - **Colors** - Single color, gradient, or palette
170
+ - **Line Style** - Width, type (solid/dashed/dotted)
171
+ - **Area Fill** - Opacity, gradient
172
+ - **Symbol** - Shape, size, rotation
173
+ - **Label** - Position, formatter, font
174
+
175
+ ### Theme Customization
176
+
177
+ ```javascript
178
+ // Custom theme in editor
179
+ const customTheme = {
180
+ color: ['#5470c6', '#91cc75', '#fac858'],
181
+ backgroundColor: '#f5f5f5',
182
+ textStyle: {
183
+ fontFamily: 'Arial, sans-serif',
184
+ fontSize: 12
185
+ },
186
+ title: {
187
+ textStyle: { fontSize: 18, fontWeight: 'bold' }
188
+ },
189
+ legend: {
190
+ textStyle: { fontSize: 12 }
191
+ }
192
+ };
193
+ ```
194
+
195
+ ## Real-Time Preview
196
+
197
+ ### Auto-Update
198
+
199
+ Changes are reflected immediately in the preview panel:
200
+
201
+ ```javascript
202
+ <VisualEditor
203
+ autoUpdate={true}
204
+ updateDelay={300} // Debounce delay in ms
205
+ />
206
+ ```
207
+
208
+ ### Preview Modes
209
+
210
+ - **Desktop** (1200px) - Full width preview
211
+ - **Tablet** (768px) - Medium width preview
212
+ - **Mobile** (375px) - Narrow width preview
213
+
214
+ ## Export Options
215
+
216
+ ### Configuration Export
217
+
218
+ ```javascript
219
+ // Export formats
220
+ const exports = {
221
+ json: () => editor.toJSON(),
222
+ javascript: () => editor.toJavaScript(),
223
+ react: () => editor.toReactComponent(),
224
+ vue: () => editor.toVueComponent(),
225
+ image: () => editor.toImage({ format: 'png', quality: 1 })
226
+ };
227
+ ```
228
+
229
+ ### Embedding
230
+
231
+ ```javascript
232
+ // Generate embed code
233
+ const embedCode = editor.generateEmbed({
234
+ type: 'iframe',
235
+ width: 800,
236
+ height: 600,
237
+ responsive: true
238
+ });
239
+
240
+ // Result: <iframe src="..." width="100%" height="600"></iframe>
241
+ ```
242
+
243
+ ## Keyboard Shortcuts
244
+
245
+ | Shortcut | Action |
246
+ |----------|--------|
247
+ | `Ctrl/Cmd + S` | Save configuration |
248
+ | `Ctrl/Cmd + Z` | Undo |
249
+ | `Ctrl/Cmd + Shift + Z` | Redo |
250
+ | `Ctrl/Cmd + E` | Export |
251
+ | `Ctrl/Cmd + P` | Preview toggle |
252
+ | `Delete` | Remove selected element |
253
+ | `Escape` | Deselect / Close panel |
254
+
255
+ ## Collaboration Features
256
+
257
+ ### Real-Time Collaboration
258
+
259
+ ```javascript
260
+ // Enable collaborative editing
261
+ <VisualEditor
262
+ collaboration={{
263
+ enabled: true,
264
+ roomId: 'project-123',
265
+ userName: 'John Doe',
266
+ userColor: '#5470c6'
267
+ }}
268
+ />
269
+ ```
270
+
271
+ ### Version History
272
+
273
+ ```javascript
274
+ // Access version history
275
+ const history = editor.getHistory();
276
+
277
+ // Revert to previous version
278
+ editor.revertTo(history[2].timestamp);
279
+
280
+ // Create named snapshot
281
+ editor.createSnapshot('Before color changes');
282
+ ```
283
+
284
+ ## Custom Extensions
285
+
286
+ ### Adding Custom Widgets
287
+
288
+ ```javascript
289
+ import { registerWidget } from 'visualify';
290
+
291
+ // Register custom property widget
292
+ registerWidget('custom-color-picker', {
293
+ component: MyColorPicker,
294
+ props: {
295
+ allowGradient: true,
296
+ presetColors: ['#f00', '#0f0', '#00f']
297
+ }
298
+ });
299
+
300
+ // Use in configuration
301
+ {
302
+ "properties": [{
303
+ "key": "series.color",
304
+ "widget": "custom-color-picker"
305
+ }]
306
+ }
307
+ ```
308
+
309
+ ### Custom Chart Types
310
+
311
+ ```javascript
312
+ // Register custom chart for editor
313
+ import { registerChartType } from 'visualify';
314
+
315
+ registerChartType('custom-gauge', {
316
+ name: 'Gauge Chart',
317
+ icon: 'gauge-icon.svg',
318
+ component: GaugeChart,
319
+ defaultConfig: {
320
+ type: 'custom-gauge',
321
+ min: 0,
322
+ max: 100,
323
+ value: 50
324
+ },
325
+ properties: [
326
+ { key: 'min', type: 'number', label: 'Minimum' },
327
+ { key: 'max', type: 'number', label: 'Maximum' },
328
+ { key: 'value', type: 'number', label: 'Current Value' }
329
+ ]
330
+ });
331
+ ```
332
+
333
+ ## Best Practices
334
+
335
+ 1. **Save frequently** - Use auto-save or manual saves
336
+ 2. **Use snapshots** - Create named versions before major changes
337
+ 3. **Test responsive** - Check all preview modes
338
+ 4. **Validate data** - Ensure imported data is clean
339
+ 5. **Export backups** - Keep JSON exports as backups
340
+
341
+ ## Troubleshooting
342
+
343
+ ### Editor Not Loading
344
+
345
+ - Check port availability
346
+ - Verify configuration file is valid JSON
347
+ - Clear browser cache
348
+
349
+ ### Preview Not Updating
350
+
351
+ - Disable browser extensions
352
+ - Check for JavaScript errors in console
353
+ - Reduce update delay if performance is slow
354
+
355
+ ### Data Import Fails
356
+
357
+ - Verify file format is supported
358
+ - Check for encoding issues (use UTF-8)
359
+ - Ensure data is not too large (>10MB)
package/docs/index.html CHANGED
@@ -1,71 +1,85 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8" />
6
- <title>visualify.js official site</title>
7
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
8
- <meta name="description" content="Description" />
9
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
10
- <link rel="shortcut icon" type="image/x-icon" href="static/logo/favicon.ico" />
11
- <script src="https://code.jquery.com/jquery-3.6.4.min.js" integrity="sha256-oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl+cbzUq8=" crossorigin="anonymous"></script>
12
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.css" />
13
- <link rel="stylesheet" href="./static/css/font-awesome.min.css" />
14
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css" />
15
- <link rel="stylesheet" href="./static/css/fluff-stuff.css" />
16
- <script src="./static/js/configuration.js"></script>
17
- <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
18
- <!-- Docsify siderbarbar -->
19
- <script src="https://cdn.jsdelivr.net/npm/marked@latest/marked.min.js"></script>
20
- </head>
21
-
22
- <body>
23
- <div id="docsify"></div>
24
- <script>
25
- // Set html "lang" attribute based on URL
26
- var lang = location.hash.match(/#\/(zh-cn)\//);
27
- if (lang) {
28
- document.documentElement.setAttribute("lang", lang[1]);
29
- }
30
-
31
- window.$docsify = config;
32
- $visualify = {
33
- mode: 'charts',
34
- }
35
-
36
- /*
37
- const custom_buttons = [
38
- ["MmTrBC", "./MmTrBC/", 1],
39
- ["Esodev", "./EsoDev/", 3],
40
- ];
41
- */
42
- </script>
43
- <!-- Docsify v4 -->
44
- <script src="https://cdn.jsdelivr.net/npm/docsify@4"></script>
45
- <script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
46
- <script src="./static/js/fluff.js" defer></script>
47
- <!-- Plugins -->
48
- <script src="https://polyfill.io/v3/polyfill.min.js?features=String.prototype.normalize"></script>
49
- <script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/external-script.js"></script>
50
- <!-- Copy to Clipboard -->
51
- <script src="https://unpkg.com/docsify-copy-code@2/dist/docsify-copy-code.min.js"></script>
52
- <!-- docsify-tabs (latest v1.x.x) -->
53
- <script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>
54
- <!-- LaTeX display engine script Here -->
55
- <script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
56
- <script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
57
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css" />
58
- <script src="https://unpkg.com/docsify-latex@0.5.2/dist/docsify-latex.min.js"></script>
59
- <!-- flexible-alerts -->
60
- <script src="https://unpkg.com/docsify-plugin-flexible-alerts@1.1.1/dist/docsify-plugin-flexible-alerts.min.js"></script>
61
- <!-- Mermaid -->
62
- <script type="module">
63
- import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs"; mermaid.initialize({ startOnLoad: true }); window.mermaid = mermaid;
64
- </script>
65
- <!-- Prism -->
66
- <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js"></script>
67
- <!-- Visualify -->
68
- <script src="./static/js/visualify.js"></script>
69
- </body>
70
-
71
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <title>visualify.js official site</title>
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
8
+ <meta name="description" content="Description" />
9
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="static/logo/favicon.ico" />
11
+ <script src="https://code.jquery.com/jquery-3.6.4.min.js" integrity="sha256-oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl+cbzUq8=" crossorigin="anonymous"></script>
12
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.css" />
13
+ <link rel="stylesheet" href="./static/css/font-awesome.min.css" />
14
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css" />
15
+ <link rel="stylesheet" href="./static/css/fluff-stuff.css" />
16
+ <script src="./static/js/configuration.js?v=20260211-3dmount1"></script>
17
+ <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
18
+ <!-- Docsify siderbarbar -->
19
+ <script src="https://cdn.jsdelivr.net/npm/marked@latest/marked.min.js"></script>
20
+ </head>
21
+
22
+ <body>
23
+ <div id="docsify"></div>
24
+ <script>
25
+ // Set html "lang" attribute based on URL
26
+ var lang = location.hash.match(/#\/(zh-cn)\//);
27
+ if (lang) {
28
+ document.documentElement.setAttribute("lang", lang[1]);
29
+ }
30
+
31
+ window.$docsify = config;
32
+ $visualify = {
33
+ mode: 'charts',
34
+ }
35
+
36
+ /*
37
+ const custom_buttons = [
38
+ ["MmTrBC", "./MmTrBC/", 1],
39
+ ["Esodev", "./EsoDev/", 3],
40
+ ];
41
+ */
42
+ </script>
43
+ <!-- Docsify v4 -->
44
+ <script src="https://cdn.jsdelivr.net/npm/docsify@4"></script>
45
+ <script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
46
+ <script src="./static/js/fluff.js" defer></script>
47
+ <!-- Plugins -->
48
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/js-polyfills/0.1.43/polyfill.min.js"></script>
49
+ <script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/external-script.js"></script>
50
+ <!-- Copy to Clipboard -->
51
+ <script src="https://unpkg.com/docsify-copy-code@2/dist/docsify-copy-code.min.js"></script>
52
+ <!-- docsify-tabs (latest v1.x.x) -->
53
+ <script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>
54
+ <!-- LaTeX display engine script Here -->
55
+ <script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
56
+ <script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
57
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css" />
58
+ <script src="https://unpkg.com/docsify-latex@0.5.2/dist/docsify-latex.min.js"></script>
59
+ <!-- flexible-alerts -->
60
+ <script src="https://unpkg.com/docsify-plugin-flexible-alerts@1.1.1/dist/docsify-plugin-flexible-alerts.min.js"></script>
61
+ <!-- Mermaid -->
62
+ <script type="module">
63
+ import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs"; mermaid.initialize({ startOnLoad: true }); window.mermaid = mermaid;
64
+ </script>
65
+ <!-- Prism -->
66
+ <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js"></script>
67
+ <!-- ECharts and ECharts GL for 3D visualizations -->
68
+ <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
69
+ <script src="https://cdn.jsdelivr.net/npm/echarts-gl@2.0.9/dist/echarts-gl.min.js"></script>
70
+ <!-- Plotly.js -->
71
+ <script src="https://cdn.plot.ly/plotly-2.27.0.min.js"></script>
72
+ <!-- Debug globals used by some modules -->
73
+ <script>
74
+ window.debug = false;
75
+ window.log = function() {};
76
+ // Disable HMR in static docs mode to prevent localhost WebSocket noise.
77
+ window.__VISUALIFY_HMR__ = { enabled: false };
78
+ </script>
79
+ <!-- Visualify -->
80
+ <script src="./static/js/visualify.js?v=20260211-hmrfix2"></script>
81
+ <!-- 3D Visualization Examples (loaded after visualify) -->
82
+ <script src="./static/js/3d-viz-examples.js?v=20260211-ext1"></script>
83
+ </body>
84
+
85
+ </html>
@@ -1,24 +1,24 @@
1
- {
2
- "short_name": "visualifyjs",
3
- "name": "Create Your Data Portal Simple",
4
- "icons": [{
5
- "src": "https://lgcyaxi.net/visualify/static/logo/favicon.ico",
6
- "sizes": "64x64 32x32 24x24 16x16",
7
- "type": "image/x-icon"
8
- },
9
- {
10
- "src": "https://lgcyaxi.net/visualify/static/logo/logo192.png",
11
- "type": "image/png",
12
- "sizes": "192x192"
13
- },
14
- {
15
- "src": "https://lgcyaxi.net/visualify/static/logo/logo512.png",
16
- "type": "image/png",
17
- "sizes": "512x512"
18
- }
19
- ],
20
- "start_url": ".",
21
- "display": "standalone",
22
- "theme_color": "#000000",
23
- "background_color": "#ffffff"
1
+ {
2
+ "short_name": "visualifyjs",
3
+ "name": "Create Your Data Portal Simple",
4
+ "icons": [{
5
+ "src": "https://lgcyaxi.net/visualify/static/logo/favicon.ico",
6
+ "sizes": "64x64 32x32 24x24 16x16",
7
+ "type": "image/x-icon"
8
+ },
9
+ {
10
+ "src": "https://lgcyaxi.net/visualify/static/logo/logo192.png",
11
+ "type": "image/png",
12
+ "sizes": "192x192"
13
+ },
14
+ {
15
+ "src": "https://lgcyaxi.net/visualify/static/logo/logo512.png",
16
+ "type": "image/png",
17
+ "sizes": "512x512"
18
+ }
19
+ ],
20
+ "start_url": ".",
21
+ "display": "standalone",
22
+ "theme_color": "#000000",
23
+ "background_color": "#ffffff"
24
24
  }