semiotic 2.0.2 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +530 -0
- package/README.md +190 -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 +373 -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/DividedLine.js +65 -0
- package/ai/dist/src/components/FacetController.js +259 -0
- package/ai/dist/src/components/Frame.js +139 -0
- package/ai/dist/src/components/InteractionLayer.js +328 -0
- package/ai/dist/src/components/Legend.js +140 -0
- package/ai/dist/src/components/MiniMap.js +75 -0
- package/ai/dist/src/components/MinimapXYFrame.js +99 -0
- package/ai/dist/src/components/NetworkFrame.js +335 -0
- package/ai/dist/src/components/OrdinalFrame.js +437 -0
- package/ai/dist/src/components/ResponsiveFrame.js +68 -0
- package/ai/dist/src/components/ResponsiveMinimapXYFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveNetworkFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveOrdinalFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveXYFrame.js +10 -0
- package/ai/dist/src/components/SparkFrame.js +113 -0
- package/ai/dist/src/components/SparkNetworkFrame.js +11 -0
- package/ai/dist/src/components/SparkOrdinalFrame.js +11 -0
- package/ai/dist/src/components/SparkXYFrame.js +11 -0
- package/ai/dist/src/components/Tooltip/Tooltip.js +304 -0
- package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
- package/ai/dist/src/components/VisualizationLayer.js +395 -0
- package/ai/dist/src/components/XYFrame.js +524 -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 +198 -0
- package/ai/dist/src/components/annotationRules/orframeRules.js +695 -0
- package/ai/dist/src/components/annotationRules/xyframeRules.js +299 -0
- package/ai/dist/src/components/batchWork.js +35 -0
- package/ai/dist/src/components/charts/index.js +96 -0
- package/ai/dist/src/components/charts/network/ChordDiagram.js +245 -0
- package/ai/dist/src/components/charts/network/CirclePack.js +177 -0
- package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +248 -0
- package/ai/dist/src/components/charts/network/SankeyDiagram.js +305 -0
- package/ai/dist/src/components/charts/network/TreeDiagram.js +268 -0
- package/ai/dist/src/components/charts/network/Treemap.js +177 -0
- package/ai/dist/src/components/charts/ordinal/BarChart.js +191 -0
- package/ai/dist/src/components/charts/ordinal/BoxPlot.js +235 -0
- package/ai/dist/src/components/charts/ordinal/DonutChart.js +178 -0
- package/ai/dist/src/components/charts/ordinal/DotPlot.js +194 -0
- package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +194 -0
- package/ai/dist/src/components/charts/ordinal/PieChart.js +155 -0
- package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +213 -0
- package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +219 -0
- package/ai/dist/src/components/charts/realtime/RealtimeBarChart.js +91 -0
- package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +73 -0
- package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +85 -0
- package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +86 -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 +176 -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/types.js +2 -0
- package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
- package/ai/dist/src/components/charts/shared/validateProps.js +640 -0
- package/ai/dist/src/components/charts/xy/AreaChart.js +220 -0
- package/ai/dist/src/components/charts/xy/BubbleChart.js +222 -0
- package/ai/dist/src/components/charts/xy/Heatmap.js +230 -0
- package/ai/dist/src/components/charts/xy/LineChart.js +302 -0
- package/ai/dist/src/components/charts/xy/Scatterplot.js +136 -0
- package/ai/dist/src/components/charts/xy/StackedAreaChart.js +220 -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/constants/jsx.js +71 -0
- package/ai/dist/src/components/data/dataFunctions.js +473 -0
- package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
- package/ai/dist/src/components/data/networkPipelineCache.js +43 -0
- package/ai/dist/src/components/data/ordinalPipelineCache.js +53 -0
- package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
- package/ai/dist/src/components/data/xyPipelineCache.js +49 -0
- package/ai/dist/src/components/generic_utilities/functions.js +5 -0
- package/ai/dist/src/components/index.js +145 -0
- package/ai/dist/src/components/interactionLayerBehavior/InteractionCanvas.js +128 -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/network.js +771 -0
- package/ai/dist/src/components/processing/networkDefaults.js +39 -0
- package/ai/dist/src/components/processing/networkLayoutHelpers.js +98 -0
- package/ai/dist/src/components/processing/ordinal.js +889 -0
- package/ai/dist/src/components/processing/ordinalConstants.js +23 -0
- package/ai/dist/src/components/processing/ordinalOverlays.js +88 -0
- package/ai/dist/src/components/processing/ordinalRenderPipeline.js +196 -0
- package/ai/dist/src/components/processing/xyDrawing.js +484 -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/RealtimeFrame.js +710 -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 +66 -0
- package/ai/dist/src/components/semiotic-network.js +30 -0
- package/ai/dist/src/components/semiotic-ordinal.js +28 -0
- package/ai/dist/src/components/semiotic-realtime.js +37 -0
- package/ai/dist/src/components/semiotic-server.js +8 -0
- package/ai/dist/src/components/semiotic-xy.js +41 -0
- package/ai/dist/src/components/semiotic.js +101 -0
- package/ai/dist/src/components/server/renderToStaticSVG.js +392 -0
- package/ai/dist/src/components/store/TooltipStore.js +13 -0
- package/ai/dist/src/components/store/createStore.js +77 -0
- package/ai/dist/src/components/svg/SvgHelper.js +308 -0
- package/ai/dist/src/components/svg/areaDrawing.js +312 -0
- package/ai/dist/src/components/svg/boxplotRenderer.js +441 -0
- package/ai/dist/src/components/svg/bucketizedRenderer.js +677 -0
- package/ai/dist/src/components/svg/ckbinsRenderer.js +92 -0
- package/ai/dist/src/components/svg/ckmeans.js +238 -0
- package/ai/dist/src/components/svg/contourLayout.js +73 -0
- package/ai/dist/src/components/svg/contourRenderer.js +53 -0
- package/ai/dist/src/components/svg/edgeGenerators.js +181 -0
- package/ai/dist/src/components/svg/frameFunctions.js +579 -0
- package/ai/dist/src/components/svg/graphAlgorithms.js +138 -0
- package/ai/dist/src/components/svg/hexbinLayout.js +163 -0
- package/ai/dist/src/components/svg/lineDrawing.js +427 -0
- package/ai/dist/src/components/svg/networkDrawing.js +207 -0
- package/ai/dist/src/components/svg/nodeGenerators.js +131 -0
- package/ai/dist/src/components/svg/pieceDrawing.js +110 -0
- package/ai/dist/src/components/svg/pieceLayouts.js +588 -0
- package/ai/dist/src/components/svg/sankeyLinks.js +143 -0
- package/ai/dist/src/components/svg/summaryAxis.js +48 -0
- package/ai/dist/src/components/svg/summaryLayouts.js +202 -0
- package/ai/dist/src/components/svg/swarmLayout.js +128 -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/useDerivedStateFromProps.js +25 -0
- package/ai/dist/src/components/useLegacyUnmountCallback.js +21 -0
- package/ai/dist/src/components/visualizationLayerBehavior/axis.js +249 -0
- package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
- package/ai/dist/src/setupTests.js +4 -0
- package/ai/examples.md +394 -0
- package/ai/schema.json +1178 -0
- package/ai/system-prompt.md +38 -0
- package/dist/Annotation.d.ts +3 -0
- package/dist/AnnotationLayer/AnnotationLayer.d.ts +25 -0
- package/dist/Axis/Axis.d.ts +7 -0
- package/dist/Axis/axisTitle.d.ts +10 -0
- package/dist/Axis/index.d.ts +2 -0
- package/dist/Axis/summaryGraphic.d.ts +17 -0
- package/dist/Brush.d.ts +12 -0
- package/dist/DividedLine.d.ts +16 -0
- package/dist/FacetController.d.ts +12 -0
- package/dist/Frame.d.ts +2 -0
- package/dist/InteractionLayer.d.ts +3 -0
- package/dist/Legend.d.ts +3 -0
- package/dist/MiniMap.d.ts +14 -0
- package/dist/MinimapXYFrame.d.ts +10 -0
- package/dist/NetworkFrame.d.ts +8 -0
- package/dist/OrdinalFrame.d.ts +8 -0
- package/dist/ResponsiveFrame.d.ts +22 -0
- package/dist/ResponsiveMinimapXYFrame.d.ts +3 -0
- package/dist/ResponsiveNetworkFrame.d.ts +3 -0
- package/dist/ResponsiveOrdinalFrame.d.ts +3 -0
- package/dist/ResponsiveXYFrame.d.ts +3 -0
- package/dist/SparkFrame.d.ts +14 -0
- package/dist/SparkNetworkFrame.d.ts +5 -0
- package/dist/SparkOrdinalFrame.d.ts +5 -0
- package/dist/SparkXYFrame.d.ts +5 -0
- package/dist/Tooltip/Tooltip.d.ts +141 -0
- package/dist/TooltipPositioner/index.d.ts +7 -0
- package/dist/VisualizationLayer.d.ts +33 -0
- package/dist/XYFrame.d.ts +8 -0
- package/dist/annotationLayerBehavior/annotationHandling.d.ts +19 -0
- package/dist/annotationLayerBehavior/d3labeler.d.ts +9 -0
- package/dist/annotationRules/baseRules.d.ts +25 -0
- package/dist/annotationRules/networkframeRules.d.ts +48 -0
- package/dist/annotationRules/orframeRules.d.ts +103 -0
- package/dist/annotationRules/xyframeRules.d.ts +117 -0
- package/dist/batchWork.d.ts +6 -0
- package/dist/charts/index.d.ts +62 -0
- package/dist/charts/network/ChordDiagram.d.ts +181 -0
- package/dist/charts/network/CirclePack.d.ts +103 -0
- package/dist/charts/network/ForceDirectedGraph.d.ts +192 -0
- package/dist/charts/network/SankeyDiagram.d.ts +195 -0
- package/dist/charts/network/TreeDiagram.d.ts +200 -0
- package/dist/charts/network/Treemap.d.ts +98 -0
- package/dist/charts/ordinal/BarChart.d.ts +119 -0
- package/dist/charts/ordinal/BoxPlot.d.ts +125 -0
- package/dist/charts/ordinal/DonutChart.d.ts +95 -0
- package/dist/charts/ordinal/DotPlot.d.ts +128 -0
- package/dist/charts/ordinal/GroupedBarChart.d.ts +113 -0
- package/dist/charts/ordinal/PieChart.d.ts +83 -0
- package/dist/charts/ordinal/StackedBarChart.d.ts +119 -0
- package/dist/charts/ordinal/SwarmPlot.d.ts +137 -0
- package/dist/charts/realtime/RealtimeBarChart.d.ts +102 -0
- package/dist/charts/realtime/RealtimeLineChart.d.ts +78 -0
- package/dist/charts/realtime/RealtimeSwarmChart.d.ts +88 -0
- package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +85 -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 +82 -0
- package/dist/charts/shared/hooks.d.ts +20 -0
- package/dist/charts/shared/legendUtils.d.ts +32 -0
- package/dist/charts/shared/types.d.ts +58 -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 +127 -0
- package/dist/charts/xy/BubbleChart.d.ts +157 -0
- package/dist/charts/xy/Heatmap.d.ts +153 -0
- package/dist/charts/xy/LineChart.d.ts +193 -0
- package/dist/charts/xy/Scatterplot.d.ts +50 -0
- package/dist/charts/xy/StackedAreaChart.d.ts +131 -0
- package/dist/constants/coordinateNames.d.ts +8 -0
- package/dist/constants/frame_props.d.ts +13 -0
- package/dist/constants/jsx.d.ts +19 -0
- package/dist/data/dataFunctions.d.ts +45 -0
- package/dist/data/multiAccessorUtils.d.ts +1 -0
- package/dist/data/networkPipelineCache.d.ts +27 -0
- package/dist/data/ordinalPipelineCache.d.ts +33 -0
- package/dist/data/unflowedFunctions.d.ts +1 -0
- package/dist/data/xyPipelineCache.d.ts +35 -0
- package/dist/generic_utilities/functions.d.ts +1 -0
- package/dist/index.d.ts +133 -0
- package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +20 -0
- package/dist/network.js +8520 -0
- package/dist/network.js.map +1 -0
- package/dist/network.min.js +1 -0
- package/dist/network.module.js +8484 -0
- package/dist/network.module.js.map +1 -0
- package/dist/network.module.min.js +1 -0
- package/dist/ordinal.js +9276 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/ordinal.min.js +1 -0
- package/dist/ordinal.module.js +9242 -0
- package/dist/ordinal.module.js.map +1 -0
- package/dist/ordinal.module.min.js +1 -0
- package/dist/processing/InteractionItems.d.ts +13 -0
- 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/network.d.ts +111 -0
- package/dist/processing/networkDefaults.d.ts +36 -0
- package/dist/processing/networkLayoutHelpers.d.ts +54 -0
- package/dist/processing/ordinal.d.ts +102 -0
- package/dist/processing/ordinalConstants.d.ts +33 -0
- package/dist/processing/ordinalOverlays.d.ts +33 -0
- package/dist/processing/ordinalRenderPipeline.d.ts +148 -0
- package/dist/processing/xyDrawing.d.ts +140 -0
- package/dist/realtime/BinAccumulator.d.ts +8 -0
- package/dist/realtime/IncrementalExtent.d.ts +13 -0
- package/dist/realtime/RealtimeFrame.d.ts +4 -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 +1598 -0
- package/dist/realtime.js.map +1 -0
- package/dist/realtime.min.js +1 -0
- package/dist/realtime.module.js +1566 -0
- package/dist/realtime.module.js.map +1 -0
- package/dist/realtime.module.min.js +1 -0
- package/dist/semiotic-ai.d.ts +28 -0
- package/dist/semiotic-ai.js +18722 -0
- package/dist/semiotic-ai.js.map +1 -0
- package/dist/semiotic-ai.min.js +1 -0
- package/dist/semiotic-ai.module.js +18668 -0
- package/dist/semiotic-ai.module.js.map +1 -0
- package/dist/semiotic-ai.module.min.js +1 -0
- package/dist/semiotic-network.d.ts +19 -0
- package/dist/semiotic-ordinal.d.ts +18 -0
- package/dist/semiotic-realtime.d.ts +23 -0
- package/dist/semiotic-server.d.ts +1 -0
- package/dist/semiotic-xy.d.ts +24 -0
- package/dist/semiotic.d.ts +51 -0
- package/dist/semiotic.js +18723 -12996
- package/dist/semiotic.js.map +1 -0
- package/dist/semiotic.min.js +1 -0
- package/dist/semiotic.module.js +18666 -12965
- 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 +8360 -0
- package/dist/server.js.map +1 -0
- package/dist/server.min.js +1 -0
- package/dist/server.module.js +8331 -0
- package/dist/server.module.js.map +1 -0
- package/dist/server.module.min.js +1 -0
- package/dist/store/TooltipStore.d.ts +2 -0
- package/dist/store/createStore.d.ts +1 -0
- package/dist/svg/SvgHelper.d.ts +33 -0
- package/dist/svg/areaDrawing.d.ts +21 -0
- package/dist/svg/boxplotRenderer.d.ts +15 -0
- package/dist/svg/bucketizedRenderer.d.ts +16 -0
- package/dist/svg/ckbinsRenderer.d.ts +20 -0
- package/dist/svg/ckmeans.d.ts +69 -0
- package/dist/svg/contourLayout.d.ts +6 -0
- package/dist/svg/contourRenderer.d.ts +12 -0
- package/dist/svg/edgeGenerators.d.ts +51 -0
- package/dist/svg/frameFunctions.d.ts +108 -0
- package/dist/svg/graphAlgorithms.d.ts +14 -0
- package/dist/svg/hexbinLayout.d.ts +7 -0
- package/dist/svg/lineDrawing.d.ts +99 -0
- package/dist/svg/networkDrawing.d.ts +16 -0
- package/dist/svg/nodeGenerators.d.ts +58 -0
- package/dist/svg/pieceDrawing.d.ts +12 -0
- package/dist/svg/pieceLayouts.d.ts +53 -0
- package/dist/svg/sankeyLinks.d.ts +3 -0
- package/dist/svg/summaryAxis.d.ts +6 -0
- package/dist/svg/summaryLayouts.d.ts +53 -0
- package/dist/svg/swarmLayout.d.ts +13 -0
- package/dist/types/annotationTypes.d.ts +135 -0
- package/dist/types/canvasTypes.d.ts +9 -0
- package/dist/types/generalTypes.d.ts +238 -0
- package/dist/types/interactionTypes.d.ts +72 -0
- package/dist/types/legendTypes.d.ts +20 -0
- package/dist/types/networkTypes.d.ts +175 -0
- package/dist/types/ordinalTypes.d.ts +112 -0
- package/dist/types/xyTypes.d.ts +115 -0
- package/dist/useBoundingRect.d.ts +2 -0
- package/dist/useDerivedStateFromProps.d.ts +1 -0
- package/dist/useLegacyUnmountCallback.d.ts +2 -0
- package/dist/visualizationLayerBehavior/axis.d.ts +36 -0
- package/dist/visualizationLayerBehavior/general.d.ts +80 -0
- package/dist/xy.js +7944 -0
- package/dist/xy.js.map +1 -0
- package/dist/xy.min.js +1 -0
- package/dist/xy.module.js +7903 -0
- package/dist/xy.module.js.map +1 -0
- package/dist/xy.module.min.js +1 -0
- package/package.json +116 -65
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { NetworkFrameProps } from "../../types/networkTypes";
|
|
3
|
+
import type { BaseChartProps, ChartAccessor } from "../shared/types";
|
|
4
|
+
import { type TooltipProp } from "../../Tooltip/Tooltip";
|
|
5
|
+
/**
|
|
6
|
+
* ForceDirectedGraph component props
|
|
7
|
+
*/
|
|
8
|
+
export interface ForceDirectedGraphProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {
|
|
9
|
+
/**
|
|
10
|
+
* Array of nodes. Each node should have an id property.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* [{id: 'A', label: 'Node A'}, {id: 'B', label: 'Node B'}]
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
nodes: TNode[];
|
|
17
|
+
/**
|
|
18
|
+
* Array of edges connecting nodes.
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* [{source: 'A', target: 'B'}, {source: 'B', target: 'C'}]
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
edges: TEdge[];
|
|
25
|
+
/**
|
|
26
|
+
* Field name or function to access node IDs
|
|
27
|
+
* @default "id"
|
|
28
|
+
*/
|
|
29
|
+
nodeIDAccessor?: ChartAccessor<TNode, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Field name or function to access edge source IDs
|
|
32
|
+
* @default "source"
|
|
33
|
+
*/
|
|
34
|
+
sourceAccessor?: ChartAccessor<TEdge, string>;
|
|
35
|
+
/**
|
|
36
|
+
* Field name or function to access edge target IDs
|
|
37
|
+
* @default "target"
|
|
38
|
+
*/
|
|
39
|
+
targetAccessor?: ChartAccessor<TEdge, string>;
|
|
40
|
+
/**
|
|
41
|
+
* Field name or function to determine node labels
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* nodeLabel="label" // Use label field
|
|
45
|
+
* nodeLabel={d => d.name} // Use function
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
nodeLabel?: ChartAccessor<TNode, string>;
|
|
49
|
+
/**
|
|
50
|
+
* Field name or function to determine node color
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* colorBy="group"
|
|
54
|
+
* colorBy={d => d.value > 10 ? 'red' : 'blue'}
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
colorBy?: ChartAccessor<TNode, string>;
|
|
58
|
+
/**
|
|
59
|
+
* Color scheme for categorical data or custom colors array
|
|
60
|
+
* @default "category10"
|
|
61
|
+
*/
|
|
62
|
+
colorScheme?: string | string[];
|
|
63
|
+
/**
|
|
64
|
+
* Field name, number, or function to determine node size
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* nodeSize={5} // Fixed size
|
|
68
|
+
* nodeSize="importance" // Use field
|
|
69
|
+
* nodeSize={d => d.connections * 2} // Use function
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
nodeSize?: number | ChartAccessor<TNode, number>;
|
|
73
|
+
/**
|
|
74
|
+
* Min and max radius for nodes when using dynamic sizing
|
|
75
|
+
* @default [5, 20]
|
|
76
|
+
*/
|
|
77
|
+
nodeSizeRange?: [number, number];
|
|
78
|
+
/**
|
|
79
|
+
* Field name, number, or function to determine edge width
|
|
80
|
+
* @default 1
|
|
81
|
+
*/
|
|
82
|
+
edgeWidth?: number | ChartAccessor<TEdge, number>;
|
|
83
|
+
/**
|
|
84
|
+
* Edge color
|
|
85
|
+
* @default "#999"
|
|
86
|
+
*/
|
|
87
|
+
edgeColor?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Edge opacity
|
|
90
|
+
* @default 0.6
|
|
91
|
+
*/
|
|
92
|
+
edgeOpacity?: number;
|
|
93
|
+
/**
|
|
94
|
+
* Number of force simulation iterations
|
|
95
|
+
* @default 300
|
|
96
|
+
*/
|
|
97
|
+
iterations?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Strength of the force simulation
|
|
100
|
+
* Lower values create looser layouts
|
|
101
|
+
* @default 0.1
|
|
102
|
+
*/
|
|
103
|
+
forceStrength?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Enable node labels
|
|
106
|
+
* @default false
|
|
107
|
+
*/
|
|
108
|
+
showLabels?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Enable hover annotations
|
|
111
|
+
* @default true
|
|
112
|
+
*/
|
|
113
|
+
enableHover?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Show legend
|
|
116
|
+
* @default true (when colorBy is specified)
|
|
117
|
+
*/
|
|
118
|
+
showLegend?: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Tooltip configuration
|
|
121
|
+
*/
|
|
122
|
+
tooltip?: TooltipProp;
|
|
123
|
+
/**
|
|
124
|
+
* Additional NetworkFrame props for advanced customization
|
|
125
|
+
* For full control, consider using NetworkFrame directly
|
|
126
|
+
* @see https://semiotic.nteract.io/guides/network-frame
|
|
127
|
+
*/
|
|
128
|
+
frameProps?: Partial<Omit<NetworkFrameProps, "nodes" | "edges" | "size">>;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* ForceDirectedGraph - Visualize network relationships with force-directed layout
|
|
132
|
+
*
|
|
133
|
+
* A simplified wrapper around NetworkFrame for creating force-directed graphs.
|
|
134
|
+
* Perfect for visualizing connections, communities, and network structures.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```tsx
|
|
138
|
+
* // Simple force-directed graph
|
|
139
|
+
* <ForceDirectedGraph
|
|
140
|
+
* nodes={[
|
|
141
|
+
* {id: 'A', label: 'Node A'},
|
|
142
|
+
* {id: 'B', label: 'Node B'},
|
|
143
|
+
* {id: 'C', label: 'Node C'}
|
|
144
|
+
* ]}
|
|
145
|
+
* edges={[
|
|
146
|
+
* {source: 'A', target: 'B'},
|
|
147
|
+
* {source: 'B', target: 'C'}
|
|
148
|
+
* ]}
|
|
149
|
+
* />
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```tsx
|
|
154
|
+
* // With color and size encoding
|
|
155
|
+
* <ForceDirectedGraph
|
|
156
|
+
* nodes={nodes}
|
|
157
|
+
* edges={edges}
|
|
158
|
+
* colorBy="group"
|
|
159
|
+
* nodeSize="connections"
|
|
160
|
+
* nodeSizeRange={[5, 25]}
|
|
161
|
+
* showLabels={true}
|
|
162
|
+
* iterations={500}
|
|
163
|
+
* />
|
|
164
|
+
* ```
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```tsx
|
|
168
|
+
* // Advanced: Override NetworkFrame props
|
|
169
|
+
* <ForceDirectedGraph
|
|
170
|
+
* nodes={nodes}
|
|
171
|
+
* edges={edges}
|
|
172
|
+
* frameProps={{
|
|
173
|
+
* networkType: { type: "force", iterations: 500, edgeStrength: 2 },
|
|
174
|
+
* customNodeIcon: ({ d }) => <circle r={10} fill="gold" />
|
|
175
|
+
* }}
|
|
176
|
+
* />
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @remarks
|
|
180
|
+
* This component wraps {@link NetworkFrame} with sensible defaults for force-directed graphs.
|
|
181
|
+
* For more advanced features like custom layouts, hierarchical networks, or complex interactions,
|
|
182
|
+
* use NetworkFrame directly.
|
|
183
|
+
*
|
|
184
|
+
* **Breadcrumb to advanced usage:**
|
|
185
|
+
* - Use the `frameProps` prop to pass any NetworkFrame prop
|
|
186
|
+
* - See NetworkFrame documentation: https://semiotic.nteract.io/guides/network-frame
|
|
187
|
+
* - All NetworkFrame props are available via `frameProps`
|
|
188
|
+
*
|
|
189
|
+
* @param props - ForceDirectedGraph configuration
|
|
190
|
+
* @returns Rendered force-directed graph
|
|
191
|
+
*/
|
|
192
|
+
export declare function ForceDirectedGraph<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: ForceDirectedGraphProps<TNode, TEdge>): React.JSX.Element;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { NetworkFrameProps } from "../../types/networkTypes";
|
|
3
|
+
import type { BaseChartProps, ChartAccessor } from "../shared/types";
|
|
4
|
+
import { type TooltipProp } from "../../Tooltip/Tooltip";
|
|
5
|
+
/**
|
|
6
|
+
* SankeyDiagram component props
|
|
7
|
+
*/
|
|
8
|
+
export interface SankeyDiagramProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {
|
|
9
|
+
/**
|
|
10
|
+
* Array of nodes (optional - will be inferred from edges if not provided)
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* [{id: 'A', category: 'Source'}, {id: 'B', category: 'Target'}]
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
nodes?: TNode[];
|
|
17
|
+
/**
|
|
18
|
+
* Array of edges (links) with source, target, and value
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* [
|
|
22
|
+
* {source: 'A', target: 'B', value: 100},
|
|
23
|
+
* {source: 'B', target: 'C', value: 80}
|
|
24
|
+
* ]
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
edges: TEdge[];
|
|
28
|
+
/**
|
|
29
|
+
* Field name or function to access source node identifier
|
|
30
|
+
* @default "source"
|
|
31
|
+
*/
|
|
32
|
+
sourceAccessor?: ChartAccessor<TEdge, string>;
|
|
33
|
+
/**
|
|
34
|
+
* Field name or function to access target node identifier
|
|
35
|
+
* @default "target"
|
|
36
|
+
*/
|
|
37
|
+
targetAccessor?: ChartAccessor<TEdge, string>;
|
|
38
|
+
/**
|
|
39
|
+
* Field name or function to access edge value (flow width)
|
|
40
|
+
* @default "value"
|
|
41
|
+
*/
|
|
42
|
+
valueAccessor?: ChartAccessor<TEdge, number>;
|
|
43
|
+
/**
|
|
44
|
+
* Field name or function to access node identifier
|
|
45
|
+
* @default "id"
|
|
46
|
+
*/
|
|
47
|
+
nodeIdAccessor?: ChartAccessor<TNode, string>;
|
|
48
|
+
/**
|
|
49
|
+
* Field name or function to determine node color
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* colorBy="category"
|
|
53
|
+
* colorBy={d => d.type}
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
colorBy?: ChartAccessor<TNode, string>;
|
|
57
|
+
/**
|
|
58
|
+
* Color scheme for nodes or custom colors array
|
|
59
|
+
* @default "category10"
|
|
60
|
+
*/
|
|
61
|
+
colorScheme?: string | string[];
|
|
62
|
+
/**
|
|
63
|
+
* Edge color strategy
|
|
64
|
+
* - "source": color edges by source node
|
|
65
|
+
* - "target": color edges by target node
|
|
66
|
+
* - "gradient": gradient from source to target
|
|
67
|
+
* - function: custom coloring function
|
|
68
|
+
* @default "source"
|
|
69
|
+
*/
|
|
70
|
+
edgeColorBy?: "source" | "target" | "gradient" | ((d: any) => string);
|
|
71
|
+
/**
|
|
72
|
+
* Layout orientation
|
|
73
|
+
* @default "horizontal"
|
|
74
|
+
*/
|
|
75
|
+
orientation?: "horizontal" | "vertical";
|
|
76
|
+
/**
|
|
77
|
+
* Node alignment strategy
|
|
78
|
+
* - "justify": spread nodes evenly
|
|
79
|
+
* - "left": align nodes to the left
|
|
80
|
+
* - "right": align nodes to the right
|
|
81
|
+
* - "center": center nodes
|
|
82
|
+
* @default "justify"
|
|
83
|
+
*/
|
|
84
|
+
nodeAlign?: "justify" | "left" | "right" | "center";
|
|
85
|
+
/**
|
|
86
|
+
* Padding between nodes (ratio of node height)
|
|
87
|
+
* @default 0.05
|
|
88
|
+
*/
|
|
89
|
+
nodePaddingRatio?: number;
|
|
90
|
+
/**
|
|
91
|
+
* Fixed width of nodes in pixels
|
|
92
|
+
* @default 15
|
|
93
|
+
*/
|
|
94
|
+
nodeWidth?: number;
|
|
95
|
+
/**
|
|
96
|
+
* Label accessor for nodes
|
|
97
|
+
* @default Uses nodeIdAccessor
|
|
98
|
+
*/
|
|
99
|
+
nodeLabel?: ChartAccessor<TNode, string>;
|
|
100
|
+
/**
|
|
101
|
+
* Show node labels
|
|
102
|
+
* @default true
|
|
103
|
+
*/
|
|
104
|
+
showLabels?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Enable hover annotations
|
|
107
|
+
* @default true
|
|
108
|
+
*/
|
|
109
|
+
enableHover?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Edge opacity
|
|
112
|
+
* @default 0.5
|
|
113
|
+
*/
|
|
114
|
+
edgeOpacity?: number;
|
|
115
|
+
/**
|
|
116
|
+
* Sort function for edges
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* edgeSort={(a, b) => b.value - a.value}
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
edgeSort?: (a: any, b: any) => number;
|
|
123
|
+
/**
|
|
124
|
+
* Tooltip configuration
|
|
125
|
+
*/
|
|
126
|
+
tooltip?: TooltipProp;
|
|
127
|
+
/**
|
|
128
|
+
* Additional NetworkFrame props for advanced customization
|
|
129
|
+
* For full control, consider using NetworkFrame directly
|
|
130
|
+
* @see https://semiotic.nteract.io/guides/network-frame
|
|
131
|
+
*/
|
|
132
|
+
frameProps?: Partial<Omit<NetworkFrameProps, "edges" | "size">>;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* SankeyDiagram - Visualize flow and magnitude of movement between nodes
|
|
136
|
+
*
|
|
137
|
+
* A simplified wrapper around NetworkFrame for creating Sankey diagrams.
|
|
138
|
+
* Perfect for showing material, energy, cost, or any other quantity
|
|
139
|
+
* flowing through a system.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```tsx
|
|
143
|
+
* // Simple Sankey diagram
|
|
144
|
+
* <SankeyDiagram
|
|
145
|
+
* edges={[
|
|
146
|
+
* {source: 'A', target: 'B', value: 100},
|
|
147
|
+
* {source: 'A', target: 'C', value: 50},
|
|
148
|
+
* {source: 'B', target: 'D', value: 80}
|
|
149
|
+
* ]}
|
|
150
|
+
* />
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```tsx
|
|
155
|
+
* // With custom styling and orientation
|
|
156
|
+
* <SankeyDiagram
|
|
157
|
+
* edges={edges}
|
|
158
|
+
* nodes={nodes}
|
|
159
|
+
* colorBy="category"
|
|
160
|
+
* edgeColorBy="gradient"
|
|
161
|
+
* orientation="vertical"
|
|
162
|
+
* nodeAlign="center"
|
|
163
|
+
* />
|
|
164
|
+
* ```
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```tsx
|
|
168
|
+
* // With sorting and padding
|
|
169
|
+
* <SankeyDiagram
|
|
170
|
+
* edges={edges}
|
|
171
|
+
* nodeWidth={20}
|
|
172
|
+
* nodePaddingRatio={0.1}
|
|
173
|
+
* edgeSort={(a, b) => b.value - a.value}
|
|
174
|
+
* />
|
|
175
|
+
* ```
|
|
176
|
+
*
|
|
177
|
+
* @remarks
|
|
178
|
+
* This component wraps {@link NetworkFrame} with sensible defaults for Sankey diagrams.
|
|
179
|
+
* Sankey diagrams are used for directed acyclic graphs (DAGs).
|
|
180
|
+
*
|
|
181
|
+
* **Data Requirements:**
|
|
182
|
+
* - Edges must have source, target, and value properties
|
|
183
|
+
* - Graph should be acyclic (no cycles)
|
|
184
|
+
* - If cycles are detected, consider using a force-directed layout instead
|
|
185
|
+
*
|
|
186
|
+
* **Breadcrumb to advanced usage:**
|
|
187
|
+
* - Use the `frameProps` prop to pass any NetworkFrame prop
|
|
188
|
+
* - See NetworkFrame documentation: https://semiotic.nteract.io/guides/network-frame
|
|
189
|
+
* - All NetworkFrame props are available via `frameProps`
|
|
190
|
+
* - For circular Sankey diagrams, use the `customSankey` prop via frameProps
|
|
191
|
+
*
|
|
192
|
+
* @param props - SankeyDiagram configuration
|
|
193
|
+
* @returns Rendered Sankey diagram
|
|
194
|
+
*/
|
|
195
|
+
export declare function SankeyDiagram<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: SankeyDiagramProps<TNode, TEdge>): React.JSX.Element;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { NetworkFrameProps } from "../../types/networkTypes";
|
|
3
|
+
import type { BaseChartProps, ChartAccessor, Accessor } from "../shared/types";
|
|
4
|
+
import { type TooltipProp } from "../../Tooltip/Tooltip";
|
|
5
|
+
/**
|
|
6
|
+
* TreeDiagram component props
|
|
7
|
+
*/
|
|
8
|
+
export interface TreeDiagramProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {
|
|
9
|
+
/**
|
|
10
|
+
* Hierarchical data structure
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* {
|
|
14
|
+
* name: 'root',
|
|
15
|
+
* children: [
|
|
16
|
+
* {name: 'A', children: [{name: 'A1'}, {name: 'A2'}]},
|
|
17
|
+
* {name: 'B'}
|
|
18
|
+
* ]
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
data: TNode;
|
|
23
|
+
/**
|
|
24
|
+
* Tree layout algorithm
|
|
25
|
+
* - "tree": standard tree layout
|
|
26
|
+
* - "cluster": cluster (dendrogram) layout
|
|
27
|
+
* - "partition": partition (icicle/sunburst) layout
|
|
28
|
+
* - "treemap": treemap layout (@deprecated — use the standalone {@link Treemap} component instead)
|
|
29
|
+
* - "circlepack": circle packing layout (@deprecated — use the standalone {@link CirclePack} component instead)
|
|
30
|
+
* @default "tree"
|
|
31
|
+
*/
|
|
32
|
+
layout?: "tree" | "cluster" | "partition" | "treemap" | "circlepack";
|
|
33
|
+
/**
|
|
34
|
+
* Projection orientation
|
|
35
|
+
* - "vertical": top to bottom
|
|
36
|
+
* - "horizontal": left to right
|
|
37
|
+
* - "radial": radial layout (circular)
|
|
38
|
+
* @default "vertical"
|
|
39
|
+
*/
|
|
40
|
+
orientation?: "vertical" | "horizontal" | "radial";
|
|
41
|
+
/**
|
|
42
|
+
* Field name or function to access children array
|
|
43
|
+
* @default "children"
|
|
44
|
+
*/
|
|
45
|
+
childrenAccessor?: ChartAccessor<TNode, TNode[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Field name or function to access node value for sizing
|
|
48
|
+
* Used by treemap and circlepack layouts
|
|
49
|
+
* @default "value"
|
|
50
|
+
*/
|
|
51
|
+
valueAccessor?: Accessor<number>;
|
|
52
|
+
/**
|
|
53
|
+
* Field name or function to access node identifier
|
|
54
|
+
* @default "name"
|
|
55
|
+
*/
|
|
56
|
+
nodeIdAccessor?: ChartAccessor<TNode, string>;
|
|
57
|
+
/**
|
|
58
|
+
* Field name or function to determine node color
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* colorBy="category"
|
|
62
|
+
* colorBy={d => d.depth}
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
colorBy?: ChartAccessor<TNode, string | number>;
|
|
66
|
+
/**
|
|
67
|
+
* Color scheme for nodes or custom colors array
|
|
68
|
+
* @default "category10"
|
|
69
|
+
*/
|
|
70
|
+
colorScheme?: string | string[];
|
|
71
|
+
/**
|
|
72
|
+
* Color nodes by depth level
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
colorByDepth?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Edge style
|
|
78
|
+
* - "line": straight lines
|
|
79
|
+
* - "curve": curved lines
|
|
80
|
+
* @default "curve"
|
|
81
|
+
*/
|
|
82
|
+
edgeStyle?: "line" | "curve";
|
|
83
|
+
/**
|
|
84
|
+
* Label accessor for nodes
|
|
85
|
+
* @default Uses nodeIdAccessor
|
|
86
|
+
*/
|
|
87
|
+
nodeLabel?: ChartAccessor<TNode, string>;
|
|
88
|
+
/**
|
|
89
|
+
* Show node labels
|
|
90
|
+
* @default true
|
|
91
|
+
*/
|
|
92
|
+
showLabels?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Node size for tree/cluster layouts
|
|
95
|
+
* @default 5
|
|
96
|
+
*/
|
|
97
|
+
nodeSize?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Enable hover annotations
|
|
100
|
+
* @default true
|
|
101
|
+
*/
|
|
102
|
+
enableHover?: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Tooltip configuration
|
|
105
|
+
*/
|
|
106
|
+
tooltip?: TooltipProp;
|
|
107
|
+
/**
|
|
108
|
+
* Additional NetworkFrame props for advanced customization
|
|
109
|
+
* For full control, consider using NetworkFrame directly
|
|
110
|
+
* @see https://semiotic.nteract.io/guides/network-frame
|
|
111
|
+
*/
|
|
112
|
+
frameProps?: Partial<Omit<NetworkFrameProps, "edges" | "size">>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* TreeDiagram - Visualize hierarchical data structures
|
|
116
|
+
*
|
|
117
|
+
* A simplified wrapper around NetworkFrame for creating tree diagrams.
|
|
118
|
+
* Perfect for organizational charts, file systems, taxonomies, and
|
|
119
|
+
* any hierarchical data.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```tsx
|
|
123
|
+
* // Simple tree
|
|
124
|
+
* <TreeDiagram
|
|
125
|
+
* data={{
|
|
126
|
+
* name: 'Root',
|
|
127
|
+
* children: [
|
|
128
|
+
* {name: 'A', children: [{name: 'A1'}, {name: 'A2'}]},
|
|
129
|
+
* {name: 'B'}
|
|
130
|
+
* ]
|
|
131
|
+
* }}
|
|
132
|
+
* />
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```tsx
|
|
137
|
+
* // Horizontal cluster (dendrogram)
|
|
138
|
+
* <TreeDiagram
|
|
139
|
+
* data={hierarchicalData}
|
|
140
|
+
* layout="cluster"
|
|
141
|
+
* orientation="horizontal"
|
|
142
|
+
* colorByDepth={true}
|
|
143
|
+
* />
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```tsx
|
|
148
|
+
* // Radial tree
|
|
149
|
+
* <TreeDiagram
|
|
150
|
+
* data={hierarchicalData}
|
|
151
|
+
* layout="tree"
|
|
152
|
+
* orientation="radial"
|
|
153
|
+
* colorBy="category"
|
|
154
|
+
* nodeSize={8}
|
|
155
|
+
* />
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```tsx
|
|
160
|
+
* // Treemap with sizing
|
|
161
|
+
* <TreeDiagram
|
|
162
|
+
* data={hierarchicalData}
|
|
163
|
+
* layout="treemap"
|
|
164
|
+
* valueAccessor="size"
|
|
165
|
+
* colorBy="type"
|
|
166
|
+
* />
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```tsx
|
|
171
|
+
* // Circle pack
|
|
172
|
+
* <TreeDiagram
|
|
173
|
+
* data={hierarchicalData}
|
|
174
|
+
* layout="circlepack"
|
|
175
|
+
* valueAccessor="value"
|
|
176
|
+
* colorByDepth={true}
|
|
177
|
+
* />
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* @remarks
|
|
181
|
+
* This component wraps {@link NetworkFrame} with sensible defaults for tree diagrams.
|
|
182
|
+
* Different layouts are suited for different use cases:
|
|
183
|
+
* - **tree/cluster**: Good for organizational structures, phylogenetic trees
|
|
184
|
+
* - **treemap**: Good for showing proportional sizes (disk usage, budget allocation)
|
|
185
|
+
* - **partition**: Good for hierarchical proportions (icicle or sunburst charts)
|
|
186
|
+
* - **circlepack**: Good for nested hierarchies with size encoding
|
|
187
|
+
*
|
|
188
|
+
* **Data Requirements:**
|
|
189
|
+
* - Data must be hierarchical JSON with a children property (or custom accessor)
|
|
190
|
+
* - For treemap/circlepack, nodes should have a value property for sizing
|
|
191
|
+
*
|
|
192
|
+
* **Breadcrumb to advanced usage:**
|
|
193
|
+
* - Use the `frameProps` prop to pass any NetworkFrame prop
|
|
194
|
+
* - See NetworkFrame documentation: https://semiotic.nteract.io/guides/network-frame
|
|
195
|
+
* - All NetworkFrame props are available via `frameProps`
|
|
196
|
+
*
|
|
197
|
+
* @param props - TreeDiagram configuration
|
|
198
|
+
* @returns Rendered tree diagram
|
|
199
|
+
*/
|
|
200
|
+
export declare function TreeDiagram<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: TreeDiagramProps<TNode, TEdge>): React.JSX.Element;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { NetworkFrameProps } from "../../types/networkTypes";
|
|
3
|
+
import type { BaseChartProps, ChartAccessor, Accessor } from "../shared/types";
|
|
4
|
+
import { type TooltipProp } from "../../Tooltip/Tooltip";
|
|
5
|
+
/**
|
|
6
|
+
* Treemap component props
|
|
7
|
+
*/
|
|
8
|
+
export interface TreemapProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {
|
|
9
|
+
/**
|
|
10
|
+
* Hierarchical data structure with children and values.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* {
|
|
14
|
+
* name: 'root',
|
|
15
|
+
* children: [
|
|
16
|
+
* {name: 'A', value: 100},
|
|
17
|
+
* {name: 'B', children: [{name: 'B1', value: 50}, {name: 'B2', value: 30}]}
|
|
18
|
+
* ]
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
data: TNode;
|
|
23
|
+
/**
|
|
24
|
+
* Field name or function to access children array
|
|
25
|
+
* @default "children"
|
|
26
|
+
*/
|
|
27
|
+
childrenAccessor?: ChartAccessor<TNode, TNode[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Field name or function to access node value for sizing
|
|
30
|
+
* @default "value"
|
|
31
|
+
*/
|
|
32
|
+
valueAccessor?: Accessor<number>;
|
|
33
|
+
/**
|
|
34
|
+
* Field name or function to access node identifier
|
|
35
|
+
* @default "name"
|
|
36
|
+
*/
|
|
37
|
+
nodeIdAccessor?: ChartAccessor<TNode, string>;
|
|
38
|
+
/**
|
|
39
|
+
* Field name or function to determine node color
|
|
40
|
+
*/
|
|
41
|
+
colorBy?: ChartAccessor<TNode, string | number>;
|
|
42
|
+
/**
|
|
43
|
+
* Color scheme for nodes or custom colors array
|
|
44
|
+
* @default "category10"
|
|
45
|
+
*/
|
|
46
|
+
colorScheme?: string | string[];
|
|
47
|
+
/**
|
|
48
|
+
* Color nodes by hierarchy depth level
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
colorByDepth?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Show labels on treemap cells
|
|
54
|
+
* @default true
|
|
55
|
+
*/
|
|
56
|
+
showLabels?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Node label accessor
|
|
59
|
+
* @default Uses nodeIdAccessor
|
|
60
|
+
*/
|
|
61
|
+
nodeLabel?: ChartAccessor<TNode, string>;
|
|
62
|
+
/**
|
|
63
|
+
* Enable hover annotations
|
|
64
|
+
* @default true
|
|
65
|
+
*/
|
|
66
|
+
enableHover?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Tooltip configuration
|
|
69
|
+
*/
|
|
70
|
+
tooltip?: TooltipProp;
|
|
71
|
+
/**
|
|
72
|
+
* Additional NetworkFrame props for advanced customization
|
|
73
|
+
* For full control, consider using NetworkFrame directly
|
|
74
|
+
*/
|
|
75
|
+
frameProps?: Partial<Omit<NetworkFrameProps, "edges" | "size">>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Treemap - Visualize hierarchical data as nested rectangles.
|
|
79
|
+
*
|
|
80
|
+
* A simplified wrapper around NetworkFrame with treemap layout.
|
|
81
|
+
* Each rectangle's area is proportional to its value.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```tsx
|
|
85
|
+
* <Treemap
|
|
86
|
+
* data={{
|
|
87
|
+
* name: 'root',
|
|
88
|
+
* children: [
|
|
89
|
+
* {name: 'A', value: 100},
|
|
90
|
+
* {name: 'B', value: 200},
|
|
91
|
+
* {name: 'C', value: 150}
|
|
92
|
+
* ]
|
|
93
|
+
* }}
|
|
94
|
+
* colorBy="name"
|
|
95
|
+
* />
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function Treemap<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: TreemapProps<TNode, TEdge>): React.JSX.Element;
|