semiotic 3.0.0-beta.2 → 3.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +93 -753
- package/README.md +92 -7
- package/ai/dist/componentRegistry.js +26 -0
- package/ai/dist/{ai/mcp-server.js → mcp-server.js} +1 -1
- package/ai/dist/{ai/renderHOCToSVG.js → renderHOCToSVG.js} +2 -2
- package/dist/ChartContainer.d.ts +60 -0
- package/dist/DetailsPanel.d.ts +37 -0
- package/dist/LinkedCharts.d.ts +2 -0
- package/dist/Tooltip/Tooltip.d.ts +2 -2
- package/dist/charts/index.d.ts +1 -1
- package/dist/charts/ordinal/BarChart.d.ts +1 -0
- package/dist/charts/ordinal/BoxPlot.d.ts +1 -0
- package/dist/charts/ordinal/DonutChart.d.ts +1 -0
- package/dist/charts/ordinal/DotPlot.d.ts +1 -0
- package/dist/charts/ordinal/GroupedBarChart.d.ts +1 -0
- package/dist/charts/ordinal/Histogram.d.ts +1 -0
- package/dist/charts/ordinal/PieChart.d.ts +1 -0
- package/dist/charts/ordinal/RidgelinePlot.d.ts +1 -0
- package/dist/charts/ordinal/StackedBarChart.d.ts +1 -0
- package/dist/charts/ordinal/SwarmPlot.d.ts +1 -0
- package/dist/charts/ordinal/ViolinPlot.d.ts +1 -0
- package/dist/charts/realtime/RealtimeHeatmap.d.ts +11 -0
- package/dist/charts/realtime/RealtimeHistogram.d.ts +15 -1
- package/dist/charts/realtime/RealtimeLineChart.d.ts +6 -0
- package/dist/charts/realtime/RealtimeSwarmChart.d.ts +6 -0
- package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +6 -0
- package/dist/charts/shared/annotationRules.d.ts +3 -0
- package/dist/charts/shared/colorUtils.d.ts +17 -11
- package/dist/charts/shared/hooks.d.ts +96 -1
- package/dist/charts/shared/loess.d.ts +13 -0
- package/dist/charts/shared/networkUtils.d.ts +31 -0
- package/dist/charts/shared/tooltipUtils.d.ts +16 -0
- package/dist/charts/shared/types.d.ts +17 -2
- package/dist/charts/shared/validateChartData.d.ts +2 -3
- package/dist/charts/shared/validateProps.d.ts +18 -0
- package/dist/charts/xy/AreaChart.d.ts +4 -0
- package/dist/charts/xy/BubbleChart.d.ts +6 -0
- package/dist/charts/xy/Heatmap.d.ts +4 -0
- package/dist/charts/xy/LineChart.d.ts +6 -0
- package/dist/charts/xy/Scatterplot.d.ts +4 -0
- package/dist/charts/xy/StackedAreaChart.d.ts +4 -0
- package/dist/data/fromVegaLite.d.ts +48 -0
- package/dist/export/chartConfig.d.ts +29 -0
- package/dist/export/selectionSerializer.d.ts +20 -0
- package/dist/geometry/sankeyLinks.d.ts +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/realtime/types.d.ts +20 -6
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai.d.ts +14 -0
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-data.d.ts +2 -0
- package/dist/semiotic-data.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-network.d.ts +9 -19
- package/dist/semiotic-ordinal.d.ts +12 -14
- package/dist/semiotic-xy.d.ts +12 -18
- package/dist/semiotic.d.ts +16 -13
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/store/ObservationStore.d.ts +61 -0
- package/dist/store/SelectionStore.d.ts +9 -1
- package/dist/store/ThemeStore.d.ts +6 -1
- package/dist/store/TooltipStore.d.ts +3 -1
- package/dist/store/createStore.d.ts +4 -1
- package/dist/store/useObservation.d.ts +18 -0
- package/dist/stream/MarginalGraphics.d.ts +1 -1
- package/dist/stream/NetworkPipelineStore.d.ts +44 -0
- package/dist/stream/OrdinalCanvasHitTester.d.ts +1 -0
- package/dist/stream/OrdinalSVGOverlay.d.ts +6 -2
- package/dist/stream/ParticlePool.d.ts +2 -1
- package/dist/stream/PipelineStore.d.ts +11 -0
- package/dist/stream/SVGOverlay.d.ts +21 -2
- package/dist/stream/SceneGraph.d.ts +1 -1
- package/dist/stream/networkTypes.d.ts +58 -1
- package/dist/stream/ordinalTypes.d.ts +13 -0
- package/dist/stream/types.d.ts +14 -0
- package/dist/types/annotationTypes.d.ts +10 -0
- package/dist/types/networkTypes.d.ts +1 -2
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +30 -42
- package/ai/dist/ai/componentRegistry.js +0 -45
- package/ai/dist/src/components/Annotation.js +0 -358
- package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +0 -369
- package/ai/dist/src/components/Axis/Axis.js +0 -374
- package/ai/dist/src/components/Axis/axisTitle.js +0 -14
- package/ai/dist/src/components/Axis/index.js +0 -7
- package/ai/dist/src/components/Axis/summaryGraphic.js +0 -37
- package/ai/dist/src/components/Brush.js +0 -84
- package/ai/dist/src/components/ChartErrorBoundary.js +0 -91
- package/ai/dist/src/components/DividedLine.js +0 -65
- package/ai/dist/src/components/Legend.js +0 -140
- package/ai/dist/src/components/LinkedCharts.js +0 -95
- package/ai/dist/src/components/ThemeProvider.js +0 -79
- package/ai/dist/src/components/Tooltip/Tooltip.js +0 -309
- package/ai/dist/src/components/TooltipPositioner/index.js +0 -132
- package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +0 -73
- package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +0 -254
- package/ai/dist/src/components/annotationRules/baseRules.js +0 -150
- package/ai/dist/src/components/annotationRules/networkframeRules.js +0 -196
- package/ai/dist/src/components/annotationRules/xyframeRules.js +0 -297
- package/ai/dist/src/components/batchWork.js +0 -35
- package/ai/dist/src/components/charts/index.js +0 -109
- package/ai/dist/src/components/charts/network/ChordDiagram.js +0 -142
- package/ai/dist/src/components/charts/network/CirclePack.js +0 -108
- package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +0 -121
- package/ai/dist/src/components/charts/network/SankeyDiagram.js +0 -155
- package/ai/dist/src/components/charts/network/TreeDiagram.js +0 -110
- package/ai/dist/src/components/charts/network/Treemap.js +0 -106
- package/ai/dist/src/components/charts/ordinal/BarChart.js +0 -156
- package/ai/dist/src/components/charts/ordinal/BoxPlot.js +0 -139
- package/ai/dist/src/components/charts/ordinal/DonutChart.js +0 -130
- package/ai/dist/src/components/charts/ordinal/DotPlot.js +0 -126
- package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +0 -129
- package/ai/dist/src/components/charts/ordinal/Histogram.js +0 -132
- package/ai/dist/src/components/charts/ordinal/PieChart.js +0 -128
- package/ai/dist/src/components/charts/ordinal/RidgelinePlot.js +0 -130
- package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +0 -130
- package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +0 -147
- package/ai/dist/src/components/charts/ordinal/ViolinPlot.js +0 -138
- package/ai/dist/src/components/charts/realtime/RealtimeHeatmap.js +0 -79
- package/ai/dist/src/components/charts/realtime/RealtimeHistogram.js +0 -114
- package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +0 -93
- package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +0 -105
- package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +0 -106
- package/ai/dist/src/components/charts/shared/ChartError.js +0 -72
- package/ai/dist/src/components/charts/shared/colorUtils.js +0 -138
- package/ai/dist/src/components/charts/shared/formatUtils.js +0 -213
- package/ai/dist/src/components/charts/shared/hooks.js +0 -49
- package/ai/dist/src/components/charts/shared/legendUtils.js +0 -57
- package/ai/dist/src/components/charts/shared/selectionUtils.js +0 -67
- package/ai/dist/src/components/charts/shared/tooltipUtils.js +0 -79
- package/ai/dist/src/components/charts/shared/types.js +0 -2
- package/ai/dist/src/components/charts/shared/validateChartData.js +0 -82
- package/ai/dist/src/components/charts/shared/validateProps.js +0 -736
- package/ai/dist/src/components/charts/xy/AreaChart.js +0 -230
- package/ai/dist/src/components/charts/xy/BubbleChart.js +0 -251
- package/ai/dist/src/components/charts/xy/Heatmap.js +0 -235
- package/ai/dist/src/components/charts/xy/LineChart.js +0 -307
- package/ai/dist/src/components/charts/xy/MinimapChart.js +0 -298
- package/ai/dist/src/components/charts/xy/Scatterplot.js +0 -172
- package/ai/dist/src/components/charts/xy/ScatterplotMatrix.js +0 -426
- package/ai/dist/src/components/charts/xy/StackedAreaChart.js +0 -231
- package/ai/dist/src/components/constants/coordinateNames.js +0 -11
- package/ai/dist/src/components/constants/frame_props.js +0 -251
- package/ai/dist/src/components/data/dataFunctions.js +0 -487
- package/ai/dist/src/components/data/multiAccessorUtils.js +0 -14
- package/ai/dist/src/components/data/transforms.js +0 -143
- package/ai/dist/src/components/data/unflowedFunctions.js +0 -5
- package/ai/dist/src/components/export/exportChart.js +0 -121
- package/ai/dist/src/components/generic_utilities/functions.js +0 -5
- package/ai/dist/src/components/geometry/areaDrawing.js +0 -312
- package/ai/dist/src/components/geometry/contourLayout.js +0 -73
- package/ai/dist/src/components/geometry/hexbinLayout.js +0 -163
- package/ai/dist/src/components/geometry/lineDrawing.js +0 -356
- package/ai/dist/src/components/geometry/sankeyLinks.js +0 -331
- package/ai/dist/src/components/geometry/summaryLayouts.js +0 -136
- package/ai/dist/src/components/index.js +0 -18
- package/ai/dist/src/components/processing/InteractionItems.js +0 -223
- package/ai/dist/src/components/processing/hierarchyUtils.js +0 -104
- package/ai/dist/src/components/processing/layouts/chordLayout.js +0 -58
- package/ai/dist/src/components/processing/layouts/forceLayout.js +0 -142
- package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +0 -31
- package/ai/dist/src/components/processing/layouts/index.js +0 -32
- package/ai/dist/src/components/processing/layouts/sankeyLayout.js +0 -96
- package/ai/dist/src/components/processing/layouts/simpleLayouts.js +0 -34
- package/ai/dist/src/components/processing/layouts/types.js +0 -2
- package/ai/dist/src/components/processing/networkDefaults.js +0 -39
- package/ai/dist/src/components/realtime/BinAccumulator.js +0 -36
- package/ai/dist/src/components/realtime/IncrementalExtent.js +0 -55
- package/ai/dist/src/components/realtime/RingBuffer.js +0 -104
- package/ai/dist/src/components/realtime/renderers/barRenderer.js +0 -133
- package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +0 -7
- package/ai/dist/src/components/realtime/renderers/lineRenderer.js +0 -164
- package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +0 -91
- package/ai/dist/src/components/realtime/renderers/types.js +0 -2
- package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +0 -163
- package/ai/dist/src/components/realtime/types.js +0 -2
- package/ai/dist/src/components/semiotic-ai.js +0 -89
- package/ai/dist/src/components/semiotic-data.js +0 -12
- package/ai/dist/src/components/semiotic-network.js +0 -38
- package/ai/dist/src/components/semiotic-ordinal.js +0 -28
- package/ai/dist/src/components/semiotic-realtime.js +0 -30
- package/ai/dist/src/components/semiotic-server.js +0 -8
- package/ai/dist/src/components/semiotic-xy.js +0 -35
- package/ai/dist/src/components/semiotic.js +0 -109
- package/ai/dist/src/components/server/renderToStaticSVG.js +0 -594
- package/ai/dist/src/components/store/SelectionStore.js +0 -91
- package/ai/dist/src/components/store/ThemeStore.js +0 -78
- package/ai/dist/src/components/store/TooltipStore.js +0 -13
- package/ai/dist/src/components/store/createStore.js +0 -81
- package/ai/dist/src/components/store/useSelection.js +0 -133
- package/ai/dist/src/components/stream/CanvasHitTester.js +0 -164
- package/ai/dist/src/components/stream/DataSourceAdapter.js +0 -99
- package/ai/dist/src/components/stream/MarginalGraphics.js +0 -266
- package/ai/dist/src/components/stream/NetworkCanvasHitTester.js +0 -228
- package/ai/dist/src/components/stream/NetworkPipelineStore.js +0 -498
- package/ai/dist/src/components/stream/NetworkSVGOverlay.js +0 -70
- package/ai/dist/src/components/stream/NetworkSceneGraph.js +0 -38
- package/ai/dist/src/components/stream/OrdinalCanvasHitTester.js +0 -146
- package/ai/dist/src/components/stream/OrdinalPipelineStore.js +0 -786
- package/ai/dist/src/components/stream/OrdinalSVGOverlay.js +0 -130
- package/ai/dist/src/components/stream/ParticlePool.js +0 -174
- package/ai/dist/src/components/stream/PipelineStore.js +0 -1243
- package/ai/dist/src/components/stream/SVGOverlay.js +0 -129
- package/ai/dist/src/components/stream/SceneGraph.js +0 -132
- package/ai/dist/src/components/stream/StreamNetworkFrame.js +0 -561
- package/ai/dist/src/components/stream/StreamOrdinalFrame.js +0 -492
- package/ai/dist/src/components/stream/StreamXYFrame.js +0 -590
- package/ai/dist/src/components/stream/accessorUtils.js +0 -20
- package/ai/dist/src/components/stream/index.js +0 -32
- package/ai/dist/src/components/stream/layouts/chordLayoutPlugin.js +0 -352
- package/ai/dist/src/components/stream/layouts/forceLayoutPlugin.js +0 -230
- package/ai/dist/src/components/stream/layouts/hierarchyLayoutPlugin.js +0 -568
- package/ai/dist/src/components/stream/layouts/index.js +0 -28
- package/ai/dist/src/components/stream/layouts/sankeyLayoutPlugin.js +0 -245
- package/ai/dist/src/components/stream/networkTypes.js +0 -17
- package/ai/dist/src/components/stream/ordinalSceneBuilders/barScene.js +0 -126
- package/ai/dist/src/components/stream/ordinalSceneBuilders/connectorScene.js +0 -62
- package/ai/dist/src/components/stream/ordinalSceneBuilders/pieScene.js +0 -33
- package/ai/dist/src/components/stream/ordinalSceneBuilders/pointScene.js +0 -63
- package/ai/dist/src/components/stream/ordinalSceneBuilders/statisticalScene.js +0 -278
- package/ai/dist/src/components/stream/ordinalSceneBuilders/timelineScene.js +0 -30
- package/ai/dist/src/components/stream/ordinalSceneBuilders/types.js +0 -2
- package/ai/dist/src/components/stream/ordinalTypes.js +0 -2
- package/ai/dist/src/components/stream/renderers/areaCanvasRenderer.js +0 -48
- package/ai/dist/src/components/stream/renderers/barCanvasRenderer.js +0 -70
- package/ai/dist/src/components/stream/renderers/boxplotCanvasRenderer.js +0 -75
- package/ai/dist/src/components/stream/renderers/candlestickCanvasRenderer.js +0 -28
- package/ai/dist/src/components/stream/renderers/connectorCanvasRenderer.js +0 -47
- package/ai/dist/src/components/stream/renderers/heatmapCanvasRenderer.js +0 -31
- package/ai/dist/src/components/stream/renderers/lineCanvasRenderer.js +0 -140
- package/ai/dist/src/components/stream/renderers/networkArcRenderer.js +0 -38
- package/ai/dist/src/components/stream/renderers/networkCircleRenderer.js +0 -37
- package/ai/dist/src/components/stream/renderers/networkEdgeRenderer.js +0 -102
- package/ai/dist/src/components/stream/renderers/networkParticleRenderer.js +0 -63
- package/ai/dist/src/components/stream/renderers/networkRectRenderer.js +0 -35
- package/ai/dist/src/components/stream/renderers/pointCanvasRenderer.js +0 -38
- package/ai/dist/src/components/stream/renderers/swarmCanvasRenderer.js +0 -10
- package/ai/dist/src/components/stream/renderers/types.js +0 -2
- package/ai/dist/src/components/stream/renderers/violinCanvasRenderer.js +0 -47
- package/ai/dist/src/components/stream/renderers/waterfallCanvasRenderer.js +0 -38
- package/ai/dist/src/components/stream/renderers/wedgeCanvasRenderer.js +0 -33
- package/ai/dist/src/components/stream/types.js +0 -2
- package/ai/dist/src/components/types/annotationTypes.js +0 -2
- package/ai/dist/src/components/types/canvasTypes.js +0 -2
- package/ai/dist/src/components/types/generalTypes.js +0 -2
- package/ai/dist/src/components/types/interactionTypes.js +0 -2
- package/ai/dist/src/components/types/legendTypes.js +0 -2
- package/ai/dist/src/components/types/networkTypes.js +0 -2
- package/ai/dist/src/components/types/ordinalTypes.js +0 -2
- package/ai/dist/src/components/types/xyTypes.js +0 -2
- package/ai/dist/src/components/useBoundingRect.js +0 -24
- package/ai/dist/src/components/visualizationLayerBehavior/axis.js +0 -301
- package/ai/dist/src/components/visualizationLayerBehavior/general.js +0 -435
- package/ai/dist/src/setupTests.js +0 -4
- package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -25
- package/dist/Axis/Axis.d.ts +0 -7
- package/dist/Axis/axisTitle.d.ts +0 -10
- package/dist/Axis/index.d.ts +0 -2
- package/dist/Axis/summaryGraphic.d.ts +0 -17
- package/dist/Brush.d.ts +0 -12
- package/dist/DividedLine.d.ts +0 -16
- package/dist/TooltipPositioner/index.d.ts +0 -7
- package/dist/annotationLayerBehavior/annotationHandling.d.ts +0 -19
- package/dist/annotationLayerBehavior/d3labeler.d.ts +0 -9
- package/dist/annotationRules/baseRules.d.ts +0 -25
- package/dist/annotationRules/networkframeRules.d.ts +0 -48
- package/dist/annotationRules/xyframeRules.d.ts +0 -117
- package/dist/batchWork.d.ts +0 -6
- package/dist/constants/coordinateNames.d.ts +0 -8
- package/dist/constants/frame_props.d.ts +0 -13
- package/dist/data/dataFunctions.d.ts +0 -45
- package/dist/data/multiAccessorUtils.d.ts +0 -1
- package/dist/data/unflowedFunctions.d.ts +0 -1
- package/dist/generic_utilities/functions.d.ts +0 -1
- package/dist/geometry/areaDrawing.d.ts +0 -21
- package/dist/geometry/contourLayout.d.ts +0 -6
- package/dist/geometry/hexbinLayout.d.ts +0 -7
- package/dist/geometry/lineDrawing.d.ts +0 -71
- package/dist/geometry/summaryLayouts.d.ts +0 -45
- package/dist/index.d.ts +0 -1
- package/dist/network.js +0 -7495
- package/dist/network.js.map +0 -1
- package/dist/network.module.js +0 -7458
- package/dist/network.module.js.map +0 -1
- package/dist/ordinal.js +0 -6497
- package/dist/ordinal.js.map +0 -1
- package/dist/ordinal.module.js +0 -6465
- package/dist/ordinal.module.js.map +0 -1
- package/dist/processing/InteractionItems.d.ts +0 -13
- package/dist/processing/hierarchyUtils.d.ts +0 -16
- package/dist/processing/layouts/chordLayout.d.ts +0 -2
- package/dist/processing/layouts/forceLayout.d.ts +0 -3
- package/dist/processing/layouts/hierarchyLayout.d.ts +0 -10
- package/dist/processing/layouts/index.d.ts +0 -8
- package/dist/processing/layouts/sankeyLayout.d.ts +0 -8
- package/dist/processing/layouts/simpleLayouts.d.ts +0 -7
- package/dist/processing/layouts/types.d.ts +0 -17
- package/dist/processing/networkDefaults.d.ts +0 -36
- package/dist/realtime/renderers/barRenderer.d.ts +0 -2
- package/dist/realtime/renderers/candlestickRenderer.d.ts +0 -2
- package/dist/realtime/renderers/lineRenderer.d.ts +0 -2
- package/dist/realtime/renderers/swarmRenderer.d.ts +0 -2
- package/dist/realtime.js +0 -7072
- package/dist/realtime.js.map +0 -1
- package/dist/realtime.module.js +0 -7043
- package/dist/realtime.module.js.map +0 -1
- package/dist/semiotic-ai.js +0 -13323
- package/dist/semiotic-ai.js.map +0 -1
- package/dist/semiotic-ai.module.js +0 -13264
- package/dist/semiotic-ai.module.js.map +0 -1
- package/dist/semiotic-data.js +0 -141
- package/dist/semiotic-data.js.map +0 -1
- package/dist/semiotic-data.module.js +0 -136
- package/dist/semiotic-data.module.js.map +0 -1
- package/dist/semiotic.js +0 -16351
- package/dist/semiotic.js.map +0 -1
- package/dist/semiotic.module.js +0 -16265
- package/dist/semiotic.module.js.map +0 -1
- package/dist/server.js +0 -5191
- package/dist/server.js.map +0 -1
- package/dist/server.module.js +0 -5166
- package/dist/server.module.js.map +0 -1
- package/dist/stream/NetworkSceneGraph.d.ts +0 -14
- package/dist/stream/index.d.ts +0 -16
- package/dist/types/canvasTypes.d.ts +0 -9
- package/dist/types/xyTypes.d.ts +0 -24
- package/dist/useBoundingRect.d.ts +0 -2
- package/dist/visualizationLayerBehavior/axis.d.ts +0 -36
- package/dist/visualizationLayerBehavior/general.d.ts +0 -80
- package/dist/xy.js +0 -6993
- package/dist/xy.js.map +0 -1
- package/dist/xy.module.js +0 -6957
- package/dist/xy.module.js.map +0 -1
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.AreaChart = AreaChart;
|
|
41
|
-
const React = __importStar(require("react"));
|
|
42
|
-
const react_1 = require("react");
|
|
43
|
-
const StreamXYFrame_1 = __importDefault(require("../../stream/StreamXYFrame"));
|
|
44
|
-
const colorUtils_1 = require("../shared/colorUtils");
|
|
45
|
-
const hooks_1 = require("../shared/hooks");
|
|
46
|
-
const legendUtils_1 = require("../shared/legendUtils");
|
|
47
|
-
const Tooltip_1 = require("../../Tooltip/Tooltip");
|
|
48
|
-
const tooltipUtils_1 = require("../shared/tooltipUtils");
|
|
49
|
-
const ChartError_1 = __importDefault(require("../shared/ChartError"));
|
|
50
|
-
const validateChartData_1 = require("../shared/validateChartData");
|
|
51
|
-
const selectionUtils_1 = require("../shared/selectionUtils");
|
|
52
|
-
const useSelection_1 = require("../../store/useSelection");
|
|
53
|
-
const useSelection_2 = require("../../store/useSelection");
|
|
54
|
-
/**
|
|
55
|
-
* AreaChart - Visualize quantities over continuous intervals with overlapping filled areas
|
|
56
|
-
*
|
|
57
|
-
* Each series fills from its line down to the baseline. Multiple series overlap
|
|
58
|
-
* with transparency so all shapes remain visible.
|
|
59
|
-
*
|
|
60
|
-
* For stacked areas use {@link StackedAreaChart}.
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```tsx
|
|
64
|
-
* <AreaChart
|
|
65
|
-
* data={[
|
|
66
|
-
* {x: 1, y: 10, category: 'A'},
|
|
67
|
-
* {x: 2, y: 20, category: 'A'},
|
|
68
|
-
* {x: 1, y: 15, category: 'B'},
|
|
69
|
-
* {x: 2, y: 25, category: 'B'}
|
|
70
|
-
* ]}
|
|
71
|
-
* areaBy="category"
|
|
72
|
-
* colorBy="category"
|
|
73
|
-
* xLabel="Time"
|
|
74
|
-
* yLabel="Value"
|
|
75
|
-
* />
|
|
76
|
-
* ```
|
|
77
|
-
*/
|
|
78
|
-
function AreaChart(props) {
|
|
79
|
-
const { data, width = 600, height = 400, margin: userMargin, className, title, xLabel, yLabel, xFormat, yFormat, xAccessor = "x", yAccessor = "y", areaBy, lineDataAccessor = "coordinates", colorBy, colorScheme = "category10", curve = "monotoneX", areaOpacity = 0.7, showLine = true, lineWidth = 2, enableHover = true, showGrid = false, showLegend, tooltip, frameProps = {}, selection, linkedHover } = props;
|
|
80
|
-
const safeData = data || [];
|
|
81
|
-
// ── Selection hooks (always called, conditional logic inside) ──────────
|
|
82
|
-
const hoverConfig = (0, selectionUtils_1.normalizeLinkedHover)(linkedHover, colorBy ? [typeof colorBy === "string" ? colorBy : ""] : []);
|
|
83
|
-
const selectionHook = (0, useSelection_1.useSelection)({
|
|
84
|
-
name: selection?.name || "__unused__",
|
|
85
|
-
fields: []
|
|
86
|
-
});
|
|
87
|
-
const linkedHoverHook = (0, useSelection_2.useLinkedHover)({
|
|
88
|
-
name: hoverConfig?.name || "hover",
|
|
89
|
-
fields: hoverConfig?.fields || []
|
|
90
|
-
});
|
|
91
|
-
// Only use the hooks when the corresponding props are provided
|
|
92
|
-
const activeSelectionHook = selection ? { isActive: selectionHook.isActive, predicate: selectionHook.predicate } : null;
|
|
93
|
-
// ── Core chart logic ───────────────────────────────────────────────────
|
|
94
|
-
// Check if data is in area objects format (has lineDataAccessor field)
|
|
95
|
-
const isAreaObjectFormat = safeData[0]?.[lineDataAccessor] !== undefined;
|
|
96
|
-
// Transform data to line/area format if needed
|
|
97
|
-
const areaData = (0, react_1.useMemo)(() => {
|
|
98
|
-
if (isAreaObjectFormat) {
|
|
99
|
-
// Data is already in area objects format
|
|
100
|
-
return safeData;
|
|
101
|
-
}
|
|
102
|
-
if (areaBy) {
|
|
103
|
-
// Group data by areaBy field
|
|
104
|
-
const grouped = safeData.reduce((acc, d) => {
|
|
105
|
-
const key = typeof areaBy === "function" ? areaBy(d) : d[areaBy];
|
|
106
|
-
if (!acc[key]) {
|
|
107
|
-
const areaObj = { [lineDataAccessor]: [] };
|
|
108
|
-
// Add the grouping field
|
|
109
|
-
if (typeof areaBy === "string") {
|
|
110
|
-
areaObj[areaBy] = key;
|
|
111
|
-
}
|
|
112
|
-
acc[key] = areaObj;
|
|
113
|
-
}
|
|
114
|
-
acc[key][lineDataAccessor].push(d);
|
|
115
|
-
return acc;
|
|
116
|
-
}, {});
|
|
117
|
-
return Object.values(grouped);
|
|
118
|
-
}
|
|
119
|
-
// Single area - wrap in area object
|
|
120
|
-
return [{ [lineDataAccessor]: safeData }];
|
|
121
|
-
}, [safeData, areaBy, lineDataAccessor, isAreaObjectFormat]);
|
|
122
|
-
// Create color scale if colorBy is specified
|
|
123
|
-
const colorScale = (0, hooks_1.useColorScale)(safeData, colorBy, colorScheme);
|
|
124
|
-
// Area/line style function
|
|
125
|
-
const baseLineStyle = (0, react_1.useMemo)(() => {
|
|
126
|
-
return (d) => {
|
|
127
|
-
const baseStyle = {};
|
|
128
|
-
// Apply color
|
|
129
|
-
const color = colorBy ? (0, colorUtils_1.getColor)(d, colorBy, colorScale) : hooks_1.DEFAULT_COLOR;
|
|
130
|
-
baseStyle.fill = color;
|
|
131
|
-
baseStyle.fillOpacity = areaOpacity;
|
|
132
|
-
if (showLine) {
|
|
133
|
-
baseStyle.stroke = color;
|
|
134
|
-
baseStyle.strokeWidth = lineWidth;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
baseStyle.stroke = "none";
|
|
138
|
-
}
|
|
139
|
-
return baseStyle;
|
|
140
|
-
};
|
|
141
|
-
}, [colorBy, colorScale, areaOpacity, showLine, lineWidth]);
|
|
142
|
-
const lineStyle = (0, react_1.useMemo)(() => (0, selectionUtils_1.wrapStyleWithSelection)(baseLineStyle, activeSelectionHook, selection), [baseLineStyle, activeSelectionHook, selection]);
|
|
143
|
-
// Determine if we should show legend
|
|
144
|
-
const shouldShowLegend = showLegend !== undefined ? showLegend : areaData.length > 1;
|
|
145
|
-
// Build legend if needed
|
|
146
|
-
const legend = (0, react_1.useMemo)(() => {
|
|
147
|
-
if (!shouldShowLegend || !colorBy)
|
|
148
|
-
return undefined;
|
|
149
|
-
return (0, legendUtils_1.createLegend)({
|
|
150
|
-
data: areaData,
|
|
151
|
-
colorBy,
|
|
152
|
-
colorScale,
|
|
153
|
-
getColor: colorUtils_1.getColor
|
|
154
|
-
});
|
|
155
|
-
}, [shouldShowLegend, colorBy, areaData, colorScale]);
|
|
156
|
-
// Adjust margin for legend if present
|
|
157
|
-
const margin = (0, react_1.useMemo)(() => {
|
|
158
|
-
const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 };
|
|
159
|
-
const finalMargin = { ...defaultMargin, ...userMargin };
|
|
160
|
-
// If legend is present and right margin is too small, increase it
|
|
161
|
-
if (legend && finalMargin.right < 120) {
|
|
162
|
-
finalMargin.right = 120;
|
|
163
|
-
}
|
|
164
|
-
return finalMargin;
|
|
165
|
-
}, [userMargin, legend]);
|
|
166
|
-
// ── Hover behavior ─────────────────────────────────────────────────────
|
|
167
|
-
const customHoverBehavior = (0, react_1.useCallback)((d) => {
|
|
168
|
-
if (linkedHover) {
|
|
169
|
-
linkedHoverHook.onHover(d);
|
|
170
|
-
}
|
|
171
|
-
}, [linkedHover, linkedHoverHook]);
|
|
172
|
-
// Default tooltip showing all configured fields
|
|
173
|
-
const groupField = areaBy || colorBy;
|
|
174
|
-
const defaultTooltipContent = (0, react_1.useMemo)(() => (0, tooltipUtils_1.buildDefaultTooltip)([
|
|
175
|
-
{ label: xLabel || (0, tooltipUtils_1.accessorName)(xAccessor), accessor: xAccessor, role: "x" },
|
|
176
|
-
{ label: yLabel || (0, tooltipUtils_1.accessorName)(yAccessor), accessor: yAccessor, role: "y" },
|
|
177
|
-
...(groupField ? [{ label: (0, tooltipUtils_1.accessorName)(groupField), accessor: groupField, role: "group" }] : []),
|
|
178
|
-
]), [xAccessor, yAccessor, xLabel, yLabel, groupField]);
|
|
179
|
-
// Validate data (after all hooks)
|
|
180
|
-
const error = (0, validateChartData_1.validateArrayData)({
|
|
181
|
-
componentName: "AreaChart",
|
|
182
|
-
data: safeData,
|
|
183
|
-
accessors: {
|
|
184
|
-
xAccessor,
|
|
185
|
-
yAccessor,
|
|
186
|
-
},
|
|
187
|
-
});
|
|
188
|
-
if (error)
|
|
189
|
-
return React.createElement(ChartError_1.default, { componentName: "AreaChart", message: error, width: width, height: height });
|
|
190
|
-
// Flatten area data into a single array for StreamXYFrame
|
|
191
|
-
const flattenedData = (0, react_1.useMemo)(() => {
|
|
192
|
-
if (isAreaObjectFormat || areaBy) {
|
|
193
|
-
return areaData.flatMap((area) => {
|
|
194
|
-
const coords = area[lineDataAccessor] || [];
|
|
195
|
-
if (areaBy && typeof areaBy === "string") {
|
|
196
|
-
return coords.map((c) => ({ ...c, [areaBy]: area[areaBy] }));
|
|
197
|
-
}
|
|
198
|
-
return coords;
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
return safeData;
|
|
202
|
-
}, [areaData, lineDataAccessor, isAreaObjectFormat, areaBy, safeData]);
|
|
203
|
-
// Build StreamXYFrame props
|
|
204
|
-
const streamProps = {
|
|
205
|
-
chartType: "area",
|
|
206
|
-
data: flattenedData,
|
|
207
|
-
xAccessor,
|
|
208
|
-
yAccessor,
|
|
209
|
-
groupAccessor: areaBy || undefined,
|
|
210
|
-
curve,
|
|
211
|
-
lineStyle,
|
|
212
|
-
size: [width, height],
|
|
213
|
-
margin,
|
|
214
|
-
showAxes: true,
|
|
215
|
-
xLabel,
|
|
216
|
-
yLabel,
|
|
217
|
-
xFormat,
|
|
218
|
-
yFormat,
|
|
219
|
-
enableHover,
|
|
220
|
-
showGrid,
|
|
221
|
-
...(legend && { legend }),
|
|
222
|
-
...(title && { title }),
|
|
223
|
-
...(className && { className }),
|
|
224
|
-
tooltipContent: (tooltip ? (0, Tooltip_1.normalizeTooltip)(tooltip) : defaultTooltipContent),
|
|
225
|
-
...(linkedHover && { customHoverBehavior }),
|
|
226
|
-
...frameProps
|
|
227
|
-
};
|
|
228
|
-
return React.createElement(StreamXYFrame_1.default, { ...streamProps });
|
|
229
|
-
}
|
|
230
|
-
AreaChart.displayName = "AreaChart";
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.BubbleChart = BubbleChart;
|
|
41
|
-
const React = __importStar(require("react"));
|
|
42
|
-
const react_1 = require("react");
|
|
43
|
-
const StreamXYFrame_1 = __importDefault(require("../../stream/StreamXYFrame"));
|
|
44
|
-
const colorUtils_1 = require("../shared/colorUtils");
|
|
45
|
-
const hooks_1 = require("../shared/hooks");
|
|
46
|
-
const legendUtils_1 = require("../shared/legendUtils");
|
|
47
|
-
const Tooltip_1 = require("../../Tooltip/Tooltip");
|
|
48
|
-
const tooltipUtils_1 = require("../shared/tooltipUtils");
|
|
49
|
-
const ChartError_1 = __importDefault(require("../shared/ChartError"));
|
|
50
|
-
const validateChartData_1 = require("../shared/validateChartData");
|
|
51
|
-
const selectionUtils_1 = require("../shared/selectionUtils");
|
|
52
|
-
const useSelection_1 = require("../../store/useSelection");
|
|
53
|
-
const useSelection_2 = require("../../store/useSelection");
|
|
54
|
-
const useSelection_3 = require("../../store/useSelection");
|
|
55
|
-
/**
|
|
56
|
-
* BubbleChart - Visualize three dimensions of data using x, y, and size
|
|
57
|
-
*
|
|
58
|
-
* A simplified wrapper around StreamXYFrame for creating bubble charts. Perfect for
|
|
59
|
-
* showing relationships between three continuous variables or comparing
|
|
60
|
-
* magnitudes across categories.
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```tsx
|
|
64
|
-
* // Simple bubble chart
|
|
65
|
-
* <BubbleChart
|
|
66
|
-
* data={[
|
|
67
|
-
* {x: 1, y: 10, size: 50, name: 'A'},
|
|
68
|
-
* {x: 2, y: 20, size: 30, name: 'B'},
|
|
69
|
-
* {x: 3, y: 15, size: 70, name: 'C'}
|
|
70
|
-
* ]}
|
|
71
|
-
* sizeBy="size"
|
|
72
|
-
* xLabel="Time"
|
|
73
|
-
* yLabel="Value"
|
|
74
|
-
* />
|
|
75
|
-
* ```
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* ```tsx
|
|
79
|
-
* // With color encoding
|
|
80
|
-
* <BubbleChart
|
|
81
|
-
* data={data}
|
|
82
|
-
* sizeBy="population"
|
|
83
|
-
* colorBy="continent"
|
|
84
|
-
* sizeRange={[5, 50]}
|
|
85
|
-
* bubbleOpacity={0.7}
|
|
86
|
-
* xLabel="GDP per Capita"
|
|
87
|
-
* yLabel="Life Expectancy"
|
|
88
|
-
* />
|
|
89
|
-
* ```
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```tsx
|
|
93
|
-
* // Advanced: Override StreamXYFrame props
|
|
94
|
-
* <BubbleChart
|
|
95
|
-
* data={data}
|
|
96
|
-
* sizeBy="value"
|
|
97
|
-
* frameProps={{
|
|
98
|
-
* customPointMark: ({ d }) => <circle r={d.r} fill="gold" />
|
|
99
|
-
* }}
|
|
100
|
-
* />
|
|
101
|
-
* ```
|
|
102
|
-
*
|
|
103
|
-
* @remarks
|
|
104
|
-
* This component wraps {@link StreamXYFrame} with sensible defaults for bubble charts.
|
|
105
|
-
* For more advanced features like custom marks, annotations, or complex interactions,
|
|
106
|
-
* use StreamXYFrame directly.
|
|
107
|
-
*
|
|
108
|
-
* **Breadcrumb to advanced usage:**
|
|
109
|
-
* - Use the `frameProps` prop to pass any StreamXYFrame prop
|
|
110
|
-
* - See StreamXYFrame documentation: https://semiotic.nteract.io/guides/xy-frame
|
|
111
|
-
* - All StreamXYFrame props are available via `frameProps`
|
|
112
|
-
*
|
|
113
|
-
* @param props - BubbleChart configuration
|
|
114
|
-
* @returns Rendered bubble chart
|
|
115
|
-
*/
|
|
116
|
-
function BubbleChart(props) {
|
|
117
|
-
const { data, width = 600, height = 400, margin: userMargin, className, title, xLabel, yLabel, xFormat, yFormat, xAccessor = "x", yAccessor = "y", sizeBy, sizeRange = [5, 40], colorBy, colorScheme = "category10", bubbleOpacity = 0.6, bubbleStrokeWidth = 1, bubbleStrokeColor = "white", enableHover = true, showGrid = false, showLegend, tooltip, marginalGraphics, frameProps = {}, selection, linkedHover, linkedBrush } = props;
|
|
118
|
-
const safeData = data || [];
|
|
119
|
-
// ── Selection hooks (always called, conditional logic inside) ──────────
|
|
120
|
-
const hoverConfig = (0, selectionUtils_1.normalizeLinkedHover)(linkedHover, colorBy ? [typeof colorBy === "string" ? colorBy : ""] : []);
|
|
121
|
-
const brushConfig = (0, selectionUtils_1.normalizeLinkedBrush)(linkedBrush);
|
|
122
|
-
const selectionHook = (0, useSelection_1.useSelection)({
|
|
123
|
-
name: selection?.name || "__unused__",
|
|
124
|
-
fields: []
|
|
125
|
-
});
|
|
126
|
-
const linkedHoverHook = (0, useSelection_2.useLinkedHover)({
|
|
127
|
-
name: hoverConfig?.name || "hover",
|
|
128
|
-
fields: hoverConfig?.fields || []
|
|
129
|
-
});
|
|
130
|
-
const brushHook = (0, useSelection_3.useBrushSelection)({
|
|
131
|
-
name: brushConfig?.name || "__unused_brush__",
|
|
132
|
-
xField: brushConfig?.xField || (typeof xAccessor === "string" ? xAccessor : undefined),
|
|
133
|
-
yField: brushConfig?.yField || (typeof yAccessor === "string" ? yAccessor : undefined)
|
|
134
|
-
});
|
|
135
|
-
// Only use the hooks when the corresponding props are provided
|
|
136
|
-
const activeSelectionHook = selection ? { isActive: selectionHook.isActive, predicate: selectionHook.predicate } : null;
|
|
137
|
-
// ── Core chart logic ───────────────────────────────────────────────────
|
|
138
|
-
// Create color scale if colorBy is specified
|
|
139
|
-
const colorScale = (0, hooks_1.useColorScale)(safeData, colorBy, colorScheme);
|
|
140
|
-
// Calculate size domain
|
|
141
|
-
const sizeDomain = (0, react_1.useMemo)(() => {
|
|
142
|
-
const sizes = safeData.map((d) => {
|
|
143
|
-
if (typeof sizeBy === "function") {
|
|
144
|
-
return sizeBy(d);
|
|
145
|
-
}
|
|
146
|
-
return d[sizeBy];
|
|
147
|
-
});
|
|
148
|
-
return [Math.min(...sizes), Math.max(...sizes)];
|
|
149
|
-
}, [safeData, sizeBy]);
|
|
150
|
-
// Point style function
|
|
151
|
-
const basePointStyle = (0, react_1.useMemo)(() => {
|
|
152
|
-
return (d) => {
|
|
153
|
-
const baseStyle = {
|
|
154
|
-
fillOpacity: bubbleOpacity,
|
|
155
|
-
strokeWidth: bubbleStrokeWidth,
|
|
156
|
-
stroke: bubbleStrokeColor
|
|
157
|
-
};
|
|
158
|
-
// Apply color
|
|
159
|
-
if (colorBy) {
|
|
160
|
-
baseStyle.fill = (0, colorUtils_1.getColor)(d, colorBy, colorScale);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
baseStyle.fill = hooks_1.DEFAULT_COLOR;
|
|
164
|
-
}
|
|
165
|
-
// Apply size
|
|
166
|
-
baseStyle.r = (0, colorUtils_1.getSize)(d, sizeBy, sizeRange, sizeDomain);
|
|
167
|
-
return baseStyle;
|
|
168
|
-
};
|
|
169
|
-
}, [colorBy, colorScale, sizeBy, sizeRange, sizeDomain, bubbleOpacity, bubbleStrokeWidth, bubbleStrokeColor]);
|
|
170
|
-
const pointStyle = (0, react_1.useMemo)(() => (0, selectionUtils_1.wrapStyleWithSelection)(basePointStyle, activeSelectionHook, selection), [basePointStyle, activeSelectionHook, selection]);
|
|
171
|
-
// Determine if we should show legend
|
|
172
|
-
const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy;
|
|
173
|
-
// Build legend if needed
|
|
174
|
-
const legend = (0, react_1.useMemo)(() => {
|
|
175
|
-
if (!shouldShowLegend || !colorBy)
|
|
176
|
-
return undefined;
|
|
177
|
-
return (0, legendUtils_1.createLegend)({
|
|
178
|
-
data: safeData,
|
|
179
|
-
colorBy,
|
|
180
|
-
colorScale,
|
|
181
|
-
getColor: colorUtils_1.getColor,
|
|
182
|
-
strokeColor: bubbleStrokeColor,
|
|
183
|
-
strokeWidth: bubbleStrokeWidth
|
|
184
|
-
});
|
|
185
|
-
}, [shouldShowLegend, colorBy, safeData, colorScale, bubbleStrokeColor, bubbleStrokeWidth]);
|
|
186
|
-
// Adjust margin for legend if present
|
|
187
|
-
const margin = (0, react_1.useMemo)(() => {
|
|
188
|
-
const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 };
|
|
189
|
-
const finalMargin = { ...defaultMargin, ...userMargin };
|
|
190
|
-
// If legend is present and right margin is too small, increase it
|
|
191
|
-
if (legend && finalMargin.right < 120) {
|
|
192
|
-
finalMargin.right = 120;
|
|
193
|
-
}
|
|
194
|
-
return finalMargin;
|
|
195
|
-
}, [userMargin, legend]);
|
|
196
|
-
// ── Hover behavior ─────────────────────────────────────────────────────
|
|
197
|
-
const customHoverBehavior = (0, react_1.useCallback)((d) => {
|
|
198
|
-
if (linkedHover) {
|
|
199
|
-
linkedHoverHook.onHover(d);
|
|
200
|
-
}
|
|
201
|
-
}, [linkedHover, linkedHoverHook]);
|
|
202
|
-
// Default tooltip showing all configured fields
|
|
203
|
-
const defaultTooltipContent = (0, react_1.useMemo)(() => (0, tooltipUtils_1.buildDefaultTooltip)([
|
|
204
|
-
{ label: xLabel || (0, tooltipUtils_1.accessorName)(xAccessor), accessor: xAccessor, role: "x" },
|
|
205
|
-
{ label: yLabel || (0, tooltipUtils_1.accessorName)(yAccessor), accessor: yAccessor, role: "y" },
|
|
206
|
-
{ label: (0, tooltipUtils_1.accessorName)(sizeBy), accessor: sizeBy, role: "size" },
|
|
207
|
-
...(colorBy ? [{ label: (0, tooltipUtils_1.accessorName)(colorBy), accessor: colorBy, role: "color" }] : []),
|
|
208
|
-
]), [xAccessor, yAccessor, xLabel, yLabel, sizeBy, colorBy]);
|
|
209
|
-
// Validate data (after all hooks)
|
|
210
|
-
const error = (0, validateChartData_1.validateArrayData)({
|
|
211
|
-
componentName: "BubbleChart",
|
|
212
|
-
data: safeData,
|
|
213
|
-
accessors: {
|
|
214
|
-
xAccessor,
|
|
215
|
-
yAccessor,
|
|
216
|
-
},
|
|
217
|
-
requiredProps: { sizeBy },
|
|
218
|
-
});
|
|
219
|
-
if (error)
|
|
220
|
-
return React.createElement(ChartError_1.default, { componentName: "BubbleChart", message: error, width: width, height: height });
|
|
221
|
-
// Build StreamXYFrame props
|
|
222
|
-
const streamProps = {
|
|
223
|
-
chartType: "bubble",
|
|
224
|
-
data: safeData,
|
|
225
|
-
xAccessor,
|
|
226
|
-
yAccessor,
|
|
227
|
-
colorAccessor: colorBy || undefined,
|
|
228
|
-
sizeAccessor: sizeBy,
|
|
229
|
-
sizeRange,
|
|
230
|
-
pointStyle,
|
|
231
|
-
colorScheme,
|
|
232
|
-
size: [width, height],
|
|
233
|
-
margin,
|
|
234
|
-
showAxes: true,
|
|
235
|
-
xLabel,
|
|
236
|
-
yLabel,
|
|
237
|
-
xFormat,
|
|
238
|
-
yFormat,
|
|
239
|
-
enableHover,
|
|
240
|
-
showGrid,
|
|
241
|
-
...(legend && { legend }),
|
|
242
|
-
...(title && { title }),
|
|
243
|
-
...(className && { className }),
|
|
244
|
-
tooltipContent: (tooltip ? (0, Tooltip_1.normalizeTooltip)(tooltip) : defaultTooltipContent),
|
|
245
|
-
...(linkedHover && { customHoverBehavior }),
|
|
246
|
-
...(marginalGraphics && { marginalGraphics }),
|
|
247
|
-
...frameProps
|
|
248
|
-
};
|
|
249
|
-
return React.createElement(StreamXYFrame_1.default, { ...streamProps });
|
|
250
|
-
}
|
|
251
|
-
BubbleChart.displayName = "BubbleChart";
|