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,499 @@
|
|
|
1
|
+
var f = Object.defineProperty;
|
|
2
|
+
var d = (i, e, t) => e in i ? f(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
|
|
3
|
+
var c = (i, e, t) => d(i, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
const b = [
|
|
5
|
+
{
|
|
6
|
+
label: "Background & Canvas",
|
|
7
|
+
description: "Chart background and canvas colors",
|
|
8
|
+
colors: [
|
|
9
|
+
{ key: "backgroundColor", label: "Background", value: "", description: "Main chart background" },
|
|
10
|
+
{ key: "plotAreaBackground", label: "Plot Area", value: "", description: "Data plotting area background" }
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
label: "Axes",
|
|
15
|
+
description: "Axis lines, ticks, and labels",
|
|
16
|
+
colors: [
|
|
17
|
+
{ key: "axis.color", label: "Axis Lines", value: "", description: "Axis line color" },
|
|
18
|
+
{ key: "axis.labelColor", label: "Axis Labels", value: "", description: "Axis label text color" },
|
|
19
|
+
{ key: "axis.titleColor", label: "Axis Titles", value: "", description: "Axis title text color" }
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: "Grid",
|
|
24
|
+
description: "Grid lines and markers",
|
|
25
|
+
colors: [
|
|
26
|
+
{ key: "grid.color", label: "Grid Lines", value: "", description: "Major grid line color" },
|
|
27
|
+
{ key: "grid.minorColor", label: "Minor Grid", value: "", description: "Minor grid line color" }
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: "Series Palette",
|
|
32
|
+
description: "Default colors for data series",
|
|
33
|
+
colors: [
|
|
34
|
+
{ key: "seriesPalette.0", label: "Series 1", value: "", description: "First series color" },
|
|
35
|
+
{ key: "seriesPalette.1", label: "Series 2", value: "", description: "Second series color" },
|
|
36
|
+
{ key: "seriesPalette.2", label: "Series 3", value: "", description: "Third series color" },
|
|
37
|
+
{ key: "seriesPalette.3", label: "Series 4", value: "", description: "Fourth series color" },
|
|
38
|
+
{ key: "seriesPalette.4", label: "Series 5", value: "", description: "Fifth series color" },
|
|
39
|
+
{ key: "seriesPalette.5", label: "Series 6", value: "", description: "Sixth series color" }
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
label: "Legend",
|
|
44
|
+
description: "Legend styling",
|
|
45
|
+
colors: [
|
|
46
|
+
{ key: "legend.backgroundColor", label: "Legend Background", value: "", description: "Legend panel background" },
|
|
47
|
+
{ key: "legend.textColor", label: "Legend Text", value: "", description: "Legend text color" },
|
|
48
|
+
{ key: "legend.borderColor", label: "Legend Border", value: "", description: "Legend border color" }
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: "Cursor & Selection",
|
|
53
|
+
description: "Interactive elements",
|
|
54
|
+
colors: [
|
|
55
|
+
{ key: "cursor.color", label: "Crosshair", value: "", description: "Cursor crosshair color" },
|
|
56
|
+
{ key: "cursor.labelBackground", label: "Cursor Label BG", value: "", description: "Cursor label background" },
|
|
57
|
+
{ key: "selection.color", label: "Selection", value: "", description: "Selection highlight color" },
|
|
58
|
+
{ key: "selection.handleColor", label: "Selection Handles", value: "", description: "Selection handle color" }
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
label: "Annotations",
|
|
63
|
+
description: "Annotation default colors",
|
|
64
|
+
colors: [
|
|
65
|
+
{ key: "annotation.lineColor", label: "Line Annotations", value: "", description: "Default line annotation color" },
|
|
66
|
+
{ key: "annotation.fillColor", label: "Fill Annotations", value: "", description: "Default fill annotation color" },
|
|
67
|
+
{ key: "annotation.textColor", label: "Text Annotations", value: "", description: "Default text annotation color" }
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
], n = [
|
|
71
|
+
{
|
|
72
|
+
name: "Dark",
|
|
73
|
+
description: "Classic dark theme with cyan accents",
|
|
74
|
+
previewColors: ["#1a1a2e", "#00f2ff", "#4ecdc4"],
|
|
75
|
+
tags: ["dark", "default"],
|
|
76
|
+
theme: {
|
|
77
|
+
backgroundColor: "#1a1a2e",
|
|
78
|
+
plotAreaBackground: "#16213e",
|
|
79
|
+
axis: {
|
|
80
|
+
color: "#4a5568",
|
|
81
|
+
labelColor: "#a0aec0",
|
|
82
|
+
titleColor: "#e2e8f0",
|
|
83
|
+
labelFontSize: 11,
|
|
84
|
+
titleFontSize: 13
|
|
85
|
+
},
|
|
86
|
+
grid: {
|
|
87
|
+
color: "rgba(74, 85, 104, 0.3)",
|
|
88
|
+
opacity: 0.3
|
|
89
|
+
},
|
|
90
|
+
legend: {
|
|
91
|
+
background: "rgba(26, 26, 46, 0.9)",
|
|
92
|
+
textColor: "#e2e8f0",
|
|
93
|
+
borderColor: "rgba(255, 255, 255, 0.1)"
|
|
94
|
+
},
|
|
95
|
+
cursor: {
|
|
96
|
+
color: "#00f2ff",
|
|
97
|
+
labelBackground: "rgba(0, 242, 255, 0.9)",
|
|
98
|
+
labelColor: "#000000"
|
|
99
|
+
},
|
|
100
|
+
seriesPalette: ["#00f2ff", "#4ecdc4", "#ff6b6b", "#ffd93d", "#6c5ce7", "#a29bfe", "#fd79a8", "#00cec9"],
|
|
101
|
+
highlightColor: "#00f2ff"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "Light",
|
|
106
|
+
description: "Clean light theme for publications",
|
|
107
|
+
previewColors: ["#ffffff", "#2563eb", "#4f46e5"],
|
|
108
|
+
tags: ["light", "publication"],
|
|
109
|
+
theme: {
|
|
110
|
+
backgroundColor: "#ffffff",
|
|
111
|
+
plotAreaBackground: "#f8fafc",
|
|
112
|
+
axis: {
|
|
113
|
+
color: "#94a3b8",
|
|
114
|
+
labelColor: "#475569",
|
|
115
|
+
titleColor: "#1e293b",
|
|
116
|
+
labelFontSize: 11,
|
|
117
|
+
titleFontSize: 13
|
|
118
|
+
},
|
|
119
|
+
grid: {
|
|
120
|
+
color: "rgba(148, 163, 184, 0.3)",
|
|
121
|
+
opacity: 0.3
|
|
122
|
+
},
|
|
123
|
+
legend: {
|
|
124
|
+
backgroundColor: "rgba(255, 255, 255, 0.95)",
|
|
125
|
+
textColor: "#1e293b",
|
|
126
|
+
borderColor: "rgba(0, 0, 0, 0.1)"
|
|
127
|
+
},
|
|
128
|
+
cursor: {
|
|
129
|
+
color: "#2563eb",
|
|
130
|
+
labelBackground: "rgba(37, 99, 235, 0.95)",
|
|
131
|
+
labelColor: "#ffffff"
|
|
132
|
+
},
|
|
133
|
+
seriesPalette: ["#2563eb", "#7c3aed", "#db2777", "#ea580c", "#16a34a", "#0891b2", "#4f46e5", "#be185d"],
|
|
134
|
+
highlightColor: "#2563eb"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "Midnight",
|
|
139
|
+
description: "Deep blue dark theme",
|
|
140
|
+
previewColors: ["#0f172a", "#3b82f6", "#8b5cf6"],
|
|
141
|
+
tags: ["dark", "blue"],
|
|
142
|
+
theme: {
|
|
143
|
+
backgroundColor: "#0f172a",
|
|
144
|
+
plotAreaBackground: "#1e293b",
|
|
145
|
+
axis: {
|
|
146
|
+
color: "#475569",
|
|
147
|
+
labelColor: "#94a3b8",
|
|
148
|
+
titleColor: "#f1f5f9",
|
|
149
|
+
labelFontSize: 11,
|
|
150
|
+
titleFontSize: 13
|
|
151
|
+
},
|
|
152
|
+
grid: {
|
|
153
|
+
color: "rgba(71, 85, 105, 0.25)",
|
|
154
|
+
opacity: 0.25
|
|
155
|
+
},
|
|
156
|
+
legend: {
|
|
157
|
+
backgroundColor: "rgba(15, 23, 42, 0.95)",
|
|
158
|
+
textColor: "#f1f5f9",
|
|
159
|
+
borderColor: "rgba(255, 255, 255, 0.08)"
|
|
160
|
+
},
|
|
161
|
+
cursor: {
|
|
162
|
+
color: "#3b82f6",
|
|
163
|
+
labelBackground: "rgba(59, 130, 246, 0.95)",
|
|
164
|
+
labelColor: "#ffffff"
|
|
165
|
+
},
|
|
166
|
+
seriesPalette: ["#3b82f6", "#8b5cf6", "#ec4899", "#f59e0b", "#10b981", "#06b6d4", "#6366f1", "#f43f5e"],
|
|
167
|
+
highlightColor: "#3b82f6"
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
name: "Scientific",
|
|
172
|
+
description: "Clean theme for scientific publications",
|
|
173
|
+
previewColors: ["#fafafa", "#1f2937", "#059669"],
|
|
174
|
+
tags: ["light", "scientific", "publication"],
|
|
175
|
+
theme: {
|
|
176
|
+
backgroundColor: "#fafafa",
|
|
177
|
+
plotAreaBackground: "#ffffff",
|
|
178
|
+
axis: {
|
|
179
|
+
color: "#374151",
|
|
180
|
+
labelColor: "#1f2937",
|
|
181
|
+
titleColor: "#111827",
|
|
182
|
+
labelFontSize: 12,
|
|
183
|
+
titleFontSize: 14
|
|
184
|
+
},
|
|
185
|
+
grid: {
|
|
186
|
+
color: "rgba(156, 163, 175, 0.4)",
|
|
187
|
+
opacity: 0.4
|
|
188
|
+
},
|
|
189
|
+
legend: {
|
|
190
|
+
backgroundColor: "#ffffff",
|
|
191
|
+
textColor: "#111827",
|
|
192
|
+
borderColor: "#e5e7eb"
|
|
193
|
+
},
|
|
194
|
+
cursor: {
|
|
195
|
+
color: "#059669",
|
|
196
|
+
labelBackground: "#059669",
|
|
197
|
+
labelColor: "#ffffff"
|
|
198
|
+
},
|
|
199
|
+
seriesPalette: ["#1f2937", "#059669", "#dc2626", "#2563eb", "#7c3aed", "#ea580c", "#0891b2", "#be123c"],
|
|
200
|
+
highlightColor: "#059669"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: "Electrochemistry",
|
|
205
|
+
description: "Theme optimized for electrochemical data",
|
|
206
|
+
previewColors: ["#0d1117", "#00f2ff", "#ff6b6b"],
|
|
207
|
+
tags: ["dark", "scientific", "electrochemistry"],
|
|
208
|
+
theme: {
|
|
209
|
+
backgroundColor: "#0d1117",
|
|
210
|
+
plotAreaBackground: "#161b22",
|
|
211
|
+
axis: {
|
|
212
|
+
color: "#30363d",
|
|
213
|
+
labelColor: "#8b949e",
|
|
214
|
+
titleColor: "#c9d1d9",
|
|
215
|
+
labelFontSize: 11,
|
|
216
|
+
titleFontSize: 13
|
|
217
|
+
},
|
|
218
|
+
grid: {
|
|
219
|
+
color: "rgba(48, 54, 61, 0.5)",
|
|
220
|
+
opacity: 0.5
|
|
221
|
+
},
|
|
222
|
+
legend: {
|
|
223
|
+
backgroundColor: "rgba(13, 17, 23, 0.95)",
|
|
224
|
+
textColor: "#c9d1d9",
|
|
225
|
+
borderColor: "rgba(48, 54, 61, 0.8)"
|
|
226
|
+
},
|
|
227
|
+
cursor: {
|
|
228
|
+
color: "#00f2ff",
|
|
229
|
+
labelBackground: "rgba(0, 242, 255, 0.95)",
|
|
230
|
+
labelColor: "#000000"
|
|
231
|
+
},
|
|
232
|
+
seriesPalette: ["#00f2ff", "#ff6b6b", "#4ecdc4", "#feca57", "#a29bfe", "#fd79a8", "#00cec9", "#e17055"],
|
|
233
|
+
highlightColor: "#00f2ff"
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: "High Contrast",
|
|
238
|
+
description: "Maximum visibility theme",
|
|
239
|
+
previewColors: ["#000000", "#ffffff", "#ffff00"],
|
|
240
|
+
tags: ["dark", "accessibility", "high-contrast"],
|
|
241
|
+
theme: {
|
|
242
|
+
backgroundColor: "#000000",
|
|
243
|
+
plotAreaBackground: "#0a0a0a",
|
|
244
|
+
axis: {
|
|
245
|
+
color: "#ffffff",
|
|
246
|
+
labelColor: "#ffffff",
|
|
247
|
+
titleColor: "#ffffff",
|
|
248
|
+
labelFontSize: 12,
|
|
249
|
+
titleFontSize: 14
|
|
250
|
+
},
|
|
251
|
+
grid: {
|
|
252
|
+
color: "rgba(255, 255, 255, 0.2)",
|
|
253
|
+
opacity: 0.2
|
|
254
|
+
},
|
|
255
|
+
legend: {
|
|
256
|
+
backgroundColor: "#000000",
|
|
257
|
+
textColor: "#ffffff",
|
|
258
|
+
borderColor: "#ffffff"
|
|
259
|
+
},
|
|
260
|
+
cursor: {
|
|
261
|
+
color: "#ffff00",
|
|
262
|
+
labelBackground: "#ffff00",
|
|
263
|
+
labelColor: "#000000"
|
|
264
|
+
},
|
|
265
|
+
seriesPalette: ["#ffff00", "#00ffff", "#ff00ff", "#00ff00", "#ff8800", "#00ff88", "#8800ff", "#ff0088"],
|
|
266
|
+
highlightColor: "#ffff00"
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
];
|
|
270
|
+
class h {
|
|
271
|
+
constructor(e, t) {
|
|
272
|
+
c(this, "container");
|
|
273
|
+
c(this, "options");
|
|
274
|
+
c(this, "currentTheme");
|
|
275
|
+
c(this, "element", null);
|
|
276
|
+
this.container = e, this.options = {
|
|
277
|
+
baseTheme: n[0].theme,
|
|
278
|
+
livePreview: !0,
|
|
279
|
+
showAdvanced: !1,
|
|
280
|
+
className: "velo-plot-theme-editor",
|
|
281
|
+
onChange: void 0,
|
|
282
|
+
onExport: void 0,
|
|
283
|
+
...t
|
|
284
|
+
}, this.currentTheme = this.resolveTheme(this.options.baseTheme), this.render();
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get current theme
|
|
288
|
+
*/
|
|
289
|
+
getTheme() {
|
|
290
|
+
return { ...this.currentTheme };
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Set theme
|
|
294
|
+
*/
|
|
295
|
+
setTheme(e) {
|
|
296
|
+
this.currentTheme = this.resolveTheme(e), this.render(), this.notifyChange();
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Update a specific theme property
|
|
300
|
+
*/
|
|
301
|
+
updateProperty(e, t) {
|
|
302
|
+
this.setNestedValue(this.currentTheme, e, t), this.notifyChange();
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Export theme as JSON
|
|
306
|
+
*/
|
|
307
|
+
exportTheme() {
|
|
308
|
+
var t, o;
|
|
309
|
+
const e = JSON.stringify(this.currentTheme, null, 2);
|
|
310
|
+
return (o = (t = this.options).onExport) == null || o.call(t, this.currentTheme, e), e;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Import theme from JSON
|
|
314
|
+
*/
|
|
315
|
+
importTheme(e) {
|
|
316
|
+
try {
|
|
317
|
+
const t = JSON.parse(e);
|
|
318
|
+
this.currentTheme = t, this.render(), this.notifyChange();
|
|
319
|
+
} catch (t) {
|
|
320
|
+
console.error("[ThemeEditor] Failed to import theme:", t);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get theme preset by name
|
|
325
|
+
*/
|
|
326
|
+
getPreset(e) {
|
|
327
|
+
return n.find((t) => t.name.toLowerCase() === e.toLowerCase());
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Apply a preset
|
|
331
|
+
*/
|
|
332
|
+
applyPreset(e) {
|
|
333
|
+
const t = this.getPreset(e);
|
|
334
|
+
t && (this.currentTheme = { ...t.theme }, this.render(), this.notifyChange());
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Get all available presets
|
|
338
|
+
*/
|
|
339
|
+
getPresets() {
|
|
340
|
+
return n;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Destroy the editor
|
|
344
|
+
*/
|
|
345
|
+
destroy() {
|
|
346
|
+
this.element && this.element.parentNode && this.element.parentNode.removeChild(this.element), this.element = null;
|
|
347
|
+
}
|
|
348
|
+
// ============================================
|
|
349
|
+
// Private Methods
|
|
350
|
+
// ============================================
|
|
351
|
+
resolveTheme(e) {
|
|
352
|
+
if (typeof e == "string") {
|
|
353
|
+
const t = this.getPreset(e);
|
|
354
|
+
return t ? { ...t.theme } : { ...n[0].theme };
|
|
355
|
+
}
|
|
356
|
+
return { ...e };
|
|
357
|
+
}
|
|
358
|
+
setNestedValue(e, t, o) {
|
|
359
|
+
const r = t.split(".");
|
|
360
|
+
let l = e;
|
|
361
|
+
for (let a = 0; a < r.length - 1; a++) {
|
|
362
|
+
const s = r[a];
|
|
363
|
+
s in l || (l[s] = {}), l = l[s];
|
|
364
|
+
}
|
|
365
|
+
l[r[r.length - 1]] = o;
|
|
366
|
+
}
|
|
367
|
+
getNestedValue(e, t) {
|
|
368
|
+
const o = t.split(".");
|
|
369
|
+
let r = e;
|
|
370
|
+
for (const l of o) {
|
|
371
|
+
if (r == null || typeof r != "object")
|
|
372
|
+
return;
|
|
373
|
+
r = r[l];
|
|
374
|
+
}
|
|
375
|
+
return r;
|
|
376
|
+
}
|
|
377
|
+
notifyChange() {
|
|
378
|
+
var e, t;
|
|
379
|
+
this.options.livePreview && ((t = (e = this.options).onChange) == null || t.call(e, this.currentTheme));
|
|
380
|
+
}
|
|
381
|
+
render() {
|
|
382
|
+
this.element || (this.element = document.createElement("div"), this.element.className = this.options.className, this.container.appendChild(this.element)), this.element.innerHTML = this.generateHTML(), this.attachEventListeners();
|
|
383
|
+
}
|
|
384
|
+
generateHTML() {
|
|
385
|
+
const e = n.map((o) => `
|
|
386
|
+
<button class="preset-btn" data-preset="${o.name}" title="${o.description || o.name}">
|
|
387
|
+
<div class="preset-colors">
|
|
388
|
+
${(o.previewColors || []).map((r) => `<span style="background:${r}"></span>`).join("")}
|
|
389
|
+
</div>
|
|
390
|
+
<span class="preset-name">${o.name}</span>
|
|
391
|
+
</button>
|
|
392
|
+
`).join(""), t = b.map((o) => {
|
|
393
|
+
const r = o.colors.map((l) => {
|
|
394
|
+
const a = this.getNestedValue(this.currentTheme, l.key) || "#000000";
|
|
395
|
+
return `
|
|
396
|
+
<div class="color-row">
|
|
397
|
+
<label title="${l.description || ""}">${l.label}</label>
|
|
398
|
+
<input type="color" data-key="${l.key}" value="${this.normalizeColor(a)}" />
|
|
399
|
+
<input type="text" data-key="${l.key}" value="${a}" class="color-text" />
|
|
400
|
+
</div>
|
|
401
|
+
`;
|
|
402
|
+
}).join("");
|
|
403
|
+
return `
|
|
404
|
+
<div class="color-group">
|
|
405
|
+
<h4>${o.label}</h4>
|
|
406
|
+
${o.description ? `<p class="group-desc">${o.description}</p>` : ""}
|
|
407
|
+
${r}
|
|
408
|
+
</div>
|
|
409
|
+
`;
|
|
410
|
+
}).join("");
|
|
411
|
+
return `
|
|
412
|
+
<div class="theme-editor-inner">
|
|
413
|
+
<div class="presets-section">
|
|
414
|
+
<h3>Presets</h3>
|
|
415
|
+
<div class="presets-grid">${e}</div>
|
|
416
|
+
</div>
|
|
417
|
+
<div class="colors-section">
|
|
418
|
+
<h3>Customize</h3>
|
|
419
|
+
${t}
|
|
420
|
+
</div>
|
|
421
|
+
<div class="actions-section">
|
|
422
|
+
<button class="export-btn">Export JSON</button>
|
|
423
|
+
<button class="import-btn">Import JSON</button>
|
|
424
|
+
</div>
|
|
425
|
+
</div>
|
|
426
|
+
`;
|
|
427
|
+
}
|
|
428
|
+
normalizeColor(e) {
|
|
429
|
+
if (e.startsWith("rgba") || e.startsWith("rgb")) {
|
|
430
|
+
const t = e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
|
|
431
|
+
if (t) {
|
|
432
|
+
const o = parseInt(t[1]).toString(16).padStart(2, "0"), r = parseInt(t[2]).toString(16).padStart(2, "0"), l = parseInt(t[3]).toString(16).padStart(2, "0");
|
|
433
|
+
return `#${o}${r}${l}`;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return e;
|
|
437
|
+
}
|
|
438
|
+
attachEventListeners() {
|
|
439
|
+
var e, t;
|
|
440
|
+
this.element && (this.element.querySelectorAll(".preset-btn").forEach((o) => {
|
|
441
|
+
o.addEventListener("click", () => {
|
|
442
|
+
const r = o.getAttribute("data-preset");
|
|
443
|
+
r && this.applyPreset(r);
|
|
444
|
+
});
|
|
445
|
+
}), this.element.querySelectorAll('input[type="color"], input.color-text').forEach((o) => {
|
|
446
|
+
o.addEventListener("input", (r) => {
|
|
447
|
+
const l = r.target, a = l.getAttribute("data-key");
|
|
448
|
+
if (a) {
|
|
449
|
+
this.updateProperty(a, l.value);
|
|
450
|
+
const s = l.type === "color" ? l.nextElementSibling : l.previousElementSibling;
|
|
451
|
+
s && (s.value = l.type === "color" ? l.value : this.normalizeColor(l.value));
|
|
452
|
+
}
|
|
453
|
+
});
|
|
454
|
+
}), (e = this.element.querySelector(".export-btn")) == null || e.addEventListener("click", () => {
|
|
455
|
+
var r;
|
|
456
|
+
const o = this.exportTheme();
|
|
457
|
+
(r = navigator.clipboard) == null || r.writeText(o).then(() => {
|
|
458
|
+
});
|
|
459
|
+
}), (t = this.element.querySelector(".import-btn")) == null || t.addEventListener("click", () => {
|
|
460
|
+
const o = prompt("Paste theme JSON:");
|
|
461
|
+
o && this.importTheme(o);
|
|
462
|
+
}));
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
function p(i, e) {
|
|
466
|
+
return new h(i, e);
|
|
467
|
+
}
|
|
468
|
+
function m(i) {
|
|
469
|
+
const e = n.find((t) => t.name.toLowerCase() === i.toLowerCase());
|
|
470
|
+
return e ? { ...e.theme } : void 0;
|
|
471
|
+
}
|
|
472
|
+
function C() {
|
|
473
|
+
return n.map((i) => i.name);
|
|
474
|
+
}
|
|
475
|
+
const u = {
|
|
476
|
+
name: "velo-plot-theme-editor",
|
|
477
|
+
version: "1.0.0",
|
|
478
|
+
description: "Visual theme editor for velo-plot",
|
|
479
|
+
provides: ["ui", "theme"],
|
|
480
|
+
tags: ["theme", "editor", "styling", "ui"]
|
|
481
|
+
};
|
|
482
|
+
function v(i = {}) {
|
|
483
|
+
return {
|
|
484
|
+
manifest: u,
|
|
485
|
+
onInit(e) {
|
|
486
|
+
},
|
|
487
|
+
onDestroy(e) {
|
|
488
|
+
}
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
export {
|
|
492
|
+
v as P,
|
|
493
|
+
h as T,
|
|
494
|
+
C as a,
|
|
495
|
+
n as b,
|
|
496
|
+
p as c,
|
|
497
|
+
m as g
|
|
498
|
+
};
|
|
499
|
+
//# sourceMappingURL=index-Dag88bW4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Dag88bW4.js","sources":["../src/core/theme-editor/index.ts","../src/plugins/theme-editor/index.ts"],"sourcesContent":["/**\n * Sci Plot - Theme Editor Module\n * \n * Provides a visual theme editor for customizing chart appearance:\n * - Color pickers for all theme elements\n * - Live preview\n * - Theme export/import\n * - Preset theme gallery\n * \n * @module theme-editor\n */\n\n// Use a flexible internal type to avoid strict EditorTheme compatibility issues\n// The editor works with partial theme configs that can be applied via createTheme()\nexport type EditorTheme = Record<string, unknown>;\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ThemeEditorOptions {\n /** Base theme to start from */\n baseTheme?: EditorTheme | string;\n /** Enable live preview (default: true) */\n livePreview?: boolean;\n /** Show advanced options (default: false) */\n showAdvanced?: boolean;\n /** Custom CSS class for the editor */\n className?: string;\n /** Callback when theme changes */\n onChange?: (theme: EditorTheme) => void;\n /** Callback when export is requested */\n onExport?: (theme: EditorTheme, json: string) => void;\n}\n\nexport interface ThemePreset {\n /** Preset name */\n name: string;\n /** Description */\n description?: string;\n /** Theme configuration */\n theme: EditorTheme;\n /** Preview colors (for UI) */\n previewColors?: string[];\n /** Tags for filtering */\n tags?: string[];\n}\n\nexport interface ColorGroup {\n /** Group label */\n label: string;\n /** Group description */\n description?: string;\n /** Color properties in this group */\n colors: ColorProperty[];\n}\n\nexport interface ColorProperty {\n /** Property key path (e.g., 'background', 'axis.color') */\n key: string;\n /** Display label */\n label: string;\n /** Description/tooltip */\n description?: string;\n /** Current value */\n value: string;\n /** Default value */\n defaultValue?: string;\n}\n\n// ============================================\n// Default Theme Structure\n// ============================================\n\nconst THEME_COLOR_GROUPS: ColorGroup[] = [\n {\n label: \"Background & Canvas\",\n description: \"Chart background and canvas colors\",\n colors: [\n { key: \"backgroundColor\", label: \"Background\", value: \"\", description: \"Main chart background\" },\n { key: \"plotAreaBackground\", label: \"Plot Area\", value: \"\", description: \"Data plotting area background\" },\n ],\n },\n {\n label: \"Axes\",\n description: \"Axis lines, ticks, and labels\",\n colors: [\n { key: \"axis.color\", label: \"Axis Lines\", value: \"\", description: \"Axis line color\" },\n { key: \"axis.labelColor\", label: \"Axis Labels\", value: \"\", description: \"Axis label text color\" },\n { key: \"axis.titleColor\", label: \"Axis Titles\", value: \"\", description: \"Axis title text color\" },\n ],\n },\n {\n label: \"Grid\",\n description: \"Grid lines and markers\",\n colors: [\n { key: \"grid.color\", label: \"Grid Lines\", value: \"\", description: \"Major grid line color\" },\n { key: \"grid.minorColor\", label: \"Minor Grid\", value: \"\", description: \"Minor grid line color\" },\n ],\n },\n {\n label: \"Series Palette\",\n description: \"Default colors for data series\",\n colors: [\n { key: \"seriesPalette.0\", label: \"Series 1\", value: \"\", description: \"First series color\" },\n { key: \"seriesPalette.1\", label: \"Series 2\", value: \"\", description: \"Second series color\" },\n { key: \"seriesPalette.2\", label: \"Series 3\", value: \"\", description: \"Third series color\" },\n { key: \"seriesPalette.3\", label: \"Series 4\", value: \"\", description: \"Fourth series color\" },\n { key: \"seriesPalette.4\", label: \"Series 5\", value: \"\", description: \"Fifth series color\" },\n { key: \"seriesPalette.5\", label: \"Series 6\", value: \"\", description: \"Sixth series color\" },\n ],\n },\n {\n label: \"Legend\",\n description: \"Legend styling\",\n colors: [\n { key: \"legend.backgroundColor\", label: \"Legend Background\", value: \"\", description: \"Legend panel background\" },\n { key: \"legend.textColor\", label: \"Legend Text\", value: \"\", description: \"Legend text color\" },\n { key: \"legend.borderColor\", label: \"Legend Border\", value: \"\", description: \"Legend border color\" },\n ],\n },\n {\n label: \"Cursor & Selection\",\n description: \"Interactive elements\",\n colors: [\n { key: \"cursor.color\", label: \"Crosshair\", value: \"\", description: \"Cursor crosshair color\" },\n { key: \"cursor.labelBackground\", label: \"Cursor Label BG\", value: \"\", description: \"Cursor label background\" },\n { key: \"selection.color\", label: \"Selection\", value: \"\", description: \"Selection highlight color\" },\n { key: \"selection.handleColor\", label: \"Selection Handles\", value: \"\", description: \"Selection handle color\" },\n ],\n },\n {\n label: \"Annotations\",\n description: \"Annotation default colors\",\n colors: [\n { key: \"annotation.lineColor\", label: \"Line Annotations\", value: \"\", description: \"Default line annotation color\" },\n { key: \"annotation.fillColor\", label: \"Fill Annotations\", value: \"\", description: \"Default fill annotation color\" },\n { key: \"annotation.textColor\", label: \"Text Annotations\", value: \"\", description: \"Default text annotation color\" },\n ],\n },\n];\n\n// ============================================\n// Theme Presets\n// ============================================\n\nexport const THEME_PRESETS: ThemePreset[] = [\n {\n name: \"Dark\",\n description: \"Classic dark theme with cyan accents\",\n previewColors: [\"#1a1a2e\", \"#00f2ff\", \"#4ecdc4\"],\n tags: [\"dark\", \"default\"],\n theme: {\n backgroundColor: \"#1a1a2e\",\n plotAreaBackground: \"#16213e\",\n axis: {\n color: \"#4a5568\",\n labelColor: \"#a0aec0\",\n titleColor: \"#e2e8f0\",\n labelFontSize: 11,\n titleFontSize: 13,\n },\n grid: {\n color: \"rgba(74, 85, 104, 0.3)\",\n opacity: 0.3,\n },\n legend: {\n background: \"rgba(26, 26, 46, 0.9)\",\n textColor: \"#e2e8f0\",\n borderColor: \"rgba(255, 255, 255, 0.1)\",\n },\n cursor: {\n color: \"#00f2ff\",\n labelBackground: \"rgba(0, 242, 255, 0.9)\",\n labelColor: \"#000000\",\n },\n seriesPalette: [\"#00f2ff\", \"#4ecdc4\", \"#ff6b6b\", \"#ffd93d\", \"#6c5ce7\", \"#a29bfe\", \"#fd79a8\", \"#00cec9\"],\n highlightColor: \"#00f2ff\",\n },\n },\n {\n name: \"Light\",\n description: \"Clean light theme for publications\",\n previewColors: [\"#ffffff\", \"#2563eb\", \"#4f46e5\"],\n tags: [\"light\", \"publication\"],\n theme: {\n backgroundColor: \"#ffffff\",\n plotAreaBackground: \"#f8fafc\",\n axis: {\n color: \"#94a3b8\",\n labelColor: \"#475569\",\n titleColor: \"#1e293b\",\n labelFontSize: 11,\n titleFontSize: 13,\n },\n grid: {\n color: \"rgba(148, 163, 184, 0.3)\",\n opacity: 0.3,\n },\n legend: {\n backgroundColor: \"rgba(255, 255, 255, 0.95)\",\n textColor: \"#1e293b\",\n borderColor: \"rgba(0, 0, 0, 0.1)\",\n },\n cursor: {\n color: \"#2563eb\",\n labelBackground: \"rgba(37, 99, 235, 0.95)\",\n labelColor: \"#ffffff\",\n },\n seriesPalette: [\"#2563eb\", \"#7c3aed\", \"#db2777\", \"#ea580c\", \"#16a34a\", \"#0891b2\", \"#4f46e5\", \"#be185d\"],\n highlightColor: \"#2563eb\",\n },\n },\n {\n name: \"Midnight\",\n description: \"Deep blue dark theme\",\n previewColors: [\"#0f172a\", \"#3b82f6\", \"#8b5cf6\"],\n tags: [\"dark\", \"blue\"],\n theme: {\n backgroundColor: \"#0f172a\",\n plotAreaBackground: \"#1e293b\",\n axis: {\n color: \"#475569\",\n labelColor: \"#94a3b8\",\n titleColor: \"#f1f5f9\",\n labelFontSize: 11,\n titleFontSize: 13,\n },\n grid: {\n color: \"rgba(71, 85, 105, 0.25)\",\n opacity: 0.25,\n },\n legend: {\n backgroundColor: \"rgba(15, 23, 42, 0.95)\",\n textColor: \"#f1f5f9\",\n borderColor: \"rgba(255, 255, 255, 0.08)\",\n },\n cursor: {\n color: \"#3b82f6\",\n labelBackground: \"rgba(59, 130, 246, 0.95)\",\n labelColor: \"#ffffff\",\n },\n seriesPalette: [\"#3b82f6\", \"#8b5cf6\", \"#ec4899\", \"#f59e0b\", \"#10b981\", \"#06b6d4\", \"#6366f1\", \"#f43f5e\"],\n highlightColor: \"#3b82f6\",\n },\n },\n {\n name: \"Scientific\",\n description: \"Clean theme for scientific publications\",\n previewColors: [\"#fafafa\", \"#1f2937\", \"#059669\"],\n tags: [\"light\", \"scientific\", \"publication\"],\n theme: {\n backgroundColor: \"#fafafa\",\n plotAreaBackground: \"#ffffff\",\n axis: {\n color: \"#374151\",\n labelColor: \"#1f2937\",\n titleColor: \"#111827\",\n labelFontSize: 12,\n titleFontSize: 14,\n },\n grid: {\n color: \"rgba(156, 163, 175, 0.4)\",\n opacity: 0.4,\n },\n legend: {\n backgroundColor: \"#ffffff\",\n textColor: \"#111827\",\n borderColor: \"#e5e7eb\",\n },\n cursor: {\n color: \"#059669\",\n labelBackground: \"#059669\",\n labelColor: \"#ffffff\",\n },\n seriesPalette: [\"#1f2937\", \"#059669\", \"#dc2626\", \"#2563eb\", \"#7c3aed\", \"#ea580c\", \"#0891b2\", \"#be123c\"],\n highlightColor: \"#059669\",\n },\n },\n {\n name: \"Electrochemistry\",\n description: \"Theme optimized for electrochemical data\",\n previewColors: [\"#0d1117\", \"#00f2ff\", \"#ff6b6b\"],\n tags: [\"dark\", \"scientific\", \"electrochemistry\"],\n theme: {\n backgroundColor: \"#0d1117\",\n plotAreaBackground: \"#161b22\",\n axis: {\n color: \"#30363d\",\n labelColor: \"#8b949e\",\n titleColor: \"#c9d1d9\",\n labelFontSize: 11,\n titleFontSize: 13,\n },\n grid: {\n color: \"rgba(48, 54, 61, 0.5)\",\n opacity: 0.5,\n },\n legend: {\n backgroundColor: \"rgba(13, 17, 23, 0.95)\",\n textColor: \"#c9d1d9\",\n borderColor: \"rgba(48, 54, 61, 0.8)\",\n },\n cursor: {\n color: \"#00f2ff\",\n labelBackground: \"rgba(0, 242, 255, 0.95)\",\n labelColor: \"#000000\",\n },\n seriesPalette: [\"#00f2ff\", \"#ff6b6b\", \"#4ecdc4\", \"#feca57\", \"#a29bfe\", \"#fd79a8\", \"#00cec9\", \"#e17055\"],\n highlightColor: \"#00f2ff\",\n },\n },\n {\n name: \"High Contrast\",\n description: \"Maximum visibility theme\",\n previewColors: [\"#000000\", \"#ffffff\", \"#ffff00\"],\n tags: [\"dark\", \"accessibility\", \"high-contrast\"],\n theme: {\n backgroundColor: \"#000000\",\n plotAreaBackground: \"#0a0a0a\",\n axis: {\n color: \"#ffffff\",\n labelColor: \"#ffffff\",\n titleColor: \"#ffffff\",\n labelFontSize: 12,\n titleFontSize: 14,\n },\n grid: {\n color: \"rgba(255, 255, 255, 0.2)\",\n opacity: 0.2,\n },\n legend: {\n backgroundColor: \"#000000\",\n textColor: \"#ffffff\",\n borderColor: \"#ffffff\",\n },\n cursor: {\n color: \"#ffff00\",\n labelBackground: \"#ffff00\",\n labelColor: \"#000000\",\n },\n seriesPalette: [\"#ffff00\", \"#00ffff\", \"#ff00ff\", \"#00ff00\", \"#ff8800\", \"#00ff88\", \"#8800ff\", \"#ff0088\"],\n highlightColor: \"#ffff00\",\n },\n },\n];\n\n// ============================================\n// Theme Editor Class\n// ============================================\n\nexport class ThemeEditor {\n private container: HTMLElement;\n private options: Required<ThemeEditorOptions>;\n private currentTheme: EditorTheme;\n private element: HTMLDivElement | null = null;\n\n constructor(container: HTMLElement, options?: ThemeEditorOptions) {\n this.container = container;\n this.options = {\n baseTheme: THEME_PRESETS[0].theme,\n livePreview: true,\n showAdvanced: false,\n className: 'velo-plot-theme-editor',\n onChange: undefined,\n onExport: undefined,\n ...options,\n } as Required<ThemeEditorOptions>;\n\n this.currentTheme = this.resolveTheme(this.options.baseTheme);\n this.render();\n }\n\n /**\n * Get current theme\n */\n getTheme(): EditorTheme {\n return { ...this.currentTheme };\n }\n\n /**\n * Set theme\n */\n setTheme(theme: EditorTheme | string): void {\n this.currentTheme = this.resolveTheme(theme);\n this.render();\n this.notifyChange();\n }\n\n /**\n * Update a specific theme property\n */\n updateProperty(key: string, value: string): void {\n this.setNestedValue(this.currentTheme, key, value);\n this.notifyChange();\n }\n\n /**\n * Export theme as JSON\n */\n exportTheme(): string {\n const json = JSON.stringify(this.currentTheme, null, 2);\n this.options.onExport?.(this.currentTheme, json);\n return json;\n }\n\n /**\n * Import theme from JSON\n */\n importTheme(json: string): void {\n try {\n const theme = JSON.parse(json) as EditorTheme;\n this.currentTheme = theme;\n this.render();\n this.notifyChange();\n } catch (e) {\n console.error('[ThemeEditor] Failed to import theme:', e);\n }\n }\n\n /**\n * Get theme preset by name\n */\n getPreset(name: string): ThemePreset | undefined {\n return THEME_PRESETS.find(p => p.name.toLowerCase() === name.toLowerCase());\n }\n\n /**\n * Apply a preset\n */\n applyPreset(name: string): void {\n const preset = this.getPreset(name);\n if (preset) {\n this.currentTheme = { ...preset.theme };\n this.render();\n this.notifyChange();\n }\n }\n\n /**\n * Get all available presets\n */\n getPresets(): ThemePreset[] {\n return THEME_PRESETS;\n }\n\n /**\n * Destroy the editor\n */\n destroy(): void {\n if (this.element && this.element.parentNode) {\n this.element.parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n // ============================================\n // Private Methods\n // ============================================\n\n private resolveTheme(theme: EditorTheme | string): EditorTheme {\n if (typeof theme === 'string') {\n const preset = this.getPreset(theme);\n return preset ? { ...preset.theme } : { ...THEME_PRESETS[0].theme };\n }\n return { ...theme };\n }\n\n private setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {\n const keys = path.split('.');\n let current = obj;\n \n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (!(key in current)) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n \n current[keys[keys.length - 1]] = value;\n }\n\n private getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const keys = path.split('.');\n let current: unknown = obj;\n \n for (const key of keys) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[key];\n }\n \n return current;\n }\n\n private notifyChange(): void {\n if (this.options.livePreview) {\n this.options.onChange?.(this.currentTheme);\n }\n }\n\n private render(): void {\n // This creates an HTML structure that can be styled with CSS\n // In a real implementation, this would create interactive color pickers\n if (!this.element) {\n this.element = document.createElement('div');\n this.element.className = this.options.className;\n this.container.appendChild(this.element);\n }\n\n this.element.innerHTML = this.generateHTML();\n this.attachEventListeners();\n }\n\n private generateHTML(): string {\n const presetButtons = THEME_PRESETS.map(preset => `\n <button class=\"preset-btn\" data-preset=\"${preset.name}\" title=\"${preset.description || preset.name}\">\n <div class=\"preset-colors\">\n ${(preset.previewColors || []).map(c => `<span style=\"background:${c}\"></span>`).join('')}\n </div>\n <span class=\"preset-name\">${preset.name}</span>\n </button>\n `).join('');\n\n const colorGroups = THEME_COLOR_GROUPS.map(group => {\n const colorInputs = group.colors.map(color => {\n const value = this.getNestedValue(this.currentTheme as Record<string, unknown>, color.key) as string || '#000000';\n return `\n <div class=\"color-row\">\n <label title=\"${color.description || ''}\">${color.label}</label>\n <input type=\"color\" data-key=\"${color.key}\" value=\"${this.normalizeColor(value)}\" />\n <input type=\"text\" data-key=\"${color.key}\" value=\"${value}\" class=\"color-text\" />\n </div>\n `;\n }).join('');\n\n return `\n <div class=\"color-group\">\n <h4>${group.label}</h4>\n ${group.description ? `<p class=\"group-desc\">${group.description}</p>` : ''}\n ${colorInputs}\n </div>\n `;\n }).join('');\n\n return `\n <div class=\"theme-editor-inner\">\n <div class=\"presets-section\">\n <h3>Presets</h3>\n <div class=\"presets-grid\">${presetButtons}</div>\n </div>\n <div class=\"colors-section\">\n <h3>Customize</h3>\n ${colorGroups}\n </div>\n <div class=\"actions-section\">\n <button class=\"export-btn\">Export JSON</button>\n <button class=\"import-btn\">Import JSON</button>\n </div>\n </div>\n `;\n }\n\n private normalizeColor(color: string): string {\n // Convert rgba/rgb to hex for color picker\n if (color.startsWith('rgba') || color.startsWith('rgb')) {\n const match = color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (match) {\n const r = parseInt(match[1]).toString(16).padStart(2, '0');\n const g = parseInt(match[2]).toString(16).padStart(2, '0');\n const b = parseInt(match[3]).toString(16).padStart(2, '0');\n return `#${r}${g}${b}`;\n }\n }\n return color;\n }\n\n private attachEventListeners(): void {\n if (!this.element) return;\n\n // Preset buttons\n this.element.querySelectorAll('.preset-btn').forEach(btn => {\n btn.addEventListener('click', () => {\n const presetName = btn.getAttribute('data-preset');\n if (presetName) {\n this.applyPreset(presetName);\n }\n });\n });\n\n // Color inputs\n this.element.querySelectorAll('input[type=\"color\"], input.color-text').forEach(input => {\n input.addEventListener('input', (e) => {\n const target = e.target as HTMLInputElement;\n const key = target.getAttribute('data-key');\n if (key) {\n this.updateProperty(key, target.value);\n // Sync color picker and text input\n const sibling = target.type === 'color' \n ? target.nextElementSibling as HTMLInputElement\n : target.previousElementSibling as HTMLInputElement;\n if (sibling) {\n sibling.value = target.type === 'color' ? target.value : this.normalizeColor(target.value);\n }\n }\n });\n });\n\n // Export button\n this.element.querySelector('.export-btn')?.addEventListener('click', () => {\n const json = this.exportTheme();\n navigator.clipboard?.writeText(json).then(() => {\n });\n });\n\n // Import button\n this.element.querySelector('.import-btn')?.addEventListener('click', () => {\n const json = prompt('Paste theme JSON:');\n if (json) {\n this.importTheme(json);\n }\n });\n }\n}\n\n// ============================================\n// Convenience Functions\n// ============================================\n\n/**\n * Create a theme editor instance\n */\nexport function createThemeEditor(\n container: HTMLElement,\n options?: ThemeEditorOptions\n): ThemeEditor {\n return new ThemeEditor(container, options);\n}\n\n/**\n * Get a preset theme by name\n */\nexport function getPresetTheme(name: string): EditorTheme | undefined {\n const preset = THEME_PRESETS.find(p => p.name.toLowerCase() === name.toLowerCase());\n return preset ? { ...preset.theme } : undefined;\n}\n\n/**\n * Get all preset names\n */\nexport function getPresetNames(): string[] {\n return THEME_PRESETS.map(p => p.name);\n}\n","/**\n * Sci Plot - Theme Editor Plugin\n * \n * Provides a visual interface for editing chart themes in real-time.\n * \n * @module plugins/theme-editor\n */\n\nimport { ThemeEditor } from \"../../core/theme-editor\";\nimport type { EditorTheme, ThemePreset } from \"../../core/theme-editor\";\nimport type { PluginManifest, ChartPlugin, PluginContext } from \"../types\";\n\nexport interface PluginThemeEditorConfig {\n /** Initial theme to edit */\n initialTheme?: string;\n /** Position in the UI */\n position?: \"left\" | \"right\";\n}\n\nconst manifestThemeEditor: PluginManifest = {\n name: \"velo-plot-theme-editor\",\n version: \"1.0.0\",\n description: \"Visual theme editor for velo-plot\",\n provides: [\"ui\", \"theme\"],\n tags: [\"theme\", \"editor\", \"styling\", \"ui\"],\n};\n\n/**\n * SciPlot Theme Editor Plugin\n * \n * Adds a visual panel to customize chart colors and styles.\n */\nexport function PluginThemeEditor(_config: PluginThemeEditorConfig = {}): ChartPlugin<PluginThemeEditorConfig> {\n return {\n manifest: manifestThemeEditor,\n\n onInit(_ctx: PluginContext) {\n },\n\n onDestroy(_ctx: PluginContext) {\n }\n };\n}\n\nexport { ThemeEditor };\nexport type { EditorTheme, ThemePreset };\nexport default PluginThemeEditor;\n"],"names":["THEME_COLOR_GROUPS","THEME_PRESETS","ThemeEditor","container","options","__publicField","theme","key","value","_a","_b","json","e","name","p","preset","obj","path","keys","current","i","presetButtons","c","colorGroups","group","colorInputs","color","match","r","g","b","btn","presetName","input","target","sibling","createThemeEditor","getPresetTheme","getPresetNames","manifestThemeEditor","PluginThemeEditor","_config","_ctx"],"mappings":"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"}
|