velo-plot 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/EventEmitter-DAbs2K1C.js +60 -0
- package/dist/EventEmitter-DAbs2K1C.js.map +1 -0
- package/dist/core/Chart.d.ts +15 -0
- package/dist/core/ChartControls.d.ts +41 -0
- package/dist/core/ChartInitQueue.d.ts +50 -0
- package/dist/core/ChartLegend.d.ts +74 -0
- package/dist/core/ChartStatistics.d.ts +18 -0
- package/dist/core/EventEmitter.d.ts +30 -0
- package/dist/core/InteractionManager.d.ts +96 -0
- package/dist/core/OverlayRenderer.d.ts +89 -0
- package/dist/core/Series.d.ts +4 -0
- package/dist/core/animation/AnimationEngine.d.ts +156 -0
- package/dist/core/animation/index.d.ts +6 -0
- package/dist/core/annotations/AnnotationManager.d.ts +61 -0
- package/dist/core/annotations/index.d.ts +5 -0
- package/dist/core/annotations/types.d.ts +159 -0
- package/dist/core/chart/ChartAnimatedNavigation.d.ts +53 -0
- package/dist/core/chart/ChartAxisManager.d.ts +61 -0
- package/dist/core/chart/ChartCore.d.ts +336 -0
- package/dist/core/chart/ChartExporter.d.ts +18 -0
- package/dist/core/chart/ChartNavigation.d.ts +33 -0
- package/dist/core/chart/ChartPluginBridge.d.ts +34 -0
- package/dist/core/chart/ChartRenderLoop.d.ts +100 -0
- package/dist/core/chart/ChartRenderer.d.ts +52 -0
- package/dist/core/chart/ChartScaling.d.ts +31 -0
- package/dist/core/chart/ChartSeries.d.ts +4 -0
- package/dist/core/chart/ChartSetup.d.ts +67 -0
- package/dist/core/chart/ChartStateManager.d.ts +54 -0
- package/dist/core/chart/ChartUI.d.ts +40 -0
- package/dist/core/chart/exporter/SVGExporter.d.ts +6 -0
- package/dist/core/chart/exporter/index.d.ts +5 -0
- package/dist/core/chart/index.d.ts +14 -0
- package/dist/core/chart/series/SeriesActions.d.ts +7 -0
- package/dist/core/chart/series/SeriesBuffer.d.ts +4 -0
- package/dist/core/chart/series/index.d.ts +6 -0
- package/dist/core/chart/series/types.d.ts +22 -0
- package/dist/core/chart/types.d.ts +188 -0
- package/dist/core/clipboard/index.d.ts +137 -0
- package/dist/core/debug/index.d.ts +143 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/keybindings/index.d.ts +157 -0
- package/dist/core/layout/index.d.ts +12 -0
- package/dist/core/layout/types.d.ts +165 -0
- package/dist/core/loading/index.d.ts +104 -0
- package/dist/core/locale/index.d.ts +91 -0
- package/dist/core/responsive/ResponsiveManager.d.ts +133 -0
- package/dist/core/responsive/index.d.ts +4 -0
- package/dist/core/selection/SelectionManager.d.ts +165 -0
- package/dist/core/selection/index.d.ts +4 -0
- package/dist/core/series/Series.d.ts +73 -0
- package/dist/core/series/SeriesBounds.d.ts +3 -0
- package/dist/core/series/SeriesDataUtils.d.ts +7 -0
- package/dist/core/series/index.d.ts +6 -0
- package/dist/core/sync/index.d.ts +147 -0
- package/dist/core/theme-editor/index.d.ts +122 -0
- package/dist/examples/PluginDemonstration.d.ts +20 -0
- package/dist/examples.d.ts +25 -0
- package/dist/gpu/adapter/gpuRenderer.d.ts +135 -0
- package/dist/gpu/adapter/index.d.ts +7 -0
- package/dist/gpu/adapter/seriesAdapter.d.ts +88 -0
- package/dist/gpu/backends/webgl/WebGLBackend.d.ts +42 -0
- package/dist/gpu/backends/webgl/index.d.ts +5 -0
- package/dist/gpu/backends/webgl/programFactory.d.ts +30 -0
- package/dist/gpu/backends/webgl/shaders.d.ts +14 -0
- package/dist/gpu/backends/webgpu/MassiveDataRenderer.d.ts +111 -0
- package/dist/gpu/backends/webgpu/WebGPUBackend.d.ts +58 -0
- package/dist/gpu/backends/webgpu/pipelines/bandPipeline.d.ts +24 -0
- package/dist/gpu/backends/webgpu/pipelines/heatmapPipeline.d.ts +28 -0
- package/dist/gpu/backends/webgpu/pipelines/index.d.ts +10 -0
- package/dist/gpu/backends/webgpu/pipelines/instancedLinePipeline.d.ts +23 -0
- package/dist/gpu/backends/webgpu/pipelines/instancedPointPipeline.d.ts +25 -0
- package/dist/gpu/backends/webgpu/pipelines/linePipeline.d.ts +23 -0
- package/dist/gpu/backends/webgpu/pipelines/pointPipeline.d.ts +28 -0
- package/dist/gpu/backends/webgpu/pipelines/trianglePipeline.d.ts +5 -0
- package/dist/gpu/backends/webgpu/pipelines/triangleShader.d.ts +1 -0
- package/dist/gpu/backends/webgpu/shaders/heatmap.wgsl.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/index.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/instanced.wgsl.d.ts +16 -0
- package/dist/gpu/backends/webgpu/shaders/line.wgsl.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/point.wgsl.d.ts +9 -0
- package/dist/gpu/benchmark/benchmark.d.ts +74 -0
- package/dist/gpu/benchmark/index.d.ts +5 -0
- package/dist/gpu/compute/gpuCompute.d.ts +72 -0
- package/dist/gpu/compute/index.d.ts +6 -0
- package/dist/gpu/compute/shaders.d.ts +9 -0
- package/dist/gpu/drawList.d.ts +77 -0
- package/dist/gpu/examples/gallery.d.ts +20 -0
- package/dist/gpu/examples/index.d.ts +3 -0
- package/dist/gpu/examples/webgpu-line-demo.d.ts +8 -0
- package/dist/gpu/examples/webgpu-triangle.d.ts +1 -0
- package/dist/gpu/frame.d.ts +25 -0
- package/dist/gpu/index.d.ts +24 -0
- package/dist/gpu/resources/bufferStore.d.ts +40 -0
- package/dist/gpu/resources/index.d.ts +9 -0
- package/dist/gpu/resources/pipelineCache.d.ts +33 -0
- package/dist/gpu/resources/textureStore.d.ts +41 -0
- package/dist/gpu/types.d.ts +47 -0
- package/dist/index-BMiZoKmm.js +536 -0
- package/dist/index-BMiZoKmm.js.map +1 -0
- package/dist/index-Ce2JgkH_.js +282 -0
- package/dist/index-Ce2JgkH_.js.map +1 -0
- package/dist/index-D8ifudJH.js +2431 -0
- package/dist/index-D8ifudJH.js.map +1 -0
- package/dist/index-Dag88bW4.js +499 -0
- package/dist/index-Dag88bW4.js.map +1 -0
- package/dist/index-qhscKTDy.js +309 -0
- package/dist/index-qhscKTDy.js.map +1 -0
- package/dist/index-x4stH3jD.js +282 -0
- package/dist/index-x4stH3jD.js.map +1 -0
- package/dist/index.core-CYu3tydL.js +7252 -0
- package/dist/index.core-CYu3tydL.js.map +1 -0
- package/dist/index.core.d.ts +20 -0
- package/dist/index.d.ts +51 -0
- package/dist/overlay/CanvasOverlay.d.ts +102 -0
- package/dist/overlay/index.d.ts +4 -0
- package/dist/plugins/3d/Area3DRenderer.d.ts +122 -0
- package/dist/plugins/3d/Axes3D.d.ts +104 -0
- package/dist/plugins/3d/Bubble3DRenderer.d.ts +198 -0
- package/dist/plugins/3d/Impulse3DRenderer.d.ts +130 -0
- package/dist/plugins/3d/Line3DRenderer.d.ts +118 -0
- package/dist/plugins/3d/PointCloud3DRenderer.d.ts +84 -0
- package/dist/plugins/3d/Raycaster3D.d.ts +137 -0
- package/dist/plugins/3d/Ribbon3DRenderer.d.ts +83 -0
- package/dist/plugins/3d/SurfaceBar3DRenderer.d.ts +92 -0
- package/dist/plugins/3d/SurfaceMesh3DRenderer.d.ts +130 -0
- package/dist/plugins/3d/Tooltip3D.d.ts +71 -0
- package/dist/plugins/3d/VectorField3DRenderer.d.ts +86 -0
- package/dist/plugins/3d/Voxel3DRenderer.d.ts +89 -0
- package/dist/plugins/3d/Waterfall3DRenderer.d.ts +94 -0
- package/dist/plugins/3d/camera/OrbitCamera.d.ts +99 -0
- package/dist/plugins/3d/camera/index.d.ts +1 -0
- package/dist/plugins/3d/colorThemes.d.ts +39 -0
- package/dist/plugins/3d/controls/OrbitController.d.ts +69 -0
- package/dist/plugins/3d/controls/index.d.ts +1 -0
- package/dist/plugins/3d/index.d.ts +50 -0
- package/dist/plugins/3d/math/Mat4.d.ts +33 -0
- package/dist/plugins/3d/math/Vec3.d.ts +37 -0
- package/dist/plugins/3d/math/index.d.ts +4 -0
- package/dist/plugins/3d/mesh/InstancedMesh.d.ts +42 -0
- package/dist/plugins/3d/mesh/geometry.d.ts +34 -0
- package/dist/plugins/3d/mesh/index.d.ts +2 -0
- package/dist/plugins/3d/series/Area3D.d.ts +17 -0
- package/dist/plugins/3d/series/Column3D.d.ts +20 -0
- package/dist/plugins/3d/series/Heatmap3D.d.ts +17 -0
- package/dist/plugins/3d/series/Impulse3D.d.ts +16 -0
- package/dist/plugins/3d/series/PointLine3D.d.ts +20 -0
- package/dist/plugins/3d/series/Ribbon3D.d.ts +17 -0
- package/dist/plugins/3d/series/Scatter3D.d.ts +21 -0
- package/dist/plugins/3d/series/SurfaceMesh3D.d.ts +35 -0
- package/dist/plugins/3d/series/Waterfall3D.d.ts +38 -0
- package/dist/plugins/3d/series/index.d.ts +13 -0
- package/dist/plugins/3d/series/types.d.ts +143 -0
- package/dist/plugins/3d/shader/index.d.ts +2 -0
- package/dist/plugins/3d/shader/programs.d.ts +24 -0
- package/dist/plugins/3d/shader/sources.d.ts +27 -0
- package/dist/plugins/3d/types.d.ts +71 -0
- package/dist/plugins/3d.d.ts +3 -0
- package/dist/plugins/3d.js +5498 -0
- package/dist/plugins/3d.js.map +1 -0
- package/dist/plugins/PluginContext.d.ts +53 -0
- package/dist/plugins/PluginManager.d.ts +129 -0
- package/dist/plugins/PluginRegistry.d.ts +38 -0
- package/dist/plugins/analysis/SeriesFit.d.ts +3 -0
- package/dist/plugins/analysis/contours.d.ts +20 -0
- package/dist/plugins/analysis/fft.d.ts +138 -0
- package/dist/plugins/analysis/filters.d.ts +76 -0
- package/dist/plugins/analysis/fitting.d.ts +24 -0
- package/dist/plugins/analysis/index.d.ts +29 -0
- package/dist/plugins/analysis/indicators.d.ts +148 -0
- package/dist/plugins/analysis/math.d.ts +32 -0
- package/dist/plugins/analysis/statistics.d.ts +78 -0
- package/dist/plugins/analysis/utils.d.ts +150 -0
- package/dist/plugins/analysis.d.ts +3 -0
- package/dist/plugins/analysis.js +1202 -0
- package/dist/plugins/analysis.js.map +1 -0
- package/dist/plugins/annotations/index.d.ts +16 -0
- package/dist/plugins/annotations.d.ts +3 -0
- package/dist/plugins/annotations.js +438 -0
- package/dist/plugins/annotations.js.map +1 -0
- package/dist/plugins/anomaly-detection/algorithms.d.ts +38 -0
- package/dist/plugins/anomaly-detection/index.d.ts +16 -0
- package/dist/plugins/anomaly-detection/types.d.ts +57 -0
- package/dist/plugins/broken-axis/BrokenAxisScale.d.ts +24 -0
- package/dist/plugins/broken-axis/exports.d.ts +6 -0
- package/dist/plugins/broken-axis/index.d.ts +6 -0
- package/dist/plugins/broken-axis/types.d.ts +50 -0
- package/dist/plugins/builtins/crosshair/CrosshairPlugin.d.ts +40 -0
- package/dist/plugins/builtins/crosshair/index.d.ts +1 -0
- package/dist/plugins/builtins/data-logger/DataLoggerPlugin.d.ts +11 -0
- package/dist/plugins/builtins/data-logger/index.d.ts +1 -0
- package/dist/plugins/builtins/direction-indicator/DirectionIndicatorPlugin.d.ts +17 -0
- package/dist/plugins/builtins/direction-indicator/index.d.ts +2 -0
- package/dist/plugins/builtins/grid-highlight/GridHighlightPlugin.d.ts +17 -0
- package/dist/plugins/builtins/grid-highlight/index.d.ts +1 -0
- package/dist/plugins/builtins/index.d.ts +25 -0
- package/dist/plugins/builtins/stats/StatsPlugin.d.ts +11 -0
- package/dist/plugins/builtins/stats/index.d.ts +1 -0
- package/dist/plugins/builtins/watermark/WatermarkPlugin.d.ts +15 -0
- package/dist/plugins/builtins/watermark/index.d.ts +1 -0
- package/dist/plugins/caching/exports.d.ts +6 -0
- package/dist/plugins/caching/index.d.ts +6 -0
- package/dist/plugins/caching/types.d.ts +120 -0
- package/dist/plugins/clipboard/index.d.ts +20 -0
- package/dist/plugins/clipboard.d.ts +3 -0
- package/dist/plugins/clipboard.js +270 -0
- package/dist/plugins/clipboard.js.map +1 -0
- package/dist/plugins/context-menu/index.d.ts +12 -0
- package/dist/plugins/context-menu/renderer.d.ts +43 -0
- package/dist/plugins/context-menu/types.d.ts +202 -0
- package/dist/plugins/context-menu.d.ts +3 -0
- package/dist/plugins/context-menu.js +621 -0
- package/dist/plugins/context-menu.js.map +1 -0
- package/dist/plugins/data-export/formatters.d.ts +34 -0
- package/dist/plugins/data-export/index.d.ts +15 -0
- package/dist/plugins/data-export/types.d.ts +166 -0
- package/dist/plugins/data-export.d.ts +3 -0
- package/dist/plugins/data-export.js +463 -0
- package/dist/plugins/data-export.js.map +1 -0
- package/dist/plugins/data-transform/index.d.ts +6 -0
- package/dist/plugins/data-transform/types.d.ts +34 -0
- package/dist/plugins/debug/index.d.ts +24 -0
- package/dist/plugins/debug.d.ts +3 -0
- package/dist/plugins/debug.js +330 -0
- package/dist/plugins/debug.js.map +1 -0
- package/dist/plugins/drag-edit/exports.d.ts +6 -0
- package/dist/plugins/drag-edit/index.d.ts +6 -0
- package/dist/plugins/drag-edit/types.d.ts +118 -0
- package/dist/plugins/forecasting/algorithms.d.ts +6 -0
- package/dist/plugins/forecasting/exports.d.ts +3 -0
- package/dist/plugins/forecasting/index.d.ts +11 -0
- package/dist/plugins/forecasting/types.d.ts +88 -0
- package/dist/plugins/gpu/index.d.ts +24 -0
- package/dist/plugins/gpu.d.ts +3 -0
- package/dist/plugins/gpu.js +2430 -0
- package/dist/plugins/gpu.js.map +1 -0
- package/dist/plugins/i18n/index.d.ts +22 -0
- package/dist/plugins/i18n.d.ts +3 -0
- package/dist/plugins/i18n.js +37 -0
- package/dist/plugins/i18n.js.map +1 -0
- package/dist/plugins/index.d.ts +110 -0
- package/dist/plugins/keyboard/index.d.ts +15 -0
- package/dist/plugins/keyboard.d.ts +3 -0
- package/dist/plugins/keyboard.js +8 -0
- package/dist/plugins/keyboard.js.map +1 -0
- package/dist/plugins/latex/exports.d.ts +6 -0
- package/dist/plugins/latex/index.d.ts +8 -0
- package/dist/plugins/latex/parser.d.ts +6 -0
- package/dist/plugins/latex/renderer.d.ts +6 -0
- package/dist/plugins/latex/symbols.d.ts +28 -0
- package/dist/plugins/latex/types.d.ts +88 -0
- package/dist/plugins/lazy-load/exports.d.ts +6 -0
- package/dist/plugins/lazy-load/index.d.ts +6 -0
- package/dist/plugins/lazy-load/types.d.ts +121 -0
- package/dist/plugins/loading/index.d.ts +15 -0
- package/dist/plugins/loading.d.ts +3 -0
- package/dist/plugins/loading.js +7 -0
- package/dist/plugins/loading.js.map +1 -0
- package/dist/plugins/ml-integration/exports.d.ts +11 -0
- package/dist/plugins/ml-integration/index.d.ts +6 -0
- package/dist/plugins/ml-integration/native-algorithms.d.ts +69 -0
- package/dist/plugins/ml-integration/types.d.ts +74 -0
- package/dist/plugins/offscreen/exports.d.ts +6 -0
- package/dist/plugins/offscreen/index.d.ts +6 -0
- package/dist/plugins/offscreen/pool.d.ts +32 -0
- package/dist/plugins/offscreen/types.d.ts +35 -0
- package/dist/plugins/pattern-recognition/index.d.ts +6 -0
- package/dist/plugins/pattern-recognition/patterns.d.ts +3 -0
- package/dist/plugins/pattern-recognition/types.d.ts +245 -0
- package/dist/plugins/radar/index.d.ts +6 -0
- package/dist/plugins/radar/types.d.ts +40 -0
- package/dist/plugins/regression/algorithms.d.ts +6 -0
- package/dist/plugins/regression/index.d.ts +6 -0
- package/dist/plugins/regression/types.d.ts +261 -0
- package/dist/plugins/roi/exports.d.ts +6 -0
- package/dist/plugins/roi/index.d.ts +49 -0
- package/dist/plugins/roi/types.d.ts +60 -0
- package/dist/plugins/snapshot/index.d.ts +11 -0
- package/dist/plugins/snapshot/types.d.ts +38 -0
- package/dist/plugins/streaming/index.d.ts +32 -0
- package/dist/plugins/streaming.d.ts +3 -0
- package/dist/plugins/streaming.js +13 -0
- package/dist/plugins/streaming.js.map +1 -0
- package/dist/plugins/sync/index.d.ts +22 -0
- package/dist/plugins/sync.d.ts +3 -0
- package/dist/plugins/sync.js +261 -0
- package/dist/plugins/sync.js.map +1 -0
- package/dist/plugins/theme-editor/index.d.ts +18 -0
- package/dist/plugins/theme-editor.d.ts +3 -0
- package/dist/plugins/theme-editor.js +7 -0
- package/dist/plugins/theme-editor.js.map +1 -0
- package/dist/plugins/tools/delta-tool/index.d.ts +159 -0
- package/dist/plugins/tools/index.d.ts +21 -0
- package/dist/plugins/tools/peak-tool/index.d.ts +159 -0
- package/dist/plugins/tools/tooltip/TooltipManager.d.ts +213 -0
- package/dist/plugins/tools/tooltip/TooltipPositioner.d.ts +83 -0
- package/dist/plugins/tools/tooltip/TooltipRenderer.d.ts +64 -0
- package/dist/plugins/tools/tooltip/index.d.ts +18 -0
- package/dist/plugins/tools/tooltip/templates/AnnotationTemplate.d.ts +18 -0
- package/dist/plugins/tools/tooltip/templates/CrosshairTemplate.d.ts +39 -0
- package/dist/plugins/tools/tooltip/templates/DefaultTemplate.d.ts +30 -0
- package/dist/plugins/tools/tooltip/templates/HeatmapTemplate.d.ts +34 -0
- package/dist/plugins/tools/tooltip/templates/MinimalTemplate.d.ts +26 -0
- package/dist/plugins/tools/tooltip/templates/RangeTemplate.d.ts +18 -0
- package/dist/plugins/tools/tooltip/templates/ScientificTemplate.d.ts +34 -0
- package/dist/plugins/tools/tooltip/templates/index.d.ts +27 -0
- package/dist/plugins/tools/tooltip/themes.d.ts +48 -0
- package/dist/plugins/tools/tooltip/types.d.ts +396 -0
- package/dist/plugins/tools.d.ts +3 -0
- package/dist/plugins/tools.js +9 -0
- package/dist/plugins/tools.js.map +1 -0
- package/dist/plugins/types.d.ts +451 -0
- package/dist/plugins/video-recorder/exports.d.ts +6 -0
- package/dist/plugins/video-recorder/index.d.ts +6 -0
- package/dist/plugins/video-recorder/types.d.ts +55 -0
- package/dist/plugins/virtualization/exports.d.ts +6 -0
- package/dist/plugins/virtualization/index.d.ts +6 -0
- package/dist/plugins/virtualization/types.d.ts +48 -0
- package/dist/react/SciPlot.d.ts +60 -0
- package/dist/react/index.d.ts +5 -0
- package/dist/react/useSciPlot.d.ts +56 -0
- package/dist/renderer/BarRenderer.d.ts +14 -0
- package/dist/renderer/CandlestickRenderer.d.ts +12 -0
- package/dist/renderer/GaugeRenderer.d.ts +3 -0
- package/dist/renderer/HeatmapRenderer.d.ts +15 -0
- package/dist/renderer/NativeWebGLRenderer.d.ts +16 -0
- package/dist/renderer/PolarRenderer.d.ts +64 -0
- package/dist/renderer/RendererInterface.d.ts +70 -0
- package/dist/renderer/SankeyRenderer.d.ts +3 -0
- package/dist/renderer/WebGPURenderer.d.ts +16 -0
- package/dist/renderer/index.d.ts +13 -0
- package/dist/renderer/native/NativeWebGLRenderer.d.ts +31 -0
- package/dist/renderer/native/bufferStore.d.ts +11 -0
- package/dist/renderer/native/draw.d.ts +47 -0
- package/dist/renderer/native/programFactory.d.ts +3 -0
- package/dist/renderer/native/renderFrame.d.ts +3 -0
- package/dist/renderer/native/shaderSources.d.ts +6 -0
- package/dist/renderer/native/textureStore.d.ts +8 -0
- package/dist/renderer/native/types.d.ts +77 -0
- package/dist/renderer/native/utils.d.ts +31 -0
- package/dist/renderer/radar/RadarRenderer.d.ts +71 -0
- package/dist/renderer/radar/index.d.ts +10 -0
- package/dist/renderer/shaders.d.ts +77 -0
- package/dist/renderer/ternary/TernaryRenderer.d.ts +39 -0
- package/dist/renderer/ternary/index.d.ts +6 -0
- package/dist/renderer/ternary/types.d.ts +56 -0
- package/dist/scales/index.d.ts +54 -0
- package/dist/serialization/index.d.ts +153 -0
- package/dist/streaming/backpressure.d.ts +179 -0
- package/dist/streaming/index.d.ts +7 -0
- package/dist/streaming/mock.d.ts +12 -0
- package/dist/streaming/types.d.ts +57 -0
- package/dist/streaming/utils.d.ts +19 -0
- package/dist/streaming/websocket.d.ts +6 -0
- package/dist/testing/index.d.ts +225 -0
- package/dist/theme/colorSchemes.d.ts +56 -0
- package/dist/theme/index.d.ts +138 -0
- package/dist/types.d.ts +753 -0
- package/dist/utils-Dbro9-qM.js +254 -0
- package/dist/utils-Dbro9-qM.js.map +1 -0
- package/dist/velo-plot.d.ts +1 -0
- package/dist/velo-plot.full.d.ts +1 -0
- package/dist/velo-plot.full.js +5804 -0
- package/dist/velo-plot.full.js.map +1 -0
- package/dist/velo-plot.js +31 -0
- package/dist/velo-plot.js.map +1 -0
- package/dist/workers/downsample.d.ts +34 -0
- package/dist/workers/downsample.worker.d.ts +46 -0
- package/package.json +185 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { DeltaMeasurement, Bounds } from '../../../types';
|
|
2
|
+
import { AnimationEngine } from '../../../core/animation';
|
|
3
|
+
|
|
4
|
+
export interface DeltaToolOptions {
|
|
5
|
+
/** Line color for measurement (default: '#ff6b6b') */
|
|
6
|
+
lineColor?: string;
|
|
7
|
+
/** Line width in pixels (default: 2) */
|
|
8
|
+
lineWidth?: number;
|
|
9
|
+
/** Show labels at measurement points (default: true) */
|
|
10
|
+
showLabels?: boolean;
|
|
11
|
+
/** Label font size (default: 12) */
|
|
12
|
+
labelFontSize?: number;
|
|
13
|
+
/** Label background color (default: 'rgba(0,0,0,0.8)') */
|
|
14
|
+
labelBackground?: string;
|
|
15
|
+
/** Label text color (default: '#ffffff') */
|
|
16
|
+
labelColor?: string;
|
|
17
|
+
/** Show delta values inline (default: true) */
|
|
18
|
+
showDelta?: boolean;
|
|
19
|
+
/** Number precision for values (default: 4) */
|
|
20
|
+
precision?: number;
|
|
21
|
+
/** Show slope value (default: true) */
|
|
22
|
+
showSlope?: boolean;
|
|
23
|
+
/** Show distance value (default: true) */
|
|
24
|
+
showDistance?: boolean;
|
|
25
|
+
/** Custom CSS class for overlay elements */
|
|
26
|
+
className?: string;
|
|
27
|
+
/** Point highlight size when hovering (default: 10) */
|
|
28
|
+
highlightSize?: number;
|
|
29
|
+
/** Point highlight color (default: '#00f2ff') */
|
|
30
|
+
highlightColor?: string;
|
|
31
|
+
/** Snap radius in pixels for detecting nearby points (default: 20) */
|
|
32
|
+
snapRadius?: number;
|
|
33
|
+
}
|
|
34
|
+
/** Data point with series information */
|
|
35
|
+
export interface DataPoint {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
seriesId: string;
|
|
39
|
+
yAxisId?: string;
|
|
40
|
+
index: number;
|
|
41
|
+
pixelX: number;
|
|
42
|
+
pixelY: number;
|
|
43
|
+
}
|
|
44
|
+
export interface DeltaToolState {
|
|
45
|
+
/** Whether the tool is enabled */
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
/** Selection state: 'idle' | 'waitingSecond' | 'complete' */
|
|
48
|
+
selectionState: 'idle' | 'waitingSecond' | 'complete';
|
|
49
|
+
/** First selected point */
|
|
50
|
+
point1: DataPoint | null;
|
|
51
|
+
/** Second selected point */
|
|
52
|
+
point2: DataPoint | null;
|
|
53
|
+
/** Currently hovered point (for highlighting) */
|
|
54
|
+
hoveredPoint: DataPoint | null;
|
|
55
|
+
/** Last completed measurement */
|
|
56
|
+
lastMeasurement: DeltaMeasurement | null;
|
|
57
|
+
}
|
|
58
|
+
export interface SeriesData {
|
|
59
|
+
id: string;
|
|
60
|
+
x: Float32Array | Float64Array | number[];
|
|
61
|
+
y: Float32Array | Float64Array | number[];
|
|
62
|
+
yAxisId?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface DeltaToolContext {
|
|
65
|
+
container: HTMLElement;
|
|
66
|
+
getPlotArea: () => {
|
|
67
|
+
x: number;
|
|
68
|
+
y: number;
|
|
69
|
+
width: number;
|
|
70
|
+
height: number;
|
|
71
|
+
};
|
|
72
|
+
getViewBounds: () => Bounds;
|
|
73
|
+
getYBounds?: (yAxisId?: string) => {
|
|
74
|
+
yMin: number;
|
|
75
|
+
yMax: number;
|
|
76
|
+
};
|
|
77
|
+
requestRender: () => void;
|
|
78
|
+
getSeries?: () => SeriesData[];
|
|
79
|
+
onMeasure?: (measurement: DeltaMeasurement) => void;
|
|
80
|
+
animationEngine?: AnimationEngine;
|
|
81
|
+
}
|
|
82
|
+
export declare class DeltaTool {
|
|
83
|
+
private ctx;
|
|
84
|
+
private options;
|
|
85
|
+
private state;
|
|
86
|
+
private overlayCanvas;
|
|
87
|
+
private overlayCtx;
|
|
88
|
+
private labelOffset;
|
|
89
|
+
private isDraggingLabel;
|
|
90
|
+
private labelBounds;
|
|
91
|
+
private dragStart;
|
|
92
|
+
private crosshairPosition;
|
|
93
|
+
private boundMouseMove;
|
|
94
|
+
private boundClick;
|
|
95
|
+
private boundKeyDown;
|
|
96
|
+
private boundMouseDown;
|
|
97
|
+
private boundMouseUp;
|
|
98
|
+
private boundResize;
|
|
99
|
+
constructor(context: DeltaToolContext, options?: DeltaToolOptions);
|
|
100
|
+
/**
|
|
101
|
+
* Enable the delta measurement tool
|
|
102
|
+
*/
|
|
103
|
+
enable(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Disable the delta measurement tool
|
|
106
|
+
*/
|
|
107
|
+
disable(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Toggle the tool on/off
|
|
110
|
+
*/
|
|
111
|
+
toggle(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Check if tool is enabled
|
|
114
|
+
*/
|
|
115
|
+
isEnabled(): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Get the current state
|
|
118
|
+
*/
|
|
119
|
+
getState(): DeltaToolState;
|
|
120
|
+
/**
|
|
121
|
+
* Get the last completed measurement
|
|
122
|
+
*/
|
|
123
|
+
getMeasurement(): DeltaMeasurement | null;
|
|
124
|
+
/**
|
|
125
|
+
* Clear the current measurement
|
|
126
|
+
*/
|
|
127
|
+
clear(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Destroy the tool and cleanup
|
|
130
|
+
*/
|
|
131
|
+
destroy(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Recalculate measurements (useful if data changes)
|
|
134
|
+
*/
|
|
135
|
+
recalculate(): void;
|
|
136
|
+
private createOverlay;
|
|
137
|
+
private resizeOverlay;
|
|
138
|
+
private destroyOverlay;
|
|
139
|
+
private attachListeners;
|
|
140
|
+
private detachListeners;
|
|
141
|
+
private handleMouseMove;
|
|
142
|
+
private handleLabelMouseDown;
|
|
143
|
+
private handleLabelMouseUp;
|
|
144
|
+
private handleClick;
|
|
145
|
+
private handleKeyDown;
|
|
146
|
+
private findNearestPoint;
|
|
147
|
+
private calculateMeasurement;
|
|
148
|
+
renderOverlay(): void;
|
|
149
|
+
private drawPointTooltip;
|
|
150
|
+
private drawPointLabel;
|
|
151
|
+
private drawMeasurementLabel;
|
|
152
|
+
private drawStatusIndicator;
|
|
153
|
+
private roundRect;
|
|
154
|
+
private formatValue;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create a delta tool for a chart context
|
|
158
|
+
*/
|
|
159
|
+
export declare function createDeltaTool(context: DeltaToolContext, options?: DeltaToolOptions): DeltaTool;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DeltaTool } from './delta-tool';
|
|
2
|
+
import { PeakTool } from './peak-tool';
|
|
3
|
+
import { TooltipManager } from './tooltip';
|
|
4
|
+
import { ChartPlugin } from '../types';
|
|
5
|
+
|
|
6
|
+
export interface PluginToolsConfig {
|
|
7
|
+
/** Enable Delta measurement tool */
|
|
8
|
+
enableDeltaTool?: boolean;
|
|
9
|
+
/** Enable Peak detection tool */
|
|
10
|
+
enablePeakTool?: boolean;
|
|
11
|
+
/** Use advanced tooltip manager */
|
|
12
|
+
useEnhancedTooltips?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* SciPlot Tools Plugin
|
|
16
|
+
*
|
|
17
|
+
* Adds specialized tools for scientific data analysis and interaction.
|
|
18
|
+
*/
|
|
19
|
+
export declare function PluginTools(_config?: PluginToolsConfig): ChartPlugin<PluginToolsConfig>;
|
|
20
|
+
export { DeltaTool, PeakTool, TooltipManager };
|
|
21
|
+
export default PluginTools;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { PeakMeasurement, Bounds } from '../../../types';
|
|
2
|
+
import { AnimationEngine } from '../../../core/animation';
|
|
3
|
+
|
|
4
|
+
export interface PeakToolOptions {
|
|
5
|
+
/** Line color for measurement (default: '#ff6b6b') */
|
|
6
|
+
lineColor?: string;
|
|
7
|
+
/** Line width in pixels (default: 2) */
|
|
8
|
+
lineWidth?: number;
|
|
9
|
+
/** Show labels at measurement points (default: true) */
|
|
10
|
+
showLabels?: boolean;
|
|
11
|
+
/** Label font size (default: 12) */
|
|
12
|
+
labelFontSize?: number;
|
|
13
|
+
/** Label background color (default: 'rgba(0,0,0,0.8)') */
|
|
14
|
+
labelBackground?: string;
|
|
15
|
+
/** Label text color (default: '#ffffff') */
|
|
16
|
+
labelColor?: string;
|
|
17
|
+
/** Show peak values inline (default: true) */
|
|
18
|
+
showPeak?: boolean;
|
|
19
|
+
/** Number precision for values (default: 4) */
|
|
20
|
+
precision?: number;
|
|
21
|
+
/** Custom CSS class for overlay elements */
|
|
22
|
+
className?: string;
|
|
23
|
+
/** Number of points to use for baseline regression (default: 10) */
|
|
24
|
+
baselineWindow?: number;
|
|
25
|
+
/** Area fill color (default: 'rgba(255, 107, 107, 0.3)') */
|
|
26
|
+
areaFill?: string;
|
|
27
|
+
/** Point highlight size when hovering (default: 10) */
|
|
28
|
+
highlightSize?: number;
|
|
29
|
+
/** Point highlight color (default: '#00f2ff') */
|
|
30
|
+
highlightColor?: string;
|
|
31
|
+
/** Snap radius in pixels for detecting nearby points (default: 20) */
|
|
32
|
+
snapRadius?: number;
|
|
33
|
+
}
|
|
34
|
+
/** Data point with series information */
|
|
35
|
+
export interface DataPoint {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
seriesId: string;
|
|
39
|
+
yAxisId?: string;
|
|
40
|
+
index: number;
|
|
41
|
+
pixelX: number;
|
|
42
|
+
pixelY: number;
|
|
43
|
+
}
|
|
44
|
+
export interface PeakToolState {
|
|
45
|
+
/** Whether the tool is enabled */
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
/** Selection state: 'idle' | 'waitingSecond' | 'complete' */
|
|
48
|
+
selectionState: 'idle' | 'waitingSecond' | 'complete';
|
|
49
|
+
/** First selected point */
|
|
50
|
+
point1: DataPoint | null;
|
|
51
|
+
/** Second selected point */
|
|
52
|
+
point2: DataPoint | null;
|
|
53
|
+
/** Currently hovered point (for highlighting) */
|
|
54
|
+
hoveredPoint: DataPoint | null;
|
|
55
|
+
/** Last completed measurement */
|
|
56
|
+
lastMeasurement: PeakMeasurement | null;
|
|
57
|
+
}
|
|
58
|
+
export interface SeriesData {
|
|
59
|
+
id: string;
|
|
60
|
+
x: Float32Array | Float64Array | number[];
|
|
61
|
+
y: Float32Array | Float64Array | number[];
|
|
62
|
+
yAxisId?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface PeakToolContext {
|
|
65
|
+
container: HTMLElement;
|
|
66
|
+
getPlotArea: () => {
|
|
67
|
+
x: number;
|
|
68
|
+
y: number;
|
|
69
|
+
width: number;
|
|
70
|
+
height: number;
|
|
71
|
+
};
|
|
72
|
+
getViewBounds: () => Bounds;
|
|
73
|
+
getYBounds?: (yAxisId?: string) => {
|
|
74
|
+
yMin: number;
|
|
75
|
+
yMax: number;
|
|
76
|
+
};
|
|
77
|
+
requestRender: () => void;
|
|
78
|
+
getSeries?: () => SeriesData[];
|
|
79
|
+
onMeasure?: (measurement: PeakMeasurement) => void;
|
|
80
|
+
animationEngine?: AnimationEngine;
|
|
81
|
+
}
|
|
82
|
+
export declare class PeakTool {
|
|
83
|
+
private ctx;
|
|
84
|
+
private options;
|
|
85
|
+
private state;
|
|
86
|
+
private overlayCanvas;
|
|
87
|
+
private overlayCtx;
|
|
88
|
+
private labelOffset;
|
|
89
|
+
private isDraggingLabel;
|
|
90
|
+
private labelBounds;
|
|
91
|
+
private dragStart;
|
|
92
|
+
private crosshairPosition;
|
|
93
|
+
private boundMouseMove;
|
|
94
|
+
private boundClick;
|
|
95
|
+
private boundKeyDown;
|
|
96
|
+
private boundMouseDown;
|
|
97
|
+
private boundMouseUp;
|
|
98
|
+
private boundResize;
|
|
99
|
+
constructor(context: PeakToolContext, options?: PeakToolOptions);
|
|
100
|
+
/**
|
|
101
|
+
* Enable the peak measurement tool
|
|
102
|
+
*/
|
|
103
|
+
enable(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Disable the peak measurement tool
|
|
106
|
+
*/
|
|
107
|
+
disable(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Toggle the tool on/off
|
|
110
|
+
*/
|
|
111
|
+
toggle(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Check if tool is enabled
|
|
114
|
+
*/
|
|
115
|
+
isEnabled(): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Get the current state
|
|
118
|
+
*/
|
|
119
|
+
getState(): PeakToolState;
|
|
120
|
+
/**
|
|
121
|
+
* Get the last completed measurement
|
|
122
|
+
*/
|
|
123
|
+
getMeasurement(): PeakMeasurement | null;
|
|
124
|
+
/**
|
|
125
|
+
* Clear the current measurement
|
|
126
|
+
*/
|
|
127
|
+
clear(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Destroy the tool and cleanup
|
|
130
|
+
*/
|
|
131
|
+
destroy(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Recalculate measurements (useful if data changes)
|
|
134
|
+
*/
|
|
135
|
+
recalculate(): void;
|
|
136
|
+
private createOverlay;
|
|
137
|
+
private resizeOverlay;
|
|
138
|
+
private destroyOverlay;
|
|
139
|
+
private attachListeners;
|
|
140
|
+
private detachListeners;
|
|
141
|
+
private handleMouseMove;
|
|
142
|
+
private handleLabelMouseDown;
|
|
143
|
+
private handleLabelMouseUp;
|
|
144
|
+
private handleClick;
|
|
145
|
+
private handleKeyDown;
|
|
146
|
+
private findNearestPoint;
|
|
147
|
+
private calculateMeasurement;
|
|
148
|
+
renderOverlay(): void;
|
|
149
|
+
private drawPointTooltip;
|
|
150
|
+
private drawPointLabel;
|
|
151
|
+
private drawMeasurementLabel;
|
|
152
|
+
private drawStatusIndicator;
|
|
153
|
+
private roundRect;
|
|
154
|
+
private formatValue;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create a peak tool for a chart context
|
|
158
|
+
*/
|
|
159
|
+
export declare function createPeakTool(context: PeakToolContext, options?: PeakToolOptions): PeakTool;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { PlotArea, Bounds } from '../../../types';
|
|
2
|
+
import { Scale } from '../../../scales';
|
|
3
|
+
import { Series } from '../../../core/Series';
|
|
4
|
+
import { TooltipData, TooltipOptions, TooltipTheme, TooltipTemplate, ShowTooltipOptions, TooltipEventMap } from './types';
|
|
5
|
+
import { ChartTheme } from '../../../theme';
|
|
6
|
+
|
|
7
|
+
export interface TooltipManagerConfig {
|
|
8
|
+
/** Canvas 2D context for rendering */
|
|
9
|
+
overlayCtx: CanvasRenderingContext2D;
|
|
10
|
+
/** Chart theme (for auto-selecting tooltip theme) */
|
|
11
|
+
chartTheme: ChartTheme;
|
|
12
|
+
/** Function to get current plot area */
|
|
13
|
+
getPlotArea: () => PlotArea;
|
|
14
|
+
/** Function to get all series */
|
|
15
|
+
getSeries: () => Series[];
|
|
16
|
+
/** Function to convert pixel X to data X */
|
|
17
|
+
pixelToDataX: (px: number) => number;
|
|
18
|
+
/** Function to convert pixel Y to data Y */
|
|
19
|
+
pixelToDataY: (py: number) => number;
|
|
20
|
+
/** Function to get X scale */
|
|
21
|
+
getXScale: () => Scale;
|
|
22
|
+
/** Function to get Y scales */
|
|
23
|
+
getYScales: () => Map<string, Scale>;
|
|
24
|
+
/** Function to get view bounds */
|
|
25
|
+
getViewBounds: () => Bounds;
|
|
26
|
+
/** Initial options */
|
|
27
|
+
options?: TooltipOptions;
|
|
28
|
+
}
|
|
29
|
+
export declare class TooltipManager {
|
|
30
|
+
private ctx;
|
|
31
|
+
private getPlotArea;
|
|
32
|
+
private getSeries;
|
|
33
|
+
private pixelToDataX;
|
|
34
|
+
private pixelToDataY;
|
|
35
|
+
private getXScale;
|
|
36
|
+
private getYScales;
|
|
37
|
+
private options;
|
|
38
|
+
private theme;
|
|
39
|
+
private positioner;
|
|
40
|
+
private renderer;
|
|
41
|
+
private templates;
|
|
42
|
+
private events;
|
|
43
|
+
private activeTooltips;
|
|
44
|
+
private tooltipIdCounter;
|
|
45
|
+
private showTimeoutId;
|
|
46
|
+
private hideTimeoutId;
|
|
47
|
+
private lastCursorX;
|
|
48
|
+
private lastCursorY;
|
|
49
|
+
private hoveredSeriesId;
|
|
50
|
+
private hoveredDataIndex;
|
|
51
|
+
private cachedNearestResult;
|
|
52
|
+
private snapMode;
|
|
53
|
+
private largeDatasetThreshold;
|
|
54
|
+
private lastKnownDataSize;
|
|
55
|
+
private hysteresisRatio;
|
|
56
|
+
private suspended;
|
|
57
|
+
constructor(config: TooltipManagerConfig);
|
|
58
|
+
/**
|
|
59
|
+
* Register built-in templates
|
|
60
|
+
*/
|
|
61
|
+
private registerBuiltinTemplates;
|
|
62
|
+
/**
|
|
63
|
+
* Configure tooltip options
|
|
64
|
+
*/
|
|
65
|
+
configure(options: TooltipOptions): void;
|
|
66
|
+
/**
|
|
67
|
+
* Get current options
|
|
68
|
+
*/
|
|
69
|
+
getOptions(): TooltipOptions;
|
|
70
|
+
/**
|
|
71
|
+
* Enable/disable tooltips
|
|
72
|
+
*/
|
|
73
|
+
setEnabled(enabled: boolean): void;
|
|
74
|
+
/**
|
|
75
|
+
* Check if tooltips are enabled
|
|
76
|
+
*/
|
|
77
|
+
isEnabled(): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Suspend tooltip display (used during drag operations)
|
|
80
|
+
* When suspended, tooltips are immediately hidden and cursor movements are ignored
|
|
81
|
+
*/
|
|
82
|
+
setSuspended(suspended: boolean): void;
|
|
83
|
+
/**
|
|
84
|
+
* Check if tooltips are suspended
|
|
85
|
+
*/
|
|
86
|
+
isSuspended(): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Set tooltip theme
|
|
89
|
+
*/
|
|
90
|
+
setTheme(theme: TooltipTheme | string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Update theme based on chart theme
|
|
93
|
+
*/
|
|
94
|
+
updateChartTheme(chartTheme: ChartTheme): void;
|
|
95
|
+
/**
|
|
96
|
+
* Get current theme
|
|
97
|
+
*/
|
|
98
|
+
getTheme(): TooltipTheme;
|
|
99
|
+
/**
|
|
100
|
+
* Register a custom template
|
|
101
|
+
*/
|
|
102
|
+
registerTemplate<T extends TooltipData>(template: TooltipTemplate<T>): void;
|
|
103
|
+
/**
|
|
104
|
+
* Get a template by ID
|
|
105
|
+
*/
|
|
106
|
+
getTemplate(id: string): TooltipTemplate<TooltipData> | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Handle cursor movement - main entry point for hover detection
|
|
109
|
+
* Optimized with hysteresis to prevent jumping between nearby points
|
|
110
|
+
*/
|
|
111
|
+
handleCursorMove(pixelX: number, pixelY: number): void;
|
|
112
|
+
/**
|
|
113
|
+
* Handle cursor leave
|
|
114
|
+
*/
|
|
115
|
+
handleCursorLeave(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Get total number of data points across all visible series
|
|
118
|
+
*/
|
|
119
|
+
private getTotalDataPoints;
|
|
120
|
+
/**
|
|
121
|
+
* Determine the effective snap mode based on configuration and data size
|
|
122
|
+
*/
|
|
123
|
+
private getEffectiveSnapMode;
|
|
124
|
+
/**
|
|
125
|
+
* Perform tooltip update with hysteresis to prevent jumping.
|
|
126
|
+
* The tooltip "sticks" to the current point unless the cursor is
|
|
127
|
+
* significantly closer to a new point.
|
|
128
|
+
*/
|
|
129
|
+
private performTooltipUpdateWithHysteresis;
|
|
130
|
+
/**
|
|
131
|
+
* Handle heatmap and crosshair tooltip types (fallback)
|
|
132
|
+
*/
|
|
133
|
+
private performFallbackTooltipUpdate;
|
|
134
|
+
/**
|
|
135
|
+
* Find data point by X coordinate only (O(log n) - fastest method)
|
|
136
|
+
* Best for very large datasets where precision is less important than speed
|
|
137
|
+
*/
|
|
138
|
+
private findDataPointByXOnly;
|
|
139
|
+
/**
|
|
140
|
+
* Optimized nearest data point finder
|
|
141
|
+
*/
|
|
142
|
+
private findNearestDataPointOptimized;
|
|
143
|
+
/**
|
|
144
|
+
* Find heatmap cell under cursor
|
|
145
|
+
*/
|
|
146
|
+
private findHeatmapCell;
|
|
147
|
+
/**
|
|
148
|
+
* Binary search for closest value
|
|
149
|
+
*/
|
|
150
|
+
private binarySearchClosest;
|
|
151
|
+
/**
|
|
152
|
+
* Build crosshair tooltip data
|
|
153
|
+
*/
|
|
154
|
+
private buildCrosshairTooltip;
|
|
155
|
+
/**
|
|
156
|
+
* Schedule showing a tooltip
|
|
157
|
+
*/
|
|
158
|
+
private scheduleShow;
|
|
159
|
+
/**
|
|
160
|
+
* Schedule hiding tooltips
|
|
161
|
+
*/
|
|
162
|
+
private scheduleHide;
|
|
163
|
+
private clearShowTimeout;
|
|
164
|
+
private clearHideTimeout;
|
|
165
|
+
/**
|
|
166
|
+
* Show a tooltip with the given data
|
|
167
|
+
*/
|
|
168
|
+
private showTooltip;
|
|
169
|
+
/**
|
|
170
|
+
* Update tooltip position
|
|
171
|
+
*/
|
|
172
|
+
private updateTooltipPosition;
|
|
173
|
+
/**
|
|
174
|
+
* Get template ID for a tooltip type
|
|
175
|
+
*/
|
|
176
|
+
private getTemplateIdForType;
|
|
177
|
+
/**
|
|
178
|
+
* Show a tooltip programmatically
|
|
179
|
+
*/
|
|
180
|
+
show(data: TooltipData, options?: ShowTooltipOptions): string;
|
|
181
|
+
/**
|
|
182
|
+
* Hide a specific tooltip
|
|
183
|
+
*/
|
|
184
|
+
hide(tooltipId: string): void;
|
|
185
|
+
/**
|
|
186
|
+
* Hide all tooltips immediately
|
|
187
|
+
*/
|
|
188
|
+
hideAll(): void;
|
|
189
|
+
/**
|
|
190
|
+
* Render all active tooltips
|
|
191
|
+
*/
|
|
192
|
+
render(): void;
|
|
193
|
+
/**
|
|
194
|
+
* Check if any tooltip is currently visible
|
|
195
|
+
*/
|
|
196
|
+
hasActiveTooltip(): boolean;
|
|
197
|
+
/**
|
|
198
|
+
* Subscribe to tooltip events
|
|
199
|
+
*/
|
|
200
|
+
on<K extends keyof TooltipEventMap>(event: K, handler: (data: TooltipEventMap[K]) => void): void;
|
|
201
|
+
/**
|
|
202
|
+
* Unsubscribe from tooltip events
|
|
203
|
+
*/
|
|
204
|
+
off<K extends keyof TooltipEventMap>(event: K, handler: (data: TooltipEventMap[K]) => void): void;
|
|
205
|
+
/**
|
|
206
|
+
* Destroy the tooltip manager
|
|
207
|
+
*/
|
|
208
|
+
destroy(): void;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Create a tooltip manager
|
|
212
|
+
*/
|
|
213
|
+
export declare function createTooltipManager(config: TooltipManagerConfig): TooltipManager;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { PlotArea } from '../../../types';
|
|
2
|
+
import { TooltipPosition, TooltipMeasurement, TooltipPlacement } from './types';
|
|
3
|
+
|
|
4
|
+
export interface PositionerConfig {
|
|
5
|
+
/** Offset from target point */
|
|
6
|
+
offset: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
/** Preferred placement */
|
|
11
|
+
preferredPosition: TooltipPlacement;
|
|
12
|
+
/** Keep within plot area */
|
|
13
|
+
constrainToPlotArea: boolean;
|
|
14
|
+
/** Keep within container */
|
|
15
|
+
constrainToContainer: boolean;
|
|
16
|
+
/** Flip if not enough space */
|
|
17
|
+
autoFlip: boolean;
|
|
18
|
+
/** Show arrow pointing to target */
|
|
19
|
+
showArrow: boolean;
|
|
20
|
+
/** Arrow size */
|
|
21
|
+
arrowSize: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_POSITIONER_CONFIG: PositionerConfig;
|
|
24
|
+
/**
|
|
25
|
+
* TooltipPositioner calculates optimal tooltip positions
|
|
26
|
+
*/
|
|
27
|
+
export declare class TooltipPositioner {
|
|
28
|
+
private config;
|
|
29
|
+
private containerWidth;
|
|
30
|
+
private containerHeight;
|
|
31
|
+
private plotArea;
|
|
32
|
+
constructor(config?: Partial<PositionerConfig>);
|
|
33
|
+
/**
|
|
34
|
+
* Update container dimensions
|
|
35
|
+
*/
|
|
36
|
+
setContainerSize(width: number, height: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Update plot area bounds
|
|
39
|
+
*/
|
|
40
|
+
setPlotArea(plotArea: PlotArea): void;
|
|
41
|
+
/**
|
|
42
|
+
* Update configuration
|
|
43
|
+
*/
|
|
44
|
+
configure(config: Partial<PositionerConfig>): void;
|
|
45
|
+
/**
|
|
46
|
+
* Calculate optimal tooltip position
|
|
47
|
+
*
|
|
48
|
+
* @param targetX - Target X coordinate (where tooltip points to)
|
|
49
|
+
* @param targetY - Target Y coordinate
|
|
50
|
+
* @param measurement - Tooltip dimensions
|
|
51
|
+
* @returns Calculated position with arrow configuration
|
|
52
|
+
*/
|
|
53
|
+
calculatePosition(targetX: number, targetY: number, measurement: TooltipMeasurement): TooltipPosition;
|
|
54
|
+
/**
|
|
55
|
+
* Determine best position based on available space
|
|
56
|
+
*/
|
|
57
|
+
private determinePosition;
|
|
58
|
+
/**
|
|
59
|
+
* Calculate tooltip coordinates for a given position
|
|
60
|
+
*/
|
|
61
|
+
private calculateCoordinates;
|
|
62
|
+
/**
|
|
63
|
+
* Get the opposite position for flipping
|
|
64
|
+
*/
|
|
65
|
+
private flipPosition;
|
|
66
|
+
/**
|
|
67
|
+
* Check if tooltip fits within bounds
|
|
68
|
+
*/
|
|
69
|
+
private fitsInBounds;
|
|
70
|
+
/**
|
|
71
|
+
* Constrain position to stay within bounds
|
|
72
|
+
*/
|
|
73
|
+
private constrainToBounds;
|
|
74
|
+
/**
|
|
75
|
+
* Get the bounds to constrain tooltip within
|
|
76
|
+
*/
|
|
77
|
+
private getConstraintBounds;
|
|
78
|
+
/**
|
|
79
|
+
* Calculate position for crosshair tooltip (follows cursor vertically)
|
|
80
|
+
*/
|
|
81
|
+
calculateCrosshairPosition(cursorX: number, cursorY: number, measurement: TooltipMeasurement): TooltipPosition;
|
|
82
|
+
}
|
|
83
|
+
export declare function createTooltipPositioner(config?: Partial<PositionerConfig>): TooltipPositioner;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { TooltipData, TooltipPosition, TooltipTheme, TooltipTemplate } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TooltipRenderer handles all Canvas 2D rendering for tooltips
|
|
5
|
+
*/
|
|
6
|
+
export declare class TooltipRenderer {
|
|
7
|
+
private ctx;
|
|
8
|
+
private theme;
|
|
9
|
+
constructor(ctx: CanvasRenderingContext2D, theme: TooltipTheme);
|
|
10
|
+
/**
|
|
11
|
+
* Update the theme
|
|
12
|
+
*/
|
|
13
|
+
setTheme(theme: TooltipTheme): void;
|
|
14
|
+
/**
|
|
15
|
+
* Render a tooltip with the given template
|
|
16
|
+
*/
|
|
17
|
+
render<T extends TooltipData>(data: T, position: TooltipPosition, template: TooltipTemplate<T>): void;
|
|
18
|
+
/**
|
|
19
|
+
* Draw tooltip background with all effects
|
|
20
|
+
*/
|
|
21
|
+
private drawBackground;
|
|
22
|
+
/**
|
|
23
|
+
* Draw arrow pointing to target
|
|
24
|
+
*/
|
|
25
|
+
private drawArrow;
|
|
26
|
+
/**
|
|
27
|
+
* Draw a rounded rectangle path
|
|
28
|
+
*/
|
|
29
|
+
private roundRect;
|
|
30
|
+
/**
|
|
31
|
+
* Draw a horizontal separator line
|
|
32
|
+
*/
|
|
33
|
+
drawSeparator(x: number, y: number, width: number): void;
|
|
34
|
+
/**
|
|
35
|
+
* Draw a series color indicator (small circle or square)
|
|
36
|
+
*/
|
|
37
|
+
drawSeriesIndicator(x: number, y: number, color: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Measure text width
|
|
40
|
+
*/
|
|
41
|
+
measureText(text: string, fontSize: number, fontWeight?: number | string): number;
|
|
42
|
+
/**
|
|
43
|
+
* Draw text with theme styling
|
|
44
|
+
*/
|
|
45
|
+
drawText(text: string, x: number, y: number, options?: {
|
|
46
|
+
fontSize?: number;
|
|
47
|
+
fontWeight?: number | string;
|
|
48
|
+
color?: string;
|
|
49
|
+
align?: CanvasTextAlign;
|
|
50
|
+
baseline?: CanvasTextBaseline;
|
|
51
|
+
}): void;
|
|
52
|
+
/**
|
|
53
|
+
* Draw a label-value pair
|
|
54
|
+
*/
|
|
55
|
+
drawLabelValue(x: number, y: number, label: string, value: string, maxWidth: number): void;
|
|
56
|
+
/**
|
|
57
|
+
* Get theme for external use
|
|
58
|
+
*/
|
|
59
|
+
getTheme(): TooltipTheme;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create a tooltip renderer
|
|
63
|
+
*/
|
|
64
|
+
export declare function createTooltipRenderer(ctx: CanvasRenderingContext2D, theme: TooltipTheme): TooltipRenderer;
|