chartgpu 0.2.2 → 0.2.4

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 (80) hide show
  1. package/README.md +38 -11
  2. package/dist/ChartGPU.d.ts +23 -6
  3. package/dist/ChartGPU.d.ts.map +1 -1
  4. package/dist/config/OptionResolver.d.ts.map +1 -1
  5. package/dist/config/types.d.ts +26 -1
  6. package/dist/config/types.d.ts.map +1 -1
  7. package/dist/core/GPUContext.d.ts +2 -2
  8. package/dist/core/GPUContext.d.ts.map +1 -1
  9. package/dist/core/createRenderCoordinator.d.ts +3 -2
  10. package/dist/core/createRenderCoordinator.d.ts.map +1 -1
  11. package/dist/core/renderCoordinator/animation/animationHelpers.d.ts +183 -0
  12. package/dist/core/renderCoordinator/animation/animationHelpers.d.ts.map +1 -0
  13. package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts +88 -0
  14. package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts.map +1 -0
  15. package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts +91 -0
  16. package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts.map +1 -0
  17. package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts +53 -0
  18. package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts.map +1 -0
  19. package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts +66 -0
  20. package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts.map +1 -0
  21. package/dist/core/renderCoordinator/gpu/textureManager.d.ts +69 -0
  22. package/dist/core/renderCoordinator/gpu/textureManager.d.ts.map +1 -0
  23. package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts +160 -0
  24. package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts.map +1 -0
  25. package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts +36 -0
  26. package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts.map +1 -0
  27. package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts +40 -0
  28. package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts.map +1 -0
  29. package/dist/core/renderCoordinator/render/renderOverlays.d.ts +70 -0
  30. package/dist/core/renderCoordinator/render/renderOverlays.d.ts.map +1 -0
  31. package/dist/core/renderCoordinator/render/renderSeries.d.ts +146 -0
  32. package/dist/core/renderCoordinator/render/renderSeries.d.ts.map +1 -0
  33. package/dist/core/renderCoordinator/renderers/rendererPool.d.ts +112 -0
  34. package/dist/core/renderCoordinator/renderers/rendererPool.d.ts.map +1 -0
  35. package/dist/core/renderCoordinator/types.d.ts +19 -0
  36. package/dist/core/renderCoordinator/types.d.ts.map +1 -0
  37. package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts +104 -0
  38. package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts.map +1 -0
  39. package/dist/core/renderCoordinator/utils/axisUtils.d.ts +122 -0
  40. package/dist/core/renderCoordinator/utils/axisUtils.d.ts.map +1 -0
  41. package/dist/core/renderCoordinator/utils/boundsComputation.d.ts +69 -0
  42. package/dist/core/renderCoordinator/utils/boundsComputation.d.ts.map +1 -0
  43. package/dist/core/renderCoordinator/utils/canvasUtils.d.ts +52 -0
  44. package/dist/core/renderCoordinator/utils/canvasUtils.d.ts.map +1 -0
  45. package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts +71 -0
  46. package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts.map +1 -0
  47. package/dist/core/renderCoordinator/utils/index.d.ts +12 -0
  48. package/dist/core/renderCoordinator/utils/index.d.ts.map +1 -0
  49. package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts +149 -0
  50. package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts.map +1 -0
  51. package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts +129 -0
  52. package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts.map +1 -0
  53. package/dist/data/cartesianData.d.ts +67 -0
  54. package/dist/data/cartesianData.d.ts.map +1 -0
  55. package/dist/data/createDataStore.d.ts +4 -12
  56. package/dist/data/createDataStore.d.ts.map +1 -1
  57. package/dist/data/sampleSeries.d.ts +19 -2
  58. package/dist/data/sampleSeries.d.ts.map +1 -1
  59. package/dist/index.cjs +1270 -0
  60. package/dist/index.cjs.map +1 -0
  61. package/dist/index.d.ts +2 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +6068 -5643
  64. package/dist/index.js.map +1 -1
  65. package/dist/interaction/createAnnotationAuthoring.d.ts.map +1 -1
  66. package/dist/interaction/createAnnotationDragHandler.d.ts.map +1 -1
  67. package/dist/interaction/createAnnotationHitTester.d.ts.map +1 -1
  68. package/dist/interaction/createChartSync.d.ts +17 -2
  69. package/dist/interaction/createChartSync.d.ts.map +1 -1
  70. package/dist/interaction/findNearestPoint.d.ts.map +1 -1
  71. package/dist/interaction/findPointsAtX.d.ts.map +1 -1
  72. package/dist/renderers/createAreaRenderer.d.ts +2 -1
  73. package/dist/renderers/createAreaRenderer.d.ts.map +1 -1
  74. package/dist/renderers/createBarRenderer.d.ts.map +1 -1
  75. package/dist/renderers/createHighlightRenderer.d.ts +1 -1
  76. package/dist/renderers/createHighlightRenderer.d.ts.map +1 -1
  77. package/dist/renderers/createLineRenderer.d.ts.map +1 -1
  78. package/dist/renderers/createScatterRenderer.d.ts +2 -1
  79. package/dist/renderers/createScatterRenderer.d.ts.map +1 -1
  80. package/package.json +5 -3
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Overlay Rendering Utilities
3
+ *
4
+ * Prepares and renders GPU-based chart overlays (grid, axes, crosshair, highlight).
5
+ * These overlays are rendered on top of the main chart series.
6
+ *
7
+ * @module renderOverlays
8
+ */
9
+ import type { ResolvedChartGPUOptions } from '../../../config/OptionResolver';
10
+ import type { LinearScale } from '../../../utils/scales';
11
+ import type { GridRenderer } from '../../../renderers/createGridRenderer';
12
+ import type { AxisRenderer } from '../../../renderers/createAxisRenderer';
13
+ import type { CrosshairRenderer } from '../../../renderers/createCrosshairRenderer';
14
+ import type { HighlightRenderer } from '../../../renderers/createHighlightRenderer';
15
+ import type { GridArea } from '../../../renderers/createGridRenderer';
16
+ export interface OverlayRenderers {
17
+ gridRenderer: GridRenderer;
18
+ xAxisRenderer: AxisRenderer;
19
+ yAxisRenderer: AxisRenderer;
20
+ crosshairRenderer: CrosshairRenderer;
21
+ highlightRenderer: HighlightRenderer;
22
+ }
23
+ export interface OverlayPrepareContext {
24
+ currentOptions: ResolvedChartGPUOptions;
25
+ xScale: LinearScale;
26
+ yScale: LinearScale;
27
+ gridArea: GridArea;
28
+ xTickCount: number;
29
+ hasCartesianSeries: boolean;
30
+ effectivePointer: {
31
+ hasPointer: boolean;
32
+ isInGrid: boolean;
33
+ source: 'mouse' | 'sync';
34
+ x: number;
35
+ y: number;
36
+ gridX: number;
37
+ gridY: number;
38
+ };
39
+ interactionScales: {
40
+ xScale: LinearScale;
41
+ yScale: LinearScale;
42
+ } | null;
43
+ seriesForRender: ReadonlyArray<any>;
44
+ withAlpha: (color: string, alpha: number) => string;
45
+ }
46
+ export interface OverlayRenderContext {
47
+ mainPass: GPURenderPassEncoder;
48
+ topOverlayPass: GPURenderPassEncoder;
49
+ hasCartesianSeries: boolean;
50
+ }
51
+ /**
52
+ * Prepares all overlay renderers with current frame data.
53
+ *
54
+ * This includes grid lines, axes, crosshair, and point highlights.
55
+ *
56
+ * @param renderers - Overlay renderer instances
57
+ * @param context - Rendering context with scales, options, and pointer state
58
+ */
59
+ export declare function prepareOverlays(renderers: OverlayRenderers, context: OverlayPrepareContext): void;
60
+ /**
61
+ * Renders all overlay elements to the appropriate render passes.
62
+ *
63
+ * Grid is rendered in the main pass (background).
64
+ * Highlight, axes, and crosshair are rendered in the top overlay pass (foreground).
65
+ *
66
+ * @param renderers - Overlay renderer instances
67
+ * @param context - Render pass context
68
+ */
69
+ export declare function renderOverlays(renderers: OverlayRenderers, context: OverlayRenderContext): void;
70
+ //# sourceMappingURL=renderOverlays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderOverlays.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/render/renderOverlays.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,4CAA4C,CAAC;AAC5G,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,4CAA4C,CAAC;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAStE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY,CAAC;IAC5B,aAAa,EAAE,YAAY,CAAC;IAC5B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,uBAAuB,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;QACzB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,iBAAiB,EAAE;QACjB,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,WAAW,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACrD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,oBAAoB,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAoGjG;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAe/F"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Series Rendering Utilities
3
+ *
4
+ * Prepares and renders all chart series types (area, line, bar, scatter, candlestick, pie).
5
+ * Handles intro animations, GPU buffer management, and multi-pass rendering with proper layering.
6
+ *
7
+ * @module renderSeries
8
+ */
9
+ import type { ResolvedChartGPUOptions, ResolvedSeriesConfig, ResolvedBarSeriesConfig } from '../../../config/OptionResolver';
10
+ import type { LinearScale } from '../../../utils/scales';
11
+ import type { GridArea } from '../../../renderers/createGridRenderer';
12
+ import type { LineRenderer } from '../../../renderers/createLineRenderer';
13
+ import type { AreaRenderer } from '../../../renderers/createAreaRenderer';
14
+ import type { BarRenderer } from '../../../renderers/createBarRenderer';
15
+ import type { ScatterRenderer } from '../../../renderers/createScatterRenderer';
16
+ import type { ScatterDensityRenderer } from '../../../renderers/createScatterDensityRenderer';
17
+ import type { PieRenderer } from '../../../renderers/createPieRenderer';
18
+ import type { CandlestickRenderer } from '../../../renderers/createCandlestickRenderer';
19
+ import type { ReferenceLineRenderer } from '../../../renderers/createReferenceLineRenderer';
20
+ import type { AnnotationMarkerRenderer } from '../../../renderers/createAnnotationMarkerRenderer';
21
+ import type { DataStore } from '../../../data/createDataStore';
22
+ export interface SeriesRenderers {
23
+ lineRenderers: LineRenderer[];
24
+ areaRenderers: AreaRenderer[];
25
+ barRenderer: BarRenderer;
26
+ scatterRenderers: ScatterRenderer[];
27
+ scatterDensityRenderers: ScatterDensityRenderer[];
28
+ pieRenderers: PieRenderer[];
29
+ candlestickRenderers: CandlestickRenderer[];
30
+ }
31
+ export interface AnnotationRenderers {
32
+ referenceLineRenderer: ReferenceLineRenderer;
33
+ referenceLineRendererMsaa: ReferenceLineRenderer;
34
+ annotationMarkerRenderer: AnnotationMarkerRenderer;
35
+ annotationMarkerRendererMsaa: AnnotationMarkerRenderer;
36
+ }
37
+ export interface SeriesPrepareContext {
38
+ currentOptions: ResolvedChartGPUOptions;
39
+ seriesForRender: ReadonlyArray<ResolvedSeriesConfig>;
40
+ xScale: LinearScale;
41
+ yScale: LinearScale;
42
+ gridArea: GridArea;
43
+ dataStore: DataStore;
44
+ appendedGpuThisFrame: Set<number>;
45
+ gpuSeriesKindByIndex: Array<'fullRawLine' | 'other' | 'unknown'>;
46
+ zoomState: {
47
+ getRange(): {
48
+ start: number;
49
+ end: number;
50
+ } | null;
51
+ } | null;
52
+ visibleXDomain: {
53
+ min: number;
54
+ max: number;
55
+ };
56
+ introPhase: 'pending' | 'running' | 'done';
57
+ introProgress01: number;
58
+ withAlpha: (color: string, alpha: number) => string;
59
+ maxRadiusCss: number;
60
+ }
61
+ export interface SeriesRenderContext {
62
+ hasCartesianSeries: boolean;
63
+ gridArea: GridArea;
64
+ mainPass: GPURenderPassEncoder;
65
+ plotScissor: {
66
+ x: number;
67
+ y: number;
68
+ w: number;
69
+ h: number;
70
+ };
71
+ introPhase: 'pending' | 'running' | 'done';
72
+ introProgress01: number;
73
+ referenceLineBelowCount: number;
74
+ markerBelowCount: number;
75
+ }
76
+ export interface AboveSeriesAnnotationContext {
77
+ hasCartesianSeries: boolean;
78
+ gridArea: GridArea;
79
+ overlayPass: GPURenderPassEncoder;
80
+ plotScissor: {
81
+ x: number;
82
+ y: number;
83
+ w: number;
84
+ h: number;
85
+ };
86
+ referenceLineBelowCount: number;
87
+ referenceLineAboveCount: number;
88
+ markerBelowCount: number;
89
+ markerAboveCount: number;
90
+ }
91
+ export interface SeriesPreparationResult {
92
+ visibleSeriesForRender: ReadonlyArray<{
93
+ series: ResolvedSeriesConfig;
94
+ originalIndex: number;
95
+ }>;
96
+ barSeriesConfigs: ResolvedBarSeriesConfig[];
97
+ visibleBarSeriesConfigs: ResolvedBarSeriesConfig[];
98
+ }
99
+ /**
100
+ * Prepares all series renderers with current frame data.
101
+ *
102
+ * This loop prepares ALL series (including hidden) to maintain correct renderer indices.
103
+ * Visibility filtering happens after preparation for rendering.
104
+ *
105
+ * @param renderers - Series renderer instances
106
+ * @param context - Preparation context with scales, options, and state
107
+ * @returns Preparation result with visibility-filtered series arrays
108
+ */
109
+ export declare function prepareSeries(renderers: SeriesRenderers, context: SeriesPrepareContext): SeriesPreparationResult;
110
+ /**
111
+ * Encodes scatter density compute passes before rendering.
112
+ *
113
+ * Must be called before beginRenderPass() for the main pass.
114
+ *
115
+ * @param renderers - Series renderer instances
116
+ * @param seriesForRender - All series configurations
117
+ * @param encoder - Command encoder for compute passes
118
+ */
119
+ export declare function encodeScatterDensityCompute(renderers: SeriesRenderers, seriesForRender: ReadonlyArray<ResolvedSeriesConfig>, encoder: GPUCommandEncoder): void;
120
+ /**
121
+ * Renders all series to the main render pass with proper layering.
122
+ *
123
+ * Render order (from back to front):
124
+ * 1. Pies (non-cartesian, behind cartesian series)
125
+ * 2. Annotations below series (reference lines, markers)
126
+ * 3. Area fills
127
+ * 4. Bars
128
+ * 5. Candlesticks
129
+ * 6. Scatter points
130
+ * 7. Line strokes
131
+ *
132
+ * @param renderers - Series renderer instances
133
+ * @param annotationRenderers - Annotation renderer instances
134
+ * @param context - Render pass context with pass encoders and state
135
+ */
136
+ export declare function renderSeries(renderers: SeriesRenderers, annotationRenderers: AnnotationRenderers, context: SeriesRenderContext, prepResult: SeriesPreparationResult): void;
137
+ /**
138
+ * Renders above-series annotations to the MSAA overlay pass.
139
+ *
140
+ * Must be called during the MSAA overlay pass (after blit).
141
+ *
142
+ * @param annotationRenderers - Annotation renderer instances
143
+ * @param context - Render pass context with overlay pass and state
144
+ */
145
+ export declare function renderAboveSeriesAnnotations(annotationRenderers: AnnotationRenderers, context: AboveSeriesAnnotationContext): void;
146
+ //# sourceMappingURL=renderSeries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderSeries.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/render/renderSeries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Renderer pool management for the RenderCoordinator.
3
+ *
4
+ * Manages dynamic arrays of chart renderers with lazy instantiation and proper disposal.
5
+ * Each chart type (line, area, scatter, etc.) maintains a pool of renderer instances
6
+ * that grows/shrinks based on the number of series.
7
+ *
8
+ * @module rendererPool
9
+ */
10
+ import { createAreaRenderer } from '../../../renderers/createAreaRenderer';
11
+ import { createLineRenderer } from '../../../renderers/createLineRenderer';
12
+ import { createScatterRenderer } from '../../../renderers/createScatterRenderer';
13
+ import { createScatterDensityRenderer } from '../../../renderers/createScatterDensityRenderer';
14
+ import { createPieRenderer } from '../../../renderers/createPieRenderer';
15
+ import { createCandlestickRenderer } from '../../../renderers/createCandlestickRenderer';
16
+ import { createBarRenderer } from '../../../renderers/createBarRenderer';
17
+ /**
18
+ * Configuration for renderer pool creation.
19
+ */
20
+ export interface RendererPoolConfig {
21
+ readonly device: GPUDevice;
22
+ readonly targetFormat: GPUTextureFormat;
23
+ }
24
+ /**
25
+ * Renderer pool state exposed to the render coordinator.
26
+ */
27
+ export interface RendererPoolState {
28
+ readonly areaRenderers: ReadonlyArray<ReturnType<typeof createAreaRenderer>>;
29
+ readonly lineRenderers: ReadonlyArray<ReturnType<typeof createLineRenderer>>;
30
+ readonly scatterRenderers: ReadonlyArray<ReturnType<typeof createScatterRenderer>>;
31
+ readonly scatterDensityRenderers: ReadonlyArray<ReturnType<typeof createScatterDensityRenderer>>;
32
+ readonly pieRenderers: ReadonlyArray<ReturnType<typeof createPieRenderer>>;
33
+ readonly candlestickRenderers: ReadonlyArray<ReturnType<typeof createCandlestickRenderer>>;
34
+ readonly barRenderer: ReturnType<typeof createBarRenderer>;
35
+ }
36
+ /**
37
+ * Renderer pool interface returned by factory function.
38
+ */
39
+ export interface RendererPool {
40
+ /**
41
+ * Ensures area renderer count matches the given count.
42
+ * Grows or shrinks the pool as needed, disposing excess renderers.
43
+ *
44
+ * @param count - Desired number of area renderers
45
+ */
46
+ ensureAreaRendererCount(count: number): void;
47
+ /**
48
+ * Ensures line renderer count matches the given count.
49
+ * Grows or shrinks the pool as needed, disposing excess renderers.
50
+ *
51
+ * @param count - Desired number of line renderers
52
+ */
53
+ ensureLineRendererCount(count: number): void;
54
+ /**
55
+ * Ensures scatter renderer count matches the given count.
56
+ * Grows or shrinks the pool as needed, disposing excess renderers.
57
+ *
58
+ * @param count - Desired number of scatter renderers
59
+ */
60
+ ensureScatterRendererCount(count: number): void;
61
+ /**
62
+ * Ensures scatter density renderer count matches the given count.
63
+ * Grows or shrinks the pool as needed, disposing excess renderers.
64
+ *
65
+ * @param count - Desired number of scatter density renderers
66
+ */
67
+ ensureScatterDensityRendererCount(count: number): void;
68
+ /**
69
+ * Ensures pie renderer count matches the given count.
70
+ * Grows or shrinks the pool as needed, disposing excess renderers.
71
+ *
72
+ * @param count - Desired number of pie renderers
73
+ */
74
+ ensurePieRendererCount(count: number): void;
75
+ /**
76
+ * Ensures candlestick renderer count matches the given count.
77
+ * Grows or shrinks the pool as needed, disposing excess renderers.
78
+ *
79
+ * @param count - Desired number of candlestick renderers
80
+ */
81
+ ensureCandlestickRendererCount(count: number): void;
82
+ /**
83
+ * Gets current renderer pool state for rendering.
84
+ * Returns readonly arrays to prevent external mutation.
85
+ *
86
+ * @returns Current state with all renderer arrays
87
+ */
88
+ getState(): RendererPoolState;
89
+ /**
90
+ * Disposes all renderers in the pool.
91
+ * Clears all arrays and destroys GPU resources.
92
+ */
93
+ dispose(): void;
94
+ }
95
+ /**
96
+ * Creates a renderer pool for dynamic renderer management.
97
+ *
98
+ * The renderer pool uses lazy instantiation: renderers are only created when
99
+ * the pool grows, and are disposed when the pool shrinks. This allows the
100
+ * render coordinator to efficiently handle varying numbers of series.
101
+ *
102
+ * **Architecture:**
103
+ * - Each chart type has a dedicated renderer array
104
+ * - Bar renderer is a singleton (not pooled)
105
+ * - Renderers are disposed when removed from the pool
106
+ * - Arrays are cleared to release references
107
+ *
108
+ * @param config - Configuration with device and target format
109
+ * @returns Renderer pool instance
110
+ */
111
+ export declare function createRendererPool(config: RendererPoolConfig): RendererPool;
112
+ //# sourceMappingURL=rendererPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendererPool.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/renderers/rendererPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,uBAAuB,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC;IACjG,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,oBAAoB,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC;IAC3F,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhD;;;;;OAKG;IACH,iCAAiC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvD;;;;;OAKG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C;;;;;OAKG;IACH,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD;;;;;OAKG;IACH,QAAQ,IAAI,iBAAiB,CAAC;IAE9B;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CA+K3E"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared types for the RenderCoordinator modules.
3
+ *
4
+ * @module types
5
+ */
6
+ /**
7
+ * Minimal GPUContext interface required by RenderCoordinator utilities.
8
+ * This interface allows the render coordinator to work with any object
9
+ * that provides WebGPU context properties, not just the full GPUContext class.
10
+ */
11
+ export interface GPUContextLike {
12
+ readonly device: GPUDevice | null;
13
+ readonly canvas: HTMLCanvasElement | null;
14
+ readonly canvasContext: GPUCanvasContext | null;
15
+ readonly preferredFormat: GPUTextureFormat | null;
16
+ readonly initialized: boolean;
17
+ readonly devicePixelRatio?: number;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/renderCoordinator/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Tooltip and legend helper utilities.
3
+ *
4
+ * Provides utilities for managing tooltip state, caching content to avoid
5
+ * unnecessary DOM updates, and computing tooltip anchor positions for special
6
+ * chart types like candlesticks.
7
+ *
8
+ * @module tooltipLegendHelpers
9
+ */
10
+ import type { OHLCDataPoint } from '../../../config/types';
11
+ import type { LinearScale } from '../../../utils/scales';
12
+ /**
13
+ * Tooltip anchor position in canvas-local CSS pixels.
14
+ */
15
+ export interface TooltipAnchor {
16
+ readonly x: number;
17
+ readonly y: number;
18
+ }
19
+ /**
20
+ * Cached tooltip state for content deduplication.
21
+ *
22
+ * Tracks the last displayed content and position to avoid unnecessary DOM updates
23
+ * when the tooltip hasn't actually changed.
24
+ */
25
+ export interface TooltipCache {
26
+ content: string | null;
27
+ x: number | null;
28
+ y: number | null;
29
+ }
30
+ /**
31
+ * Creates a new empty tooltip cache.
32
+ *
33
+ * @returns Fresh tooltip cache with null values
34
+ */
35
+ export declare function createTooltipCache(): TooltipCache;
36
+ /**
37
+ * Checks if tooltip content or position has changed.
38
+ *
39
+ * Returns true if any of the values differ from the cache, indicating that
40
+ * a DOM update is needed.
41
+ *
42
+ * @param cache - Current cached state
43
+ * @param content - New content to display
44
+ * @param x - New X position in CSS pixels
45
+ * @param y - New Y position in CSS pixels
46
+ * @returns True if update is needed (values differ from cache)
47
+ */
48
+ export declare function shouldUpdateTooltip(cache: TooltipCache, content: string, x: number, y: number): boolean;
49
+ /**
50
+ * Updates the tooltip cache with new values.
51
+ *
52
+ * Should be called after successfully updating the DOM to keep cache in sync.
53
+ *
54
+ * @param cache - Tooltip cache to update (mutated)
55
+ * @param content - New content that was displayed
56
+ * @param x - New X position that was set
57
+ * @param y - New Y position that was set
58
+ */
59
+ export declare function updateTooltipCache(cache: TooltipCache, content: string, x: number, y: number): void;
60
+ /**
61
+ * Clears the tooltip cache.
62
+ *
63
+ * Should be called when the tooltip is hidden to ensure fresh state
64
+ * when it's shown again.
65
+ *
66
+ * @param cache - Tooltip cache to clear (mutated)
67
+ */
68
+ export declare function clearTooltipCache(cache: TooltipCache): void;
69
+ /**
70
+ * Computes container-local CSS pixel anchor coordinates for a candlestick tooltip.
71
+ *
72
+ * The anchor is positioned near the candle body center for stable tooltip positioning
73
+ * even when the cursor is at the edge of the candlestick.
74
+ *
75
+ * Coordinate transformations:
76
+ * 1. Extract O/H/L/C from data point (tuple: [timestamp, open, close, low, high])
77
+ * 2. Compute body center Y = (open + close) / 2
78
+ * 3. Transform to clip space via scales
79
+ * 4. Convert clip space to canvas-local CSS pixels
80
+ * 5. Add container offset for absolute positioning
81
+ *
82
+ * Returns null if any coordinate computation fails (non-finite values).
83
+ *
84
+ * @param point - OHLC data point (tuple or object format)
85
+ * @param xScale - Linear scale for X axis
86
+ * @param yScale - Linear scale for Y axis
87
+ * @param canvasCssWidth - Canvas width in CSS pixels
88
+ * @param canvasCssHeight - Canvas height in CSS pixels
89
+ * @param offsetX - Container offset X in CSS pixels (default: 0)
90
+ * @param offsetY - Container offset Y in CSS pixels (default: 0)
91
+ * @returns Tooltip anchor position or null if computation fails
92
+ */
93
+ export declare function computeCandlestickTooltipAnchor(point: OHLCDataPoint, xScale: LinearScale, yScale: LinearScale, canvasCssWidth: number, canvasCssHeight: number, offsetX?: number, offsetY?: number): TooltipAnchor | null;
94
+ /**
95
+ * Determines if a data point is an OHLC/candlestick point.
96
+ *
97
+ * Checks if the point is a 5-element tuple (timestamp, open, close, low, high)
98
+ * or an object with OHLC properties.
99
+ *
100
+ * @param point - Data point to check
101
+ * @returns True if point is OHLC format
102
+ */
103
+ export declare function isOHLCDataPoint(point: any): point is OHLCDataPoint;
104
+ //# sourceMappingURL=tooltipLegendHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltipLegendHelpers.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/ui/tooltipLegendHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAMjD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAET;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,IAAI,CAIN;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAI3D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,MAAU,EACnB,OAAO,GAAE,MAAU,GAClB,aAAa,GAAG,IAAI,CA0CtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,aAAa,CAclE"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Axis and grid utilities for the RenderCoordinator.
3
+ *
4
+ * These pure functions handle coordinate transformations between different spaces:
5
+ * - CSS pixels (DOM layout)
6
+ * - Device pixels (canvas.width/height)
7
+ * - Normalized device coordinates / clip space (WebGPU [-1, 1])
8
+ *
9
+ * @module axisUtils
10
+ */
11
+ import type { GPUContextLike } from '../types';
12
+ import type { ResolvedChartGPUOptions } from '../../../config/OptionResolver';
13
+ import type { GridArea } from '../../../renderers/createGridRenderer';
14
+ /**
15
+ * Computes grid area with margins and canvas dimensions for rendering layout.
16
+ * GridArea uses:
17
+ * - Margins (left, right, top, bottom) in CSS pixels
18
+ * - Canvas dimensions (canvasWidth, canvasHeight) in DEVICE pixels
19
+ * - devicePixelRatio for CSS-to-device conversion
20
+ *
21
+ * @param gpuContext - GPU context with canvas and device pixel ratio
22
+ * @param options - Resolved chart options with grid margins
23
+ * @returns GridArea object with margins, canvas dimensions, and DPR
24
+ * @throws If canvas is null or has invalid dimensions
25
+ */
26
+ export declare const computeGridArea: (gpuContext: GPUContextLike, options: ResolvedChartGPUOptions) => GridArea;
27
+ /**
28
+ * Converts RGBA normalized [0-1] values to CSS rgba() string.
29
+ *
30
+ * @param rgba - Array of [r, g, b, a] in range [0, 1]
31
+ * @returns CSS rgba() string
32
+ */
33
+ export declare const rgba01ToCssRgba: (rgba: readonly [number, number, number, number]) => string;
34
+ /**
35
+ * Applies alpha multiplier to CSS color.
36
+ * Parses color, multiplies alpha channel, and returns new CSS rgba() string.
37
+ *
38
+ * @param cssColor - CSS color string
39
+ * @param alphaMultiplier - Alpha multiplier in range [0, 1]
40
+ * @returns CSS rgba() string with modified alpha, or original color if parse fails
41
+ */
42
+ export declare const withAlpha: (cssColor: string, alphaMultiplier: number) => string;
43
+ /**
44
+ * Converts grid margins to normalized device clip coordinates for WebGPU.
45
+ * Output is in WebGPU clip space: [-1, 1] for both x and y.
46
+ * Y-axis is flipped (top is positive, bottom is negative).
47
+ *
48
+ * @param gridArea - Grid area with margins and canvas dimensions
49
+ * @returns Clip rect with left, right, top, bottom in range [-1, 1]
50
+ */
51
+ export declare const computePlotClipRect: (gridArea: GridArea) => {
52
+ readonly left: number;
53
+ readonly right: number;
54
+ readonly top: number;
55
+ readonly bottom: number;
56
+ };
57
+ /**
58
+ * Clamps value to [0, 1] range.
59
+ *
60
+ * @param v - Value to clamp
61
+ * @returns Clamped value
62
+ */
63
+ export declare const clamp01: (v: number) => number;
64
+ /**
65
+ * Linear interpolation between two values with clamped t.
66
+ *
67
+ * @param a - Start value
68
+ * @param b - End value
69
+ * @param t01 - Interpolation parameter in range [0, 1]
70
+ * @returns Interpolated value
71
+ */
72
+ export declare const lerp: (a: number, b: number, t01: number) => number;
73
+ /**
74
+ * Interpolates between two domains (min/max pairs).
75
+ * Ensures result is a valid domain (min ≤ max, both finite).
76
+ *
77
+ * @param from - Start domain
78
+ * @param to - End domain
79
+ * @param t01 - Interpolation parameter in range [0, 1]
80
+ * @returns Interpolated domain
81
+ */
82
+ export declare const lerpDomain: (from: {
83
+ readonly min: number;
84
+ readonly max: number;
85
+ }, to: {
86
+ readonly min: number;
87
+ readonly max: number;
88
+ }, t01: number) => {
89
+ readonly min: number;
90
+ readonly max: number;
91
+ };
92
+ /**
93
+ * Computes scissor rect in device pixels from grid margins.
94
+ * Used for WebGPU scissor testing to clip rendering to plot area.
95
+ *
96
+ * @param gridArea - Grid area with margins and canvas dimensions
97
+ * @returns Scissor rect with x, y, w, h in device pixels
98
+ */
99
+ export declare const computePlotScissorDevicePx: (gridArea: GridArea) => {
100
+ readonly x: number;
101
+ readonly y: number;
102
+ readonly w: number;
103
+ readonly h: number;
104
+ };
105
+ /**
106
+ * Converts clip-space X to canvas CSS pixels (from normalized [-1, 1]).
107
+ *
108
+ * @param xClip - X coordinate in clip space [-1, 1]
109
+ * @param canvasCssWidth - Canvas width in CSS pixels
110
+ * @returns X coordinate in canvas CSS pixels
111
+ */
112
+ export declare const clipXToCanvasCssPx: (xClip: number, canvasCssWidth: number) => number;
113
+ /**
114
+ * Converts clip-space Y to canvas CSS pixels (from normalized [-1, 1]).
115
+ * Y-axis is flipped (1 is top, -1 is bottom).
116
+ *
117
+ * @param yClip - Y coordinate in clip space [-1, 1]
118
+ * @param canvasCssHeight - Canvas height in CSS pixels
119
+ * @returns Y coordinate in canvas CSS pixels
120
+ */
121
+ export declare const clipYToCanvasCssPx: (yClip: number, canvasCssHeight: number) => number;
122
+ //# sourceMappingURL=axisUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axisUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/utils/axisUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAKtE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAAI,YAAY,cAAc,EAAE,SAAS,uBAAuB,KAAG,QA4C9F,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAG,MAMjF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,EAAE,iBAAiB,MAAM,KAAG,MAKrE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,QAAQ,KACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAmBhG,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,MAAqC,CAAC;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK,MAAM,KAAG,MAAoC,CAAC;AAE9F;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACpD,IAAI;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAClD,KAAK,MAAM,KACV;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAE9C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACrC,UAAU,QAAQ,KACjB;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAgBlF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,gBAAgB,MAAM,KAAG,MAA4C,CAAC;AAExH;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,iBAAiB,MAAM,KAAG,MAA6C,CAAC"}