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,441 @@
1
+ /**
2
+ * Visualify.js Component Prop Types
3
+ * @module types/components
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * import { ScatterProps, RechartsProps } from 'visualifyjs/types';
8
+ *
9
+ * const scatterProps: ScatterProps = {
10
+ * props: { config: { type: 'scatter', data: [] } },
11
+ * style: { width: '100%', height: '400px' }
12
+ * };
13
+ * ```
14
+ */
15
+
16
+ import { CSSProperties, ReactNode, RefObject, ForwardedRef } from 'react';
17
+ import {
18
+ ChartConfig,
19
+ ScatterConfig,
20
+ BarConfig,
21
+ LineConfig,
22
+ Scatter3DConfig,
23
+ Bar3DConfig,
24
+ Line3DConfig,
25
+ Surface3DConfig,
26
+ EChartsOption,
27
+ } from './charts';
28
+
29
+ /**
30
+ * Base component props shared across all chart components
31
+ */
32
+ export interface BaseComponentProps {
33
+ /** Unique identifier for the component */
34
+ id?: string;
35
+ /** CSS styles */
36
+ style?: CSSProperties;
37
+ /** Additional class names */
38
+ className?: string;
39
+ }
40
+
41
+ /**
42
+ * Props for the ReCharts wrapper component
43
+ */
44
+ export interface RechartsProps extends BaseComponentProps {
45
+ /** ECharts option object */
46
+ options: EChartsOption;
47
+ /** Chart container style */
48
+ style?: CSSProperties;
49
+ /** Event handlers */
50
+ onEvents?: Record<string, (params: unknown) => void>;
51
+ }
52
+
53
+ /**
54
+ * Props for the Scatter component
55
+ */
56
+ export interface ScatterProps extends BaseComponentProps {
57
+ /** Component configuration */
58
+ props: {
59
+ id?: string;
60
+ config: ScatterConfig;
61
+ };
62
+ /** Ref for accessing the chart instance */
63
+ ref?: ForwardedRef<unknown>;
64
+ }
65
+
66
+ /**
67
+ * Props for the ScatterBio component
68
+ */
69
+ export interface ScatterBioProps extends BaseComponentProps {
70
+ /** Component configuration */
71
+ props: {
72
+ id?: string;
73
+ config: ScatterConfig & {
74
+ /** Biological metadata fields */
75
+ bioMeta?: Record<string, unknown>;
76
+ };
77
+ };
78
+ /** Ref for accessing the chart instance */
79
+ ref?: ForwardedRef<unknown>;
80
+ }
81
+
82
+ /**
83
+ * Props for the Scatter3D component
84
+ */
85
+ export interface Scatter3DProps extends BaseComponentProps {
86
+ /** Component configuration */
87
+ props: {
88
+ id?: string;
89
+ config: Scatter3DConfig;
90
+ };
91
+ /** Ref for accessing the chart instance */
92
+ ref?: ForwardedRef<unknown>;
93
+ }
94
+
95
+ /**
96
+ * Props for the Bar3D component
97
+ */
98
+ export interface Bar3DProps extends BaseComponentProps {
99
+ /** Component configuration */
100
+ props: {
101
+ id?: string;
102
+ config: Bar3DConfig;
103
+ };
104
+ /** Ref for accessing the chart instance */
105
+ ref?: ForwardedRef<unknown>;
106
+ }
107
+
108
+ /**
109
+ * Props for the Line3D component
110
+ */
111
+ export interface Line3DProps extends BaseComponentProps {
112
+ /** Component configuration */
113
+ props: {
114
+ id?: string;
115
+ config: Line3DConfig;
116
+ };
117
+ /** Ref for accessing the chart instance */
118
+ ref?: ForwardedRef<unknown>;
119
+ }
120
+
121
+ /**
122
+ * Props for the Surface3D component
123
+ */
124
+ export interface Surface3DProps extends BaseComponentProps {
125
+ /** Component configuration */
126
+ props: {
127
+ id?: string;
128
+ config: Surface3DConfig;
129
+ };
130
+ /** Ref for accessing the chart instance */
131
+ ref?: ForwardedRef<unknown>;
132
+ }
133
+
134
+ /**
135
+ * Props for the VisiumPlot component
136
+ */
137
+ export interface VisiumPlotProps extends BaseComponentProps {
138
+ /** Component configuration */
139
+ props: {
140
+ id?: string;
141
+ config: ScatterConfig & {
142
+ /** Visium-specific settings */
143
+ tissueImage?: string;
144
+ spots?: unknown[];
145
+ };
146
+ };
147
+ /** Ref for accessing the chart instance */
148
+ ref?: ForwardedRef<unknown>;
149
+ }
150
+
151
+ /**
152
+ * Props for the DotPlot component
153
+ */
154
+ export interface DotPlotProps extends BaseComponentProps {
155
+ /** Component configuration */
156
+ props: {
157
+ id?: string;
158
+ config: ChartConfig;
159
+ };
160
+ /** Ref for accessing the chart instance */
161
+ ref?: ForwardedRef<unknown>;
162
+ }
163
+
164
+ /**
165
+ * Grid layout configuration
166
+ */
167
+ export interface GridLayoutConfig {
168
+ /** Number of rows */
169
+ rows?: number;
170
+ /** Number of columns */
171
+ cols?: number;
172
+ /** Gap between grid items */
173
+ gap?: string | number;
174
+ /** Additional styles */
175
+ style?: CSSProperties;
176
+ /** Debug mode - shows borders */
177
+ debug?: boolean;
178
+ }
179
+
180
+ /**
181
+ * Props for the DynamicGrid component
182
+ */
183
+ export interface DynamicGridProps {
184
+ /** Grid configuration */
185
+ config?: GridLayoutConfig;
186
+ /** Child elements */
187
+ children?: ReactNode;
188
+ }
189
+
190
+ /**
191
+ * Widget base props
192
+ */
193
+ export interface WidgetProps extends BaseComponentProps {
194
+ /** Widget title */
195
+ title?: string;
196
+ /** Widget content */
197
+ children?: ReactNode;
198
+ }
199
+
200
+ /**
201
+ * Header widget props
202
+ */
203
+ export interface HeaderProps extends WidgetProps {
204
+ /** Logo URL or component */
205
+ logo?: string | ReactNode;
206
+ /** Navigation items */
207
+ navItems?: Array<{
208
+ label: string;
209
+ href: string;
210
+ active?: boolean;
211
+ }>;
212
+ }
213
+
214
+ /**
215
+ * Footer widget props
216
+ */
217
+ export interface FooterProps extends WidgetProps {
218
+ /** Copyright text */
219
+ copyright?: string;
220
+ /** Links to display */
221
+ links?: Array<{
222
+ label: string;
223
+ href: string;
224
+ }>;
225
+ }
226
+
227
+ /**
228
+ * Controller widget props
229
+ */
230
+ export interface ControllerProps extends WidgetProps {
231
+ /** Control elements configuration */
232
+ controls?: Array<{
233
+ type: 'button' | 'select' | 'slider' | 'checkbox';
234
+ label: string;
235
+ value?: unknown;
236
+ onChange?: (value: unknown) => void;
237
+ }>;
238
+ }
239
+
240
+ /**
241
+ * Error boundary props
242
+ */
243
+ export interface ErrorBoundaryProps {
244
+ /** Child components */
245
+ children: ReactNode;
246
+ /** Fallback UI when error occurs */
247
+ fallback?: ReactNode;
248
+ /** Error handler callback */
249
+ onError?: (error: Error, errorInfo: unknown) => void;
250
+ }
251
+
252
+ /**
253
+ * Error boundary state
254
+ */
255
+ export interface ErrorBoundaryState {
256
+ hasError: boolean;
257
+ error?: Error;
258
+ }
259
+
260
+ /**
261
+ * Loading component props
262
+ */
263
+ export interface LoadingProps extends BaseComponentProps {
264
+ /** Loading message */
265
+ message?: string;
266
+ /** Whether loading is active */
267
+ active?: boolean;
268
+ }
269
+
270
+ /**
271
+ * Props for 3D scene components using Three.js
272
+ */
273
+ export interface ThreeSceneProps extends BaseComponentProps {
274
+ /** Camera configuration */
275
+ camera?: {
276
+ position?: [number, number, number];
277
+ fov?: number;
278
+ near?: number;
279
+ far?: number;
280
+ };
281
+ /** Renderer configuration */
282
+ renderer?: {
283
+ antialias?: boolean;
284
+ alpha?: boolean;
285
+ shadowMap?: boolean;
286
+ };
287
+ /** Lighting configuration */
288
+ lighting?: {
289
+ ambient?: { intensity?: number; color?: string };
290
+ directional?: { intensity?: number; color?: string; position?: [number, number, number] };
291
+ };
292
+ /** Child 3D objects */
293
+ children?: ReactNode;
294
+ }
295
+
296
+ /**
297
+ * Props for custom 3D components
298
+ */
299
+ export interface ThreeCustomProps extends BaseComponentProps {
300
+ /** Custom render function */
301
+ render: (scene: unknown, camera: unknown, renderer: unknown) => void;
302
+ /** Animation loop */
303
+ animate?: (scene: unknown, camera: unknown, renderer: unknown, time: number) => void;
304
+ }
305
+
306
+ /**
307
+ * Circular progress widget props
308
+ */
309
+ export interface CircularProgressProps extends BaseComponentProps {
310
+ /** Progress value (0-100) */
311
+ value: number;
312
+ /** Size of the progress circle */
313
+ size?: number;
314
+ /** Stroke width */
315
+ strokeWidth?: number;
316
+ /** Color of the progress */
317
+ color?: string;
318
+ /** Background color */
319
+ backgroundColor?: string;
320
+ /** Show percentage text */
321
+ showText?: boolean;
322
+ }
323
+
324
+ /**
325
+ * Selection component props
326
+ */
327
+ export interface SelectionProps extends BaseComponentProps {
328
+ /** Available options */
329
+ options: Array<{ value: string; label: string; disabled?: boolean }>;
330
+ /** Selected values */
331
+ value?: string | string[];
332
+ /** Multi-select mode */
333
+ multi?: boolean;
334
+ /** Change handler */
335
+ onChange?: (value: string | string[]) => void;
336
+ /** Placeholder text */
337
+ placeholder?: string;
338
+ }
339
+
340
+ /**
341
+ * Search bar component props
342
+ */
343
+ export interface SearchBarProps extends BaseComponentProps {
344
+ /** Search query */
345
+ value?: string;
346
+ /** Placeholder text */
347
+ placeholder?: string;
348
+ /** Search handler */
349
+ onSearch?: (query: string) => void;
350
+ /** Change handler */
351
+ onChange?: (query: string) => void;
352
+ /** Suggestions data */
353
+ suggestions?: string[];
354
+ }
355
+
356
+ /**
357
+ * Timeline component props
358
+ */
359
+ export interface TimelineProps extends BaseComponentProps {
360
+ /** Timeline events */
361
+ events: Array<{
362
+ id: string;
363
+ title: string;
364
+ description?: string;
365
+ timestamp: Date | string;
366
+ color?: string;
367
+ }>;
368
+ /** Selected event ID */
369
+ selected?: string;
370
+ /** Event click handler */
371
+ onSelect?: (id: string) => void;
372
+ }
373
+
374
+ /**
375
+ * Browser component props
376
+ */
377
+ export interface BrowserProps extends BaseComponentProps {
378
+ /** Root directory path */
379
+ rootPath: string;
380
+ /** Selected file path */
381
+ selectedPath?: string;
382
+ /** File selection handler */
383
+ onSelect?: (path: string, isDirectory: boolean) => void;
384
+ /** Allowed file extensions */
385
+ allowedExtensions?: string[];
386
+ }
387
+
388
+ /**
389
+ * Mapping widget props
390
+ */
391
+ export interface MappingProps extends WidgetProps {
392
+ /** Source fields */
393
+ sourceFields: string[];
394
+ /** Target fields */
395
+ targetFields: string[];
396
+ /** Current mappings */
397
+ mappings?: Record<string, string>;
398
+ /** Mapping change handler */
399
+ onChange?: (mappings: Record<string, string>) => void;
400
+ }
401
+
402
+ /**
403
+ * Layout configuration props
404
+ */
405
+ export interface LayoutProps extends BaseComponentProps {
406
+ /** Layout type */
407
+ type?: 'default' | 'fluid' | 'fixed';
408
+ /** Header component */
409
+ header?: ReactNode;
410
+ /** Footer component */
411
+ footer?: ReactNode;
412
+ /** Sidebar component */
413
+ sidebar?: ReactNode;
414
+ /** Main content */
415
+ children: ReactNode;
416
+ }
417
+
418
+ /**
419
+ * Props for chart wrapper components with ref forwarding
420
+ */
421
+ export interface ChartComponentProps<T extends ChartConfig = ChartConfig> {
422
+ /** Component props containing config */
423
+ props: {
424
+ id?: string;
425
+ config: T;
426
+ };
427
+ /** CSS styles */
428
+ style?: CSSProperties;
429
+ /** Ref for chart instance access */
430
+ ref?: ForwardedRef<unknown>;
431
+ }
432
+
433
+ /**
434
+ * Union type of all chart component props
435
+ */
436
+ export type AnyChartComponentProps =
437
+ | ScatterProps
438
+ | Scatter3DProps
439
+ | Bar3DProps
440
+ | Line3DProps
441
+ | Surface3DProps;
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Visualify.js Configuration Types
3
+ * @module types/config
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * import { VisualifyConfig, DocsConfig } from 'visualifyjs/types';
8
+ *
9
+ * const config: VisualifyConfig = {
10
+ * version: '3.0.0',
11
+ * mode: 'portal',
12
+ * docs: {
13
+ * basePath: './docs',
14
+ * theme: 'vue',
15
+ * plugins: []
16
+ * }
17
+ * };
18
+ * ```
19
+ */
20
+
21
+ /**
22
+ * Application operating mode
23
+ * - 'docs': Documentation mode with markdown rendering
24
+ * - 'portal': Full portal mode with navigation
25
+ * - 'hybrid': Combined docs and portal
26
+ * - 'auto': Automatically detect based on content
27
+ */
28
+ export type AppMode = 'docs' | 'portal' | 'hybrid' | 'auto';
29
+
30
+ /**
31
+ * Supported charting libraries
32
+ */
33
+ export type ChartLibrary = 'echarts' | 'plotly';
34
+
35
+ /**
36
+ * Data source types for portal configuration
37
+ */
38
+ export type DataSourceType = 'json' | 'csv' | 'api' | 'websocket';
39
+
40
+ /**
41
+ * Data source configuration for portal
42
+ */
43
+ export interface DataSource {
44
+ /** Unique name for the data source */
45
+ name: string;
46
+ /** Type of data source */
47
+ type: DataSourceType;
48
+ /** URL for API or WebSocket connections */
49
+ url?: string;
50
+ /** File path for local data files */
51
+ path?: string;
52
+ /** Additional properties for specific data source types */
53
+ [key: string]: unknown;
54
+ }
55
+
56
+ /**
57
+ * Documentation configuration
58
+ */
59
+ export interface DocsConfig {
60
+ /** Base path for documentation files */
61
+ basePath: string;
62
+ /** Documentation theme */
63
+ theme: string;
64
+ /** List of plugin modules to load */
65
+ plugins: string[];
66
+ /** Additional documentation settings */
67
+ [key: string]: unknown;
68
+ }
69
+
70
+ /**
71
+ * Portal configuration
72
+ */
73
+ export interface PortalConfig {
74
+ /** Homepage configuration file */
75
+ homepage: string;
76
+ /** Portal theme */
77
+ theme: string;
78
+ /** Data sources for the portal */
79
+ dataSources: DataSource[];
80
+ /** Additional portal settings */
81
+ [key: string]: unknown;
82
+ }
83
+
84
+ /**
85
+ * Visualization configuration
86
+ */
87
+ export interface VisualizationConfig {
88
+ /** Default charting library */
89
+ defaultLibrary: ChartLibrary;
90
+ /** Enable 3D visualization capabilities */
91
+ enable3D: boolean;
92
+ /** Use Web Workers for rendering */
93
+ webWorkers: boolean;
94
+ /** Additional visualization settings */
95
+ [key: string]: unknown;
96
+ }
97
+
98
+ /**
99
+ * Main Visualify configuration interface
100
+ * This is the root configuration object used throughout the application.
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const config: VisualifyConfig = {
105
+ * version: '3.0.0',
106
+ * mode: 'portal',
107
+ * docs: {
108
+ * basePath: './docs',
109
+ * theme: 'modern',
110
+ * plugins: ['search', 'pagination']
111
+ * },
112
+ * portal: {
113
+ * homepage: 'home.json',
114
+ * theme: 'modern',
115
+ * dataSources: [
116
+ * { name: 'api', type: 'api', url: 'https://api.example.com' }
117
+ * ]
118
+ * },
119
+ * visualization: {
120
+ * defaultLibrary: 'echarts',
121
+ * enable3D: true,
122
+ * webWorkers: false
123
+ * }
124
+ * };
125
+ * ```
126
+ */
127
+ export interface VisualifyConfig {
128
+ /** Schema version for compatibility checking */
129
+ version: '3.0.0';
130
+ /** Application operating mode */
131
+ mode: AppMode;
132
+ /** Documentation configuration (required in docs/hybrid modes) */
133
+ docs?: DocsConfig;
134
+ /** Portal configuration (required in portal/hybrid modes) */
135
+ portal?: PortalConfig;
136
+ /** Visualization configuration */
137
+ visualization?: VisualizationConfig;
138
+ /** Additional custom properties */
139
+ [key: string]: unknown;
140
+ }
141
+
142
+ /**
143
+ * Configuration loading options
144
+ */
145
+ export interface LoadConfigOptions {
146
+ /** Whether to validate the final config */
147
+ validate?: boolean;
148
+ /** Skip loading from file */
149
+ skipFile?: boolean;
150
+ /** Skip loading from environment */
151
+ skipEnvironment?: boolean;
152
+ }
153
+
154
+ /**
155
+ * Configuration cache entry
156
+ */
157
+ export interface ConfigCacheEntry {
158
+ /** Parsed configuration object */
159
+ config: VisualifyConfig;
160
+ /** Last modification time */
161
+ mtime: Date;
162
+ /** Path to the config file */
163
+ filepath: string;
164
+ }
165
+
166
+ /**
167
+ * Configuration cache statistics
168
+ */
169
+ export interface CacheStats {
170
+ /** Number of cached configurations */
171
+ size: number;
172
+ /** List of cached file paths */
173
+ files: string[];
174
+ }
175
+
176
+ /**
177
+ * Watcher control object returned by watchConfig
178
+ */
179
+ export interface ConfigWatcher {
180
+ /** Stop watching for changes */
181
+ stop: () => void;
182
+ /** Path to the watched file */
183
+ filepath: string;
184
+ }
185
+
186
+ /**
187
+ * Configuration reload callback
188
+ */
189
+ export type ConfigReloadCallback = (
190
+ config: VisualifyConfig | null,
191
+ error: Error | null
192
+ ) => void;
193
+
194
+ /**
195
+ * Partial configuration for merging
196
+ */
197
+ export type PartialConfig = Partial<VisualifyConfig> & {
198
+ [key: string]: unknown;
199
+ };