scichart-engine 0.4.1
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/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/analysis/contours.d.ts +20 -0
- package/dist/analysis/fitting.d.ts +24 -0
- package/dist/analysis/index.d.ts +12 -0
- package/dist/analysis/math.d.ts +32 -0
- package/dist/analysis/utils.d.ts +150 -0
- package/dist/core/Chart.d.ts +15 -0
- package/dist/core/ChartControls.d.ts +30 -0
- package/dist/core/ChartLegend.d.ts +35 -0
- package/dist/core/ChartStatistics.d.ts +18 -0
- package/dist/core/EventEmitter.d.ts +30 -0
- package/dist/core/InteractionManager.d.ts +67 -0
- package/dist/core/OverlayRenderer.d.ts +67 -0
- package/dist/core/Series.d.ts +4 -0
- package/dist/core/annotations/AnnotationManager.d.ts +57 -0
- package/dist/core/annotations/index.d.ts +5 -0
- package/dist/core/annotations/types.d.ts +157 -0
- package/dist/core/chart/ChartCore.d.ts +103 -0
- package/dist/core/chart/ChartExporter.d.ts +18 -0
- package/dist/core/chart/ChartNavigation.d.ts +33 -0
- package/dist/core/chart/ChartRenderer.d.ts +53 -0
- package/dist/core/chart/ChartScaling.d.ts +26 -0
- package/dist/core/chart/ChartSeries.d.ts +4 -0
- package/dist/core/chart/ChartSetup.d.ts +64 -0
- package/dist/core/chart/ChartUI.d.ts +22 -0
- package/dist/core/chart/exporter/SVGExporter.d.ts +6 -0
- package/dist/core/chart/exporter/index.d.ts +5 -0
- package/dist/core/chart/index.d.ts +14 -0
- package/dist/core/chart/plugins/PluginManager.d.ts +13 -0
- package/dist/core/chart/plugins/types.d.ts +13 -0
- package/dist/core/chart/series/SeriesActions.d.ts +7 -0
- package/dist/core/chart/series/SeriesBuffer.d.ts +4 -0
- package/dist/core/chart/series/SeriesFit.d.ts +3 -0
- package/dist/core/chart/series/index.d.ts +7 -0
- package/dist/core/chart/series/types.d.ts +22 -0
- package/dist/core/chart/types.d.ts +72 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/series/Series.d.ts +52 -0
- package/dist/core/series/SeriesBounds.d.ts +3 -0
- package/dist/core/series/SeriesDataUtils.d.ts +7 -0
- package/dist/core/series/index.d.ts +6 -0
- package/dist/core/tooltip/TooltipManager.d.ts +203 -0
- package/dist/core/tooltip/TooltipPositioner.d.ts +83 -0
- package/dist/core/tooltip/TooltipRenderer.d.ts +64 -0
- package/dist/core/tooltip/index.d.ts +18 -0
- package/dist/core/tooltip/templates/AnnotationTemplate.d.ts +18 -0
- package/dist/core/tooltip/templates/CrosshairTemplate.d.ts +30 -0
- package/dist/core/tooltip/templates/DefaultTemplate.d.ts +30 -0
- package/dist/core/tooltip/templates/HeatmapTemplate.d.ts +34 -0
- package/dist/core/tooltip/templates/MinimalTemplate.d.ts +26 -0
- package/dist/core/tooltip/templates/RangeTemplate.d.ts +18 -0
- package/dist/core/tooltip/templates/ScientificTemplate.d.ts +34 -0
- package/dist/core/tooltip/templates/index.d.ts +27 -0
- package/dist/core/tooltip/themes.d.ts +48 -0
- package/dist/core/tooltip/types.d.ts +396 -0
- package/dist/examples.d.ts +19 -0
- package/dist/gpu/adapter/gpuRenderer.d.ts +135 -0
- package/dist/gpu/adapter/index.d.ts +7 -0
- package/dist/gpu/adapter/seriesAdapter.d.ts +88 -0
- package/dist/gpu/backends/webgl/WebGLBackend.d.ts +42 -0
- package/dist/gpu/backends/webgl/index.d.ts +5 -0
- package/dist/gpu/backends/webgl/programFactory.d.ts +30 -0
- package/dist/gpu/backends/webgl/shaders.d.ts +14 -0
- package/dist/gpu/backends/webgpu/MassiveDataRenderer.d.ts +111 -0
- package/dist/gpu/backends/webgpu/WebGPUBackend.d.ts +58 -0
- package/dist/gpu/backends/webgpu/pipelines/bandPipeline.d.ts +24 -0
- package/dist/gpu/backends/webgpu/pipelines/heatmapPipeline.d.ts +28 -0
- package/dist/gpu/backends/webgpu/pipelines/index.d.ts +10 -0
- package/dist/gpu/backends/webgpu/pipelines/instancedLinePipeline.d.ts +23 -0
- package/dist/gpu/backends/webgpu/pipelines/instancedPointPipeline.d.ts +25 -0
- package/dist/gpu/backends/webgpu/pipelines/linePipeline.d.ts +23 -0
- package/dist/gpu/backends/webgpu/pipelines/pointPipeline.d.ts +28 -0
- package/dist/gpu/backends/webgpu/pipelines/trianglePipeline.d.ts +5 -0
- package/dist/gpu/backends/webgpu/pipelines/triangleShader.d.ts +1 -0
- package/dist/gpu/backends/webgpu/shaders/heatmap.wgsl.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/index.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/instanced.wgsl.d.ts +16 -0
- package/dist/gpu/backends/webgpu/shaders/line.wgsl.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/point.wgsl.d.ts +9 -0
- package/dist/gpu/benchmark/benchmark.d.ts +74 -0
- package/dist/gpu/benchmark/index.d.ts +5 -0
- package/dist/gpu/compute/gpuCompute.d.ts +72 -0
- package/dist/gpu/compute/index.d.ts +6 -0
- package/dist/gpu/compute/shaders.d.ts +9 -0
- package/dist/gpu/drawList.d.ts +77 -0
- package/dist/gpu/examples/gallery.d.ts +20 -0
- package/dist/gpu/examples/index.d.ts +3 -0
- package/dist/gpu/examples/webgpu-line-demo.d.ts +8 -0
- package/dist/gpu/examples/webgpu-triangle.d.ts +1 -0
- package/dist/gpu/frame.d.ts +25 -0
- package/dist/gpu/index.d.ts +24 -0
- package/dist/gpu/resources/bufferStore.d.ts +40 -0
- package/dist/gpu/resources/index.d.ts +9 -0
- package/dist/gpu/resources/pipelineCache.d.ts +33 -0
- package/dist/gpu/resources/textureStore.d.ts +41 -0
- package/dist/gpu/types.d.ts +47 -0
- package/dist/index.d.ts +34 -0
- package/dist/overlay/CanvasOverlay.d.ts +102 -0
- package/dist/overlay/index.d.ts +4 -0
- package/dist/react/SciChart.d.ts +60 -0
- package/dist/react/index.d.ts +5 -0
- package/dist/react/useSciChart.d.ts +56 -0
- package/dist/renderer/BarRenderer.d.ts +14 -0
- package/dist/renderer/CandlestickRenderer.d.ts +12 -0
- package/dist/renderer/HeatmapRenderer.d.ts +15 -0
- package/dist/renderer/NativeWebGLRenderer.d.ts +16 -0
- package/dist/renderer/RendererInterface.d.ts +70 -0
- package/dist/renderer/WebGPURenderer.d.ts +16 -0
- package/dist/renderer/index.d.ts +10 -0
- package/dist/renderer/native/NativeWebGLRenderer.d.ts +30 -0
- package/dist/renderer/native/bufferStore.d.ts +11 -0
- package/dist/renderer/native/draw.d.ts +31 -0
- package/dist/renderer/native/programFactory.d.ts +3 -0
- package/dist/renderer/native/renderFrame.d.ts +3 -0
- package/dist/renderer/native/shaderSources.d.ts +6 -0
- package/dist/renderer/native/textureStore.d.ts +8 -0
- package/dist/renderer/native/types.d.ts +58 -0
- package/dist/renderer/native/utils.d.ts +4 -0
- package/dist/renderer/shaders.d.ts +77 -0
- package/dist/scales/index.d.ts +54 -0
- package/dist/scichart-engine.es.js +8408 -0
- package/dist/scichart-engine.es.js.map +1 -0
- package/dist/scichart-engine.umd.js +871 -0
- package/dist/scichart-engine.umd.js.map +1 -0
- package/dist/streaming/index.d.ts +7 -0
- package/dist/streaming/mock.d.ts +12 -0
- package/dist/streaming/types.d.ts +57 -0
- package/dist/streaming/utils.d.ts +19 -0
- package/dist/streaming/websocket.d.ts +6 -0
- package/dist/theme/index.d.ts +123 -0
- package/dist/types.d.ts +333 -0
- package/dist/workers/downsample.d.ts +34 -0
- package/dist/workers/downsample.worker.d.ts +46 -0
- package/package.json +59 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TooltipTemplate, TooltipData } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Tooltip Templates - Barrel Export
|
|
4
|
+
*
|
|
5
|
+
* All available tooltip templates for different use cases.
|
|
6
|
+
*
|
|
7
|
+
* @module tooltip/templates
|
|
8
|
+
*/
|
|
9
|
+
export { DefaultTooltipTemplate, defaultTooltipTemplate } from './DefaultTemplate';
|
|
10
|
+
export { MinimalTooltipTemplate, minimalTooltipTemplate } from './MinimalTemplate';
|
|
11
|
+
export { CrosshairTooltipTemplate, crosshairTooltipTemplate } from './CrosshairTemplate';
|
|
12
|
+
export { HeatmapTooltipTemplate, heatmapTooltipTemplate } from './HeatmapTemplate';
|
|
13
|
+
export { ScientificTooltipTemplate, scientificTooltipTemplate } from './ScientificTemplate';
|
|
14
|
+
export { AnnotationTooltipTemplate, annotationTooltipTemplate } from './AnnotationTemplate';
|
|
15
|
+
export { RangeTooltipTemplate, rangeTooltipTemplate } from './RangeTemplate';
|
|
16
|
+
/** All built-in templates */
|
|
17
|
+
export declare const BUILTIN_TEMPLATES: TooltipTemplate<TooltipData>[];
|
|
18
|
+
/** Template ID type */
|
|
19
|
+
export type BuiltinTemplateId = 'default' | 'minimal' | 'crosshair' | 'heatmap' | 'scientific' | 'annotation' | 'range';
|
|
20
|
+
/**
|
|
21
|
+
* Get a built-in template by ID
|
|
22
|
+
*/
|
|
23
|
+
export declare function getBuiltinTemplate(id: BuiltinTemplateId | string): TooltipTemplate<TooltipData> | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Get template for a tooltip type
|
|
26
|
+
*/
|
|
27
|
+
export declare function getDefaultTemplateForType(type: string): TooltipTemplate<TooltipData>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TooltipTheme } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Dark Theme - Elegant dark tooltip with subtle glow
|
|
5
|
+
*/
|
|
6
|
+
export declare const TOOLTIP_DARK_THEME: TooltipTheme;
|
|
7
|
+
/**
|
|
8
|
+
* Light Theme - Clean and professional for light backgrounds
|
|
9
|
+
*/
|
|
10
|
+
export declare const TOOLTIP_LIGHT_THEME: TooltipTheme;
|
|
11
|
+
/**
|
|
12
|
+
* Glassmorphism Theme - Modern frosted glass effect
|
|
13
|
+
*/
|
|
14
|
+
export declare const TOOLTIP_GLASS_THEME: TooltipTheme;
|
|
15
|
+
/**
|
|
16
|
+
* Midnight Theme - Deep blue tones for night mode
|
|
17
|
+
*/
|
|
18
|
+
export declare const TOOLTIP_MIDNIGHT_THEME: TooltipTheme;
|
|
19
|
+
/**
|
|
20
|
+
* Electrochemistry Theme - Professional blue tones for scientific data
|
|
21
|
+
*/
|
|
22
|
+
export declare const TOOLTIP_ELECTROCHEM_THEME: TooltipTheme;
|
|
23
|
+
/**
|
|
24
|
+
* Neon Theme - Vibrant glowing effect for futuristic UIs
|
|
25
|
+
*/
|
|
26
|
+
export declare const TOOLTIP_NEON_THEME: TooltipTheme;
|
|
27
|
+
/**
|
|
28
|
+
* Minimal Theme - Ultra-compact with no decorations
|
|
29
|
+
*/
|
|
30
|
+
export declare const TOOLTIP_MINIMAL_THEME: TooltipTheme;
|
|
31
|
+
/** Available tooltip theme names */
|
|
32
|
+
export type TooltipThemeName = 'dark' | 'light' | 'glass' | 'midnight' | 'electrochemistry' | 'neon' | 'minimal';
|
|
33
|
+
/** Theme registry */
|
|
34
|
+
export declare const TOOLTIP_THEMES: Record<TooltipThemeName, TooltipTheme>;
|
|
35
|
+
/**
|
|
36
|
+
* Get a tooltip theme by name
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTooltipTheme(name: TooltipThemeName | string): TooltipTheme;
|
|
39
|
+
/**
|
|
40
|
+
* Create a custom tooltip theme by merging with a base theme
|
|
41
|
+
*/
|
|
42
|
+
export declare function createTooltipTheme(base: TooltipTheme | TooltipThemeName, overrides: Partial<TooltipTheme>): TooltipTheme;
|
|
43
|
+
/**
|
|
44
|
+
* Map chart theme name to matching tooltip theme
|
|
45
|
+
*/
|
|
46
|
+
export declare function getTooltipThemeForChartTheme(chartThemeName: string): TooltipTheme;
|
|
47
|
+
/** Default tooltip theme */
|
|
48
|
+
export declare const DEFAULT_TOOLTIP_THEME: TooltipTheme;
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tooltip System - Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* This module defines all types and interfaces for the high-performance
|
|
5
|
+
* tooltip system in SciChart Engine.
|
|
6
|
+
*
|
|
7
|
+
* @module tooltip/types
|
|
8
|
+
*/
|
|
9
|
+
/** Base type for all tooltip data */
|
|
10
|
+
export type TooltipType = 'datapoint' | 'crosshair' | 'range' | 'annotation' | 'heatmap' | 'axis';
|
|
11
|
+
/** Union type for all tooltip data structures */
|
|
12
|
+
export type TooltipData = DataPointTooltip | CrosshairTooltip | RangeTooltip | AnnotationTooltip | HeatmapTooltip | AxisTooltip;
|
|
13
|
+
/**
|
|
14
|
+
* Data Point Tooltip - Shows when hovering over data points
|
|
15
|
+
*/
|
|
16
|
+
export interface DataPointTooltip {
|
|
17
|
+
type: 'datapoint';
|
|
18
|
+
/** Related series ID */
|
|
19
|
+
seriesId: string;
|
|
20
|
+
/** Series display name */
|
|
21
|
+
seriesName: string;
|
|
22
|
+
/** Series color */
|
|
23
|
+
seriesColor: string;
|
|
24
|
+
/** Data point index */
|
|
25
|
+
dataIndex: number;
|
|
26
|
+
/** X value in data coordinates */
|
|
27
|
+
dataX: number;
|
|
28
|
+
/** Y value in data coordinates */
|
|
29
|
+
dataY: number;
|
|
30
|
+
/** X value in pixels (canvas coordinates) */
|
|
31
|
+
pixelX: number;
|
|
32
|
+
/** Y value in pixels (canvas coordinates) */
|
|
33
|
+
pixelY: number;
|
|
34
|
+
/** Y error if available [minus, plus] */
|
|
35
|
+
yError?: [number, number];
|
|
36
|
+
/** X error if available [minus, plus] */
|
|
37
|
+
xError?: [number, number];
|
|
38
|
+
/** Cycle number (for CV data) */
|
|
39
|
+
cycle?: number;
|
|
40
|
+
/** Custom metadata from series */
|
|
41
|
+
metadata?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Crosshair Tooltip - Shows interpolated values at cursor X position
|
|
45
|
+
*/
|
|
46
|
+
export interface CrosshairTooltip {
|
|
47
|
+
type: 'crosshair';
|
|
48
|
+
/** Cursor X in pixels */
|
|
49
|
+
cursorX: number;
|
|
50
|
+
/** Cursor Y in pixels */
|
|
51
|
+
cursorY: number;
|
|
52
|
+
/** X value in data coordinates */
|
|
53
|
+
dataX: number;
|
|
54
|
+
/** Interpolated values for each visible series */
|
|
55
|
+
interpolatedValues: CrosshairSeriesValue[];
|
|
56
|
+
}
|
|
57
|
+
export interface CrosshairSeriesValue {
|
|
58
|
+
/** Series ID */
|
|
59
|
+
seriesId: string;
|
|
60
|
+
/** Series display name */
|
|
61
|
+
seriesName: string;
|
|
62
|
+
/** Series color */
|
|
63
|
+
seriesColor: string;
|
|
64
|
+
/** Interpolated X value */
|
|
65
|
+
x: number;
|
|
66
|
+
/** Interpolated Y value */
|
|
67
|
+
y: number;
|
|
68
|
+
/** Whether this is an exact data point or interpolated */
|
|
69
|
+
isInterpolated: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Range Tooltip - Shows statistics for selected range
|
|
73
|
+
*/
|
|
74
|
+
export interface RangeTooltip {
|
|
75
|
+
type: 'range';
|
|
76
|
+
/** Start X value */
|
|
77
|
+
xMin: number;
|
|
78
|
+
/** End X value */
|
|
79
|
+
xMax: number;
|
|
80
|
+
/** Start Y value (for box selection) */
|
|
81
|
+
yMin?: number;
|
|
82
|
+
/** End Y value (for box selection) */
|
|
83
|
+
yMax?: number;
|
|
84
|
+
/** Statistics for the range */
|
|
85
|
+
statistics: RangeStatistics;
|
|
86
|
+
}
|
|
87
|
+
export interface RangeStatistics {
|
|
88
|
+
/** Number of points in range */
|
|
89
|
+
count: number;
|
|
90
|
+
/** Mean Y value */
|
|
91
|
+
mean?: number;
|
|
92
|
+
/** Minimum Y value */
|
|
93
|
+
min?: number;
|
|
94
|
+
/** Maximum Y value */
|
|
95
|
+
max?: number;
|
|
96
|
+
/** Standard deviation */
|
|
97
|
+
stdDev?: number;
|
|
98
|
+
/** Integrated area under curve */
|
|
99
|
+
area?: number;
|
|
100
|
+
/** X value at peak Y */
|
|
101
|
+
peakX?: number;
|
|
102
|
+
/** Peak Y value */
|
|
103
|
+
peakY?: number;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Annotation Tooltip - Shows when hovering over annotations
|
|
107
|
+
*/
|
|
108
|
+
export interface AnnotationTooltip {
|
|
109
|
+
type: 'annotation';
|
|
110
|
+
/** Annotation unique ID */
|
|
111
|
+
annotationId: string;
|
|
112
|
+
/** Type of annotation */
|
|
113
|
+
annotationType: 'horizontal-line' | 'vertical-line' | 'band' | 'text' | 'arrow';
|
|
114
|
+
/** Annotation label if any */
|
|
115
|
+
label?: string;
|
|
116
|
+
/** Position values */
|
|
117
|
+
value?: number;
|
|
118
|
+
valueX?: number;
|
|
119
|
+
valueY?: number;
|
|
120
|
+
/** Custom metadata */
|
|
121
|
+
metadata?: Record<string, unknown>;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Heatmap Tooltip - Shows Z values in heatmaps
|
|
125
|
+
*/
|
|
126
|
+
export interface HeatmapTooltip {
|
|
127
|
+
type: 'heatmap';
|
|
128
|
+
/** Related series ID */
|
|
129
|
+
seriesId: string;
|
|
130
|
+
/** Series display name */
|
|
131
|
+
seriesName: string;
|
|
132
|
+
/** Grid X index (column) */
|
|
133
|
+
xIndex: number;
|
|
134
|
+
/** Grid Y index (row) */
|
|
135
|
+
yIndex: number;
|
|
136
|
+
/** X value in data coordinates */
|
|
137
|
+
dataX: number;
|
|
138
|
+
/** Y value in data coordinates */
|
|
139
|
+
dataY: number;
|
|
140
|
+
/** Z value (intensity) */
|
|
141
|
+
zValue: number;
|
|
142
|
+
/** Mapped color (hex) */
|
|
143
|
+
mappedColor?: string;
|
|
144
|
+
/** X value in pixels (canvas coordinates) */
|
|
145
|
+
pixelX: number;
|
|
146
|
+
/** Y value in pixels (canvas coordinates) */
|
|
147
|
+
pixelY: number;
|
|
148
|
+
/** Color scale information if available */
|
|
149
|
+
colorScale?: {
|
|
150
|
+
name: string;
|
|
151
|
+
min: number;
|
|
152
|
+
max: number;
|
|
153
|
+
isLogScale?: boolean;
|
|
154
|
+
colors?: string[];
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Axis Tooltip - Shows values on axis hover
|
|
159
|
+
*/
|
|
160
|
+
export interface AxisTooltip {
|
|
161
|
+
type: 'axis';
|
|
162
|
+
/** Which axis */
|
|
163
|
+
axis: 'x' | 'y';
|
|
164
|
+
/** Axis ID (for multiple Y axes) */
|
|
165
|
+
axisId?: string;
|
|
166
|
+
/** Raw value */
|
|
167
|
+
value: number;
|
|
168
|
+
/** Formatted value string */
|
|
169
|
+
formattedValue: string;
|
|
170
|
+
/** Pixel position of value */
|
|
171
|
+
pixelPosition: number;
|
|
172
|
+
}
|
|
173
|
+
/** Position where tooltip arrow points */
|
|
174
|
+
export type ArrowPosition = 'top' | 'bottom' | 'left' | 'right' | 'none';
|
|
175
|
+
/** Preferred tooltip placement */
|
|
176
|
+
export type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right' | 'auto';
|
|
177
|
+
export interface TooltipPosition {
|
|
178
|
+
/** X position of tooltip (content corner) */
|
|
179
|
+
x: number;
|
|
180
|
+
/** Y position of tooltip */
|
|
181
|
+
y: number;
|
|
182
|
+
/** Where the arrow points */
|
|
183
|
+
arrowPosition: ArrowPosition;
|
|
184
|
+
/** Arrow offset from edge (pixels) */
|
|
185
|
+
arrowOffset: number;
|
|
186
|
+
/** Whether position was flipped due to constraints */
|
|
187
|
+
wasFlipped: boolean;
|
|
188
|
+
}
|
|
189
|
+
export interface TooltipMeasurement {
|
|
190
|
+
/** Content width */
|
|
191
|
+
width: number;
|
|
192
|
+
/** Content height */
|
|
193
|
+
height: number;
|
|
194
|
+
/** Padding around content */
|
|
195
|
+
padding: {
|
|
196
|
+
top: number;
|
|
197
|
+
right: number;
|
|
198
|
+
bottom: number;
|
|
199
|
+
left: number;
|
|
200
|
+
};
|
|
201
|
+
/** Arrow dimensions if applicable */
|
|
202
|
+
arrow?: {
|
|
203
|
+
width: number;
|
|
204
|
+
height: number;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
export interface TooltipTheme {
|
|
208
|
+
backgroundColor: string;
|
|
209
|
+
backgroundGradient?: string;
|
|
210
|
+
borderColor: string;
|
|
211
|
+
borderWidth: number;
|
|
212
|
+
borderRadius: number;
|
|
213
|
+
backdropBlur: number;
|
|
214
|
+
shadow: TooltipShadow;
|
|
215
|
+
fontFamily: string;
|
|
216
|
+
textColor: string;
|
|
217
|
+
textSecondaryColor: string;
|
|
218
|
+
titleFontSize: number;
|
|
219
|
+
titleFontWeight: number | string;
|
|
220
|
+
contentFontSize: number;
|
|
221
|
+
lineHeight: number;
|
|
222
|
+
padding: {
|
|
223
|
+
top: number;
|
|
224
|
+
right: number;
|
|
225
|
+
bottom: number;
|
|
226
|
+
left: number;
|
|
227
|
+
};
|
|
228
|
+
itemGap: number;
|
|
229
|
+
headerGap: number;
|
|
230
|
+
showSeriesIndicator: boolean;
|
|
231
|
+
seriesIndicatorSize: number;
|
|
232
|
+
showHeaderSeparator: boolean;
|
|
233
|
+
separatorColor: string;
|
|
234
|
+
showArrow: boolean;
|
|
235
|
+
arrowSize: number;
|
|
236
|
+
}
|
|
237
|
+
export interface TooltipShadow {
|
|
238
|
+
color: string;
|
|
239
|
+
offsetX: number;
|
|
240
|
+
offsetY: number;
|
|
241
|
+
blur: number;
|
|
242
|
+
}
|
|
243
|
+
export interface TooltipOptions {
|
|
244
|
+
/** Enable tooltips globally (default: true) */
|
|
245
|
+
enabled?: boolean;
|
|
246
|
+
/** Delay before showing tooltip (ms) */
|
|
247
|
+
showDelay?: number;
|
|
248
|
+
/** Delay before hiding tooltip (ms) */
|
|
249
|
+
hideDelay?: number;
|
|
250
|
+
/** Follow cursor or snap to data point */
|
|
251
|
+
followCursor?: boolean;
|
|
252
|
+
/** Offset from cursor/point */
|
|
253
|
+
offset?: {
|
|
254
|
+
x: number;
|
|
255
|
+
y: number;
|
|
256
|
+
};
|
|
257
|
+
dataPoint?: DataPointTooltipOptions;
|
|
258
|
+
crosshair?: CrosshairTooltipOptions;
|
|
259
|
+
range?: RangeTooltipOptions;
|
|
260
|
+
annotation?: AnnotationTooltipOptions;
|
|
261
|
+
heatmap?: HeatmapTooltipOptions;
|
|
262
|
+
positioning?: 'auto' | 'fixed' | 'follow';
|
|
263
|
+
preferredPosition?: TooltipPlacement;
|
|
264
|
+
constrainToPlotArea?: boolean;
|
|
265
|
+
constrainToContainer?: boolean;
|
|
266
|
+
autoFlip?: boolean;
|
|
267
|
+
theme?: string | Partial<TooltipTheme>;
|
|
268
|
+
/**
|
|
269
|
+
* How to find the nearest data point.
|
|
270
|
+
* - 'nearest': Full euclidean distance (accurate but slower)
|
|
271
|
+
* - 'x-only': Only match by X coordinate (fast, best for large datasets)
|
|
272
|
+
* - 'auto': Automatically choose based on dataset size
|
|
273
|
+
* Default: 'auto'
|
|
274
|
+
*/
|
|
275
|
+
snapMode?: 'nearest' | 'x-only' | 'auto';
|
|
276
|
+
/**
|
|
277
|
+
* Number of data points above which to auto-enable X-only snap mode.
|
|
278
|
+
* Default: 50000
|
|
279
|
+
*/
|
|
280
|
+
largeDatasetThreshold?: number;
|
|
281
|
+
}
|
|
282
|
+
export interface DataPointTooltipOptions {
|
|
283
|
+
enabled?: boolean;
|
|
284
|
+
templateId?: string;
|
|
285
|
+
snapToPoint?: boolean;
|
|
286
|
+
hitRadius?: number;
|
|
287
|
+
formatter?: TooltipFormatter<DataPointTooltip>;
|
|
288
|
+
}
|
|
289
|
+
export interface CrosshairTooltipOptions {
|
|
290
|
+
enabled?: boolean;
|
|
291
|
+
templateId?: string;
|
|
292
|
+
interpolate?: boolean;
|
|
293
|
+
visibleSeriesOnly?: boolean;
|
|
294
|
+
formatter?: TooltipFormatter<CrosshairTooltip>;
|
|
295
|
+
}
|
|
296
|
+
export interface RangeTooltipOptions {
|
|
297
|
+
enabled?: boolean;
|
|
298
|
+
templateId?: string;
|
|
299
|
+
calculateStats?: boolean;
|
|
300
|
+
formatter?: TooltipFormatter<RangeTooltip>;
|
|
301
|
+
}
|
|
302
|
+
export interface AnnotationTooltipOptions {
|
|
303
|
+
enabled?: boolean;
|
|
304
|
+
templateId?: string;
|
|
305
|
+
formatter?: TooltipFormatter<AnnotationTooltip>;
|
|
306
|
+
}
|
|
307
|
+
export interface HeatmapTooltipOptions {
|
|
308
|
+
enabled?: boolean;
|
|
309
|
+
templateId?: string;
|
|
310
|
+
showColorInfo?: boolean;
|
|
311
|
+
formatter?: TooltipFormatter<HeatmapTooltip>;
|
|
312
|
+
}
|
|
313
|
+
/** Custom formatter function for tooltip content */
|
|
314
|
+
export type TooltipFormatter<T extends TooltipData> = (data: T, defaultFormat: string) => string | TooltipFormattedContent;
|
|
315
|
+
export interface TooltipFormattedContent {
|
|
316
|
+
/** Title/header line */
|
|
317
|
+
title?: string;
|
|
318
|
+
/** Content lines */
|
|
319
|
+
lines: TooltipLine[];
|
|
320
|
+
/** Footer line */
|
|
321
|
+
footer?: string;
|
|
322
|
+
}
|
|
323
|
+
export interface TooltipLine {
|
|
324
|
+
/** Label (left side) */
|
|
325
|
+
label: string;
|
|
326
|
+
/** Value (right side) */
|
|
327
|
+
value: string;
|
|
328
|
+
/** Optional color indicator */
|
|
329
|
+
color?: string;
|
|
330
|
+
/** Optional icon */
|
|
331
|
+
icon?: string;
|
|
332
|
+
}
|
|
333
|
+
export interface TooltipTemplate<T extends TooltipData = TooltipData> {
|
|
334
|
+
/** Unique template ID */
|
|
335
|
+
readonly id: string;
|
|
336
|
+
/** Display name */
|
|
337
|
+
readonly name: string;
|
|
338
|
+
/** Supported tooltip types */
|
|
339
|
+
readonly supportedTypes: TooltipType[];
|
|
340
|
+
/**
|
|
341
|
+
* Measure the tooltip dimensions
|
|
342
|
+
*/
|
|
343
|
+
measure(ctx: CanvasRenderingContext2D, data: T, theme: TooltipTheme): TooltipMeasurement;
|
|
344
|
+
/**
|
|
345
|
+
* Render the tooltip to canvas
|
|
346
|
+
*/
|
|
347
|
+
render(ctx: CanvasRenderingContext2D, data: T, position: TooltipPosition, theme: TooltipTheme): void;
|
|
348
|
+
}
|
|
349
|
+
export interface TooltipEventMap {
|
|
350
|
+
/** Before tooltip shows */
|
|
351
|
+
beforeShow: TooltipShowEvent;
|
|
352
|
+
/** After tooltip shows */
|
|
353
|
+
show: TooltipVisibilityEvent;
|
|
354
|
+
/** Before tooltip hides */
|
|
355
|
+
beforeHide: TooltipHideEvent;
|
|
356
|
+
/** After tooltip hides */
|
|
357
|
+
hide: TooltipVisibilityEvent;
|
|
358
|
+
/** Tooltip data updated */
|
|
359
|
+
update: TooltipUpdateEvent;
|
|
360
|
+
/** Tooltip position changed */
|
|
361
|
+
move: TooltipMoveEvent;
|
|
362
|
+
}
|
|
363
|
+
export interface TooltipShowEvent {
|
|
364
|
+
tooltipId: string;
|
|
365
|
+
data: TooltipData;
|
|
366
|
+
position: TooltipPosition;
|
|
367
|
+
cancel: () => void;
|
|
368
|
+
}
|
|
369
|
+
export interface TooltipHideEvent {
|
|
370
|
+
tooltipId: string;
|
|
371
|
+
cancel: () => void;
|
|
372
|
+
}
|
|
373
|
+
export interface TooltipVisibilityEvent {
|
|
374
|
+
tooltipId: string;
|
|
375
|
+
}
|
|
376
|
+
export interface TooltipUpdateEvent {
|
|
377
|
+
tooltipId: string;
|
|
378
|
+
previousData: TooltipData;
|
|
379
|
+
newData: TooltipData;
|
|
380
|
+
}
|
|
381
|
+
export interface TooltipMoveEvent {
|
|
382
|
+
tooltipId: string;
|
|
383
|
+
previousPosition: TooltipPosition;
|
|
384
|
+
newPosition: TooltipPosition;
|
|
385
|
+
}
|
|
386
|
+
export interface ShowTooltipOptions {
|
|
387
|
+
/** Custom position (overrides automatic) */
|
|
388
|
+
position?: {
|
|
389
|
+
x: number;
|
|
390
|
+
y: number;
|
|
391
|
+
};
|
|
392
|
+
/** Template to use */
|
|
393
|
+
templateId?: string;
|
|
394
|
+
/** Duration before auto-hide (0 = no auto-hide) */
|
|
395
|
+
duration?: number;
|
|
396
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createChart } from './index';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Example: Basic CV Plot
|
|
5
|
+
*/
|
|
6
|
+
export declare function exampleBasicCV(): import('./index').Chart;
|
|
7
|
+
/**
|
|
8
|
+
* Example: Streaming data (real-time)
|
|
9
|
+
*/
|
|
10
|
+
export declare function exampleStreaming(): () => void;
|
|
11
|
+
/**
|
|
12
|
+
* Example: Multi-cycle CV with cycle detection
|
|
13
|
+
*/
|
|
14
|
+
export declare function exampleMultiCycle(): import('./index').Chart;
|
|
15
|
+
/**
|
|
16
|
+
* Example: Zoom controls
|
|
17
|
+
*/
|
|
18
|
+
export declare function exampleZoomControls(chart: ReturnType<typeof createChart>): void;
|
|
19
|
+
export { createChart };
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { SeriesStyle } from './seriesAdapter';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Bounds interface matching the original
|
|
5
|
+
*/
|
|
6
|
+
export interface Bounds {
|
|
7
|
+
xMin: number;
|
|
8
|
+
xMax: number;
|
|
9
|
+
yMin: number;
|
|
10
|
+
yMax: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Series render data matching NativeSeriesRenderData
|
|
14
|
+
*/
|
|
15
|
+
export interface GpuSeriesRenderData {
|
|
16
|
+
id: string;
|
|
17
|
+
type: "line" | "scatter" | "line+scatter" | "step" | "step+scatter" | "band" | "bar" | "heatmap";
|
|
18
|
+
visible: boolean;
|
|
19
|
+
style: SeriesStyle;
|
|
20
|
+
/** Y-bounds for multi-axis support */
|
|
21
|
+
yBounds?: {
|
|
22
|
+
min: number;
|
|
23
|
+
max: number;
|
|
24
|
+
};
|
|
25
|
+
/** Heatmap specific */
|
|
26
|
+
zBounds?: {
|
|
27
|
+
min: number;
|
|
28
|
+
max: number;
|
|
29
|
+
};
|
|
30
|
+
colormap?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Render options matching NativeRenderOptions
|
|
34
|
+
*/
|
|
35
|
+
export interface GpuRenderOptions {
|
|
36
|
+
bounds: Bounds;
|
|
37
|
+
backgroundColor?: [number, number, number, number];
|
|
38
|
+
plotArea?: {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Backend preference
|
|
47
|
+
*/
|
|
48
|
+
export type BackendPreference = "webgpu" | "webgl" | "auto";
|
|
49
|
+
/**
|
|
50
|
+
* GPU Renderer options
|
|
51
|
+
*/
|
|
52
|
+
export interface GpuRendererOptions {
|
|
53
|
+
backend?: BackendPreference;
|
|
54
|
+
powerPreference?: "low-power" | "high-performance";
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* GPU Renderer - Unified renderer using the GPU abstraction layer
|
|
58
|
+
*/
|
|
59
|
+
export declare class GpuRenderer {
|
|
60
|
+
private canvas;
|
|
61
|
+
private options;
|
|
62
|
+
private backend;
|
|
63
|
+
private adapter;
|
|
64
|
+
private dpr;
|
|
65
|
+
private isInitialized;
|
|
66
|
+
private backendType;
|
|
67
|
+
private bufferDataMap;
|
|
68
|
+
private stepBufferDataMap;
|
|
69
|
+
private colormapDataMap;
|
|
70
|
+
constructor(canvas: HTMLCanvasElement, options?: GpuRendererOptions);
|
|
71
|
+
/**
|
|
72
|
+
* Initialize the renderer
|
|
73
|
+
*/
|
|
74
|
+
init(): Promise<boolean>;
|
|
75
|
+
/**
|
|
76
|
+
* Check if renderer is available
|
|
77
|
+
*/
|
|
78
|
+
get available(): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Get the active backend type
|
|
81
|
+
*/
|
|
82
|
+
get activeBackend(): "webgpu" | "webgl" | null;
|
|
83
|
+
/**
|
|
84
|
+
* Set device pixel ratio
|
|
85
|
+
*/
|
|
86
|
+
setDPR(dpr: number): void;
|
|
87
|
+
/**
|
|
88
|
+
* Create or update a buffer
|
|
89
|
+
*/
|
|
90
|
+
createBuffer(id: string, data: Float32Array): void;
|
|
91
|
+
/**
|
|
92
|
+
* Update a buffer partially
|
|
93
|
+
*/
|
|
94
|
+
updateBuffer(id: string, data: Float32Array, offsetInBytes: number): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Get a buffer's data
|
|
97
|
+
*/
|
|
98
|
+
getBuffer(id: string): Float32Array | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Delete a buffer
|
|
101
|
+
*/
|
|
102
|
+
deleteBuffer(id: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* Create or update a step buffer
|
|
105
|
+
*/
|
|
106
|
+
createStepBuffer(id: string, data: Float32Array): void;
|
|
107
|
+
/**
|
|
108
|
+
* Create colormap texture
|
|
109
|
+
*/
|
|
110
|
+
createColormapTexture(id: string, data: Uint8Array): void;
|
|
111
|
+
/**
|
|
112
|
+
* Render a frame
|
|
113
|
+
*/
|
|
114
|
+
render(series: GpuSeriesRenderData[], options: GpuRenderOptions): void;
|
|
115
|
+
/**
|
|
116
|
+
* Build draw list from series data
|
|
117
|
+
*/
|
|
118
|
+
private buildDrawList;
|
|
119
|
+
/**
|
|
120
|
+
* Handle canvas resize
|
|
121
|
+
*/
|
|
122
|
+
resize(): void;
|
|
123
|
+
/**
|
|
124
|
+
* Get renderer limits
|
|
125
|
+
*/
|
|
126
|
+
getLimits(): Record<string, unknown>;
|
|
127
|
+
/**
|
|
128
|
+
* Destroy the renderer
|
|
129
|
+
*/
|
|
130
|
+
destroy(): void;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create a GPU renderer (async)
|
|
134
|
+
*/
|
|
135
|
+
export declare function createGpuRenderer(canvas: HTMLCanvasElement, options?: GpuRendererOptions): Promise<GpuRenderer | null>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter Index - Export all adapter utilities
|
|
3
|
+
*/
|
|
4
|
+
export { SeriesAdapter, parseColorToRGBA, } from './seriesAdapter';
|
|
5
|
+
export type { SeriesData, SeriesStyle, } from './seriesAdapter';
|
|
6
|
+
export { GpuRenderer, createGpuRenderer, } from './gpuRenderer';
|
|
7
|
+
export type { Bounds, GpuSeriesRenderData, GpuRenderOptions, BackendPreference, GpuRendererOptions, } from './gpuRenderer';
|