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.
Files changed (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/dist/analysis/contours.d.ts +20 -0
  4. package/dist/analysis/fitting.d.ts +24 -0
  5. package/dist/analysis/index.d.ts +12 -0
  6. package/dist/analysis/math.d.ts +32 -0
  7. package/dist/analysis/utils.d.ts +150 -0
  8. package/dist/core/Chart.d.ts +15 -0
  9. package/dist/core/ChartControls.d.ts +30 -0
  10. package/dist/core/ChartLegend.d.ts +35 -0
  11. package/dist/core/ChartStatistics.d.ts +18 -0
  12. package/dist/core/EventEmitter.d.ts +30 -0
  13. package/dist/core/InteractionManager.d.ts +67 -0
  14. package/dist/core/OverlayRenderer.d.ts +67 -0
  15. package/dist/core/Series.d.ts +4 -0
  16. package/dist/core/annotations/AnnotationManager.d.ts +57 -0
  17. package/dist/core/annotations/index.d.ts +5 -0
  18. package/dist/core/annotations/types.d.ts +157 -0
  19. package/dist/core/chart/ChartCore.d.ts +103 -0
  20. package/dist/core/chart/ChartExporter.d.ts +18 -0
  21. package/dist/core/chart/ChartNavigation.d.ts +33 -0
  22. package/dist/core/chart/ChartRenderer.d.ts +53 -0
  23. package/dist/core/chart/ChartScaling.d.ts +26 -0
  24. package/dist/core/chart/ChartSeries.d.ts +4 -0
  25. package/dist/core/chart/ChartSetup.d.ts +64 -0
  26. package/dist/core/chart/ChartUI.d.ts +22 -0
  27. package/dist/core/chart/exporter/SVGExporter.d.ts +6 -0
  28. package/dist/core/chart/exporter/index.d.ts +5 -0
  29. package/dist/core/chart/index.d.ts +14 -0
  30. package/dist/core/chart/plugins/PluginManager.d.ts +13 -0
  31. package/dist/core/chart/plugins/types.d.ts +13 -0
  32. package/dist/core/chart/series/SeriesActions.d.ts +7 -0
  33. package/dist/core/chart/series/SeriesBuffer.d.ts +4 -0
  34. package/dist/core/chart/series/SeriesFit.d.ts +3 -0
  35. package/dist/core/chart/series/index.d.ts +7 -0
  36. package/dist/core/chart/series/types.d.ts +22 -0
  37. package/dist/core/chart/types.d.ts +72 -0
  38. package/dist/core/index.d.ts +9 -0
  39. package/dist/core/series/Series.d.ts +52 -0
  40. package/dist/core/series/SeriesBounds.d.ts +3 -0
  41. package/dist/core/series/SeriesDataUtils.d.ts +7 -0
  42. package/dist/core/series/index.d.ts +6 -0
  43. package/dist/core/tooltip/TooltipManager.d.ts +203 -0
  44. package/dist/core/tooltip/TooltipPositioner.d.ts +83 -0
  45. package/dist/core/tooltip/TooltipRenderer.d.ts +64 -0
  46. package/dist/core/tooltip/index.d.ts +18 -0
  47. package/dist/core/tooltip/templates/AnnotationTemplate.d.ts +18 -0
  48. package/dist/core/tooltip/templates/CrosshairTemplate.d.ts +30 -0
  49. package/dist/core/tooltip/templates/DefaultTemplate.d.ts +30 -0
  50. package/dist/core/tooltip/templates/HeatmapTemplate.d.ts +34 -0
  51. package/dist/core/tooltip/templates/MinimalTemplate.d.ts +26 -0
  52. package/dist/core/tooltip/templates/RangeTemplate.d.ts +18 -0
  53. package/dist/core/tooltip/templates/ScientificTemplate.d.ts +34 -0
  54. package/dist/core/tooltip/templates/index.d.ts +27 -0
  55. package/dist/core/tooltip/themes.d.ts +48 -0
  56. package/dist/core/tooltip/types.d.ts +396 -0
  57. package/dist/examples.d.ts +19 -0
  58. package/dist/gpu/adapter/gpuRenderer.d.ts +135 -0
  59. package/dist/gpu/adapter/index.d.ts +7 -0
  60. package/dist/gpu/adapter/seriesAdapter.d.ts +88 -0
  61. package/dist/gpu/backends/webgl/WebGLBackend.d.ts +42 -0
  62. package/dist/gpu/backends/webgl/index.d.ts +5 -0
  63. package/dist/gpu/backends/webgl/programFactory.d.ts +30 -0
  64. package/dist/gpu/backends/webgl/shaders.d.ts +14 -0
  65. package/dist/gpu/backends/webgpu/MassiveDataRenderer.d.ts +111 -0
  66. package/dist/gpu/backends/webgpu/WebGPUBackend.d.ts +58 -0
  67. package/dist/gpu/backends/webgpu/pipelines/bandPipeline.d.ts +24 -0
  68. package/dist/gpu/backends/webgpu/pipelines/heatmapPipeline.d.ts +28 -0
  69. package/dist/gpu/backends/webgpu/pipelines/index.d.ts +10 -0
  70. package/dist/gpu/backends/webgpu/pipelines/instancedLinePipeline.d.ts +23 -0
  71. package/dist/gpu/backends/webgpu/pipelines/instancedPointPipeline.d.ts +25 -0
  72. package/dist/gpu/backends/webgpu/pipelines/linePipeline.d.ts +23 -0
  73. package/dist/gpu/backends/webgpu/pipelines/pointPipeline.d.ts +28 -0
  74. package/dist/gpu/backends/webgpu/pipelines/trianglePipeline.d.ts +5 -0
  75. package/dist/gpu/backends/webgpu/pipelines/triangleShader.d.ts +1 -0
  76. package/dist/gpu/backends/webgpu/shaders/heatmap.wgsl.d.ts +8 -0
  77. package/dist/gpu/backends/webgpu/shaders/index.d.ts +8 -0
  78. package/dist/gpu/backends/webgpu/shaders/instanced.wgsl.d.ts +16 -0
  79. package/dist/gpu/backends/webgpu/shaders/line.wgsl.d.ts +8 -0
  80. package/dist/gpu/backends/webgpu/shaders/point.wgsl.d.ts +9 -0
  81. package/dist/gpu/benchmark/benchmark.d.ts +74 -0
  82. package/dist/gpu/benchmark/index.d.ts +5 -0
  83. package/dist/gpu/compute/gpuCompute.d.ts +72 -0
  84. package/dist/gpu/compute/index.d.ts +6 -0
  85. package/dist/gpu/compute/shaders.d.ts +9 -0
  86. package/dist/gpu/drawList.d.ts +77 -0
  87. package/dist/gpu/examples/gallery.d.ts +20 -0
  88. package/dist/gpu/examples/index.d.ts +3 -0
  89. package/dist/gpu/examples/webgpu-line-demo.d.ts +8 -0
  90. package/dist/gpu/examples/webgpu-triangle.d.ts +1 -0
  91. package/dist/gpu/frame.d.ts +25 -0
  92. package/dist/gpu/index.d.ts +24 -0
  93. package/dist/gpu/resources/bufferStore.d.ts +40 -0
  94. package/dist/gpu/resources/index.d.ts +9 -0
  95. package/dist/gpu/resources/pipelineCache.d.ts +33 -0
  96. package/dist/gpu/resources/textureStore.d.ts +41 -0
  97. package/dist/gpu/types.d.ts +47 -0
  98. package/dist/index.d.ts +34 -0
  99. package/dist/overlay/CanvasOverlay.d.ts +102 -0
  100. package/dist/overlay/index.d.ts +4 -0
  101. package/dist/react/SciChart.d.ts +60 -0
  102. package/dist/react/index.d.ts +5 -0
  103. package/dist/react/useSciChart.d.ts +56 -0
  104. package/dist/renderer/BarRenderer.d.ts +14 -0
  105. package/dist/renderer/CandlestickRenderer.d.ts +12 -0
  106. package/dist/renderer/HeatmapRenderer.d.ts +15 -0
  107. package/dist/renderer/NativeWebGLRenderer.d.ts +16 -0
  108. package/dist/renderer/RendererInterface.d.ts +70 -0
  109. package/dist/renderer/WebGPURenderer.d.ts +16 -0
  110. package/dist/renderer/index.d.ts +10 -0
  111. package/dist/renderer/native/NativeWebGLRenderer.d.ts +30 -0
  112. package/dist/renderer/native/bufferStore.d.ts +11 -0
  113. package/dist/renderer/native/draw.d.ts +31 -0
  114. package/dist/renderer/native/programFactory.d.ts +3 -0
  115. package/dist/renderer/native/renderFrame.d.ts +3 -0
  116. package/dist/renderer/native/shaderSources.d.ts +6 -0
  117. package/dist/renderer/native/textureStore.d.ts +8 -0
  118. package/dist/renderer/native/types.d.ts +58 -0
  119. package/dist/renderer/native/utils.d.ts +4 -0
  120. package/dist/renderer/shaders.d.ts +77 -0
  121. package/dist/scales/index.d.ts +54 -0
  122. package/dist/scichart-engine.es.js +8408 -0
  123. package/dist/scichart-engine.es.js.map +1 -0
  124. package/dist/scichart-engine.umd.js +871 -0
  125. package/dist/scichart-engine.umd.js.map +1 -0
  126. package/dist/streaming/index.d.ts +7 -0
  127. package/dist/streaming/mock.d.ts +12 -0
  128. package/dist/streaming/types.d.ts +57 -0
  129. package/dist/streaming/utils.d.ts +19 -0
  130. package/dist/streaming/websocket.d.ts +6 -0
  131. package/dist/theme/index.d.ts +123 -0
  132. package/dist/types.d.ts +333 -0
  133. package/dist/workers/downsample.d.ts +34 -0
  134. package/dist/workers/downsample.worker.d.ts +46 -0
  135. 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';