semiotic 2.0.3 → 3.0.0-beta.2
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/CLAUDE.md +828 -0
- package/README.md +215 -37
- package/ai/cli.js +48 -0
- package/ai/dist/ai/componentRegistry.js +45 -0
- package/ai/dist/ai/mcp-server.js +99 -0
- package/ai/dist/ai/renderHOCToSVG.js +77 -0
- package/ai/dist/src/components/Annotation.js +358 -0
- package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +369 -0
- package/ai/dist/src/components/Axis/Axis.js +374 -0
- package/ai/dist/src/components/Axis/axisTitle.js +14 -0
- package/ai/dist/src/components/Axis/index.js +7 -0
- package/ai/dist/src/components/Axis/summaryGraphic.js +37 -0
- package/ai/dist/src/components/Brush.js +84 -0
- package/ai/dist/src/components/ChartErrorBoundary.js +91 -0
- package/ai/dist/src/components/DividedLine.js +65 -0
- package/ai/dist/src/components/Legend.js +140 -0
- package/ai/dist/src/components/LinkedCharts.js +95 -0
- package/ai/dist/src/components/ThemeProvider.js +79 -0
- package/ai/dist/src/components/Tooltip/Tooltip.js +309 -0
- package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
- package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
- package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
- package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
- package/ai/dist/src/components/annotationRules/networkframeRules.js +196 -0
- package/ai/dist/src/components/annotationRules/xyframeRules.js +297 -0
- package/ai/dist/src/components/batchWork.js +35 -0
- package/ai/dist/src/components/charts/index.js +109 -0
- package/ai/dist/src/components/charts/network/ChordDiagram.js +142 -0
- package/ai/dist/src/components/charts/network/CirclePack.js +108 -0
- package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +121 -0
- package/ai/dist/src/components/charts/network/SankeyDiagram.js +155 -0
- package/ai/dist/src/components/charts/network/TreeDiagram.js +110 -0
- package/ai/dist/src/components/charts/network/Treemap.js +106 -0
- package/ai/dist/src/components/charts/ordinal/BarChart.js +156 -0
- package/ai/dist/src/components/charts/ordinal/BoxPlot.js +139 -0
- package/ai/dist/src/components/charts/ordinal/DonutChart.js +130 -0
- package/ai/dist/src/components/charts/ordinal/DotPlot.js +126 -0
- package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +129 -0
- package/ai/dist/src/components/charts/ordinal/Histogram.js +132 -0
- package/ai/dist/src/components/charts/ordinal/PieChart.js +128 -0
- package/ai/dist/src/components/charts/ordinal/RidgelinePlot.js +130 -0
- package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +130 -0
- package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +147 -0
- package/ai/dist/src/components/charts/ordinal/ViolinPlot.js +138 -0
- package/ai/dist/src/components/charts/realtime/RealtimeHeatmap.js +79 -0
- package/ai/dist/src/components/charts/realtime/RealtimeHistogram.js +114 -0
- package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +93 -0
- package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +105 -0
- package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +106 -0
- package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
- package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
- package/ai/dist/src/components/charts/shared/formatUtils.js +213 -0
- package/ai/dist/src/components/charts/shared/hooks.js +49 -0
- package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
- package/ai/dist/src/components/charts/shared/selectionUtils.js +67 -0
- package/ai/dist/src/components/charts/shared/tooltipUtils.js +79 -0
- package/ai/dist/src/components/charts/shared/types.js +2 -0
- package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
- package/ai/dist/src/components/charts/shared/validateProps.js +736 -0
- package/ai/dist/src/components/charts/xy/AreaChart.js +230 -0
- package/ai/dist/src/components/charts/xy/BubbleChart.js +251 -0
- package/ai/dist/src/components/charts/xy/Heatmap.js +235 -0
- package/ai/dist/src/components/charts/xy/LineChart.js +307 -0
- package/ai/dist/src/components/charts/xy/MinimapChart.js +298 -0
- package/ai/dist/src/components/charts/xy/Scatterplot.js +172 -0
- package/ai/dist/src/components/charts/xy/ScatterplotMatrix.js +426 -0
- package/ai/dist/src/components/charts/xy/StackedAreaChart.js +231 -0
- package/ai/dist/src/components/constants/coordinateNames.js +11 -0
- package/ai/dist/src/components/constants/frame_props.js +251 -0
- package/ai/dist/src/components/data/dataFunctions.js +487 -0
- package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
- package/ai/dist/src/components/data/transforms.js +143 -0
- package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
- package/ai/dist/src/components/export/exportChart.js +121 -0
- package/ai/dist/src/components/generic_utilities/functions.js +5 -0
- package/ai/dist/src/components/geometry/areaDrawing.js +312 -0
- package/ai/dist/src/components/geometry/contourLayout.js +73 -0
- package/ai/dist/src/components/geometry/hexbinLayout.js +163 -0
- package/ai/dist/src/components/geometry/lineDrawing.js +356 -0
- package/ai/dist/src/components/geometry/sankeyLinks.js +331 -0
- package/ai/dist/src/components/geometry/summaryLayouts.js +136 -0
- package/ai/dist/src/components/index.js +18 -0
- package/ai/dist/src/components/processing/InteractionItems.js +223 -0
- package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
- package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
- package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
- package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
- package/ai/dist/src/components/processing/layouts/index.js +32 -0
- package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
- package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
- package/ai/dist/src/components/processing/layouts/types.js +2 -0
- package/ai/dist/src/components/processing/networkDefaults.js +39 -0
- package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
- package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
- package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
- package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
- package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
- package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
- package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
- package/ai/dist/src/components/realtime/renderers/types.js +2 -0
- package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
- package/ai/dist/src/components/realtime/types.js +2 -0
- package/ai/dist/src/components/semiotic-ai.js +89 -0
- package/ai/dist/src/components/semiotic-data.js +12 -0
- package/ai/dist/src/components/semiotic-network.js +38 -0
- package/ai/dist/src/components/semiotic-ordinal.js +28 -0
- package/ai/dist/src/components/semiotic-realtime.js +30 -0
- package/ai/dist/src/components/semiotic-server.js +8 -0
- package/ai/dist/src/components/semiotic-xy.js +35 -0
- package/ai/dist/src/components/semiotic.js +109 -0
- package/ai/dist/src/components/server/renderToStaticSVG.js +594 -0
- package/ai/dist/src/components/store/SelectionStore.js +91 -0
- package/ai/dist/src/components/store/ThemeStore.js +78 -0
- package/ai/dist/src/components/store/TooltipStore.js +13 -0
- package/ai/dist/src/components/store/createStore.js +81 -0
- package/ai/dist/src/components/store/useSelection.js +133 -0
- package/ai/dist/src/components/stream/CanvasHitTester.js +164 -0
- package/ai/dist/src/components/stream/DataSourceAdapter.js +99 -0
- package/ai/dist/src/components/stream/MarginalGraphics.js +266 -0
- package/ai/dist/src/components/stream/NetworkCanvasHitTester.js +228 -0
- package/ai/dist/src/components/stream/NetworkPipelineStore.js +498 -0
- package/ai/dist/src/components/stream/NetworkSVGOverlay.js +70 -0
- package/ai/dist/src/components/stream/NetworkSceneGraph.js +38 -0
- package/ai/dist/src/components/stream/OrdinalCanvasHitTester.js +146 -0
- package/ai/dist/src/components/stream/OrdinalPipelineStore.js +786 -0
- package/ai/dist/src/components/stream/OrdinalSVGOverlay.js +130 -0
- package/ai/dist/src/components/stream/ParticlePool.js +174 -0
- package/ai/dist/src/components/stream/PipelineStore.js +1243 -0
- package/ai/dist/src/components/stream/SVGOverlay.js +129 -0
- package/ai/dist/src/components/stream/SceneGraph.js +132 -0
- package/ai/dist/src/components/stream/StreamNetworkFrame.js +561 -0
- package/ai/dist/src/components/stream/StreamOrdinalFrame.js +492 -0
- package/ai/dist/src/components/stream/StreamXYFrame.js +590 -0
- package/ai/dist/src/components/stream/accessorUtils.js +20 -0
- package/ai/dist/src/components/stream/index.js +32 -0
- package/ai/dist/src/components/stream/layouts/chordLayoutPlugin.js +352 -0
- package/ai/dist/src/components/stream/layouts/forceLayoutPlugin.js +230 -0
- package/ai/dist/src/components/stream/layouts/hierarchyLayoutPlugin.js +568 -0
- package/ai/dist/src/components/stream/layouts/index.js +28 -0
- package/ai/dist/src/components/stream/layouts/sankeyLayoutPlugin.js +245 -0
- package/ai/dist/src/components/stream/networkTypes.js +17 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/barScene.js +126 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/connectorScene.js +62 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/pieScene.js +33 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/pointScene.js +63 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/statisticalScene.js +278 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/timelineScene.js +30 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/types.js +2 -0
- package/ai/dist/src/components/stream/ordinalTypes.js +2 -0
- package/ai/dist/src/components/stream/renderers/areaCanvasRenderer.js +48 -0
- package/ai/dist/src/components/stream/renderers/barCanvasRenderer.js +70 -0
- package/ai/dist/src/components/stream/renderers/boxplotCanvasRenderer.js +75 -0
- package/ai/dist/src/components/stream/renderers/candlestickCanvasRenderer.js +28 -0
- package/ai/dist/src/components/stream/renderers/connectorCanvasRenderer.js +47 -0
- package/ai/dist/src/components/stream/renderers/heatmapCanvasRenderer.js +31 -0
- package/ai/dist/src/components/stream/renderers/lineCanvasRenderer.js +140 -0
- package/ai/dist/src/components/stream/renderers/networkArcRenderer.js +38 -0
- package/ai/dist/src/components/stream/renderers/networkCircleRenderer.js +37 -0
- package/ai/dist/src/components/stream/renderers/networkEdgeRenderer.js +102 -0
- package/ai/dist/src/components/stream/renderers/networkParticleRenderer.js +63 -0
- package/ai/dist/src/components/stream/renderers/networkRectRenderer.js +35 -0
- package/ai/dist/src/components/stream/renderers/pointCanvasRenderer.js +38 -0
- package/ai/dist/src/components/stream/renderers/swarmCanvasRenderer.js +10 -0
- package/ai/dist/src/components/stream/renderers/types.js +2 -0
- package/ai/dist/src/components/stream/renderers/violinCanvasRenderer.js +47 -0
- package/ai/dist/src/components/stream/renderers/waterfallCanvasRenderer.js +38 -0
- package/ai/dist/src/components/stream/renderers/wedgeCanvasRenderer.js +33 -0
- package/ai/dist/src/components/stream/types.js +2 -0
- package/ai/dist/src/components/types/annotationTypes.js +2 -0
- package/ai/dist/src/components/types/canvasTypes.js +2 -0
- package/ai/dist/src/components/types/generalTypes.js +2 -0
- package/ai/dist/src/components/types/interactionTypes.js +2 -0
- package/ai/dist/src/components/types/legendTypes.js +2 -0
- package/ai/dist/src/components/types/networkTypes.js +2 -0
- package/ai/dist/src/components/types/ordinalTypes.js +2 -0
- package/ai/dist/src/components/types/xyTypes.js +2 -0
- package/ai/dist/src/components/useBoundingRect.js +24 -0
- package/ai/dist/src/components/visualizationLayerBehavior/axis.js +301 -0
- package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
- package/ai/dist/src/setupTests.js +4 -0
- package/ai/examples.md +489 -0
- package/ai/schema.json +1338 -0
- package/ai/system-prompt.md +41 -0
- package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -1
- package/dist/Axis/axisTitle.d.ts +3 -3
- package/dist/Axis/summaryGraphic.d.ts +1 -1
- package/dist/ChartErrorBoundary.d.ts +39 -0
- package/dist/LinkedCharts.d.ts +42 -0
- package/dist/ThemeProvider.d.ts +12 -0
- package/dist/Tooltip/Tooltip.d.ts +141 -0
- package/dist/TooltipPositioner/index.d.ts +1 -1
- package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
- package/dist/annotationRules/networkframeRules.d.ts +2 -2
- package/dist/annotationRules/xyframeRules.d.ts +2 -2
- package/dist/batchWork.d.ts +1 -1
- package/dist/charts/index.d.ts +74 -0
- package/dist/charts/network/ChordDiagram.d.ts +36 -0
- package/dist/charts/network/CirclePack.d.ts +32 -0
- package/dist/charts/network/ForceDirectedGraph.d.ts +38 -0
- package/dist/charts/network/SankeyDiagram.d.ts +38 -0
- package/dist/charts/network/TreeDiagram.d.ts +34 -0
- package/dist/charts/network/Treemap.d.ts +33 -0
- package/dist/charts/ordinal/BarChart.d.ts +32 -0
- package/dist/charts/ordinal/BoxPlot.d.ts +27 -0
- package/dist/charts/ordinal/DonutChart.d.ts +23 -0
- package/dist/charts/ordinal/DotPlot.d.ts +27 -0
- package/dist/charts/ordinal/GroupedBarChart.d.ts +26 -0
- package/dist/charts/ordinal/Histogram.d.ts +26 -0
- package/dist/charts/ordinal/PieChart.d.ts +21 -0
- package/dist/charts/ordinal/RidgelinePlot.d.ts +34 -0
- package/dist/charts/ordinal/StackedBarChart.d.ts +27 -0
- package/dist/charts/ordinal/SwarmPlot.d.ts +29 -0
- package/dist/charts/ordinal/ViolinPlot.d.ts +28 -0
- package/dist/charts/realtime/RealtimeHeatmap.d.ts +95 -0
- package/dist/charts/realtime/RealtimeHistogram.d.ts +119 -0
- package/dist/charts/realtime/RealtimeLineChart.d.ts +98 -0
- package/dist/charts/realtime/RealtimeSwarmChart.d.ts +100 -0
- package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +97 -0
- package/dist/charts/shared/ChartError.d.ts +19 -0
- package/dist/charts/shared/colorUtils.d.ts +62 -0
- package/dist/charts/shared/formatUtils.d.ts +94 -0
- package/dist/charts/shared/hooks.d.ts +20 -0
- package/dist/charts/shared/legendUtils.d.ts +32 -0
- package/dist/charts/shared/selectionUtils.d.ts +51 -0
- package/dist/charts/shared/tooltipUtils.d.ts +18 -0
- package/dist/charts/shared/types.d.ts +97 -0
- package/dist/charts/shared/validateChartData.d.ts +41 -0
- package/dist/charts/shared/validateProps.d.ts +18 -0
- package/dist/charts/xy/AreaChart.d.ts +130 -0
- package/dist/charts/xy/BubbleChart.d.ts +164 -0
- package/dist/charts/xy/Heatmap.d.ts +156 -0
- package/dist/charts/xy/LineChart.d.ts +196 -0
- package/dist/charts/xy/MinimapChart.d.ts +73 -0
- package/dist/charts/xy/Scatterplot.d.ts +55 -0
- package/dist/charts/xy/ScatterplotMatrix.d.ts +71 -0
- package/dist/charts/xy/StackedAreaChart.d.ts +134 -0
- package/dist/constants/frame_props.d.ts +9 -0
- package/dist/data/dataFunctions.d.ts +10 -11
- package/dist/data/transforms.d.ts +45 -0
- package/dist/export/exportChart.d.ts +16 -0
- package/dist/{svg → geometry}/areaDrawing.d.ts +3 -13
- package/dist/geometry/contourLayout.d.ts +6 -0
- package/dist/geometry/hexbinLayout.d.ts +7 -0
- package/dist/{svg → geometry}/lineDrawing.d.ts +7 -35
- package/dist/geometry/sankeyLinks.d.ts +2 -0
- package/dist/geometry/summaryLayouts.d.ts +45 -0
- package/dist/index.d.ts +1 -125
- package/dist/network.js +7495 -0
- package/dist/network.js.map +1 -0
- package/dist/network.min.js +1 -0
- package/dist/network.module.js +7458 -0
- package/dist/network.module.js.map +1 -0
- package/dist/network.module.min.js +1 -0
- package/dist/ordinal.js +6497 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/ordinal.min.js +1 -0
- package/dist/ordinal.module.js +6465 -0
- package/dist/ordinal.module.js.map +1 -0
- package/dist/ordinal.module.min.js +1 -0
- package/dist/processing/InteractionItems.d.ts +5 -4
- package/dist/processing/hierarchyUtils.d.ts +16 -0
- package/dist/processing/layouts/chordLayout.d.ts +2 -0
- package/dist/processing/layouts/forceLayout.d.ts +3 -0
- package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
- package/dist/processing/layouts/index.d.ts +8 -0
- package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
- package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
- package/dist/processing/layouts/types.d.ts +17 -0
- package/dist/processing/networkDefaults.d.ts +36 -0
- package/dist/realtime/BinAccumulator.d.ts +8 -0
- package/dist/realtime/IncrementalExtent.d.ts +13 -0
- package/dist/realtime/RingBuffer.d.ts +19 -0
- package/dist/realtime/renderers/barRenderer.d.ts +2 -0
- package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
- package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
- package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
- package/dist/realtime/renderers/types.d.ts +9 -0
- package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
- package/dist/realtime/types.d.ts +113 -0
- package/dist/realtime.js +7072 -0
- package/dist/realtime.js.map +1 -0
- package/dist/realtime.min.js +1 -0
- package/dist/realtime.module.js +7043 -0
- package/dist/realtime.module.js.map +1 -0
- package/dist/realtime.module.min.js +1 -0
- package/dist/semiotic-ai.d.ts +36 -0
- package/dist/semiotic-ai.js +13323 -0
- package/dist/semiotic-ai.js.map +1 -0
- package/dist/semiotic-ai.min.js +1 -0
- package/dist/semiotic-ai.module.js +13264 -0
- package/dist/semiotic-ai.module.js.map +1 -0
- package/dist/semiotic-ai.module.min.js +1 -0
- package/dist/semiotic-data.d.ts +5 -0
- package/dist/semiotic-data.js +141 -0
- package/dist/semiotic-data.js.map +1 -0
- package/dist/semiotic-data.min.js +1 -0
- package/dist/semiotic-data.module.js +136 -0
- package/dist/semiotic-data.module.js.map +1 -0
- package/dist/semiotic-data.module.min.js +1 -0
- package/dist/semiotic-network.d.ts +23 -0
- package/dist/semiotic-ordinal.d.ts +19 -0
- package/dist/semiotic-realtime.d.ts +22 -0
- package/dist/semiotic-server.d.ts +1 -0
- package/dist/semiotic-xy.d.ts +21 -0
- package/dist/semiotic.d.ts +41 -28
- package/dist/semiotic.js +16257 -13130
- package/dist/semiotic.js.map +1 -0
- package/dist/semiotic.min.js +1 -0
- package/dist/semiotic.module.js +16198 -13100
- package/dist/semiotic.module.js.map +1 -0
- package/dist/semiotic.module.min.js +1 -0
- package/dist/server/renderToStaticSVG.d.ts +9 -0
- package/dist/server.js +5191 -0
- package/dist/server.js.map +1 -0
- package/dist/server.min.js +1 -0
- package/dist/server.module.js +5166 -0
- package/dist/server.module.js.map +1 -0
- package/dist/server.module.min.js +1 -0
- package/dist/store/SelectionStore.d.ts +29 -0
- package/dist/store/ThemeStore.d.ts +26 -0
- package/dist/store/useSelection.d.ts +66 -0
- package/dist/stream/CanvasHitTester.d.ts +18 -0
- package/dist/stream/DataSourceAdapter.d.ts +32 -0
- package/dist/stream/MarginalGraphics.d.ts +19 -0
- package/dist/stream/NetworkCanvasHitTester.d.ts +14 -0
- package/dist/stream/NetworkPipelineStore.d.ts +74 -0
- package/dist/stream/NetworkSVGOverlay.d.ts +40 -0
- package/dist/stream/NetworkSceneGraph.d.ts +14 -0
- package/dist/stream/OrdinalCanvasHitTester.d.ts +9 -0
- package/dist/stream/OrdinalPipelineStore.d.ts +65 -0
- package/dist/stream/OrdinalSVGOverlay.d.ts +34 -0
- package/dist/stream/ParticlePool.d.ts +28 -0
- package/dist/stream/PipelineStore.d.ts +161 -0
- package/dist/stream/SVGOverlay.d.ts +37 -0
- package/dist/stream/SceneGraph.d.ts +16 -0
- package/dist/stream/StreamNetworkFrame.d.ts +4 -0
- package/dist/stream/StreamOrdinalFrame.d.ts +4 -0
- package/dist/stream/StreamXYFrame.d.ts +4 -0
- package/dist/stream/accessorUtils.d.ts +2 -0
- package/dist/stream/index.d.ts +16 -0
- package/dist/stream/layouts/chordLayoutPlugin.d.ts +8 -0
- package/dist/stream/layouts/forceLayoutPlugin.d.ts +9 -0
- package/dist/stream/layouts/hierarchyLayoutPlugin.d.ts +17 -0
- package/dist/stream/layouts/index.d.ts +11 -0
- package/dist/stream/layouts/sankeyLayoutPlugin.d.ts +8 -0
- package/dist/stream/networkTypes.d.ts +346 -0
- package/dist/stream/ordinalSceneBuilders/barScene.d.ts +4 -0
- package/dist/stream/ordinalSceneBuilders/connectorScene.d.ts +3 -0
- package/dist/stream/ordinalSceneBuilders/pieScene.d.ts +3 -0
- package/dist/stream/ordinalSceneBuilders/pointScene.d.ts +4 -0
- package/dist/stream/ordinalSceneBuilders/statisticalScene.d.ts +6 -0
- package/dist/stream/ordinalSceneBuilders/timelineScene.d.ts +3 -0
- package/dist/stream/ordinalSceneBuilders/types.d.ts +21 -0
- package/dist/stream/ordinalTypes.d.ts +225 -0
- package/dist/stream/renderers/areaCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/barCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/boxplotCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/candlestickCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/connectorCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/heatmapCanvasRenderer.d.ts +6 -0
- package/dist/stream/renderers/lineCanvasRenderer.d.ts +8 -0
- package/dist/stream/renderers/networkArcRenderer.d.ts +5 -0
- package/dist/stream/renderers/networkCircleRenderer.d.ts +5 -0
- package/dist/stream/renderers/networkEdgeRenderer.d.ts +10 -0
- package/dist/stream/renderers/networkParticleRenderer.d.ts +11 -0
- package/dist/stream/renderers/networkRectRenderer.d.ts +5 -0
- package/dist/stream/renderers/pointCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/swarmCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/types.d.ts +7 -0
- package/dist/stream/renderers/violinCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/waterfallCanvasRenderer.d.ts +8 -0
- package/dist/stream/renderers/wedgeCanvasRenderer.d.ts +2 -0
- package/dist/stream/types.d.ts +307 -0
- package/dist/types/annotationTypes.d.ts +13 -18
- package/dist/types/canvasTypes.d.ts +1 -1
- package/dist/types/generalTypes.d.ts +41 -36
- package/dist/types/interactionTypes.d.ts +7 -9
- package/dist/types/legendTypes.d.ts +2 -2
- package/dist/types/networkTypes.d.ts +40 -30
- package/dist/types/ordinalTypes.d.ts +27 -18
- package/dist/types/xyTypes.d.ts +1 -95
- package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
- package/dist/visualizationLayerBehavior/general.d.ts +8 -12
- package/dist/xy.js +6993 -0
- package/dist/xy.js.map +1 -0
- package/dist/xy.min.js +1 -0
- package/dist/xy.module.js +6957 -0
- package/dist/xy.module.js.map +1 -0
- package/dist/xy.module.min.js +1 -0
- package/package.json +123 -67
- package/dist/AnnotationLayer/helpers.d.ts +0 -6
- package/dist/AnnotationLayer/index.d.ts +0 -2
- package/dist/FacetController.d.ts +0 -12
- package/dist/Frame.d.ts +0 -2
- package/dist/InteractionLayer.d.ts +0 -3
- package/dist/Mark/Mark.d.ts +0 -3
- package/dist/Mark/Mark.types.d.ts +0 -10
- package/dist/Mark/constants/markTransition.d.ts +0 -10
- package/dist/Mark/markBehavior/drawing.d.ts +0 -13
- package/dist/MiniMap.d.ts +0 -14
- package/dist/MinimapXYFrame.d.ts +0 -10
- package/dist/NetworkFrame.d.ts +0 -4
- package/dist/OrdinalFrame.d.ts +0 -4
- package/dist/ResponsiveFrame.d.ts +0 -22
- package/dist/ResponsiveMinimapXYFrame.d.ts +0 -6
- package/dist/ResponsiveNetworkFrame.d.ts +0 -6
- package/dist/ResponsiveOrdinalFrame.d.ts +0 -6
- package/dist/ResponsiveXYFrame.d.ts +0 -6
- package/dist/SpanOrDiv.d.ts +0 -10
- package/dist/SparkFrame.d.ts +0 -14
- package/dist/SparkNetworkFrame.d.ts +0 -5
- package/dist/SparkOrdinalFrame.d.ts +0 -5
- package/dist/SparkXYFrame.d.ts +0 -5
- package/dist/VisualizationLayer.d.ts +0 -33
- package/dist/XYFrame.d.ts +0 -4
- package/dist/annotationRules/orframeRules.d.ts +0 -105
- package/dist/components/Annotation.d.ts +0 -3
- package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
- package/dist/components/Axis/Axis.d.ts +0 -7
- package/dist/components/Axis/axisTitle.d.ts +0 -10
- package/dist/components/Axis/index.d.ts +0 -2
- package/dist/components/Axis/summaryGraphic.d.ts +0 -17
- package/dist/components/Brush.d.ts +0 -12
- package/dist/components/DividedLine.d.ts +0 -16
- package/dist/components/FacetController.d.ts +0 -12
- package/dist/components/Frame.d.ts +0 -2
- package/dist/components/InteractionLayer.d.ts +0 -3
- package/dist/components/Legend.d.ts +0 -3
- package/dist/components/Mark/Mark.d.ts +0 -3
- package/dist/components/Mark/Mark.types.d.ts +0 -10
- package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
- package/dist/components/MiniMap.d.ts +0 -14
- package/dist/components/MinimapXYFrame.d.ts +0 -10
- package/dist/components/NetworkFrame.d.ts +0 -4
- package/dist/components/OrdinalFrame.d.ts +0 -4
- package/dist/components/ResponsiveFrame.d.ts +0 -22
- package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
- package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
- package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
- package/dist/components/ResponsiveXYFrame.d.ts +0 -6
- package/dist/components/SpanOrDiv.d.ts +0 -10
- package/dist/components/SparkFrame.d.ts +0 -14
- package/dist/components/SparkNetworkFrame.d.ts +0 -5
- package/dist/components/SparkOrdinalFrame.d.ts +0 -5
- package/dist/components/SparkXYFrame.d.ts +0 -5
- package/dist/components/TooltipPositioner/index.d.ts +0 -7
- package/dist/components/VisualizationLayer.d.ts +0 -33
- package/dist/components/XYFrame.d.ts +0 -4
- package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
- package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
- package/dist/components/annotationRules/baseRules.d.ts +0 -25
- package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
- package/dist/components/annotationRules/orframeRules.d.ts +0 -105
- package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
- package/dist/components/batchWork.d.ts +0 -6
- package/dist/components/constants/coordinateNames.d.ts +0 -8
- package/dist/components/constants/frame_props.d.ts +0 -4
- package/dist/components/constants/jsx.d.ts +0 -19
- package/dist/components/data/dataFunctions.d.ts +0 -46
- package/dist/components/data/multiAccessorUtils.d.ts +0 -1
- package/dist/components/data/unflowedFunctions.d.ts +0 -1
- package/dist/components/generic_utilities/functions.d.ts +0 -1
- package/dist/components/index.d.ts +0 -125
- package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
- package/dist/components/processing/InteractionItems.d.ts +0 -12
- package/dist/components/processing/network.d.ts +0 -114
- package/dist/components/processing/ordinal.d.ts +0 -102
- package/dist/components/processing/xyDrawing.d.ts +0 -135
- package/dist/components/semiotic.d.ts +0 -35
- package/dist/components/store/TooltipStore.d.ts +0 -2
- package/dist/components/store/createStore.d.ts +0 -1
- package/dist/components/svg/SvgHelper.d.ts +0 -37
- package/dist/components/svg/areaDrawing.d.ts +0 -31
- package/dist/components/svg/ckmeans.d.ts +0 -69
- package/dist/components/svg/frameFunctions.d.ts +0 -119
- package/dist/components/svg/lineDrawing.d.ts +0 -99
- package/dist/components/svg/networkDrawing.d.ts +0 -134
- package/dist/components/svg/pieceDrawing.d.ts +0 -13
- package/dist/components/svg/pieceLayouts.d.ts +0 -71
- package/dist/components/svg/summaryLayouts.d.ts +0 -74
- package/dist/components/types/annotationTypes.d.ts +0 -140
- package/dist/components/types/canvasTypes.d.ts +0 -9
- package/dist/components/types/generalTypes.d.ts +0 -236
- package/dist/components/types/interactionTypes.d.ts +0 -74
- package/dist/components/types/legendTypes.d.ts +0 -20
- package/dist/components/types/networkTypes.d.ts +0 -165
- package/dist/components/types/ordinalTypes.d.ts +0 -103
- package/dist/components/types/xyTypes.d.ts +0 -118
- package/dist/components/useBoundingRect.d.ts +0 -2
- package/dist/components/useDerivedStateFromProps.d.ts +0 -1
- package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
- package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
- package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
- package/dist/constants/jsx.d.ts +0 -19
- package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
- package/dist/processing/network.d.ts +0 -114
- package/dist/processing/ordinal.d.ts +0 -102
- package/dist/processing/xyDrawing.d.ts +0 -135
- package/dist/setupTests.d.ts +0 -1
- package/dist/svg/SvgHelper.d.ts +0 -37
- package/dist/svg/ckmeans.d.ts +0 -69
- package/dist/svg/frameFunctions.d.ts +0 -119
- package/dist/svg/networkDrawing.d.ts +0 -134
- package/dist/svg/pieceDrawing.d.ts +0 -13
- package/dist/svg/pieceLayouts.d.ts +0 -71
- package/dist/svg/summaryLayouts.d.ts +0 -74
- package/dist/useDerivedStateFromProps.d.ts +0 -1
- package/dist/useLegacyUnmountCallback.d.ts +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("react"),e=require("d3-brush"),n=require("d3-selection"),i=require("d3-scale"),o=require("d3-array"),r=require("d3-interpolate"),s=require("d3-sankey-circular"),a=require("d3-scale-chromatic"),l=require("d3-shape"),c=require("d3-force"),u=require("d3-chord"),h=require("d3-hierarchy");function d(t){if(t&&t.__esModule)return t;const e=Object.create(null);if(t)for(const n in t)if("default"!==n){const i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}return e.default=t,Object.freeze(e)}const f=d(t),y=5e3;class g{constructor(t){this.lastBoundedData=null,this.chunkTimer=0,this.callback=t}setBoundedData(t){if(t===this.lastBoundedData)return;if(this.lastBoundedData=t,this.chunkTimer&&(cancelAnimationFrame(this.chunkTimer),this.chunkTimer=0),5e3>=t.length)return void this.callback({inserts:t,bounded:!0});this.callback({inserts:t.slice(0,y),bounded:!0,totalSize:t.length});let e=y;const n=()=>{if(e>=t.length)return;if(t!==this.lastBoundedData)return;const i=Math.min(e+y,t.length);this.callback({inserts:t.slice(e,i),bounded:!1}),e=i,this.chunkTimer=t.length>e?requestAnimationFrame(n):0};this.chunkTimer=requestAnimationFrame(n)}push(t){this.callback({inserts:[t],bounded:!1})}pushMany(t){0!==t.length&&this.callback({inserts:t,bounded:!1})}clear(){this.chunkTimer&&(cancelAnimationFrame(this.chunkTimer),this.chunkTimer=0),this.lastBoundedData=null}}class p{constructor(t){if(this._capacity=t,this.head=0,this._size=0,1>t)throw Error("RingBuffer capacity must be at least 1");this.buffer=Array(t)}push(t){let e;return this._size===this._capacity?e=this.buffer[this.head]:this._size++,this.buffer[this.head]=t,this.head=(this.head+1)%this._capacity,e}pushMany(t){const e=[];for(const n of t){const t=this.push(n);void 0!==t&&e.push(t)}return e}get(t){if(t>=0&&this._size>t)return this.buffer[(this.head-this._size+t+this._capacity)%this._capacity]}peek(){if(0!==this._size)return this.buffer[(this.head-1+this._capacity)%this._capacity]}peekOldest(){if(0!==this._size)return this.buffer[(this.head-this._size+this._capacity)%this._capacity]}[Symbol.iterator](){let t=0;const e=this;return{next:()=>e._size>t?{done:!1,value:e.get(t++)}:{done:!0,value:void 0}}}toArray(){const t=[];for(const e of this)t.push(e);return t}resize(t){if(1>t)throw Error("RingBuffer capacity must be at least 1");const e=this.toArray(),n=[];for(;e.length>t;)n.push(e.shift());this._capacity=t,this.buffer=Array(t),this.head=0,this._size=0;for(const t of e)this.push(t);return n}clear(){this.buffer=Array(this._capacity),this.head=0,this._size=0}get size(){return this._size}get capacity(){return this._capacity}get full(){return this._size===this._capacity}}class m{constructor(){this._min=1/0,this._max=-1/0,this._dirty=!1}push(t){Number.isNaN(t)||(this._min>t&&(this._min=t),t>this._max&&(this._max=t))}evict(t){t!==this._min&&t!==this._max||(this._dirty=!0)}recalculate(t,e){this._min=1/0,this._max=-1/0;for(const n of t){const t=e?e(n):n;Number.isNaN(t)||(this._min>t&&(this._min=t),t>this._max&&(this._max=t))}this._dirty=!1}clear(){this._min=1/0,this._max=-1/0,this._dirty=!1}get extent(){return[this._min,this._max]}get min(){return this._min}get max(){return this._max}get dirty(){return this._dirty}}function v(t,e,n,i,o){const r=new Map;for(const s of t){const t=e(s),a=n(s);if(null==t||null==a||Number.isNaN(t)||Number.isNaN(a))continue;const l=Math.floor(t/i)*i;let c=r.get(l);if(c||(c={start:l,end:l+i,total:0,categories:new Map},r.set(l,c)),c.total+=a,o){const t=o(s);c.categories.set(t,(c.categories.get(t)||0)+a)}}return r}function x(t,e,n,i,o,r){const s=[],a=[];for(const o of t){const t=n(o),r=i(o);null==t||null==r||Number.isNaN(t)||Number.isNaN(r)||(s.push([e.x(t),e.y(r)]),a.push(r))}return{type:"line",path:s,rawValues:a,style:o,datum:t,group:r}}function b(t,e,n,i,o,r,s){const a=[],l=[];for(const r of t){const t=n(r),s=i(r);if(null==t||null==s||Number.isNaN(t)||Number.isNaN(s))continue;const c=e.x(t);a.push([c,e.y(s)]),l.push([c,e.y(o)])}return{type:"area",topPath:a,bottomPath:l,style:r,datum:t,group:s}}function k(t,e,n,i,o,r){const s=n(t),a=i(t);return null==s||null==a||Number.isNaN(s)||Number.isNaN(a)?null:{type:"point",x:e.x(s),y:e.y(a),r:o,style:r,datum:t}}function w(t,e,n,i,o,r,s){return{type:"rect",x:t,y:e,w:n,h:i,style:o,datum:r,group:s}}function E(t,e,n,i,o,r){return{type:"heatcell",x:t,y:e,w:n,h:i,fill:o,datum:r}}function A(t,e){if("function"==typeof t)return e=>+t(e);const n=t||e;return t=>+t[n]}function S(t,e){return"function"==typeof t?t:t?e=>e[t]+"":void 0}class M{constructor(t){this.xExtent=new m,this.yExtent=new m,this.timestampBuffer=null,this.activeTransition=null,this.prevPositionMap=new Map,this.lastIngestTime=0,this.scales=null,this.scene=[],this.version=0,this.config=t,this.buffer=new p(t.windowSize),this.growingCap=t.windowSize,["bar","swarm","waterfall"].includes(t.chartType)||"streaming"===t.runtimeMode?(this.getX=A(t.timeAccessor||t.xAccessor,"time"),this.getY=A(t.valueAccessor||t.yAccessor,"value")):(this.getX=A(t.xAccessor,"x"),this.getY=A(t.yAccessor,"y")),this.getGroup=S(t.groupAccessor),this.getCategory=S(t.categoryAccessor),this.getSize=t.sizeAccessor?A(t.sizeAccessor,"size"):void 0,this.getColor=S(t.colorAccessor),this.getBounds=t.boundsAccessor?A(t.boundsAccessor,"bounds"):void 0,"candlestick"===t.chartType&&(this.getOpen=A(t.openAccessor,"open"),this.getHigh=A(t.highAccessor,"high"),this.getLow=A(t.lowAccessor,"low"),this.getClose=A(t.closeAccessor,"close")),t.pulse&&(this.timestampBuffer=new p(t.windowSize))}ingest(t){const e="undefined"!=typeof performance?performance.now():Date.now();if(this.lastIngestTime=e,t.bounded){this.buffer.clear(),this.xExtent.clear(),this.yExtent.clear(),this.timestampBuffer&&this.timestampBuffer.clear();const n=t.totalSize||t.inserts.length;n>this.buffer.capacity&&(this.buffer.resize(n),this.timestampBuffer&&n>this.timestampBuffer.capacity&&this.timestampBuffer.resize(n));for(const n of t.inserts)this.buffer.push(n),this.timestampBuffer&&this.timestampBuffer.push(e),this.xExtent.push(this.getX(n)),"candlestick"===this.config.chartType&&this.getHigh&&this.getLow?(this.yExtent.push(this.getHigh(n)),this.yExtent.push(this.getLow(n))):this.yExtent.push(this.getY(n))}else for(const n of t.inserts){"growing"===this.config.windowMode&&this.buffer.full&&(this.growingCap*=2,this.buffer.resize(this.growingCap),this.timestampBuffer&&this.timestampBuffer.resize(this.growingCap));const t=this.buffer.push(n);this.timestampBuffer&&this.timestampBuffer.push(e),this.xExtent.push(this.getX(n)),"candlestick"===this.config.chartType&&this.getHigh&&this.getLow?(this.yExtent.push(this.getHigh(n)),this.yExtent.push(this.getLow(n))):this.yExtent.push(this.getY(n)),null!=t&&(this.xExtent.evict(this.getX(t)),"candlestick"===this.config.chartType&&this.getHigh&&this.getLow?(this.yExtent.evict(this.getHigh(t)),this.yExtent.evict(this.getLow(t))):this.yExtent.evict(this.getY(t)))}return!0}computeScene(t){var e,n,o,r,s,a;const{config:l,buffer:c}=this;if(this.xExtent.dirty&&this.xExtent.recalculate(c,this.getX),this.yExtent.dirty)if("candlestick"===l.chartType&&this.getHigh&&this.getLow){this.yExtent.clear();for(const t of c)this.yExtent.push(this.getHigh(t)),this.yExtent.push(this.getLow(t))}else this.yExtent.recalculate(c,this.getY);const u=this.xExtent.extent,h=this.yExtent.extent;let d=l.xExtent?[null!==(e=l.xExtent[0])&&void 0!==e?e:u[0],null!==(n=l.xExtent[1])&&void 0!==n?n:u[1]]:u,f=l.yExtent?[null!==(o=l.yExtent[0])&&void 0!==o?o:h[0],null!==(r=l.yExtent[1])&&void 0!==r?r:h[1]]:h;const y=l.yExtent&&null!=l.yExtent[0]&&null!=l.yExtent[1];if("stackedarea"===l.chartType&&!y&&c.size>0)if(l.normalize)f=[0,1+l.extentPadding];else{const t=c.toArray(),e=this.groupData(t),n=new Map;for(const t of e)for(const e of t.data){const t=this.getX(e),i=this.getY(e);null==t||null==i||Number.isNaN(t)||Number.isNaN(i)||n.set(t,(n.get(t)||0)+i)}let i=0;for(const t of n.values())t>i&&(i=t);f=[0,i+(i>0?i*l.extentPadding:1)]}else if("bar"===l.chartType&&l.binSize&&!y&&c.size>0){const[,t]=function(t,e,n,i,o){const r=v(t,e,n,i,o);if(0===r.size)return[0,0];let s=0;for(const t of r.values())t.total>s&&(s=t.total);return[0,s]}(c,this.getX,this.getY,l.binSize,this.getCategory);f=[0,t+t*l.extentPadding]}else if("waterfall"===l.chartType&&!y&&c.size>0){const[t,e]=function(t,e){let n=0,i=0,o=0;for(const r of t){const t=e(r);null==t||Number.isNaN(t)||(o+=t,n>o&&(n=o),o>i&&(i=o))}return[n,i]}(c,this.getY),n=e-t,i=n>0?n*l.extentPadding:1;f=[Math.min(0,t-Math.abs(i)),Math.max(0,e+Math.abs(i))]}else if(!y&&f[0]!==1/0){if(this.getBounds){const t=c.toArray();for(const e of t){const t=this.getY(e),n=this.getBounds(e);null!=t&&!Number.isNaN(t)&&n&&(t+n>f[1]&&(f[1]=t+n),f[0]>t-n&&(f[0]=t-n))}}const t=f[1]-f[0],e=t>0?t*l.extentPadding:1,n=null===(s=l.yExtent)||void 0===s?void 0:s[0],i=null===(a=l.yExtent)||void 0===a?void 0:a[1];f=[null!=n?f[0]:f[0]-e,null!=i?f[1]:f[1]+e]}if(d[0]!==1/0&&d[1]!==-1/0||(d=[0,1]),f[0]!==1/0&&f[1]!==-1/0||(f=[0,1]),void 0!==l.arrowOfTime)if("x"==("up"===(g=l.arrowOfTime)||"down"===g?"y":"x")){const e="right"===l.arrowOfTime?[0,t.width]:[t.width,0];this.scales={x:i.scaleLinear().domain(d).range(e),y:i.scaleLinear().domain(f).range([t.height,0])}}else{const e="down"===l.arrowOfTime?[0,t.height]:[t.height,0];this.scales={x:i.scaleLinear().domain(f).range([0,t.width]),y:i.scaleLinear().domain(d).range(e)}}else this.scales={x:i.scaleLinear().domain(d).range([0,t.width]),y:i.scaleLinear().domain(f).range([t.height,0])};var g;this.config.transition&&this.scene.length>0&&this.snapshotPositions();const p=c.toArray();this.scene=this.buildSceneNodes(t),this.config.decay&&this.applyDecay(this.scene,p),this.config.pulse&&this.applyPulse(this.scene,p),this.config.transition&&this.prevPositionMap.size>0&&this.startTransition(),this.version++}buildSceneNodes(t){const{config:e,buffer:n,scales:i}=this;if(!i||0===n.size)return[];const o=n.toArray();switch(e.chartType){case"line":return this.buildLineScene(o);case"area":return this.buildAreaScene(o);case"stackedarea":return this.buildStackedAreaScene(o);case"scatter":case"bubble":return this.buildPointScene(o);case"heatmap":return this.buildHeatmapScene(o,t);case"bar":return this.buildBarScene(o);case"swarm":return this.buildSwarmScene(o);case"waterfall":return this.buildWaterfallScene(o,t);case"candlestick":return this.buildCandlestickScene(o,t);default:return[]}}buildLineScene(t){var e;const n=this.groupData(t),i=[],o=null===(e=this.config.annotations)||void 0===e?void 0:e.filter(t=>"threshold"===t.type&&t.color).map(t=>({value:t.value,color:t.color,thresholdType:t.thresholdType||"greater"}));if(this.getBounds)for(const t of n){const e=this.buildBoundsForGroup(t.data,t.key);e&&i.push(e)}for(const t of n){const e=this.resolveLineStyle(t.key,t.data[0]),n=x(t.data,this.scales,this.getX,this.getY,e,t.key);o&&o.length>0&&(n.colorThresholds=o),i.push(n)}return i}buildAreaScene(t){const e=this.groupData(t),n=[],i=this.scales.y.domain()[0];for(const t of e){const e=this.resolveAreaStyle(t.key,t.data[0]);n.push(b(t.data,this.scales,this.getX,this.getY,i,e,t.key))}return n}buildStackedAreaScene(t){return function(t,e,n,i,o,r){var s;const a=new Set;for(const e of t)for(const t of e.data){const e=n(t);null==e||Number.isNaN(e)||a.add(e)}const l=Array.from(a).sort((t,e)=>t-e),c=new Map;for(const e of t){const t=new Map;for(const o of e.data){const e=n(o),r=i(o);null==e||null==r||Number.isNaN(e)||Number.isNaN(r)||t.set(e,(t.get(e)||0)+r)}c.set(e.key,t)}let u;if(r){u=new Map;for(const e of l){let n=0;for(const i of t)n+=(null===(s=c.get(i.key))||void 0===s?void 0:s.get(e))||0;u.set(e,n||1)}}const h=[],d=new Map;for(const t of l)d.set(t,0);for(const n of t){const t=c.get(n.key),i=[],s=[];for(const n of l){let o=t.get(n)||0;const a=d.get(n);r&&(o/=u.get(n));const l=e.x(n);s.push([l,e.y(a)]),i.push([l,e.y(a+o)]),d.set(n,a+o)}h.push({type:"area",topPath:i,bottomPath:s,style:o(n.key,n.data[0]),datum:n.data,group:n.key})}return h}(this.groupData(t),this.scales,this.getX,this.getY,(t,e)=>this.resolveAreaStyle(t,e),this.config.normalize)}buildPointScene(t){const e=[],n="bubble"===this.config.chartType?10:5,i=this.config.sizeRange||[3,15];let o=null;if(this.getSize&&!this.config.pointStyle){const e=t.map(t=>this.getSize(t)).filter(t=>null!=t&&!Number.isNaN(t));if(e.length>0){const t=Math.min(...e),n=Math.max(...e);o=e=>t===n?(i[0]+i[1])/2:i[0]+(e-t)/(n-t)*(i[1]-i[0])}}let r=null;if(this.getColor&&!this.config.pointStyle){const e=new Set;for(const n of t){const t=this.getColor(n);t&&e.add(t)}const n=Array.isArray(this.config.colorScheme)?this.config.colorScheme:["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"];r=new Map;let i=0;for(const t of e)r.set(t,n[i%n.length]),i++}for(const i of t){let t=this.config.pointStyle?this.config.pointStyle(i):{fill:"#4e79a7",opacity:.8},s=t.r||n;if(o&&this.getSize){const t=this.getSize(i);null==t||Number.isNaN(t)||(s=o(t))}if(r&&this.getColor){const e=this.getColor(i);e&&r.has(e)&&(t=Object.assign(Object.assign({},t),{fill:r.get(e)}))}const a=k(i,this.scales,this.getX,this.getY,s,t);a&&e.push(a)}return e}buildHeatmapScene(t,e){const n=[];if(this.config.heatmapAggregation)return this.buildStreamingHeatmapScene(t,e);const i=A(this.config.valueAccessor,"value"),o=new Set,r=new Set;for(const e of t)o.add(this.getX(e)),r.add(this.getY(e));const s=Array.from(o).sort((t,e)=>t-e),a=Array.from(r).sort((t,e)=>t-e);if(0===s.length||0===a.length)return n;const l=e.width/s.length,c=e.height/a.length,u=new Map;for(const e of t){const t=`${this.getX(e)}_${this.getY(e)}`;u.set(t,{val:i(e),datum:e})}let h=1/0,d=-1/0;for(const{val:t}of u.values())h>t&&(h=t),t>d&&(d=t);const f=d-h||1;for(let t=0;s.length>t;t++)for(let e=0;a.length>e;e++){const i=u.get(`${s[t]}_${a[e]}`);if(!i)continue;const o=(i.val-h)/f;n.push(E(t*l,(a.length-1-e)*c,l,c,`rgb(${Math.round(220-180*o)},${Math.round(220-100*o)},${Math.round(255-50*o)})`,i.datum))}return n}buildStreamingHeatmapScene(t,e){var n,i,o;const r=[],s=null!==(n=this.config.heatmapXBins)&&void 0!==n?n:20,a=null!==(i=this.config.heatmapYBins)&&void 0!==i?i:20,l=null!==(o=this.config.heatmapAggregation)&&void 0!==o?o:"count",c=A(this.config.valueAccessor,"value");if(!this.scales||0===t.length)return r;const[u,h]=this.scales.x.domain(),[d,f]=this.scales.y.domain(),y=(h-u||1)/s,g=(f-d||1)/a,p=new Map;for(const e of t){const t=this.getX(e),n=this.getY(e),i=Math.min(Math.floor((t-u)/y),s-1),o=Math.min(Math.floor((n-d)/g),a-1);if(0>i||0>o)continue;const r=`${i}_${o}`;let l=p.get(r);l||(l={sum:0,count:0,data:[]},p.set(r,l)),l.count++,l.sum+=c(e),l.data.push(e)}let m=1/0,v=-1/0;const x=new Map;for(const[t,e]of p){let n;switch(l){case"sum":n=e.sum;break;case"mean":n=e.count>0?e.sum/e.count:0;break;default:n=e.count}x.set(t,n),m>n&&(m=n),n>v&&(v=n)}const b=v-m||1,k=e.width/s,w=e.height/a;for(const[t,e]of x){const[n,i]=t.split("_"),o=+n,s=+i,l=(e-m)/b,c=`rgb(${Math.round(220-180*l)},${Math.round(220-100*l)},${Math.round(255-50*l)})`,u=p.get(t);r.push(E(o*k,(a-1-s)*w,k,w,c,{xi:o,yi:s,value:e,count:u.count,sum:u.sum,data:u.data}))}return r}buildBarScene(t){var e;if(!this.config.binSize)return[];const n=v(t,this.getX,this.getY,this.config.binSize,this.getCategory);if(0===n.size)return[];let i=null;if(this.getCategory){const t=new Set;for(const e of n.values())for(const n of e.categories.keys())t.add(n);const e=this.config.barColors?Object.keys(this.config.barColors):[],o=new Set(e),r=Array.from(t).filter(t=>!o.has(t)).sort();i=[...e.filter(e=>t.has(e)),...r]}const o=[],r=this.scales,[s,a]=r.x.domain();for(const t of n.values()){const n=Math.max(t.start,s),l=Math.min(t.end,a);if(n>=l)continue;const c=r.x(n),u=r.x(l),h=Math.min(c,u)+.5,d=Math.max(c,u)-.5-h;if(d>0)if(i&&t.categories.size>0){let n=0;for(const s of i){const i=t.categories.get(s)||0;if(0===i)continue;const a=r.y(n),l=r.y(n+i);o.push(w(h,Math.min(a,l),d,Math.abs(a-l),{fill:(null===(e=this.config.barColors)||void 0===e?void 0:e[s])||"#4e79a7"},{binStart:t.start,binEnd:t.end,total:t.total,category:s,categoryValue:i},s)),n+=i}}else{const e=r.y(0),n=r.y(t.total);o.push(w(h,Math.min(e,n),d,Math.abs(e-n),{fill:"#007bff"},{binStart:t.start,binEnd:t.end,total:t.total}))}}return o}buildSwarmScene(t){var e,n,i,o;const r=[],s=this.config.swarmStyle||{},a=null!==(e=s.radius)&&void 0!==e?e:3,l=null!==(n=s.fill)&&void 0!==n?n:"#007bff",c=null!==(i=s.opacity)&&void 0!==i?i:.7,u=s.stroke,h=s.strokeWidth;for(const e of t){const t=this.getX(e),n=this.getY(e);if(null==n||Number.isNaN(n))continue;const i=this.scales.x(t),s=this.scales.y(n);let d=l;if(this.getCategory){const t=this.getCategory(e);d=(null===(o=this.config.barColors)||void 0===o?void 0:o[t])||d}r.push({type:"point",x:i,y:s,r:a,style:{fill:d,opacity:c,stroke:u,strokeWidth:h},datum:e})}return r}buildWaterfallScene(t,e){const n=[],i=this.scales,o=t.filter(t=>{const e=this.getY(t);return null!=e&&!Number.isNaN(e)});if(0===o.length)return n;let r=0;for(let t=0;o.length>t;t++){const s=o[t],a=this.getX(s),l=this.getY(s),c=r+l;let u;u=o.length-1>t?this.getX(o[t+1])-a:t>0?a-this.getX(o[t-1]):0;const h=i.x(a),d=0!==u?i.x(a+u):h+e.width/10,f=Math.min(h,d)+.5,y=Math.max(h,d)-.5-f;if(0>=y){r=c;continue}const g=i.y(r),p=i.y(c);n.push(w(f,Math.min(g,p),y,Math.abs(g-p),{fill:0>l?"#dc3545":"#28a745"},Object.assign(Object.assign({},s),{baseline:r,cumEnd:c,delta:l}))),r=c}return n}buildCandlestickScene(t,e){if(!(this.getOpen&&this.getHigh&&this.getLow&&this.getClose&&this.scales))return[];const n=[],i=this.config.candlestickStyle||{},o=i.upColor||"#28a745",r=i.downColor||"#dc3545",s=i.wickColor||"#333",a=i.wickWidth||1,l=t.map(t=>this.getX(t)).filter(t=>null!=t&&!Number.isNaN(t)).sort((t,e)=>t-e);let c=i.bodyWidth||6;if(!i.bodyWidth&&l.length>1){let t=1/0;for(let e=1;l.length>e;e++){const n=Math.abs(this.scales.x(l[e])-this.scales.x(l[e-1]));n>0&&t>n&&(t=n)}t!==1/0&&(c=Math.max(2,Math.min(.6*t,20)))}for(const e of t){const t=this.getX(e);if(null==t||Number.isNaN(t))continue;const i=this.getOpen(e),l=this.getHigh(e),u=this.getLow(e),h=this.getClose(e);if([i,l,u,h].some(t=>null==t||Number.isNaN(t)))continue;const d=h>=i;n.push({type:"candlestick",x:this.scales.x(t),openY:this.scales.y(i),closeY:this.scales.y(h),highY:this.scales.y(l),lowY:this.scales.y(u),bodyWidth:c,upColor:o,downColor:r,wickColor:s,wickWidth:a,isUp:d,datum:e})}return n}buildBoundsForGroup(t,e){if(!this.getBounds||!this.scales)return null;const n=[],i=[];for(const e of t){const t=this.getX(e),o=this.getY(e);if(null==t||null==o||Number.isNaN(t)||Number.isNaN(o))continue;const r=this.getBounds(e),s=this.scales.x(t);if(r&&0!==r)n.push([s,this.scales.y(o+r)]),i.push([s,this.scales.y(o-r)]);else{const t=this.scales.y(o);n.push([s,t]),i.push([s,t])}}return 2>n.length?null:{type:"area",topPath:n,bottomPath:i,style:this.resolveBoundsStyle(e,t[0]),datum:t,group:e,interactive:!1}}resolveBoundsStyle(t,e){const n=this.config.boundsStyle;return"function"==typeof n?n(e||{},t):n&&"object"==typeof n?n:{fill:this.resolveLineStyle(t,e).stroke||"#4e79a7",fillOpacity:.2,stroke:"none"}}computeDecayOpacity(t,e){var n,i,o;const r=this.config.decay;if(!r||1>=e)return 1;const s=null!==(n=r.minOpacity)&&void 0!==n?n:.1,a=e-1-t;switch(r.type){case"linear":return s+(1-a/(e-1))*(1-s);case"exponential":{const t=null!==(i=r.halfLife)&&void 0!==i?i:e/2;return s+Math.pow(.5,a/t)*(1-s)}case"step":return(null!==(o=r.stepThreshold)&&void 0!==o?o:.5*e)>a?1:s;default:return 1}}applyDecay(t,e){var n,i;if(!this.config.decay)return;const o=e.length;if(1>=o)return;const r=new Map;for(let t=0;e.length>t;t++)r.set(e[t],t);for(const e of t){if("line"===e.type||"area"===e.type)continue;const t=r.get(e.datum);if(null==t)continue;const s=this.computeDecayOpacity(t,o);if("heatcell"===e.type)e.style={opacity:s};else if("candlestick"===e.type)e._decayOpacity=s;else{const t=null!==(i=null===(n=e.style)||void 0===n?void 0:n.opacity)&&void 0!==i?i:1;e.style=Object.assign(Object.assign({},e.style),{opacity:t*s})}}}computePulseIntensity(t,e){var n;const i=this.config.pulse;if(!i)return 0;const o=null!==(n=i.duration)&&void 0!==n?n:500,r=e-t;return o>r?1-r/o:0}applyPulse(t,e){var n;if(!this.config.pulse||!this.timestampBuffer)return;const i="undefined"!=typeof performance?performance.now():Date.now(),o=null!==(n=this.config.pulse.color)&&void 0!==n?n:"rgba(255,255,255,0.6)",r=new Map;for(let t=0;e.length>t;t++)r.set(e[t],t);for(const e of t){if("line"===e.type||"area"===e.type)continue;const t=r.get(e.datum);if(null==t)continue;const n=this.timestampBuffer.get(t);if(null==n)continue;const s=this.computePulseIntensity(n,i);s>0&&(e._pulseIntensity=s,e._pulseColor=o)}}get hasActivePulses(){var t;if(!this.config.pulse||!this.timestampBuffer||0===this.timestampBuffer.size)return!1;const e="undefined"!=typeof performance?performance.now():Date.now(),n=null!==(t=this.config.pulse.duration)&&void 0!==t?t:500,i=this.timestampBuffer.peek();return null!=i&&n>e-i}snapshotPositions(){this.prevPositionMap.clear();for(let t=0;this.scene.length>t;t++){const e=this.scene[t],n=this.getNodeIdentity(e,t);n&&("point"===e.type?this.prevPositionMap.set(n,{x:e.x,y:e.y,r:e.r}):"rect"===e.type||"heatcell"===e.type?this.prevPositionMap.set(n,{x:e.x,y:e.y,w:e.w,h:e.h}):"candlestick"===e.type&&this.prevPositionMap.set(n,{x:e.x,y:e.openY}))}}getNodeIdentity(t,e){var n,i,o,r;switch(t.type){case"point":return`p:${void 0===t.datum?e:this.getX(t.datum)}_${this.getY(t.datum)}`;case"rect":return`r:${t.group||""}:${null!==(r=null!==(i=null===(n=t.datum)||void 0===n?void 0:n.binStart)&&void 0!==i?i:null===(o=t.datum)||void 0===o?void 0:o.category)&&void 0!==r?r:e}`;case"heatcell":return`h:${t.x}_${t.y}`;case"candlestick":return"c:"+this.getX(t.datum);default:return null}}startTransition(){var t,e,n,i,o,r;if(!this.config.transition||0===this.prevPositionMap.size)return;const s=null!==(t=this.config.transition.duration)&&void 0!==t?t:300;let a=!1;for(let t=0;this.scene.length>t;t++){const s=this.scene[t],l=this.getNodeIdentity(s,t);if(!l)continue;const c=this.prevPositionMap.get(l);if(c)if("point"===s.type){const t={x:s.x,y:s.y,r:s.r};c.x===t.x&&c.y===t.y||(s._targetX=t.x,s._targetY=t.y,s._targetR=t.r,s.x=c.x,s.y=c.y,s.r=null!==(e=c.r)&&void 0!==e?e:s.r,a=!0)}else if("rect"===s.type){const t={x:s.x,y:s.y,w:s.w,h:s.h};c.x===t.x&&c.y===t.y&&c.w===t.w&&c.h===t.h||(s._targetX=t.x,s._targetY=t.y,s._targetW=t.w,s._targetH=t.h,s.x=c.x,s.y=c.y,s.w=null!==(n=c.w)&&void 0!==n?n:s.w,s.h=null!==(i=c.h)&&void 0!==i?i:s.h,a=!0)}else if("heatcell"===s.type){const t={x:s.x,y:s.y,w:s.w,h:s.h};c.x===t.x&&c.y===t.y||(s._targetX=t.x,s._targetY=t.y,s._targetW=t.w,s._targetH=t.h,s.x=c.x,s.y=c.y,s.w=null!==(o=c.w)&&void 0!==o?o:s.w,s.h=null!==(r=c.h)&&void 0!==r?r:s.h,a=!0)}}a&&(this.activeTransition={startTime:"undefined"!=typeof performance?performance.now():Date.now(),duration:s})}advanceTransition(t){var e;if(!this.activeTransition)return!1;const n=Math.min((t-this.activeTransition.startTime)/this.activeTransition.duration,1),i="linear"===(null===(e=this.config.transition)||void 0===e?void 0:e.easing)?n:1-Math.pow(1-n,3);for(const t of this.scene)if("point"===t.type){if(void 0===t._targetX)continue;const e=this.getNodeIdentity(t,0);if(!e)continue;const n=this.prevPositionMap.get(e);if(!n)continue;t.x=n.x+(t._targetX-n.x)*i,t.y=n.y+(t._targetY-n.y)*i,void 0!==t._targetR&&void 0!==n.r&&(t.r=n.r+(t._targetR-n.r)*i)}else if("rect"===t.type){if(void 0===t._targetX)continue;const e=this.getNodeIdentity(t,0);if(!e)continue;const n=this.prevPositionMap.get(e);if(!n)continue;t.x=n.x+(t._targetX-n.x)*i,t.y=n.y+(t._targetY-n.y)*i,void 0!==n.w&&(t.w=n.w+(t._targetW-n.w)*i),void 0!==n.h&&(t.h=n.h+(t._targetH-n.h)*i)}else if("heatcell"===t.type){if(void 0===t._targetX)continue;const e=this.getNodeIdentity(t,0);if(!e)continue;const n=this.prevPositionMap.get(e);if(!n)continue;t.x=n.x+(t._targetX-n.x)*i,t.y=n.y+(t._targetY-n.y)*i,void 0!==n.w&&(t.w=n.w+(t._targetW-n.w)*i),void 0!==n.h&&(t.h=n.h+(t._targetH-n.h)*i)}if(n>=1){for(const t of this.scene)if("point"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,t.y=t._targetY,void 0!==t._targetR&&(t.r=t._targetR),t._targetX=void 0,t._targetY=void 0,t._targetR=void 0}else if("rect"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,t.y=t._targetY,t.w=t._targetW,t.h=t._targetH,t._targetX=void 0,t._targetY=void 0,t._targetW=void 0,t._targetH=void 0}else if("heatcell"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,t.y=t._targetY,t.w=t._targetW,t.h=t._targetH,t._targetX=void 0,t._targetY=void 0,t._targetW=void 0,t._targetH=void 0}return this.activeTransition=null,!1}return!0}groupData(t){if(!this.getGroup)return[{key:"_default",data:t}];const e=new Map;for(const n of t){const t=this.getGroup(n);e.has(t)||e.set(t,[]),e.get(t).push(n)}return Array.from(e.entries()).map(([t,e])=>({key:t,data:e}))}resolveLineStyle(t,e){const n=this.config.lineStyle;return"function"==typeof n?n(e||{},t):n&&"object"==typeof n?{stroke:n.stroke||"#007bff",strokeWidth:n.strokeWidth||2,strokeDasharray:n.strokeDasharray,fill:n.fill,fillOpacity:n.fillOpacity,opacity:n.opacity}:{stroke:"#007bff",strokeWidth:2}}resolveAreaStyle(t,e){var n;if(this.config.areaStyle)return this.config.areaStyle(e||{});const i=this.config.lineStyle;return"function"==typeof i?i(e||{},t):i&&"object"==typeof i?{fill:i.fill||i.stroke||"#4e79a7",fillOpacity:null!==(n=i.fillOpacity)&&void 0!==n?n:.7,stroke:i.stroke||"#4e79a7",strokeWidth:i.strokeWidth||2}:{fill:"#4e79a7",fillOpacity:.7,stroke:"#4e79a7",strokeWidth:2}}getData(){return this.buffer.toArray()}getExtents(){return this.xExtent.min===1/0?null:{x:this.xExtent.extent,y:this.yExtent.extent}}clear(){this.buffer.clear(),this.xExtent.clear(),this.yExtent.clear(),this.timestampBuffer&&this.timestampBuffer.clear(),this.prevPositionMap.clear(),this.activeTransition=null,this.lastIngestTime=0,this.scales=null,this.scene=[],this.version++}get size(){return this.buffer.size}getBuffer(){return this.buffer}getXAccessor(){return this.getX}getYAccessor(){return this.getY}getCategoryAccessor(){return this.getCategory}updateConfig(t){Object.assign(this.config,t)}}function _(t,e,n){const i=e-t.x,o=n-t.y,r=Math.sqrt(i*i+o*o);return r>t.r+5?null:{node:t,datum:t.datum,x:t.x,y:t.y,distance:r}}function N(t,e,n){if(0===t.path.length)return null;const i=T(t.path,e);if(0>i)return null;const[o,r]=t.path[i],s=e-o,a=n-r,l=Math.sqrt(s*s+a*a);return{node:t,datum:Array.isArray(t.datum)&&t.datum[i]?t.datum[i]:t.datum,x:o,y:r,distance:l}}function W(t,e,n){return t.x>e||e>t.x+t.w||t.y>n||n>t.y+t.h?null:{node:t,datum:t.datum,x:t.x+t.w/2,y:t.y+t.h/2,distance:0}}function P(t,e,n){return t.x>e||e>t.x+t.w||t.y>n||n>t.y+t.h?null:{node:t,datum:t.datum,x:t.x+t.w/2,y:t.y+t.h/2,distance:0}}function z(t,e,n){const i=t.bodyWidth/2,o=Math.min(t.openY,t.closeY);if(!(t.x-i-3>e||e>t.x+i+3||t.highY-3>n||n>t.lowY+3)){const i=o+Math.max(Math.max(t.openY,t.closeY)-o,1)/2,r=e-t.x,s=n-i;return{node:t,datum:t.datum,x:t.x,y:i,distance:Math.sqrt(r*r+s*s)}}return null}function C(t,e,n){if(0===t.topPath.length)return null;const i=T(t.topPath,e);if(0>i)return null;const[o,r]=t.topPath[i],s=e-o,a=n-r;return{node:t,datum:t.datum,x:o,y:r,distance:Math.sqrt(s*s+a*a)}}function T(t,e){if(0===t.length)return-1;let n=0,i=t.length-1;for(;i>n;){const o=n+i>>1;e>t[o][0]?n=o+1:i=o}return n>0&&Math.abs(t[n][0]-e)>=Math.abs(t[n-1][0]-e)?n-1:n}const O={fill:t=>f.createElement("rect",{style:t,width:20,height:20}),line:t=>f.createElement("line",{style:t,x1:0,y1:0,x2:20,y2:20})};function $(t,e,n,i){let o;return o="function"==typeof n?n(t):(0,O[n])(i(t,e)),o}function R(t){const{legendGroups:e,customClickBehavior:n,title:i="Legend",width:o=100,height:r=20,orientation:s="vertical"}=t,a="vertical"===s?(({legendGroups:t,width:e,customClickBehavior:n})=>{let i=30;const o=[];return t.forEach((t,r)=>{i+=5,o.push(f.createElement("line",{key:"legend-top-line legend-symbol-"+r,stroke:"gray",x1:0,y1:i,x2:e,y2:i})),i+=10,t.label&&(i+=20,o.push(f.createElement("text",{key:"legend-text-"+r,y:i,className:"legend-group-label"},t.label)),i+=10),o.push(f.createElement("g",{key:"legend-group-"+r,className:"legend-item",transform:`translate(0,${i})`},((t,e)=>{const{type:n="fill",styleFn:i,items:o}=t,r=[];let s=0;return o.forEach((t,o)=>{const a=$(t,o,n,i);r.push(f.createElement("g",{key:"legend-item-"+o,transform:`translate(0,${s})`,onClick:e?()=>e(t):void 0,style:{cursor:e?"pointer":"default"}},a,f.createElement("text",{y:15,x:30},t.label))),s+=25}),r})(t,n))),i+=25*t.items.length+10}),o})({legendGroups:e,width:o,customClickBehavior:n}):(({legendGroups:t,title:e,height:n,customClickBehavior:i})=>{let o=0;const r=[],s=!1===e?10:40;return t.forEach((e,a)=>{e.label&&(r.push(f.createElement("text",{key:"legend-text-"+a,transform:`translate(${o},${s}) rotate(90)`,textAnchor:"start",className:"legend-group-label"},e.label)),o+=20);const l=((t,e)=>{const{type:n="fill",styleFn:i,items:o}=t,r=[];let s=0;return o.forEach((t,o)=>{const a=$(t,o,n,i);r.push(f.createElement("g",{key:"legend-item-"+o,transform:`translate(${s},0)`,onClick:e?()=>e(t):void 0,style:{cursor:e?"pointer":"default"}},a,f.createElement("text",{y:15,x:25},t.label))),s+=35,s+=8*t.label.length}),{items:r,offset:s}})(e,i);r.push(f.createElement("g",{key:"legend-group-"+a,className:"legend-item",transform:`translate(${o},${s})`},l.items)),o+=l.offset+5,t[a+1]&&r.push(f.createElement("line",{key:"legend-top-line legend-symbol-"+a,stroke:"gray",x1:o,y1:s-10,x2:o,y2:n+s+10})),o+=15}),f.createElement("g",null,!1!==e&&f.createElement("line",{x1:0,x2:o+10,y1:s-10,y2:s-10,stroke:"gray",className:"title-neatline"}),r)})({legendGroups:e,title:i,height:r,customClickBehavior:n});return f.createElement("g",null,void 0!==i&&f.createElement("text",{className:"legend-title",y:20,x:"horizontal"===s?0:o/2,textAnchor:"horizontal"===s?"start":"middle"},i),a)}function D(t){return"string"==typeof t?{type:t}:t}function Y({orient:e,config:n,values:i,scale:r,size:s,length:a}){const l=function(t){var e,n,i,o,r;return{type:t.type,bins:null!==(e=t.bins)&&void 0!==e?e:20,fill:null!==(n=t.fill)&&void 0!==n?n:"#4e79a7",fillOpacity:null!==(i=t.fillOpacity)&&void 0!==i?i:.5,stroke:null!==(o=t.stroke)&&void 0!==o?o:"none",strokeWidth:null!==(r=t.strokeWidth)&&void 0!==r?r:1}}(n),c="top"===e||"bottom"===e,u=t.useMemo(()=>{if(0===i.length)return null;const t=r.domain(),n=s-8;if("boxplot"===l.type){const t=function(t){const e=[...t].sort((t,e)=>t-e),n=e.length;if(0===n)return null;const i=e[Math.floor(.25*n)],o=e[Math.floor(.5*n)],r=e[Math.floor(.75*n)],s=r-i;return{q1:i,median:o,q3:r,whiskerLow:Math.max(e[0],i-1.5*s),whiskerHigh:Math.min(e[n-1],r+1.5*s)}}(i);if(!t)return null;const{q1:o,median:s,q3:a,whiskerLow:u,whiskerHigh:h}=t,d=Math.min(.5*n,20),y=(n-d)/2+4;if(c){const t=r(o),n=r(a),i=r(s),c=r(u),g=r(h),p="top"===e?-1:1,m=0;return f.createElement("g",{"data-testid":"marginal-boxplot-"+e},f.createElement("line",{x1:c,y1:m+p*(y+d/2),x2:g,y2:m+p*(y+d/2),stroke:l.fill,strokeWidth:l.strokeWidth}),f.createElement("line",{x1:c,y1:m+p*y,x2:c,y2:m+p*(y+d),stroke:l.fill,strokeWidth:l.strokeWidth}),f.createElement("line",{x1:g,y1:m+p*y,x2:g,y2:m+p*(y+d),stroke:l.fill,strokeWidth:l.strokeWidth}),f.createElement("rect",{x:Math.min(t,n),y:"top"===e?m-y-d:m+y,width:Math.abs(n-t),height:d,fill:l.fill,fillOpacity:l.fillOpacity,stroke:"none"===l.stroke?l.fill:l.stroke,strokeWidth:l.strokeWidth}),f.createElement("line",{x1:i,y1:"top"===e?m-y-d:m+y,x2:i,y2:"top"===e?m-y:m+y+d,stroke:l.fill,strokeWidth:2}))}{const t=r(o),n=r(a),i=r(s),c=r(u),g=r(h),p="left"===e?-1:1,m=0;return f.createElement("g",{"data-testid":"marginal-boxplot-"+e},f.createElement("line",{x1:m+p*(y+d/2),y1:c,x2:m+p*(y+d/2),y2:g,stroke:l.fill,strokeWidth:l.strokeWidth}),f.createElement("line",{x1:m+p*y,y1:c,x2:m+p*(y+d),y2:c,stroke:l.fill,strokeWidth:l.strokeWidth}),f.createElement("line",{x1:m+p*y,y1:g,x2:m+p*(y+d),y2:g,stroke:l.fill,strokeWidth:l.strokeWidth}),f.createElement("rect",{x:"left"===e?m-y-d:m+y,y:Math.min(t,n),width:d,height:Math.abs(n-t),fill:l.fill,fillOpacity:l.fillOpacity,stroke:"none"===l.stroke?l.fill:l.stroke,strokeWidth:l.strokeWidth}),f.createElement("line",{x1:"left"===e?m-y-d:m+y,y1:i,x2:"left"===e?m-y:m+y+d,y2:i,stroke:l.fill,strokeWidth:2}))}}const u=o.bin().domain(t).thresholds(l.bins)(i);if(0===u.length)return null;const h=Math.max(...u.map(t=>t.length));if(0===h)return null;if("histogram"===l.type)return f.createElement("g",{"data-testid":"marginal-histogram-"+e},u.map((t,i)=>{if(null==t.x0||null==t.x1)return null;const o=t.length/h*n;if(c){const n=r(t.x0),s=r(t.x1)-r(t.x0);return f.createElement("rect",{key:i,x:n,y:"top"===e?-4-o:4,width:Math.max(s,.5),height:o,fill:l.fill,fillOpacity:l.fillOpacity,stroke:l.stroke,strokeWidth:l.strokeWidth})}{const n=r(t.x0),s=r(t.x1)-r(t.x0);return f.createElement("rect",{key:i,x:"left"===e?-4-o:4,y:Math.min(n,n+s),width:o,height:Math.abs(s),fill:l.fill,fillOpacity:l.fillOpacity,stroke:l.stroke,strokeWidth:l.strokeWidth})}}));if("violin"===l.type){const t=n/2+4,i=[];for(const o of u){if(null==o.x0||null==o.x1)continue;const s=o.length/h*(n/2),a=r((o.x0+o.x1)/2);i.push(c?`${a},${"top"===e?-(t-s):t-s}`:`${"left"===e?-(t-s):t-s},${a}`)}for(let o=u.length-1;o>=0;o--){const s=u[o];if(null==s.x0||null==s.x1)continue;const a=s.length/h*(n/2),l=r((s.x0+s.x1)/2);i.push(c?`${l},${"top"===e?-(t+a):t+a}`:`${"left"===e?-(t+a):t+a},${l}`)}return f.createElement("g",{"data-testid":"marginal-violin-"+e},f.createElement("polygon",{points:i.join(" "),fill:l.fill,fillOpacity:l.fillOpacity,stroke:"none"===l.stroke?l.fill:l.stroke,strokeWidth:l.strokeWidth}))}if("ridgeline"===l.type){const t=[];if(c){const i=0,o=null!=u[0].x0?r(u[0].x0):0;t.push(`M${o},${i}`);for(const i of u){if(null==i.x0||null==i.x1)continue;const o=i.length/h*n,s=r((i.x0+i.x1)/2);t.push(`L${s},${"top"===e?-o-4:o+4}`)}const s=null!=u[u.length-1].x1?r(u[u.length-1].x1):a;t.push(`L${s},${i}`),t.push("Z")}else{const i=0,o=null!=u[0].x0?r(u[0].x0):0;t.push(`M${i},${o}`);for(const i of u){if(null==i.x0||null==i.x1)continue;const o=i.length/h*n,s=r((i.x0+i.x1)/2);t.push(`L${"left"===e?-o-4:o+4},${s}`)}const s=null!=u[u.length-1].x1?r(u[u.length-1].x1):a;t.push(`L${i},${s}`),t.push("Z")}return f.createElement("g",{"data-testid":"marginal-ridgeline-"+e},f.createElement("path",{d:t.join(" "),fill:l.fill,fillOpacity:l.fillOpacity,stroke:"none"===l.stroke?l.fill:l.stroke,strokeWidth:l.strokeWidth}))}return null},[i,r,l,s,a,e,c,4]);return u?f.createElement("g",{className:"marginal-"+e,"data-testid":"marginal-"+e},u):null}function B(t){return Math.round(100*t)/100+""}function L(e){const{width:n,height:i,totalWidth:o,totalHeight:r,margin:s,scales:a,showAxes:l,xLabel:c,yLabel:u,xFormat:h,yFormat:d,showGrid:y,title:g,legend:p,foregroundGraphics:m,marginalGraphics:v,xValues:x,yValues:b,annotations:k,svgAnnotationRules:w,annotationFrame:E,children:A}=e,S=t.useMemo(()=>l&&a?a.x.ticks(5).map(t=>({value:t,pixel:a.x(t),label:(h||B)(t)})):[],[l,a,h]),M=t.useMemo(()=>l&&a?a.y.ticks(5).map(t=>({value:t,pixel:a.y(t),label:(d||B)(t)})):[],[l,a,d]),_=t.useMemo(()=>k&&0!==k.length&&w?k.map((t,e)=>w(t,e,{scales:a?{time:a.x,value:a.y}:null,timeAxis:"x",width:n,height:i})).filter(Boolean):null,[k,w,n,i,E]);return l||g||p||m||v||_&&_.length>0||y||A?f.createElement("svg",{width:o,height:r,style:{position:"absolute",top:0,left:0,pointerEvents:"none"}},f.createElement("g",{transform:`translate(${s.left},${s.top})`},y&&a&&f.createElement("g",{className:"stream-grid"},S.map((t,e)=>f.createElement("line",{key:"xgrid-"+e,x1:t.pixel,y1:0,x2:t.pixel,y2:i,stroke:"#e0e0e0",strokeWidth:1})),M.map((t,e)=>f.createElement("line",{key:"ygrid-"+e,x1:0,y1:t.pixel,x2:n,y2:t.pixel,stroke:"#e0e0e0",strokeWidth:1}))),l&&a&&f.createElement("g",{className:"stream-axes"},f.createElement("line",{x1:0,y1:i,x2:n,y2:i,stroke:"#ccc",strokeWidth:1}),S.map((t,e)=>f.createElement("g",{key:"xtick-"+e,transform:`translate(${t.pixel},${i})`},f.createElement("line",{y2:5,stroke:"#ccc",strokeWidth:1}),f.createElement("text",{y:18,textAnchor:"middle",fontSize:10,fill:"#666",style:{userSelect:"none"}},t.label))),c&&f.createElement("text",{x:n/2,y:i+40,textAnchor:"middle",fontSize:12,fill:"#333",style:{userSelect:"none"}},c),f.createElement("line",{x1:0,y1:0,x2:0,y2:i,stroke:"#ccc",strokeWidth:1}),M.map((t,e)=>f.createElement("g",{key:"ytick-"+e,transform:`translate(0,${t.pixel})`},f.createElement("line",{x2:-5,stroke:"#ccc",strokeWidth:1}),f.createElement("text",{x:-8,textAnchor:"end",dominantBaseline:"middle",fontSize:10,fill:"#666",style:{userSelect:"none"}},t.label))),u&&f.createElement("text",{x:15-s.left,y:i/2,textAnchor:"middle",fontSize:12,fill:"#333",transform:`rotate(-90, ${15-s.left}, ${i/2})`,style:{userSelect:"none"}},u)),_,v&&a&&x&&b&&f.createElement(f.Fragment,null,v.top&&f.createElement("g",{transform:"translate(0, 0)"},f.createElement(Y,{orient:"top",config:D(v.top),values:x,scale:a.x,size:s.top,length:n})),v.bottom&&f.createElement("g",{transform:`translate(0, ${i})`},f.createElement(Y,{orient:"bottom",config:D(v.bottom),values:x,scale:a.x,size:s.bottom,length:n})),v.left&&f.createElement("g",{transform:"translate(0, 0)"},f.createElement(Y,{orient:"left",config:D(v.left),values:b,scale:a.y,size:s.left,length:i})),v.right&&f.createElement("g",{transform:`translate(${n}, 0)`},f.createElement(Y,{orient:"right",config:D(v.right),values:b,scale:a.y,size:s.right,length:i}))),m,A),g&&f.createElement("text",{x:o/2,y:20,textAnchor:"middle",fontSize:14,fontWeight:"bold",fill:"#333",style:{userSelect:"none"}},"string"==typeof g?g:null),p&&f.createElement("g",{transform:`translate(${o-s.right+10}, ${s.top})`},"object"==typeof(N=p)&&null!==N&&!f.isValidElement(N)&&"legendGroups"in N?f.createElement(R,{legendGroups:p.legendGroups,title:"",width:100}):p)):null;var N}function X(t,e,n){let i=n;for(const n of e)"lesser"===n.thresholdType?n.value>t&&(i=n.color):t>n.value&&(i=n.color);return i}const F=(t,e,n,i)=>{var o;const r=e.filter(t=>"area"===t.type);for(const e of r){if(2>e.topPath.length)continue;t.beginPath();const[n,i]=e.topPath[0];t.moveTo(n,i);for(let n=1;e.topPath.length>n;n++)t.lineTo(e.topPath[n][0],e.topPath[n][1]);for(let n=e.bottomPath.length-1;n>=0;n--)t.lineTo(e.bottomPath[n][0],e.bottomPath[n][1]);t.closePath();const r=null!==(o=e.style.fillOpacity)&&void 0!==o?o:.7;if(t.globalAlpha=r,t.fillStyle=e.style.fill||"#4e79a7",t.fill(),e.style.stroke&&"none"!==e.style.stroke){t.globalAlpha=1,t.strokeStyle=e.style.stroke,t.lineWidth=e.style.strokeWidth||2,t.setLineDash([]),t.beginPath(),t.moveTo(e.topPath[0][0],e.topPath[0][1]);for(let n=1;e.topPath.length>n;n++)t.lineTo(e.topPath[n][0],e.topPath[n][1]);t.stroke()}t.globalAlpha=1}},j=(t,e,n,i)=>{var o;const r=e.filter(t=>"point"===t.type);for(const e of r){t.beginPath(),t.arc(e.x,e.y,e.r,0,2*Math.PI);const n=null!==(o=e.style.opacity)&&void 0!==o?o:e.style.fillOpacity;if(null!=n&&(t.globalAlpha=n),t.fillStyle=e.style.fill||"#4e79a7",t.fill(),e.style.stroke&&(t.strokeStyle=e.style.stroke,t.lineWidth=e.style.strokeWidth||1,t.stroke()),e._pulseIntensity&&e._pulseIntensity>0){const n=4;t.beginPath(),t.arc(e.x,e.y,e.r+n*e._pulseIntensity,0,2*Math.PI),t.strokeStyle=e._pulseColor||"rgba(255,255,255,0.6)",t.lineWidth=2*e._pulseIntensity,t.globalAlpha=.5*e._pulseIntensity,t.stroke()}t.globalAlpha=1}},I=(t,e,n,i)=>{const o=e.filter(t=>"rect"===t.type);for(const e of o)null!=e.style.opacity&&(t.globalAlpha=e.style.opacity),e.style.icon?H(t,e):(t.fillStyle=e.style.fill||"#007bff",t.fillRect(e.x,e.y,e.w,e.h),e.style.stroke&&(t.strokeStyle=e.style.stroke,t.lineWidth=e.style.strokeWidth||1,t.strokeRect(e.x,e.y,e.w,e.h))),e._pulseIntensity&&e._pulseIntensity>0&&(t.globalAlpha=.3*e._pulseIntensity,t.fillStyle=e._pulseColor||"rgba(255,255,255,0.6)",t.fillRect(e.x,e.y,e.w,e.h)),t.globalAlpha=1};function H(t,e){const n=e.style.icon,i=e.style.iconPadding||2,o=Math.min(e.w,e.w)-i;if(0>=o)return;const r=e.h>e.w;if(t.save(),t.beginPath(),t.rect(e.x,e.y,e.w,e.h),t.clip(),r){const r=o+i,s=e.x+(e.w-o)/2;for(let i=e.y+e.h-o;i>=e.y-o;i-=r)t.drawImage(n,s,i,o,o)}else{const r=o+i,s=e.y+(e.h-o)/2;for(let i=e.x;e.x+e.w>i;i+=r)t.drawImage(n,i,s,o,o)}t.restore()}const G={line:[F,(t,e,n,i)=>{const o=e.filter(t=>"line"===t.type);for(const r of o){if(2>r.path.length)continue;const s=r.style.stroke||"#007bff",a=r.style.strokeWidth||2,l=r.colorThresholds,c=r.rawValues;if(t.setLineDash(r.style.strokeDasharray?r.style.strokeDasharray.split(/[\s,]+/).map(Number):[]),null!=r.style.opacity&&(t.globalAlpha=r.style.opacity),t.lineWidth=a,l&&0!==l.length&&c&&c.length===r.path.length){let u=null,h=null,d=null,f=null,y=!1;function g(e,n,i){t.beginPath(),t.strokeStyle=e,t.moveTo(n,i),y=!0}function p(){y&&(t.stroke(),y=!1)}for(let m=0;r.path.length>m;m++){const[v,x]=r.path[m],b=c[m],k=X(b,l,s);if(null!==u&&null!==f&&null!==d){if(k===f)t.lineTo(v,x);else{const w=[];for(const E of l){const A=E.value;(d>A||A>b)&&(A>d||b>A)||d===A||b===A||w.push({t:(A-d)/(b-d)})}w.sort((t,e)=>t.t-e.t);for(const S of w){const M=u+(v-u)*S.t,_=h+(x-h)*S.t,N=X(d+(b-d)*Math.min(S.t+1e-4,1),l,s);t.lineTo(M,_),p(),g(N,M,_)}t.lineTo(v,x)}u=v,h=x,d=b,f=k}else g(k,v,x),u=v,h=x,d=b,f=k}p()}else{t.beginPath(),t.strokeStyle=s;const[W,P]=r.path[0];t.moveTo(W,P);for(let z=1;r.path.length>z;z++)t.lineTo(r.path[z][0],r.path[z][1]);t.stroke()}if(r.style.fill&&r.style.fillOpacity&&r.style.fillOpacity>0){t.beginPath(),t.globalAlpha=r.style.fillOpacity,t.fillStyle=r.style.fill;const[C,T]=r.path[0];t.moveTo(C,T);for(let $=1;r.path.length>$;$++)t.lineTo(r.path[$][0],r.path[$][1]);const O=r.path[0][0];t.lineTo(r.path[r.path.length-1][0],i.height),t.lineTo(O,i.height),t.closePath(),t.fill()}t.globalAlpha=1,t.setLineDash([])}}],area:[F],stackedarea:[F],scatter:[j],bubble:[j],heatmap:[(t,e,n,i)=>{const o=e.filter(t=>"heatcell"===t.type);for(const e of o){const n=e.style;null!=(null==n?void 0:n.opacity)&&(t.globalAlpha=n.opacity),t.fillStyle=e.fill,t.fillRect(e.x,e.y,e.w,e.h),t.strokeStyle="#fff",t.lineWidth=1,t.strokeRect(e.x,e.y,e.w,e.h),e._pulseIntensity&&e._pulseIntensity>0&&(t.globalAlpha=.3*e._pulseIntensity,t.fillStyle=e._pulseColor||"rgba(255,255,255,0.6)",t.fillRect(e.x,e.y,e.w,e.h)),t.globalAlpha=1}}],bar:[I],swarm:[j],waterfall:[(t,e,n,i)=>{var o,r;I(t,e);const s=e.filter(t=>"rect"===t.type);if(s.length>=2){t.save(),t.strokeStyle="#999",t.lineWidth=1,t.setLineDash([]);for(let e=0;s.length-1>e;e++){const i=s[e],a=s[e+1];if(!(null===(o=i.datum)||void 0===o?void 0:o.cumEnd)||!(null===(r=a.datum)||void 0===r?void 0:r.baseline))continue;const l=n.y(i.datum.cumEnd),c=i.x+i.w,u=a.x;t.beginPath(),t.moveTo(c,l),t.lineTo(u,l),t.stroke()}t.restore()}}],candlestick:[(t,e,n,i)=>{for(const n of e){if("candlestick"!==n.type)continue;const e=n;t.beginPath(),t.moveTo(e.x,e.highY),t.lineTo(e.x,e.lowY),t.strokeStyle=e.wickColor,t.lineWidth=e.wickWidth,t.stroke();const i=Math.min(e.openY,e.closeY),o=Math.abs(e.openY-e.closeY),r=e.isUp?e.upColor:e.downColor;t.fillStyle=r,t.fillRect(e.x-e.bodyWidth/2,i,e.bodyWidth,Math.max(o,1)),t.strokeStyle=r,t.lineWidth=1,t.strokeRect(e.x-e.bodyWidth/2,i,e.bodyWidth,Math.max(o,1))}}]},q={top:20,right:20,bottom:30,left:40},V={axisStroke:"#ccc",tickText:"#666",crosshair:"rgba(0, 0, 0, 0.25)",hoverFill:"rgba(255, 255, 255, 0.3)",hoverStroke:"rgba(0, 0, 0, 0.4)",pointRing:"white"},Z={background:"rgba(0, 0, 0, 0.85)",color:"white",padding:"6px 10px",borderRadius:4,fontSize:12,lineHeight:1.5,boxShadow:"0 2px 8px rgba(0, 0, 0, 0.15)",pointerEvents:"none",whiteSpace:"nowrap"};function J({hover:t}){const e=t=>Number.isInteger(t)?t+"":t.toFixed(2);return f.createElement("div",{className:"semiotic-tooltip",style:Z},f.createElement("div",{style:{fontWeight:600,marginBottom:2}},e(t.value)),f.createElement("div",{style:{opacity:.7,fontSize:11}},e(t.time)))}function K({width:i,height:o,totalWidth:r,totalHeight:s,margin:a,dimension:l,scales:c,onBrush:u}){const h=t.useRef(null),d=t.useRef(null);return t.useEffect(()=>{if(!h.current)return;const t=n.select(h.current).select(".brush-g"),r="x"===l?e.brushX():"y"===l?e.brushY():e.brush();return r.extent([[0,0],[i,o]]),r.on("brush end",t=>{if(!c)return;if(!t.selection)return void u(null);let e,n;if("x"===l){const[i,r]=t.selection;e=[c.x.invert(i),c.x.invert(r)],n=[c.y.invert(o),c.y.invert(0)]}else if("y"===l){const[o,r]=t.selection;e=[c.x.invert(0),c.x.invert(i)],n=[c.y.invert(r),c.y.invert(o)]}else{const[[i,o],[r,s]]=t.selection;e=[c.x.invert(i),c.x.invert(r)],n=[c.y.invert(s),c.y.invert(o)]}u({x:e,y:n})}),t.call(r),d.current=r,t.select(".selection").attr("fill","steelblue").attr("fill-opacity",.15).attr("stroke","steelblue").attr("stroke-width",1),()=>{r.on("brush end",null),d.current=null}},[i,o,l,c,u]),f.createElement("svg",{ref:h,width:r,height:s,style:{position:"absolute",top:0,left:0,pointerEvents:"all"}},f.createElement("g",{className:"brush-g",transform:`translate(${a.left},${a.top})`}))}const Q=t.forwardRef(function(e,n){var i;const{chartType:o,runtimeMode:r,data:s,xAccessor:a,yAccessor:l,colorAccessor:c,sizeAccessor:u,groupAccessor:h,lineDataAccessor:d,normalize:y,binSize:p,valueAccessor:m,arrowOfTime:v="right",windowMode:x="sliding",windowSize:b=200,timeAccessor:k,xExtent:w,yExtent:E,extentPadding:A=.1,sizeRange:S,size:T=[500,300],margin:O,className:$,background:R,lineStyle:D,pointStyle:Y,areaStyle:B,swarmStyle:X,barColors:F,colorScheme:j,boundsAccessor:I,boundsStyle:H,openAccessor:Z,highAccessor:Q,lowAccessor:U,closeAccessor:tt,candlestickStyle:et,showAxes:nt=!0,xLabel:it,yLabel:ot,xFormat:rt,yFormat:st,tickFormatTime:at,tickFormatValue:lt,hoverAnnotation:ct,tooltipContent:ut,customHoverBehavior:ht,enableHover:dt,annotations:ft,svgAnnotationRules:yt,showGrid:gt,legend:pt,backgroundGraphics:mt,foregroundGraphics:vt,title:xt,categoryAccessor:bt,brush:kt,onBrush:wt,decay:Et,pulse:At,transition:St,staleness:Mt,heatmapAggregation:_t,heatmapXBins:Nt,heatmapYBins:Wt,marginalGraphics:Pt}=e,zt=Object.assign(Object.assign({},q),O);if(Pt){const t=60;Pt.top&&t>zt.top&&(zt.top=t),Pt.bottom&&t>zt.bottom&&(zt.bottom=t),Pt.left&&t>zt.left&&(zt.left=t),Pt.right&&t>zt.right&&(zt.right=t)}const Ct=T[0]-zt.left-zt.right,Tt=T[1]-zt.top-zt.bottom,Ot=null!=ct?ct:dt,$t=t.useRef(null),Rt=t.useRef(0),Dt=t.useRef(!1),[Yt,Bt]=t.useState(0),[Lt,Xt]=t.useState(null),Ft=t.useRef(null),[jt,It]=t.useState(null),[Ht,Gt]=t.useState(!1),[qt,Vt]=t.useState([]),[Zt,Jt]=t.useState([]),Kt=t.useRef(()=>{}),Qt="streaming"===r||["bar","swarm","waterfall"].includes(o),Ut=t.useMemo(()=>({chartType:o,runtimeMode:Qt?"streaming":"bounded",windowSize:b,windowMode:x,arrowOfTime:Qt?v:"right",extentPadding:A,xAccessor:Qt?void 0:a,yAccessor:Qt?void 0:l,timeAccessor:Qt?k:void 0,valueAccessor:m,colorAccessor:c,sizeAccessor:u,groupAccessor:h,categoryAccessor:bt,lineDataAccessor:d,xExtent:w,yExtent:E,sizeRange:S,binSize:p,normalize:y,boundsAccessor:I,boundsStyle:H,openAccessor:Z,highAccessor:Q,lowAccessor:U,closeAccessor:tt,candlestickStyle:et,lineStyle:D,pointStyle:Y,areaStyle:B,swarmStyle:X,colorScheme:j,barColors:F,annotations:ft,decay:Et,pulse:At,transition:St,staleness:Mt,heatmapAggregation:_t,heatmapXBins:Nt,heatmapYBins:Wt}),[o,b,x,v,A,a,l,k,m,c,u,h,bt,d,w,E,S,p,y,I,H,Z,Q,U,tt,et,D,Y,B,X,j,F,ft,Et,At,St,Mt,_t,Nt,Wt,Qt]),te=t.useRef(null);te.current||(te.current=new M(Ut));const ee=t.useCallback(()=>{Rt.current||(Rt.current=requestAnimationFrame(()=>Kt.current()))},[]);t.useEffect(()=>{var t;null===(t=te.current)||void 0===t||t.updateConfig(Ut),Dt.current=!0,ee()},[Ut,ee]);const ne=t.useRef(null);ne.current||(ne.current=new g(t=>{const e=te.current;e&&e.ingest(t)&&(Dt.current=!0,ee())}));const ie=t.useCallback(t=>{var e;null===(e=ne.current)||void 0===e||e.push(t)},[]),oe=t.useCallback(t=>{var e;null===(e=ne.current)||void 0===e||e.pushMany(t)},[]),re=t.useCallback(()=>{var t,e;null===(t=ne.current)||void 0===t||t.clear(),null===(e=te.current)||void 0===e||e.clear(),Dt.current=!0,ee()},[ee]);t.useImperativeHandle(n,()=>({push:ie,pushMany:oe,clear:re,getData:()=>{var t,e;return null!==(e=null===(t=te.current)||void 0===t?void 0:t.getData())&&void 0!==e?e:[]},getScales:()=>{var t,e;return null!==(e=null===(t=te.current)||void 0===t?void 0:t.scales)&&void 0!==e?e:null},getExtents:()=>{var t,e;return null!==(e=null===(t=te.current)||void 0===t?void 0:t.getExtents())&&void 0!==e?e:null}}),[ie,oe,re]),t.useEffect(()=>{var t;s&&(null===(t=ne.current)||void 0===t||t.setBoundedData(s))},[s]);const se=t.useRef(()=>{}),ae=t.useRef(()=>{});se.current=t=>{if(!Ot)return;const e=$t.current;if(!e)return;const n=e.getBoundingClientRect(),i=t.clientX-n.left-zt.left,o=t.clientY-n.top-zt.top;if(0>i||i>Ct||0>o||o>Tt)return void(Ft.current&&(Ft.current=null,It(null),ht&&ht(null),ee()));const r=te.current;if(!r||0===r.scene.length)return;const s=function(t,e,n,i=30){let o=null;for(const r of t){let t=null;switch(r.type){case"point":t=_(r,e,n);break;case"line":t=N(r,e,n);break;case"rect":t=W(r,e,n);break;case"heatcell":t=P(r,e,n);break;case"area":if(!1===r.interactive)break;t=C(r,e,n);break;case"candlestick":t=z(r,e,n)}t&&i>t.distance&&(o&&t.distance>=o.distance||(o=t))}return o}(r.scene,i,o);if(!s)return void(Ft.current&&(Ft.current=null,It(null),ht&&ht(null),ee()));const a={data:s.datum,time:s.x,value:s.y,x:s.x,y:s.y};Ft.current=a,It(a),ht&&ht(a),ee()},ae.current=()=>{Ft.current&&(Ft.current=null,It(null),ht&&ht(null),ee())};const le=t.useCallback(t=>se.current(t),[]),ce=t.useCallback(()=>ae.current(),[]);Kt.current=()=>{var t,e;Rt.current=0;const n=$t.current;if(!n)return;const i=n.getContext("2d");if(!i)return;const r=te.current;if(!r)return;const s="undefined"!=typeof performance?performance.now():Date.now(),c=r.advanceTransition(s);c||r.computeScene({width:Ct,height:Tt});const u="undefined"!=typeof window&&window.devicePixelRatio||1;n.width=T[0]*u,n.height=T[1]*u,n.style.width=T[0]+"px",n.style.height=T[1]+"px",i.scale(u,u),i.translate(zt.left,zt.top),i.clearRect(-zt.left,-zt.top,T[0],T[1]);const h=function(t){if(!t)return V;const e=getComputedStyle(t),n=e.getPropertyValue("--text-secondary").trim(),i=e.getPropertyValue("--text-primary").trim(),o=e.getPropertyValue("--surface-3").trim(),r=e.getPropertyValue("--surface-0").trim();return n||i?{axisStroke:o||V.axisStroke,tickText:n||V.tickText,crosshair:n?n+"66":V.crosshair,hoverFill:r?r+"4D":V.hoverFill,hoverStroke:n?n+"99":V.hoverStroke,pointRing:r||V.pointRing}:V}(n),d=null!==(t=null==Mt?void 0:Mt.threshold)&&void 0!==t?t:5e3,f=Mt&&r.lastIngestTime>0&&s-r.lastIngestTime>d;f&&(i.globalAlpha=null!==(e=null==Mt?void 0:Mt.dimOpacity)&&void 0!==e?e:.5),R&&(i.fillStyle=R,i.fillRect(0,0,Ct,Tt));const y=G[o];if(y&&r.scales)for(const t of y)t(i,r.scene,r.scales,{width:Ct,height:Tt});f&&(i.globalAlpha=1),Ot&&Ft.current&&r.scales&&function(t,e,n,i,o,r,s){if(!1===o.crosshair)return;t.save();const a="object"==typeof o.crosshair?o.crosshair:{};t.strokeStyle=a.stroke||s.crosshair,t.lineWidth=a.strokeWidth||1,t.setLineDash(a.strokeDasharray?a.strokeDasharray.split(/[\s,]+/).map(Number):[4,4]),t.beginPath(),t.moveTo(e.x,0),t.lineTo(e.x,i),t.stroke(),t.beginPath(),t.moveTo(0,e.y),t.lineTo(n,e.y),t.stroke(),t.restore(),t.beginPath(),t.arc(e.x,e.y,4,0,2*Math.PI),t.fillStyle="#007bff",t.fill(),t.strokeStyle=s.pointRing,t.lineWidth=2,t.stroke()}(i,Ft.current,Ct,Tt,"object"==typeof Ot?Ot:{},0,h);const g=Dt.current;if(Dt.current=!1,g&&r.scales&&(Xt(r.scales),Pt)){const t=r.getData(),e="function"==typeof a?a:t=>t[a||"x"],n="function"==typeof l?l:t=>t[l||"y"];Vt(t.map(t=>e(t)).filter(t=>"number"==typeof t&&isFinite(t))),Jt(t.map(t=>n(t)).filter(t=>"number"==typeof t&&isFinite(t)))}g&&ft&&ft.length>0&&yt&&Bt(t=>t+1),(null==Mt?void 0:Mt.showBadge)&&Gt(!!f),(c||r.hasActivePulses)&&(Rt.current=requestAnimationFrame(()=>Kt.current()))},t.useEffect(()=>(ee(),()=>{Rt.current&&cancelAnimationFrame(Rt.current)}),[ee]),t.useEffect(()=>{Dt.current=!0,ee()},[o,Ct,Tt,nt,R,D,ee]),t.useEffect(()=>{if(!Mt)return;const t=setInterval(()=>{var t;const e=te.current;if(!e||0===e.lastIngestTime)return;const n="undefined"!=typeof performance?performance.now():Date.now(),i=null!==(t=Mt.threshold)&&void 0!==t?t:5e3,o=n-e.lastIngestTime>i;o!==Ht&&(Gt(o),Dt.current=!0,ee())},1e3);return()=>clearInterval(t)},[Mt,Ht,ee]);const ue=Ot&&jt?ut?ut(jt):f.createElement(J,{hover:jt}):null,he=ue?f.createElement("div",{className:"stream-frame-tooltip",style:{position:"absolute",left:zt.left+jt.x,top:zt.top+jt.y,transform:`translate(${jt.x>.7*Ct?"calc(-100% - 12px)":"12px"}, ${.3*Tt>jt.y?"4px":"calc(-100% - 4px)"})`,pointerEvents:"none",zIndex:1}},ue):null;return f.createElement("div",{className:"stream-xy-frame"+($?" "+$:""),style:{position:"relative",width:T[0],height:T[1]},onMouseMove:Ot?le:void 0,onMouseLeave:Ot?ce:void 0},mt&&f.createElement("svg",{style:{position:"absolute",left:0,top:0,width:T[0],height:T[1],pointerEvents:"none"}},mt),f.createElement("canvas",{ref:$t,style:{position:"absolute",left:0,top:0}}),f.createElement(L,{width:Ct,height:Tt,totalWidth:T[0],totalHeight:T[1],margin:zt,scales:Lt,showAxes:nt,xLabel:it,yLabel:ot,xFormat:rt||at,yFormat:st||lt,showGrid:gt,title:xt,legend:pt,foregroundGraphics:vt,marginalGraphics:Pt,xValues:qt,yValues:Zt,annotations:ft,svgAnnotationRules:yt,annotationFrame:Yt}),(kt||wt)&&f.createElement(K,{width:Ct,height:Tt,totalWidth:T[0],totalHeight:T[1],margin:zt,dimension:null!==(i=null==kt?void 0:kt.dimension)&&void 0!==i?i:"xy",scales:Lt,onBrush:null!=wt?wt:()=>{}}),(null==Mt?void 0:Mt.showBadge)&&f.createElement("div",{className:"stream-staleness-badge",style:Object.assign(Object.assign({position:"absolute"},"top-left"===Mt.badgePosition?{top:4,left:4}:"bottom-left"===Mt.badgePosition?{bottom:4,left:4}:"bottom-right"===Mt.badgePosition?{bottom:4,right:4}:{top:4,right:4}),{padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:600,pointerEvents:"none",background:Ht?"#dc3545":"#28a745",color:"white"})},Ht?"STALE":"LIVE"),he)});Q.displayName="StreamXYFrame";const U={weightChange:.1,newEdge:.5,newNode:1,threshold:3,transitionDuration:500},tt={radius:3,opacity:.7,speedMultiplier:1,maxPerEdge:50,spawnRate:.1};class et{constructor(t){this.capacity=t,this.particles=Array(t);for(let e=0;t>e;e++)this.particles[e]={t:0,offset:0,edgeIndex:0,active:!1,x:0,y:0}}spawn(t){for(let e=0;this.capacity>e;e++){const n=this.particles[e];if(!n.active)return n.active=!0,n.t=0,n.offset=Math.random()-.5,n.edgeIndex=t,n.x=0,n.y=0,n}return null}step(t,e,n){for(let i=0;this.capacity>i;i++){const o=this.particles[i];if(!o.active)continue;const r=n[o.edgeIndex];if(!r||!r.bezier){o.active=!1;continue}if(o.t+=t*e,o.t>=1){o.active=!1;continue}const s=nt(r.bezier,o.t,o.offset);o.x=s.x,o.y=s.y}}countForEdge(t){let e=0;for(let n=0;this.capacity>n;n++)this.particles[n].active&&this.particles[n].edgeIndex===t&&e++;return e}clear(){for(let t=0;this.capacity>t;t++)this.particles[t].active=!1}resize(t){if(this.capacity>=t)return;const e=this.particles;this.particles=Array(t);for(let n=0;t>n;n++)this.particles[n]=e.length>n?e[n]:{t:0,offset:0,edgeIndex:0,active:!1,x:0,y:0};this.capacity=t}}function nt(t,e,n){if(t.circular&&t.segments)return function(t,e,n,i){const o=t.length,r=e*o,s=Math.min(Math.floor(r),o-1),a=r-s,[l,c,u,h]=t[s],d=it(l,c,u,h,a),f=h.x-l.x,y=h.y-l.y,g=Math.sqrt(f*f+y*y);if(g>.001){const t=f/g;d.x+=-y/g*n*i*2,d.y+=t*n*i*2}return d}(t.segments,e,n,t.halfWidth);if(!t.points)return{x:0,y:0};const[i,o,r,s]=t.points,a=it(i,o,r,s,e),l=s.x-i.x,c=s.y-i.y,u=Math.sqrt(l*l+c*c);if(u>.001){const e=l/u;a.x+=-c/u*n*t.halfWidth*2,a.y+=e*n*t.halfWidth*2}return a}function it(t,e,n,i,o){const r=1-o,s=r*r,a=s*r,l=o*o,c=l*o;return{x:a*t.x+3*s*o*e.x+3*r*l*n.x+c*i.x,y:a*t.y+3*s*o*e.y+3*r*l*n.y+c*i.y}}const ot=(t=1)=>(e,n)=>{const i=e[e.length-1];return i&&Math.round(i.x/t)===Math.round(n.x/t)&&Math.round(i.y/t)===Math.round(n.y/t)||e.push(n),e},rt=t=>{let e,n,i,o,s,a,l,c,u;return"down"===t.direction?(e=t.y0-t.sankeyWidth/2,n=t.y1-t.sankeyWidth/2,i=t.y1+t.sankeyWidth/2,o=t.y0+t.sankeyWidth/2,s=t.source.y1,a=t.target.y0,l=r.interpolateNumber(s,a),c=l(.5),u=l(.5),`M${e},${s}C${e},${c} ${n},${u} ${n},${a}L${i},${a}C${i},${u} ${o},${c} ${o},${s}Z`):(e=t.source.x1,n=t.target.x0,l=r.interpolateNumber(e,n),i=l(.5),o=l(.5),s=t.y0-t.sankeyWidth/2,a=t.y1-t.sankeyWidth/2,c=t.y1+t.sankeyWidth/2,u=t.y0+t.sankeyWidth/2,`M${e},${s}C${i},${s} ${o},${a} ${n},${a}L${n},${c}C${o},${c} ${i},${u} ${e},${u}Z`)};function st(t){const e=function(){const t=l.line();let e=function(t){return t.x},n=function(t){return t.y},i=function(t){return t.r},o=l.curveLinearClosed;function r(r){if(r.multiple){const s=i,l=r.multiple.reduce((t,e)=>t+e.weight,0);i=()=>l;let c=a(r.points).filter(t=>"forward"===t.direction).reduce(ot(),[]);const u=[];return r.multiple.forEach((t,e)=>{i=()=>t.weight;const n=a(c);u.push(n);const o=r.multiple[e+1];if(o){const t=n.reverse().filter(t=>"back"===t.direction).reduce(ot(),[]);i=()=>o.weight;const e=a(t);c=e.reverse().filter(t=>"back"===t.direction).reduce(ot(),[])}}),i=s,u.map(i=>t.x(e).y(n).curve(o)(i))}const s=a(r).reduce(ot(),[]);return t.x(e).y(n).curve(o)(s)}return r.x=function(t){return arguments.length?(e=t,r):e},r.y=function(t){return arguments.length?(n=t,r):n},r.r=function(t){return arguments.length?(i=t,r):i},r.interpolate=function(t){return arguments.length?(o=t,r):o},r;function s(t){const o=n(t.target)-n(t.source),r=e(t.target)-e(t.source),s=Math.atan2(r,o)+Math.PI/2,a=s+.5*Math.PI,l=s+.5*Math.PI;return{x1:e(t.source)+i(t.source)*Math.cos(a),y1:n(t.source)-i(t.source)*Math.sin(a),x2:e(t.target)+i(t.target)*Math.cos(l),y2:n(t.target)-i(t.target)*Math.sin(l)}}function a(t){const e=[];let n=0,i={x1:0,y1:0,x2:0,y2:0};for(;t.length>n;){if(n!==t.length-1&&(i=s({source:t[n],target:t[n+1]}),e.push({x:i.x1,y:i.y1,direction:"forward"},{x:i.x2,y:i.y2,direction:"forward"}),e.length>3)){const t=e.length-1,n={a:e[t-3],b:e[t-2]},i={a:e[t-1],b:e[t]},o=c(n.a.x,n.a.y,n.b.x,n.b.y,i.a.x,i.a.y,i.b.x,i.b.y);!0===o.found&&(n.b.x=o.x,n.b.y=o.y,i.a.x=o.x,i.a.y=o.y)}n++}for(n--;n>=0;){if(0!==n&&(i=s({source:t[n],target:t[n-1]}),e.push({x:i.x1,y:i.y1,direction:"back"},{x:i.x2,y:i.y2,direction:"back"}),e.length>3)){const t=e.length-1,n={a:e[t-3],b:e[t-2]},i={a:e[t-1],b:e[t]},o=c(n.a.x,n.a.y,n.b.x,n.b.y,i.a.x,i.a.y,i.b.x,i.b.y);!0===o.found&&(n.b.x=o.x,n.b.y=o.y,i.a.x=o.x,i.a.y=o.y)}n--}return e}function c(t,e,n,i,o,r,s,a){let l,c;const u={x:null,y:null,found:!1},h=(a-r)*(n-t)-(s-o)*(i-e);if(0===h)return u;l=e-r,c=t-o;const d=(n-t)*l-(i-e)*c;return l=((s-o)*l-(a-r)*c)/h,c=d/h,u.x=t+l*(n-t),u.y=e+l*(i-e),l>0&&1>l&&c>0&&1>c&&(u.found=!0),u}}();return e.x(t=>t.x),e.y(t=>t.y),e.r(()=>t.sankeyWidth/2),e("down"===t.direction?[{x:t.circularPathData.sourceY,y:t.circularPathData.sourceX},{x:t.circularPathData.sourceY,y:t.circularPathData.leftFullExtent},{x:t.circularPathData.verticalFullExtent,y:t.circularPathData.leftFullExtent},{x:t.circularPathData.verticalFullExtent,y:t.circularPathData.rightFullExtent},{x:t.circularPathData.targetY,y:t.circularPathData.rightFullExtent},{x:t.circularPathData.targetY,y:t.circularPathData.targetX}]:[{x:t.circularPathData.sourceX,y:t.circularPathData.sourceY},{x:t.circularPathData.leftFullExtent,y:t.circularPathData.sourceY},{x:t.circularPathData.leftFullExtent,y:t.circularPathData.verticalFullExtent},{x:t.circularPathData.rightFullExtent,y:t.circularPathData.verticalFullExtent},{x:t.circularPathData.rightFullExtent,y:t.circularPathData.targetY},{x:t.circularPathData.targetX,y:t.circularPathData.targetY}])}const at={left:s.sankeyLeft,right:s.sankeyRight,center:s.sankeyCenter,justify:s.sankeyJustify},lt={supportsStreaming:!0,hierarchical:!1,computeLayout(t,e,n,i){var o,r,a,l;if(0===t.length)return;const c="vertical"===n.orientation?"down":"right",u=n.nodeAlign||"justify",h=null!==(o=n.nodeWidth)&&void 0!==o?o:15,d=null!==(r=n.nodePaddingRatio)&&void 0!==r?r:.05,f=null!==(a=n.iterations)&&void 0!==a?a:100,y=t.map(t=>Object.assign({},t)),g=e.map(t=>Object.assign(Object.assign({},t),{source:"string"==typeof t.source?t.source:t.source.id,target:"string"==typeof t.target?t.target:t.target.id}));let p;p="down"===c?[[0,0],[i[1],i[0]]]:[[0,0],[i[0],i[1]]];const m=s.sankeyCircular().extent(p).links(g).nodes(y).nodeAlign(at[u]||s.sankeyJustify).nodeId(t=>t.id).nodeWidth(h).iterations(f);m.nodePaddingRatio&&m.nodePaddingRatio(d),m();for(const e of y){const n=t.find(t=>t.id===e.id);n&&(n.x0=e.x0,n.x1=e.x1,n.y0=e.y0,n.y1=e.y1,n.value=e.value,n.depth=e.depth,n.sourceLinks=e.sourceLinks,n.targetLinks=e.targetLinks,n.width=e.x1-e.x0,n.height=e.y1-e.y0,n.x=e.x0+(e.x1-e.x0)/2,n.y=e.y0+(e.y1-e.y0)/2)}for(const n of g){const i=n.source,o=n.target,r="object"==typeof i&&null!==i?i.id:i+"",s="object"==typeof o&&null!==o?o.id:o+"",a=e.find(t=>("string"==typeof t.source?t.source:t.source.id)===r&&("string"==typeof t.target?t.target:t.target.id)===s);if(a){a.y0=n.y0,a.y1=n.y1,a.sankeyWidth=null!==(l=n.width)&&void 0!==l?l:0,a.circular=!!n.circular,a.circularPathData=n.circularPathData,a.direction=c;const e=t.find(t=>t.id===r),i=t.find(t=>t.id===s);e&&(a.source=e),i&&(a.target=i)}}},buildScene(t,e,n,i){var o,r;const s="vertical"===n.orientation?"down":"right",l=n.nodeStyle,c=n.edgeStyle,u=null!==(o=n.edgeOpacity)&&void 0!==o?o:.5,h=n.edgeColorBy||"source",d=Array.isArray(n.colorScheme)?n.colorScheme:a.schemeCategory10,f=new Map;t.forEach((t,e)=>{f.set(t.id,d[e%d.length])});const y=[],g=[],p=[];for(const e of t){const t=e.x1-e.x0,n=e.y1-e.y0;if(0>=t||0>=n)continue;const i=l?l(e):{},o={fill:i.fill||f.get(e.id)||"#4d430c",stroke:i.stroke,strokeWidth:i.strokeWidth,opacity:i.opacity};y.push({type:"rect",x:e.x0,y:e.y0,w:t,h:n,style:o,datum:e,id:e.id,label:e.id})}const m=[...e].sort((t,e)=>(e.sankeyWidth||0)-(t.sankeyWidth||0));for(const t of m){if(!t.sankeyWidth||0>=t.sankeyWidth)continue;const e="object"==typeof t.source?t.source:null,n="object"==typeof t.target?t.target:null;if(!e||!n)continue;let i;i=t.circular&&t.circularPathData?st(t):rt(t);let o="#999";c?o=c(t).fill||o:"target"===h&&n?o=f.get(n.id)||o:e&&(o=f.get(e.id)||o);const s=c?c(t):{},a={fill:o,fillOpacity:null!==(r=s.fillOpacity)&&void 0!==r?r:u,stroke:s.stroke||"none",strokeWidth:s.strokeWidth,opacity:s.opacity};g.push({type:"bezier",pathD:i,bezierCache:t.bezier,style:a,datum:t})}if(!1!==n.showLabels){const e=(v=n.nodeLabel)?"function"==typeof v?v:t=>t[v]||t.id:null;for(const n of t){const t=n.x1-n.x0,o=n.y1-n.y0;if(0>=t||0>=o)continue;const r=e?e(n):n.id;if(!r)continue;let a,l,c;"down"===s?(a=n.x0+t/2,l=n.y1+14,c="middle"):(i[0]/2>n.x0+t/2?(a=n.x0-6,c="end"):(a=n.x1+6,c="start"),l=n.y0+o/2),p.push({x:a,y:l,text:r+"",anchor:c,baseline:"middle",fontSize:11})}}var v;return{sceneNodes:y,sceneEdges:g,labels:p}}},ct={supportsStreaming:!1,hierarchical:!1,computeLayout(t,e,n,i){var o,r;if(0===t.length)return;const s=null!==(o=n.iterations)&&void 0!==o?o:Math.max(50,Math.min(300,Math.floor(300-2*(t.length-30)))),a=null!==(r=n.forceStrength)&&void 0!==r?r:.1,l=i[0]/2,u=i[1]/2;for(let e=0;t.length>e;e++){const n=t[e];if(null==n.x||null==n.y||0===n.x&&0===n.y){const t=10*Math.sqrt(e+.5),i=2.399963229728653*e;n.x=l+t*Math.cos(i),n.y=u+t*Math.sin(i)}}const h=ht(n.nodeSize,n.nodeSizeRange,t),d=c.forceLink().strength(t=>Math.min(2.5,t.weight?t.weight*a:a)).id(t=>t.id),f=i[1]/i[0],y=c.forceSimulation().force("charge",c.forceManyBody().strength(t=>-25*(t=>h(t))(t))).force("x",c.forceX(i[0]/2).strength(.1*f)).force("y",c.forceY(i[1]/2).strength(.1));if(y.nodes(t),e.length>0){const t=e.map(t=>Object.assign(Object.assign({},t),{source:"string"==typeof t.source?t.source:t.source.id,target:"string"==typeof t.target?t.target:t.target.id}));y.force("link",d),y.force("link").links(t)}.1>y.alpha()&&y.alpha(1),y.stop();for(let t=0;s>t;++t)y.tick();for(const n of e){if("string"==typeof n.source){const e=t.find(t=>t.id===n.source);e&&(n.source=e)}if("string"==typeof n.target){const e=t.find(t=>t.id===n.target);e&&(n.target=e)}}},buildScene(t,e,n,i){var o,r,s;const l=n.nodeStyle,c=n.edgeStyle,u=ht(n.nodeSize,n.nodeSizeRange,t),h=Array.isArray(n.colorScheme)?n.colorScheme:a.schemeCategory10,d=new Map;t.forEach((t,e)=>{d.set(t.id,h[e%h.length])});const f=[],y=[],g=[];for(const e of t){if(null==e.x||null==e.y)continue;const t=u(e),n=l?l(e):{},i={fill:n.fill||d.get(e.id)||"#007bff",stroke:n.stroke||"#fff",strokeWidth:null!==(o=n.strokeWidth)&&void 0!==o?o:2,opacity:n.opacity};f.push({type:"circle",cx:e.x,cy:e.y,r:t,style:i,datum:e,id:e.id,label:e.id})}for(const n of e){const e="object"==typeof n.source?n.source:ut(t,n.source),i="object"==typeof n.target?n.target:ut(t,n.target);if(!e||!i)continue;if(null==e.x||null==e.y)continue;if(null==i.x||null==i.y)continue;const o=c?c(n):{},a={stroke:o.stroke||"#999",strokeWidth:null!==(r=o.strokeWidth)&&void 0!==r?r:1,opacity:null!==(s=o.opacity)&&void 0!==s?s:.6};y.push({type:"line",x1:e.x,y1:e.y,x2:i.x,y2:i.y,style:a,datum:n})}if(!1!==n.showLabels){const e=(p=n.nodeLabel)?"function"==typeof p?p:t=>t[p]||t.id:null;for(const n of t){if(null==n.x||null==n.y)continue;const t=e?e(n):n.id;if(!t)continue;const i=u(n);g.push({x:n.x,y:n.y-i-4,text:t+"",anchor:"middle",baseline:"auto",fontSize:11})}}var p;return{sceneNodes:f,sceneEdges:y,labels:g}}};function ut(t,e){return t.find(t=>t.id===e)}function ht(t,e,n){var r,s;if(null==t)return()=>8;if("number"==typeof t)return()=>t;if("function"==typeof t)return e=>t(e)||8;const a=e||[5,20],l=n.map(e=>{var n;return null===(n=e.data)||void 0===n?void 0:n[t]}).filter(t=>null!=t&&"number"==typeof t);if(0===l.length)return()=>a[0];const c=null!==(r=o.min(l))&&void 0!==r?r:0,u=null!==(s=o.max(l))&&void 0!==s?s:1;if(c===u)return()=>(a[0]+a[1])/2;const h=i.scaleLinear().domain([c,u]).range(a).clamp(!0);return e=>{var n;const i=null===(n=e.data)||void 0===n?void 0:n[t];return null==i||"number"!=typeof i?a[0]:h(i)}}const dt=a.schemeCategory10,ft={supportsStreaming:!1,hierarchical:!1,computeLayout(t,e,n,i){if(0===t.length)return;const{padAngle:o=.01,groupWidth:r=20,sortGroups:s}=n,a=Math.min(i[0],i[1])/2,c=a-r,h=i[0]/2,d=i[1]/2,f=(y=n.valueAccessor)?"function"==typeof y?y:t=>{var e;return null!==(e=t[y])&&void 0!==e?e:1}:t=>{var e;return null!==(e=t.value)&&void 0!==e?e:1};var y;const g=new Map;for(let e=0;t.length>e;e++)g.set(t[e].id,e);const p=t.length,m=Array.from({length:p},()=>Array.from({length:p},()=>0));for(const t of e){const e="string"==typeof t.target?t.target:t.target.id,n=g.get("string"==typeof t.source?t.source:t.source.id),i=g.get(e);if(void 0===n||void 0===i)continue;const o=f(t);m[n][i]=o}const v=u.chord().padAngle(o);s&&v.sortGroups(s);const x=v(m),b=x.groups,k=l.arc().innerRadius(c).outerRadius(a);for(const e of b){const n=t[e.index],i=k.centroid(e);n.x=i[0]+h,n.y=i[1]+d,n.arcData={startAngle:e.startAngle,endAngle:e.endAngle}}for(const n of e){const e="string"==typeof n.source?n.source:n.source.id,i="string"==typeof n.target?n.target:n.target.id,o=t.find(t=>t.id===e),r=t.find(t=>t.id===i);o&&(n.source=o),r&&(n.target=r)}for(const n of x){const i=t[n.source.index].id,o=t[n.target.index].id,r=e.find(t=>{const e="string"==typeof t.source?t.source:t.source.id,n="string"==typeof t.target?t.target:t.target.id;return e===i&&n===o||e===o&&n===i});r&&(r.chordData=n)}},buildScene(t,e,n,i){var o,r;const{groupWidth:s=20,edgeOpacity:a=.5}=n,l=Math.min(i[0],i[1])/2,c=l-s,h=i[0]/2,d=i[1]/2,f=n.nodeStyle,y=n.edgeStyle,g=n.edgeColorBy||"source",p=Array.isArray(n.colorScheme)?n.colorScheme:dt,m=new Map;t.forEach((t,e)=>{m.set(t.id,p[e%p.length])});const v=u.ribbon().radius(c),x=[],b=[],k=[];for(let e=0;t.length>e;e++){const n=t[e],i=n.arcData;if(!i)continue;let r;r=f?f(n).fill||m.get(n.id)||p[e%p.length]:m.get(n.id)||p[e%p.length];const s=f?f(n):{},a={fill:r,stroke:s.stroke||"black",strokeWidth:null!==(o=s.strokeWidth)&&void 0!==o?o:1,opacity:s.opacity};x.push({type:"arc",cx:h,cy:d,innerR:c,outerR:l,startAngle:i.startAngle-Math.PI/2,endAngle:i.endAngle-Math.PI/2,style:a,datum:n,id:n.id,label:n.id})}for(const t of e){const e=t.chordData;if(!e)continue;const n=v({source:Object.assign(Object.assign({},e.source),{startAngle:e.source.startAngle-Math.PI/2,endAngle:e.source.endAngle-Math.PI/2}),target:Object.assign(Object.assign({},e.target),{startAngle:e.target.startAngle-Math.PI/2,endAngle:e.target.endAngle-Math.PI/2})});if(!n)continue;const i=yt(n,h,d);let o="#999";if(y)o=y(t).fill||o;else{const e="object"==typeof t.source?t.source:null,n="object"==typeof t.target?t.target:null;"target"===g&&n?o=m.get(n.id)||o:e&&(o=m.get(e.id)||o)}const s=y?y(t):{},l={fill:o,fillOpacity:null!==(r=s.fillOpacity)&&void 0!==r?r:a,stroke:s.stroke||"none",strokeWidth:s.strokeWidth,opacity:s.opacity};b.push({type:"ribbon",pathD:i,style:l,datum:t})}if(!1!==n.showLabels){const e=(w=n.nodeLabel)?"function"==typeof w?w:t=>t[w]||t.id:null,i=l+12;for(const n of t){const t=n.arcData;if(!t)continue;const o=e?e(n):n.id;if(!o)continue;const r=(t.startAngle+t.endAngle)/2,s=r-Math.PI/2;k.push({x:h+Math.cos(s)*i,y:d+Math.sin(s)*i,text:o+"",anchor:r>Math.PI?"end":"start",baseline:"middle",fontSize:11})}}var w;return{sceneNodes:x,sceneEdges:b,labels:k}}};function yt(t,e,n){const i=t.match(/[a-zA-Z]|[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?/g);if(!i)return t;const o=[];let r=0;for(;i.length>r;){const t=i[r];if("M"===t||"L"===t)for(o.push(t),r++;i.length>r&&!isNaN(Number(i[r]));)o.push(Number(i[r])+e+""),r++,i.length>r&&!isNaN(Number(i[r]))&&(o.push(Number(i[r])+n+""),r++);else if("C"===t)for(o.push(t),r++;i.length>r&&!isNaN(Number(i[r]));)for(let t=0;3>t&&i.length>r&&!isNaN(Number(i[r]));t++)o.push(Number(i[r])+e+""),r++,i.length>r&&!isNaN(Number(i[r]))&&(o.push(Number(i[r])+n+""),r++);else if("Q"===t)for(o.push(t),r++;i.length>r&&!isNaN(Number(i[r]));)for(let t=0;2>t&&i.length>r&&!isNaN(Number(i[r]));t++)o.push(Number(i[r])+e+""),r++,i.length>r&&!isNaN(Number(i[r]))&&(o.push(Number(i[r])+n+""),r++);else if("A"===t)for(o.push(t),r++;i.length>r&&!isNaN(Number(i[r]));)o.push(i[r++]),i.length>r&&o.push(i[r++]),i.length>r&&o.push(i[r++]),i.length>r&&o.push(i[r++]),i.length>r&&o.push(i[r++]),i.length>r&&(o.push(Number(i[r])+e+""),r++),i.length>r&&(o.push(Number(i[r])+n+""),r++);else"Z"===t||"z"===t?(o.push(t),r++):(o.push(i[r]),r++)}return o.join(" ")}const gt={supportsStreaming:!1,hierarchical:!0,computeLayout(t,e,n,i){var o;const r=n.__hierarchyRoot;if(!r)return;const s=n.chartType,a=(l=n.childrenAccessor)?"function"==typeof l?l:t=>t[l]:void 0;var l;const c=n.hierarchySum||(t=>{var e;return null!==(e=t.value)&&void 0!==e?e:0}),u=h.hierarchy(r,a);u.sum(c),u.sort((t,e)=>{var n,i;return(null!==(n=e.value)&&void 0!==n?n:0)-(null!==(i=t.value)&&void 0!==i?i:0)});const[d,f]=i;switch(s){case"tree":!function(t,e,n,i){const o=e.treeOrientation||"vertical",r=h.tree();r.size("horizontal"===o?[i,n]:"radial"===o?[2*Math.PI,Math.min(n,i)/2*.8]:[n,i]),r(t)}(u,n,d,f);break;case"cluster":!function(t,e,n,i){const o=e.treeOrientation||"vertical",r=h.cluster();r.size("horizontal"===o?[i,n]:"radial"===o?[2*Math.PI,Math.min(n,i)/2*.8]:[n,i]),r(t)}(u,n,d,f);break;case"treemap":!function(t,e,n,i){var o,r;const s=null!==(o=e.padding)&&void 0!==o?o:4,a=null!==(r=e.paddingTop)&&void 0!==r?r:0,l=h.treemap().size([n,i]).tile(h.treemapBinary).padding(s);a>0&&l.paddingTop(a),l(t)}(u,n,d,f);break;case"circlepack":!function(t,e,n,i){var o;const r=null!==(o=e.padding)&&void 0!==o?o:4;h.pack().size([n,i]).padding(r)(t)}(u,n,d,f);break;case"partition":!function(t,e,n,i){var o;h.partition().size([n,i]).padding(null!==(o=e.padding)&&void 0!==o?o:1)(t)}(u,n,d,f)}const y=u.descendants();t.length=0,e.length=0;const g=new Map;for(let e=0;y.length>e;e++){const i=y[e],r={id:bt(i,n,e),x:0,y:0,x0:0,x1:0,y0:0,y1:0,width:0,height:0,value:null!==(o=i.value)&&void 0!==o?o:0,depth:i.depth,data:i.data,createdByFrame:!0};"tree"===s||"cluster"===s?pt(r,i,n):"treemap"===s||"partition"===s?mt(r,i):"circlepack"===s&&vt(r,i),r.__hierarchyNode=i,t.push(r),g.set(i,r)}if("tree"===s||"cluster"===s)for(const t of y)if(t.parent){const n=g.get(t.parent),i=g.get(t);n&&i&&e.push({source:n,target:i,value:1,y0:0,y1:0,sankeyWidth:0,data:{depth:t.depth}})}},buildScene(t,e,n,i){const o=n.nodeStyle||(()=>({})),r=n.edgeStyle||(()=>({}));switch(n.chartType){case"tree":case"cluster":return function(t,e,n,i,o,r){var s,a,l,c,u;const h=[],d=[],f=[],y=n.treeOrientation||"vertical",g="radial"===y,p=i[0]/2,m=i[1]/2,v="number"==typeof(x=n.nodeSize)?x:5;var x;for(const e of t){let t=e.x,n=e.y;g&&(t+=p,n+=m);const i=o(e),r={fill:i.fill||"#4d430c",stroke:i.stroke||"#fff",strokeWidth:null!==(s=i.strokeWidth)&&void 0!==s?s:1,opacity:i.opacity};h.push({type:"circle",cx:t,cy:n,r:v,style:r,datum:e,id:e.id,label:e.id,depth:e.depth})}const b=null!==(a=n.edgeOpacity)&&void 0!==a?a:.5;for(const t of e){const e="object"==typeof t.source?t.source:null,n="object"==typeof t.target?t.target:null;if(!e||!n)continue;let i=e.x,o=e.y,s=n.x,a=n.y;g&&(i+=p,o+=m,s+=p,a+=m);const u=xt(i,o,s,a,y),h=r(t),f={fill:"none",stroke:h.stroke||"#999",strokeWidth:null!==(l=h.strokeWidth)&&void 0!==l?l:1.5,opacity:null!==(c=h.opacity)&&void 0!==c?c:b};d.push({type:"curved",pathD:u,style:f,datum:t})}if(!1!==n.showLabels){const e=kt(n.nodeLabel);for(const n of t){const t=e?e(n):n.id;if(!t)continue;let i,o,r,s=n.x,a=n.y;if(g&&(s+=p,a+=m),g){const t=s-p,e=a-m,n=Math.sqrt(t*t+e*e);n>0?(i=s+t/n*10,o=a+e/n*10,r=0>t?"end":"start"):(i=s,o=a-12,r="middle")}else"horizontal"===y?((null===(u=n.data)||void 0===u?void 0:u.children)&&0!==n.data.children.length?(i=s-v-6,r="end"):(i=s+v+6,r="start"),o=a):(i=s,o=a+v+14,r="middle");f.push({x:i,y:o,text:t+"",anchor:r,baseline:"middle",fontSize:11})}}return{sceneNodes:h,sceneEdges:d,labels:f}}(t,e,n,i,o,r);case"treemap":case"partition":return function(t,e,n,i){var o,r;const s=[],a=[],l=["#e8d5b7","#b8d4e3","#d4e3b8","#e3c4d4","#d4d4e3","#e3d4b8","#b8e3d4","#e3b8b8"];for(const n of t){const t=n.x1-n.x0,r=n.y1-n.y0;if(0>=t||0>=r)continue;const a=i(n);let c=a.fill||"#4d430c";e.colorByDepth&&void 0!==n.depth&&(c=l[n.depth%l.length]);const u={fill:c,stroke:a.stroke||"#fff",strokeWidth:null!==(o=a.strokeWidth)&&void 0!==o?o:1,opacity:a.opacity};s.push({type:"rect",x:n.x0,y:n.y0,w:t,h:r,style:u,datum:n,id:n.id,label:n.id,depth:n.depth})}if(!1!==e.showLabels){const n=kt(e.nodeLabel);for(const i of t){const t=i.x1-i.x0,o=i.y1-i.y0;if(0>=t||0>=o)continue;if((null===(r=i.data)||void 0===r?void 0:r.children)&&i.data.children.length>0&&"partition"!==e.chartType)continue;const s=n?n(i):i.id;s&&(30>t||16>o||a.push({x:i.x0+t/2,y:i.y0+o/2,text:s+"",anchor:"middle",baseline:"middle",fontSize:Math.min(11,Math.max(8,Math.min(t,o)/6))}))}}return{sceneNodes:s,sceneEdges:[],labels:a}}(t,n,0,o);case"circlepack":return function(t,e,n,i){var o,r,s,a,l;const c=[],u=[],h=["#e8d5b7","#b8d4e3","#d4e3b8","#e3c4d4","#d4d4e3","#e3d4b8","#b8e3d4","#e3b8b8"];for(const n of t){const t=null!==(o=n.__radius)&&void 0!==o?o:5;if(0>=t)continue;const a=i(n);let l=a.fill||"#4d430c";e.colorByDepth&&void 0!==n.depth&&(l=h[n.depth%h.length]);const u={fill:l,stroke:a.stroke||"#fff",strokeWidth:null!==(r=a.strokeWidth)&&void 0!==r?r:1,opacity:null!==(s=a.opacity)&&void 0!==s?s:.7};c.push({type:"circle",cx:n.x,cy:n.y,r:t,style:u,datum:n,id:n.id,label:n.id,depth:n.depth})}if(!1!==e.showLabels){const n=kt(e.nodeLabel);for(const e of t){const t=null!==(a=e.__radius)&&void 0!==a?a:5,i=n?n(e):e.id;if(!i)continue;if(15>t)continue;const o=!((null===(l=e.data)||void 0===l?void 0:l.children)&&e.data.children.length>0);u.push({x:e.x,y:o?e.y:e.y-t+14,text:i+"",anchor:"middle",baseline:o?"middle":"hanging",fontSize:Math.min(11,Math.max(8,t/3)),fill:o?void 0:"#000",stroke:o?void 0:"#fff",strokeWidth:o?void 0:3,paintOrder:o?void 0:"stroke"})}}return{sceneNodes:c,sceneEdges:[],labels:u}}(t,n,0,o);default:return{sceneNodes:[],sceneEdges:[],labels:[]}}}};function pt(t,e,n){const i=n.treeOrientation||"vertical";if("radial"===i){const n=e.x,i=e.y;t.x=i*Math.cos(n-Math.PI/2),t.y=i*Math.sin(n-Math.PI/2)}else"horizontal"===i?(t.x=e.y,t.y=e.x):(t.x=e.x,t.y=e.y);t.x0=t.x-5,t.x1=t.x+5,t.y0=t.y-5,t.y1=t.y+5,t.width=10,t.height=10}function mt(t,e){t.x0=e.x0,t.x1=e.x1,t.y0=e.y0,t.y1=e.y1,t.x=(e.x0+e.x1)/2,t.y=(e.y0+e.y1)/2,t.width=e.x1-e.x0,t.height=e.y1-e.y0}function vt(t,e){var n;const i=null!==(n=e.r)&&void 0!==n?n:0;t.x=e.x,t.y=e.y,t.x0=e.x-i,t.x1=e.x+i,t.y0=e.y-i,t.y1=e.y+i,t.width=2*i,t.height=2*i,t.__radius=i}function xt(t,e,n,i,o){if("horizontal"===o){const o=(t+n)/2;return`M ${t},${e} C ${o},${e} ${o},${i} ${n},${i}`}if("radial"===o){const o=(t+n)/2;return`M ${t},${e} Q ${o},${e} ${o},${(e+i)/2} T ${n},${i}`}{const o=(e+i)/2;return`M ${t},${e} C ${t},${o} ${n},${o} ${n},${i}`}}function bt(t,e,n){const i=e.nodeIDAccessor;return"function"==typeof i?i(t.data)+"":"string"==typeof i&&void 0!==t.data[i]?t.data[i]+"":void 0!==t.data.name?t.data.name+"":void 0!==t.data.id?t.data.id+"":"node-"+n}function kt(t){return t?"function"==typeof t?t:e=>{var n;return(null===(n=e.data)||void 0===n?void 0:n[t])||e[t]||e.id}:null}const wt={sankey:lt,force:ct,chord:ft,tree:gt,cluster:gt,treemap:gt,circlepack:gt,partition:gt};function Et(t){return wt[t]}class At{constructor(t){this.nodes=new Map,this.edges=new Map,this.tension=0,this.layoutVersion=0,this.sceneNodes=[],this.sceneEdges=[],this.labels=[],this.particlePool=null,this.transition=null,this.config=t,this.tensionConfig=Object.assign(Object.assign({},U),t.tensionConfig),"sankey"===t.chartType&&t.showParticles&&(this.particlePool=new et(2e3))}updateConfig(t){this.config=t,this.tensionConfig=Object.assign(Object.assign({},U),t.tensionConfig),"sankey"===t.chartType&&t.showParticles?this.particlePool||(this.particlePool=new et(2e3)):this.particlePool=null}ingestHierarchy(t,e){this.nodes.clear(),this.edges.clear(),this.config.__hierarchyRoot=t,this.runLayout(e)}ingestBounded(t,e,n){const{nodeIDAccessor:i="id",sourceAccessor:o="source",targetAccessor:r="target",valueAccessor:s="value"}=this.config,a="function"==typeof i?i:t=>t[i],l="function"==typeof o?o:t=>t[o],c="function"==typeof r?r:t=>t[r],u="function"==typeof s?s:t=>{var e;return null!==(e=t[s])&&void 0!==e?e:1};this.nodes.clear(),this.edges.clear();for(const e of t){const t=a(e)+"";this.nodes.set(t,Object.assign(Object.assign({},St(t)),{data:e}))}for(const t of e){const e=l(t)+"",n=c(t)+"",i=Number(u(t))||1;this.nodes.has(e)||this.nodes.set(e,Object.assign(Object.assign({},St(e)),{data:t})),this.nodes.has(n)||this.nodes.set(n,Object.assign(Object.assign({},St(n)),{data:t})),this.edges.set(`${e}\0${n}`,{source:e,target:n,value:i,y0:0,y1:0,sankeyWidth:0,data:t})}this.runLayout(n)}edgeKey(t,e){return`${t}\0${e}`}ingestEdge(t){const{source:e,target:n,value:i}=t,o=0===this.nodes.size;let r=!1;this.nodes.has(e)||(this.nodes.set(e,St(e)),this.tension+=this.tensionConfig.newNode,r=!0),this.nodes.has(n)||(this.nodes.set(n,St(n)),this.tension+=this.tensionConfig.newNode,r=!0);const s=this.edgeKey(e,n),a=this.edges.get(s);return a?(a.value+=i,this.tension+=this.tensionConfig.weightChange):(this.edges.set(s,{source:e,target:n,value:i,y0:0,y1:0,sankeyWidth:0}),this.tension+=this.tensionConfig.newEdge,r=!0),o||r||this.tension>=this.tensionConfig.threshold}runLayout(t){const e=Et(this.config.chartType);if(!e)return;let n=Array.from(this.nodes.values()),i=Array.from(this.edges.values());if(0!==n.length||e.hierarchical){if(this.prepareForRelayout(),e.computeLayout(n,i,this.config,t),e.hierarchical&&n.length>0){this.nodes.clear(),this.edges.clear();for(const t of n)this.nodes.set(t.id,t);for(const t of i)this.edges.set(`${"string"==typeof t.source?t.source:t.source.id}\0${"string"==typeof t.target?t.target:t.target.id}`,t)}this.finalizeLayout(),this.saveTargetPositions(),n.some(t=>void 0!==t._prevX0&&(0!==t._prevX0||0!==t._prevX1||0!==t._prevY0||0!==t._prevY1))&&this.tensionConfig.transitionDuration>0&&(this.restorePreviousPositions(),this.transition={startTime:performance.now(),duration:this.tensionConfig.transitionDuration}),this.layoutVersion++}}buildScene(t){const e=Et(this.config.chartType);if(!e)return;const n=Array.from(this.nodes.values()),i=Array.from(this.edges.values()),{sceneNodes:o,sceneEdges:r,labels:s}=e.buildScene(n,i,this.config,t);this.sceneNodes=o,this.sceneEdges=r,this.labels=s}advanceTransition(t){if(!this.transition)return!1;const e=Math.min((t-this.transition.startTime)/this.transition.duration,1),n=1-Math.pow(1-e,3);for(const t of this.nodes.values())void 0===t._targetX0||void 0===t._prevX0||0===t._prevX0&&0===t._prevX1||(t.x0=t._prevX0+(t._targetX0-t._prevX0)*n,t.x1=t._prevX1+(t._targetX1-t._prevX1)*n,t.y0=t._prevY0+(t._targetY0-t._prevY0)*n,t.y1=t._prevY1+(t._targetY1-t._prevY1)*n);for(const t of this.edges.values())void 0!==t._targetY0&&void 0!==t._prevY0&&void 0!==t._prevSankeyWidth&&t._prevSankeyWidth>0&&(t.y0=t._prevY0+(t._targetY0-t._prevY0)*n,t.y1=t._prevY1+(t._targetY1-t._prevY1)*n,t.sankeyWidth=t._prevSankeyWidth+(t._targetSankeyWidth-t._prevSankeyWidth)*n);return this.rebuildAllBeziers(),1>e||(this.snapToTargets(),this.transition=null,!1)}prepareForRelayout(){for(const t of this.nodes.values())t._prevX0=t.x0,t._prevX1=t.x1,t._prevY0=t.y0,t._prevY1=t.y1;for(const t of this.edges.values())t._prevY0=t.y0,t._prevY1=t.y1,t._prevSankeyWidth=t.sankeyWidth}finalizeLayout(){const t="vertical"===this.config.orientation?"down":"right";for(const t of this.nodes.values())if(0!==t.x0||0!==t.x1||0!==t.y0||0!==t.y1)t.width=t.x1-t.x0,t.height=t.y1-t.y0,t.x=t.x0+t.width/2,t.y=t.y0+t.height/2;else{const e=5;t.x0=t.x-e,t.x1=t.x+e,t.y0=t.y-e,t.y1=t.y+e,t.width=2*e,t.height=2*e}for(const e of this.edges.values())e.direction=t,this.updateEdgeBezier(e);this.tension=0}saveTargetPositions(){for(const t of this.nodes.values())t._targetX0=t.x0,t._targetX1=t.x1,t._targetY0=t.y0,t._targetY1=t.y1;for(const t of this.edges.values())t._targetY0=t.y0,t._targetY1=t.y1,t._targetSankeyWidth=t.sankeyWidth}restorePreviousPositions(){for(const t of this.nodes.values())void 0===t._prevX0||0===t._prevX0&&0===t._prevX1||(t.x0=t._prevX0,t.x1=t._prevX1,t.y0=t._prevY0,t.y1=t._prevY1);for(const t of this.edges.values())void 0!==t._prevY0&&void 0!==t._prevSankeyWidth&&t._prevSankeyWidth>0&&(t.y0=t._prevY0,t.y1=t._prevY1,t.sankeyWidth=t._prevSankeyWidth);this.rebuildAllBeziers()}snapToTargets(){for(const t of this.nodes.values())void 0!==t._targetX0&&(t.x0=t._targetX0,t.x1=t._targetX1,t.y0=t._targetY0,t.y1=t._targetY1);for(const t of this.edges.values())void 0!==t._targetY0&&(t.y0=t._targetY0,t.y1=t._targetY1,t.sankeyWidth=t._targetSankeyWidth);this.rebuildAllBeziers()}updateEdgeBezier(t){const e="string"==typeof t.source?this.nodes.get(t.source):t.source,n="string"==typeof t.target?this.nodes.get(t.target):t.target;e&&n&&(t.bezier=t.circular&&t.circularPathData?this.buildCircularBezier(t):this.buildStandardBezier(t,e,n))}buildStandardBezier(t,e,n){const i=(t.sankeyWidth||1)/2;if("down"===t.direction){const o=e.y1,s=n.y0,a=r.interpolateNumber(o,s);return{circular:!1,points:[{x:t.y0,y:o},{x:t.y0,y:a(.5)},{x:t.y1,y:a(.5)},{x:t.y1,y:s}],halfWidth:i}}const o=e.x1,s=n.x0,a=r.interpolateNumber(o,s);return{circular:!1,points:[{x:o,y:t.y0},{x:a(.5),y:t.y0},{x:a(.5),y:t.y1},{x:s,y:t.y1}],halfWidth:i}}buildCircularBezier(t){const e=(t.sankeyWidth||1)/2,n=t.circularPathData;let i;i="down"===t.direction?[{x:n.sourceY,y:n.sourceX},{x:n.sourceY,y:n.leftFullExtent},{x:n.verticalFullExtent,y:n.leftFullExtent},{x:n.verticalFullExtent,y:n.rightFullExtent},{x:n.targetY,y:n.rightFullExtent},{x:n.targetY,y:n.targetX}]:[{x:n.sourceX,y:n.sourceY},{x:n.leftFullExtent,y:n.sourceY},{x:n.leftFullExtent,y:n.verticalFullExtent},{x:n.rightFullExtent,y:n.verticalFullExtent},{x:n.rightFullExtent,y:n.targetY},{x:n.targetX,y:n.targetY}];const o=[];for(let t=0;i.length-1>t;t++){const e=i[t],n=i[t+1],r=n.x-e.x,s=n.y-e.y;o.push([e,{x:e.x+r/3,y:e.y+s/3},{x:e.x+2*r/3,y:e.y+2*s/3},n])}return{circular:!0,segments:o,halfWidth:e}}rebuildAllBeziers(){for(const t of this.nodes.values())t.width=t.x1-t.x0,t.height=t.y1-t.y0,t.x=t.x0+t.width/2,t.y=t.y0+t.height/2;for(const t of this.edges.values())this.updateEdgeBezier(t)}getLayoutData(){return{nodes:Array.from(this.nodes.values()),edges:Array.from(this.edges.values())}}clear(){this.nodes.clear(),this.edges.clear(),this.tension=0,this.layoutVersion=0,this.sceneNodes=[],this.sceneEdges=[],this.labels=[],this.transition=null,this.particlePool&&this.particlePool.clear()}}function St(t){return{id:t,x0:0,x1:0,y0:0,y1:0,x:0,y:0,width:0,height:0,value:0,createdByFrame:!0}}function Mt(t,e,n){switch(t.type){case"circle":return function(t,e,n){const i=e-t.cx,o=n-t.cy,r=Math.sqrt(i*i+o*o);return r>Math.max(t.r,5)+5?null:{type:"node",datum:t.datum,x:t.cx,y:t.cy,distance:r}}(t,e,n);case"rect":return function(t,e,n){return t.x>e||e>t.x+t.w||t.y>n||n>t.y+t.h?null:{type:"node",datum:t.datum,x:t.x+t.w/2,y:t.y+t.h/2,distance:0}}(t,e,n);case"arc":return function(t,e,n){const i=e-t.cx,o=n-t.cy,r=Math.sqrt(i*i+o*o);if(t.innerR-2>r||r>t.outerR+2)return null;let s=Math.atan2(o,i);0>s&&(s+=2*Math.PI);let a,l=t.startAngle,c=t.endAngle;if(0>l&&(l+=2*Math.PI),0>c&&(c+=2*Math.PI),a=l>c?s>=l||c>=s:s>=l&&c>=s,a){const e=(t.startAngle+t.endAngle)/2,n=(t.innerR+t.outerR)/2;return{type:"node",datum:t.datum,x:t.cx+n*Math.cos(e),y:t.cy+n*Math.sin(e),distance:0}}return null}(t,e,n);default:return null}}function _t(t,e,n){switch(t.type){case"bezier":return function(t,e,n){var i,o;if(!t.pathD)return null;try{const r=new Path2D(t.pathD),s=document.createElement("canvas").getContext("2d");if(!s)return null;if(s.isPointInPath(r,e,n)){const r="object"==typeof(null===(i=t.datum)||void 0===i?void 0:i.source)?t.datum.source:null,s="object"==typeof(null===(o=t.datum)||void 0===o?void 0:o.target)?t.datum.target:null;return{type:"edge",datum:t.datum,x:r&&s?(r.x1+s.x0)/2:e,y:t.datum?(t.datum.y0+t.datum.y1)/2:n,distance:0}}}catch(t){}return null}(t,e,n);case"line":return function(t,e,n){const i=t.x2-t.x1,o=t.y2-t.y1,r=i*i+o*o;if(0===r)return null;let s=((e-t.x1)*i+(n-t.y1)*o)/r;s=Math.max(0,Math.min(1,s));const a=t.x1+s*i,l=t.y1+s*o,c=Math.sqrt(Math.pow(e-a,2)+Math.pow(n-l,2));return c>5?null:{type:"edge",datum:t.datum,x:a,y:l,distance:c}}(t,e,n);case"ribbon":case"curved":return function(t,e,n){if(!t.pathD)return null;try{const i=new Path2D(t.pathD),o=document.createElement("canvas").getContext("2d");if(!o)return null;if(o.isPointInPath(i,e,n))return{type:"edge",datum:t.datum,x:e,y:n,distance:0}}catch(t){}return null}(t,e,n);default:return null}}function Nt(t){const{width:e,height:n,totalWidth:i,totalHeight:o,margin:r,labels:s,title:a,legend:l,foregroundGraphics:c,annotations:u,svgAnnotationRules:h}=t;return f.createElement("svg",{width:i,height:o,style:{position:"absolute",top:0,left:0,pointerEvents:"none"}},f.createElement("g",{transform:`translate(${r.left},${r.top})`},s.map((t,e)=>f.createElement("text",{key:"label-"+e,x:t.x,y:t.y,textAnchor:t.anchor||"start",dominantBaseline:t.baseline||"middle",fontSize:t.fontSize||11,fontWeight:t.fontWeight,fill:t.fill||"currentColor",stroke:t.stroke,strokeWidth:t.strokeWidth,paintOrder:t.paintOrder,style:{pointerEvents:"none"}},t.text)),u&&h&&u.map((t,i)=>{const o=h(t,i,{width:e,height:n});return o?f.createElement(f.Fragment,{key:"annotation-"+i},o):null}),c),a&&"string"==typeof a?f.createElement("text",{x:i/2,y:16,textAnchor:"middle",fontSize:14,fontWeight:600,fill:"currentColor"},a):a?f.createElement("foreignObject",{x:0,y:0,width:i,height:r.top},a):null,l&&"object"==typeof l&&"legendGroups"in l?f.createElement("g",{transform:`translate(${i-r.right+10},${r.top})`},l.legendGroups.map((t,e)=>{var n;return f.createElement("g",{key:"legend-group-"+e},null===(n=t.items)||void 0===n?void 0:n.map((t,e)=>f.createElement("g",{key:"legend-item-"+e,transform:`translate(0,${20*e})`},f.createElement("rect",{x:0,y:0,width:12,height:12,fill:t.color,rx:2}),f.createElement("text",{x:18,y:10,fontSize:11,fill:"currentColor"},t.label))))})):l?f.createElement("g",{transform:`translate(${i-r.right+10},${r.top})`},l):null)}function Wt(t,e){var n,i,o,r;if(!e.pathD)return;t.save();const s=new Path2D(e.pathD);e.style.fill&&"none"!==e.style.fill&&(t.fillStyle=e.style.fill,t.globalAlpha=null!==(i=null!==(n=e.style.fillOpacity)&&void 0!==n?n:e.style.opacity)&&void 0!==i?i:.5,t.fill(s)),e.style.stroke&&"none"!==e.style.stroke&&(t.strokeStyle=e.style.stroke,t.lineWidth=null!==(o=e.style.strokeWidth)&&void 0!==o?o:.5,t.globalAlpha=.5*(null!==(r=e.style.opacity)&&void 0!==r?r:1),t.stroke(s)),t.restore()}function Pt(t,e){var n;t.save(),t.strokeStyle=e.style.stroke||"#999",t.lineWidth=null!==(n=e.style.strokeWidth)&&void 0!==n?n:1,void 0!==e.style.opacity&&(t.globalAlpha=e.style.opacity),e.style.strokeDasharray&&t.setLineDash(e.style.strokeDasharray.split(/[\s,]+/).map(Number)),t.beginPath(),t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.stroke(),t.restore()}function zt(t,e){var n,i,o,r;if(!e.pathD)return;t.save();const s=new Path2D(e.pathD);e.style.fill&&"none"!==e.style.fill&&(t.fillStyle=e.style.fill,t.globalAlpha=null!==(i=null!==(n=e.style.fillOpacity)&&void 0!==n?n:e.style.opacity)&&void 0!==i?i:.5,t.fill(s)),e.style.stroke&&"none"!==e.style.stroke&&(t.strokeStyle=e.style.stroke,t.lineWidth=null!==(o=e.style.strokeWidth)&&void 0!==o?o:.5,t.globalAlpha=.3*(null!==(r=e.style.opacity)&&void 0!==r?r:1),t.stroke(s)),t.restore()}function Ct(t,e){var n,i;if(!e.pathD)return;t.save();const o=new Path2D(e.pathD);t.strokeStyle=e.style.stroke||"#999",t.lineWidth=null!==(n=e.style.strokeWidth)&&void 0!==n?n:1,void 0!==e.style.opacity&&(t.globalAlpha=e.style.opacity),t.stroke(o),e.style.fill&&"none"!==e.style.fill&&(t.fillStyle=e.style.fill,t.globalAlpha=null!==(i=e.style.fillOpacity)&&void 0!==i?i:.1,t.fill(o)),t.restore()}Nt.displayName="NetworkSVGOverlay";const Tt=a.schemeCategory10,Ot={top:20,right:80,bottom:20,left:80},$t={top:40,right:40,bottom:40,left:40},Rt=new Set(["chord","force","circlepack"]),Dt=[800,600],Yt={background:"rgba(0, 0, 0, 0.85)",color:"white",padding:"6px 10px",borderRadius:4,fontSize:12,lineHeight:1.5,boxShadow:"0 2px 8px rgba(0, 0, 0, 0.15)",pointerEvents:"none",whiteSpace:"nowrap"};function Bt({data:t}){var e,n,i,o,r,s;if("edge"===t.type){const e=t.data;return f.createElement("div",{className:"semiotic-tooltip",style:Yt},f.createElement("div",{style:{fontWeight:600}},"object"==typeof e.source?e.source.id:e.source," → ","object"==typeof e.target?e.target.id:e.target),null!=e.value&&f.createElement("div",{style:{marginTop:4,opacity:.8}},"Value:"," ","number"==typeof e.value?e.value.toLocaleString():e.value+""))}const a=t.data,l=null==a?void 0:a.__hierarchyNode;if(l){const t=[];let r=l;for(;r;){const s=null!==(o=null!==(n=null===(e=r.data)||void 0===e?void 0:e.name)&&void 0!==n?n:null===(i=r.data)||void 0===i?void 0:i.id)&&void 0!==o?o:a.id;null!=s&&t.unshift(s+""),r=r.parent}t.length>1&&t.shift();const s=t.length-1;return f.createElement("div",{className:"semiotic-tooltip",style:Yt},f.createElement("div",null,t.map((t,e)=>f.createElement("span",{key:e},e>0&&f.createElement("span",{style:{margin:"0 3px",opacity:.5}}," → "),e===s?f.createElement("strong",null,t):f.createElement("span",{style:{opacity:.7}},t)))),null!=a.value&&a.value>0&&f.createElement("div",{style:{marginTop:4,opacity:.8}},"number"==typeof a.value?a.value.toLocaleString():a.value+""))}const c=((null===(r=a.sourceLinks)||void 0===r?void 0:r.length)||0)+((null===(s=a.targetLinks)||void 0===s?void 0:s.length)||0),u=(a.sourceLinks||[]).reduce((t,e)=>t+(e.value||0),0)+(a.targetLinks||[]).reduce((t,e)=>t+(e.value||0),0);return f.createElement("div",{className:"semiotic-tooltip",style:Yt},f.createElement("div",{style:{fontWeight:600}},a.id),null!=a.value&&a.value>0&&f.createElement("div",{style:{marginTop:4,opacity:.8}},"Total:"," ","number"==typeof a.value?a.value.toLocaleString():a.value+""),c>0&&f.createElement("div",{style:{marginTop:4,opacity:.8}},"Connections: ",c,u!==c&&` (weighted: ${u.toLocaleString()})`))}const Lt=t.forwardRef(function(e,n){const{chartType:i,nodes:o,edges:r,data:s,initialEdges:a,nodeIDAccessor:l="id",sourceAccessor:c="source",targetAccessor:u="target",valueAccessor:h="value",childrenAccessor:d,hierarchySum:y,orientation:g="horizontal",nodeAlign:p="justify",nodePaddingRatio:m=.05,nodeWidth:v=15,iterations:x=300,forceStrength:b=.1,padAngle:k=.01,groupWidth:w=20,sortGroups:E,edgeSort:A,treeOrientation:S="vertical",edgeType:M="curve",padding:_,paddingTop:N,tensionConfig:W,showParticles:P=!1,particleStyle:z,nodeStyle:C,edgeStyle:T,colorBy:O,colorScheme:$="category10",edgeColorBy:R="source",edgeOpacity:D=.5,colorByDepth:Y=!1,nodeSize:B=8,nodeSizeRange:L=[5,20],nodeLabel:X,showLabels:F=!0,size:j=Dt,margin:I,className:H,background:G,enableHover:q=!0,tooltipContent:V,onTopologyChange:Z,annotations:J,svgAnnotationRules:K,legend:Q,title:et,foregroundGraphics:nt,backgroundGraphics:it}=e,ot=Rt.has(i)?$t:Ot,rt=Object.assign(Object.assign({},ot),I),st=j[0]-rt.left-rt.right,at=j[1]-rt.top-rt.bottom,lt=t.useMemo(()=>Object.assign(Object.assign({},U),W),[W]),ct=t.useMemo(()=>Object.assign(Object.assign({},tt),z),[z]),ut=t.useMemo(()=>({chartType:i,nodeIDAccessor:l,sourceAccessor:c,targetAccessor:u,valueAccessor:h,childrenAccessor:d,hierarchySum:y,orientation:g,nodeAlign:p,nodePaddingRatio:m,nodeWidth:v,iterations:x,forceStrength:b,padAngle:k,groupWidth:w,sortGroups:E,edgeSort:A,treeOrientation:S,edgeType:M,padding:_,paddingTop:N,tensionConfig:lt,showParticles:P,particleStyle:ct,nodeStyle:C,edgeStyle:T,nodeLabel:X,showLabels:F,colorBy:O,colorScheme:$,edgeColorBy:R,edgeOpacity:D,colorByDepth:Y,nodeSize:B,nodeSizeRange:L}),[i,l,c,u,h,d,y,g,p,m,v,x,b,k,w,E,A,S,M,_,N,lt,P,ct,C,T,X,F,O,$,R,D,Y,B,L]),ht=t.useRef(null),dt=t.useRef(0),ft=t.useRef(0),yt=t.useRef(!0),gt=t.useRef(()=>{}),pt=t.useRef(null);pt.current||(pt.current=new At(ut));const[mt,vt]=t.useState(null),[xt,bt]=t.useState(0),[kt,wt]=t.useState(0),Et=t.useRef(null),St=t.useRef(new Map),Yt=t.useRef(0),Lt=t.useCallback(t=>{if("function"==typeof O)return O(t);if("string"==typeof O&&t.data){const e=t.data[O];if(void 0!==e){if(!St.current.has(e+"")){const t=Array.isArray($)?$:Tt;St.current.set(e+"",t[Yt.current++%t.length])}return St.current.get(e+"")}}if(!St.current.has(t.id)){const e=Array.isArray($)?$:Tt;St.current.set(t.id,e[Yt.current++%e.length])}return St.current.get(t.id)},[O,$]);t.useCallback(t=>{if("function"==typeof R)return R(t);const e="object"==typeof t.source?t.source:null,n="object"==typeof t.target?t.target:null;return"target"===R&&n?Lt(n):e?Lt(e):"#999"},[R,Lt]);const Xt=t.useCallback(t=>{const e="object"==typeof t.source?t.source:null,n="object"==typeof t.target?t.target:null;return"target"===(ct.colorBy||"source")&&n?Lt(n):e?Lt(e):"#999"},[ct.colorBy,Lt]),Ft="sankey"===i&&P,jt=t.useCallback(()=>{dt.current&&!Ft||dt.current||(dt.current=requestAnimationFrame(()=>gt.current()))},[Ft]);t.useEffect(()=>{var t;null===(t=pt.current)||void 0===t||t.updateConfig(ut),yt.current=!0,jt()},[ut,jt]);const It=t.useCallback(()=>{const t=pt.current;if(t&&(t.runLayout([st,at]),t.buildScene([st,at]),yt.current=!0,bt(t.layoutVersion),Z)){const{nodes:e,edges:n}=t.getLayoutData();Z(e,n)}},[st,at,Z]),Ht=t.useCallback(t=>{const e=pt.current;e&&(e.ingestEdge(t)&&It(),jt())},[It,jt]),Gt=t.useCallback(t=>{const e=pt.current;if(!e)return;let n=!1;for(const i of t)e.ingestEdge(i)&&(n=!0);n&&It(),jt()},[It,jt]),qt=t.useCallback(()=>{var t;null===(t=pt.current)||void 0===t||t.clear(),St.current.clear(),Yt.current=0,bt(0),vt(null),Et.current=null,yt.current=!0,jt()},[jt]),Vt=t.useCallback(()=>{const t=pt.current;t&&(t.tension+=999,It(),jt())},[It,jt]);t.useImperativeHandle(n,()=>({push:Ht,pushMany:Gt,clear:qt,getTopology:()=>{var t,e;return null!==(e=null===(t=pt.current)||void 0===t?void 0:t.getLayoutData())&&void 0!==e?e:{nodes:[],edges:[]}},relayout:Vt,getTension:()=>{var t,e;return null!==(e=null===(t=pt.current)||void 0===t?void 0:t.tension)&&void 0!==e?e:0}}),[Ht,Gt,qt,Vt]);const Zt=["tree","cluster","treemap","circlepack","partition"].includes(i),Jt=Zt?s||(Array.isArray(r)?void 0:r):void 0;t.useEffect(()=>{const t=pt.current;if(t)if(Zt&&Jt)t.ingestHierarchy(Jt,[st,at]),t.buildScene([st,at]),yt.current=!0,jt();else{const e=o||[],n=Array.isArray(r)?r:[];if(0===e.length&&0===n.length)return;t.ingestBounded(e,n,[st,at]),t.buildScene([st,at]),yt.current=!0,jt()}},[o,r,s,Jt,Zt,st,at,ut,jt]),t.useEffect(()=>{a&&a.length>0&&Gt(a)},[]);const Kt=t.useRef(()=>{}),Qt=t.useRef(()=>{});Kt.current=t=>{if(!q)return;const e=ht.current;if(!e)return;const n=e.getBoundingClientRect(),i=t.clientX-n.left-rt.left,o=t.clientY-n.top-rt.top;if(0>i||i>st||0>o||o>at)return void(Et.current&&(Et.current=null,vt(null),jt()));const r=pt.current;if(!r)return;const s=function(t,e,n,i,o=30){let r=null,s=o,a=1/0;for(const e of t){const t=Mt(e,n,i);if(t)if("rect"===e.type){const n=e.w*e.h;a>n&&(r=t,a=n)}else s>t.distance&&(r=t,s=t.distance)}if(r)return r;for(const t of e){const e=_t(t,n,i);e&&s>e.distance&&(r=e,s=e.distance)}return r}(r.sceneNodes,r.sceneEdges,i,o);if(!s)return void(Et.current&&(Et.current=null,vt(null),jt()));const a={type:s.type,data:s.datum,x:s.x,y:s.y};Et.current=a,vt(a),jt()},Qt.current=()=>{Et.current&&(Et.current=null,vt(null),jt())};const Ut=t.useCallback(t=>Kt.current(t),[]),te=t.useCallback(()=>Qt.current(),[]);gt.current=()=>{var t;dt.current=0;const e=ht.current;if(!e)return;const n=e.getContext("2d");if(!n)return;const i=pt.current;if(!i)return;const o=performance.now(),r=ft.current?Math.min((o-ft.current)/1e3,.1):.016;ft.current=o;const s=i.advanceTransition(o);(s||yt.current)&&i.buildScene([st,at]);const a="undefined"!=typeof window&&window.devicePixelRatio||1;if(e.width=j[0]*a,e.height=j[1]*a,e.style.width=j[0]+"px",e.style.height=j[1]+"px",n.scale(a,a),n.translate(rt.left,rt.top),n.clearRect(-rt.left,-rt.top,j[0],j[1]),G&&(n.fillStyle=G,n.fillRect(0,0,st,at)),function(t,e){for(const n of e)switch(n.type){case"bezier":Wt(t,n);break;case"line":Pt(t,n);break;case"ribbon":zt(t,n);break;case"curved":Ct(t,n)}}(n,i.sceneEdges),function(t,e){var n,i,o;for(const r of e){if("rect"!==r.type)continue;const e=r;e.w>0&&e.h>0&&(t.save(),void 0!==e.style.opacity&&(t.globalAlpha=e.style.opacity),e.style.fill&&(t.fillStyle=e.style.fill,void 0!==e.style.fillOpacity&&(t.globalAlpha=(null!==(n=e.style.opacity)&&void 0!==n?n:1)*e.style.fillOpacity),t.fillRect(e.x,e.y,e.w,e.h)),e.style.stroke&&"none"!==e.style.stroke&&(t.strokeStyle=e.style.stroke,t.lineWidth=null!==(i=e.style.strokeWidth)&&void 0!==i?i:1,t.globalAlpha=null!==(o=e.style.opacity)&&void 0!==o?o:1,t.strokeRect(e.x,e.y,e.w,e.h)),t.restore())}}(n,i.sceneNodes),function(t,e){var n,i,o;for(const r of e){if("circle"!==r.type)continue;const e=r;e.r>0&&(t.save(),void 0!==e.style.opacity&&(t.globalAlpha=e.style.opacity),t.beginPath(),t.arc(e.cx,e.cy,e.r,0,2*Math.PI),e.style.fill&&(t.fillStyle=e.style.fill,void 0!==e.style.fillOpacity&&(t.globalAlpha=(null!==(n=e.style.opacity)&&void 0!==n?n:1)*e.style.fillOpacity),t.fill()),e.style.stroke&&"none"!==e.style.stroke&&(t.strokeStyle=e.style.stroke,t.lineWidth=null!==(i=e.style.strokeWidth)&&void 0!==i?i:1,t.globalAlpha=null!==(o=e.style.opacity)&&void 0!==o?o:1,t.stroke()),t.restore())}}(n,i.sceneNodes),function(t,e){var n,i,o;for(const r of e){if("arc"!==r.type)continue;const e=r;t.save(),void 0!==e.style.opacity&&(t.globalAlpha=e.style.opacity),t.beginPath(),t.arc(e.cx,e.cy,e.outerR,e.startAngle,e.endAngle),t.arc(e.cx,e.cy,e.innerR,e.endAngle,e.startAngle,!0),t.closePath(),e.style.fill&&(t.fillStyle=e.style.fill,void 0!==e.style.fillOpacity&&(t.globalAlpha=(null!==(n=e.style.opacity)&&void 0!==n?n:1)*e.style.fillOpacity),t.fill()),e.style.stroke&&"none"!==e.style.stroke&&(t.strokeStyle=e.style.stroke,t.lineWidth=null!==(i=e.style.strokeWidth)&&void 0!==i?i:1,t.globalAlpha=null!==(o=e.style.opacity)&&void 0!==o?o:1,t.stroke()),t.restore()}}(n,i.sceneNodes),P&&i.particlePool){const e=Array.from(i.edges.values());if(e.length>0){!function(t,e,n,i){var o,r;const s=null!==(o=i.spawnRate)&&void 0!==o?o:tt.spawnRate,a=null!==(r=i.maxPerEdge)&&void 0!==r?r:tt.maxPerEdge;for(let i=0;e.length>i;i++){const o=e[i];if(!o.bezier)continue;if(t.countForEdge(i)>=a)continue;const r=o.value*s*n,l=Math.floor(r),c=r-l;let u=l;Math.random()<c&&u++;for(let e=0;u>e&&t.countForEdge(i)<a;e++)t.spawn(i)}}(i.particlePool,e,r,ct);const o=.5*(null!==(t=ct.speedMultiplier)&&void 0!==t?t:1);i.particlePool.step(r,o,e),function(t,e,n,i,o){var r,s;const a=null!==(r=i.radius)&&void 0!==r?r:tt.radius,l=null!==(s=i.opacity)&&void 0!==s?s:tt.opacity;t.globalAlpha=l;for(let r=0;e.particles.length>r;r++){const s=e.particles[r];if(!s.active)continue;const l=n[s.edgeIndex];if(l){if("function"==typeof i.color){const e="object"==typeof l.source?l.source:null;t.fillStyle=e?i.color(l,e):"#666"}else t.fillStyle=i.color&&"inherit"!==i.color?i.color:o(l);t.beginPath(),t.arc(s.x,s.y,a,0,2*Math.PI),t.fill()}}t.globalAlpha=1}(n,i.particlePool,e,ct,Xt)}}const l=yt.current;yt.current=!1,(l||s)&&wt(t=>t+1),(Ft||s)&&(dt.current=requestAnimationFrame(()=>gt.current()))},t.useEffect(()=>(jt(),()=>{dt.current&&cancelAnimationFrame(dt.current)}),[jt]),t.useEffect(()=>{yt.current=!0,jt()},[i,st,at,G,jt]);const ee=q&&mt?f.createElement("div",{className:"stream-network-tooltip",style:{position:"absolute",left:rt.left+mt.x,top:rt.top+mt.y,transform:`translate(${mt.x>.6*st?"calc(-100% - 12px)":"12px"}, ${.3*at>mt.y?"4px":"calc(-100% - 4px)"})`,pointerEvents:"none",zIndex:2}},V?V(mt):f.createElement(Bt,{data:mt})):null,ne=pt.current;return f.createElement("div",{className:"stream-network-frame"+(H?" "+H:""),style:{position:"relative",width:j[0],height:j[1]},onMouseMove:q?Ut:void 0,onMouseLeave:q?te:void 0},it&&f.createElement("svg",{style:{position:"absolute",top:0,left:0,width:j[0],height:j[1],pointerEvents:"none"}},f.createElement("g",{transform:`translate(${rt.left},${rt.top})`},it)),f.createElement("canvas",{ref:ht,style:{position:"absolute",top:0,left:0}}),f.createElement(Nt,{width:st,height:at,totalWidth:j[0],totalHeight:j[1],margin:rt,labels:(null==ne?void 0:ne.labels)||[],title:et,legend:Q,foregroundGraphics:nt,annotations:J,svgAnnotationRules:K,annotationFrame:kt}),ee)});function Xt(t,e){return t?!0===t?{name:"hover",fields:[]}:"string"==typeof t?{name:t,fields:[]}:{name:t.name||"hover",fields:t.fields}:null}function Ft(t){let e=new EventTarget,n=t(function(t){n=Object.assign(n,t(n)),e.dispatchEvent(new CustomEvent("update"))});return{getState:()=>n,subscribe:function(t){return e.addEventListener("update",t),()=>e.removeEventListener("update",t)}}}function jt(t){const e=[];for(const[n,i]of Object.entries(t.fields))if("point"===i.type)e.push(t=>i.values.has(t[n]));else{const[t,o]=i.range;e.push(e=>{const i=e[n];return i>=t&&o>=i})}return t=>e.every(e=>e(t))}function It(t,e){let n=t.get(e);return n||(n={name:e,resolution:"union",clauses:new Map},t.set(e,n)),n}Lt.displayName="StreamNetworkFrame";const[Ht,Gt]=function(e){let n=t.createContext(null),i=Ft(e);return[function({children:i}){let o=t.useMemo(()=>Ft(e),[]);return f.createElement(n.Provider,{value:o,children:i})},e=>{var o;let r=null!==(o=t.useContext(n))&&void 0!==o?o:i;return function(e,n){const[i,o]=t.useState(n);return t.useLayoutEffect(()=>e(()=>o(n)),[e]),i}(r.subscribe,()=>e(r.getState()))}]}(t=>({selections:new Map,setClause(e,n){t(t=>{const i=new Map(t.selections),o=It(i,e),r=new Map(o.clauses);return r.set(n.clientId,n),i.set(e,Object.assign(Object.assign({},o),{clauses:r})),{selections:i}})},clearClause(e,n){t(t=>{const i=t.selections.get(e);if(!i)return{};const o=new Map(t.selections),r=new Map(i.clauses);return r.delete(n),o.set(e,Object.assign(Object.assign({},i),{clauses:r})),{selections:o}})},setResolution(e,n){t(t=>{const i=new Map(t.selections),o=It(i,e);return i.set(e,Object.assign(Object.assign({},o),{resolution:n})),{selections:i}})},clearSelection(e){t(t=>{const n=new Map(t.selections),i=n.get(e);return i&&n.set(e,Object.assign(Object.assign({},i),{clauses:new Map})),{selections:n}})}}));function qt(e){const n=e.name||"hover",{fields:i}=e,{predicate:o,isActive:r,selectPoints:s,clear:a}=function(e){const n=t.useId(),i=e.clientId||n,{name:o}=e,r=Gt(t=>t.selections.get(o)),s=Gt(t=>t.setClause),a=Gt(t=>t.clearClause),l=t.useMemo(()=>!!r&&r.clauses.size>0,[r]);return{predicate:t.useMemo(()=>r&&0!==r.clauses.size?function(t,e){const n=[];for(const[i,o]of t.clauses)"crossfilter"===t.resolution&&i===e||n.push(jt(o));return 0===n.length?()=>!0:"intersect"===t.resolution?t=>n.every(e=>e(t)):t=>n.some(e=>e(t))}(r,i):()=>!0,[r,i]),isActive:l,selectPoints:t.useCallback(t=>{const e={};for(const[n,i]of Object.entries(t))e[n]={type:"point",values:new Set(i)};s(o,{clientId:i,type:"point",fields:e})},[i,o,s]),selectInterval:t.useCallback(t=>{const e={};for(const[n,i]of Object.entries(t))e[n]={type:"interval",range:i};s(o,{clientId:i,type:"interval",fields:e})},[i,o,s]),clear:t.useCallback(()=>{a(o,i)},[a,o,i]),clientId:i}}({name:n});return{onHover:t.useCallback(t=>{if(!t)return void a();const e={};for(const n of i){const i=t[n];void 0!==i&&(e[n]=[i])}Object.keys(e).length>0&&s(e)},[i,s,a]),predicate:o,isActive:r}}const Vt=t.forwardRef(function(e,n){const{size:i,width:o,height:r,margin:s,className:a,arrowOfTime:l="right",windowMode:c="sliding",windowSize:u=200,data:h,timeAccessor:d,valueAccessor:y,timeExtent:g,valueExtent:p,extentPadding:m,stroke:v="#007bff",strokeWidth:x=2,strokeDasharray:b,showAxes:k=!0,background:w,enableHover:E,tooltipContent:A,tooltip:S,onHover:M,annotations:_,svgAnnotationRules:N,tickFormatTime:W,tickFormatValue:P,decay:z,pulse:C,staleness:T,transition:O,linkedHover:$}=e,R=null!=o&&null!=r?[o,r]:i||[500,300],D=null!=A?A:S,Y=t.useRef(null),B=Xt($),L=qt({name:(null==B?void 0:B.name)||"hover",fields:(null==B?void 0:B.fields)||[]}),X=t.useCallback(t=>{M&&M(t),$&&L.onHover(t?t.data||t:null)},[M,$,L]);return t.useImperativeHandle(n,()=>({push:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.push(t)},pushMany:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.pushMany(t)},clear:()=>{var t;return null===(t=Y.current)||void 0===t?void 0:t.clear()},getData:()=>{var t,e;return null!==(e=null===(t=Y.current)||void 0===t?void 0:t.getData())&&void 0!==e?e:[]}})),f.createElement(Q,{ref:Y,chartType:"line",runtimeMode:"streaming",size:R,margin:s,className:a,arrowOfTime:l,windowMode:c,windowSize:u,data:h,timeAccessor:d,valueAccessor:y,xExtent:g,yExtent:p,extentPadding:m,lineStyle:{stroke:v,strokeWidth:x,strokeDasharray:b},showAxes:k,background:w,hoverAnnotation:E,tooltipContent:D,customHoverBehavior:X,annotations:_,svgAnnotationRules:N,tickFormatTime:W,tickFormatValue:P,decay:z,pulse:C,staleness:T,transition:O})});Vt.displayName="RealtimeLineChart";const Zt=t.forwardRef(function(e,n){const{binSize:i,size:o,width:r,height:s,margin:a,className:l,arrowOfTime:c="right",windowMode:u="sliding",windowSize:h=200,data:d,timeAccessor:y,valueAccessor:g,timeExtent:p,valueExtent:m,extentPadding:v,categoryAccessor:x,colors:b,fill:k,stroke:w,strokeWidth:E,gap:A,showAxes:S=!0,background:M,enableHover:_,tooltipContent:N,tooltip:W,onHover:P,annotations:z,svgAnnotationRules:C,tickFormatTime:T,tickFormatValue:O,linkedHover:$}=e,R=null!=r&&null!=s?[r,s]:o||[500,300],D=null!=N?N:W,Y=t.useRef(null),B=Xt($),L=qt({name:(null==B?void 0:B.name)||"hover",fields:(null==B?void 0:B.fields)||[]}),X=t.useCallback(t=>{P&&P(t),$&&L.onHover(t?t.data||t:null)},[P,$,L]);t.useImperativeHandle(n,()=>({push:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.push(t)},pushMany:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.pushMany(t)},clear:()=>{var t;return null===(t=Y.current)||void 0===t?void 0:t.clear()},getData:()=>{var t,e;return null!==(e=null===(t=Y.current)||void 0===t?void 0:t.getData())&&void 0!==e?e:[]}}));const F={};return null!=k&&(F.fill=k),null!=w&&(F.stroke=w),null!=E&&(F.strokeWidth=E),null!=A&&(F.gap=A),f.createElement(Q,{ref:Y,chartType:"bar",runtimeMode:"streaming",size:R,margin:a,className:l,arrowOfTime:c,windowMode:u,windowSize:h,data:d,timeAccessor:y,valueAccessor:g,xExtent:p,yExtent:m,extentPadding:v,binSize:i,categoryAccessor:x,barColors:b,barStyle:F,showAxes:S,background:M,hoverAnnotation:_,tooltipContent:D,customHoverBehavior:X,annotations:z,svgAnnotationRules:C,tickFormatTime:T,tickFormatValue:O})});Zt.displayName="RealtimeTemporalHistogram";const Jt=Zt,Kt=t.forwardRef(function(e,n){const{size:i,width:o,height:r,margin:s,className:a,arrowOfTime:l="right",windowMode:c="sliding",windowSize:u=200,data:h,timeAccessor:d,valueAccessor:y,timeExtent:g,valueExtent:p,extentPadding:m,categoryAccessor:v,colors:x,radius:b,fill:k,opacity:w,stroke:E,strokeWidth:A,showAxes:S=!0,background:M,enableHover:_,tooltipContent:N,tooltip:W,onHover:P,annotations:z,svgAnnotationRules:C,tickFormatTime:T,tickFormatValue:O,linkedHover:$}=e,R=null!=o&&null!=r?[o,r]:i||[500,300],D=null!=N?N:W,Y=t.useRef(null),B=Xt($),L=qt({name:(null==B?void 0:B.name)||"hover",fields:(null==B?void 0:B.fields)||[]}),X=t.useCallback(t=>{P&&P(t),$&&L.onHover(t?t.data||t:null)},[P,$,L]);t.useImperativeHandle(n,()=>({push:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.push(t)},pushMany:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.pushMany(t)},clear:()=>{var t;return null===(t=Y.current)||void 0===t?void 0:t.clear()},getData:()=>{var t,e;return null!==(e=null===(t=Y.current)||void 0===t?void 0:t.getData())&&void 0!==e?e:[]}}));const F={};return null!=b&&(F.radius=b),null!=k&&(F.fill=k),null!=w&&(F.opacity=w),null!=E&&(F.stroke=E),null!=A&&(F.strokeWidth=A),f.createElement(Q,{ref:Y,chartType:"swarm",runtimeMode:"streaming",size:R,margin:s,className:a,arrowOfTime:l,windowMode:c,windowSize:u,data:h,timeAccessor:d,valueAccessor:y,xExtent:g,yExtent:p,extentPadding:m,categoryAccessor:v,barColors:x,swarmStyle:F,showAxes:S,background:M,hoverAnnotation:_,tooltipContent:D,customHoverBehavior:X,annotations:z,svgAnnotationRules:C,tickFormatTime:T,tickFormatValue:O})});Kt.displayName="RealtimeSwarmChart";const Qt=t.forwardRef(function(e,n){const{size:i,width:o,height:r,margin:s,className:a,arrowOfTime:l="right",windowMode:c="sliding",windowSize:u=200,data:h,timeAccessor:d,valueAccessor:y,timeExtent:g,valueExtent:p,extentPadding:m,positiveColor:v,negativeColor:x,connectorStroke:b,connectorWidth:k,gap:w,stroke:E,strokeWidth:A,showAxes:S=!0,background:M,enableHover:_,tooltipContent:N,tooltip:W,onHover:P,annotations:z,svgAnnotationRules:C,tickFormatTime:T,tickFormatValue:O,linkedHover:$}=e,R=null!=o&&null!=r?[o,r]:i||[500,300],D=null!=N?N:W,Y=t.useRef(null),B=Xt($),L=qt({name:(null==B?void 0:B.name)||"hover",fields:(null==B?void 0:B.fields)||[]}),X=t.useCallback(t=>{P&&P(t),$&&L.onHover(t?t.data||t:null)},[P,$,L]);t.useImperativeHandle(n,()=>({push:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.push(t)},pushMany:t=>{var e;return null===(e=Y.current)||void 0===e?void 0:e.pushMany(t)},clear:()=>{var t;return null===(t=Y.current)||void 0===t?void 0:t.clear()},getData:()=>{var t,e;return null!==(e=null===(t=Y.current)||void 0===t?void 0:t.getData())&&void 0!==e?e:[]}}));const F={};return null!=v&&(F.positiveColor=v),null!=x&&(F.negativeColor=x),null!=b&&(F.connectorStroke=b),null!=k&&(F.connectorWidth=k),null!=w&&(F.gap=w),null!=E&&(F.stroke=E),null!=A&&(F.strokeWidth=A),f.createElement(Q,{ref:Y,chartType:"waterfall",runtimeMode:"streaming",size:R,margin:s,className:a,arrowOfTime:l,windowMode:c,windowSize:u,data:h,timeAccessor:d,valueAccessor:y,xExtent:g,yExtent:p,extentPadding:m,waterfallStyle:F,showAxes:S,background:M,hoverAnnotation:_,tooltipContent:D,customHoverBehavior:X,annotations:z,svgAnnotationRules:C,tickFormatTime:T,tickFormatValue:O})});Qt.displayName="RealtimeWaterfallChart";const Ut=t.forwardRef(function(e,n){const{size:i,width:o,height:r,margin:s,className:a,arrowOfTime:l="right",windowMode:c="sliding",windowSize:u=200,data:h,timeAccessor:d,valueAccessor:y,categoryAccessor:g,timeExtent:p,valueExtent:m,extentPadding:v,heatmapXBins:x=20,heatmapYBins:b=20,aggregation:k="count",showAxes:w=!0,background:E,enableHover:A,tooltipContent:S,tooltip:M,onHover:_,annotations:N,svgAnnotationRules:W,tickFormatTime:P,tickFormatValue:z,decay:C,pulse:T,staleness:O}=e,$=null!=o&&null!=r?[o,r]:i||[500,300],R=null!=S?S:M,D=t.useRef(null);return t.useImperativeHandle(n,()=>({push:t=>{var e;return null===(e=D.current)||void 0===e?void 0:e.push(t)},pushMany:t=>{var e;return null===(e=D.current)||void 0===e?void 0:e.pushMany(t)},clear:()=>{var t;return null===(t=D.current)||void 0===t?void 0:t.clear()},getData:()=>{var t,e;return null!==(e=null===(t=D.current)||void 0===t?void 0:t.getData())&&void 0!==e?e:[]}})),f.createElement(Q,{ref:D,chartType:"heatmap",runtimeMode:"streaming",size:$,margin:s,className:a,arrowOfTime:l,windowMode:c,windowSize:u,data:h,timeAccessor:d,valueAccessor:y,categoryAccessor:g,xExtent:p,yExtent:m,extentPadding:v,heatmapXBins:x,heatmapYBins:b,heatmapAggregation:k,showAxes:w,background:E,hoverAnnotation:A,tooltipContent:R,customHoverBehavior:_,annotations:N,svgAnnotationRules:W,tickFormatTime:P,tickFormatValue:z,decay:C,pulse:T,staleness:O})});Ut.displayName="RealtimeHeatmap",exports.IncrementalExtent=m,exports.RealtimeHeatmap=Ut,exports.RealtimeHistogram=Jt,exports.RealtimeLineChart=Vt,exports.RealtimeSwarmChart=Kt,exports.RealtimeWaterfallChart=Qt,exports.RingBuffer=p,exports.StreamNetworkFrame=Lt,exports.StreamXYFrame=Q;
|