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.
- package/.claude/mem/TIMELINE.md +36 -0
- package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
- package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
- package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
- package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
- package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
- package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
- package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
- package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
- package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
- package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
- package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
- package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
- package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
- package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
- package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
- package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
- package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
- package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
- package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
- package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
- package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
- package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
- package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
- package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
- package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
- package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
- package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
- package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
- package/.claude/settings.local.json +21 -0
- package/.github/workflows/static.yml.bak +51 -51
- package/.sisyphus/boulder.json +65 -0
- package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
- package/LICENSE +674 -674
- package/README.md +94 -59
- package/config-overrides.js +31 -31
- package/dist/stats.html +4949 -0
- package/dist/visualify-3d.esm.js +1 -0
- package/dist/visualify-3d.js +1 -0
- package/dist/visualify-core.esm.js +1 -0
- package/dist/visualify-core.js +1 -0
- package/dist/visualify-docs.esm.js +1 -0
- package/dist/visualify-docs.js +1 -0
- package/dist/visualify-loader.js +1 -0
- package/dist/visualify-pages.esm.js +1 -0
- package/dist/visualify-pages.js +1 -0
- package/dist/visualify-portal.esm.js +1 -0
- package/dist/visualify-portal.js +1 -0
- package/dist/visualify-shared.js +26571 -0
- package/dist/visualify.js +1 -188
- package/docs/CHANGELOG.md +148 -0
- package/docs/cli/commands.md +513 -0
- package/docs/configuration/visualify-json.md +474 -0
- package/docs/docs/3d-visualization.md +374 -0
- package/docs/docs/CLI.md +303 -34
- package/docs/docs/README.md +65 -65
- package/docs/docs/Rechart/bar.md +190 -190
- package/docs/docs/Rechart/funnel.md +241 -241
- package/docs/docs/Rechart/line.md +355 -355
- package/docs/docs/Rechart/pie.md +225 -225
- package/docs/docs/Rechart/radar.md +253 -253
- package/docs/docs/Rechart/scatter.md +298 -298
- package/docs/docs/_404.md +51 -51
- package/docs/docs/_coverpage.md +11 -11
- package/docs/docs/_sidebar.md +54 -44
- package/docs/docs/components/dotBio.md +87 -34
- package/docs/docs/components/echart.md +171 -82
- package/docs/docs/components/html.md +61 -34
- package/docs/docs/components/macaron.md +156 -145
- package/docs/docs/components/markdown.md +42 -0
- package/docs/docs/components/more.md +183 -142
- package/docs/docs/components/plotly.md +132 -62
- package/docs/docs/components/scatterL.md +171 -70
- package/docs/docs/components/visium.md +112 -57
- package/docs/docs/configuration.md +121 -121
- package/docs/docs/deploy.md +31 -31
- package/docs/docs/docsify-plugin.md +655 -0
- package/docs/docs/hmr.md +165 -0
- package/docs/docs/i18n.md +332 -0
- package/docs/docs/log.md +30 -9
- package/docs/docs/more-pages.md +23 -23
- package/docs/docs/quickstart.md +148 -124
- package/docs/docs/rechart-attributes.md +74 -74
- package/docs/docs/rechart-basic-usage.md +160 -162
- package/docs/docs/theme.md +5 -5
- package/docs/docs/typescript.md +306 -0
- package/docs/docs/visual-editor.md +359 -0
- package/docs/index.html +85 -71
- package/docs/manifest.json +23 -23
- package/docs/migration/v3-migration.md +392 -0
- package/docs/static/css/fluff-stuff.css +169 -169
- package/docs/static/css/font-awesome.min.css +4 -4
- package/docs/static/css/visualify.css +6 -25
- package/docs/static/js/3d-viz-examples.js +181 -0
- package/docs/static/js/configuration.js +630 -448
- package/docs/static/js/visualify.js +1 -188
- package/package.json +106 -84
- package/rollup.config.mjs +766 -76
- package/src/_css/404.css +115 -115
- package/src/_css/App.css +37 -37
- package/src/_css/autoSuggestion.css +26 -26
- package/src/_css/circular-progress.css +32 -32
- package/src/_css/index.css +36 -36
- package/src/_css/modern.css +350 -25
- package/src/_media/corner.svg +8 -8
- package/src/_media/download.svg +3 -3
- package/src/_media/logo.svg +14 -14
- package/src/_test/App.test.js +15 -15
- package/src/_utils/reportWebVitals.js +13 -13
- package/src/a11y/README.md +177 -0
- package/src/a11y/aria-labels.js +339 -0
- package/src/a11y/color-contrast.js +535 -0
- package/src/a11y/index.js +197 -0
- package/src/a11y/keyboard-nav.js +523 -0
- package/src/a11y/styles.css +165 -0
- package/src/cli/commands/dev.js +214 -0
- package/src/cli/commands/docs.js +521 -0
- package/src/cli/commands/edit.js +379 -0
- package/src/cli/commands/init.js +213 -0
- package/src/cli/commands/portal.js +236 -0
- package/src/cli/dev-server.js +530 -0
- package/src/cli/hmr.js +456 -0
- package/src/cli/index.js +180 -0
- package/src/cli/utils/config.js +207 -0
- package/src/cli/utils/logger.js +241 -0
- package/src/config/defaults.ts +122 -0
- package/src/config/index.ts +72 -0
- package/src/config/loader.ts +478 -0
- package/src/config/schema.ts +227 -0
- package/src/config/validator.ts +337 -0
- package/src/core/appContext.js +34 -27
- package/src/core/components/Bar.js +383 -0
- package/src/core/components/Bar3D.js +473 -0
- package/src/core/components/LargeDatasetChart.js +296 -0
- package/src/core/components/Line3D.js +310 -0
- package/src/core/components/Scatter.js +392 -188
- package/src/core/components/Scatter3D.js +455 -0
- package/src/core/components/ScatterBio.js +601 -572
- package/src/core/components/Surface3D.js +326 -0
- package/src/core/components/ThreeCustom.js +648 -0
- package/src/core/components/ThreeScene.js +459 -0
- package/src/core/components/VisiumPlot.js +191 -165
- package/src/core/components/browser.js +42 -42
- package/src/core/components/dotplot.js +413 -413
- package/src/core/components/html.js +29 -29
- package/src/core/components/list.js +178 -178
- package/src/core/components/macaron.js +206 -201
- package/src/core/components/markdown.js +56 -56
- package/src/core/components/parser.scatterBio.js +582 -587
- package/src/core/components/ratio.js +82 -80
- package/src/core/components/scatterL.js +206 -173
- package/src/core/components/searchbar.js +156 -131
- package/src/core/components/selection.js +310 -193
- package/src/core/components/timeline.js +236 -281
- package/src/core/components/visium.js +114 -97
- package/src/core/data-processor.js +413 -0
- package/src/core/fetch/condfetch.js +82 -82
- package/src/core/fetch/fetch.js +92 -92
- package/src/core/fetch/json.js +29 -29
- package/src/core/fetch/vfetch.js +42 -42
- package/src/core/hmr-client.js +724 -0
- package/src/core/liveEditor.js +44 -44
- package/src/core/modules/codeEditorWithPreview.js +104 -104
- package/src/core/modules/echarts/common.js +20 -20
- package/src/core/modules/echarts/gl.js +228 -0
- package/src/core/modules/echarts/presetHandler.js +41 -41
- package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
- package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
- package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
- package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
- package/src/core/modules/echarts.js +70 -71
- package/src/core/modules/echartsUtils.js +43 -43
- package/src/core/modules/echartswitcher.js +227 -152
- package/src/core/modules/replotly/presetHandler.js +24 -24
- package/src/core/modules/replotly/presets/minimum.js +18 -18
- package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
- package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
- package/src/core/modules/replotly.js +74 -71
- package/src/core/modules/threejs/Camera.js +373 -0
- package/src/core/modules/threejs/Lighting.js +459 -0
- package/src/core/modules/threejs/Renderer.js +364 -0
- package/src/core/modules/threejs/Scene.js +266 -0
- package/src/core/modules/threejs/index.js +155 -0
- package/src/core/pages/404.js +50 -50
- package/src/core/pages/error.js +27 -27
- package/src/core/pages/jsonPage.js +62 -62
- package/src/core/pages/loading.js +44 -44
- package/src/core/parser/echart.data.js +204 -183
- package/src/core/parser/echart.features.js +125 -125
- package/src/core/parser/echart.general.js +147 -147
- package/src/core/parser/echart.hilbert.js +57 -57
- package/src/core/parser/echart.parser.js +210 -210
- package/src/core/parser/echart.series.js +67 -67
- package/src/core/parser/echart.types.js +76 -76
- package/src/core/parser/plotly.config.js +10 -10
- package/src/core/parser/plotly.data.js +132 -132
- package/src/core/parser/plotly.layout.js +9 -9
- package/src/core/parser/plotly.violin.js +18 -18
- package/src/core/recharts.js +361 -62
- package/src/core/router/alias.js +49 -49
- package/src/core/router/jsonRouter.js +31 -31
- package/src/core/themes/modern.js +32 -32
- package/src/core/themes/themeSelector.js +33 -33
- package/src/core/visualify.js +213 -47
- package/src/core/widgets/circularProgress.js +23 -23
- package/src/core/widgets/controller.js +116 -83
- package/src/core/widgets/errorBoundary.js +36 -36
- package/src/core/widgets/footer.js +185 -177
- package/src/core/widgets/header.js +238 -234
- package/src/core/widgets/layout/Grid.js +31 -31
- package/src/core/widgets/layout.js +36 -36
- package/src/core/widgets/mapping.js +56 -42
- package/src/core/workers/data-worker.js +349 -0
- package/src/core/workers/worker-pool.js +396 -0
- package/src/docsify/bundle.js +215 -0
- package/src/docsify/markdown.js +271 -0
- package/src/docsify/plugin.js +268 -0
- package/src/editor/README.md +172 -0
- package/src/editor/components/ChartBuilder.jsx +341 -0
- package/src/editor/components/ChartTypeSidebar.jsx +91 -0
- package/src/editor/components/Editor.jsx +367 -0
- package/src/editor/components/Preview.jsx +446 -0
- package/src/editor/components/PropertyPanel.jsx +468 -0
- package/src/editor/components/StatusBar.jsx +85 -0
- package/src/editor/context/EditorContext.js +248 -0
- package/src/editor/hooks/useDebounce.js +32 -0
- package/src/editor/index.js +315 -0
- package/src/editor/styles/editor.css +637 -0
- package/src/editor/utils/chartValidator.js +263 -0
- package/src/entries/charts3d.js +70 -0
- package/src/entries/core.js +78 -0
- package/src/entries/docs.js +154 -0
- package/src/entries/pages.js +93 -0
- package/src/entries/portal.js +204 -0
- package/src/entries/shared.js +50 -0
- package/src/i18n/formatters.js +455 -0
- package/src/i18n/index.js +169 -0
- package/src/i18n/locales/ar.json +137 -0
- package/src/i18n/locales/de.json +137 -0
- package/src/i18n/locales/en.json +137 -0
- package/src/i18n/locales/es.json +137 -0
- package/src/i18n/locales/he.json +137 -0
- package/src/i18n/locales/zh.json +137 -0
- package/src/i18n/rtl.css +183 -0
- package/src/index.js +82 -62
- package/src/loader.js +103 -0
- package/src/setupTests.js +5 -5
- package/tsconfig.json +51 -0
- package/types/charts.d.ts +569 -0
- package/types/components.d.ts +441 -0
- package/types/config.d.ts +199 -0
- 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
|
+
};
|