@chartgpu/chartgpu 0.2.5
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 +208 -0
- package/dist/ChartGPU.d.ts +146 -0
- package/dist/ChartGPU.d.ts.map +1 -0
- package/dist/components/createAnnotationConfigDialog.d.ts +24 -0
- package/dist/components/createAnnotationConfigDialog.d.ts.map +1 -0
- package/dist/components/createDataZoomSlider.d.ts +14 -0
- package/dist/components/createDataZoomSlider.d.ts.map +1 -0
- package/dist/components/createLegend.d.ts +9 -0
- package/dist/components/createLegend.d.ts.map +1 -0
- package/dist/components/createTextOverlay.d.ts +17 -0
- package/dist/components/createTextOverlay.d.ts.map +1 -0
- package/dist/components/createTooltip.d.ts +12 -0
- package/dist/components/createTooltip.d.ts.map +1 -0
- package/dist/components/formatTooltip.d.ts +19 -0
- package/dist/components/formatTooltip.d.ts.map +1 -0
- package/dist/config/OptionResolver.d.ts +137 -0
- package/dist/config/OptionResolver.d.ts.map +1 -0
- package/dist/config/defaults.d.ts +56 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/types.d.ts +553 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/core/GPUContext.d.ts +242 -0
- package/dist/core/GPUContext.d.ts.map +1 -0
- package/dist/core/RenderScheduler.d.ts +174 -0
- package/dist/core/RenderScheduler.d.ts.map +1 -0
- package/dist/core/createAnimationController.d.ts +15 -0
- package/dist/core/createAnimationController.d.ts.map +1 -0
- package/dist/core/createRenderCoordinator.d.ts +78 -0
- package/dist/core/createRenderCoordinator.d.ts.map +1 -0
- package/dist/core/renderCoordinator/animation/animationHelpers.d.ts +183 -0
- package/dist/core/renderCoordinator/animation/animationHelpers.d.ts.map +1 -0
- package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts +88 -0
- package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts.map +1 -0
- package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts +91 -0
- package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts.map +1 -0
- package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts +53 -0
- package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts.map +1 -0
- package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts +66 -0
- package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts.map +1 -0
- package/dist/core/renderCoordinator/gpu/textureManager.d.ts +69 -0
- package/dist/core/renderCoordinator/gpu/textureManager.d.ts.map +1 -0
- package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts +160 -0
- package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts.map +1 -0
- package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts +36 -0
- package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts.map +1 -0
- package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts +40 -0
- package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts.map +1 -0
- package/dist/core/renderCoordinator/render/renderOverlays.d.ts +70 -0
- package/dist/core/renderCoordinator/render/renderOverlays.d.ts.map +1 -0
- package/dist/core/renderCoordinator/render/renderSeries.d.ts +146 -0
- package/dist/core/renderCoordinator/render/renderSeries.d.ts.map +1 -0
- package/dist/core/renderCoordinator/renderers/rendererPool.d.ts +112 -0
- package/dist/core/renderCoordinator/renderers/rendererPool.d.ts.map +1 -0
- package/dist/core/renderCoordinator/types.d.ts +19 -0
- package/dist/core/renderCoordinator/types.d.ts.map +1 -0
- package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts +104 -0
- package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts.map +1 -0
- package/dist/core/renderCoordinator/utils/axisUtils.d.ts +122 -0
- package/dist/core/renderCoordinator/utils/axisUtils.d.ts.map +1 -0
- package/dist/core/renderCoordinator/utils/boundsComputation.d.ts +69 -0
- package/dist/core/renderCoordinator/utils/boundsComputation.d.ts.map +1 -0
- package/dist/core/renderCoordinator/utils/canvasUtils.d.ts +52 -0
- package/dist/core/renderCoordinator/utils/canvasUtils.d.ts.map +1 -0
- package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts +71 -0
- package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts.map +1 -0
- package/dist/core/renderCoordinator/utils/index.d.ts +12 -0
- package/dist/core/renderCoordinator/utils/index.d.ts.map +1 -0
- package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts +149 -0
- package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts.map +1 -0
- package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts +129 -0
- package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts.map +1 -0
- package/dist/data/cartesianData.d.ts +72 -0
- package/dist/data/cartesianData.d.ts.map +1 -0
- package/dist/data/createDataStore.d.ts +27 -0
- package/dist/data/createDataStore.d.ts.map +1 -0
- package/dist/data/createStreamBuffer.d.ts +20 -0
- package/dist/data/createStreamBuffer.d.ts.map +1 -0
- package/dist/data/lttbSample.d.ts +5 -0
- package/dist/data/lttbSample.d.ts.map +1 -0
- package/dist/data/ohlcSample.d.ts +21 -0
- package/dist/data/ohlcSample.d.ts.map +1 -0
- package/dist/data/packDataPoints.d.ts +65 -0
- package/dist/data/packDataPoints.d.ts.map +1 -0
- package/dist/data/sampleSeries.d.ts +20 -0
- package/dist/data/sampleSeries.d.ts.map +1 -0
- package/dist/esm/ChartGPUWorkerController-B50J-8sx.js +772 -0
- package/dist/esm/ChartGPUWorkerController-B50J-8sx.js.map +1 -0
- package/dist/esm/OptionResolver-R_gJDRSD.js +7150 -0
- package/dist/esm/OptionResolver-R_gJDRSD.js.map +1 -0
- package/dist/esm/assets/worker-entry-Wg897auv.js +779 -0
- package/dist/esm/assets/worker-entry-Wg897auv.js.map +1 -0
- package/dist/esm/createChartInWorker-C4fEeJL8.js +1224 -0
- package/dist/esm/createChartInWorker-C4fEeJL8.js.map +1 -0
- package/dist/esm/index.js +795 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/index.cjs +1270 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10504 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/createAnnotationAuthoring.d.ts +115 -0
- package/dist/interaction/createAnnotationAuthoring.d.ts.map +1 -0
- package/dist/interaction/createAnnotationDragHandler.d.ts +28 -0
- package/dist/interaction/createAnnotationDragHandler.d.ts.map +1 -0
- package/dist/interaction/createAnnotationHitTester.d.ts +32 -0
- package/dist/interaction/createAnnotationHitTester.d.ts.map +1 -0
- package/dist/interaction/createChartSync.d.ts +27 -0
- package/dist/interaction/createChartSync.d.ts.map +1 -0
- package/dist/interaction/createEventManager.d.ts +24 -0
- package/dist/interaction/createEventManager.d.ts.map +1 -0
- package/dist/interaction/createHoverState.d.ts +20 -0
- package/dist/interaction/createHoverState.d.ts.map +1 -0
- package/dist/interaction/createInsideZoom.d.ts +14 -0
- package/dist/interaction/createInsideZoom.d.ts.map +1 -0
- package/dist/interaction/createZoomState.d.ts +63 -0
- package/dist/interaction/createZoomState.d.ts.map +1 -0
- package/dist/interaction/findCandlestick.d.ts +41 -0
- package/dist/interaction/findCandlestick.d.ts.map +1 -0
- package/dist/interaction/findNearestPoint.d.ts +61 -0
- package/dist/interaction/findNearestPoint.d.ts.map +1 -0
- package/dist/interaction/findPieSlice.d.ts +36 -0
- package/dist/interaction/findPieSlice.d.ts.map +1 -0
- package/dist/interaction/findPointsAtX.d.ts +37 -0
- package/dist/interaction/findPointsAtX.d.ts.map +1 -0
- package/dist/renderers/createAnnotationMarkerRenderer.d.ts +58 -0
- package/dist/renderers/createAnnotationMarkerRenderer.d.ts.map +1 -0
- package/dist/renderers/createAreaRenderer.d.ts +19 -0
- package/dist/renderers/createAreaRenderer.d.ts.map +1 -0
- package/dist/renderers/createAxisRenderer.d.ts +19 -0
- package/dist/renderers/createAxisRenderer.d.ts.map +1 -0
- package/dist/renderers/createBarRenderer.d.ts +20 -0
- package/dist/renderers/createBarRenderer.d.ts.map +1 -0
- package/dist/renderers/createCandlestickRenderer.d.ts +19 -0
- package/dist/renderers/createCandlestickRenderer.d.ts.map +1 -0
- package/dist/renderers/createCrosshairRenderer.d.ts +43 -0
- package/dist/renderers/createCrosshairRenderer.d.ts.map +1 -0
- package/dist/renderers/createGridRenderer.d.ts +45 -0
- package/dist/renderers/createGridRenderer.d.ts.map +1 -0
- package/dist/renderers/createHighlightRenderer.d.ts +41 -0
- package/dist/renderers/createHighlightRenderer.d.ts.map +1 -0
- package/dist/renderers/createLineRenderer.d.ts +18 -0
- package/dist/renderers/createLineRenderer.d.ts.map +1 -0
- package/dist/renderers/createPieRenderer.d.ts +18 -0
- package/dist/renderers/createPieRenderer.d.ts.map +1 -0
- package/dist/renderers/createReferenceLineRenderer.d.ts +81 -0
- package/dist/renderers/createReferenceLineRenderer.d.ts.map +1 -0
- package/dist/renderers/createScatterDensityRenderer.d.ts +14 -0
- package/dist/renderers/createScatterDensityRenderer.d.ts.map +1 -0
- package/dist/renderers/createScatterRenderer.d.ts +20 -0
- package/dist/renderers/createScatterRenderer.d.ts.map +1 -0
- package/dist/renderers/rendererUtils.d.ts +100 -0
- package/dist/renderers/rendererUtils.d.ts.map +1 -0
- package/dist/themes/darkTheme.d.ts +11 -0
- package/dist/themes/darkTheme.d.ts.map +1 -0
- package/dist/themes/index.d.ts +8 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/lightTheme.d.ts +11 -0
- package/dist/themes/lightTheme.d.ts.map +1 -0
- package/dist/themes/types.d.ts +14 -0
- package/dist/themes/types.d.ts.map +1 -0
- package/dist/types/ChartGPU.d.ts +99 -0
- package/dist/types/ChartGPU.d.ts.map +1 -0
- package/dist/types/components/createDataZoomSlider.d.ts +14 -0
- package/dist/types/components/createDataZoomSlider.d.ts.map +1 -0
- package/dist/types/components/createLegend.d.ts +9 -0
- package/dist/types/components/createLegend.d.ts.map +1 -0
- package/dist/types/components/createTextOverlay.d.ts +17 -0
- package/dist/types/components/createTextOverlay.d.ts.map +1 -0
- package/dist/types/components/createTooltip.d.ts +12 -0
- package/dist/types/components/createTooltip.d.ts.map +1 -0
- package/dist/types/components/formatTooltip.d.ts +19 -0
- package/dist/types/components/formatTooltip.d.ts.map +1 -0
- package/dist/types/config/OptionResolver.d.ts +134 -0
- package/dist/types/config/OptionResolver.d.ts.map +1 -0
- package/dist/types/config/defaults.d.ts +55 -0
- package/dist/types/config/defaults.d.ts.map +1 -0
- package/dist/types/config/types.d.ts +485 -0
- package/dist/types/config/types.d.ts.map +1 -0
- package/dist/types/core/GPUContext.d.ts +242 -0
- package/dist/types/core/GPUContext.d.ts.map +1 -0
- package/dist/types/core/RenderScheduler.d.ts +174 -0
- package/dist/types/core/RenderScheduler.d.ts.map +1 -0
- package/dist/types/core/createAnimationController.d.ts +15 -0
- package/dist/types/core/createAnimationController.d.ts.map +1 -0
- package/dist/types/core/createRenderCoordinator.d.ts +129 -0
- package/dist/types/core/createRenderCoordinator.d.ts.map +1 -0
- package/dist/types/data/createDataStore.d.ts +33 -0
- package/dist/types/data/createDataStore.d.ts.map +1 -0
- package/dist/types/data/createStreamBuffer.d.ts +20 -0
- package/dist/types/data/createStreamBuffer.d.ts.map +1 -0
- package/dist/types/data/lttbSample.d.ts +5 -0
- package/dist/types/data/lttbSample.d.ts.map +1 -0
- package/dist/types/data/ohlcSample.d.ts +21 -0
- package/dist/types/data/ohlcSample.d.ts.map +1 -0
- package/dist/types/data/packDataPoints.d.ts +79 -0
- package/dist/types/data/packDataPoints.d.ts.map +1 -0
- package/dist/types/data/sampleSeries.d.ts +3 -0
- package/dist/types/data/sampleSeries.d.ts.map +1 -0
- package/dist/types/index.d.ts +35 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interaction/createChartSync.d.ts +12 -0
- package/dist/types/interaction/createChartSync.d.ts.map +1 -0
- package/dist/types/interaction/createEventManager.d.ts +24 -0
- package/dist/types/interaction/createEventManager.d.ts.map +1 -0
- package/dist/types/interaction/createHoverState.d.ts +20 -0
- package/dist/types/interaction/createHoverState.d.ts.map +1 -0
- package/dist/types/interaction/createInsideZoom.d.ts +14 -0
- package/dist/types/interaction/createInsideZoom.d.ts.map +1 -0
- package/dist/types/interaction/createZoomState.d.ts +63 -0
- package/dist/types/interaction/createZoomState.d.ts.map +1 -0
- package/dist/types/interaction/findCandlestick.d.ts +41 -0
- package/dist/types/interaction/findCandlestick.d.ts.map +1 -0
- package/dist/types/interaction/findNearestPoint.d.ts +61 -0
- package/dist/types/interaction/findNearestPoint.d.ts.map +1 -0
- package/dist/types/interaction/findPieSlice.d.ts +36 -0
- package/dist/types/interaction/findPieSlice.d.ts.map +1 -0
- package/dist/types/interaction/findPointsAtX.d.ts +37 -0
- package/dist/types/interaction/findPointsAtX.d.ts.map +1 -0
- package/dist/types/renderers/createAreaRenderer.d.ts +18 -0
- package/dist/types/renderers/createAreaRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createAxisRenderer.d.ts +19 -0
- package/dist/types/renderers/createAxisRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createBarRenderer.d.ts +20 -0
- package/dist/types/renderers/createBarRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createCandlestickRenderer.d.ts +19 -0
- package/dist/types/renderers/createCandlestickRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createCrosshairRenderer.d.ts +43 -0
- package/dist/types/renderers/createCrosshairRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createGridRenderer.d.ts +45 -0
- package/dist/types/renderers/createGridRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createHighlightRenderer.d.ts +41 -0
- package/dist/types/renderers/createHighlightRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createLineRenderer.d.ts +18 -0
- package/dist/types/renderers/createLineRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createPieRenderer.d.ts +18 -0
- package/dist/types/renderers/createPieRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createScatterDensityRenderer.d.ts +14 -0
- package/dist/types/renderers/createScatterDensityRenderer.d.ts.map +1 -0
- package/dist/types/renderers/createScatterRenderer.d.ts +19 -0
- package/dist/types/renderers/createScatterRenderer.d.ts.map +1 -0
- package/dist/types/renderers/rendererUtils.d.ts +100 -0
- package/dist/types/renderers/rendererUtils.d.ts.map +1 -0
- package/dist/types/themes/darkTheme.d.ts +11 -0
- package/dist/types/themes/darkTheme.d.ts.map +1 -0
- package/dist/types/themes/index.d.ts +8 -0
- package/dist/types/themes/index.d.ts.map +1 -0
- package/dist/types/themes/lightTheme.d.ts +11 -0
- package/dist/types/themes/lightTheme.d.ts.map +1 -0
- package/dist/types/themes/types.d.ts +14 -0
- package/dist/types/themes/types.d.ts.map +1 -0
- package/dist/types/utils/axisLabelStyling.d.ts +27 -0
- package/dist/types/utils/axisLabelStyling.d.ts.map +1 -0
- package/dist/types/utils/checkWebGPU.d.ts +39 -0
- package/dist/types/utils/checkWebGPU.d.ts.map +1 -0
- package/dist/types/utils/colors.d.ts +14 -0
- package/dist/types/utils/colors.d.ts.map +1 -0
- package/dist/types/utils/easing.d.ts +9 -0
- package/dist/types/utils/easing.d.ts.map +1 -0
- package/dist/types/utils/scales.d.ts +79 -0
- package/dist/types/utils/scales.d.ts.map +1 -0
- package/dist/utils/axisLabelStyling.d.ts +20 -0
- package/dist/utils/axisLabelStyling.d.ts.map +1 -0
- package/dist/utils/checkWebGPU.d.ts +39 -0
- package/dist/utils/checkWebGPU.d.ts.map +1 -0
- package/dist/utils/colors.d.ts +14 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/easing.d.ts +9 -0
- package/dist/utils/easing.d.ts.map +1 -0
- package/dist/utils/scales.d.ts +79 -0
- package/dist/utils/scales.d.ts.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { OHLCDataPoint } from '../config/types';
|
|
2
|
+
/**
|
|
3
|
+
* Downsamples OHLC (candlestick) data to a target number of points using bucket aggregation.
|
|
4
|
+
*
|
|
5
|
+
* Each bucket aggregates candles preserving OHLC semantics:
|
|
6
|
+
* - timestamp and open from the first candle in the bucket
|
|
7
|
+
* - close from the last candle in the bucket
|
|
8
|
+
* - high as the maximum of all highs in the bucket
|
|
9
|
+
* - low as the minimum of all lows in the bucket
|
|
10
|
+
*
|
|
11
|
+
* @param data - Array of OHLC data points (tuples or objects)
|
|
12
|
+
* @param targetPoints - Desired number of output points
|
|
13
|
+
* @returns Downsampled array; same reference if no sampling needed
|
|
14
|
+
*
|
|
15
|
+
* Edge cases:
|
|
16
|
+
* - If `data.length <= targetPoints` or `targetPoints < 2`, returns the original array (same reference)
|
|
17
|
+
* - First and last candles are always preserved exactly (same element references)
|
|
18
|
+
* - Output shape matches input shape (tuples → tuples, objects → objects)
|
|
19
|
+
*/
|
|
20
|
+
export declare function ohlcSample(data: ReadonlyArray<OHLCDataPoint>, targetPoints: number): ReadonlyArray<OHLCDataPoint>;
|
|
21
|
+
//# sourceMappingURL=ohlcSample.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ohlcSample.d.ts","sourceRoot":"","sources":["../../../src/data/ohlcSample.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AAMzE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,EAClC,YAAY,EAAE,MAAM,GACnB,aAAa,CAAC,aAAa,CAAC,CAgG9B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data point packing utilities for zero-copy transfer to GPU/Workers.
|
|
3
|
+
*
|
|
4
|
+
* These functions convert high-level DataPoint/OHLCDataPoint arrays into interleaved
|
|
5
|
+
* Float32Array buffers suitable for:
|
|
6
|
+
* - Direct GPU buffer uploads via `queue.writeBuffer()`
|
|
7
|
+
* - Zero-copy transfer to Web Workers via postMessage transferList
|
|
8
|
+
*
|
|
9
|
+
* @module packDataPoints
|
|
10
|
+
*/
|
|
11
|
+
import type { DataPoint, OHLCDataPoint } from '../config/types';
|
|
12
|
+
/**
|
|
13
|
+
* Packs DataPoint array into an interleaved Float32Array for GPU/Worker transfer.
|
|
14
|
+
*
|
|
15
|
+
* **Format**: `[x0, y0, x1, y1, x2, y2, ...]` (2 floats per point = 8 bytes stride)
|
|
16
|
+
*
|
|
17
|
+
* **Use cases**:
|
|
18
|
+
* - Direct upload to GPU vertex buffers via `queue.writeBuffer(buffer, 0, packed.buffer)`
|
|
19
|
+
* - Zero-copy transfer to workers: `postMessage({ data: packed }, [packed.buffer])`
|
|
20
|
+
*
|
|
21
|
+
* **Performance**: The returned Float32Array's underlying ArrayBuffer is transferable,
|
|
22
|
+
* enabling zero-copy postMessage operations. After transfer, the source Float32Array
|
|
23
|
+
* becomes detached (length = 0).
|
|
24
|
+
*
|
|
25
|
+
* @param points - Array of data points (tuple or object form)
|
|
26
|
+
* @returns Interleaved Float32Array [x0,y0,x1,y1,...]. The .buffer property is transferable.
|
|
27
|
+
* @throws {TypeError} If points is null, undefined, or not an array
|
|
28
|
+
* @throws {RangeError} If points array is empty or contains invalid values
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const points = [{ x: 0, y: 10 }, { x: 1, y: 20 }];
|
|
33
|
+
* const packed = packDataPoints(points);
|
|
34
|
+
* // packed = Float32Array[0, 10, 1, 20]
|
|
35
|
+
* // packed.buffer is transferable
|
|
36
|
+
*
|
|
37
|
+
* // Zero-copy transfer to worker:
|
|
38
|
+
* worker.postMessage({ data: packed }, [packed.buffer]);
|
|
39
|
+
* // After transfer, packed.length === 0 (detached)
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function packDataPoints(points: ReadonlyArray<DataPoint>): Float32Array;
|
|
43
|
+
/**
|
|
44
|
+
* Packs OHLCDataPoint array into an interleaved Float32Array for GPU/Worker transfer.
|
|
45
|
+
*
|
|
46
|
+
* **Format**: `[t0, o0, h0, l0, c0, t1, o1, h1, l1, c1, ...]` (5 floats per point = 20 bytes stride)
|
|
47
|
+
*
|
|
48
|
+
* Order follows ECharts convention: timestamp, open, high, low, close (t, o, h, l, c).
|
|
49
|
+
*
|
|
50
|
+
* **Use cases**:
|
|
51
|
+
* - Direct upload to GPU vertex buffers for candlestick rendering
|
|
52
|
+
* - Zero-copy transfer to workers for streaming candlestick data
|
|
53
|
+
*
|
|
54
|
+
* **Performance**: The returned Float32Array's underlying ArrayBuffer is transferable,
|
|
55
|
+
* enabling zero-copy postMessage operations. After transfer, the source Float32Array
|
|
56
|
+
* becomes detached (length = 0).
|
|
57
|
+
*
|
|
58
|
+
* @param points - Array of OHLC data points (tuple or object form)
|
|
59
|
+
* @returns Interleaved Float32Array [t0,o0,h0,l0,c0,t1,...]. The .buffer property is transferable.
|
|
60
|
+
* @throws {TypeError} If points is null, undefined, or not an array
|
|
61
|
+
* @throws {RangeError} If points array is empty or contains invalid values
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const ohlcPoints = [
|
|
66
|
+
* { timestamp: 1000, open: 100, high: 110, low: 95, close: 105 },
|
|
67
|
+
* { timestamp: 2000, open: 105, high: 115, low: 100, close: 110 }
|
|
68
|
+
* ];
|
|
69
|
+
* const packed = packOHLCDataPoints(ohlcPoints);
|
|
70
|
+
* // packed = Float32Array[1000, 100, 110, 95, 105, 2000, 105, 115, 100, 110]
|
|
71
|
+
* // packed.buffer is transferable
|
|
72
|
+
*
|
|
73
|
+
* // Zero-copy transfer to worker:
|
|
74
|
+
* worker.postMessage({ data: packed }, [packed.buffer]);
|
|
75
|
+
* // After transfer, packed.length === 0 (detached)
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function packOHLCDataPoints(points: ReadonlyArray<OHLCDataPoint>): Float32Array;
|
|
79
|
+
//# sourceMappingURL=packDataPoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packDataPoints.d.ts","sourceRoot":"","sources":["../../../src/data/packDataPoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AAiBhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,YAAY,CA2D7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,YAAY,CAiGrF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampleSeries.d.ts","sourceRoot":"","sources":["../../../src/data/sampleSeries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA+GjF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,EAC9B,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,MAAM,GACxB,aAAa,CAAC,SAAS,CAAC,CAsB1B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChartGPU - A GPU-accelerated charting library built with WebGPU
|
|
3
|
+
*/
|
|
4
|
+
export declare const version = "1.0.0";
|
|
5
|
+
import { createChartInWorker } from './worker/createChartInWorker';
|
|
6
|
+
export declare const ChartGPU: {
|
|
7
|
+
createInWorker: typeof createChartInWorker;
|
|
8
|
+
create: typeof import("./ChartGPU").createChartGPU;
|
|
9
|
+
};
|
|
10
|
+
export { createChartGPU as createChart } from './ChartGPU';
|
|
11
|
+
export type { ChartGPUInstance } from './ChartGPU';
|
|
12
|
+
export type { ChartGPUEventName, ChartGPUEventPayload, ChartGPUCrosshairMovePayload, ChartGPUEventCallback, ChartGPUCrosshairMoveCallback, } from './ChartGPU';
|
|
13
|
+
export type { AreaStyleConfig, AnimationConfig, AxisConfig, AxisLabel, AxisType, BarItemStyleConfig, CandlestickItemStyleConfig, CandlestickSeriesConfig, CandlestickStyle, ChartGPUOptions, DataZoomConfig, DataPoint, GridConfig, LegendItem, LineStyleConfig, AreaSeriesConfig, LineSeriesConfig, BarSeriesConfig, NormalizedPointerEvent, PerformanceMetrics, PointerEventData, OHLCDataPoint, PieCenter, PieDataItem, PieItemStyleConfig, PieRadius, PieSeriesConfig, ScatterSeriesConfig, ScatterSymbol, ScatterPointTuple, SeriesConfig, SeriesSampling, SeriesType, TooltipConfig, TooltipData, TooltipParams, } from './config/types';
|
|
14
|
+
export { candlestickDefaults, defaultOptions } from './config/defaults';
|
|
15
|
+
export { OptionResolver, resolveOptions } from './config/OptionResolver';
|
|
16
|
+
export type { ResolvedCandlestickSeriesConfig, ResolvedChartGPUOptions, ResolvedAreaSeriesConfig, ResolvedAreaStyleConfig, ResolvedGridConfig, ResolvedLineSeriesConfig, ResolvedLineStyleConfig, ResolvedSeriesConfig, } from './config/OptionResolver';
|
|
17
|
+
export type { ThemeConfig } from './themes/types';
|
|
18
|
+
export { darkTheme, lightTheme, getTheme } from './themes';
|
|
19
|
+
export type { ThemeName } from './themes';
|
|
20
|
+
export { createLinearScale, createCategoryScale } from './utils/scales';
|
|
21
|
+
export type { LinearScale, CategoryScale } from './utils/scales';
|
|
22
|
+
export { packDataPoints, packOHLCDataPoints } from './data/packDataPoints';
|
|
23
|
+
export { connectCharts } from './interaction/createChartSync';
|
|
24
|
+
export type { GPUContextState, GPUContextOptions, SupportedCanvas, } from './core/GPUContext';
|
|
25
|
+
export { createGPUContext, createGPUContextAsync, initializeGPUContext, getCanvasTexture, clearScreen, destroyGPUContext, } from './core/GPUContext';
|
|
26
|
+
export { GPUContext } from './core/GPUContext';
|
|
27
|
+
export type { RenderSchedulerState, RenderCallback } from './core/RenderScheduler';
|
|
28
|
+
export { createRenderScheduler, createRenderSchedulerAsync, startRenderScheduler, stopRenderScheduler, requestRender, destroyRenderScheduler, } from './core/RenderScheduler';
|
|
29
|
+
export type { RenderCoordinatorCallbacks } from './core/createRenderCoordinator';
|
|
30
|
+
export { RenderScheduler } from './core/RenderScheduler';
|
|
31
|
+
export { ChartGPUWorkerProxy } from './worker/ChartGPUWorkerProxy';
|
|
32
|
+
export { ChartGPUWorkerError, XY_STRIDE, OHLC_STRIDE } from './worker/types';
|
|
33
|
+
export type { WorkerConfig, PendingRequest, StrideBytes } from './worker/types';
|
|
34
|
+
export type { WorkerInboundMessage, WorkerOutboundMessage, InitMessage, SetOptionMessage, AppendDataMessage, AppendDataBatchMessage, ResizeMessage, ForwardPointerEventMessage, SetZoomRangeMessage, SetInteractionXMessage, SetAnimationMessage, DisposeMessage, ReadyMessage, RenderedMessage, TooltipUpdateMessage, LegendUpdateMessage, AxisLabelsUpdateMessage, WorkerEventPayload, HoverChangeMessage, ClickMessage, CrosshairMoveMessage, ZoomChangeMessage, DeviceLostMessage, DisposedMessage, ErrorMessage, } from './worker/protocol';
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAI/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,eAAO,MAAM,QAAQ;;;CAGpB,CAAC;AAEF,OAAO,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,eAAe,EACf,eAAe,EACf,UAAU,EACV,SAAS,EACT,QAAQ,EACR,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,SAAS,EACT,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzE,YAAY,EACV,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAGjF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7E,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGhF,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ChartGPU } from '../ChartGPU';
|
|
2
|
+
export type DisconnectCharts = () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Connects multiple charts so pointer movement in one chart drives crosshair/tooltip x
|
|
5
|
+
* in the other charts (domain x sync). Returns a `disconnect()` function.
|
|
6
|
+
*
|
|
7
|
+
* Notes:
|
|
8
|
+
* - Syncs interaction only (crosshair + tooltip x), not zoom/options.
|
|
9
|
+
* - Uses a per-connection loop guard to prevent feedback.
|
|
10
|
+
*/
|
|
11
|
+
export declare function connectCharts(charts: ChartGPU[]): DisconnectCharts;
|
|
12
|
+
//# sourceMappingURL=createChartSync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createChartSync.d.ts","sourceRoot":"","sources":["../../../src/interaction/createChartSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC;AAE1C;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CA0ClE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { GridArea } from '../renderers/createGridRenderer';
|
|
2
|
+
export type ChartGPUEventName = 'mousemove' | 'click' | 'mouseleave';
|
|
3
|
+
export type ChartGPUEventPayload = {
|
|
4
|
+
readonly x: number;
|
|
5
|
+
readonly y: number;
|
|
6
|
+
readonly gridX: number;
|
|
7
|
+
readonly gridY: number;
|
|
8
|
+
/** Plot (grid) width in CSS pixels. */
|
|
9
|
+
readonly plotWidthCss: number;
|
|
10
|
+
/** Plot (grid) height in CSS pixels. */
|
|
11
|
+
readonly plotHeightCss: number;
|
|
12
|
+
readonly isInGrid: boolean;
|
|
13
|
+
readonly originalEvent: PointerEvent;
|
|
14
|
+
};
|
|
15
|
+
export type ChartGPUEventCallback = (payload: ChartGPUEventPayload) => void;
|
|
16
|
+
export interface EventManager {
|
|
17
|
+
readonly canvas: HTMLCanvasElement;
|
|
18
|
+
on(event: ChartGPUEventName, callback: ChartGPUEventCallback): void;
|
|
19
|
+
off(event: ChartGPUEventName, callback: ChartGPUEventCallback): void;
|
|
20
|
+
updateGridArea(gridArea: GridArea): void;
|
|
21
|
+
dispose(): void;
|
|
22
|
+
}
|
|
23
|
+
export declare function createEventManager(canvas: HTMLCanvasElement, initialGridArea: GridArea): EventManager;
|
|
24
|
+
//# sourceMappingURL=createEventManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEventManager.d.ts","sourceRoot":"","sources":["../../../src/interaction/createEventManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wCAAwC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACpE,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrE,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzC,OAAO,IAAI,IAAI,CAAC;CACjB;AAcD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,QAAQ,GAAG,YAAY,CA6KrG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type HoverTarget = Readonly<{
|
|
2
|
+
seriesIndex: number;
|
|
3
|
+
dataIndex: number;
|
|
4
|
+
}>;
|
|
5
|
+
export type HoverChangeCallback = (hovered: HoverTarget | null) => void;
|
|
6
|
+
export interface HoverState {
|
|
7
|
+
setHovered(seriesIndex: number, dataIndex: number): void;
|
|
8
|
+
clearHovered(): void;
|
|
9
|
+
getHovered(): HoverTarget | null;
|
|
10
|
+
onChange(callback: HoverChangeCallback): () => void;
|
|
11
|
+
destroy?: () => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Tracks hovered series/data indices and notifies listeners on changes.
|
|
15
|
+
*
|
|
16
|
+
* - Updates are debounced to avoid spamming downstream work during rapid pointer movement.
|
|
17
|
+
* - Listeners fire only when the hovered target actually changes.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createHoverState(): HoverState;
|
|
20
|
+
//# sourceMappingURL=createHoverState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHoverState.d.ts","sourceRoot":"","sources":["../../../src/interaction/createHoverState.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,IAAI,WAAW,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAmBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAgE7C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EventManager } from './createEventManager';
|
|
2
|
+
import type { ZoomState } from './createZoomState';
|
|
3
|
+
export type InsideZoom = Readonly<{
|
|
4
|
+
enable(): void;
|
|
5
|
+
disable(): void;
|
|
6
|
+
dispose(): void;
|
|
7
|
+
}>;
|
|
8
|
+
/**
|
|
9
|
+
* Internal “inside” zoom interaction:
|
|
10
|
+
* - wheel zoom centered at cursor-x (only when inside grid)
|
|
11
|
+
* - shift+left drag OR middle-mouse drag pans left/right (only when inside grid)
|
|
12
|
+
*/
|
|
13
|
+
export declare function createInsideZoom(eventManager: EventManager, zoomState: ZoomState): InsideZoom;
|
|
14
|
+
//# sourceMappingURL=createInsideZoom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createInsideZoom.d.ts","sourceRoot":"","sources":["../../../src/interaction/createInsideZoom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC,CAAC;AAuDH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAmI7F"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export type ZoomRange = Readonly<{
|
|
2
|
+
start: number;
|
|
3
|
+
end: number;
|
|
4
|
+
}>;
|
|
5
|
+
export type ZoomRangeChangeCallback = (range: ZoomRange) => void;
|
|
6
|
+
export interface ZoomState {
|
|
7
|
+
/**
|
|
8
|
+
* Returns the current zoom window in percent space, clamped to [0, 100].
|
|
9
|
+
*/
|
|
10
|
+
getRange(): ZoomRange;
|
|
11
|
+
/**
|
|
12
|
+
* Sets the zoom window in percent space.
|
|
13
|
+
*/
|
|
14
|
+
setRange(start: number, end: number): void;
|
|
15
|
+
/**
|
|
16
|
+
* Zooms in around `center` by shrinking the span by `factor`.
|
|
17
|
+
*
|
|
18
|
+
* `factor <= 1` is treated as a no-op.
|
|
19
|
+
*/
|
|
20
|
+
zoomIn(center: number, factor: number): void;
|
|
21
|
+
/**
|
|
22
|
+
* Zooms out around `center` by growing the span by `factor`.
|
|
23
|
+
*
|
|
24
|
+
* `factor <= 1` is treated as a no-op.
|
|
25
|
+
*/
|
|
26
|
+
zoomOut(center: number, factor: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Pans the zoom window by `delta` percent points (preserving span).
|
|
29
|
+
*/
|
|
30
|
+
pan(delta: number): void;
|
|
31
|
+
/**
|
|
32
|
+
* Subscribes to changes. Returns an unsubscribe function.
|
|
33
|
+
*/
|
|
34
|
+
onChange(callback: ZoomRangeChangeCallback): () => void;
|
|
35
|
+
}
|
|
36
|
+
export type ZoomSpanConstraints = Readonly<{
|
|
37
|
+
/**
|
|
38
|
+
* Minimum allowed span (percent points in [0, 100]).
|
|
39
|
+
*/
|
|
40
|
+
readonly minSpan?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Maximum allowed span (percent points in [0, 100]).
|
|
43
|
+
*/
|
|
44
|
+
readonly maxSpan?: number;
|
|
45
|
+
}>;
|
|
46
|
+
export type ZoomRangeAnchor = 'start' | 'end' | 'center' | Readonly<{
|
|
47
|
+
center: number;
|
|
48
|
+
ratio: number;
|
|
49
|
+
}>;
|
|
50
|
+
export interface ZoomStateWithConstraints extends ZoomState {
|
|
51
|
+
/**
|
|
52
|
+
* Updates span constraints at runtime (used by coordinator on setOption/appendData).
|
|
53
|
+
*
|
|
54
|
+
* Passing `undefined` leaves that constraint unchanged.
|
|
55
|
+
*/
|
|
56
|
+
setSpanConstraints(minSpan?: number, maxSpan?: number): void;
|
|
57
|
+
/**
|
|
58
|
+
* Sets a range with an explicit anchor for clamping (used by slider handles).
|
|
59
|
+
*/
|
|
60
|
+
setRangeAnchored(start: number, end: number, anchor: ZoomRangeAnchor): void;
|
|
61
|
+
}
|
|
62
|
+
export declare function createZoomState(initialStart: number, initialEnd: number, constraints?: ZoomSpanConstraints): ZoomStateWithConstraints;
|
|
63
|
+
//# sourceMappingURL=createZoomState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createZoomState.d.ts","sourceRoot":"","sources":["../../../src/interaction/createZoomState.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjE,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,IAAI,SAAS,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI,CAAC;CACzD;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,KAAK,GACL,QAAQ,GACR,QAAQ,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhD,MAAM,WAAW,wBAAyB,SAAQ,SAAS;IACzD;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7D;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAC7E;AAgBD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,mBAAmB,GAChC,wBAAwB,CA0M1B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ResolvedCandlestickSeriesConfig } from '../config/OptionResolver';
|
|
2
|
+
import type { OHLCDataPoint } from '../config/types';
|
|
3
|
+
import type { LinearScale } from '../utils/scales';
|
|
4
|
+
export interface CandlestickMatch {
|
|
5
|
+
seriesIndex: number;
|
|
6
|
+
dataIndex: number;
|
|
7
|
+
point: OHLCDataPoint;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Computes the candlestick body width in xScale **range-space** units.
|
|
11
|
+
*
|
|
12
|
+
* Notes:
|
|
13
|
+
* - This mirrors `createCandlestickRenderer.ts` bar width semantics, but stays in range units
|
|
14
|
+
* (CSS pixels in ChartGPU interaction usage).
|
|
15
|
+
* - No DPR conversions are applied here.
|
|
16
|
+
*/
|
|
17
|
+
export declare function computeCandlestickBodyWidthRange(series: ResolvedCandlestickSeriesConfig, data: ReadonlyArray<OHLCDataPoint>, xScale: LinearScale, plotWidthFallback?: number): number;
|
|
18
|
+
/**
|
|
19
|
+
* Finds the candlestick body under the given cursor position.
|
|
20
|
+
*
|
|
21
|
+
* Coordinate system contract:
|
|
22
|
+
* - `x`/`y` MUST be in the same units as `xScale`/`yScale` **range-space**
|
|
23
|
+
* (ChartGPU interaction uses grid-local CSS pixels).
|
|
24
|
+
*
|
|
25
|
+
* Hit-test semantics:
|
|
26
|
+
* - Body-only hit-testing (wicks ignored).
|
|
27
|
+
* - A candle hits if:
|
|
28
|
+
* - `abs(x - xCenter) <= barWidth / 2`, AND
|
|
29
|
+
* - `y` is between the scaled `open` and `close` (inclusive).
|
|
30
|
+
*
|
|
31
|
+
* Performance:
|
|
32
|
+
* - Per-series lower-bound binary search on timestamp, then scans left/right while x-distance alone can still hit.
|
|
33
|
+
* - If timestamps are not monotonic non-decreasing finite numbers, falls back to an O(n) scan for correctness.
|
|
34
|
+
*
|
|
35
|
+
* Edge cases:
|
|
36
|
+
* - Skips non-finite timestamps/open/close.
|
|
37
|
+
* - If `barWidthClip` is non-finite or <= 0, returns null.
|
|
38
|
+
* - Returns the closest in x (min abs dx) among hits; ties broken by smaller `dataIndex` (then smaller `seriesIndex`).
|
|
39
|
+
*/
|
|
40
|
+
export declare function findCandlestick(series: ReadonlyArray<ResolvedCandlestickSeriesConfig>, x: number, y: number, xScale: LinearScale, yScale: LinearScale, barWidthClip: number): CandlestickMatch | null;
|
|
41
|
+
//# sourceMappingURL=findCandlestick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findCandlestick.d.ts","sourceRoot":"","sources":["../../../src/interaction/findCandlestick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACtB;AA0CD;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,+BAA+B,EACvC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,EAClC,MAAM,EAAE,WAAW,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAkDR;AAqCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,CAAC,+BAA+B,CAAC,EACtD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,GACnB,gBAAgB,GAAG,IAAI,CA2GzB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { DataPoint } from '../config/types';
|
|
2
|
+
import type { ResolvedBarSeriesConfig, ResolvedSeriesConfig } from '../config/OptionResolver';
|
|
3
|
+
import type { LinearScale } from '../utils/scales';
|
|
4
|
+
export type NearestPointMatch = Readonly<{
|
|
5
|
+
seriesIndex: number;
|
|
6
|
+
dataIndex: number;
|
|
7
|
+
point: DataPoint;
|
|
8
|
+
/** Euclidean distance in range units. */
|
|
9
|
+
distance: number;
|
|
10
|
+
}>;
|
|
11
|
+
export type BarBounds = {
|
|
12
|
+
left: number;
|
|
13
|
+
right: number;
|
|
14
|
+
top: number;
|
|
15
|
+
bottom: number;
|
|
16
|
+
};
|
|
17
|
+
export declare function isPointInBar(x: number, y: number, barBounds: BarBounds): boolean;
|
|
18
|
+
export type BarClusterSlots = Readonly<{
|
|
19
|
+
clusterIndexBySeries: ReadonlyArray<number>;
|
|
20
|
+
clusterCount: number;
|
|
21
|
+
stackIdBySeries: ReadonlyArray<string>;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function computeBarClusterSlots(seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>): BarClusterSlots;
|
|
24
|
+
export declare function computeBarCategoryStep(seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>): number;
|
|
25
|
+
export declare function computeCategoryWidthPx(seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>, xScale: LinearScale, categoryStep: number): number;
|
|
26
|
+
export type BarLayoutPx = Readonly<{
|
|
27
|
+
categoryStep: number;
|
|
28
|
+
categoryWidthPx: number;
|
|
29
|
+
barWidthPx: number;
|
|
30
|
+
gapPx: number;
|
|
31
|
+
clusterWidthPx: number;
|
|
32
|
+
clusterSlots: BarClusterSlots;
|
|
33
|
+
}>;
|
|
34
|
+
export declare function computeBarLayoutPx(seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>, xScale: LinearScale): BarLayoutPx;
|
|
35
|
+
export declare function inferPlotHeightPxForBarHitTesting(seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>, yScale: LinearScale): number;
|
|
36
|
+
export declare function computeBaselineDomainAndPx(seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>, yScale: LinearScale, plotHeightPx: number): Readonly<{
|
|
37
|
+
baselineDomain: number;
|
|
38
|
+
baselinePx: number;
|
|
39
|
+
}>;
|
|
40
|
+
export declare function bucketStackedXKey(xCenterPx: number, categoryWidthPx: number, xDomain: number, categoryStep: number): number;
|
|
41
|
+
/**
|
|
42
|
+
* Finds the nearest data point to the given cursor position across all series.
|
|
43
|
+
*
|
|
44
|
+
* Coordinate system contract:
|
|
45
|
+
* - `x`/`y` MUST be in the same units as `xScale`/`yScale` **range**.
|
|
46
|
+
* - If you pass **grid-local CSS pixels** (e.g. `payload.gridX` / `payload.gridY` from `createEventManager`),
|
|
47
|
+
* then `xScale.range()` / `yScale.range()` must also be in **CSS pixels**.
|
|
48
|
+
* - If your scales are in **clip space** (e.g. \([-1, 1]\)), pass cursor coordinates in clip space too.
|
|
49
|
+
*
|
|
50
|
+
* DPR/WebGPU note:
|
|
51
|
+
* - Pointer events are naturally in CSS pixels; WebGPU rendering often uses device pixels or clip space.
|
|
52
|
+
* This helper stays agnostic and only computes Euclidean distance in the provided **range-space**.
|
|
53
|
+
*
|
|
54
|
+
* Performance notes:
|
|
55
|
+
* - Assumes each series is sorted by increasing x in domain space.
|
|
56
|
+
* - Uses per-series lower-bound binary search on x, then expands outward while x-distance alone can still win.
|
|
57
|
+
* - Uses squared distance comparisons and computes `sqrt` only for the final match.
|
|
58
|
+
* - Skips non-finite points and any points whose scaled coordinates are NaN.
|
|
59
|
+
*/
|
|
60
|
+
export declare function findNearestPoint(series: ReadonlyArray<ResolvedSeriesConfig>, x: number, y: number, xScale: LinearScale, yScale: LinearScale, maxDistance?: number): NearestPointMatch | null;
|
|
61
|
+
//# sourceMappingURL=findNearestPoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findNearestPoint.d.ts","sourceRoot":"","sources":["../../../src/interaction/findNearestPoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqC,MAAM,iBAAiB,CAAC;AACpF,OAAO,KAAK,EACV,uBAAuB,EAEvB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWnD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAKH,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAShF;AAkHD,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC,CAAC;AAEH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,aAAa,CAAC,uBAAuB,CAAC,GACpD,eAAe,CAgCjB;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAmBpG;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,aAAa,CAAC,uBAAuB,CAAC,EACrD,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CA+BR;AAyBD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,eAAe,CAAC;CAC/B,CAAC,CAAC;AAEH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,CAAC,uBAAuB,CAAC,EACrD,MAAM,EAAE,WAAW,GAClB,WAAW,CAyCb;AAqBD,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,aAAa,CAAC,uBAAuB,CAAC,EACrD,MAAM,EAAE,WAAW,GAClB,MAAM,CAeR;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,aAAa,CAAC,uBAAuB,CAAC,EACrD,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,GACnB,QAAQ,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC1D;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,CAWR;AAgCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC3C,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,WAAW,GAAE,MAAgC,GAC5C,iBAAiB,GAAG,IAAI,CAuY1B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ResolvedPieSeriesConfig } from '../config/OptionResolver';
|
|
2
|
+
export type PieSliceMatch = Readonly<{
|
|
3
|
+
seriesIndex: number;
|
|
4
|
+
dataIndex: number;
|
|
5
|
+
slice: ResolvedPieSeriesConfig['data'][number];
|
|
6
|
+
}>;
|
|
7
|
+
export type PieHitTestConfig = Readonly<{
|
|
8
|
+
seriesIndex: number;
|
|
9
|
+
series: ResolvedPieSeriesConfig;
|
|
10
|
+
}>;
|
|
11
|
+
export type PieCenterCssPx = Readonly<{
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
}>;
|
|
15
|
+
export type PieRadiusCssPx = Readonly<{
|
|
16
|
+
inner: number;
|
|
17
|
+
outer: number;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Finds the pie slice under a given pointer position.
|
|
21
|
+
*
|
|
22
|
+
* Coordinate contract:
|
|
23
|
+
* - `x`/`y` are plot/grid-local CSS pixels (origin at plot top-left, +y down).
|
|
24
|
+
* - `center` is plot-local CSS pixels.
|
|
25
|
+
* - `radius` is CSS pixels (inner/outer). Points within the donut hole are not hoverable.
|
|
26
|
+
*
|
|
27
|
+
* Angle conventions:
|
|
28
|
+
* - Uses +y up for polar angle (to match `pie.wgsl` atan2(p.y, p.x)).
|
|
29
|
+
* - Wraps angles to [0, 2π).
|
|
30
|
+
* - Matches `createPieRenderer.ts` start angle default (90°).
|
|
31
|
+
*
|
|
32
|
+
* Value conventions:
|
|
33
|
+
* - Ignores non-finite and non-positive slice values (mirrors renderer).
|
|
34
|
+
*/
|
|
35
|
+
export declare function findPieSlice(x: number, y: number, pieConfig: PieHitTestConfig, center: PieCenterCssPx, radius: PieRadiusCssPx): PieSliceMatch | null;
|
|
36
|
+
//# sourceMappingURL=findPieSlice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findPieSlice.d.ts","sourceRoot":"","sources":["../../../src/interaction/findPieSlice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAUxE,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;CAChD,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,uBAAuB,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,GACrB,aAAa,GAAG,IAAI,CA+EtB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { DataPoint } from '../config/types';
|
|
2
|
+
import type { ResolvedSeriesConfig } from '../config/OptionResolver';
|
|
3
|
+
import type { LinearScale } from '../utils/scales';
|
|
4
|
+
export type PointsAtXMatch = Readonly<{
|
|
5
|
+
seriesIndex: number;
|
|
6
|
+
dataIndex: number;
|
|
7
|
+
point: DataPoint;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Finds (at most) one nearest point per series at a given x position.
|
|
11
|
+
*
|
|
12
|
+
* Coordinate system contract (mirrors `findNearestPoint`):
|
|
13
|
+
* - `xValue` and optional `tolerance` MUST be in the same units as `xScale` **range**.
|
|
14
|
+
* (Example: if your `xScale.range()` is in grid-local CSS pixels, pass `payload.gridX` from `createEventManager`.)
|
|
15
|
+
* Note: ChartGPU's internal renderer scales are currently in clip space (NDC, typically \[-1, 1\]); in that case
|
|
16
|
+
* convert your pointer x into clip space before calling this helper.
|
|
17
|
+
*
|
|
18
|
+
* Behavior:
|
|
19
|
+
* - Assumes each series is sorted by increasing x in domain space.
|
|
20
|
+
* - Uses a lower-bound binary search in domain-x, then expands outward while x-distance alone can still improve.
|
|
21
|
+
* - Skips points with non-finite domain x or non-finite scaled x. If a series contains any NaN x values, this helper
|
|
22
|
+
* falls back to an O(n) scan for correctness (NaN breaks total ordering for binary search).
|
|
23
|
+
* - Stable tie-breaking: for equal distance, chooses the smaller `dataIndex`.
|
|
24
|
+
*
|
|
25
|
+
* If `tolerance` is provided, it is interpreted in **xScale range units**. Matches beyond tolerance are omitted.
|
|
26
|
+
* If `tolerance` is omitted (or non-finite), the nearest point per series is returned when possible.
|
|
27
|
+
*
|
|
28
|
+
* Bar series special-case:
|
|
29
|
+
* - Bars occupy x-intervals \([left, right)\) in **xScale range units** (grid-local CSS px for interaction scales),
|
|
30
|
+
* using the same shared layout math as the bar renderer (grouping + stacking slots).
|
|
31
|
+
* - If `tolerance` is finite, a bar match is only returned when `xValue` falls inside the bar interval expanded by
|
|
32
|
+
* `tolerance` on both sides: \([left - tolerance, right + tolerance)\).
|
|
33
|
+
* - If `tolerance` is omitted / non-finite, we first attempt an exact interval hit (no expansion) and otherwise fall
|
|
34
|
+
* back to the existing nearest-x behavior (so axis-trigger tooltips still work away from bars).
|
|
35
|
+
*/
|
|
36
|
+
export declare function findPointsAtX(series: ReadonlyArray<ResolvedSeriesConfig>, xValue: number, xScale: LinearScale, tolerance?: number): ReadonlyArray<PointsAtXMatch>;
|
|
37
|
+
//# sourceMappingURL=findPointsAtX.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findPointsAtX.d.ts","sourceRoot":"","sources":["../../../src/interaction/findPointsAtX.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAA2B,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC,CAAC;AA6GH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,aAAa,CAAC,cAAc,CAAC,CA6P/B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ResolvedAreaSeriesConfig } from '../config/OptionResolver';
|
|
2
|
+
import type { LinearScale } from '../utils/scales';
|
|
3
|
+
export interface AreaRenderer {
|
|
4
|
+
prepare(seriesConfig: ResolvedAreaSeriesConfig, data: ResolvedAreaSeriesConfig['data'], xScale: LinearScale, yScale: LinearScale, baseline?: number): void;
|
|
5
|
+
render(passEncoder: GPURenderPassEncoder): void;
|
|
6
|
+
dispose(): void;
|
|
7
|
+
}
|
|
8
|
+
export interface AreaRendererOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Must match the canvas context format used for the render pass color attachment.
|
|
11
|
+
* Usually this is `gpuContext.preferredFormat`.
|
|
12
|
+
*
|
|
13
|
+
* Defaults to `'bgra8unorm'` for backward compatibility.
|
|
14
|
+
*/
|
|
15
|
+
readonly targetFormat?: GPUTextureFormat;
|
|
16
|
+
}
|
|
17
|
+
export declare function createAreaRenderer(device: GPUDevice, options?: AreaRendererOptions): AreaRenderer;
|
|
18
|
+
//# sourceMappingURL=createAreaRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAreaRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createAreaRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,MAAM,WAAW,YAAY;IAC3B,OAAO,CACL,YAAY,EAAE,wBAAwB,EACtC,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,EACtC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAAC;IACR,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAuGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAyKjG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AxisConfig } from '../config/types';
|
|
2
|
+
import type { LinearScale } from '../utils/scales';
|
|
3
|
+
import type { GridArea } from './createGridRenderer';
|
|
4
|
+
export interface AxisRenderer {
|
|
5
|
+
prepare(axisConfig: AxisConfig, scale: LinearScale, orientation: 'x' | 'y', gridArea: GridArea, axisLineColor?: string, axisTickColor?: string, tickCount?: number): void;
|
|
6
|
+
render(passEncoder: GPURenderPassEncoder): void;
|
|
7
|
+
dispose(): void;
|
|
8
|
+
}
|
|
9
|
+
export interface AxisRendererOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Must match the canvas context format used for the render pass color attachment.
|
|
12
|
+
* Usually this is `gpuContext.preferredFormat`.
|
|
13
|
+
*
|
|
14
|
+
* Defaults to `'bgra8unorm'` for backward compatibility.
|
|
15
|
+
*/
|
|
16
|
+
readonly targetFormat?: GPUTextureFormat;
|
|
17
|
+
}
|
|
18
|
+
export declare function createAxisRenderer(device: GPUDevice, options?: AxisRendererOptions): AxisRenderer;
|
|
19
|
+
//# sourceMappingURL=createAxisRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAxisRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createAxisRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,YAAY;IAC3B,OAAO,CACL,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,GAAG,GAAG,GAAG,EACtB,QAAQ,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAAC;IACR,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAkKD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAsLjG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ResolvedBarSeriesConfig } from '../config/OptionResolver';
|
|
2
|
+
import type { LinearScale } from '../utils/scales';
|
|
3
|
+
import type { GridArea } from './createGridRenderer';
|
|
4
|
+
import type { DataStore } from '../data/createDataStore';
|
|
5
|
+
export interface BarRenderer {
|
|
6
|
+
prepare(seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>, dataStore: DataStore, xScale: LinearScale, yScale: LinearScale, gridArea: GridArea): void;
|
|
7
|
+
render(passEncoder: GPURenderPassEncoder): void;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
}
|
|
10
|
+
export interface BarRendererOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Must match the canvas context format used for the render pass color attachment.
|
|
13
|
+
* Usually this is `gpuContext.preferredFormat`.
|
|
14
|
+
*
|
|
15
|
+
* Defaults to `'bgra8unorm'` for backward compatibility.
|
|
16
|
+
*/
|
|
17
|
+
readonly targetFormat?: GPUTextureFormat;
|
|
18
|
+
}
|
|
19
|
+
export declare function createBarRenderer(device: GPUDevice, options?: BarRendererOptions): BarRenderer;
|
|
20
|
+
//# sourceMappingURL=createBarRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBarRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createBarRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC1B,OAAO,CACL,aAAa,EAAE,aAAa,CAAC,uBAAuB,CAAC,EACrD,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAAC;IACR,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAqGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAsY9F"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ResolvedCandlestickSeriesConfig } from '../config/OptionResolver';
|
|
2
|
+
import type { LinearScale } from '../utils/scales';
|
|
3
|
+
import type { GridArea } from './createGridRenderer';
|
|
4
|
+
export interface CandlestickRenderer {
|
|
5
|
+
prepare(series: ResolvedCandlestickSeriesConfig, data: ResolvedCandlestickSeriesConfig['data'], xScale: LinearScale, yScale: LinearScale, gridArea: GridArea, backgroundColor?: string): void;
|
|
6
|
+
render(passEncoder: GPURenderPassEncoder): void;
|
|
7
|
+
dispose(): void;
|
|
8
|
+
}
|
|
9
|
+
export interface CandlestickRendererOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Must match the canvas context format used for the render pass color attachment.
|
|
12
|
+
* Usually this is `gpuContext.preferredFormat`.
|
|
13
|
+
*
|
|
14
|
+
* Defaults to `'bgra8unorm'` for backward compatibility.
|
|
15
|
+
*/
|
|
16
|
+
readonly targetFormat?: GPUTextureFormat;
|
|
17
|
+
}
|
|
18
|
+
export declare function createCandlestickRenderer(device: GPUDevice, options?: CandlestickRendererOptions): CandlestickRenderer;
|
|
19
|
+
//# sourceMappingURL=createCandlestickRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCandlestickRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createCandlestickRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CACL,MAAM,EAAE,+BAA+B,EACvC,IAAI,EAAE,+BAA+B,CAAC,MAAM,CAAC,EAC7C,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,QAAQ,EAClB,eAAe,CAAC,EAAE,MAAM,GACvB,IAAI,CAAC;IACR,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAiJD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,mBAAmB,CA2VtH"}
|