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 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sources":["../src/components/annotationLayerBehavior/d3labeler.ts","../src/components/annotationLayerBehavior/annotationHandling.ts","../src/components/Legend.tsx","../src/components/Annotation.tsx","../src/components/store/createStore.tsx","../src/components/store/TooltipStore.ts","../src/components/AnnotationLayer/helpers.js","../src/components/AnnotationLayer/AnnotationLayer.tsx","../src/components/Brush.tsx","../src/components/constants/coordinateNames.ts","../src/components/processing/InteractionItems.tsx","../src/components/svg/SvgHelper.tsx","../src/components/visualizationLayerBehavior/axis.tsx","../src/components/Axis/summaryGraphic.tsx","../src/components/Axis/axisTitle.tsx","../src/components/svg/pieceDrawing.tsx","../src/components/svg/boxplotRenderer.tsx","../src/components/svg/ckmeans.ts","../src/components/svg/ckbinsRenderer.tsx","../src/components/svg/contourLayout.ts","../src/components/svg/hexbinLayout.tsx","../src/components/svg/areaDrawing.tsx","../src/components/svg/contourRenderer.tsx","../src/components/visualizationLayerBehavior/general.tsx","../src/components/svg/bucketizedRenderer.tsx","../src/components/svg/summaryLayouts.tsx","../src/components/Axis/Axis.tsx","../src/components/svg/frameFunctions.tsx","../src/components/interactionLayerBehavior/InteractionCanvas.tsx","../src/components/InteractionLayer.tsx","../src/components/batchWork.ts","../src/components/VisualizationLayer.tsx","../src/components/constants/jsx.tsx","../src/components/Frame.tsx","../src/components/svg/lineDrawing.ts","../src/components/data/unflowedFunctions.ts","../src/components/data/dataFunctions.ts","../src/components/constants/frame_props.ts","../src/components/annotationRules/baseRules.tsx","../src/components/TooltipPositioner/index.tsx","../src/components/annotationRules/networkframeRules.tsx","../src/components/generic_utilities/functions.ts","../src/components/svg/nodeGenerators.tsx","../src/components/svg/edgeGenerators.tsx","../src/components/svg/sankeyLinks.ts","../src/components/svg/graphAlgorithms.ts","../src/components/svg/networkDrawing.tsx","../src/components/processing/networkDefaults.ts","../src/components/processing/layouts/hierarchyLayout.ts","../src/components/processing/layouts/sankeyLayout.ts","../src/components/processing/networkLayoutHelpers.ts","../src/components/processing/hierarchyUtils.ts","../src/components/processing/network.ts","../src/components/data/networkPipelineCache.ts","../src/components/processing/layouts/chordLayout.ts","../src/components/processing/layouts/forceLayout.ts","../src/components/processing/layouts/simpleLayouts.ts","../src/components/processing/layouts/index.ts","../src/components/useDerivedStateFromProps.ts","../src/components/useLegacyUnmountCallback.ts","../src/components/NetworkFrame.tsx","../src/components/useBoundingRect.ts","../src/components/ResponsiveFrame.tsx","../src/components/ResponsiveNetworkFrame.tsx","../src/components/SparkFrame.tsx","../src/components/SparkNetworkFrame.ts"],"sourcesContent":["// from Evan Wang's https://github.com/tinker10/D3-Labeler\nexport default function() {\n let lab = [],\n anc = [],\n w = 1, // box width\n h = 1, // box width\n labeler = {\n start: x => {},\n width: x => {},\n height: x => {},\n label: x => {},\n anchor: x => {},\n alt_energy: x => {},\n alt_schedule: x => {}\n }\n\n let max_move = 5.0,\n max_angle = 0.5\n\n // weights\n let w_len = 0.2, // leader line length\n w_inter = 1.0, // leader line intersection\n w_lab2 = 30.0, // label-label overlap\n w_lab_anc = 30.0, // label-anchor overlap\n w_orient = 3.0 // orientation bias\n\n // booleans for user defined functions\n let user_energy = false,\n user_schedule = false\n\n let user_defined_energy, user_defined_schedule\n\n const energy = function(index) {\n // energy function, tailored for label placement\n\n let m = lab.length,\n ener = 0,\n dx = lab[index].x - anc[index].x,\n dy = anc[index].y - lab[index].y,\n dist = Math.sqrt(dx * dx + dy * dy),\n overlap = true,\n amount = 0,\n theta = 0\n\n // penalty for length of leader line\n if (dist > 0) ener += dist * w_len\n\n // label orientation bias\n dx /= dist\n dy /= dist\n if (dx > 0 && dy > 0) {\n ener += 0 * w_orient\n } else if (dx < 0 && dy > 0) {\n ener += 1 * w_orient\n } else if (dx < 0 && dy < 0) {\n ener += 2 * w_orient\n } else {\n ener += 3 * w_orient\n }\n\n let x21 = lab[index].x,\n y21 = lab[index].y - lab[index].height + 2.0,\n x22 = lab[index].x + lab[index].width,\n y22 = lab[index].y + 2.0\n let x11, x12, y11, y12, x_overlap, y_overlap, overlap_area\n\n for (let i = 0; i < m; i++) {\n if (i !== index) {\n // penalty for intersection of leader lines\n const overlap = intersect(\n anc[index].x,\n lab[index].x,\n anc[i].x,\n lab[i].x,\n anc[index].y,\n lab[index].y,\n anc[i].y,\n lab[i].y\n )\n if (overlap) ener += w_inter\n\n // penalty for label-label overlap\n x11 = lab[i].x\n y11 = lab[i].y - lab[i].height + 2.0\n x12 = lab[i].x + lab[i].width\n y12 = lab[i].y + 2.0\n x_overlap = Math.max(0, Math.min(x12, x22) - Math.max(x11, x21))\n y_overlap = Math.max(0, Math.min(y12, y22) - Math.max(y11, y21))\n overlap_area = x_overlap * y_overlap\n ener += overlap_area * w_lab2\n }\n\n // penalty for label-anchor overlap\n x11 = anc[i].x - anc[i].r\n y11 = anc[i].y - anc[i].r\n x12 = anc[i].x + anc[i].r\n y12 = anc[i].y + anc[i].r\n x_overlap = Math.max(0, Math.min(x12, x22) - Math.max(x11, x21))\n y_overlap = Math.max(0, Math.min(y12, y22) - Math.max(y11, y21))\n overlap_area = x_overlap * y_overlap\n ener += overlap_area * w_lab_anc\n }\n return ener\n }\n\n const mcmove = function(currT) {\n // Monte Carlo translation move\n\n // select a random label\n let i = Math.floor(Math.random() * lab.length)\n\n // save old coordinates\n let x_old = lab[i].x\n let y_old = lab[i].y\n\n // old energy\n let old_energy\n if (user_energy) {\n old_energy = user_defined_energy(i, lab, anc)\n } else {\n old_energy = energy(i)\n }\n\n // random translation\n lab[i].x += (Math.random() - 0.5) * max_move\n lab[i].y += (Math.random() - 0.5) * max_move\n\n // hard wall boundaries\n if (lab[i].x > w) lab[i].x = x_old\n if (lab[i].x < 0) lab[i].x = x_old\n if (lab[i].y > h) lab[i].y = y_old\n if (lab[i].y < 0) lab[i].y = y_old\n\n // new energy\n let new_energy\n if (user_energy) {\n new_energy = user_defined_energy(i, lab, anc)\n } else {\n new_energy = energy(i)\n }\n\n // delta E\n let delta_energy = new_energy - old_energy\n\n if (!(Math.random() < Math.exp(-delta_energy / currT))) {\n // move back to old coordinates\n lab[i].x = x_old\n lab[i].y = y_old\n }\n }\n\n const mcrotate = function(currT) {\n // Monte Carlo rotation move\n\n // select a random label\n let i = Math.floor(Math.random() * lab.length)\n\n // save old coordinates\n let x_old = lab[i].x\n let y_old = lab[i].y\n\n // old energy\n let old_energy\n if (user_energy) {\n old_energy = user_defined_energy(i, lab, anc)\n } else {\n old_energy = energy(i)\n }\n\n // random angle\n let angle = (Math.random() - 0.5) * max_angle\n\n let s = Math.sin(angle)\n let c = Math.cos(angle)\n\n // translate label (relative to anchor at origin):\n lab[i].x -= anc[i].x\n lab[i].y -= anc[i].y\n\n // rotate label\n let x_new = lab[i].x * c - lab[i].y * s,\n y_new = lab[i].x * s + lab[i].y * c\n\n // translate label back\n lab[i].x = x_new + anc[i].x\n lab[i].y = y_new + anc[i].y\n\n // hard wall boundaries\n if (lab[i].x > w) lab[i].x = x_old\n if (lab[i].x < 0) lab[i].x = x_old\n if (lab[i].y > h) lab[i].y = y_old\n if (lab[i].y < 0) lab[i].y = y_old\n\n // new energy\n let new_energy\n if (user_energy) {\n new_energy = user_defined_energy(i, lab, anc)\n } else {\n new_energy = energy(i)\n }\n\n // delta E\n let delta_energy = new_energy - old_energy\n\n if (!(Math.random() < Math.exp(-delta_energy / currT))) {\n // move back to old coordinates\n lab[i].x = x_old\n lab[i].y = y_old\n }\n }\n\n const intersect = function(x1, x2, x3, x4, y1, y2, y3, y4) {\n // returns true if two lines intersect, else false\n // from http://paulbourke.net/geometry/lineline2d/\n\n let mua, mub\n let denom, numera, numerb\n\n denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)\n numera = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)\n numerb = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)\n\n /* Is the intersection along the the segments */\n mua = numera / denom\n mub = numerb / denom\n if (!(mua < 0 || mua > 1 || mub < 0 || mub > 1)) {\n return true\n }\n return false\n }\n\n const cooling_schedule = function(currT, initialT, nsweeps) {\n // linear cooling\n return currT - initialT / nsweeps\n }\n\n labeler.start = function(nsweeps) {\n // main simulated annealing function\n let m = lab.length,\n currT = 1.0,\n initialT = 1.0\n\n for (let i = 0; i < nsweeps; i++) {\n for (let j = 0; j < m; j++) {\n if (Math.random() < 0.5) {\n mcmove(currT)\n } else {\n mcrotate(currT)\n }\n }\n currT = cooling_schedule(currT, initialT, nsweeps)\n }\n }\n\n labeler.width = function(x) {\n // users insert graph width\n if (!arguments.length) return w\n w = x\n return labeler\n }\n\n labeler.height = function(x) {\n // users insert graph height\n if (!arguments.length) return h\n h = x\n return labeler\n }\n\n labeler.label = function(x) {\n // users insert label positions\n if (!arguments.length) return lab\n lab = x\n return labeler\n }\n\n labeler.anchor = function(x) {\n // users insert anchor positions\n if (!arguments.length) return anc\n anc = x\n return labeler\n }\n\n labeler.alt_energy = function(x) {\n // user defined energy\n if (!arguments.length) return energy\n user_defined_energy = x\n user_energy = true\n return labeler\n }\n\n labeler.alt_schedule = function(x) {\n // user defined cooling_schedule\n if (!arguments.length) return cooling_schedule\n user_defined_schedule = x\n user_schedule = true\n return labeler\n }\n\n return labeler\n}\n/*eslint-enable */\n","import labeler from \"./d3labeler\"\nimport { AnnotationProps } from \"../types/annotationTypes\"\n\ntype NoteType = {\n props: AnnotationProps\n}\n\ntype AnnotationTypes = \"marginalia\" | \"bump\" | false\n\ninterface Layout {\n type: AnnotationTypes\n orient?: \"nearest\" | \"left\" | \"right\" | \"top\" | \"bottom\" | string[]\n characterWidth?: number\n lineWidth?: number\n lineHeight?: number\n padding?: number\n iterations?: number\n pointSizeFunction?: Function\n labelSizeFunction?: Function\n marginOffset?: number\n}\n\nconst basicLabelSizeFunction = (\n noteData,\n characterWidth,\n lineHeight,\n padding\n) => {\n const text = noteData.note.label || noteData.note.title\n\n const textLength = text.length\n const wrap = noteData.note.wrap || 120\n const width = Math.min(wrap, textLength * characterWidth) + padding * 2\n const height =\n Math.ceil((textLength * characterWidth) / 120) * lineHeight + padding * 2\n return [width, height]\n}\n\nexport function bumpAnnotations(\n adjustableNotes: NoteType[],\n processor: Layout,\n size: number[],\n propsPointSizeFunction?: Function,\n propsLabelSizeFunction?: Function\n) {\n const {\n padding = 1,\n characterWidth = 8,\n lineHeight = 20,\n iterations = 500,\n pointSizeFunction = propsPointSizeFunction,\n labelSizeFunction = propsLabelSizeFunction || basicLabelSizeFunction\n } = processor\n\n const labels = adjustableNotes.map((d, i) => {\n const anchorX =\n (d.props.noteData.x[0] || d.props.noteData.x) +\n (d.props.noteData.dx !== undefined\n ? d.props.noteData.dx\n : ((i % 3) - 1) * -10)\n const anchorY =\n (d.props.noteData.y[0] || d.props.noteData.y) +\n (d.props.noteData.dy !== undefined\n ? d.props.noteData.dy\n : ((i % 3) - 1) * 10)\n\n const [labelWidth, labelHeight] = labelSizeFunction(\n d.props.noteData,\n characterWidth,\n lineHeight,\n padding\n )\n return {\n x: anchorX,\n y: anchorY,\n above: anchorY < d.props.noteData.y,\n left: anchorX < d.props.noteData.x,\n width: labelWidth,\n height: labelHeight,\n type: \"label\",\n name: \"\",\n originalNote: d\n }\n })\n\n const points = adjustableNotes.map(d => ({\n x: d.props.noteData.x,\n y: d.props.noteData.y,\n fx: d.props.noteData.x,\n fy: d.props.noteData.y,\n r: (pointSizeFunction && pointSizeFunction(d.props.noteData)) || 5,\n type: \"point\",\n originalNote: d\n }))\n\n const instantiatedLabeler = labeler()\n\n instantiatedLabeler.label(labels)\n instantiatedLabeler.anchor(points)\n instantiatedLabeler.width(size[0])\n instantiatedLabeler.height(size[1])\n instantiatedLabeler.start(iterations)\n\n labels.forEach(d => {\n if (d.type === \"label\") {\n const adjusted = adjustedXY(d.originalNote.props.noteData, d, padding)\n d.originalNote.props.noteData.nx = adjusted[0]\n d.originalNote.props.noteData.ny = adjusted[1]\n }\n })\n\n return adjustableNotes\n}\n\nfunction adjustedXY(note, calculated, padding) {\n if (note.y > calculated.y) {\n //below\n return [\n calculated.x + calculated.width / 2 + padding / 2,\n calculated.y - calculated.height + padding / 2\n ]\n }\n return [calculated.x + calculated.width / 2, calculated.y]\n}\n","import * as React from \"react\"\n\nimport { LegendGroup, ItemType, LegendProps } from \"./types/legendTypes\"\n\nconst typeHash = {\n fill: (style: Object) => <rect style={style} width={20} height={20} />,\n line: (style: Object) => <line style={style} x1={0} y1={0} x2={20} y2={20} />\n}\n\nfunction renderType(\n item: Object,\n i: number,\n type: ItemType,\n styleFn: Function\n) {\n let renderedType\n if (typeof type === \"function\") {\n renderedType = type(item)\n } else {\n const Type = typeHash[type]\n const style = styleFn(item, i)\n renderedType = Type(style)\n }\n return renderedType\n}\n\nconst renderLegendGroupVertical = (\n legendGroup: LegendGroup,\n customClickBehavior?: Function\n) => {\n const { type = \"fill\", styleFn, items } = legendGroup\n const renderedItems = []\n let itemOffset = 0\n items.forEach((item, i) => {\n const renderedType = renderType(item, i, type, styleFn)\n renderedItems.push(\n <g\n key={`legend-item-${i}`}\n transform={`translate(0,${itemOffset})`}\n onClick={\n customClickBehavior ? () => customClickBehavior(item) : undefined\n }\n style={{\n cursor: customClickBehavior ? \"pointer\" : \"default\"\n }}\n >\n {renderedType}\n <text y={15} x={30}>\n {item.label}\n </text>\n </g>\n )\n itemOffset += 25\n })\n return renderedItems\n}\n\nconst renderLegendGroupHorizontal = (\n legendGroup: LegendGroup,\n customClickBehavior?: Function\n) => {\n const { type = \"fill\", styleFn, items } = legendGroup\n const renderedItems = []\n let itemOffset = 0\n items.forEach((item, i) => {\n const renderedType = renderType(item, i, type, styleFn)\n renderedItems.push(\n <g\n key={`legend-item-${i}`}\n transform={`translate(${itemOffset},0)`}\n onClick={\n customClickBehavior ? () => customClickBehavior(item) : undefined\n }\n style={{\n cursor: customClickBehavior ? \"pointer\" : \"default\"\n }}\n >\n {renderedType}\n <text y={15} x={25}>\n {item.label}\n </text>\n </g>\n )\n itemOffset += 35\n itemOffset += item.label.length * 8\n })\n return { items: renderedItems, offset: itemOffset }\n}\n\nconst renderVerticalGroup = ({\n legendGroups,\n width,\n customClickBehavior\n}: {\n legendGroups: LegendGroup[]\n width: number\n customClickBehavior?: Function\n}) => {\n let offset = 30\n\n const renderedGroups = []\n\n legendGroups.forEach((l, i) => {\n offset += 5\n renderedGroups.push(\n <line\n key={`legend-top-line legend-symbol-${i}`}\n stroke=\"gray\"\n x1={0}\n y1={offset}\n x2={width}\n y2={offset}\n />\n )\n offset += 10\n if (l.label) {\n offset += 20\n renderedGroups.push(\n <text\n key={`legend-text-${i}`}\n y={offset}\n className=\"legend-group-label\"\n >\n {l.label}\n </text>\n )\n offset += 10\n }\n\n renderedGroups.push(\n <g\n key={`legend-group-${i}`}\n className=\"legend-item\"\n transform={`translate(0,${offset})`}\n >\n {renderLegendGroupVertical(l, customClickBehavior)}\n </g>\n )\n offset += l.items.length * 25 + 10\n })\n\n return renderedGroups\n}\n\nconst renderHorizontalGroup = ({\n legendGroups,\n title,\n height,\n customClickBehavior\n}: {\n legendGroups: LegendGroup[]\n title: string | boolean\n height: number\n customClickBehavior?: Function\n}) => {\n let offset = 0\n\n const renderedGroups = []\n\n const verticalOffset = title === false ? 10 : 40\n\n legendGroups.forEach((l, i) => {\n if (l.label) {\n renderedGroups.push(\n <text\n key={`legend-text-${i}`}\n transform={`translate(${offset},${verticalOffset}) rotate(90)`}\n textAnchor=\"start\"\n className=\"legend-group-label\"\n >\n {l.label}\n </text>\n )\n offset += 20\n }\n\n const renderedItems = renderLegendGroupHorizontal(l, customClickBehavior)\n\n renderedGroups.push(\n <g\n key={`legend-group-${i}`}\n className=\"legend-item\"\n transform={`translate(${offset},${verticalOffset})`}\n >\n {renderedItems.items}\n </g>\n )\n offset += renderedItems.offset + 5\n\n if (legendGroups[i + 1]) {\n renderedGroups.push(\n <line\n key={`legend-top-line legend-symbol-${i}`}\n stroke=\"gray\"\n x1={offset}\n y1={verticalOffset - 10}\n x2={offset}\n y2={height + verticalOffset + 10}\n />\n )\n }\n offset += 15\n })\n\n return (\n <g>\n {title !== false && (\n <line\n x1={0}\n x2={offset + 10}\n y1={verticalOffset - 10}\n y2={verticalOffset - 10}\n stroke=\"gray\"\n className=\"title-neatline\"\n />\n )}\n {renderedGroups}\n </g>\n )\n}\n\nexport default function Legend(props: LegendProps) {\n const {\n legendGroups,\n customClickBehavior,\n title = \"Legend\",\n width = 100,\n height = 20,\n orientation = \"vertical\"\n } = props\n const renderedGroups =\n orientation === \"vertical\"\n ? renderVerticalGroup({\n legendGroups,\n width,\n customClickBehavior\n })\n : renderHorizontalGroup({\n legendGroups,\n title,\n height,\n customClickBehavior\n })\n\n return (\n <g>\n {title !== undefined && (\n <text\n className=\"legend-title\"\n y={20}\n x={orientation === \"horizontal\" ? 0 : width / 2}\n textAnchor={orientation === \"horizontal\" ? \"start\" : \"middle\"}\n >\n {title}\n </text>\n )}\n {renderedGroups}\n </g>\n )\n}\n","import * as React from \"react\"\n\nimport { AnnotationProps } from \"./types/annotationTypes\"\n\nfunction wrapText(\n text: string,\n wrap: number = 120,\n charWidth: number = 8\n): string[] {\n if (!text) return []\n const maxChars = Math.max(1, Math.floor(wrap / charWidth))\n const words = text.split(/\\s+/)\n const lines: string[] = []\n let currentLine = \"\"\n\n for (const word of words) {\n if (currentLine && currentLine.length + 1 + word.length > maxChars) {\n lines.push(currentLine)\n currentLine = word\n } else {\n currentLine = currentLine ? `${currentLine} ${word}` : word\n }\n }\n if (currentLine) lines.push(currentLine)\n return lines\n}\n\nfunction bracketPath(\n type: string,\n span: number,\n depth: number,\n isVertical: boolean\n): string {\n if (type === \"curly\") {\n if (isVertical) {\n return `M0,0 C${depth * 0.6},0 ${depth * 0.4},${span / 2} ${depth},${span / 2} C${depth * 0.4},${span / 2} ${depth * 0.6},${span} 0,${span}`\n }\n return `M0,0 C0,${depth * 0.6} ${span / 2},${depth * 0.4} ${span / 2},${depth} C${span / 2},${depth * 0.4} ${span},${depth * 0.6} ${span},0`\n }\n // square bracket\n if (isVertical) {\n return `M0,0 L${depth},0 L${depth},${span} L0,${span}`\n }\n return `M0,0 L0,${depth} L${span},${depth} L${span},0`\n}\n\nfunction renderNote(\n note: {\n label?: string\n title?: string\n orientation?: string\n align?: string\n wrap?: number\n noWrap?: boolean\n },\n dx: number,\n dy: number,\n color?: string\n) {\n if (!note) return <g className=\"annotation-note\" />\n const {\n label,\n title,\n orientation: explicitOrientation,\n align: explicitAlign,\n wrap = 120,\n noWrap\n } = note\n\n if (!label && !title) return <g className=\"annotation-note\" />\n\n let orientation = explicitOrientation\n if (!orientation) {\n orientation = Math.abs(dx) > Math.abs(dy) ? \"leftRight\" : \"topBottom\"\n }\n\n let align = explicitAlign\n if (!align || align === \"dynamic\") {\n if (orientation === \"topBottom\") {\n align = dx >= 0 ? \"left\" : \"right\"\n } else {\n align = dy >= 0 ? \"top\" : \"bottom\"\n }\n }\n\n let textAnchor: \"start\" | \"middle\" | \"end\" = \"start\"\n if (orientation === \"topBottom\") {\n if (align === \"right\") textAnchor = \"end\"\n else if (align === \"middle\") textAnchor = \"middle\"\n } else {\n textAnchor = dx >= 0 ? \"start\" : \"end\"\n }\n\n const lineHeight = 16\n const padding = 4\n const titleLines =\n title ? (noWrap ? [title] : wrapText(title, wrap)) : []\n const labelLines =\n label ? (noWrap ? [label] : wrapText(label, wrap)) : []\n\n // For leftRight orientation, offset text horizontally away from the note-line\n const textX = orientation === \"leftRight\"\n ? (textAnchor === \"end\" ? -padding : padding)\n : 0\n\n let yOffset = 0\n const textElements: React.ReactElement[] = []\n\n if (titleLines.length > 0) {\n textElements.push(\n <text\n key=\"annotation-note-title\"\n className=\"annotation-note-title\"\n fill={color || undefined}\n textAnchor={textAnchor}\n fontWeight=\"bold\"\n >\n {titleLines.map((line, i) => (\n <tspan key={i} x={textX} dy={i === 0 ? 0 : lineHeight}>\n {line}\n </tspan>\n ))}\n </text>\n )\n yOffset = titleLines.length * lineHeight\n }\n\n if (labelLines.length > 0) {\n textElements.push(\n <text\n key=\"annotation-note-label\"\n className=\"annotation-note-label\"\n fill={color || undefined}\n textAnchor={textAnchor}\n y={yOffset}\n >\n {labelLines.map((line, i) => (\n <tspan key={i} x={textX} dy={i === 0 ? lineHeight : lineHeight}>\n {line}\n </tspan>\n ))}\n </text>\n )\n }\n\n let noteLine = null\n if ((title || label) && (dx !== 0 || dy !== 0)) {\n if (orientation === \"topBottom\") {\n const lineWidth = Math.min(wrap, 120)\n let x1 = 0\n let x2 = lineWidth\n if (textAnchor === \"end\") {\n x1 = -lineWidth\n x2 = 0\n } else if (textAnchor === \"middle\") {\n x1 = -lineWidth / 2\n x2 = lineWidth / 2\n }\n noteLine = (\n <line\n className=\"note-line\"\n x1={x1}\n x2={x2}\n y1={0}\n y2={0}\n stroke={color || \"currentColor\"}\n />\n )\n } else {\n const totalHeight =\n (titleLines.length + labelLines.length) * lineHeight +\n (labelLines.length > 0 ? lineHeight : 0)\n let y1 = 0\n let y2 = totalHeight\n if (align === \"bottom\") {\n y1 = -totalHeight\n y2 = 0\n } else if (align === \"middle\") {\n y1 = -totalHeight / 2\n y2 = totalHeight / 2\n }\n noteLine = (\n <line\n className=\"note-line\"\n x1={0}\n x2={0}\n y1={y1}\n y2={y2}\n stroke={color || \"currentColor\"}\n />\n )\n }\n }\n\n // Compute vertical offset for note content based on orientation and alignment.\n // The label's first tspan adds an extra lineHeight gap below the title,\n // so total visual height is larger when a label is present.\n const totalLines = titleLines.length + labelLines.length\n const totalTextHeight = totalLines * lineHeight\n const labelGap = labelLines.length > 0 ? lineHeight : 0\n const visualHeight = totalTextHeight + labelGap\n let contentYOffset = 0\n\n if (orientation === \"topBottom\") {\n if (dy < 0) {\n contentYOffset = -visualHeight\n }\n } else if (orientation === \"leftRight\") {\n if (align === \"middle\") {\n contentYOffset = -(visualHeight / 2)\n } else if (align === \"bottom\" || dy < 0) {\n contentYOffset = -visualHeight\n }\n }\n\n const contentTransform = contentYOffset !== 0\n ? `translate(0,${contentYOffset})`\n : undefined\n\n return (\n <g className=\"annotation-note\" transform={`translate(${dx},${dy})`}>\n <g className=\"annotation-note-content\" transform={contentTransform}>{textElements}</g>\n {noteLine}\n </g>\n )\n}\n\nfunction renderSubject(\n type: string,\n subject: any,\n color?: string,\n annotX?: number,\n annotY?: number\n) {\n const elements: React.ReactElement[] = []\n\n switch (type) {\n case \"callout-circle\": {\n const totalRadius =\n (subject?.radius || 0) + (subject?.radiusPadding || 0)\n if (totalRadius > 0) {\n elements.push(\n <circle\n key=\"subject-circle\"\n r={totalRadius}\n fill=\"none\"\n stroke={color || \"currentColor\"}\n />\n )\n }\n break\n }\n case \"callout-rect\": {\n const width = subject?.width || 0\n const height = subject?.height || 0\n if (width > 0 || height > 0) {\n elements.push(\n <rect\n key=\"subject-rect\"\n width={width}\n height={height}\n fill=\"none\"\n stroke={color || \"currentColor\"}\n />\n )\n }\n break\n }\n case \"callout-custom\": {\n if (subject?.custom) {\n const customElements = Array.isArray(subject.custom)\n ? subject.custom\n : [subject.custom]\n elements.push(...customElements)\n }\n break\n }\n case \"xy-threshold\": {\n const x = annotX || 0\n const y = annotY || 0\n\n if (subject?.x !== undefined) {\n const y1 = (subject.y1 || 0) - y\n const y2 = (subject.y2 || 0) - y\n const sx = (subject.x || 0) - x\n elements.push(\n <line\n key=\"threshold-line\"\n x1={sx}\n y1={y1}\n x2={sx}\n y2={y2}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n } else if (subject?.y !== undefined) {\n const x1 = (subject.x1 || 0) - x\n const x2 = (subject.x2 || 0) - x\n const sy = (subject.y || 0) - y\n elements.push(\n <line\n key=\"threshold-line\"\n x1={x1}\n y1={sy}\n x2={x2}\n y2={sy}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n } else if (subject?.x1 !== undefined || subject?.x2 !== undefined) {\n // Horizontal threshold line when only x1/x2 provided (no subject.x or subject.y)\n const x1 = (subject.x1 || 0) - x\n const x2 = (subject.x2 || 0) - x\n elements.push(\n <line\n key=\"threshold-line\"\n x1={x1}\n y1={0}\n x2={x2}\n y2={0}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n } else if (subject?.y1 !== undefined || subject?.y2 !== undefined) {\n // Vertical threshold line when only y1/y2 provided (no subject.x or subject.y)\n const y1 = (subject.y1 || 0) - y\n const y2 = (subject.y2 || 0) - y\n elements.push(\n <line\n key=\"threshold-line\"\n x1={0}\n y1={y1}\n x2={0}\n y2={y2}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n }\n break\n }\n case \"bracket\": {\n const bracketType = subject?.type || \"curly\"\n const span = subject?.width ?? subject?.height\n const depth = subject?.depth || 30\n const isVertical = subject?.width === undefined\n\n if (span !== undefined) {\n elements.push(\n <path\n key=\"bracket-path\"\n d={bracketPath(bracketType, span, depth, isVertical)}\n fill=\"none\"\n stroke={color || \"currentColor\"}\n />\n )\n }\n break\n }\n }\n\n return <g className=\"annotation-subject\">{elements}</g>\n}\n\nfunction renderConnector(\n dx: number,\n dy: number,\n connector: any,\n color?: string,\n type?: string,\n subject?: any\n) {\n const elements: React.ReactElement[] = []\n\n let startX = 0\n let startY = 0\n\n if (\n (type === \"callout-circle\" || type === \"label\") &&\n subject?.radius\n ) {\n const totalRadius =\n (subject.radius || 0) + (subject.radiusPadding || 0)\n if (totalRadius > 0 && (dx !== 0 || dy !== 0)) {\n const angle = Math.atan2(dy, dx)\n startX = Math.cos(angle) * totalRadius\n startY = Math.sin(angle) * totalRadius\n }\n } else if (type === \"callout-rect\" && subject) {\n const w = subject.width || 0\n const h = subject.height || 0\n if (w > 0 || h > 0) {\n const cx = w / 2\n const cy = h / 2\n const tdx = dx - cx\n const tdy = dy - cy\n if (tdx !== 0 || tdy !== 0) {\n const absTdx = Math.abs(tdx)\n const absTdy = Math.abs(tdy)\n const hw = w / 2\n const hh = h / 2\n const t =\n absTdx * hh > absTdy * hw ? hw / absTdx : hh / absTdy\n startX = cx + tdx * t\n startY = cy + tdy * t\n }\n }\n } else if (type === \"bracket\" && subject) {\n const width = subject.width\n const height = subject.height\n const depth = subject.depth || 30\n if (width !== undefined) {\n startX = width / 2\n startY = depth\n } else if (height !== undefined) {\n startX = depth\n startY = height / 2\n }\n }\n\n const connectorLength = Math.sqrt(\n (dx - startX) ** 2 + (dy - startY) ** 2\n )\n\n if (connectorLength > 0.5) {\n elements.push(\n <line\n key=\"connector-line\"\n x1={startX}\n y1={startY}\n x2={dx}\n y2={dy}\n stroke={color || \"currentColor\"}\n />\n )\n\n if (connector?.end === \"arrow\") {\n const arrowSize = 10\n const angleOffset = 16 / 180 * Math.PI\n const angle = Math.atan2(dy - startY, dx - startX)\n const a1x = startX + arrowSize * Math.cos(angle + angleOffset)\n const a1y = startY + arrowSize * Math.sin(angle + angleOffset)\n const a2x = startX + arrowSize * Math.cos(angle - angleOffset)\n const a2y = startY + arrowSize * Math.sin(angle - angleOffset)\n\n elements.push(\n <path\n key=\"connector-arrow\"\n d={`M${startX},${startY}L${a1x},${a1y}L${a2x},${a2y}Z`}\n fill={color || \"currentColor\"}\n stroke=\"none\"\n />\n )\n }\n }\n\n return <g className=\"annotation-connector\">{elements}</g>\n}\n\nfunction AnnotationRenderer(props: any) {\n const {\n x = 0,\n y = 0,\n dx: baseDx,\n dy: baseDy,\n nx,\n ny,\n note,\n connector,\n subject,\n type,\n color,\n className,\n disable,\n events = {},\n \"data-testid\": dataTestId\n } = props\n\n const disableSet = new Set(Array.isArray(disable) ? disable : [])\n\n let dx = baseDx || 0\n let dy = baseDy || 0\n\n if (nx !== undefined && nx !== null) dx = nx - x\n if (ny !== undefined && ny !== null) dy = ny - y\n\n const resolvedType = typeof type === \"string\" ? type : \"label\"\n\n // For bracket type, auto-position note at bracket midpoint tip\n if (resolvedType === \"bracket\" && subject && dx === 0 && dy === 0) {\n if (subject.width !== undefined) {\n dx = subject.width / 2\n const depthVal = subject.depth || 30\n dy = depthVal + (depthVal >= 0 ? 5 : -5)\n } else if (subject.height !== undefined) {\n const depthVal = subject.depth || 30\n dx = depthVal + (depthVal >= 0 ? 5 : -5)\n dy = subject.height / 2\n }\n }\n\n return (\n <g\n className={`annotation ${className || \"\"}`.trim()}\n transform={`translate(${x},${y})`}\n data-testid={dataTestId}\n {...events}\n >\n {!disableSet.has(\"connector\") && renderConnector(dx, dy, connector, color, resolvedType, subject)}\n {!disableSet.has(\"subject\") && renderSubject(resolvedType, subject, color, x, y)}\n {!disableSet.has(\"note\") && renderNote(note, dx, dy, color)}\n </g>\n )\n}\n\nexport default function SemioticAnnotation(props: AnnotationProps) {\n const { noteData } = props\n const { screenCoordinates } = noteData\n\n const annotationType =\n typeof noteData.type === \"string\" ? noteData.type : \"label\"\n\n const eventListeners = noteData.eventListeners || noteData.events || {}\n\n if (noteData.coordinates && screenCoordinates) {\n const setNX = noteData.nx || screenCoordinates[0][0] + noteData.dx\n const setNY = noteData.ny || screenCoordinates[0][1] + noteData.dy\n const notes = screenCoordinates.map((d, i) => {\n const subjectNote = Object.assign({}, noteData, {\n note: i === 0 ? noteData.note : { label: \"\" },\n x: d[0],\n y: d[1],\n nx: setNX,\n ny: setNY\n })\n return (\n <AnnotationRenderer\n data-testid=\"semiotic-annotation\"\n key={`multi-annotation-${i}`}\n {...subjectNote}\n type={annotationType}\n />\n )\n })\n\n return <g>{notes}</g>\n }\n\n const keyData = noteData.note || { title: \"none\", label: noteData.label }\n const annotationKey = `${keyData.label}-${keyData.title}-${noteData.i}`\n\n return (\n <AnnotationRenderer\n data-testid=\"semiotic-annotation\"\n key={annotationKey}\n events={eventListeners}\n {...noteData}\n type={annotationType}\n />\n )\n}\n","\"use client\"\nimport * as React from \"react\"\nimport {\n createContext,\n useContext,\n useMemo,\n useState,\n useLayoutEffect\n} from \"react\"\n\nfunction useSyncExternalStoreShim<T>(\n subscribe: (cb: Function) => () => void,\n getSnapshot: () => T\n): T {\n const [value, setValue] = useState<T>(getSnapshot)\n useLayoutEffect(() => {\n return subscribe(() => setValue(getSnapshot))\n }, [subscribe])\n return value\n}\n\nexport function createStore(fn) {\n let Ctx = createContext(null)\n\n function Provider({ children }) {\n let source = useMemo(() => createSource(fn), [])\n\n return <Ctx.Provider value={source} children={children} />\n }\n\n let useSelector = (selector) => {\n let source = useContext(Ctx)\n let getSnapshot = () => selector(source.getState())\n return useSyncExternalStoreShim(source?.subscribe, getSnapshot)\n }\n\n return [Provider, useSelector]\n}\n\nfunction createSource(fn) {\n let events = new EventTarget()\n let state = fn(set)\n\n function set(fn) {\n state = Object.assign(state, fn(set))\n events.dispatchEvent(new CustomEvent(\"update\"))\n }\n\n function subscribe(cb) {\n events.addEventListener(\"update\", cb)\n return () => events.removeEventListener(\"update\", cb)\n }\n\n return {\n getState() {\n return state\n },\n subscribe\n }\n}\n","\"use client\"\nimport { createStore } from \"./createStore\"\n\nlet [TooltipProvider, useTooltip] = createStore((set) => ({\n tooltip: null,\n changeTooltip(tooltip) {\n set(() => ({ tooltip }))\n }\n}))\n\nexport { TooltipProvider, useTooltip }\n","import React from 'react'\n\nfunction marginOffsetFn(orient, axisSettings, marginOffset) {\n if (typeof marginOffset === \"number\") {\n return marginOffset\n }\n if (axisSettings && axisSettings.find((d) => d.props.orient === orient)) {\n return 50\n }\n return 10\n}\n\nconst keyFromSVGAnnotations = (\n adjustableAnnotations,\n annotationProcessor,\n size\n) => {\n return `${adjustableAnnotations\n .map(adjustedAnnotationKeyMapper)\n .join(\",\")}${JSON.stringify(annotationProcessor)}${size.join(\",\")}`\n}\n\nfunction adjustedAnnotationKeyMapper(d) {\n if (!d || !d.props || !d.props.noteData) {\n return \"\"\n }\n const { note = {} } = d.props.noteData\n const { label, title } = note\n const id =\n d.props.noteData.id || `${d.props.noteData.x}-${d.props.noteData.y}`\n return `${id}-${label}=${title}`\n}\n\nfunction safeStringify(value) {\n const seen = new Set()\n return JSON.stringify(value, (k, v) => {\n if (seen.has(v)) {\n return \"...\"\n }\n if (typeof v === \"object\") {\n seen.add(v)\n if (k === \"note\") {\n return `${v.label}-${v.title}`\n }\n if (k === \"connector\") {\n return `${v.end}-${v.type}`\n }\n if (k === \"subject\") {\n return `${v.radius}`\n }\n if (typeof v.column === \"object\") {\n return `${v.column.x}-${v.column.y}-${v.column.name}`\n }\n\n if (\n v.voronoiX ||\n v.voronoiY ||\n v.x ||\n v.y ||\n v.dx ||\n v.dy ||\n v.label ||\n v.type ||\n v.key ||\n v.hierarchicalID ||\n v.id ||\n v.name\n ) {\n return `${v.voronoiX}-${v.voronoiY}-${v.dx}-${v.dy}-${v.x}-${v.y}-${v.label}-${v.type}-${v.key}-${v.hierarchicalID}-${v.id}-${v.name}`\n }\n\n return \"...\"\n }\n return v\n })\n}\n\nfunction noteDataWidth(noteData, charWidth = 8, layoutNoteWidth) {\n const { noteWidth = layoutNoteWidth } = noteData\n\n let noteWidthFn = noteWidth\n\n if (typeof noteWidth === \"number\") {\n noteWidthFn = () => noteWidth\n }\n\n const wrap = (noteData.note && noteData.note.wrap) || 120\n const noteText = noteData.note.label || noteData.note.label || \"\"\n const width =\n (noteWidth && noteWidthFn(noteData)) ||\n (React.isValidElement(noteData.note)\n ? 100\n : Math.min(wrap, noteText.length * charWidth))\n return width\n}\n\nfunction noteDataHeight(\n noteData,\n charWidth = 8,\n lineHeight = 20,\n layoutNoteHeight\n) {\n const { noteHeight = layoutNoteHeight } = noteData\n\n let noteHeightFn = noteHeight\n\n if (typeof noteHeight === \"number\") {\n noteHeightFn = () => noteHeight\n }\n const wrap = (noteData.note && noteData.note.wrap) || 120\n const text = noteData.note.label || noteData.note.title || \"\"\n \n const height =\n (noteHeight && noteHeightFn(noteData)) ||\n (React.isValidElement(noteData.note)\n ? 30\n : Math.ceil((text.length * charWidth) / wrap) * lineHeight +\n (noteData.note.label && noteData.note.title ? lineHeight : 0))\n\n return height\n}\n\nexport {\n marginOffsetFn,\n adjustedAnnotationKeyMapper,\n safeStringify,\n noteDataWidth,\n noteDataHeight,\n keyFromSVGAnnotations\n}\n","\"use client\"\n// modules\nimport * as React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { bumpAnnotations } from \"./../annotationLayerBehavior/annotationHandling\"\n\nimport Legend from \"./../Legend\"\nimport Annotation from \"./../Annotation\"\nimport labella from \"labella\"\nimport {\n AnnotationHandling,\n AnnotationTypes,\n AnnotationProps,\n AnnotationType\n} from \"./../types/annotationTypes\"\n\nimport { LegendProps } from \"./../types/legendTypes\"\n\nimport { useTooltip } from \"./../store/TooltipStore\"\nimport { marginOffsetFn, adjustedAnnotationKeyMapper, safeStringify, noteDataWidth, noteDataHeight, keyFromSVGAnnotations } from './helpers';\n\ninterface NoteType {\n key: string\n props: AnnotationProps\n}\n\nexport interface AnnotationLayerProps {\n legendSettings?: LegendProps\n margin: { top?: number; left?: number; right?: number; bottom?: number }\n size: number[]\n axes?: React.ReactNode[]\n annotationHandling?: AnnotationHandling | AnnotationTypes\n annotations: AnnotationType[]\n pointSizeFunction?: Function\n labelSizeFunction?: Function\n svgAnnotationRule: Function\n htmlAnnotationRule: Function\n position?: number[]\n}\n\nexport interface UpdatedAnnotationLayerProps extends AnnotationLayerProps {\n voronoiHover: Function\n}\n\ninterface AnnotationLayerState {\n adjustedAnnotationsKey?: string\n adjustedAnnotationsDataVersion?: string\n adjustedAnnotations: Object[]\n fixedAnnotations: NoteType[]\n adjustableAnnotations: NoteType[]\n}\n\nconst processAnnotations = (\n adjustableAnnotations: NoteType[],\n annotationProcessor: AnnotationHandling,\n props: AnnotationLayerProps\n) => {\n \n const {\n layout = { type: false, noteHeight: undefined, noteWidth: undefined }\n } = annotationProcessor\n\n if (layout.type === false) {\n return adjustableAnnotations\n }\n\n const { noteWidth: layoutNoteHeight, noteHeight: layoutNoteWidth } = layout\n\n let { margin = { top: 0, bottom: 0, left: 0, right: 0 } } = props\n\n const { size, axes = [] } = props\n\n margin =\n typeof margin === \"number\"\n ? { top: margin, left: margin, right: margin, bottom: margin }\n : margin\n\n if (layout.type === \"bump\") {\n const adjustedAnnotations = bumpAnnotations(\n adjustableAnnotations,\n layout,\n size,\n props.pointSizeFunction,\n props.labelSizeFunction\n )\n return adjustedAnnotations\n } else if (layout.type === \"marginalia\") {\n const {\n marginOffset,\n orient = \"nearest\",\n characterWidth = 8,\n lineHeight = 20,\n padding = 2,\n axisMarginOverride = {}\n } = layout\n const finalOrientation =\n orient === \"nearest\"\n ? [\"left\", \"right\", \"top\", \"bottom\"]\n : Array.isArray(orient)\n ? orient\n : [orient]\n\n const leftOn = finalOrientation.find((d) => d === \"left\")\n const rightOn = finalOrientation.find((d) => d === \"right\")\n const topOn = finalOrientation.find((d) => d === \"top\")\n const bottomOn = finalOrientation.find((d) => d === \"bottom\")\n\n const leftNodes = []\n const rightNodes = []\n const topNodes = []\n const bottomNodes = []\n\n for (const aNote of adjustableAnnotations) {\n const noteData = aNote.props.noteData\n\n const noteX = noteData.x[0] || noteData.x\n const noteY = noteData.y[0] || noteData.y\n\n const leftDist = leftOn ? noteX : Infinity\n const rightDist = rightOn ? size[0] - noteX : Infinity\n const topDist = topOn ? noteY : Infinity\n const bottomDist = bottomOn ? size[1] - noteY : Infinity\n\n const minDist = Math.min(leftDist, rightDist, topDist, bottomDist)\n\n if (leftDist === minDist) {\n leftNodes.push(aNote)\n } else if (rightDist === minDist) {\n rightNodes.push(aNote)\n } else if (topDist === minDist) {\n topNodes.push(aNote)\n } else {\n bottomNodes.push(aNote)\n }\n }\n\n //Adjust the margins based on which regions are active\n\n const leftForce = new labella.Force({\n minPos:\n axisMarginOverride.top !== undefined\n ? 0 + axisMarginOverride.top\n : 0 - margin.top,\n maxPos:\n axisMarginOverride.bottom !== undefined\n ? size[1] - axisMarginOverride.bottom\n : bottomOn\n ? size[1]\n : size[1] + margin.bottom\n })\n .nodes(\n leftNodes.map((d) => {\n const noteY = d.props.noteData.y[0] || d.props.noteData.y\n return new labella.Node(\n noteY,\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n })\n )\n .compute()\n\n const rightForce = new labella.Force({\n minPos:\n axisMarginOverride.top !== undefined\n ? 0 + axisMarginOverride.top\n : topOn\n ? 0\n : 0 - margin.top,\n maxPos:\n axisMarginOverride.bottom !== undefined\n ? size[1] - axisMarginOverride.bottom\n : size[1] + margin.bottom\n })\n .nodes(\n rightNodes.map((d) => {\n const noteY = d.props.noteData.y[0] || d.props.noteData.y\n return new labella.Node(\n noteY,\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n })\n )\n .compute()\n\n const topForce = new labella.Force({\n minPos:\n axisMarginOverride.left !== undefined\n ? 0 + axisMarginOverride.left\n : leftOn\n ? 0\n : 0 - margin.left,\n maxPos:\n axisMarginOverride.right !== undefined\n ? size[0] - axisMarginOverride.right\n : size[0] + margin.right\n })\n .nodes(\n topNodes.map((d) => {\n const noteX = d.props.noteData.x[0] || d.props.noteData.x\n return new labella.Node(\n noteX,\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n })\n )\n .compute()\n\n const bottomForce = new labella.Force({\n minPos:\n axisMarginOverride.left !== undefined\n ? 0 + axisMarginOverride.left\n : 0 - margin.left,\n maxPos:\n axisMarginOverride.right !== undefined\n ? size[0] - axisMarginOverride.right\n : rightOn\n ? size[0]\n : size[0] + margin.right\n })\n .nodes(\n bottomNodes.map((d) => {\n const noteX = d.props.noteData.x[0] || d.props.noteData.x\n return new labella.Node(\n noteX,\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n })\n )\n .compute()\n\n const bottomOffset = Math.max(\n ...bottomNodes.map(\n (d) =>\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n )\n const topOffset = Math.max(\n ...topNodes.map(\n (d) =>\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n )\n const leftOffset = Math.max(\n ...leftNodes.map(\n (d) =>\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n )\n const rightOffset = Math.max(\n ...rightNodes.map(\n (d) =>\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n )\n\n // const nodeOffsetHeight = Math.max()\n\n const leftSortedNodes = leftForce.nodes()\n const rightSortedNodes = rightForce.nodes()\n const topSortedNodes = topForce.nodes()\n const bottomSortedNodes = bottomForce.nodes()\n\n leftNodes.forEach((note, i) => {\n const x =\n 0 -\n leftSortedNodes[i].layerIndex * leftOffset -\n marginOffsetFn(\"left\", axes, marginOffset)\n\n const y = leftSortedNodes[i].currentPos\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n\n if (note.props.noteData.note && !React.isValidElement(note)) {\n note.props.noteData.note.orientation =\n note.props.noteData.note.orientation || \"leftRight\"\n note.props.noteData.note.align =\n note.props.noteData.note.align || \"right\"\n }\n })\n\n rightNodes.forEach((note, i) => {\n const x =\n size[0] +\n rightSortedNodes[i].layerIndex * rightOffset +\n marginOffsetFn(\"right\", axes, marginOffset)\n const y = rightSortedNodes[i].currentPos\n\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n\n if (note.props.noteData.note && !React.isValidElement(note)) {\n note.props.noteData.note.orientation =\n note.props.noteData.note.orientation || \"leftRight\"\n note.props.noteData.note.align =\n note.props.noteData.note.align || \"left\"\n }\n })\n\n topNodes.forEach((note, i) => {\n const x = topSortedNodes[i].currentPos\n const y =\n 0 -\n topSortedNodes[i].layerIndex * topOffset -\n marginOffsetFn(\"top\", axes, marginOffset)\n\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n })\n\n bottomNodes.forEach((note, i) => {\n const x = bottomSortedNodes[i].currentPos\n const y =\n size[1] +\n bottomSortedNodes[i].layerIndex * bottomOffset +\n marginOffsetFn(\"bottom\", axes, marginOffset)\n\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n })\n\n return adjustableAnnotations\n }\n return adjustableAnnotations\n}\n\nconst generateSVGAnnotations = (\n props: AnnotationLayerProps,\n annotations: Object[]\n): NoteType[] => {\n const renderedAnnotations = annotations\n .map((d, i) => props.svgAnnotationRule(d, i, props))\n .filter((d) => d !== null && d !== undefined)\n\n return renderedAnnotations\n}\n\nconst generateHTMLAnnotations = (\n props: AnnotationLayerProps,\n annotations: Object[]\n): Object[] => {\n const renderedAnnotations = annotations\n .map((d, i) => props.htmlAnnotationRule(d, i, props))\n .filter((d) => d !== null && d !== undefined)\n\n return renderedAnnotations\n}\n\nconst createAnnotations = (\n props: AnnotationLayerProps,\n state: AnnotationLayerState\n) => {\n let adjustedAnnotations = state.adjustedAnnotations,\n adjustableAnnotationsKey = state.adjustedAnnotationsKey,\n adjustableAnnotations = state.adjustableAnnotations,\n fixedAnnotations = state.fixedAnnotations\n\n let renderedSVGAnnotations = []\n let renderedHTMLAnnotations = []\n\n const adjustedAnnotationsKey = state.adjustedAnnotationsKey,\n adjustedAnnotationsDataVersion = state.adjustedAnnotationsDataVersion\n\n const {\n annotations,\n annotationHandling = false,\n size,\n svgAnnotationRule,\n htmlAnnotationRule\n } = props\n\n const annotationProcessor: AnnotationHandling =\n typeof annotationHandling === \"object\"\n ? annotationHandling\n : { layout: { type: annotationHandling }, dataVersion: \"\" }\n\n const { dataVersion = \"\" } = annotationProcessor\n\n if (svgAnnotationRule) {\n const initialSVGAnnotations: NoteType[] = generateSVGAnnotations(\n props,\n annotations\n )\n\n adjustableAnnotationsKey = keyFromSVGAnnotations(\n initialSVGAnnotations,\n annotationProcessor,\n size\n )\n\n if (annotationHandling === false) {\n adjustedAnnotations = adjustableAnnotations\n }\n\n if (\n adjustedAnnotations.length !== adjustableAnnotations.length ||\n adjustedAnnotationsKey !== adjustableAnnotationsKey ||\n adjustedAnnotationsDataVersion !== dataVersion\n ) {\n adjustedAnnotations = processAnnotations(\n adjustableAnnotations,\n annotationProcessor,\n props\n )\n } else {\n //Handle when style or other attributes change\n adjustedAnnotations = adjustableAnnotations.map((d: NoteType, i) => {\n const oldAnnotation = adjustedAnnotations[i] as NoteType\n const newNoteData = {\n ...oldAnnotation.props.noteData,\n ...d.props.noteData\n }\n\n return <Annotation key={d.key} noteData={newNoteData} />\n })\n }\n\n renderedSVGAnnotations = [...adjustedAnnotations, ...fixedAnnotations]\n }\n\n if (htmlAnnotationRule) {\n renderedHTMLAnnotations = generateHTMLAnnotations(props, annotations)\n }\n\n return {\n svgAnnotations: renderedSVGAnnotations,\n htmlAnnotations: renderedHTMLAnnotations,\n adjustedAnnotations: adjustedAnnotations,\n adjustedAnnotationsKey: adjustableAnnotationsKey,\n adjustedAnnotationsDataVersion: dataVersion\n }\n}\n\nexport default function AnnotationLayer(props: AnnotationLayerProps) {\n const {\n legendSettings,\n margin,\n size,\n annotations: baseAnnotations,\n annotationHandling\n } = props\n\n const tooltip = useTooltip((store) => {\n return store.tooltip\n })\n\n let annotations =\n tooltip != null ? baseAnnotations.concat(tooltip) : baseAnnotations\n\n let changeTooltip = useTooltip((state) => state.changeTooltip)\n\n const voronoiHover = (d) => {\n changeTooltip(d)\n }\n\n const updatedAnnotationProps: UpdatedAnnotationLayerProps = {\n ...props,\n annotations,\n voronoiHover\n }\n\n const annotationProcessor: AnnotationHandling =\n typeof annotationHandling === \"object\"\n ? annotationHandling\n : { layout: { type: annotationHandling }, dataVersion: \"\" }\n\n const { dataVersion = \"\" } = annotationProcessor\n\n const [adjustedAnnotations, changeAdjustedAnnotations] = useState([])\n const [svgAnnotations, changeSVGAnnotations] = useState([])\n const [htmlAnnotations, changeHTMLAnnotations] = useState([])\n const [adjustedAnnotationsKey, changeAdjustedAnnotationsKey] = useState(\"\")\n const [adjustedAnnotationsDataVersion, changeAdjustedAnnotationsDataVersion] =\n useState(dataVersion)\n\n const initialSVGAnnotations: NoteType[] = generateSVGAnnotations(\n updatedAnnotationProps,\n annotations\n )\n\n const adjustableAnnotations = initialSVGAnnotations.filter(\n (d) => d.props && d.props.noteData && !d.props.noteData.fixedPosition\n )\n\n const updatedAnnotationsKey = keyFromSVGAnnotations(\n adjustableAnnotations,\n annotationProcessor,\n size\n )\n\n useEffect(() => {\n const fixedAnnotations = initialSVGAnnotations.filter(\n (d) => !d.props || !d.props.noteData || d.props.noteData.fixedPosition\n )\n\n const updatedState = createAnnotations(updatedAnnotationProps, {\n adjustedAnnotations,\n adjustedAnnotationsKey,\n adjustedAnnotationsDataVersion,\n adjustableAnnotations,\n fixedAnnotations\n })\n\n changeAdjustedAnnotations(updatedState.adjustedAnnotations)\n changeAdjustedAnnotationsKey(updatedState.adjustedAnnotationsKey)\n changeAdjustedAnnotationsDataVersion(\n updatedState.adjustedAnnotationsDataVersion\n )\n changeSVGAnnotations(updatedState.svgAnnotations)\n changeHTMLAnnotations(updatedState.htmlAnnotations) \n }, [\n updatedAnnotationsKey,\n dataVersion,\n annotations.length,\n annotations.map((a) => safeStringify(a)).join(\"-\")\n ])\n\n let renderedLegend\n if (legendSettings) {\n const positionHash = {\n left: [15, 15],\n right: [size[0] + 15, 15]\n }\n const { position = \"right\", title = \"Legend\" } = legendSettings\n const legendPosition = positionHash[position]\n renderedLegend = (\n <g transform={`translate(${legendPosition.join(\",\")})`}>\n <Legend {...legendSettings} title={title} position={position} />\n </g>\n )\n }\n\n // If there are no annotations but we have a legend, render just the legend\n if (annotations.length === 0 && !legendSettings) {\n return null\n }\n\n return (\n <div\n className=\"annotation-layer\"\n style={{\n position: \"absolute\",\n pointerEvents: \"none\",\n background: \"none\"\n }}\n >\n <svg\n className=\"annotation-layer-svg\"\n height={size[1]}\n width={size[0]}\n style={{\n background: \"none\",\n pointerEvents: \"none\",\n position: \"absolute\",\n left: `${margin.left}px`,\n top: `${margin.top}px`,\n overflow: \"visible\"\n }}\n >\n <g>\n {renderedLegend}\n {svgAnnotations}\n </g>\n </svg>\n <div\n className=\"annotation-layer-html\"\n style={{\n background: \"none\",\n pointerEvents: \"none\",\n position: \"absolute\",\n height: `${size[1]}px`,\n width: `${size[0]}px`,\n left: `${margin.left}px`,\n top: `${margin.top}px`\n }}\n >\n {htmlAnnotations}\n </div>\n </div>\n )\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useEffect, useRef } from \"react\"\nimport { select } from \"d3-selection\"\n\nconst flatten = (list) =>\n list.reduce(\n (a, b) =>\n a.concat(Array.isArray(b) ? flatten(b.slice().sort((a, b) => a - b)) : b),\n []\n )\n\nfunction flatShortArray(baseArray = []) {\n if (!Array.isArray(baseArray)) return \"not-array\"\n let array = baseArray.slice()\n if (!Array.isArray(array[0])) {\n array = array.slice().sort((a, b) => a - b)\n }\n const flat = flatten(array)\n\n const stringifiedFlattened = flat\n .map(\n (d) =>\n (d instanceof Date && d.toString()) ||\n (d !== undefined && d.toFixed && d.toFixed(2)) ||\n \"empty\"\n )\n .toString()\n return stringifiedFlattened\n}\n\nconst createBrush = (node, props) => {\n const { svgBrush: brush, selectedExtent: baseSelectedExtent } = props\n select(node).call(brush)\n if (baseSelectedExtent) {\n let selectedExtent = baseSelectedExtent\n if (Array.isArray(baseSelectedExtent[0])) {\n const sortedY = [selectedExtent[0][1], selectedExtent[1][1]].sort(\n (a, b) => a - b\n )\n selectedExtent = [\n [selectedExtent[0][0], sortedY[0]],\n [selectedExtent[1][0], sortedY[1]]\n ]\n }\n\n select(node).call(brush.move, selectedExtent)\n }\n}\n\ninterface BrushProps {\n extent?: number[] | number[][]\n selectedExtent?: number[] | number[][]\n svgBrush: { (): () => void; move: Function }\n position?: number[]\n}\n\nexport default function Brush(props: BrushProps) {\n const { extent, selectedExtent } = props\n\n const node = useRef(null)\n const flatExtent = flatShortArray(extent)\n const flatSelectedExtent = flatShortArray(selectedExtent)\n\n useEffect(() => {\n if (node?.current) {\n createBrush(node.current, props)\n }\n }, [flatExtent, flatSelectedExtent, node])\n\n const { position = [0, 0] } = props\n return (\n <g transform={`translate(${position})`} ref={node} className=\"xybrush\" />\n )\n}\n","export const projectedX = \"x\"\nexport const projectedY = \"y\"\nexport const projectedYMiddle = \"yMiddle\"\nexport const projectedYTop = \"yTop\"\nexport const projectedYBottom = \"yBottom\"\nexport const projectedXMiddle = \"xMiddle\"\nexport const projectedXTop = \"xTop\"\nexport const projectedXBottom = \"xBottom\"\n","import * as React from \"react\"\n\nimport {\n projectedY,\n projectedYTop,\n projectedYMiddle,\n projectedYBottom\n} from \"../constants/coordinateNames\"\n\nimport { extent as d3Extent } from \"d3-array\"\nimport { Delaunay, Voronoi } from \"d3-delaunay\"\n\nimport { CustomHoverType } from \"../types/annotationTypes\"\n\nimport {\n InteractionLayerProps,\n VoronoiEntryType\n} from \"../types/interactionTypes\"\n\n\nconst constructDataObject = (\n d?: { data?: Record<string, any> | object[]; type?: string },\n points?: Object[]\n) => {\n if (d === undefined) return d\n return d && d.data ? { points, ...d.data, ...d } : { points, ...d }\n}\n\nexport const changeVoronoi = (\n voronoiHover: Function,\n d: { type?: string; data?: Record<string, any> | object[] },\n customHoverTypes: CustomHoverType,\n customHoverBehavior: Function,\n points: Object[],\n e: React.MouseEvent\n) => {\n //Until semiotic 2\n const dataObject = constructDataObject(d, points)\n if (customHoverBehavior) customHoverBehavior(dataObject)\n\n if (!d) voronoiHover(null)\n else if (customHoverTypes === true) {\n const vorD = Object.assign({}, dataObject)\n vorD.type = vorD.type === \"column-hover\" ? \"column-hover\" : \"frame-hover\"\n voronoiHover(vorD, e)\n } else if (customHoverTypes) {\n const arrayWrappedHoverTypes = Array.isArray(customHoverTypes)\n ? customHoverTypes\n : [customHoverTypes]\n const mappedHoverTypes = arrayWrappedHoverTypes\n .map((c) => {\n const finalC = typeof c === \"function\" ? c(dataObject) : c\n if (!finalC) return undefined\n return Object.assign({}, dataObject, finalC)\n })\n .filter((d) => d)\n\n voronoiHover(mappedHoverTypes, e)\n }\n}\n\nexport const clickVoronoi = (\n d: Object,\n customClickBehavior: Function,\n points: Object[],\n e: React.MouseEvent\n) => {\n //Until semiotic 2\n const dataObject = constructDataObject(d, points)\n\n if (customClickBehavior) customClickBehavior(dataObject, e)\n}\nexport const doubleclickVoronoi = (\n d: Object,\n customDoubleClickBehavior: Function,\n points: Object[],\n e: React.MouseEvent\n) => {\n //Until semiotic 2\n const dataObject = constructDataObject(d, points)\n\n if (customDoubleClickBehavior) customDoubleClickBehavior(dataObject, e)\n}\n\nexport const brushStart = (\n e?: number[] | number[][],\n columnName?: string,\n data?: object,\n columnData?: object,\n interaction?\n) => {\n if (interaction && interaction.start)\n interaction.start(e, columnName, data, columnData)\n}\n\nexport const brushing = (\n e?: number[] | number[][],\n columnName?: string,\n data?: object,\n columnData?: object,\n interaction?\n) => {\n if (interaction && interaction.during)\n interaction.during(e, columnName, data, columnData)\n}\n\nexport const brushEnd = (\n e?: number[] | number[][],\n columnName?: string,\n data?: object,\n columnData?: object,\n interaction?\n) => {\n if (interaction && interaction.end)\n interaction.end(e, columnName, data, columnData)\n}\n\nexport const calculateOverlay = (\n props: InteractionLayerProps,\n voronoiHover: Function\n) => {\n let voronoiPaths = []\n const {\n xScale,\n yScale,\n points,\n projectedX,\n showLinePoints,\n size,\n overlay,\n interactionOverflow = { top: 0, bottom: 0, left: 0, right: 0 },\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n hoverAnnotation,\n margin,\n advancedSettings = {}\n } = props\n const whichPoints = {\n top: projectedYTop,\n bottom: projectedYBottom\n }\n\n const pointerStyle =\n customClickBehavior || customDoubleClickBehavior\n ? { cursor: \"pointer\" }\n : {}\n\n if (points && hoverAnnotation && !overlay) {\n const { voronoiFilter = () => true } = advancedSettings\n const voronoiDataset: VoronoiEntryType[] = []\n const voronoiUniqueMap = new Map()\n\n for (const d of points) {\n if (voronoiFilter({ ...d, ...d.data })) {\n const xValue = Math.floor(xScale(d[projectedX]))\n const yValue = Math.floor(\n yScale(\n showLinePoints && d[whichPoints[showLinePoints]] !== undefined\n ? d[whichPoints[showLinePoints]]\n : d[projectedYMiddle] !== undefined\n ? d[projectedYMiddle]\n : d[projectedY]\n )\n )\n if (\n xValue >= 0 - margin.left &&\n xValue <= size[0] + margin.right &&\n yValue >= 0 - margin.top &&\n yValue <= size[1] + margin.bottom &&\n xValue !== undefined &&\n yValue !== undefined &&\n isNaN(xValue) === false &&\n isNaN(yValue) === false\n ) {\n const pointKey = `${xValue},${yValue}`\n if (!voronoiUniqueMap.has(pointKey)) {\n const voronoiPoint = {\n ...d,\n coincidentPoints: [d],\n voronoiX: xValue,\n voronoiY: yValue\n }\n voronoiDataset.push(voronoiPoint)\n voronoiUniqueMap.set(pointKey, voronoiPoint)\n } else voronoiUniqueMap.get(pointKey).coincidentPoints.push(d)\n }\n }\n }\n\n let voronoiXExtent = d3Extent(voronoiDataset.map((d) => d.voronoiX))\n let voronoiYExtent = d3Extent(voronoiDataset.map((d) => d.voronoiY))\n\n if (voronoiXExtent[0] == null || voronoiYExtent == null) {\n voronoiXExtent = [0, 0]\n voronoiYExtent = [0, 0]\n }\n\n const voronoiExtent = [\n Math.min(voronoiXExtent[0] - 5, -interactionOverflow.left),\n Math.min(voronoiYExtent[0] - 5, -interactionOverflow.top),\n Math.max(voronoiXExtent[1] + 5, size[0] + interactionOverflow.right),\n Math.max(voronoiYExtent[1] + 5, size[1] + interactionOverflow.bottom)\n ]\n\n const delaunay = Delaunay.from(\n voronoiDataset,\n (d) => d.voronoiX,\n (d) => d.voronoiY\n )\n\n const voronoi = delaunay.voronoi(voronoiExtent)\n\n voronoiPaths = voronoiDataset.map((d, i: number) => {\n let clipPath = null\n if (advancedSettings.voronoiClipping) {\n const circleSize =\n advancedSettings.voronoiClipping === true\n ? 50\n : advancedSettings.voronoiClipping\n clipPath = (\n <clipPath id={`voronoi-${i}`}>\n <circle r={circleSize} cx={d.voronoiX} cy={d.voronoiY} />\n </clipPath>\n )\n }\n return (\n <g key={`voronoi-${i}`}>\n <path\n onClick={(e) => {\n clickVoronoi(voronoiDataset[i], customClickBehavior, points, e)\n }}\n onDoubleClick={(e) => {\n doubleclickVoronoi(\n voronoiDataset[i],\n customDoubleClickBehavior,\n points,\n e\n )\n }}\n onMouseEnter={(e) => {\n changeVoronoi(\n voronoiHover,\n voronoiDataset[i],\n hoverAnnotation,\n customHoverBehavior,\n points,\n e\n )\n }}\n onMouseLeave={(e) => {\n changeVoronoi(\n voronoiHover,\n undefined,\n undefined,\n customHoverBehavior,\n undefined,\n e\n )\n }}\n key={`interactionVoronoi${i}`}\n d={voronoi.renderCell(i)}\n style={{\n fillOpacity: 0,\n ...pointerStyle\n }}\n clipPath={`url(#voronoi-${i})`}\n />\n {clipPath}\n </g>\n )\n }, this)\n\n return voronoiPaths\n } else if (overlay) {\n const renderedOverlay: Array<React.ReactNode> = overlay.map(\n (\n overlayRegion: {\n overlayData: object\n renderElement: React.ReactNode\n },\n i: number\n ) => {\n const { overlayData, ...rest } = overlayRegion\n const overlayProps = {\n key: `overlay-${i}`,\n onMouseEnter: (e) => {\n changeVoronoi(\n voronoiHover,\n overlayData,\n props.hoverAnnotation,\n customHoverBehavior,\n points,\n e\n )\n },\n onMouseLeave: (e) => {\n changeVoronoi(\n voronoiHover,\n undefined,\n undefined,\n customHoverBehavior,\n undefined,\n e\n )\n },\n onClick: (e) => {\n clickVoronoi(overlayData, customClickBehavior, points, e)\n },\n onDoubleClick: (e) => {\n doubleclickVoronoi(\n overlayData,\n customDoubleClickBehavior,\n points,\n e\n )\n },\n style: { opacity: 0, ...pointerStyle }\n }\n\n if (React.isValidElement(overlayRegion.renderElement)) {\n return React.cloneElement(overlayRegion.renderElement, overlayProps)\n } else {\n const { markType, ...restProps } = rest as { markType?: string; [key: string]: unknown }\n return React.createElement(markType || 'path', {\n ...restProps,\n key: `overlay-${i}`,\n ...overlayProps\n })\n }\n }\n )\n\n return renderedOverlay\n }\n}\n","import { arc, line, curveLinearClosed } from \"d3-shape\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nconst emptyObjectReturnFn = () => ({})\n\nconst twoPI = Math.PI * 2\n\nconst dedupeRibbonPoints =\n (weight = 1) =>\n (p, c) => {\n const l = p[p.length - 1]\n if (\n !l ||\n Math.round(l.x / weight) !== Math.round(c.x / weight) ||\n Math.round(l.y / weight) !== Math.round(c.y / weight)\n ) {\n p.push(c)\n }\n return p\n }\n\nexport const arcTweener = (oldProps, newProps) => {\n const innerRadiusInterpolator = interpolateNumber(\n oldProps.innerRadius,\n newProps.innerRadius\n )\n const outerRadiusInterpolator = interpolateNumber(\n oldProps.outerRadius,\n newProps.outerRadius\n )\n const startAngleInterpolator = interpolateNumber(\n oldProps.startAngle,\n newProps.startAngle\n )\n const endAngleInterpolator = interpolateNumber(\n oldProps.endAngle,\n newProps.endAngle\n )\n\n return (t) => {\n const sliceGenerator = arc()\n .innerRadius(innerRadiusInterpolator(t))\n .outerRadius(outerRadiusInterpolator(t))\n return sliceGenerator({\n startAngle: startAngleInterpolator(t),\n endAngle: endAngleInterpolator(t)\n })\n }\n}\n\nexport const drawAreaConnector = ({\n x1,\n x2,\n y1,\n y2,\n sizeX1,\n sizeY1,\n sizeX2,\n sizeY2\n}) => {\n return `M${x1},${y1}L${x2},${y2}L${x2 + sizeX2},${y2 + sizeY2}L${\n x1 + sizeX1\n },${y1 + sizeY1}Z`\n}\n\nexport const groupBarMark = ({\n bins,\n binMax,\n relativeBuckets,\n columnWidth,\n projection,\n adjustedSize,\n summaryI,\n summary,\n summaryStyle,\n type\n}) => {\n const mappedBins = []\n const mappedPoints = []\n const actualMax = (relativeBuckets && relativeBuckets[summary.name]) || binMax\n\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n const barPadding = type.padding || 0\n\n bins.forEach((d, i) => {\n const opacity = d.value / actualMax\n const additionalStyle = summaryElementStylingFn(d.value, opacity, d.pieces)\n const finalStyle =\n type.type === \"heatmap\"\n ? { opacity: opacity, fill: summaryStyle.fill, ...additionalStyle }\n : { ...summaryStyle, ...additionalStyle }\n\n const thickness = Math.max(1, d.y1 - barPadding * 2)\n\n const finalColumnWidth =\n type.type === \"heatmap\" ? columnWidth : columnWidth * opacity\n let yProp = d.y + barPadding\n let xProp =\n type.type === \"heatmap\" || type.flip\n ? -columnWidth / 2\n : columnWidth / 2 - finalColumnWidth\n let height = thickness\n let width = finalColumnWidth\n let xOffset =\n type.type === \"heatmap\" ? finalColumnWidth / 2 : finalColumnWidth\n let yOffset = d.y1 / 2\n\n if (projection === \"horizontal\") {\n yProp =\n type.type === \"heatmap\"\n ? -columnWidth / 2\n : type.flip\n ? -columnWidth / 2\n : columnWidth / 2 - finalColumnWidth\n xProp = d.y - d.y1 + barPadding\n height = finalColumnWidth\n width = thickness\n yOffset =\n type.type === \"heatmap\" ? finalColumnWidth / 2 : finalColumnWidth\n xOffset = d.y1 / 2\n } else if (projection === \"radial\") {\n const arcGenerator = arc()\n .innerRadius(d.y / 2)\n .outerRadius((d.y + d.y1) / 2)\n\n const angle = summary.pct - summary.pct_padding\n let startAngle = summary.pct_middle - summary.pct_padding\n\n let endAngle =\n type.type === \"heatmap\"\n ? startAngle + angle\n : startAngle + angle * opacity\n startAngle *= twoPI\n endAngle *= twoPI\n\n const arcAdjustX = adjustedSize[0] / 2\n const arcAdjustY = adjustedSize[1] / 2\n\n const arcTranslate = `translate(${arcAdjustX},${arcAdjustY})`\n const arcCenter = arcGenerator.centroid({ startAngle, endAngle })\n mappedPoints.push({\n key: summary.name,\n value: d.value,\n pieces: d.pieces.map((p) => p.piece),\n label: \"Heatmap\",\n x: arcCenter[0] + arcAdjustX,\n y: arcCenter[1] + arcAdjustY\n })\n mappedBins.push({\n markType: \"path\",\n transform: arcTranslate,\n key: `groupIcon-${summaryI}-${i}`,\n d: arcGenerator({ startAngle, endAngle }),\n style: finalStyle\n })\n }\n if (projection !== \"radial\") {\n mappedPoints.push({\n key: summary.name,\n value: d.value,\n pieces: d.pieces.map((p) => p.piece),\n label: \"Heatmap\",\n x: xProp + xOffset,\n y: yProp + yOffset\n })\n\n mappedBins.push({\n markType: \"rect\",\n key: `groupIcon-${summaryI}-${i}`,\n x: xProp,\n y: yProp,\n height: height,\n width: width,\n style: finalStyle\n })\n }\n })\n\n return { marks: mappedBins, points: mappedPoints }\n}\n\n// FROM d3-svg-ribbon\nexport function linearRibbon() {\n const _lineConstructor = line()\n let _xAccessor = function (d) {\n return d.x\n }\n let _yAccessor = function (d) {\n return d.y\n }\n let _rAccessor = function (d) {\n return d.r\n }\n let _interpolator = curveLinearClosed\n\n function _ribbon(pathData) {\n if (pathData.multiple) {\n const original_r = _rAccessor\n const parallelTotal = pathData.multiple.reduce((p, c) => p + c.weight, 0)\n\n _rAccessor = () => parallelTotal\n\n const totalPoints = buildRibbon(pathData.points)\n\n let currentPoints = totalPoints\n .filter((d) => d.direction === \"forward\")\n .reduce(dedupeRibbonPoints(), [])\n\n const allRibbons = []\n\n pathData.multiple.forEach((siblingPath, siblingI) => {\n _rAccessor = () => siblingPath.weight\n const currentRibbon = buildRibbon(currentPoints)\n allRibbons.push(currentRibbon)\n const nextSibling = pathData.multiple[siblingI + 1]\n\n if (nextSibling) {\n const currentLeftSide = currentRibbon\n .reverse()\n .filter((d) => d.direction === \"back\")\n .reduce(dedupeRibbonPoints(), [])\n\n _rAccessor = () => nextSibling.weight\n\n const leftHandInflatedRibbon = buildRibbon(currentLeftSide)\n currentPoints = leftHandInflatedRibbon\n .reverse()\n .filter((d) => d.direction === \"back\")\n .reduce(dedupeRibbonPoints(), [])\n }\n })\n\n _rAccessor = original_r\n return allRibbons.map((d) =>\n _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(d)\n )\n }\n const bothPoints = buildRibbon(pathData).reduce(dedupeRibbonPoints(), [])\n\n return _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(\n bothPoints\n )\n }\n\n _ribbon.x = function (_value) {\n if (!arguments.length) return _xAccessor\n\n _xAccessor = _value\n return _ribbon\n }\n\n _ribbon.y = function (_value) {\n if (!arguments.length) return _yAccessor\n\n _yAccessor = _value\n return _ribbon\n }\n\n _ribbon.r = function (_value) {\n if (!arguments.length) return _rAccessor\n\n _rAccessor = _value\n return _ribbon\n }\n\n _ribbon.interpolate = function (_value) {\n if (!arguments.length) return _interpolator\n\n _interpolator = _value\n return _ribbon\n }\n\n return _ribbon\n\n function offsetEdge(d) {\n const diffX = _yAccessor(d.target) - _yAccessor(d.source)\n const diffY = _xAccessor(d.target) - _xAccessor(d.source)\n\n const angle0 = Math.atan2(diffY, diffX) + Math.PI / 2\n const angle1 = angle0 + Math.PI * 0.5\n const angle2 = angle0 + Math.PI * 0.5\n\n const x1 = _xAccessor(d.source) + _rAccessor(d.source) * Math.cos(angle1)\n const y1 = _yAccessor(d.source) - _rAccessor(d.source) * Math.sin(angle1)\n const x2 = _xAccessor(d.target) + _rAccessor(d.target) * Math.cos(angle2)\n const y2 = _yAccessor(d.target) - _rAccessor(d.target) * Math.sin(angle2)\n\n return { x1: x1, y1: y1, x2: x2, y2: y2 }\n }\n\n function buildRibbon(points) {\n const bothCode = []\n let x = 0\n let transformedPoints = { x1: 0, y1: 0, x2: 0, y2: 0 }\n\n while (x < points.length) {\n if (x !== points.length - 1) {\n transformedPoints = offsetEdge({\n source: points[x],\n target: points[x + 1]\n })\n const p1 = {\n x: transformedPoints.x1,\n y: transformedPoints.y1,\n direction: \"forward\"\n }\n const p2 = {\n x: transformedPoints.x2,\n y: transformedPoints.y2,\n direction: \"forward\"\n }\n bothCode.push(p1, p2)\n if (bothCode.length > 3) {\n const l = bothCode.length - 1\n const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] }\n const lineB = { a: bothCode[l - 1], b: bothCode[l] }\n const intersect = findIntersect(\n lineA.a.x,\n lineA.a.y,\n lineA.b.x,\n lineA.b.y,\n lineB.a.x,\n lineB.a.y,\n lineB.b.x,\n lineB.b.y\n )\n if (intersect.found === true) {\n lineA.b.x = intersect.x\n lineA.b.y = intersect.y\n lineB.a.x = intersect.x\n lineB.a.y = intersect.y\n }\n }\n }\n\n x++\n }\n x--\n //Back\n while (x >= 0) {\n if (x !== 0) {\n transformedPoints = offsetEdge({\n source: points[x],\n target: points[x - 1]\n })\n const p1 = {\n x: transformedPoints.x1,\n y: transformedPoints.y1,\n direction: \"back\"\n }\n const p2 = {\n x: transformedPoints.x2,\n y: transformedPoints.y2,\n direction: \"back\"\n }\n bothCode.push(p1, p2)\n if (bothCode.length > 3) {\n const l = bothCode.length - 1\n const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] }\n const lineB = { a: bothCode[l - 1], b: bothCode[l] }\n const intersect = findIntersect(\n lineA.a.x,\n lineA.a.y,\n lineA.b.x,\n lineA.b.y,\n lineB.a.x,\n lineB.a.y,\n lineB.b.x,\n lineB.b.y\n )\n if (intersect.found === true) {\n lineA.b.x = intersect.x\n lineA.b.y = intersect.y\n lineB.a.x = intersect.x\n lineB.a.y = intersect.y\n }\n }\n }\n\n x--\n }\n\n return bothCode\n }\n\n function findIntersect(l1x1, l1y1, l1x2, l1y2, l2x1, l2y1, l2x2, l2y2) {\n let a, b\n\n const result = {\n x: null,\n y: null,\n found: false\n }\n\n const d = (l2y2 - l2y1) * (l1x2 - l1x1) - (l2x2 - l2x1) * (l1y2 - l1y1)\n if (d === 0) {\n return result\n }\n a = l1y1 - l2y1\n b = l1x1 - l2x1\n const n1 = (l2x2 - l2x1) * a - (l2y2 - l2y1) * b\n const n2 = (l1x2 - l1x1) * a - (l1y2 - l1y1) * b\n a = n1 / d\n b = n2 / d\n\n result.x = l1x1 + a * (l1x2 - l1x1)\n result.y = l1y1 + a * (l1y2 - l1y1)\n\n if (a > 0 && a < 1 && b > 0 && b < 1) {\n result.found = true\n }\n\n return result\n }\n}\n","import * as React from \"react\"\n\n\nimport { ScaleLinear } from \"d3-scale\"\n\ntype RenderModeFnType = (d: number, i: number) => string | Record<string, any>\n\ntype AxisPiecesFnType = {\n renderMode?: RenderModeFnType\n padding: number\n scale: ScaleLinear<number, number>\n ticks: number\n tickValues: number[] | Function\n orient: \"left\" | \"right\" | \"top\" | \"bottom\"\n size: number[]\n footer: boolean\n tickSize: number\n baseline?: boolean | \"under\"\n jaggedBase?: boolean\n}\n\nconst horizontalTornTickGenerator = (width, ticks, y, orient) => {\n const step = width / ticks\n let currentStep = 0\n let tickPath = `M0,${y}`\n const mod = orient === \"right\" ? -1 : 1\n while (currentStep <= width) {\n tickPath += `L${currentStep},${y}`\n if (currentStep < width) {\n tickPath += `L${currentStep + step / 2},${y + 10 * mod}`\n }\n currentStep += step\n }\n return tickPath\n}\n\nconst verticalTornTickGenerator = (height, ticks, x, orient) => {\n const step = height / ticks\n let currentStep = 0\n let tickPath = `M${x},0`\n const mod = orient === \"bottom\" ? -1 : 1\n while (currentStep <= height) {\n tickPath += `L${x},${currentStep}`\n if (currentStep < height) {\n tickPath += `L${x + 10 * mod},${currentStep + step / 2}`\n }\n currentStep += step\n }\n return tickPath\n}\n\nconst generateTornBaseline = (orient, baselineSettings) => {\n let tornD = \"\"\n const { x1, x2, y1, y2 } = baselineSettings\n if (orient === \"left\" || orient === \"right\") {\n const calcWidth = Math.abs(x2 - x1)\n const ticks = Math.ceil(calcWidth / 40)\n tornD = horizontalTornTickGenerator(\n calcWidth,\n ticks,\n orient === \"right\" ? 0 : y1,\n orient\n )\n } else {\n const calcHeight = Math.abs(y2 - y1)\n const ticks = Math.ceil(calcHeight / 40)\n tornD = verticalTornTickGenerator(calcHeight, ticks, x1, orient)\n }\n return tornD\n}\n\nconst defaultTickLineGenerator = ({\n xy,\n orient,\n i,\n \n className = \"\",\n jaggedBase\n}) => {\n let genD = `M${xy.x1},${xy.y1}L${xy.x2},${xy.y2}`\n if (jaggedBase && i === 0) {\n genD = generateTornBaseline(orient, xy)\n }\n return (\n <path key={i}\n \n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1px\"\n d={genD}\n className={`tick-line tick ${orient} ${className}`}\n />\n )\n}\n\nconst outboundTickLineGenerator = ({ xy, orient, i, className = \"\" }) => {\n const tickLength = 8\n let genD = `M-4,${xy.y1}L${xy.x1},${xy.y2}`\n if (orient === \"left\") {\n genD = `M${xy.x1 - tickLength},${xy.y1}L${xy.x1},${xy.y2}`\n } else if (orient === \"right\") {\n genD = `M${xy.x2},${xy.y1}L${xy.x2 + tickLength},${xy.y2}`\n } else if (orient === \"top\") {\n genD = `M${xy.x1},${xy.y1 - tickLength}L${xy.x1},${xy.y1}`\n } else if (orient === \"bottom\") {\n genD = `M${xy.x1},${xy.y2}L${xy.x1},${xy.y2 + tickLength}`\n }\n return (\n <path key={i}\n \n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1px\"\n d={genD}\n className={`outbound-tick-line tick ${orient} ${className}`}\n />\n )\n}\n\nexport function generateTickValues(tickValues, ticks, scale) {\n const axisSize = Math.abs(scale.range()[1] - scale.range()[0])\n\n if (!tickValues) {\n if (!ticks) {\n ticks = Math.max(1, Math.floor(axisSize / 40))\n }\n tickValues = (scale.ticks && scale.ticks(ticks)) || scale.domain()\n }\n\n return tickValues\n}\n\nexport function axisPieces({\n renderMode = () => undefined,\n padding = 5,\n scale,\n ticks,\n tickValues = generateTickValues(undefined, ticks, scale),\n orient = \"left\",\n size,\n footer = false,\n tickSize = footer\n ? -10\n : [\"top\", \"bottom\"].find((d) => d === orient)\n ? (size ? size[1] : 0)\n : (size ? size[0] : 0),\n jaggedBase\n}: AxisPiecesFnType) {\n //returns x1 (start of line), x2 (end of line) associated with the value of the tick\n let axisDomain = [],\n position1,\n position2,\n domain1,\n domain2,\n tposition1,\n tposition2,\n textPositionMod = 0,\n textPositionMod2 = 0,\n defaultAnchor = \"middle\"\n\n switch (orient) {\n case \"top\":\n position1 = \"x1\"\n position2 = \"x2\"\n domain1 = \"y1\"\n domain2 = \"y2\"\n axisDomain = [0, tickSize]\n tposition1 = \"tx\"\n tposition2 = \"ty\"\n textPositionMod -= 20 - padding\n break\n case \"bottom\":\n position1 = \"x1\"\n position2 = \"x2\"\n domain1 = \"y2\"\n domain2 = \"y1\"\n axisDomain = size ? [size[1], size[1] - tickSize] : [0, -tickSize]\n tposition1 = \"tx\"\n tposition2 = \"ty\"\n textPositionMod += 20 + padding\n break\n case \"right\":\n position1 = \"y2\"\n position2 = \"y1\"\n domain1 = \"x2\"\n domain2 = \"x1\"\n axisDomain = size ? [size[0], size[0] - tickSize] : [0, -tickSize]\n tposition1 = \"ty\"\n tposition2 = \"tx\"\n textPositionMod += 5 + padding\n textPositionMod2 += 5\n defaultAnchor = \"start\"\n break\n //left\n default:\n position1 = \"y1\"\n position2 = \"y2\"\n domain1 = \"x1\"\n domain2 = \"x2\"\n axisDomain = [0, tickSize]\n tposition1 = \"ty\"\n tposition2 = \"tx\"\n textPositionMod -= 5 + padding\n textPositionMod2 += 5\n defaultAnchor = \"end\"\n break\n }\n let generatedTicks =\n tickValues instanceof Function ? tickValues({ orient }) : tickValues\n\n if (\n jaggedBase &&\n generatedTicks.find((t) => t === scale.domain()[0]) === undefined\n ) {\n generatedTicks = [scale.domain()[0], ...generatedTicks]\n }\n\n return generatedTicks.map((tick, i) => {\n const tickPosition = scale(tick)\n\n return {\n [position1]: tickPosition,\n [position2]: tickPosition,\n [domain1]: axisDomain[0],\n [domain2]: axisDomain[1],\n [tposition1]: tickPosition + textPositionMod2,\n [tposition2]: axisDomain[0] + textPositionMod,\n defaultAnchor,\n renderMode: renderMode(tick, i),\n value: tick\n }\n })\n}\n\nexport const axisLabels = ({\n axisParts,\n tickFormat,\n rotate = 0,\n center = false,\n orient\n}) => {\n return axisParts.map((axisPart, i) => {\n let renderedValue = tickFormat(axisPart.value, i)\n if (typeof renderedValue !== \"object\" || renderedValue instanceof Date) {\n renderedValue = (\n <text textAnchor={axisPart.defaultAnchor} className=\"axis-label\">\n {renderedValue.toString ? renderedValue.toString() : renderedValue}\n </text>\n )\n }\n\n let textX = axisPart.tx\n let textY = axisPart.ty\n if (center) {\n switch (orient) {\n case \"right\":\n textX -= (axisPart.x2 - axisPart.x1) / 2\n break\n case \"left\":\n textX += (axisPart.x2 - axisPart.x1) / 2\n break\n case \"top\":\n textY += (axisPart.y2 - axisPart.y1) / 2\n break\n case \"bottom\":\n textY -= (axisPart.y2 - axisPart.y1) / 2\n break\n }\n }\n\n return (\n <g\n key={i}\n pointerEvents=\"none\"\n transform={`translate(${textX},${textY}) rotate(${rotate})`}\n className=\"axis-label\"\n >\n {renderedValue}\n </g>\n )\n })\n}\n\nexport const baselineGenerator = (orient, size, className) => {\n const offsets = {\n left: { x: 0, y: 0, width: 0, height: size ? size[1] : 0 },\n right: { x: size ? size[0] : 0, y: 0, width: 0, height: size ? size[1] : 0 },\n top: { x: 0, y: 0, width: size ? size[0] : 0, height: 0 },\n bottom: { x: 0, y: size ? size[1] : 0, width: size ? size[0] : 0, height: 0 }\n }\n\n const orientOffset = offsets[orient]\n\n return (\n <line\n key=\"baseline\"\n className={`axis-baseline ${className}`}\n stroke=\"currentColor\"\n strokeLinecap=\"square\"\n x1={orientOffset.x}\n x2={orientOffset.x + orientOffset.width}\n y1={orientOffset.y}\n y2={orientOffset.y + orientOffset.height}\n />\n )\n}\n\nexport const axisLines = ({\n axisParts,\n orient,\n tickLineGenerator = defaultTickLineGenerator,\n \n className,\n jaggedBase,\n scale,\n showOutboundTickLines = false\n}: {\n axisParts: object[]\n orient: string\n tickLineGenerator: Function\n className: string\n jaggedBase?: boolean\n scale: ScaleLinear<number, number>\n showOutboundTickLines?: boolean\n}) => {\n const axisLines = axisParts.map((axisPart, i) =>\n tickLineGenerator({\n xy: axisPart,\n orient,\n i,\n \n className,\n jaggedBase,\n scale\n })\n ) as React.ReactNode[]\n\n const outboundAxisLines = showOutboundTickLines\n ? (axisParts.map((axisPart, i) =>\n outboundTickLineGenerator({\n xy: axisPart,\n orient,\n i,\n className\n })\n ) as React.ReactNode)\n : []\n\n return [...axisLines, outboundAxisLines]\n}\n","import React from \"react\"\nimport { AxisSummaryTypeSettings } from \"./../types/generalTypes\"\n\nexport interface SummaryGraphicProps {\n translation: {\n left: Array<number>\n right: Array<number>\n top: Array<number>\n bottom: Array<number>\n }\n orient: \"left\" | \"right\" | \"top\" | \"bottom\"\n decoratedSummaryType: {\n type: string\n }\n summaryWidth: number\n renderedSummary: any\n points?: React.ReactNode\n}\n\nfunction translateX({ t, o, w }: { t: string; o: string; w: number }) {\n if ((t === \"contour\" || t === \"boxplot\") && (o === \"left\" || o === \"right\")) {\n return w / 2\n } else {\n return 0\n }\n}\n\nfunction translateY({ t, o, w }: { t: string; o: string; w: number }) {\n if ((t === \"contour\" || t === \"boxplot\") && (o === \"top\" || o === \"bottom\")) {\n return w / 2\n } else {\n return 0\n }\n}\n\nexport default function SummaryGraphic(props: SummaryGraphicProps) {\n const {\n translation,\n orient,\n decoratedSummaryType,\n summaryWidth,\n renderedSummary,\n points\n } = props\n return (\n <g\n className=\"marginal-graphics\"\n transform={`translate(${translation[orient]})`}\n >\n <g\n transform={`translate(${translateX({\n t: decoratedSummaryType.type,\n o: orient,\n w: summaryWidth\n })},${translateY({\n t: decoratedSummaryType.type,\n o: orient,\n w: summaryWidth\n })})`}\n >\n {renderedSummary}\n </g>\n {points}\n </g>\n )\n}\n","import React from 'react';\n\nexport interface AxisTitleProps {\n className: string,\n translation: Array<number>,\n position: Array<number>,\n rotation: number | string,\n labelName: any,\n anchorMod: \"inherit\" | \"middle\" | \"end\" | \"start\"\n}\n\nexport default function AxisTitle(props: AxisTitleProps) { \n const { className, translation, position, rotation, labelName, anchorMod } = props;\n return (\n <g\n className={`axis-title ${className}`}\n transform={`translate(${[\n translation[0] + position[0],\n translation[1] + position[1]\n ]}) rotate(${rotation})`}\n >\n {React.isValidElement(labelName) ? (\n labelName\n ) : (\n <text textAnchor={anchorMod}>{labelName}</text>\n )}\n </g>\n )\n}","import * as React from \"react\"\n\nexport function pointOnArcAtAngle(center, angle, distance) {\n const radians = Math.PI * (angle + 0.75) * 2\n\n const xPosition = center[0] + distance * Math.cos(radians)\n const yPosition = center[1] + distance * Math.sin(radians)\n\n return [xPosition, yPosition]\n}\n\nexport const renderLaidOutPieces = ({\n data,\n shouldRender,\n canvasRender,\n canvasDrawing,\n styleFn,\n classFn,\n renderKeyFn,\n ariaLabel,\n axis\n}) => {\n const valueFormat = axis && axis[0] && axis[0].tickFormat\n if (!shouldRender) return null\n const renderedPieces = []\n data.forEach((d, i) => {\n if (canvasRender && canvasRender(d) === true) {\n const canvasPiece = {\n baseClass: \"orframe-piece\",\n tx: d.tx || 0,\n ty: d.ty || 0,\n d: d.piece,\n i,\n markProps: d.renderElement || d,\n styleFn: styleFn,\n renderFn: () => d.renderValue,\n classFn\n }\n canvasDrawing.push(canvasPiece)\n } else {\n if (React.isValidElement(d.renderElement || d)) {\n renderedPieces.push(d.renderElement || d)\n } else {\n const pieceAriaLabel = ariaLabel\n ? `${d.o} ${ariaLabel.items} value ${\n (valueFormat && valueFormat(d.piece.value)) || d.piece.value\n }`\n : \"\"\n const key = renderKeyFn\n ? renderKeyFn(d.piece)\n : d.renderKey || `piece-render-${i}`\n\n const elementData = d.renderElement || d\n const { markType, style = {}, ...restProps } = elementData\n\n // Merge style into direct props\n const elementProps = { ...restProps, key, \"aria-label\": pieceAriaLabel }\n if (style.fill !== undefined) elementProps.fill = style.fill\n if (style.stroke !== undefined) elementProps.stroke = style.stroke\n if (style.strokeWidth !== undefined) elementProps.strokeWidth = style.strokeWidth\n if (style.opacity !== undefined) elementProps.opacity = style.opacity\n if (style.fillOpacity !== undefined) elementProps.fillOpacity = style.fillOpacity\n if (style.strokeOpacity !== undefined) elementProps.strokeOpacity = style.strokeOpacity\n\n const remainingStyles = { ...style }\n delete remainingStyles.fill\n delete remainingStyles.stroke\n delete remainingStyles.strokeWidth\n delete remainingStyles.opacity\n delete remainingStyles.fillOpacity\n delete remainingStyles.strokeOpacity\n if (Object.keys(remainingStyles).length > 0) {\n elementProps.style = remainingStyles\n }\n\n if (markType) {\n renderedPieces.push(React.createElement(markType, elementProps))\n }\n }\n }\n })\n\n return renderedPieces\n}\n","import { quantile } from \"d3-array\"\nimport { arc } from \"d3-shape\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\nimport { scaleLinear } from \"d3-scale\"\n\ntype BoxplotFnType = {\n data: Record<string, any>[]\n type: Record<string, any>\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: \"horizontal\" | \"vertical\" | \"radial\"\n adjustedSize: number[]\n}\n\nconst emptyObjectReturnFn = () => ({})\n\nexport function boxplotRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n}: BoxplotFnType) {\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n\n const { outliers, fixedInput } = type\n\n const keys = Object.keys(data)\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n keys.forEach((key, summaryI) => {\n const summary = data[key]\n const eventListeners = eventListenersGenerator(summary, summaryI)\n\n const columnWidth = summary.width\n\n const thisSummaryData = summary.pieceData\n\n const calculatedSummaryStyle = styleFn(thisSummaryData[0].data, summaryI)\n const calculatedSummaryClass = classFn(thisSummaryData[0].data, summaryI)\n\n let summaryPositionNest,\n summaryValueNest,\n translate,\n extentlineX1,\n extentlineX2,\n extentlineY1,\n extentlineY2,\n topLineX1,\n topLineX2,\n midLineX1,\n midLineX2,\n bottomLineX1,\n bottomLineX2,\n rectTopWidth,\n rectTopHeight,\n rectTopY,\n rectTopX,\n rectBottomWidth,\n rectBottomHeight,\n rectBottomY,\n rectBottomX,\n rectWholeWidth,\n rectWholeHeight,\n rectWholeY,\n rectWholeX,\n topLineY1,\n topLineY2,\n bottomLineY1,\n bottomLineY2,\n midLineY1,\n midLineY2\n\n summaryValueNest = thisSummaryData.map((p) => p.value).sort((a, b) => a - b)\n\n if (fixedInput !== true || summaryValueNest.length !== 5) {\n summaryValueNest = [\n quantile(summaryValueNest, 0.0),\n quantile(summaryValueNest, 0.25),\n quantile(summaryValueNest, 0.5),\n quantile(summaryValueNest, 0.75),\n quantile(summaryValueNest, 1.0)\n ]\n }\n\n const iqr = summaryValueNest[3] - summaryValueNest[1]\n let minOutlier, maxOutlier\n\n if (outliers) {\n minOutlier = summaryValueNest[1] - iqr * 1.5\n maxOutlier = summaryValueNest[3] + iqr * 1.5\n\n summaryValueNest[0] = Math.max(summaryValueNest[0], minOutlier)\n summaryValueNest[4] = Math.min(summaryValueNest[4], maxOutlier)\n }\n\n // Derive position quantiles from value quantiles via linear interpolation.\n // This avoids depending on d3.quantile sort-order behavior (which changed in v3).\n const posAccessor = projection === \"vertical\"\n ? (p: { scaledVerticalValue: number }) => p.scaledVerticalValue\n : (p: { scaledValue: number }) => p.scaledValue\n\n const sortedPieces = [...thisSummaryData].sort((a, b) => a.value - b.value)\n const valMin = sortedPieces[0].value\n const valMax = sortedPieces[sortedPieces.length - 1].value\n const posOfMin = posAccessor(sortedPieces[0])\n const posOfMax = posAccessor(sortedPieces[sortedPieces.length - 1])\n\n // summaryPositionNest indices now match summaryValueNest:\n // [0]=min, [1]=Q1, [2]=median, [3]=Q3, [4]=max\n summaryPositionNest = summaryValueNest.map((v: number) => {\n if (valMax === valMin) return (posOfMin + posOfMax) / 2\n return posOfMin + (v - valMin) / (valMax - valMin) * (posOfMax - posOfMin)\n })\n\n if (projection === \"vertical\") {\n translate = `translate(${summary.x + summary.width / 2},0)`\n\n extentlineX1 = 0\n extentlineX2 = 0\n extentlineY1 = summaryPositionNest[0]\n extentlineY2 = summaryPositionNest[4]\n topLineX1 = -columnWidth / 2\n topLineX2 = columnWidth / 2\n midLineX1 = -columnWidth / 2\n midLineX2 = columnWidth / 2\n bottomLineX1 = -columnWidth / 2\n bottomLineX2 = columnWidth / 2\n rectBottomWidth = columnWidth\n rectBottomHeight = summaryPositionNest[1] - summaryPositionNest[2]\n rectBottomY = summaryPositionNest[2]\n rectBottomX = -columnWidth / 2\n rectTopWidth = columnWidth\n rectTopHeight = summaryPositionNest[2] - summaryPositionNest[3]\n rectWholeWidth = columnWidth\n rectWholeHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectWholeY = summaryPositionNest[3]\n rectWholeX = -columnWidth / 2\n rectTopY = summaryPositionNest[3]\n rectTopX = -columnWidth / 2\n topLineY1 = summaryPositionNest[0]\n topLineY2 = summaryPositionNest[0]\n bottomLineY1 = summaryPositionNest[4]\n bottomLineY2 = summaryPositionNest[4]\n midLineY1 = summaryPositionNest[2]\n midLineY2 = summaryPositionNest[2]\n\n const columnCenter = summary.x + summary.width / 2\n\n summaryXYCoords.push(\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: columnCenter,\n y: summaryPositionNest[4],\n value: summaryValueNest[4]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: columnCenter,\n y: summaryPositionNest[3],\n value: summaryValueNest[3]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: columnCenter,\n y: summaryPositionNest[2],\n value: summaryValueNest[2]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: columnCenter,\n y: summaryPositionNest[1],\n value: summaryValueNest[1]\n },\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: columnCenter,\n y: summaryPositionNest[0],\n value: summaryValueNest[0]\n }\n )\n } else if (projection === \"horizontal\") {\n const columnCenter = summary.x + summary.width / 2\n\n translate = `translate(0,${columnCenter})`\n\n extentlineY1 = 0\n extentlineY2 = 0\n extentlineX1 = summaryPositionNest[0]\n extentlineX2 = summaryPositionNest[4]\n topLineY1 = -columnWidth / 2\n topLineY2 = columnWidth / 2\n midLineY1 = -columnWidth / 2\n midLineY2 = columnWidth / 2\n bottomLineY1 = -columnWidth / 2\n bottomLineY2 = columnWidth / 2\n rectTopHeight = columnWidth\n rectTopWidth = summaryPositionNest[3] - summaryPositionNest[2]\n rectTopX = summaryPositionNest[2]\n rectTopY = -columnWidth / 2\n rectBottomHeight = columnWidth\n rectBottomWidth = summaryPositionNest[2] - summaryPositionNest[1]\n rectBottomX = summaryPositionNest[1]\n rectBottomY = -columnWidth / 2\n rectWholeHeight = columnWidth\n rectWholeWidth = summaryPositionNest[3] - summaryPositionNest[1]\n rectWholeX = summaryPositionNest[1]\n rectWholeY = -columnWidth / 2\n topLineX1 = summaryPositionNest[0]\n topLineX2 = summaryPositionNest[0]\n bottomLineX1 = summaryPositionNest[4]\n bottomLineX2 = summaryPositionNest[4]\n midLineX1 = summaryPositionNest[2]\n midLineX2 = summaryPositionNest[2]\n\n summaryXYCoords.push(\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: summaryPositionNest[4],\n y: columnCenter,\n value: summaryValueNest[4]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: summaryPositionNest[3],\n y: columnCenter,\n value: summaryValueNest[3]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: summaryPositionNest[2],\n y: columnCenter,\n value: summaryValueNest[2]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: summaryPositionNest[1],\n y: columnCenter,\n value: summaryValueNest[1]\n },\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: summaryPositionNest[0],\n y: columnCenter,\n value: summaryValueNest[0]\n }\n )\n }\n\n if (projection === \"radial\") {\n extentlineX1 = 0\n extentlineX2 = 0\n extentlineY1 = summaryPositionNest[0]\n extentlineY2 = summaryPositionNest[4]\n topLineX1 = -columnWidth / 2\n topLineX2 = columnWidth / 2\n midLineX1 = -columnWidth / 2\n midLineX2 = columnWidth / 2\n bottomLineX1 = -columnWidth / 2\n bottomLineX2 = columnWidth / 2\n rectTopWidth = columnWidth\n rectTopHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectTopY = summaryPositionNest[3]\n rectTopX = -columnWidth / 2\n rectBottomWidth = columnWidth\n rectBottomHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectBottomY = summaryPositionNest[3]\n rectBottomX = -columnWidth / 2\n topLineY1 = summaryPositionNest[0]\n topLineY2 = summaryPositionNest[0]\n bottomLineY1 = summaryPositionNest[4]\n bottomLineY2 = summaryPositionNest[4]\n midLineY1 = summaryPositionNest[2]\n midLineY2 = summaryPositionNest[2]\n\n const twoPI = Math.PI * 2\n\n const bottomLineArcGenerator = arc()\n .innerRadius(bottomLineY1 / 2)\n .outerRadius(bottomLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const topLineArcGenerator = arc()\n .innerRadius(topLineY1 / 2)\n .outerRadius(topLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const midLineArcGenerator = arc()\n .innerRadius(midLineY1 / 2)\n .outerRadius(midLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcTopGenerator = arc()\n .innerRadius(summaryPositionNest[1] / 2)\n .outerRadius(midLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcBottomGenerator = arc()\n .innerRadius(midLineY1 / 2)\n .outerRadius(summaryPositionNest[3] / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcWholeGenerator = arc()\n .innerRadius(summaryPositionNest[1] / 2)\n .outerRadius(summaryPositionNest[3] / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n let startAngle = summary.pct_start + summary.pct_padding / 2\n let endAngle = summary.pct + summary.pct_start - summary.pct_padding / 2\n const midAngle = summary.pct / 2 + summary.pct_start\n startAngle *= twoPI\n endAngle *= twoPI\n\n const radialAdjustX = adjustedSize[0] / 2\n\n const radialAdjustY = adjustedSize[1] / 2\n\n // const bottomPoint = bottomLineArcGenerator.centroid({ startAngle, endAngle })\n // const topPoint = topLineArcGenerator.centroid({ startAngle, endAngle })\n const bottomPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[4] / 2\n )\n const topPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[0] / 2\n )\n const thirdPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[3] / 2\n )\n const midPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[2] / 2\n )\n const firstPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[1] / 2\n )\n\n summaryXYCoords.push(\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: topPoint[0] + radialAdjustX,\n y: topPoint[1] + radialAdjustY,\n value: summaryValueNest[0]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: firstPoint[0] + radialAdjustX,\n y: firstPoint[1] + radialAdjustY,\n value: summaryValueNest[1]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: midPoint[0] + radialAdjustX,\n y: midPoint[1] + radialAdjustY,\n value: summaryValueNest[2]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: thirdPoint[0] + radialAdjustX,\n y: thirdPoint[1] + radialAdjustY,\n value: summaryValueNest[3]\n },\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: bottomPoint[0] + radialAdjustX,\n y: bottomPoint[1] + radialAdjustY,\n value: summaryValueNest[4]\n }\n )\n translate = `translate(${radialAdjustX},${radialAdjustY})`\n\n renderedSummaryMarks.push({\n //This is a g element\n containerProps: {\n ...eventListeners,\n className: calculatedSummaryClass,\n transform: translate,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: [\n {\n\n\n markType: \"line\",\n x1: bottomPoint[0],\n x2: topPoint[0],\n y1: bottomPoint[1],\n y2: topPoint[1],\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"whisker\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: topLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"max\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: midLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"median\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bottomLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"min\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcWholeGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"iqrarea\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcTopGenerator({ startAngle, endAngle }),\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q3area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcBottomGenerator({ startAngle, endAngle }),\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q1area\", thisSummaryData)\n )\n }\n ]\n })\n } else {\n const boxplotMarks = [\n {\n\n\n markType: \"line\",\n x1: extentlineX1,\n x2: extentlineX2,\n y1: extentlineY1,\n y2: extentlineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"whisker\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: topLineX1,\n x2: topLineX2,\n y1: topLineY1,\n y2: topLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"min\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: bottomLineX1,\n x2: bottomLineX2,\n y1: bottomLineY1,\n y2: bottomLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"max\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectWholeX,\n width: rectWholeWidth,\n y: rectWholeY,\n height: rectWholeHeight,\n style: Object.assign(\n { strokeWidth: 1 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"iqrarea\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectTopX,\n width: rectTopWidth,\n y: rectTopY,\n height: rectTopHeight,\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q3area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectBottomX,\n width: rectBottomWidth,\n y: rectBottomY,\n height: rectBottomHeight,\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q1area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: midLineX1,\n x2: midLineX2,\n y1: midLineY1,\n y2: midLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"median\", thisSummaryData)\n )\n }\n ]\n\n const outlierMarks = []\n\n if (outliers) {\n const outlierPoints = thisSummaryData.filter(\n (d) => d.value > maxOutlier || d.value < minOutlier\n )\n\n outlierPoints.forEach((point) => {\n outlierMarks.push({\n\n\n markType: \"circle\",\n cx: projection === \"horizontal\" ? point.scaledValue : 0,\n cy: projection === \"vertical\" ? point.scaledVerticalValue : 0,\n style: Object.assign(\n { strokeWidth: \"1px\", stroke: \"black\", fill: \"none\", r: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"outlier\", thisSummaryData)\n )\n })\n })\n }\n renderedSummaryMarks.push({\n containerProps: {\n ...eventListeners,\n className: calculatedSummaryClass,\n transform: translate,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: [...boxplotMarks, ...outlierMarks]\n })\n }\n })\n\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","/**\n * Ckmeans algorithm from d3-scale-cluster\n *\n * Much of the code that lies within was taken from the simple-statistics library,\n * which offers a javascript implementation of the ckmeans algorithm originally\n * designed by Haizhou Wang and Mingzhou Song\n *\n * https://cran.r-project.org/web/packages/Ckmeans.1d.dp/\n * https://github.com/simple-statistics/simple-statistics\n *\n * The simple-statistics software license is included below\n *\n * --\n *\n * ISC License\n *\n * Copyright (c) 2014, Tom MacWright\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nfunction numericSort(array) {\n return (\n array\n // ensure the array is not changed in-place\n .slice()\n // comparator function that treats input as numeric\n .sort(function (a, b) {\n return a - b\n })\n )\n}\n\nfunction uniqueCountSorted(input) {\n var uniqueValueCount = 0\n var lastSeenValue\n for (var i = 0; i < input.length; i++) {\n if (i === 0 || input[i] !== lastSeenValue) {\n lastSeenValue = input[i]\n uniqueValueCount++\n }\n }\n return uniqueValueCount\n}\n\nfunction makeMatrix(columns, rows) {\n var matrix = []\n for (var i = 0; i < columns; i++) {\n var column = []\n for (var j = 0; j < rows; j++) {\n column.push(0)\n }\n matrix.push(column)\n }\n return matrix\n}\n\nfunction ssq(j, i, sumX, sumXsq) {\n var sji // s(j, i)\n if (j > 0) {\n var muji = (sumX[i] - sumX[j - 1]) / (i - j + 1) // mu(j, i)\n sji = sumXsq[i] - sumXsq[j - 1] - (i - j + 1) * muji * muji\n } else {\n sji = sumXsq[i] - (sumX[i] * sumX[i]) / (i + 1)\n }\n return sji < 0 ? 0 : sji\n}\n\nfunction fillMatrixColumn(\n imin,\n imax,\n column,\n matrix,\n backtrackMatrix,\n sumX,\n sumXsq\n) {\n if (imin > imax) {\n return\n }\n\n // Start at midpoint between imin and imax\n var i = Math.floor((imin + imax) / 2)\n\n // Initialization of S[k][i]:\n matrix[column][i] = matrix[column - 1][i - 1]\n backtrackMatrix[column][i] = i\n\n var jlow = column // the lower end for j\n\n if (imin > column) {\n jlow = Math.max(jlow, backtrackMatrix[column][imin - 1] || 0)\n }\n jlow = Math.max(jlow, backtrackMatrix[column - 1][i] || 0)\n\n var jhigh = i - 1 // the upper end for j\n if (imax < matrix[0].length - 1) {\n jhigh = Math.min(jhigh, backtrackMatrix[column][imax + 1] || 0)\n }\n\n var sji\n var sjlowi\n var ssqjlow\n var ssqj\n for (var j = jhigh; j >= jlow; --j) {\n // compute s(j,i)\n sji = ssq(j, i, sumX, sumXsq)\n\n // MS May 11, 2016 Added:\n if (sji + matrix[column - 1][jlow - 1] >= matrix[column][i]) {\n break\n }\n\n // Examine the lower bound of the cluster border\n // compute s(jlow, i)\n sjlowi = ssq(jlow, i, sumX, sumXsq)\n\n ssqjlow = sjlowi + matrix[column - 1][jlow - 1]\n\n if (ssqjlow < matrix[column][i]) {\n // shrink the lower bound\n matrix[column][i] = ssqjlow\n backtrackMatrix[column][i] = jlow\n }\n jlow++\n\n ssqj = sji + matrix[column - 1][j - 1]\n if (ssqj < matrix[column][i]) {\n matrix[column][i] = ssqj\n backtrackMatrix[column][i] = j\n }\n }\n\n fillMatrixColumn(imin, i - 1, column, matrix, backtrackMatrix, sumX, sumXsq)\n fillMatrixColumn(i + 1, imax, column, matrix, backtrackMatrix, sumX, sumXsq)\n}\n\nfunction fillMatrices(data, matrix, backtrackMatrix) {\n var nValues = matrix[0].length\n var sumX = new Array(nValues)\n var sumXsq = new Array(nValues)\n\n // Use the median to shift values of x to improve numerical stability\n var shift = data[Math.floor(nValues / 2)]\n\n // Initialize first row in matrix & backtrackMatrix\n for (var i = 0; i < nValues; ++i) {\n if (i === 0) {\n sumX[0] = data[0] - shift\n sumXsq[0] = (data[0] - shift) * (data[0] - shift)\n } else {\n sumX[i] = sumX[i - 1] + data[i] - shift\n sumXsq[i] = sumXsq[i - 1] + (data[i] - shift) * (data[i] - shift)\n }\n\n // Initialize for k = 0\n matrix[0][i] = ssq(0, i, sumX, sumXsq)\n backtrackMatrix[0][i] = 0\n }\n\n // Initialize the rest of the columns\n var imin\n for (var k = 1; k < matrix.length; ++k) {\n if (k < matrix.length - 1) {\n imin = k\n } else {\n // No need to compute matrix[K-1][0] ... matrix[K-1][N-2]\n imin = nValues - 1\n }\n\n fillMatrixColumn(\n imin,\n nValues - 1,\n k,\n matrix,\n backtrackMatrix,\n sumX,\n sumXsq\n )\n }\n}\n\n/**\n * Ckmeans clustering is an improvement on heuristic-based clustering\n * approaches like Jenks. The algorithm was developed in\n * [Haizhou Wang and Mingzhou Song](http://journal.r-project.org/archive/2011-2/RJournal_2011-2_Wang+Song.pdf)\n * as a [dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming) approach\n * to the problem of clustering numeric data into groups with the least\n * within-group sum-of-squared-deviations.\n *\n * Minimizing the difference within groups - what Wang & Song refer to as\n * `withinss`, or within sum-of-squares, means that groups are optimally\n * homogenous within and the data is split into representative groups.\n * This is very useful for visualization, where you may want to represent\n * a continuous variable in discrete color or style groups. This function\n * can provide groups that emphasize differences between data.\n *\n * Being a dynamic approach, this algorithm is based on two matrices that\n * store incrementally-computed values for squared deviations and backtracking\n * indexes.\n *\n * Unlike the [original implementation](https://cran.r-project.org/web/packages/Ckmeans.1d.dp/index.html),\n * this implementation does not include any code to automatically determine\n * the optimal number of clusters: this information needs to be explicitly\n * provided.\n *\n * ### References\n * _Ckmeans.1d.dp: Optimal k-means Clustering in One Dimension by Dynamic\n * Programming_ Haizhou Wang and Mingzhou Song ISSN 2073-4859\n *\n * from The R Journal Vol. 3/2, December 2011\n * @param {Array<number>} data input data, as an array of number values\n * @param {number} nClusters number of desired classes. This cannot be\n * greater than the number of values in the data array.\n * @returns {Array<Array<number>>} clustered input\n * @example\n * ckmeans([-1, 2, -1, 2, 4, 5, 6, -1, 2, -1], 3);\n * // The input, clustered into groups of similar numbers.\n * //= [[-1, -1, -1, -1], [2, 2, 2], [4, 5, 6]]);\n */\n\nexport function ckmeans(data, nClusters) {\n if (nClusters > data.length) {\n throw new Error(\"Cannot generate more classes than there are data values\")\n }\n\n var nValues = data.length\n\n var sorted = numericSort(data)\n // we'll use this as the maximum number of clusters\n var uniqueCount = uniqueCountSorted(sorted)\n\n // if all of the input values are identical, there's one cluster\n // with all of the input in it.\n if (uniqueCount === 1) {\n return [sorted[0]]\n }\n nClusters = Math.min(uniqueCount, nClusters)\n\n // named 'S' originally\n var matrix = makeMatrix(nClusters, nValues)\n // named 'J' originally\n var backtrackMatrix = makeMatrix(nClusters, nValues)\n\n // This is a dynamic programming way to solve the problem of minimizing\n // within-cluster sum of squares. It's similar to linear regression\n // in this way, and this calculation incrementally computes the\n // sum of squares that are later read.\n fillMatrices(sorted, matrix, backtrackMatrix)\n\n // The real work of Ckmeans clustering happens in the matrix generation:\n // the generated matrices encode all possible clustering combinations, and\n // once they're generated we can solve for the best clustering groups\n // very quickly.\n var clusters = []\n var clusterRight = backtrackMatrix[0].length - 1\n\n // Backtrack the clusters from the dynamic programming matrix. This\n // starts at the bottom-right corner of the matrix (if the top-left is 0, 0),\n // and moves the cluster target with the loop.\n for (var cluster = backtrackMatrix.length - 1; cluster >= 0; cluster--) {\n var clusterLeft = backtrackMatrix[cluster][clusterRight]\n\n // fill the cluster from the sorted input by taking a slice of the\n // array. the backtrack matrix makes this easy - it stores the\n // indexes where the cluster should start and end.\n clusters[cluster] = sorted[clusterLeft]\n\n if (cluster > 0) {\n clusterRight = clusterLeft - 1\n }\n }\n\n return clusters\n}\n","import { scaleLinear } from \"d3-scale\"\nimport { ckmeans } from \"./ckmeans\"\n\ntype BoxplotFnType = {\n data: Record<string, any>[]\n type: Record<string, any>\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: \"horizontal\" | \"vertical\" | \"radial\"\n adjustedSize: number[]\n}\n\ninterface summaryInstruction {\n Mark?: JSX.Element\n containerProps?: object\n elements: object[]\n}\n\nexport function ckBinsRenderFn(props: BoxplotFnType) {\n const {\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize\n } = props\n const renderedSummaryMarks: summaryInstruction[] = []\n\n const summaryXYCoords = []\n\n const keys = Object.keys(data)\n\n let maxClusterSize = 0\n\n const allBins: Record<string, any>[][] = []\n\n keys.forEach((key, summaryI) => {\n const summary = data[key]\n const eventListeners = eventListenersGenerator(summary, summaryI)\n\n const columnWidth = summary.width\n\n const thisSummaryData = summary.pieceData.sort((a, b) => a.value - b.value)\n\n const firstElement = thisSummaryData[0]\n const lastElement = thisSummaryData[thisSummaryData.length - 1]\n\n const binScale = scaleLinear()\n .domain([firstElement.value, lastElement.value])\n .range([firstElement.scaledValue, lastElement.scaledValue])\n\n const calculatedSummaryStyle = styleFn(thisSummaryData[0].data, summaryI)\n const calculatedSummaryClass = classFn(thisSummaryData[0].data, summaryI)\n\n const binData = thisSummaryData.map((d) => d.value)\n\n const clusters = 5\n\n const ckstops = ckmeans(binData, clusters)\n\n let ckBins = []\n\n ckstops.forEach((ckstop, i) => {\n const start = ckstop\n const end = ckstops[i + 1] ?? lastElement.value\n\n ckBins.push({\n start,\n end,\n key,\n summary,\n calculatedSummaryStyle,\n calculatedSummaryClass,\n scaledStart: binScale(start),\n scaledEnd: binScale(end),\n values: []\n })\n })\n\n allBins.push(ckBins)\n\n let binI = 0\n\n for (const datapoint of thisSummaryData) {\n if (ckBins[binI].end <= datapoint.value) {\n if (ckBins[binI + 1]) {\n binI++\n }\n }\n ckBins[binI].values.push(datapoint)\n }\n\n ckBins.forEach((ckbin) => {\n const clusterSize = ckbin.values.length\n maxClusterSize = Math.max(clusterSize, maxClusterSize)\n })\n })\n\n allBins.forEach((ckBins, index) => {\n const CKBinElements = ckBins.map((ckBin) => {\n const { key, summary, calculatedSummaryStyle, calculatedSummaryClass } =\n ckBin\n\n const { fill = \"black\", stroke = \"black\" } = calculatedSummaryStyle\n\n const lightScale = scaleLinear()\n .domain([1, maxClusterSize])\n .range([\"white\", fill])\n\n return {\n\n\n markType: \"rect\",\n x: ckBin.scaledStart,\n width: ckBin.scaledEnd - ckBin.scaledStart,\n y: ckBin.summary.x,\n height: ckBin.summary.width,\n style: Object.assign({ strokeWidth: 2 }, calculatedSummaryStyle, {\n fill: lightScale(ckBin.values.length),\n strokeWidth: 1,\n stroke\n })\n }\n })\n\n renderedSummaryMarks.push({\n containerProps: {\n // className: calculatedSummaryClass,\n transform: \"\",\n key: `summaryPiece-${index}`,\n role: \"img\",\n tabIndex: -1\n },\n //These are drawn items\n elements: CKBinElements\n })\n })\n\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","import { contourDensity } from \"d3-contour\"\nimport { scaleLinear } from \"d3-scale\"\n\nfunction shapeBounds(coordinates) {\n let left = [Infinity, 0]\n let right = [-Infinity, 0]\n let top = [0, Infinity]\n let bottom = [0, -Infinity]\n coordinates.forEach((d) => {\n left = d[0] < left[0] ? d : left\n right = d[0] > right[0] ? d : right\n bottom = d[1] > bottom[1] ? d : bottom\n top = d[1] < top[1] ? d : top\n })\n\n return {\n center: [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2],\n top,\n left,\n right,\n bottom\n }\n}\n\nexport function contouring({ summaryType, data, finalXExtent, finalYExtent }) {\n let projectedSummaries = []\n if (!summaryType.type) {\n summaryType = { type: summaryType }\n }\n\n const {\n resolution = 500,\n thresholds = 10,\n bandwidth = 20,\n neighborhood\n } = summaryType\n\n const xScale = scaleLinear()\n .domain(finalXExtent)\n .rangeRound([0, resolution])\n .nice()\n const yScale = scaleLinear()\n .domain(finalYExtent)\n .rangeRound([resolution, 0])\n .nice()\n\n data.forEach((contourData) => {\n let contourProjectedSummaries = contourDensity()\n .size([resolution, resolution])\n .x((d) => xScale(d[0]))\n .y((d) => yScale(d[1]))\n .thresholds(thresholds)\n .bandwidth(bandwidth)(contourData._xyfCoordinates)\n\n if (neighborhood) {\n contourProjectedSummaries = [contourProjectedSummaries[0]]\n }\n\n const max = Math.max(...contourProjectedSummaries.map((d) => d.value))\n\n contourProjectedSummaries.forEach((summary) => {\n summary.parentSummary = contourData\n summary.bounds = []\n summary.percent = summary.value / max\n summary.coordinates.forEach((poly) => {\n poly.forEach((subpoly, i) => {\n poly[i] = subpoly.map((coordpair) => {\n coordpair = [\n xScale.invert(coordpair[0]),\n yScale.invert(coordpair[1])\n ]\n return coordpair\n })\n //Only push bounds for the main poly, not its interior rings, otherwise you end up labeling interior cutouts\n if (i === 0) {\n summary.bounds.push(shapeBounds(poly[i]))\n }\n })\n })\n })\n projectedSummaries = [...projectedSummaries, ...contourProjectedSummaries]\n })\n\n return projectedSummaries\n}\n","import * as React from \"react\"\nimport { hexbin } from \"d3-hexbin\"\nimport { scaleLinear } from \"d3-scale\"\nimport { ProjectedPoint } from \"../types/generalTypes\"\nimport { SummaryLayoutType } from \"../types/xyTypes\"\n\ninterface BinArray {\n [position: number]: number\n x?: number\n y?: number\n}\n\nexport function hexbinning({\n preprocess = true,\n processedData = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent: baseXExtent,\n finalYExtent: baseYExtent,\n size,\n xScaleType = scaleLinear(),\n yScaleType = scaleLinear(),\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize\n}: SummaryLayoutType) {\n let finalXExtent = baseXExtent\n let finalYExtent = baseYExtent\n\n if (!finalXExtent) {\n const xData = baseData.coordinates.map((p) => p.x)\n finalXExtent = [Math.min(...xData), Math.max(...xData)]\n }\n\n if (!finalYExtent) {\n const yData = baseData.coordinates.map((p) => p.y)\n finalYExtent = [Math.min(...yData), Math.max(...yData)]\n }\n\n if (processedData && baseData) {\n return baseData.coordinates\n }\n\n let projectedSummaries = []\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n bins = 0.05,\n cellPx,\n binValue = (d) => d.length,\n binMax,\n customMark\n } = summaryType\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n const hexBinXScale = xScaleType.domain(finalXExtent).range([0, size[0]])\n const hexBinYScale = yScaleType.domain(finalYExtent).range([0, size[1]])\n\n const actualResolution =\n (cellPx && cellPx / 2) || ((bins > 1 ? 1 / bins : bins) * size[0]) / 2\n\n const hexbinner = hexbin()\n .x((d) => hexBinXScale(d._xyfPoint[0]))\n .y((d) => hexBinYScale(d._xyfPoint[1]))\n .radius(actualResolution)\n .size(size)\n\n let hexMax\n const allHexes: ProjectedPoint[] = hexbinner.centers()\n\n data.forEach((hexbinData) => {\n hexMax = 0\n const hexes = hexbinner(\n hexbinData._xyfCoordinates.map((d, i) => ({\n _xyfPoint: d,\n ...hexbinData.coordinates[i]\n }))\n )\n\n const centerHash = {}\n\n hexes.forEach((d) => {\n centerHash[`${parseInt(d.x)}-${parseInt(d.y)}`] = true\n })\n\n allHexes.forEach((hexCenter) => {\n if (!centerHash[`${parseInt(hexCenter[0])}-${parseInt(hexCenter[1])}`]) {\n const newHex: BinArray = []\n newHex.x = hexCenter[0]\n newHex.y = hexCenter[1]\n hexes.push(newHex)\n }\n })\n\n hexMax = Math.max(...hexes.map((d) => binValue(d)))\n\n if (binMax) {\n binMax(hexMax)\n }\n\n const hexBase = [\n [0, -1],\n [0.866, -0.5],\n [0.866, 0.5],\n [0, 1],\n [-0.866, 0.5],\n [-0.866, -0.5]\n ]\n\n const hexWidth = hexBinXScale.invert(actualResolution) - finalXExtent[0]\n const hexHeight = hexBinYScale.invert(actualResolution) - finalYExtent[0]\n\n const hexacoordinates = hexBase.map((d) => [\n d[0] * hexWidth,\n d[1] * hexHeight\n ])\n\n const hexbinProjectedSummaries = hexes.map((d: Record<string, any>) => {\n const hexValue = binValue(d)\n const gx = d.x\n const gy = d.y\n d.x = hexBinXScale.invert(d.x)\n d.y = hexBinYScale.invert(d.y)\n const percent = hexValue / hexMax\n return {\n customMark: customMark && (\n <g transform={`translate(${gx},${size[1] - gy})`}>\n {customMark({\n d: {\n ...d,\n binItems: d,\n percent,\n value: hexValue,\n radius: actualResolution,\n hexCoordinates: hexBase.map((d) => [\n d[0] * actualResolution,\n d[1] * actualResolution\n ])\n },\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize,\n adjustedSize: size\n })}\n </g>\n ),\n _xyfCoordinates: hexacoordinates.map((p) => [p[0] + d.x, p[1] + d.y]),\n value: hexValue,\n percent,\n data: d,\n parentSummary: hexbinData,\n centroid: true\n }\n })\n projectedSummaries = [...projectedSummaries, ...hexbinProjectedSummaries]\n })\n\n if (preprocess) {\n projectedSummaries.forEach((d) => {\n d.x = d.data.x\n d.y = d.data.y\n })\n return {\n type: \"hexbin\",\n processedData: true,\n coordinates: projectedSummaries,\n binMax: hexMax\n }\n }\n\n return projectedSummaries\n}\n","import * as React from \"react\"\nimport { scaleLinear } from \"d3-scale\"\nimport regression from \"regression\"\nimport { curveCardinal } from \"d3-shape\"\n\nimport { ProjectedPoint } from \"../types/generalTypes\"\nimport { SummaryLayoutType } from \"../types/xyTypes\"\nimport { ProjectedSummary } from \"../types/generalTypes\"\n\n// Re-export from new locations for backwards compatibility\nexport { contouring } from \"./contourLayout\"\nexport { hexbinning } from \"./hexbinLayout\"\n\nconst generateLineBounds = (\n xydata,\n basedata,\n topBoundingAccessor,\n bottomBoundingAccessor\n) => {\n const tops = xydata.map((d, i) => [\n d[0],\n d[1] + topBoundingAccessor(basedata[i])\n ])\n const bottoms = xydata.map((d, i) => [\n d[0],\n d[1] - bottomBoundingAccessor(basedata[i])\n ])\n return [...tops, ...bottoms.reverse()]\n}\n\nexport function lineBounding({ summaryType, data, defined }) {\n let projectedSummaries = []\n if (!summaryType.type) {\n summaryType = { type: summaryType }\n }\n\n const {\n boundingAccessor,\n topBoundingAccessor = boundingAccessor,\n bottomBoundingAccessor = boundingAccessor\n } = summaryType\n\n data.forEach((lineData) => {\n const definedData = lineData._baseData.map(defined)\n let currentBaseData = []\n let currentXYFC = []\n const boundingPieces = [\n {\n xyf: currentXYFC,\n base: currentBaseData\n }\n ]\n definedData.forEach((d, i) => {\n if (d === true) {\n currentBaseData.push(lineData._baseData[i])\n currentXYFC.push(lineData._xyfCoordinates[i])\n } else if (definedData[i + 1]) {\n currentBaseData = []\n currentXYFC = []\n boundingPieces.push({\n xyf: currentXYFC,\n base: currentBaseData\n })\n }\n })\n\n boundingPieces.forEach(({ xyf, base }) => {\n const boundingProjectedSummary = {\n data: lineData,\n parentSummary: lineData,\n _xyfCoordinates: generateLineBounds(\n xyf,\n base,\n topBoundingAccessor,\n bottomBoundingAccessor\n )\n }\n\n projectedSummaries = [...projectedSummaries, boundingProjectedSummary]\n })\n })\n\n return projectedSummaries\n}\n\nexport function heatmapping({\n preprocess = true,\n processedData = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent = [\n Math.min(...baseData.coordinates.map((d) => d.x)),\n Math.max(...baseData.coordinates.map((d) => d.x))\n ],\n finalYExtent = [\n Math.min(...baseData.coordinates.map((d) => d.y)),\n Math.max(...baseData.coordinates.map((d) => d.y))\n ],\n size,\n xScaleType = scaleLinear(),\n yScaleType = scaleLinear(),\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize\n}: SummaryLayoutType) {\n if (processedData && baseData) {\n return baseData.coordinates\n }\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n let projectedSummaries: ProjectedSummary[] = []\n\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n // binGraphic = \"square\",\n binValue = (d) => d.length,\n xBins = summaryType.yBins || 0.05,\n yBins = xBins,\n xCellPx = !summaryType.xBins && summaryType.xCellPx,\n yCellPx = !summaryType.yBins && summaryType.yCellPx,\n customMark,\n binMax\n } = summaryType\n const xBinPercent = xBins < 1 ? xBins : 1 / xBins\n const yBinPercent = yBins < 1 ? yBins : 1 / yBins\n\n const heatmapBinXScale = xScaleType.domain(finalXExtent).range([0, size[0]])\n const heatmapBinYScale = yScaleType.domain(finalYExtent).range([size[1], 0])\n\n const actualResolution = [\n Math.ceil(((xCellPx && xCellPx / size[0]) || xBinPercent) * size[0] * 10) /\n 10,\n Math.ceil(((yCellPx && yCellPx / size[1]) || yBinPercent) * size[1] * 10) /\n 10\n ]\n let maxValue = -Infinity\n\n data.forEach((heatmapData) => {\n const grid = []\n const flatGrid = []\n\n let cell\n let gridColumn\n\n for (let i = 0; Math.ceil(i) < size[0]; i += actualResolution[0]) {\n const x = heatmapBinXScale.invert(i)\n const x1 = heatmapBinXScale.invert(i + actualResolution[0])\n\n gridColumn = []\n grid.push(gridColumn)\n for (let j = 0; Math.ceil(j) < size[1]; j += actualResolution[1]) {\n const y = heatmapBinYScale.invert(j)\n const y1 = heatmapBinYScale.invert(j + actualResolution[1])\n cell = {\n gx: i,\n gy: j,\n gw: actualResolution[0],\n gh: actualResolution[1],\n x: (x + x1) / 2,\n y: (y + y1) / 2,\n binItems: [],\n value: 0,\n _xyfCoordinates: [\n [x, y],\n [x1, y],\n [x1, y1],\n [x, y1]\n ],\n parentSummary: heatmapData\n }\n gridColumn.push(cell)\n flatGrid.push(cell)\n }\n gridColumn.push(cell)\n }\n grid.push(gridColumn)\n\n heatmapData._xyfCoordinates.forEach((d: [number, number], di: number) => {\n const baseX = heatmapBinXScale(d[0]) as number\n const baseY = heatmapBinYScale(d[1]) as number\n\n const xCoordinate = Math.floor(baseX / actualResolution[0])\n const yCoordinate = Math.floor(baseY / actualResolution[1])\n\n if (grid[xCoordinate][yCoordinate]) {\n grid[xCoordinate][yCoordinate].binItems.push(\n heatmapData.coordinates[di]\n )\n }\n })\n\n flatGrid.forEach((d) => {\n d.value = binValue(d.binItems)\n maxValue = Math.max(maxValue, d.value)\n })\n\n flatGrid.forEach((d) => {\n d.percent = d.value / maxValue\n d.customMark = customMark && (\n <g transform={`translate(${d.gx},${d.gy})`}>\n {customMark({\n d,\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize,\n adjustedSize: size\n })}\n </g>\n )\n })\n\n projectedSummaries = [...projectedSummaries, ...flatGrid]\n })\n if (binMax) {\n binMax(maxValue)\n }\n if (preprocess) {\n const preprocessedSummary: ProjectedSummary = {\n type: \"heatmap\",\n processedData: true,\n _baseData: [],\n _xyfCoordinates: [],\n data: [],\n bounds: [],\n x: 0,\n y: 0,\n coordinates: projectedSummaries,\n binMax: maxValue\n }\n return preprocessedSummary\n }\n\n return projectedSummaries\n}\n\nexport function trendlining({\n preprocess = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent = [\n Math.min(...baseData.coordinates.map((d) => d.x)),\n Math.max(...baseData.coordinates.map((d) => d.x))\n ],\n xScaleType = scaleLinear()\n}: SummaryLayoutType) {\n if (preprocess) {\n return baseData[0].coordinates\n }\n\n let projectedSummaries = []\n\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n regressionType: baseRegressionType = \"linear\",\n order = 2,\n precision = 4,\n controlPoints = 20,\n curve = curveCardinal\n } = summaryType\n\n let regressionType = baseRegressionType\n\n if (\n finalXExtent[0] < 0 &&\n (baseRegressionType === \"logarithmic\" ||\n baseRegressionType === \"power\" ||\n baseRegressionType === \"exponential\")\n ) {\n console.error(\n `Cannot use this ${baseRegressionType} regressionType type with value range that goes below 0, defaulting to linear`\n )\n regressionType = \"linear\"\n }\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n const xScale = xScaleType.domain([0, 1]).range(finalXExtent)\n\n projectedSummaries = []\n data.forEach((bdata) => {\n const regressionLine = regression[regressionType](\n bdata._xyfCoordinates.map((d) => {\n let x = d[0]\n let y = d[1]\n\n if (typeof x !== \"number\") {\n x = x.getTime()\n }\n if (typeof y !== \"number\") {\n y = y.getTime()\n }\n\n return [x, y]\n }),\n {\n order,\n precision\n }\n )\n const controlStep = 1 / controlPoints\n\n let steps = [0, 1]\n\n if (regressionType !== \"linear\") {\n steps = []\n for (let step = 0; step < 1 + controlStep; step += controlStep) {\n steps.push(step)\n }\n }\n\n const controlPointArray = []\n\n steps.forEach((controlPoint) => {\n controlPointArray.push(regressionLine.predict(xScale(controlPoint)))\n })\n\n projectedSummaries.push({\n centroid: false,\n customMark: undefined,\n data: bdata,\n parentSummary: bdata,\n value: regressionLine.string,\n r2: regressionLine.r2,\n curve,\n _xyfCoordinates: controlPointArray\n })\n })\n\n return projectedSummaries\n}\n\nexport function shapeBounds(coordinates) {\n let left = [Infinity, 0]\n let right = [-Infinity, 0]\n let top = [0, Infinity]\n let bottom = [0, -Infinity]\n coordinates.forEach((d) => {\n left = d[0] < left[0] ? d : left\n right = d[0] > right[0] ? d : right\n bottom = d[1] > bottom[1] ? d : bottom\n top = d[1] < top[1] ? d : top\n })\n\n return {\n center: [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2],\n top,\n left,\n right,\n bottom\n }\n}\n","import { contouring } from \"../svg/areaDrawing\"\n\nconst contourMap = (d) => [d.xy.x, d.xy.y]\n\nexport function contourRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n adjustedSize\n}) {\n const keys = Object.keys(data)\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n type.thresholds = type.thresholds || 8\n type.bandwidth = type.bandwidth || 12\n type.resolution = type.resolution || 1000\n\n const projectedOrd = [\n { id: ordset, _xyfCoordinates: ordset.xyData.map(contourMap) }\n ]\n\n const oContours = contouring({\n summaryType: type,\n data: projectedOrd,\n finalXExtent: [0, adjustedSize[0]],\n finalYExtent: [0, adjustedSize[1]]\n })\n const contourMarks = []\n oContours.forEach((d, i) => {\n d.coordinates.forEach((coords, ii) => {\n const eventListeners = eventListenersGenerator(d, i)\n contourMarks.push({\n\n ...eventListeners,\n\n key: `${i}-${ii}`,\n style: styleFn(ordset.pieceData[0].data, ordsetI),\n className: classFn(ordset.pieceData[0].data, ordsetI),\n markType: \"path\",\n d: `M${d.coordinates[0].map((p) => p.join(\",\")).join(\"L\")}Z`\n })\n })\n })\n\n renderedSummaryMarks.push({\n containerProps: {\n key: `contour-container-${ordsetI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: contourMarks\n })\n })\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","import * as React from \"react\"\n\n\n\nimport {\n line,\n area,\n curveStep,\n curveStepBefore,\n curveStepAfter,\n curveCardinal,\n curveBasis,\n curveLinear,\n curveCatmullRom,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural\n} from \"d3-shape\"\n\nimport { shapeBounds } from \"../svg/areaDrawing\"\nimport { ProjectedSummary } from \"../types/generalTypes\"\nimport { ScaleLinear } from \"d3-scale\"\n\nexport const curveHash = {\n step: curveStep,\n stepbefore: curveStepBefore,\n stepafter: curveStepAfter,\n cardinal: curveCardinal,\n basis: curveBasis,\n linear: curveLinear,\n catmullrom: curveCatmullRom,\n monotone: curveMonotoneY,\n monotonex: curveMonotoneX,\n monotoney: curveMonotoneY,\n natural: curveNatural\n}\n\nexport function lineGeneratorDecorator({\n generator,\n projectedCoordinateNames,\n defined,\n xScale,\n yScale,\n interpolator,\n simpleLine\n}) {\n const { x, y, yTop, yBottom, xBottom, xTop } = projectedCoordinateNames\n\n generator.x((d) => xScale(d[x])).curve(interpolator)\n\n if (simpleLine) {\n generator.y((d) => yScale(d[y]))\n } else {\n generator.y0((d) => yScale(d[yBottom])).y1((d) => yScale(d[yTop]))\n generator.x0((d) => xScale(d[xBottom])).x1((d) => xScale(d[xTop]))\n }\n\n if (defined) {\n generator.defined((p, q) => defined(p, q))\n } else {\n generator.defined((p) => !p._xyFrameUndefined)\n }\n}\n\nexport function createPoints({\n xScale,\n yScale,\n canvasDrawing,\n data,\n projectedCoordinateNames,\n customMark,\n canvasRender,\n styleFn,\n classFn,\n renderKeyFn,\n renderMode,\n \n showLinePoints: baseShowLinePoints\n}) {\n const { y, x, xMiddle, yMiddle, yTop, yBottom } = projectedCoordinateNames\n\n const showLinePoints: string =\n baseShowLinePoints === true ? undefined : baseShowLinePoints\n\n const whichPoints: {\n top: string\n bottom: string\n } = {\n top: yTop,\n bottom: yBottom\n }\n const whichWay = whichPoints[showLinePoints]\n const mappedPoints = []\n data.forEach((d, i) => {\n const dX = xScale(d[xMiddle] !== undefined ? d[xMiddle] : d[x])\n const dY = yScale(\n d[whichWay] !== undefined\n ? d[whichWay]\n : d[yMiddle] !== undefined\n ? d[yMiddle]\n : d[y]\n )\n\n const pointAriaLabel = `Point at x ${d.x} and y ${d.y}`\n\n // CUSTOM MARK IMPLEMENTATION\n const renderedCustomMark = !customMark\n ? undefined\n : React.isValidElement(customMark)\n ? customMark\n : customMark({ d: d.data, xy: d, i, xScale, yScale })\n const markProps = customMark\n ? { ...renderedCustomMark.props, \"aria-label\": pointAriaLabel }\n : {\n key: `piece-${i}`,\n markType: \"circle\",\n r: 2,\n \"aria-label\": pointAriaLabel\n }\n\n if (\n renderedCustomMark &&\n renderedCustomMark.props &&\n !renderedCustomMark.props.markType &&\n (!canvasRender || canvasRender(d.data, i) !== true)\n ) {\n mappedPoints.push(\n <g\n transform={`translate(${dX},${dY})`}\n key={renderKeyFn ? renderKeyFn(d.data, i) : `custom-point-mark-${i}`}\n style={styleFn ? styleFn(d.data, i) : {}}\n className={classFn ? classFn(d.data, i) : \"\"}\n >\n {renderedCustomMark}\n </g>\n )\n } else {\n if (canvasRender && canvasRender(d.data, i) === true) {\n const canvasPoint = {\n type: \"point\",\n baseClass: \"frame-piece\",\n tx: dX,\n ty: dY,\n d,\n i,\n markProps,\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasPoint)\n } else {\n const yCoordinates = Array.isArray(d[y])\n ? d[y].map((p) => yScale(p))\n : [dY]\n yCoordinates.forEach((yc, yi) => {\n const xCoordinates = Array.isArray(d[x])\n ? d[x].map((p) => xScale(p))\n : [dX]\n xCoordinates.forEach((xc, xi) => {\n mappedPoints.push(\n clonedAppliedElement({\n baseClass: \"frame-piece\",\n tx: xc,\n ty: yc,\n d: (d.data && { ...d, ...d.data }) || d,\n i: yi === 0 && xi === 0 ? i : `${i}-${yi}-${xi}`,\n markProps,\n styleFn,\n renderKeyFn,\n classFn,\n yi\n })\n )\n })\n })\n }\n }\n })\n return mappedPoints\n}\n\nexport function createLines({\n xScale,\n yScale,\n canvasDrawing,\n data,\n projectedCoordinateNames,\n customMark,\n canvasRender,\n styleFn,\n classFn,\n renderMode,\n renderKeyFn,\n type,\n defined,\n \n ariaLabel,\n axesData = []\n}) {\n const xAxis = axesData.find(\n (d) => d.orient === \"bottom\" || d.orient === \"top\"\n )\n const yAxis = axesData.find(\n (d) => d.orient === \"left\" || d.orient === \"right\"\n )\n\n const xAxisFormatter = (xAxis && xAxis.tickFormat) || ((d) => d)\n const yAxisFormatter = (yAxis && yAxis.tickFormat) || ((d) => d)\n\n const customLine = typeof type === \"object\" ? type : { type }\n\n const interpolator =\n typeof customLine.interpolator === \"string\"\n ? curveHash[customLine.interpolator]\n : customLine.interpolator || curveLinear\n\n const lineGenerator = customLine.simpleLine ? line() : area()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator,\n generator: lineGenerator,\n xScale,\n yScale,\n simpleLine: customLine.simpleLine\n })\n\n const dynamicLineGenerator =\n (interpolator.dynamicInterpolator &&\n ((d, i) => {\n const dynLineGenerator = area()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator: interpolator.dynamicInterpolator(d, i),\n generator: dynLineGenerator,\n xScale,\n yScale,\n simpleLine: customLine.simpleLine\n })\n return dynLineGenerator\n })) ||\n (() => lineGenerator)\n\n const mappedLines = []\n data.forEach((d, i) => {\n const mappedDataForLines = d.data.map((p) => ({ ...p.data, ...p }))\n if (customMark && typeof customMark === \"function\") {\n //shim to make customLineMark work until Semiotic 2\n const compatibleData = {\n ...d,\n data: mappedDataForLines\n }\n mappedLines.push(\n customMark({ d: compatibleData, i, xScale, yScale, canvasDrawing })\n )\n } else {\n const builtInDisplayProps: { fill?: string; stroke?: string } = {}\n if (customLine.simpleLine) {\n builtInDisplayProps.fill = \"none\"\n builtInDisplayProps.stroke = \"black\"\n }\n\n const pathString = dynamicLineGenerator(d, i)(mappedDataForLines)\n\n const markProps = {\n ...builtInDisplayProps,\n markType: \"path\",\n d: pathString,\n \"aria-label\":\n d.data &&\n d.data.length > 0 &&\n ariaLabel &&\n `${d.data.length} point ${\n ariaLabel.items\n } starting value ${yAxisFormatter(d.data[0].y)} at ${xAxisFormatter(\n d.data[0].x\n )} ending value ${yAxisFormatter(\n d.data[d.data.length - 1].y\n )} at ${xAxisFormatter(d.data[d.data.length - 1].x)}`\n }\n\n if (canvasRender && canvasRender(d, i) === true) {\n const canvasLine = {\n type: \"line\",\n baseClass: \"xyframe-line\",\n tx: 0,\n ty: 0,\n d,\n i,\n markProps,\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasLine)\n } else {\n let moddedStyleFn = styleFn\n\n if (customLine.type === \"area\" && customLine.enclosed !== true) {\n moddedStyleFn = (d, i) => ({ ...styleFn(d, i), stroke: \"none\" })\n }\n\n mappedLines.push(\n clonedAppliedElement({\n baseClass: \"xyframe-line\",\n d,\n i,\n markProps,\n styleFn: moddedStyleFn,\n renderKeyFn,\n classFn\n })\n )\n if (customLine.type === \"area\" && customLine.enclosed !== true) {\n const topperStyleFn = (d, i) => ({ ...styleFn(d, i), fill: \"none\" })\n\n const topperLineGenerator = line()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator: interpolator,\n generator: topperLineGenerator,\n xScale,\n yScale,\n simpleLine: true\n })\n\n const topperMarkProps = {\n ...markProps,\n d: topperLineGenerator(mappedDataForLines)\n }\n\n const topperKeyFn = renderKeyFn\n ? (d, i, yi) => `${renderKeyFn(d, i, yi)}-top`\n : undefined\n\n mappedLines.push(\n clonedAppliedElement({\n baseClass: \"xyframe-line-top\",\n d,\n i,\n markProps: topperMarkProps,\n styleFn: topperStyleFn,\n renderKeyFn: topperKeyFn,\n classFn\n })\n )\n }\n }\n }\n })\n\n if (customLine.type === \"difference\" && data.length === 2) {\n //Create the overlay line for the difference chart\n\n const diffdataA = data[0].data.map((basedata, baseI) => {\n const linePoint =\n basedata.yTop > data[1].data[baseI].yTop\n ? basedata.yTop\n : basedata.yBottom\n return {\n x: basedata.x,\n y: linePoint,\n yBottom: linePoint,\n yTop: linePoint\n }\n })\n\n const diffdataB = data[0].data.map((basedata, baseI) => {\n const linePoint =\n data[1].data[baseI].yTop > basedata.yTop\n ? data[1].data[baseI].yTop\n : data[1].data[baseI].yBottom\n return {\n x: basedata.x,\n y: linePoint,\n yBottom: linePoint,\n yTop: linePoint\n }\n })\n\n const doClassname = classFn\n ? `xyframe-line ${classFn(diffdataA)}`\n : \"xyframe-line\"\n\n const overLine = line()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator,\n generator: overLine,\n xScale,\n yScale,\n simpleLine: true\n })\n\n // let baseStyle = props.lineStyle ? props.lineStyle(diffdata, 0) : {}\n const diffOverlayA = (\n <path key={\"xyline-diff-a\"}\n className={`${doClassname} difference-overlay-a`}\n \n d={overLine(diffdataA)}\n style={{ fill: \"none\", pointerEvents: \"none\" }}\n />\n )\n mappedLines.push(diffOverlayA)\n\n const diffOverlayB = (\n <path key={\"xyline-diff-b\"}\n className={`${doClassname} difference-overlay-b`}\n \n d={overLine(diffdataB)}\n style={{ fill: \"none\", pointerEvents: \"none\" }}\n />\n )\n mappedLines.push(diffOverlayB)\n }\n\n return mappedLines\n}\n\nexport function createSummaries({\n xScale,\n yScale,\n canvasDrawing,\n data,\n canvasRender,\n styleFn,\n classFn,\n renderKeyFn,\n renderMode,\n \n customMark\n}: {\n xScale: ScaleLinear<number, number>\n yScale: ScaleLinear<number, number>\n canvasDrawing?: object[]\n data: ProjectedSummary[]\n canvasRender?: Function\n styleFn?: Function\n classFn?: Function\n renderKeyFn?: Function\n renderMode?: Function\n customMark?: Function\n}) {\n const summaryClass = classFn || (() => \"\")\n const summaryStyle = styleFn || (() => ({}))\n\n const renderFn = renderMode\n\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n const renderedSummaries = []\n\n data.forEach((d, i) => {\n let className = \"xyframe-summary\"\n if (summaryClass) {\n className = `xyframe-summary ${summaryClass(d)}`\n }\n let drawD: string | React.ReactNode = \"\"\n let shouldBeValid = false\n if (\n typeof d.customMark === \"string\" ||\n React.isValidElement(d.customMark)\n ) {\n drawD = d.customMark\n shouldBeValid = true\n } else if (d.type === \"MultiPolygon\") {\n const polycoords = d.coordinates as unknown as [number, number][][][]\n\n polycoords.forEach((coord: [number, number][][]) => {\n coord.forEach((c) => {\n drawD += `M${c\n .map((p) => `${xScale(p[0])},${yScale(p[1])}`)\n .join(\"L\")}Z `\n })\n })\n } else if (customMark) {\n const xyfCoords = d._xyfCoordinates as [number, number][]\n const projectedCoordinates = xyfCoords.map((p) => [\n xScale(p[0]),\n yScale(p[1])\n ])\n // CUSTOM MARK IMPLEMENTATION\n drawD = customMark({\n d,\n i,\n classFn: summaryClass,\n styleFn: summaryStyle,\n renderFn,\n projectedCoordinates,\n xScale,\n yScale,\n bounds: shapeBounds(projectedCoordinates)\n })\n shouldBeValid = true\n } else {\n const xyfCoords = d._xyfCoordinates as number[][]\n if (d.curve) {\n const lineDrawing = line()\n .x((d) => xScale(d[0]))\n .y((d) => yScale(d[1]))\n .curve(d.curve)\n drawD = lineDrawing(xyfCoords)\n } else {\n drawD = `M${xyfCoords\n .map((p) => `${xScale(p[0])},${yScale(p[1])}`)\n .join(\"L\")}Z`\n }\n }\n\n const renderKey = renderKeyFn ? renderKeyFn(d, i) : `summary-${i}`\n\n if (shouldBeValid && React.isValidElement(drawD)) {\n renderedSummaries.push(drawD)\n } else if (canvasRender && canvasRender(d, i) === true) {\n const canvasSummary = {\n type: \"summary\",\n baseClass: \"xyframe-summary\",\n tx: 0,\n ty: 0,\n d,\n i,\n markProps: { markType: \"path\", d: drawD },\n styleFn: summaryStyle,\n renderFn,\n classFn: () => className\n }\n canvasDrawing.push(canvasSummary)\n } else {\n renderedSummaries.push(\n <path data-testid=\"xyframe-summary\"\n key={renderKey}\n className={className}\n\n d={drawD as string}\n style={summaryStyle(d, i)}\n />\n )\n }\n })\n return renderedSummaries\n}\n\nexport function clonedAppliedElement({\n tx,\n ty,\n d,\n i,\n markProps,\n styleFn,\n classFn,\n renderKeyFn,\n baseClass,\n yi\n}: {\n tx?: number\n ty?: number\n d: Record<string, any>\n i: number\n markProps: Record<string, any>\n styleFn: Function\n classFn: Function\n renderKeyFn: Function\n baseClass: string\n yi?: number\n}) {\n markProps.style = styleFn ? styleFn(d, i, yi) : {}\n\n markProps.className = baseClass\n\n markProps.key = renderKeyFn\n ? renderKeyFn(d, i, yi)\n : `${baseClass}-${d.key === undefined ? i : d.key}`\n\n if (tx || ty) {\n markProps.transform = `translate(${tx || 0},${ty || 0})`\n }\n\n if (classFn) {\n markProps.className = `${baseClass} ${classFn(d, i, yi)}`\n }\n\n if (markProps.style.r) {\n markProps.r = markProps.style.r\n }\n markProps[\"data-testid\"] = baseClass\n\n if (!markProps.markType) {\n const RenderableMark = markProps as React.ComponentClass\n return React.createElement(RenderableMark)\n }\n\n const { markType, ...restProps } = markProps\n return React.createElement(markType, restProps)\n}\n","import * as React from \"react\"\n\nimport { histogram, max } from \"d3-array\"\nimport { groupBarMark } from \"../svg/SvgHelper\"\nimport { area, line, curveCatmullRom, curveLinear, arc } from \"d3-shape\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\nimport { scaleLinear } from \"d3-scale\"\nimport { curveHash } from \"../visualizationLayerBehavior/general\"\nimport { quantile } from \"d3-array\"\nimport { sum } from \"d3-array\"\n\ninterface BuckeyArrayType {\n [position: number]: Record<string, any>\n x0?: number\n x1?: number\n push(item: Record<string, any>): number\n}\n\nconst verticalXYSorting = (a, b) => a.xy.y - b.xy.y\nconst horizontalXYSorting = (a, b) => b.xy.x - a.xy.x\nconst emptyObjectReturnFn = () => ({})\n\nfunction createSummaryAxis({\n summary,\n summaryI,\n axisSettings,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n}) {\n let axisTranslate = `translate(${summary.x},0)`\n let axisDomain = [0, actualMax]\n if (projection === \"horizontal\") {\n axisTranslate = `translate(${0},${summary.x})`\n axisDomain = [actualMax, 0]\n } else if (projection === \"radial\") {\n axisTranslate = \"translate(0, 0)\"\n }\n\n const axisWidth = projection === \"horizontal\" ? adjustedSize[0] : columnWidth\n const axisHeight = projection === \"vertical\" ? adjustedSize[1] : columnWidth\n axisSettings.size = [axisWidth, axisHeight]\n const axisScale = scaleLinear().domain(axisDomain).range([0, columnWidth])\n\n const renderedSummaryAxis = axisCreator(axisSettings, summaryI, axisScale)\n\n return (\n <g\n className=\"summary-axis\"\n key={`summaryPiece-axis-${summaryI}`}\n transform={axisTranslate}\n >\n {renderedSummaryAxis}\n </g>\n )\n}\n\nexport function bucketizedRenderingFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n axisCreator: axisCreatorParam\n}) {\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n\n const buckets = type.bins || 25\n const relativeBuckets = type.relative ? {} : false\n const summaryValueAccessor = type.binValue || ((d) => d.length)\n\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n\n let axisCreator\n if (type.axis) {\n type.axis.orient =\n projection === \"horizontal\" &&\n [\"left\", \"right\"].indexOf(type.axis.orient) === -1\n ? \"left\"\n : type.axis.orient\n type.axis.orient =\n projection === \"vertical\" &&\n [\"bottom\", \"top\"].indexOf(type.axis.orient) === -1\n ? \"bottom\"\n : type.axis.orient\n axisCreator = axisCreatorParam\n if (projection === \"radial\") {\n console.error(\"Summary axes cannot be drawn for radial histograms\")\n axisCreator = () => null\n }\n }\n\n let bucketSize = chartSize / buckets\n\n const keys = Object.keys(data)\n let binMax = 0\n\n const baseHistogram = histogram()\n\n const binDomain = [0, chartSize]\n\n const binBuckets = []\n\n for (let x = 0; x < buckets; x++) {\n binBuckets.push(binDomain[0] + (x / buckets) * chartSize)\n }\n\n const xyValue =\n projection === \"vertical\"\n ? (p) => p.piece.scaledVerticalValue\n : (p) => p.piece.scaledValue\n\n const instantiatedHistogram = baseHistogram\n .domain(binDomain)\n .thresholds(binBuckets)\n .value(xyValue)\n\n const calculatedBins = keys.map((key, summaryI) => {\n const summary = data[key]\n\n const thisSummaryData = summary.xyData\n\n const xySorting =\n projection === \"vertical\" ? verticalXYSorting : horizontalXYSorting\n\n const summaryPositionNest = thisSummaryData.sort(xySorting)\n\n let keyBins\n if (type.useBins === false) {\n const calculatedValues = summaryPositionNest.map((value) =>\n xyValue(value)\n )\n keyBins = summaryPositionNest\n .map((value, i) => {\n const bucketArray: BuckeyArrayType = []\n bucketArray.x0 = calculatedValues[i] - 1\n bucketArray.x1 = calculatedValues[i] + 1\n bucketArray.push(value)\n return bucketArray\n })\n .sort((a, b) => a.x0 - b.x0)\n bucketSize = chartSize / keyBins.length\n } else {\n keyBins = instantiatedHistogram(summaryPositionNest)\n }\n\n keyBins = keyBins.map((d) => ({\n y: d.x0,\n y1: d.x1 - d.x0,\n pieces: d,\n value: summaryValueAccessor(d.map((p) => p.piece.data))\n }))\n\n if (type.type === \"histogram\" || type.type === \"heatmap\") {\n keyBins = keyBins.filter((d) => d.value !== 0)\n }\n\n const relativeMax =\n keyBins.length === 0 ? 0 : max(keyBins.map((d) => d.value))\n if (relativeBuckets) {\n relativeBuckets[key] = relativeMax\n }\n\n binMax = Math.max(binMax, relativeMax)\n\n return { bins: keyBins, summary, summaryI, thisSummaryData }\n })\n\n const numHorizons = type.horizon\n ? binMax / type.horizon\n : type.numHorizons || 4\n const horizon = type.horizon || binMax / numHorizons\n\n calculatedBins.forEach(({ bins, summary, summaryI, thisSummaryData }) => {\n const eventListeners = eventListenersGenerator(summary, summaryI)\n const columnWidth = summary.width\n let calculatedSummaryStyle = thisSummaryData[0]\n ? styleFn(thisSummaryData[0].piece.data, summaryI)\n : {}\n let calculatedSummaryClass = thisSummaryData[0]\n ? classFn(thisSummaryData[0].piece.data, summaryI)\n : \"\"\n\n let translate = [summary.middle, 0]\n if (projection === \"horizontal\") {\n translate = [bucketSize, summary.middle]\n } else if (projection === \"radial\") {\n translate = [adjustedSize[0] / 2, adjustedSize[1] / 2]\n }\n\n const actualMax =\n (relativeBuckets && relativeBuckets[summary.name]) || binMax\n\n if (type.type === \"heatmap\" || type.type === \"histogram\") {\n const mappedBars = groupBarMark({\n bins,\n binMax,\n relativeBuckets,\n columnWidth,\n projection,\n adjustedSize,\n summaryI,\n summary,\n summaryStyle: calculatedSummaryStyle,\n type\n })\n const tiles = mappedBars.marks\n if (projection === \"radial\") {\n translate = [0, 0]\n }\n\n if (type.axis && type.type === \"histogram\") {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n mappedBars.points.forEach((d) => {\n d.x += translate[0]\n d.y += translate[1]\n })\n\n summaryXYCoords.push(...mappedBars.points)\n renderedSummaryMarks.push({\n containerProps: {\n ...eventListeners,\n transform: `translate(${translate})`,\n className: calculatedSummaryClass,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} ${type.type}`\n },\n //These are drawn items\n elements: tiles\n })\n } else if (type.type === \"violin\") {\n const { iqr } = type\n const subsets = type.subsets || [false]\n const violinElements: Record<string, any>[] = []\n\n bins[0].y = bins[0].y - bucketSize / 2\n bins[bins.length - 1].y = bins[bins.length - 1].y + bucketSize / 2\n\n subsets.forEach((subsettingFn, subsettingIndex) => {\n let actualBins = bins\n if (subsettingFn) {\n calculatedSummaryStyle = thisSummaryData[0]\n ? styleFn(thisSummaryData[0].piece.data, summaryI, subsettingIndex)\n : {}\n calculatedSummaryClass = thisSummaryData[0]\n ? classFn(thisSummaryData[0].piece.data, summaryI, subsettingIndex)\n : \"\"\n actualBins = bins.map((d) => {\n const actualPieces = d.pieces\n .filter((p, pi) => subsettingFn(p.piece, pi))\n .map((d) => d)\n const actualValue = summaryValueAccessor(actualPieces)\n return {\n ...d,\n pieces: actualPieces,\n value: actualValue\n }\n })\n }\n\n let violinArea = area().curve(type.curve || curveCatmullRom)\n\n let violinPoints = []\n\n if (projection === \"horizontal\") {\n actualBins.forEach((summaryPoint) => {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue = ((summaryPoint.value / actualMax) * columnWidth) / 2\n\n violinPoints.push({\n x: xValue,\n y0: -yValue,\n y1: yValue\n })\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n violinArea\n .x((d) => d.x)\n .y0((d) => d.y0)\n .y1((d) => d.y1)\n .defined(\n (d, i) =>\n d.y0 !== 0 ||\n (violinPoints[i - 1] && violinPoints[i - 1].y0 !== 0) ||\n (violinPoints[i + 1] && violinPoints[i + 1].y0 !== 0)\n )\n } else if (projection === \"vertical\") {\n actualBins.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue = ((summaryPoint.value / actualMax) * columnWidth) / 2\n\n violinPoints.push({\n y: yValue,\n x0: -xValue,\n x1: xValue\n })\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n violinArea\n .y((d) => d.y)\n .x0((d) => d.x0)\n .x1((d) => d.x1)\n .defined(\n (d, i) =>\n d.x0 !== 0 ||\n (violinPoints[i - 1] && violinPoints[i - 1].x0 !== 0) ||\n (violinPoints[i + 1] && violinPoints[i + 1].x0 !== 0)\n )\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_middle\n violinPoints = actualBins\n violinArea = (inbins) => {\n const forward = []\n const backward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [0, 0],\n midAngle + (angle * bin.value) / actualMax / 2,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n const insidePoint = pointOnArcAtAngle(\n [0, 0],\n midAngle - (angle * bin.value) / actualMax / 2,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n\n //Ugh a terrible side effect has appeared\n summaryXYCoords.push({\n key: summary.name,\n x: insidePoint[0] + translate[0],\n y: insidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n summaryXYCoords.push({\n key: summary.name,\n x: outsidePoint[0] + translate[0],\n y: outsidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n\n forward.push(outsidePoint)\n backward.push(insidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}L${backward\n .reverse()\n .map((d) => d.join(\",\"))\n .join(\"L\")}Z`\n }\n }\n\n violinElements.push({\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}-${subsettingIndex}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: calculatedSummaryStyle,\n d: violinArea(violinPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n if (iqr) {\n let iqrPieces = []\n actualBins.forEach((aBin) => {\n iqrPieces.push(...aBin.pieces)\n })\n\n iqrPieces = iqrPieces\n .map((d) =>\n projection === \"vertical\"\n ? d.piece.scaledVerticalValue\n : d.piece.scaledValue\n )\n .sort((a, b) => a - b)\n\n const iqrValues = [\n quantile(iqrPieces, 0.25),\n quantile(iqrPieces, 0.5),\n quantile(iqrPieces, 0.75)\n ]\n\n const iqrLine =\n projection === \"vertical\"\n ? (first, last, translate) =>\n `M${translate[0]},${first}L${translate[0]},${last}`\n : (first, last, translate) =>\n `M${first},${translate[1]}L${last},${translate[1]}`\n\n violinElements.push({\n\n ...eventListeners,\n key: `summaryPiece-${summaryI}-${subsettingIndex}-iqr-line`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: {\n stroke: \"black\",\n strokeWidth: \"2px\",\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(\"iqr\")\n },\n d: iqrLine(iqrValues[0], iqrValues[2], translate),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n\n violinElements.push({\n\n ...eventListeners,\n key: `summaryPiece-${summaryI}-${subsettingIndex}-iqr-median`,\n markType: \"circle\",\n className: calculatedSummaryClass,\n style: {\n stroke: \"black\",\n fill: \"black\",\n strokeWidth: \"1px\",\n r: \"3px\",\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(\"median\")\n },\n cx: projection === \"vertical\" ? translate[0] : iqrValues[1],\n cy: projection === \"vertical\" ? iqrValues[1] : translate[1],\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n }\n })\n\n renderedSummaryMarks.push({\n elements: violinElements\n })\n } else if (type.type === \"ridgeline\") {\n const zeroedStart = Object.assign({}, bins[0], { value: 0 })\n const zeroedEnd = Object.assign({}, bins[bins.length - 1], { value: 0 })\n //Ridgeline plots need to visually signify the zero baseline with their start and end position\n\n zeroedStart.y = zeroedStart.y - bucketSize / 2\n zeroedEnd.y = zeroedEnd.y + bucketSize / 2\n\n const joyBins = [zeroedStart, ...bins, zeroedEnd]\n let joyPoints = []\n\n const interpolatorSetting = type.curve || type.interpolator\n\n const actualInterpolator =\n typeof interpolatorSetting === \"string\"\n ? curveHash[interpolatorSetting]\n : interpolatorSetting\n\n let joyArea = line()\n .curve(actualInterpolator || curveCatmullRom)\n .x((d) => d.x)\n .y((d) => d.y)\n\n const joyHeight = type.amplitude || 0\n\n if (type.axis && type.type === \"histogram\") {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: { baseline: false, ...type.axis },\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n if (projection === \"horizontal\") {\n joyBins.forEach((summaryPoint, i) => {\n const xValue = summaryPoint.y - bucketSize / 2\n\n const yValue = type.flip\n ? (summaryPoint.value / actualMax) * (columnWidth + joyHeight) -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * (columnWidth + joyHeight) +\n columnWidth / 2\n\n joyPoints.push({\n y: yValue,\n x: xValue\n })\n\n //Don't make an interaction point for the first or last\n if (i !== 0 && i !== joyBins.length - 1) {\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n }\n })\n } else if (projection === \"vertical\") {\n joyBins.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * (columnWidth + joyHeight) -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * (columnWidth + joyHeight) +\n columnWidth / 2\n\n joyPoints.push({\n y: yValue,\n x: xValue\n })\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_start + summary.pct_padding / 2\n\n translate = [0, 0]\n joyPoints = joyBins\n joyArea = (inbins) => {\n const forward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n midAngle + (angle * bin.value) / actualMax,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n //Ugh a terrible side effect has appeared\n summaryXYCoords.push({\n key: summary.name,\n x: outsidePoint[0] + translate[0],\n y: outsidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n\n forward.push(outsidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}Z`\n }\n }\n\n if (type.axis) {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n renderedSummaryMarks.push({\n elements: [\n {\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: calculatedSummaryStyle,\n d: joyArea(joyPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n }\n ]\n })\n } else if (type.type === \"horizon\") {\n const zeroedStart = Object.assign({}, bins[0], { value: 0 })\n const zeroedEnd = Object.assign({}, bins[bins.length - 1], { value: 0 })\n\n zeroedStart.y = zeroedStart.y - bucketSize / 2\n zeroedEnd.y = zeroedEnd.y + bucketSize / 2\n\n const horizonBins = [zeroedStart, ...bins, zeroedEnd]\n\n let multiBins = []\n let remainingPieces = true\n let currentHorizon = 0\n\n while (remainingPieces === true) {\n const currentStrip = horizonBins.map((d) => ({\n ...d,\n value: Math.max(0, Math.min(d.value - currentHorizon, horizon))\n }))\n multiBins.push(\n currentStrip.map((d) => ({ ...d, value: d.value * numHorizons }))\n )\n currentHorizon += horizon\n if (max(currentStrip.map((d) => d.value)) < horizon) {\n remainingPieces = false\n }\n }\n\n multiBins = multiBins.filter((d) => sum(d, (p) => p.value) > 0)\n\n horizonBins.forEach((summaryPoint, i) => {\n if (i !== 0 && i !== horizonBins.length - 1) {\n if (projection === \"horizontal\") {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue =\n (-summaryPoint.value / actualMax) * columnWidth + columnWidth / 2\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n } else if (projection === \"vertical\") {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * columnWidth -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * columnWidth +\n columnWidth / 2\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n }\n }\n })\n\n const multiBinMarks = multiBins.map((multiBin, multiBinI) => {\n let horizonPoints = []\n\n const interpolatorSetting = type.curve || type.interpolator\n\n const actualInterpolator =\n typeof interpolatorSetting === \"string\"\n ? curveHash[interpolatorSetting]\n : interpolatorSetting\n\n let horizonArea = line()\n .curve(actualInterpolator || curveLinear)\n .x((d) => d.x)\n .y((d) => d.y)\n\n if (projection === \"horizontal\") {\n multiBin.forEach((summaryPoint) => {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue =\n (-summaryPoint.value / actualMax) * columnWidth + columnWidth / 2\n\n horizonPoints.push({\n y: yValue,\n x: xValue\n })\n\n //Don't make an interaction point for the first or last\n })\n } else if (projection === \"vertical\") {\n multiBin.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * columnWidth -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * columnWidth +\n columnWidth / 2\n\n horizonPoints.push({\n y: yValue,\n x: xValue\n })\n })\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_start + summary.pct_padding / 2\n\n translate = [0, 0]\n horizonPoints = multiBin\n horizonArea = (inbins) => {\n const forward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n midAngle + (angle * bin.value) / actualMax,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n\n forward.push(outsidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}Z`\n }\n }\n\n return {\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}-${multiBinI}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: {\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(multiBin, multiBinI)\n },\n d: horizonArea(horizonPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n }\n })\n\n if (type.axis) {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n renderedSummaryMarks.push({ elements: multiBinMarks })\n }\n })\n\n return {\n marks: renderedSummaryMarks,\n xyPoints: summaryXYCoords,\n thresholds: binBuckets\n }\n}\n","import * as React from \"react\"\n\nimport { ProjectionTypes } from \"../types/generalTypes\"\n\nimport { boxplotRenderFn } from \"./boxplotRenderer\"\nimport { ckBinsRenderFn } from \"./ckbinsRenderer\"\nimport { contourRenderFn } from \"./contourRenderer\"\nimport { bucketizedRenderingFn } from \"./bucketizedRenderer\"\n\n// Re-export renderer functions so existing imports from this module continue to work\nexport { boxplotRenderFn } from \"./boxplotRenderer\"\nexport { ckBinsRenderFn } from \"./ckbinsRenderer\"\nexport { contourRenderFn } from \"./contourRenderer\"\nexport { bucketizedRenderingFn } from \"./bucketizedRenderer\"\n\ntype SummaryType = { type: string }\n\ntype ORFrameSummaryRendererTypes = {\n data: Array<object>\n type: SummaryType\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n adjustedSize: Array<number>\n chartSize: number\n margin: object\n axisCreator?: Function\n}\n\nconst summaryRenderHash = {\n contour: contourRenderFn,\n boxplot: boxplotRenderFn,\n violin: bucketizedRenderingFn,\n heatmap: bucketizedRenderingFn,\n ridgeline: bucketizedRenderingFn,\n histogram: bucketizedRenderingFn,\n horizon: bucketizedRenderingFn,\n ckbins: ckBinsRenderFn\n}\n\nexport function orFrameSummaryRenderer({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n}: ORFrameSummaryRendererTypes) {\n let summaryRenderFn\n if (typeof type.type === \"function\") {\n summaryRenderFn = type.type\n } else if (summaryRenderHash[type.type]) {\n summaryRenderFn = summaryRenderHash[type.type]\n } else {\n console.error(\n `Invalid summary type: ${\n type.type\n } - Must be a function or one of the following strings: ${Object.keys(\n summaryRenderHash\n ).join(\", \")}`\n )\n return {}\n }\n return summaryRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n })\n}\n\n/**\n * Main drawing function for summary visualizations\n */\nexport const drawSummaries = ({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n margin,\n axisCreator\n}: {\n data: object\n type: { type?: string | Function }\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n adjustedSize: number[]\n margin: object\n axisCreator?: Function\n}) => {\n if (!type || !type.type) return\n type = typeof type === \"string\" ? { type } : type\n const chartSize =\n projection === \"vertical\" ? adjustedSize[1] : adjustedSize[0]\n\n return orFrameSummaryRenderer({\n data: data as unknown as Array<object>,\n type: type as SummaryType,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n })\n}\n\ninterface summaryInstruction {\n Mark?: JSX.Element\n containerProps?: object\n elements: object[]\n}\n\n/**\n * Converts summary instructions to rendered SVG elements\n */\nexport function summaryInstructionsToMarks(data: summaryInstruction[]) {\n const renderedSummaries: JSX.Element[] = []\n for (const container of data) {\n const renderedElements: JSX.Element[] = []\n const { elements, containerProps} = container\n if (container.Mark) {\n renderedSummaries.push(container.Mark)\n } else {\n for (let i = 0; i < elements.length; i++) {\n const element: Record<string, any> = elements[i] as Record<string, any>\n const { markType, style = {}, ...restProps } = element\n\n // Merge style object into direct props for cleaner SVG\n const elementProps: Record<string, any> = { ...restProps }\n if (style.fill !== undefined) elementProps.fill = style.fill\n if (style.stroke !== undefined) elementProps.stroke = style.stroke\n if (style.strokeWidth !== undefined) elementProps.strokeWidth = style.strokeWidth\n if (style.opacity !== undefined) elementProps.opacity = style.opacity\n if (style.fillOpacity !== undefined) elementProps.fillOpacity = style.fillOpacity\n if (style.strokeOpacity !== undefined) elementProps.strokeOpacity = style.strokeOpacity\n\n // Keep remaining styles\n const remainingStyles: Record<string, any> = { ...style }\n delete remainingStyles.fill\n delete remainingStyles.stroke\n delete remainingStyles.strokeWidth\n delete remainingStyles.opacity\n delete remainingStyles.fillOpacity\n delete remainingStyles.strokeOpacity\n if (Object.keys(remainingStyles).length > 0) {\n elementProps.style = remainingStyles\n }\n\n elementProps.key = element.key || i\n\n if (markType) {\n renderedElements.push(React.createElement(markType, elementProps))\n }\n }\n if (containerProps) {\n renderedSummaries.push(<g {...containerProps}>{renderedElements}</g>)\n } else {\n renderedSummaries.push(...renderedElements)\n }\n }\n }\n return renderedSummaries\n}\n\nexport const renderLaidOutSummaries = ({\n data,\n canvasRender,\n canvasDrawing\n}) => {\n if (canvasRender()) {\n for (const container of data) {\n if (container.type !== \"svg-only-mark\") {\n const { transform: containerTransform = \"translate(0,0)\" } =\n container?.containerProps ?? {\n transform: \"translate(0,0)\"\n }\n\n const [containerX, containerY] = containerTransform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n for (const element of container.elements) {\n const { transform: elementTransform = \"translate(0,0)\" } = element\n\n const [elementX, elementY] = elementTransform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n\n const canvasNode = {\n baseClass: \"frame-piece\",\n tx: parseInt(elementX) + parseInt(containerX),\n ty: parseInt(elementY) + parseInt(containerY),\n d: {},\n i: 0,\n markProps: element,\n styleFn: () => element.style,\n renderFn: element.renderMode,\n classFn: () => \"\"\n }\n\n canvasDrawing.push(canvasNode)\n }\n }\n }\n }\n\n return summaryInstructionsToMarks(\n data.filter((d) => !canvasRender() || d.type === \"svg-only-mark\")\n )\n}\n","import * as React from \"react\"\nimport { useEffect, useState, useRef } from \"react\"\n\nimport {\n axisLabels,\n axisPieces,\n axisLines\n} from \"./../visualizationLayerBehavior/axis\"\n\nimport SummaryGraphic from \"./summaryGraphic\"\nimport AxisTitle from \"./axisTitle\"\n\nimport { AxisProps } from \"./../types/annotationTypes\"\n\nimport {\n drawSummaries,\n summaryInstructionsToMarks\n} from \"./../svg/summaryLayouts\"\nimport { AxisSummaryTypeSettings } from \"./../types/generalTypes\"\n\n// components\n\nconst marginalPointMapper = (orient, width, data) => {\n const xMod = orient === \"left\" || orient === \"right\" ? width / 2 : 0\n const yMod = orient === \"bottom\" || orient === \"top\" ? width / 2 : 0\n return data.map((p) => [p.xy.x + xMod, p.xy.y + yMod])\n}\n\nfunction formatValue(value, props) {\n if (props.tickFormat) {\n return props.tickFormat(value)\n }\n if (value.toString) {\n return value.toString()\n }\n return value\n}\n\nconst boundingBoxMax = (axisNode, orient) => {\n const axisRef = axisNode.current\n if (!axisRef) return 30\n\n const positionType =\n orient === \"left\" || orient === \"right\" ? \"width\" : \"height\"\n\n const axisLabelMax =\n Math.max(\n ...[...axisRef.querySelectorAll(\".axis-label\")]\n .map(\n (l: { getBBox: Function }) =>\n (l.getBBox && l.getBBox()) || { height: 30, width: 30 }\n )\n .map((d) => d[positionType])\n ) + 25\n\n return axisLabelMax\n}\n\nexport default function Axis(props: AxisProps) {\n const {\n rotate,\n label,\n dynamicLabelPosition,\n orient = \"left\",\n marginalSummaryType,\n tickFormat = marginalSummaryType ? () => \"\" : (d) => d,\n size,\n width = (size && size[0]) || 0,\n height = (size && size[1]) || 0,\n className,\n padding,\n tickValues,\n scale,\n ticks,\n footer,\n tickSize,\n tickLineGenerator,\n baseline = true,\n margin = { top: 0, bottom: 0, left: 0, right: 0 },\n center = false,\n annotationFunction,\n glyphFunction,\n xyPoints\n } = props\n\n const [hoverPosition, changeHoverPosition] = useState(0)\n const [calculatedLabelPosition, changeCalculatedLabelPosition] =\n useState(undefined)\n\n const axisNode = useRef(null)\n\n useEffect(() => {\n if (!label?.position && dynamicLabelPosition) {\n const newBBMax = boundingBoxMax(axisNode, orient)\n if (newBBMax !== calculatedLabelPosition) {\n changeCalculatedLabelPosition(newBBMax)\n }\n }\n }, [label, dynamicLabelPosition])\n\n let { axisParts, position = [0, 0] } = props\n\n let axisTickLines\n\n if (!axisParts) {\n axisParts = axisPieces({\n padding: padding,\n tickValues,\n scale,\n ticks,\n orient,\n size: [width, height],\n footer,\n tickSize\n })\n axisTickLines = (\n <g className={`axis ${className}`}>\n {axisLines({\n axisParts,\n orient,\n tickLineGenerator,\n className,\n scale\n })}\n </g>\n )\n }\n if (axisParts.length === 0) {\n return null\n }\n\n let hoverWidth = 50\n let hoverHeight = height\n let hoverX = -50\n let hoverY = 0\n let baselineX = 0\n let baselineY = 0\n let baselineX2 = 0\n let baselineY2 = height\n // hoverFunction is set is switch(orient) below\n let hoverFunction\n let circleX = 25\n let textX = -25\n let textY = 18\n let lineWidth = width + 25\n let lineHeight = 0\n let circleY = hoverPosition\n let annotationOffset = 0\n let annotationType = \"y\"\n\n switch (orient) {\n case \"right\":\n position = [position[0], position[1]]\n hoverX = width\n baselineX2 = baselineX = width\n annotationOffset = margin.top\n lineWidth = -width - 25\n textX = 5\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetY - annotationOffset)\n }\n if (center === true) {\n baselineX2 = baselineX = width / 2\n }\n break\n case \"top\":\n position = [position[0], 0]\n hoverWidth = width\n hoverHeight = 50\n hoverY = -50\n hoverX = 0\n annotationOffset = margin.left\n annotationType = \"x\"\n baselineX2 = width\n baselineY2 = 0\n if (center === true) {\n baselineY2 = baselineY = height / 2\n }\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetX - annotationOffset)\n }\n circleX = hoverPosition\n circleY = 25\n textX = 0\n textY = -10\n lineWidth = 0\n lineHeight = height + 25\n break\n case \"bottom\":\n position = [position[0], 0]\n hoverWidth = width\n hoverHeight = 50\n baselineY = baselineY2 = hoverY = height\n baselineX = hoverX = 0\n baselineX2 = width\n annotationOffset = margin.left\n\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetX - annotationOffset)\n }\n circleX = hoverPosition\n circleY = 25\n textX = 0\n textY = 15\n lineWidth = 0\n lineHeight = -height - 25\n annotationType = \"x\"\n if (center === true) {\n baselineY2 = baselineY = height / 2\n }\n break\n default:\n position = [position[0], position[1]]\n annotationOffset = margin.top\n if (center === true) {\n baselineX2 = baselineX = width / 2\n }\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetY - annotationOffset)\n }\n }\n\n let annotationBrush\n\n if (annotationFunction) {\n const formattedValue = formatValue(scale.invert(hoverPosition), props)\n const hoverGlyph: any = glyphFunction ? (\n glyphFunction({\n lineHeight,\n lineWidth,\n value: scale.invert(hoverPosition)\n })\n ) : (\n <g>\n {React.isValidElement(formattedValue) ? (\n <g transform={`translate(${textX},${textY})`}>{formattedValue}</g>\n ) : (\n <text x={textX} y={textY}>\n {formattedValue}\n </text>\n )}\n <circle r={5} />\n <line x1={lineWidth} y1={lineHeight} style={{ stroke: \"black\" }} />\n </g>\n )\n const annotationSymbol = hoverPosition ? (\n <g\n style={{ pointerEvents: \"none\" }}\n transform={`translate(${circleX},${circleY})`}\n >\n {hoverGlyph}\n </g>\n ) : null\n\n annotationBrush = (\n <g\n className=\"annotation-brush\"\n transform={`translate(${hoverX},${hoverY})`}\n >\n <rect\n style={{ fillOpacity: 0 }}\n height={hoverHeight}\n width={hoverWidth}\n onMouseMove={hoverFunction}\n onClick={(e) =>\n annotationFunction({\n className: \"dynamic-axis-annotation\",\n type: annotationType,\n value: scale.invert(hoverPosition),\n e\n })\n }\n onMouseOut={() => {\n changeHoverPosition(undefined)\n }}\n />\n {annotationSymbol}\n </g>\n )\n }\n\n let summaryGraphic\n\n if (marginalSummaryType && xyPoints) {\n const summaryWidth = Math.max(margin[orient] - 6, 5)\n\n const decoratedSummaryType: AxisSummaryTypeSettings =\n typeof marginalSummaryType === \"string\"\n ? { type: marginalSummaryType }\n : marginalSummaryType\n\n if (\n decoratedSummaryType.flip === undefined &&\n (orient === \"bottom\" || orient === \"right\")\n ) {\n decoratedSummaryType.flip = true\n }\n\n const summaryStyle = decoratedSummaryType.summaryStyle\n ? () => decoratedSummaryType.summaryStyle\n : () => ({\n fill: \"black\",\n fillOpacity: 0.5,\n stroke: \"black\",\n strokeDasharray: \"0\"\n })\n\n const summaryRenderMode = decoratedSummaryType.renderMode\n ? () => decoratedSummaryType.renderMode\n : () => undefined\n\n const summaryClass = decoratedSummaryType.summaryClass\n ? () => decoratedSummaryType.summaryClass\n : () => \"\"\n\n const dataFilter = decoratedSummaryType.filter || (() => true)\n\n const forSummaryData = xyPoints\n .filter(\n (p: { x?: number; y?: number; data?: object }) =>\n p.x !== undefined && p.y !== undefined && dataFilter(p.data)\n )\n .map((d: { x: number; y: number }) => ({\n ...d,\n xy: {\n x: orient === \"top\" || orient === \"bottom\" ? scale(d.x) : 0,\n y: orient === \"left\" || orient === \"right\" ? scale(d.y) : 0\n },\n piece: {\n scaledVerticalValue: scale(d.y),\n scaledValue: scale(d.x)\n },\n value:\n orient === \"top\" || orient === \"bottom\" ? scale(d.y) : scale(d.x),\n scaledValue: scale(d.x),\n scaledVerticalValue: scale(d.y)\n }))\n\n const calculatedSummary = drawSummaries({\n data: {\n column: {\n middle: summaryWidth / 2,\n pieceData: forSummaryData,\n width: summaryWidth,\n xyData: forSummaryData\n }\n },\n type: decoratedSummaryType,\n renderMode: summaryRenderMode,\n eventListenersGenerator:\n decoratedSummaryType.eventListenersGenerator || (() => ({})),\n styleFn: summaryStyle,\n classFn: summaryClass,\n projection:\n orient === \"top\" || orient === \"bottom\" ? \"horizontal\" : \"vertical\",\n adjustedSize: size,\n margin: { top: 0, bottom: 0, left: 0, right: 0 }\n })\n\n const renderedSummary = summaryInstructionsToMarks(calculatedSummary.marks)\n\n let points\n\n if (decoratedSummaryType.showPoints === true) {\n const mappedPoints = marginalPointMapper(\n orient,\n summaryWidth,\n forSummaryData\n )\n\n points = mappedPoints.map((d, i) => (\n <circle\n key={`axis-summary-point-${i}`}\n cx={d[0]}\n cy={d[1]}\n r={decoratedSummaryType.r || 3}\n style={\n decoratedSummaryType.pointStyle || {\n fill: \"black\",\n fillOpacity: 0.1\n }\n }\n />\n ))\n }\n\n const translation = {\n left: [-margin.left + 2, 0],\n right: [size[0] + 2, 0],\n top: [0, -margin.top + 2],\n bottom: [0, size[1] + 2]\n }\n\n summaryGraphic = (\n <SummaryGraphic\n translation={translation}\n orient={orient}\n decoratedSummaryType={decoratedSummaryType}\n summaryWidth={summaryWidth}\n renderedSummary={renderedSummary}\n points={points}\n />\n )\n }\n\n let axisTitle\n\n const axisTickLabels = axisLabels({\n tickFormat,\n axisParts,\n orient,\n rotate,\n center\n })\n if (label) {\n const labelName: any = label.name || label\n const labelPosition = label.position || {}\n const locationMod = labelPosition.location || \"outside\"\n let anchorMod = (labelPosition.anchor || \"middle\") as \"inherit\" | \"middle\" | \"end\" | \"start\"\n const distance = label.locationDistance || calculatedLabelPosition\n\n const rotateHash = {\n left: -90,\n right: 90,\n top: 0,\n bottom: 0\n }\n\n const rotation = labelPosition.rotation || rotateHash[orient]\n\n const positionHash = {\n left: {\n start: [0, size[1]],\n middle: [0, size[1] / 2],\n end: [0, 0],\n inside: [distance || 15, 0],\n outside: [-(distance || 45), 0]\n },\n right: {\n start: [size[0] + 0, size[1]],\n middle: [size[0] + 0, size[1] / 2],\n end: [size[0] + 0, 0],\n inside: [-(distance || 15), 0],\n outside: [distance || 45, 0]\n },\n top: {\n start: [0, 0],\n middle: [0 + size[0] / 2, 0],\n end: [0 + size[0], 0],\n inside: [0, distance || 15],\n outside: [0, -(distance || 40)]\n },\n bottom: {\n start: [0, size[1]],\n middle: [0 + size[0] / 2, size[1]],\n end: [0 + size[0], size[1]],\n inside: [0, -(distance || 5)],\n outside: [0, distance || 50]\n }\n }\n\n const translation = positionHash[orient][anchorMod]\n const location = positionHash[orient][locationMod]\n\n translation[0] = translation[0] + location[0]\n translation[1] = translation[1] + location[1]\n\n if (anchorMod === \"start\" && orient === \"right\") {\n anchorMod = \"end\"\n } else if (anchorMod === \"end\" && orient === \"right\") {\n anchorMod = \"start\"\n }\n\n axisTitle = (\n <AxisTitle\n className={className}\n translation={translation}\n position={position}\n rotation={rotation}\n labelName={labelName}\n anchorMod={anchorMod}\n />\n )\n }\n\n const axisAriaLabel = `${orient} axis ${\n (axisParts &&\n axisParts.length > 0 &&\n `from ${tickFormat(axisParts[0].value, 0)} to ${tickFormat(\n axisParts[axisParts.length - 1].value,\n axisParts.length - 1\n )}`) ||\n \"without ticks\"\n }`\n\n return (\n <g className={className} aria-label={axisAriaLabel} ref={axisNode}>\n {annotationBrush}\n {axisTickLabels}\n {axisTickLines}\n {baseline === true ? (\n <line\n key=\"baseline\"\n className={`axis-baseline ${className}`}\n stroke=\"black\"\n strokeLinecap=\"square\"\n x1={baselineX}\n x2={baselineX2}\n y1={baselineY}\n y2={baselineY2}\n />\n ) : null}\n {axisTitle}\n {summaryGraphic}\n </g>\n )\n}\n\nexport { marginalPointMapper, formatValue, boundingBoxMax }\n","import * as React from \"react\"\n\nimport { drawAreaConnector } from \"../svg/SvgHelper\"\nimport Axis from \"../Axis\"\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport {\n boxplotRenderFn,\n contourRenderFn,\n bucketizedRenderingFn,\n ckBinsRenderFn,\n orFrameSummaryRenderer\n} from \"./summaryLayouts\"\nimport {\n axisPieces,\n axisLines,\n baselineGenerator\n} from \"../visualizationLayerBehavior/axis\"\n\nimport {\n MarginType,\n ProjectionTypes,\n accessorType\n} from \"../types/generalTypes\"\n\nimport { scaleLinear, ScaleLinear } from \"d3-scale\"\n\nconst extent = (inputArray) =>\n inputArray.reduce(\n (p, c) => {\n return [Math.min(c, p[0]), Math.max(c, p[1])]\n },\n [Infinity, -Infinity]\n )\n\nexport type TitleType =\n | string\n | Element\n | { title?: string | Element; orient?: string }\n\ntype PieceType = { type: string; innerRadius?: number }\n\ntype SummaryType = { type: string }\n\ntype CalculateMarginTypes = {\n margin?: number | object\n axes?: Array<AxisProps>\n title: TitleType\n oLabel?: boolean | Function | { label?: boolean | Function; orient?: string; padding?: number }\n projection?: ProjectionTypes\n size?: number[]\n}\n\ntype AdjustedPositionSizeTypes = {\n size: Array<number>\n position?: Array<number>\n margin: MarginType\n projection?: ProjectionTypes\n}\n\ntype ORFrameConnectionRendererTypes = {\n type: { type: Function }\n data: { keyedData: Record<string, any>; oExtent: string[] }\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n canvasRender: Function\n canvasDrawing: Array<object>\n pieceType: PieceType\n}\n\ntype ORFrameAxisGeneratorTypes = {\n projection: ProjectionTypes\n axis?: Array<AxisProps>\n adjustedSize: Array<number>\n size: Array<number>\n rScale: ScaleLinear<number, number>\n rScaleType: ScaleLinear<number, number>\n pieceType: PieceType\n rExtent: Array<number>\n data: Array<object>\n maxColumnValues?: number\n xyData: Array<{ value: number; data: object }>\n margin: MarginType\n thresholds?: number[]\n}\n\nconst findActualTitle = (rawTitle) => {\n let title = null\n let orient = \"top\"\n if (typeof rawTitle === \"string\") {\n title = rawTitle\n } else if (\"title\" in rawTitle) {\n title = rawTitle.title\n orient = rawTitle.orient || \"top\"\n } else {\n title = rawTitle\n }\n\n return { orient, title }\n}\n\nfunction roundToTenth(number: number) {\n return Math.round(number * 10) / 10\n}\n\nexport const circlePath = (cx: number, cy: number, r: number) =>\n `${[\n \"M\",\n roundToTenth(cx - r),\n roundToTenth(cy),\n \"a\",\n r,\n r,\n 0,\n 1,\n 0,\n r * 2,\n 0,\n \"a\",\n r,\n r,\n 0,\n 1,\n 0,\n -(r * 2),\n 0\n ].join(\" \")}Z`\n\nexport const drawMarginPath = ({\n margin,\n size,\n inset = 0\n}: {\n margin: MarginType\n size: Array<number>\n inset: number\n}) => {\n const iSize = [size[0] - inset, size[1] - inset]\n return `M0,0 h${size[0]} v${size[1]} h-${size[0]}Z M${margin.left - inset},${\n margin.top - inset\n } v${size[1] + inset * 2 - margin.top - margin.bottom} h${\n iSize[0] + inset * 3 - margin.left - margin.right\n } v-${iSize[1] + inset * 3 - margin.top - margin.bottom}Z`\n}\n\nexport const calculateMargin = ({\n margin,\n axes,\n title: rawTitle,\n oLabel,\n projection,\n size\n}: CalculateMarginTypes): MarginType => {\n if (margin !== undefined) {\n if (typeof margin === \"function\") {\n margin = margin({ size })\n }\n if (typeof margin !== \"object\") {\n return { top: margin, bottom: margin, left: margin, right: margin }\n } else if (typeof margin === \"object\") {\n return Object.assign({ top: 0, bottom: 0, left: 0, right: 0 }, margin)\n }\n }\n const finalMargin = { top: 0, bottom: 0, left: 0, right: 0 }\n\n let orient = \"left\"\n\n if (axes && projection !== \"radial\") {\n axes.forEach((axisObj) => {\n const axisObjAdditionMargin = axisObj.label ? 60 : 50\n orient = axisObj.orient\n finalMargin[orient] = axisObjAdditionMargin\n })\n }\n\n const { title, orient: titleOrient } = findActualTitle(rawTitle)\n\n if (title && !(typeof title === \"string\" && title.length === 0)) {\n finalMargin[titleOrient] += 40\n }\n\n if (oLabel && projection !== \"radial\") {\n if (orient === \"bottom\" || orient === \"top\") {\n finalMargin.left += 50\n } else {\n finalMargin.bottom += 50\n }\n }\n return finalMargin\n}\n\ntype ObjectifyType = {\n type?: string | Function\n}\n\nexport function objectifyType(\n type?: string | Function | ObjectifyType\n): ObjectifyType {\n if (type instanceof Function || typeof type === \"string\") {\n return { type: type }\n } else if (type === undefined) {\n return {}\n }\n return type\n}\n\nexport function generateOrdinalFrameEventListeners(\n customHoverBehavior: Function,\n customClickBehavior: Function\n) {\n let eventListenersGenerator: (\n d?: object,\n i?: number\n ) => {\n onMouseEnter?: (e) => void\n onMouseLeave?: (e) => void\n onClick?: (e) => void\n } = () => ({})\n\n if (customHoverBehavior || customClickBehavior) {\n eventListenersGenerator = (d: object, i: number) => ({\n onMouseEnter: customHoverBehavior\n ? (e): void => customHoverBehavior(d, i, e)\n : undefined,\n onMouseLeave: customHoverBehavior\n ? (e): void => customHoverBehavior(undefined, undefined, e)\n : undefined,\n onClick: customClickBehavior\n ? (e): void => customClickBehavior(d, i, e)\n : undefined\n })\n }\n return eventListenersGenerator\n}\n\nexport function keyAndObjectifyBarData({\n data,\n renderKey = (d?: object | number, i?: number) => i,\n oAccessor,\n rAccessor: baseRAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis = false\n}: {\n data: Array<object | number>\n renderKey: Function\n oAccessor: Array<Function>\n rAccessor: Array<(d: number | object, i?: number) => number>\n multiAxis?: boolean\n originalOAccessor: Array<string | Function>\n originalRAccessor: Array<string | Function>\n}): { allData: Array<object>; multiExtents?: Array<Array<number>> } {\n let rAccessor\n let multiExtents\n if (multiAxis && baseRAccessor.length > 1) {\n let minNegative = Infinity\n multiExtents = baseRAccessor.map((accessor) => {\n const basicExtent = extent(data.map(accessor))\n minNegative = Math.min(basicExtent[0] / basicExtent[1], minNegative)\n return basicExtent\n })\n const rScales = multiExtents.map((ext) => {\n let range = [0, 1]\n let adjustedExtent = ext\n\n if (ext[0] < 0 && ext[1] > 0) {\n range[0] = minNegative\n adjustedExtent[0] = adjustedExtent[1] * minNegative\n } else if (ext[0] < 0 && ext[1] < 0) {\n adjustedExtent[1] = 0\n range = [-1, 0]\n } else {\n adjustedExtent[0] = 0\n }\n return scaleLinear().domain(ext).range(range)\n })\n rAccessor = rScales.map((scale, i) => (d) => {\n return scale(baseRAccessor[i](d))\n })\n } else {\n rAccessor = baseRAccessor\n }\n const decoratedData: {\n value: number\n renderKey: string\n data: object\n rIndex: number\n rName: string\n oIndex: number\n oName: string\n column: string\n }[] = []\n oAccessor.forEach((actualOAccessor, oIndex) => {\n rAccessor.forEach((actualRAccessor, rIndex) => {\n ;(data || []).forEach((d) => {\n const baseAppliedKey = renderKey(d, decoratedData.length)\n const appliedKey =\n (baseAppliedKey !== undefined &&\n baseAppliedKey.toString &&\n baseAppliedKey.toString()) ||\n baseAppliedKey\n\n const originalR = originalRAccessor[rIndex]\n const originalO = originalOAccessor[oIndex]\n const rName =\n typeof originalR === \"string\" ? originalR : `function-${rIndex}`\n const oName =\n typeof originalO === \"string\" ? originalO : `function-${oIndex}`\n\n if (typeof d !== \"object\") {\n const expandedData = { value: d, renderKey: appliedKey }\n const value = actualRAccessor(expandedData)\n decoratedData.push({\n data: expandedData,\n value,\n rIndex,\n rName,\n oIndex,\n oName,\n column: appliedKey,\n renderKey: appliedKey\n })\n } else {\n const value = actualRAccessor(d)\n const column = actualOAccessor(d)\n decoratedData.push({\n renderKey: appliedKey,\n data: d,\n rIndex,\n rName,\n oIndex,\n oName,\n value,\n column: column && column.toString ? column.toString() : column\n })\n }\n })\n })\n })\n return { allData: decoratedData, multiExtents }\n}\n\nexport function adjustedPositionSize({\n size = [500, 500],\n position = [0, 0],\n margin,\n projection\n}: AdjustedPositionSizeTypes) {\n const heightAdjust = margin.top + margin.bottom\n const widthAdjust = margin.left + margin.right\n\n const adjustedPosition = [position[0], position[1]]\n let adjustedSize = [size[0] - widthAdjust, size[1] - heightAdjust]\n if (projection === \"radial\") {\n const minSize = Math.min(adjustedSize[0], adjustedSize[1])\n adjustedSize = [minSize, minSize]\n }\n\n return { adjustedPosition, adjustedSize }\n}\n\nexport function generateFrameTitle({\n title: rawTitle = { title: \"\", orient: \"top\" },\n size\n}: {\n title: TitleType\n size: Array<number>\n}) {\n let finalTitle = null\n\n const { title, orient } = findActualTitle(rawTitle)\n\n let x = 0,\n y = 0,\n transform\n switch (orient) {\n case \"top\":\n x = size[0] / 2\n y = 25\n break\n case \"bottom\":\n x = size[0] / 2\n y = size[1] - 25\n break\n case \"left\":\n x = 25\n y = size[1] / 2\n transform = \"rotate(-90)\"\n break\n case \"right\":\n x = size[0] - 25\n y = size[1] / 2\n transform = \"rotate(90)\"\n\n break\n }\n const gTransform = `translate(${x},${y})`\n if (typeof title === \"string\" && title.length > 0) {\n finalTitle = (\n <g transform={gTransform}>\n <text\n className={\"frame-title\"}\n transform={transform}\n style={{ textAnchor: \"middle\", pointerEvents: \"none\" }}\n >\n {title}\n </text>\n </g>\n )\n } else if (title) {\n //assume if defined then its an svg mark of some sort\n finalTitle = <g transform={gTransform}>{title}</g>\n }\n return finalTitle\n}\n\nexport function orFrameConnectionRenderer({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n canvasRender,\n canvasDrawing,\n pieceType\n}: ORFrameConnectionRendererTypes) {\n if (!type.type) {\n return null\n }\n const renderedConnectorMarks = []\n const radarMap = new Map()\n\n const { keyedData, oExtent } = data\n\n if (typeof type.type === \"function\") {\n const connectionRule = type.type\n const keys = oExtent\n\n oExtent.forEach((key, pieceArrayI) => {\n const pieceArray = keyedData[key]\n const nextColumn = keyedData[keys[pieceArrayI + 1]]\n if (nextColumn) {\n const matchArray = nextColumn.map((d, i) =>\n connectionRule({ ...d.piece, ...d.piece.data }, i)\n )\n pieceArray.forEach((piece, pieceI) => {\n const thisConnectionPiece = connectionRule(\n { ...piece.piece, ...piece.piece.data },\n pieceI\n )\n const targetMatch = connectionRule(\n { ...piece.piece, ...piece.piece.data },\n pieceI\n )\n\n const matchingPieceIndex =\n targetMatch !== undefined &&\n targetMatch !== false &&\n matchArray.indexOf(targetMatch)\n if (\n thisConnectionPiece !== undefined &&\n thisConnectionPiece !== null &&\n matchingPieceIndex !== false &&\n matchingPieceIndex !== -1\n ) {\n const matchingPiece = nextColumn[matchingPieceIndex]\n let markD\n if (projection === \"radial\" && pieceType.type === \"point\") {\n if (!radarMap.get(piece)) {\n radarMap.set(piece, [piece])\n }\n const thisRadar = radarMap.get(piece)\n if (thisRadar) {\n thisRadar.push(matchingPiece)\n radarMap.set(matchingPiece, thisRadar)\n radarMap.delete(piece)\n }\n } else {\n const { xy } = piece\n const { xy: mxy } = matchingPiece\n const { x, y, height = 1, width = 1 } = xy\n const {\n x: mx,\n y: my,\n height: mheight = 1,\n width: mwidth = 1\n } = mxy\n if (projection === \"vertical\") {\n markD = drawAreaConnector({\n x1: x + width,\n x2: mx,\n y1: y,\n y2: my,\n sizeX1: 0,\n sizeX2: 0,\n sizeY1: height,\n sizeY2: mheight\n })\n } else if (projection === \"horizontal\") {\n const { value } = piece.piece\n const { value: mvalue } = matchingPiece.piece\n const x1 = value >= 0 ? x - width : piece.piece.bottom - width\n const x2 =\n mvalue >= 0\n ? mx - mwidth\n : matchingPiece.piece.bottom - mwidth\n markD = drawAreaConnector({\n x1,\n x2,\n y1: y + height,\n y2: my,\n sizeX1: width,\n sizeX2: mwidth,\n sizeY1: 0,\n sizeY2: 0\n })\n } else if (projection === \"radial\") {\n markD = drawAreaConnector({\n x1: x,\n x2: mx,\n y1: y + height,\n y2: my,\n sizeX1: width,\n sizeX2: mwidth,\n sizeY1: 0,\n sizeY2: 0\n })\n }\n const renderValue = renderMode && renderMode(piece.piece, pieceI)\n const source = { ...piece.piece.data, ...piece.piece.data }\n const target = {\n ...matchingPiece.piece,\n ...matchingPiece.piece.data\n }\n const calculatedStyle = styleFn({\n source,\n target\n })\n\n const eventListeners = eventListenersGenerator(\n { source, target },\n pieceI\n )\n if (canvasRender && canvasRender(piece.piece) === true) {\n const canvasConnector = {\n baseClass: \"xyframe-line\",\n tx: 0,\n ty: 0,\n d: {\n source,\n target\n },\n markProps: { d: markD, markType: \"path\" },\n styleFn: styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasConnector)\n } else {\n renderedConnectorMarks.push(\n <path\n {...eventListeners}\n d={markD}\n className={classFn ? classFn(piece.piece.data, pieceI) : \"\"}\n key={`connector${piece.piece.renderKey}`}\n {...calculatedStyle}\n style={calculatedStyle}\n />\n )\n }\n }\n }\n })\n }\n })\n\n if (radarMap.size > 0) {\n for (const ring of radarMap.values()) {\n const ringPiece = { ...ring[0].piece, ...ring[0].piece.data }\n const markD = `M${ring.map((d) => `${d.xy.x},${d.xy.y}`).join(\"L\")}Z`\n if (canvasRender && canvasRender(ringPiece)) {\n const canvasRadar = {\n baseClass: \"ordinal-radar\",\n tx: 0,\n ty: 0,\n d: {\n source: ringPiece\n },\n markProps: { d: markD, markType: \"path\" },\n styleFn: styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasRadar)\n } else {\n const style = styleFn({\n source: ringPiece\n })\n renderedConnectorMarks.push(\n <path\n d={markD}\n className={classFn ? classFn(ringPiece) : \"\"}\n key={`ordinal-ring-${ringPiece.renderKey}`}\n {...style}\n style={style}\n />\n )\n }\n }\n }\n } else if (type.type) {\n console.error(\n `Invalid connectorType - Must be a function that takes a data point and determines if it is connected to a data point in the next column`\n )\n }\n return renderedConnectorMarks\n}\n\nexport const orFrameAxisGenerator = ({\n projection,\n axis,\n adjustedSize,\n size,\n rScale,\n rScaleType,\n pieceType,\n rExtent,\n data,\n maxColumnValues = 1,\n xyData,\n margin,\n thresholds\n}: ORFrameAxisGeneratorTypes) => {\n if (!axis) return { axis: undefined, axesTickLines: undefined }\n let generatedAxis: Array<JSX.Element>, axesTickLines: Array<Object>\n if (projection !== \"radial\" && axis) {\n axesTickLines = []\n const axisPosition = [0, 0]\n\n generatedAxis = axis.map((d, i) => {\n let axisClassname = d.className || \"\"\n let tickValues\n const axisDomain = d.extentOverride ? d.extentOverride : rScale.domain()\n\n const leftRight = [\"left\", \"right\"]\n\n const axisScale =\n (leftRight.indexOf(d.orient) === -1 && projection !== \"vertical\") ||\n (leftRight.indexOf(d.orient) !== -1 && projection !== \"horizontal\")\n ? rScaleType.domain(axisDomain)\n : rScaleType.domain([0, maxColumnValues])\n\n const orient = d.orient\n const axisRange =\n (leftRight.indexOf(d.orient) === -1 && projection !== \"vertical\") ||\n (leftRight.indexOf(d.orient) !== -1 && projection !== \"horizontal\")\n ? rScale.range()\n : [0, projection === \"vertical\" ? adjustedSize[0] : adjustedSize[1]]\n\n if (orient === \"right\") {\n axisScale.range(axisRange.reverse())\n axisClassname += \" right y\"\n } else if (orient === \"left\") {\n axisClassname += \" left y\"\n axisScale.range(axisRange.reverse())\n } else if (orient === \"top\") {\n axisClassname += \" top x\"\n axisScale.range(axisRange)\n } else if (orient === \"bottom\") {\n axisClassname += \" bottom x\"\n axisScale.range(axisRange)\n }\n\n if (d.tickValues && Array.isArray(d.tickValues)) {\n tickValues = d.tickValues\n } else if (d.tickValues instanceof Function) {\n //otherwise assume a function\n tickValues = d.tickValues(data, size, rScale)\n } else if (!d.tickValues && thresholds) {\n tickValues = thresholds.map((d) => rScale.invert(d))\n }\n const axisParts = axisPieces({\n padding: d.padding,\n tickValues,\n scale: axisScale,\n ticks: d.ticks,\n orient,\n size: adjustedSize,\n footer: d.footer,\n tickSize: d.tickSize,\n jaggedBase: d.jaggedBase\n })\n const axisTickLines = axisLines({\n className: d.className,\n axisParts,\n orient,\n tickLineGenerator: d.tickLineGenerator,\n jaggedBase: d.jaggedBase,\n scale: axisScale\n })\n\n axesTickLines.push(axisTickLines)\n if (d.baseline === \"under\") {\n axesTickLines.push(\n baselineGenerator(d.orient, adjustedSize, d.className)\n )\n }\n\n const marginalSummaryType =\n typeof d.marginalSummaryType === \"string\"\n ? { type: d.marginalSummaryType }\n : d.marginalSummaryType\n\n return (\n <Axis\n {...d}\n key={d.key || `orframe-axis-${i}`}\n axisParts={axisParts}\n orient={orient}\n size={adjustedSize}\n position={axisPosition}\n tickValues={tickValues}\n scale={axisScale}\n className={axisClassname}\n marginalSummaryType={marginalSummaryType}\n margin={margin}\n xyPoints={xyData.map((d) => ({\n x: projection === \"vertical\" ? 0 : d.value,\n y: projection === \"vertical\" ? d.value : 0,\n data: d.data\n }))}\n />\n )\n })\n } else if (projection === \"radial\" && axis) {\n const { innerRadius = 0 } = pieceType\n\n const ticks = []\n axis.forEach((axisObj) => {\n const {\n tickValues: baseTickValues = rScale.ticks(\n Math.max(2, (adjustedSize[0] / 2 - innerRadius) / 50)\n ),\n label,\n tickFormat = (d) => d\n } = axisObj\n\n const tickScale = rScaleType\n .domain(rExtent)\n .range([innerRadius, adjustedSize[0] / 2])\n\n const tickValues =\n baseTickValues instanceof Function\n ? baseTickValues({\n orient: axisObj.orient\n })\n : baseTickValues\n tickValues.forEach((t, i) => {\n const tickSize = tickScale(t)\n if (!(innerRadius === 0 && t === 0)) {\n let axisLabel\n let ref = \"\"\n if (label && i === tickValues.length - 1) {\n const labelSettings =\n typeof label === \"string\"\n ? { name: label, locationDistance: 15 }\n : label\n const { locationDistance = 15 } = labelSettings\n ref = `${Math.random().toString()} `\n axisLabel = (\n <g\n className=\"axis-label radial\"\n transform={`translate(0,${locationDistance})`}\n >\n <text textAnchor=\"middle\">\n <textPath\n startOffset={tickSize * Math.PI * 0.5}\n xlinkHref={`#${ref}`}\n >\n {label.name}\n </textPath>\n </text>\n </g>\n )\n }\n ticks.push(\n <g\n key={`orframe-radial-axis-element-${t}`}\n className=\"axis axis-label axis-tick radial\"\n transform={`translate(0,0)`}\n >\n <path\n id={ref}\n d={circlePath(0, 0, tickSize)}\n r={tickSize}\n stroke=\"gray\"\n fill=\"none\"\n />\n <text y={-tickSize + 5} textAnchor=\"middle\">\n {tickFormat(t)}\n </text>\n {axisLabel}\n </g>\n )\n }\n return undefined\n })\n })\n\n generatedAxis = [\n <g\n key={axis[0].key || `orframe-radial-axis-container`}\n className=\"axis-labels\"\n transform={`translate(${adjustedSize[0] / 2},${adjustedSize[1] / 2})`}\n >\n {ticks}\n </g>\n ]\n }\n\n return { axis: generatedAxis, axesTickLines }\n}\n\nexport const canvasEvent = (canvasContext, overlayRegions, canvasMap, e) => {\n const interactionContext = canvasContext.getContext(\"2d\", { willReadFrequently: true })\n const hoverPoint = interactionContext.getImageData(e.offsetX, e.offsetY, 1, 1)\n\n const mostCommonRGB = `rgba(${hoverPoint.data[0]},${hoverPoint.data[1]},${hoverPoint.data[2]},255)`\n\n let overlay: React.ReactElement = overlayRegions[canvasMap.get(mostCommonRGB)]\n\n if (!overlay) {\n const hoverArea = interactionContext.getImageData(\n e.offsetX - 2,\n e.offsetY - 2,\n 5,\n 5\n )\n let x = 0\n\n while (!overlay && x < 100) {\n overlay =\n overlayRegions[\n canvasMap.get(\n `rgba(${hoverArea.data[x]},${hoverArea.data[x + 1]},${\n hoverArea.data[x + 2]\n },255)`\n )\n ]\n x += 4\n }\n }\n\n return overlay\n}\n","import * as React from \"react\"\nimport { useRef, useLayoutEffect } from \"react\"\n\nimport { canvasEvent } from \"../svg/frameFunctions\"\n\nimport { MarginType } from \"../types/generalTypes\"\n\ntype InteractionCanvasProps = {\n height: number\n width: number\n overlayRegions: Array<{\n props: { d?: string; children: Array<{ props: { d?: string } }> }\n }>\n margin: MarginType\n voronoiHover: Function\n}\n\nexport default React.memo(function InteractionCanvas({\n width,\n height,\n overlayRegions,\n margin,\n voronoiHover\n}: InteractionCanvasProps) {\n let canvasRef = useRef<HTMLCanvasElement>()\n\n useLayoutEffect(() => {\n renderInteractionCanvas(\n canvasRef.current,\n voronoiHover,\n height,\n width,\n overlayRegions,\n margin\n )\n }, [width, height, overlayRegions])\n\n return (\n <canvas\n className=\"frame-canvas-interaction\"\n ref={(canvas: HTMLCanvasElement) => {\n if (canvas != null && canvasRef.current !== canvas) {\n canvasRef.current = canvas\n renderInteractionCanvas(\n canvas,\n voronoiHover,\n height,\n width,\n overlayRegions,\n margin\n )\n }\n }}\n style={{\n position: \"absolute\",\n left: `0px`,\n top: `0px`,\n imageRendering: \"pixelated\",\n pointerEvents: \"all\",\n opacity: 0\n }}\n width={width}\n height={height}\n />\n )\n})\n\nfunction renderInteractionCanvas(\n interactionContext: HTMLCanvasElement,\n voronoiHover: Function,\n height: number,\n width: number,\n overlayRegions: Array<{\n props: { d?: string; children: Array<{ props: { d?: string } }> }\n }>,\n margin: MarginType\n) {\n const canvasMap: Map<string, number> = new Map()\n if (interactionContext === null || !overlayRegions) return\n\n const boundCanvasEvent = canvasEvent.bind(\n null,\n interactionContext,\n overlayRegions,\n canvasMap\n )\n interactionContext.onmousemove = (e) => {\n const overlay = boundCanvasEvent(e)\n\n if (overlay?.props?.onMouseEnter) {\n overlay?.props?.onMouseEnter()\n } else if (overlay?.props?.children?.[0]) {\n overlay.props.children[0].props.onMouseEnter()\n } else {\n voronoiHover(null)\n }\n }\n interactionContext.onmouseout = () => {\n voronoiHover(null)\n }\n\n interactionContext.onclick = (e) => {\n const overlay = boundCanvasEvent(e)\n if (overlay?.props?.onClick) {\n overlay?.props?.onClick()\n } else if (overlay?.props?.children?.[0]) {\n overlay.props.children[0].props.onClick(e)\n }\n }\n interactionContext.ondblclick = (e) => {\n const overlay = boundCanvasEvent(e)\n if (overlay?.props?.onDoubleClick) {\n overlay?.props?.onDoubleClick()\n } else if (overlay?.props?.children?.[0]) {\n overlay.props.children[0].props.onDoubleClick(e)\n }\n }\n\n const interactionContext2D = interactionContext.getContext(\"2d\", { willReadFrequently: true })\n\n interactionContext2D.imageSmoothingEnabled = false\n interactionContext2D.setTransform(1, 0, 0, 1, margin.left, margin.top)\n interactionContext2D.clearRect(-margin.left, -margin.top, width, height)\n\n interactionContext2D.lineWidth = 1\n\n overlayRegions.forEach((overlay, oi) => {\n const interactionRGBA = `rgba(${Math.floor(\n Math.random() * 255\n )},${Math.floor(Math.random() * 255)},${Math.floor(\n Math.random() * 255\n )},255)`\n canvasMap.set(interactionRGBA, oi)\n\n const props = overlay.props as {\n d?: string\n children?: Array<{ props: { d?: string; transform?: string } }>\n transform?: string\n markType?: string\n x?: number\n y?: number\n width?: number\n height?: number\n }\n\n interactionContext2D.fillStyle = interactionRGBA\n interactionContext2D.strokeStyle = interactionRGBA\n\n if (props.d || props.children?.[0]?.props?.d) {\n const overlayD = props.d || props.children[0].props.d\n const transform =\n props.transform ||\n props.children?.[0]?.props?.transform ||\n \"translate(0,0)\"\n const [x, y] = transform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n .map(Number)\n\n interactionContext2D.translate(x, y)\n const p = new Path2D(overlayD)\n interactionContext2D.stroke(p)\n interactionContext2D.fill(p)\n interactionContext2D.translate(-x, -y)\n } else if (props.markType === \"rect\") {\n interactionContext2D.fillRect(props.x, props.y, props.width, props.height)\n interactionContext2D.strokeRect(\n props.x,\n props.y,\n props.width,\n props.height\n )\n }\n })\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { brushX, brushY, brush } from \"d3-brush\"\nimport { select } from \"d3-selection\"\n\n// components\nimport Brush from \"./Brush\"\n\nimport {\n Interactivity,\n InteractionLayerProps,\n BaseColumnType\n} from \"./types/interactionTypes\"\n\nimport {\n brushing,\n brushEnd,\n brushStart,\n calculateOverlay\n} from \"./processing/InteractionItems\"\nimport InteractionCanvas from \"./interactionLayerBehavior/InteractionCanvas\"\nimport { useTooltip } from \"./store/TooltipStore\"\n\nconst generateOMappingFn =\n (projectedColumns) =>\n (d): null | any => {\n if (d) {\n const columnValues = Object.values(projectedColumns)\n\n const foundColumns = columnValues.filter(\n (c: { x: number; width: number }) => {\n return d[1] >= c.x && d[0] <= c.x + c.width\n }\n )\n return foundColumns\n }\n return null\n }\n\nconst generateOEndMappingFn =\n (projectedColumns) =>\n (d, event): null | Array<BaseColumnType> => {\n if (\n d &&\n event.sourceEvent &&\n event.sourceEvent.path &&\n event.sourceEvent.path[1] &&\n event.sourceEvent.path[1].classList.contains(\"xybrush\") &&\n event.target.move\n ) {\n const columnValues: BaseColumnType[] = Object.values(projectedColumns)\n const foundColumns: BaseColumnType[] = columnValues.filter(\n (c: BaseColumnType) => d[1] >= c.x && d[0] <= c.x + c.width\n )\n\n const firstColumn: { x: number; width: number } = foundColumns[0] || {\n x: 0,\n width: 0\n }\n\n const lastColumn: { x: number; width: number } = foundColumns[\n foundColumns.length - 1\n ] || {\n x: 0,\n width: 0\n }\n\n const columnPosition = [\n firstColumn.x + Math.min(5, firstColumn.width / 10),\n lastColumn.x + lastColumn.width - Math.min(5, lastColumn.width / 10)\n ]\n\n select(event.sourceEvent.path[1])\n .transition(750)\n .call(event.target.move, columnPosition)\n\n return foundColumns\n }\n\n return null\n }\n\nconst createBrush = (\n interaction: Interactivity,\n props: InteractionLayerProps\n) => {\n let semioticBrush, mappingFn, selectedExtent, endMappingFn\n\n const { xScale, yScale, size, renderPipeline } = props\n\n const brushData = {}\n\n Object.entries(renderPipeline).forEach(([key, value]) => {\n if (value.data && value.data.length > 0) {\n brushData[key] = value.data\n }\n })\n\n const { projection, projectedColumns } = interaction\n\n const actualBrush =\n interaction.brush === \"oBrush\"\n ? projection === \"horizontal\"\n ? \"yBrush\"\n : \"xBrush\"\n : interaction.brush\n\n let { extent } = interaction\n\n if (!extent) {\n extent =\n actualBrush === \"xyBrush\"\n ? [\n [xScale.invert(0), yScale.invert(0)],\n [xScale.invert(size[0]), yScale.invert(size[1])]\n ]\n : actualBrush === \"xBrush\"\n ? [xScale.invert(0), xScale.invert(size[0])]\n : [yScale.invert(0), yScale.invert(size[1])]\n }\n\n if (extent.indexOf && extent.indexOf(undefined) !== -1) {\n return <g />\n }\n\n if (actualBrush === \"xBrush\") {\n const castExtent = [...extent] as number[]\n mappingFn = (d): null | Array<number> =>\n !d ? null : [xScale.invert(d[0]), xScale.invert(d[1])]\n semioticBrush = brushX()\n selectedExtent = castExtent.map((d) => xScale(d)) as number[]\n endMappingFn = mappingFn\n } else if (actualBrush === \"yBrush\") {\n const castExtent = [...extent] as number[]\n\n mappingFn = (d): null | Array<number> =>\n !d\n ? null\n : [yScale.invert(d[0]), yScale.invert(d[1])].sort((a, b) => a - b)\n semioticBrush = brushY()\n selectedExtent = castExtent.map((d) => yScale(d)).sort((a, b) => a - b)\n endMappingFn = mappingFn\n } else {\n const typedExtent = extent as Array<number[]>\n const castExtent = [...typedExtent.map((ee) => [...ee])] as number[][]\n if (\n castExtent.indexOf(undefined) !== -1 ||\n castExtent[0].indexOf(undefined) !== -1 ||\n castExtent[1].indexOf(undefined) !== -1\n ) {\n return <g />\n }\n\n semioticBrush = brush()\n mappingFn = (d): null | Array<Array<number>> => {\n if (!d) return null\n const yValues = [yScale.invert(d[0][1]), yScale.invert(d[1][1])].sort(\n (a, b) => a - b\n )\n\n return [\n [xScale.invert(d[0][0]), yValues[0]],\n [xScale.invert(d[1][0]), yValues[1]]\n ]\n }\n\n const yValues = [yScale(extent[0][1]), yScale(extent[1][1])].sort(\n (a, b) => a - b\n )\n\n selectedExtent = castExtent.map((d, i) => [xScale(d[0]), yValues[i]])\n\n endMappingFn = mappingFn\n }\n\n if (interaction.brush === \"oBrush\") {\n selectedExtent = null\n if (interaction.extent) {\n const [leftExtent, rightExtent] = interaction.extent\n if (\n (typeof leftExtent === \"string\" || typeof leftExtent === \"number\") &&\n (typeof rightExtent === \"string\" || typeof rightExtent === \"number\")\n ) {\n selectedExtent = [\n projectedColumns[leftExtent].x,\n projectedColumns[rightExtent].x + projectedColumns[rightExtent].width\n ]\n }\n }\n\n mappingFn = generateOMappingFn(projectedColumns)\n endMappingFn = generateOEndMappingFn(projectedColumns)\n }\n\n semioticBrush\n .extent([\n [0, 0],\n [size[0], size[1]]\n ])\n .on(\"start\", (event) => {\n brushStart(\n mappingFn(event.selection),\n undefined,\n brushData,\n undefined,\n interaction\n )\n })\n .on(\"brush\", (event) => {\n brushing(\n mappingFn(event.selection),\n undefined,\n brushData,\n undefined,\n interaction\n )\n })\n .on(\"end\", (event) => {\n brushEnd(\n endMappingFn(event.selection, event),\n undefined,\n brushData,\n undefined,\n interaction\n )\n })\n\n return (\n <g className=\"brush\">\n <Brush\n selectedExtent={selectedExtent}\n extent={extent}\n svgBrush={semioticBrush}\n />\n </g>\n )\n}\n\nconst createColumnsBrush = (\n interaction: Interactivity,\n props: InteractionLayerProps\n) => {\n const { projection, rScale, oColumns, renderPipeline } = props\n\n if (!projection || !rScale || !oColumns) return\n\n const brushData = {}\n Object.entries(renderPipeline).forEach(([key, value]) => {\n if (value.data && value.data.length > 0) {\n brushData[key] = value.data\n }\n })\n\n let semioticBrush, mappingFn\n\n const rScaleReverse = rScale\n .copy()\n .domain(rScale.domain())\n .range(rScale.domain().reverse())\n\n if (projection && projection === \"horizontal\") {\n mappingFn = (d): null | Array<number> =>\n !d ? null : [rScale.invert(d[0]), rScale.invert(d[1])]\n } else\n mappingFn = (d): null | Array<number> => {\n return !d\n ? null\n : [\n rScaleReverse(rScale.invert(d[1])),\n rScaleReverse(rScale.invert(d[0]))\n ]\n }\n\n const rRange = rScale.range()\n\n const columnHash = oColumns\n let brushPosition, selectedExtent\n const brushes: Array<React.ReactNode> = Object.keys(columnHash).map((c) => {\n if (projection && projection === \"horizontal\") {\n selectedExtent = interaction.extent[c]\n ? interaction.extent[c].map((d) => rScale(d))\n : interaction.startEmpty\n ? null\n : rRange\n\n brushPosition = [0, columnHash[c].x]\n semioticBrush = brushX()\n semioticBrush\n .extent([\n [rRange[0], 0],\n [rRange[1], columnHash[c].width]\n ])\n .on(\"start\", (event) => {\n brushStart(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"brush\", (event) => {\n brushing(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"end\", (event) => {\n brushEnd(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n } else {\n selectedExtent = interaction.extent[c]\n ? interaction.extent[c].map((d) => rRange[1] - rScale(d)).reverse()\n : interaction.startEmpty\n ? null\n : rRange\n brushPosition = [columnHash[c].x, 0]\n semioticBrush = brushY()\n semioticBrush\n .extent([\n [0, rRange[0]],\n [columnHash[c].width, rRange[1]]\n ])\n .on(\"start\", (event) => {\n brushStart(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"brush\", (event) => {\n brushing(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"end\", (event) => {\n brushEnd(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n }\n\n return (\n <g key={`column-brush-${c}`} className=\"brush\">\n <Brush\n key={`orbrush${c}`}\n selectedExtent={selectedExtent}\n svgBrush={semioticBrush}\n position={brushPosition}\n />\n </g>\n )\n })\n return brushes\n}\n\nexport default function InteractionLayer(props: InteractionLayerProps) {\n let semioticBrush = null\n const {\n interaction,\n svgSize = [500, 500],\n margin = { left: 0, right: 0, top: 0, bottom: 0 },\n overlay,\n points,\n xScale,\n yScale,\n hoverAnnotation,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n disableCanvasInteraction,\n canvasRendering\n // voronoiHover\n } = props\n let { enabled } = props\n\n let changeTooltip = useTooltip((state) => state.changeTooltip)\n\n const voronoiHover = (d) => {\n changeTooltip(d)\n }\n\n const [overlayRegions, changeOverlayRegions] = useState([])\n const [interactionCanvas, changeInteractionCanvas] = useState(null)\n useEffect(() => {\n let nextOverlay, interactionCanvas\n\n if (disableCanvasInteraction || !overlayRegions) {\n nextOverlay = null\n interactionCanvas = null\n } else {\n nextOverlay = calculateOverlay(props, voronoiHover)\n if (canvasRendering) {\n interactionCanvas = (\n <InteractionCanvas\n height={svgSize[1]}\n width={svgSize[0]}\n overlayRegions={nextOverlay}\n margin={margin}\n voronoiHover={voronoiHover}\n />\n )\n }\n }\n\n changeOverlayRegions(nextOverlay)\n changeInteractionCanvas(interactionCanvas)\n }, [\n overlay,\n points,\n xScale,\n yScale,\n !!hoverAnnotation,\n !!customClickBehavior,\n !!customDoubleClickBehavior,\n !!customHoverBehavior\n ])\n\n if (interaction && interaction.brush) {\n enabled = true\n semioticBrush = createBrush(interaction, props)\n }\n\n if (interaction && interaction.columnsBrush) {\n enabled = true\n semioticBrush = createColumnsBrush(interaction, props)\n }\n\n if (!overlayRegions && !semioticBrush) {\n return null\n }\n\n return (\n <div\n className=\"interaction-layer\"\n data-testid=\"interaction-layer\"\n style={{\n position: \"absolute\",\n background: \"none\",\n pointerEvents: \"none\",\n height: \"100%\",\n width: \"100%\",\n overflow: \"hidden\"\n }}\n >\n {interactionCanvas || (\n <svg\n height={svgSize[1]}\n width={svgSize[0]}\n style={{ background: \"none\", pointerEvents: \"none\" }}\n >\n <g\n className=\"interaction-overlay\"\n transform={`translate(${margin.left},${margin.top})`}\n style={{ pointerEvents: enabled ? \"all\" : \"none\" }}\n >\n <g className=\"interaction-regions\">{overlayRegions}</g>\n {semioticBrush}\n </g>\n </svg>\n )}\n </div>\n )\n}\n","type BatchOptions = { signal?: AbortSignal; timeFrameMs?: number }\n\nconst MAX_TIMEFRAME_MS = 30\n\nexport async function batchWork(\n performWork: () => boolean,\n { signal, timeFrameMs = MAX_TIMEFRAME_MS }: BatchOptions = {}\n): Promise<void> {\n return new Promise((resolve, reject) => {\n requestAnimationFrame(function loop() {\n // FIXME the `timestamp` value can be received from rAF,\n // but the value is not in sync with performance.now (in tests only)\n let timestamp = performance.now()\n let elapsed = 0\n let shouldContinue = false\n let isAborted = signal != null && signal.aborted\n\n try {\n if (isAborted) {\n return resolve()\n }\n\n do {\n shouldContinue = performWork()\n elapsed = performance.now() - timestamp\n isAborted = signal != null && signal.aborted\n } while (!isAborted && shouldContinue && elapsed < timeFrameMs)\n\n if (!isAborted && shouldContinue) {\n requestAnimationFrame(loop)\n } else {\n resolve()\n }\n } catch (error) {\n reject(error)\n }\n })\n })\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { RefObject, useCallback, useEffect, useMemo, useState } from \"react\"\n\nimport {\n MarginType,\n RenderPipelineType,\n VizLayerTypes,\n RoughType,\n TransitionConfig\n} from \"./types/generalTypes\"\n\nimport { ContextType } from \"./types/canvasTypes\"\nimport { batchWork } from \"./batchWork\"\nimport { useTooltip } from \"./store/TooltipStore\"\n\ntype Props = {\n axes?: Array<React.ReactNode>\n frameKey?: string\n xScale: Function\n yScale: Function\n dataVersion?: string\n canvasContext?: RefObject<ContextType>\n width: number\n height: number\n margin: MarginType\n canvasPostProcess?: Function\n title?: JSX.Element | string\n ariaTitle?: string\n matte?: React.ReactNode\n matteClip?: boolean\n renderPipeline: RenderPipelineType\n projectedCoordinateNames: object\n position: Array<number>\n disableContext?: boolean\n renderOrder: ReadonlyArray<VizLayerTypes>\n sketchyRenderingEngine?: RoughType\n axesTickLines?: React.ReactNode\n frameRenderOrder: Array<string>\n additionalVizElements: object\n disableProgressiveRendering?: boolean\n transition?: boolean | TransitionConfig\n}\n\ntype State = {\n canvasDrawing: Array<{\n tx: number\n ty: number\n i: number\n d: { data: object }\n styleFn: Function\n markProps: {\n renderMode?: object\n markType: string\n width: number\n height: number\n x: number\n y: number\n r: number\n rx: number\n d: string\n }\n renderFn?: Function\n }>\n dataVersion?: string\n renderedElements: Array<React.ReactNode>\n focusedPieceIndex: number | null\n focusedVisualizationGroup?: string\n piecesGroup: object\n props: Props\n handleKeyDown: Function\n}\n\nconst updateVisualizationLayer = (\n props: Props,\n handleKeyDown: Function,\n voronoiHover: Function\n) => {\n const {\n xScale,\n yScale,\n dataVersion,\n projectedCoordinateNames,\n renderPipeline = {},\n renderOrder = [],\n sketchyRenderingEngine,\n transition\n } = props\n\n const canvasDrawing = []\n\n const piecesGroup = {}\n\n const renderedElements = []\n const renderVizKeys: Array<VizLayerTypes> = Object.keys(\n renderPipeline\n ) as VizLayerTypes[]\n const renderKeys = renderOrder.concat(\n renderVizKeys.filter((d) => renderOrder.indexOf(d) === -1)\n )\n\n renderKeys.forEach((k) => {\n const pipe = renderPipeline[k]\n if (\n pipe &&\n ((pipe.data &&\n typeof pipe.data === \"object\" &&\n !Array.isArray(pipe.data)) ||\n (pipe.data && pipe.data.length > 0))\n ) {\n const additionalMarkProps = {\n sketchyGenerator:\n sketchyRenderingEngine && sketchyRenderingEngine.generator,\n \"aria-label\":\n (pipe.ariaLabel && pipe.ariaLabel.items) || \"dataviz-element\",\n role: \"img\",\n tabIndex: -1\n }\n\n const renderedPipe = pipe.behavior({\n xScale,\n yScale,\n canvasDrawing,\n projectedCoordinateNames,\n ...pipe\n })\n\n if (renderedPipe && renderedPipe.length > 0) {\n renderedElements.push(\n <g\n key={k}\n className={k}\n data-testid={k}\n role={\"group\"}\n tabIndex={0}\n {...(transition ? { \"data-semiotic-transition\": \"\" } : undefined)}\n aria-label={\n (pipe.ariaLabel &&\n `${renderedPipe.length} ${pipe.ariaLabel.items}s in a ${pipe.ariaLabel.chart}`) ||\n k\n }\n onKeyDown={(e) => handleKeyDown({ e, k, props, piecesGroup })}\n onBlur={() => {\n voronoiHover(undefined)\n }}\n ref={(thisNode) =>\n thisNode && (piecesGroup[k] = thisNode.childNodes)\n }\n >\n {renderedPipe}\n </g>\n )\n }\n }\n })\n\n return {\n renderedElements,\n dataVersion,\n canvasDrawing,\n piecesGroup\n }\n}\n\nconst handleKeyDown =\n ({\n focusedPieceIndex,\n changeFocusedPieceIndex,\n changeFocusedVisualizationGroup\n }) =>\n ({ e: { keyCode }, vizgroup, props, piecesGroup }) => {\n // If enter, focus on the first element\n\n const { renderPipeline, voronoiHover } = props\n const pushed = keyCode\n if (pushed !== 37 && pushed !== 39 && pushed !== 13) return\n\n let newPieceIndex = 0\n const vizGroupSetting: { focusedVisualizationGroup?: string } = {}\n\n // If a user pressed enter, highlight the first one\n // Let a user move up and down in stacked bar by getting keys of bars?\n\n if (focusedPieceIndex === null || pushed === 13) {\n vizGroupSetting.focusedVisualizationGroup = vizgroup\n } else if (pushed === 37) {\n newPieceIndex = focusedPieceIndex - 1\n } else if (pushed === 39) {\n newPieceIndex = focusedPieceIndex + 1\n }\n\n newPieceIndex =\n newPieceIndex < 0\n ? piecesGroup[vizgroup].length + newPieceIndex\n : newPieceIndex % piecesGroup[vizgroup].length\n\n const piece = renderPipeline[vizgroup].accessibleTransform(\n renderPipeline[vizgroup].data,\n newPieceIndex,\n piecesGroup[vizgroup][newPieceIndex]\n )\n\n voronoiHover(piece)\n\n changeFocusedPieceIndex(newPieceIndex)\n changeFocusedVisualizationGroup(vizGroupSetting.focusedVisualizationGroup)\n }\n\nfunction buildTransitionStyle(\n transition: boolean | TransitionConfig | undefined\n): React.ReactNode {\n if (!transition) return null\n\n const duration =\n typeof transition === \"object\" && transition.duration != null\n ? transition.duration\n : 300\n const ease =\n typeof transition === \"object\" && transition.ease != null\n ? transition.ease\n : \"ease\"\n\n const dur = `${duration}ms`\n\n const css = `\n@keyframes semiotic-enter {\n from { opacity: 0; }\n to { opacity: 1; }\n}\ng[data-semiotic-transition] > rect,\ng[data-semiotic-transition] > circle,\ng[data-semiotic-transition] > path,\ng[data-semiotic-transition] > line,\ng[data-semiotic-transition] > g > rect,\ng[data-semiotic-transition] > g > circle,\ng[data-semiotic-transition] > g > path,\ng[data-semiotic-transition] > g > line {\n transition: fill ${dur} ${ease},\n stroke ${dur} ${ease},\n opacity ${dur} ${ease},\n transform ${dur} ${ease};\n animation: semiotic-enter ${dur} ${ease};\n}\n`\n return <style key=\"semiotic-transition-style\">{css}</style>\n}\n\nexport default function VisualizationLayer(props: Props) {\n const {\n matte,\n matteClip,\n axes,\n frameKey = \"\",\n margin = { left: 0, right: 0, bottom: 0, top: 0 },\n title,\n ariaTitle,\n axesTickLines,\n frameRenderOrder,\n additionalVizElements,\n transition\n } = props\n\n let changeTooltip = useTooltip((state) => state.changeTooltip)\n\n const voronoiHover = useCallback((d) => {\n changeTooltip(d)\n }, [changeTooltip])\n\n const [focusedPieceIndex, changeFocusedPieceIndex] = useState(null)\n const [focusedVisualizationGroup, changeFocusedVisualizationGroup] =\n useState(null)\n const decoratedKeydown = useMemo(\n () => handleKeyDown({\n focusedPieceIndex,\n changeFocusedPieceIndex,\n changeFocusedVisualizationGroup\n }),\n [focusedPieceIndex, changeFocusedPieceIndex, changeFocusedVisualizationGroup]\n )\n\n const vizState = updateVisualizationLayer(\n props,\n decoratedKeydown,\n voronoiHover\n )\n\n const { renderedElements } = vizState\n\n useEffect(() => {\n const canvasContext = props.canvasContext?.current\n let updateCtrl = new AbortController()\n\n if (props.disableContext || !canvasContext) return\n\n const {\n sketchyRenderingEngine,\n width,\n height,\n margin,\n disableProgressiveRendering = false\n } = props\n\n const size = [\n width + margin.left + margin.right,\n height + margin.top + margin.bottom\n ]\n\n let rc\n canvasContext.width = size[0]\n canvasContext.height = size[1]\n canvasContext.style.width = size[0]\n canvasContext.style.height = size[1]\n\n const context = canvasContext.getContext(\"2d\")\n\n context.scale(devicePixelRatio, devicePixelRatio)\n\n context.setTransform(1, 0, 0, 1, margin.left, margin.top)\n\n context.clearRect(-margin.left, -margin.top, size[0], size[1])\n\n const renderCanvasPiece = renderCanvas(\n canvasContext,\n context,\n margin,\n props,\n sketchyRenderingEngine,\n rc\n )\n\n context.clearRect(-margin.left, -margin.top, size[0], size[1])\n\n if (disableProgressiveRendering) {\n for (const piece of vizState.canvasDrawing) {\n renderCanvasPiece(piece)\n }\n } else {\n updateCtrl = new AbortController()\n\n batchCollectionWork(renderCanvasPiece, vizState.canvasDrawing, {\n signal: updateCtrl.signal\n })\n }\n\n context.setTransform(1, 0, 0, 1, 0, 0)\n context.globalAlpha = 1\n\n if (props.canvasPostProcess) {\n props.canvasPostProcess(props.canvasContext?.current, context, size)\n }\n\n if (\n focusedVisualizationGroup !== null &&\n vizState.piecesGroup[focusedVisualizationGroup] &&\n focusedPieceIndex !== null\n ) {\n const focusElParent =\n vizState.piecesGroup[focusedVisualizationGroup][focusedPieceIndex]\n\n const focusEl =\n (focusElParent &&\n [...focusElParent.childNodes].find((child) =>\n child.getAttribute(\"aria-label\")\n )) ||\n focusElParent\n\n focusEl && focusEl.focus && focusEl.focus()\n }\n\n return function cleanup() {\n updateCtrl.abort()\n }\n }, [\n matte,\n matteClip,\n axes,\n frameKey,\n margin,\n ariaTitle,\n axesTickLines,\n frameRenderOrder,\n additionalVizElements\n ])\n\n const transitionStyle = buildTransitionStyle(transition)\n\n const renderHash = {\n [\"axes-tick-lines\"]: axesTickLines && (\n <g\n key=\"visualization-tick-lines\"\n className=\"axis axis-tick-lines\"\n aria-hidden={true}\n >\n {axesTickLines}\n </g>\n ),\n [\"axes-labels\"]: axes && (\n <g key=\"visualization-axis-labels\" className=\"axis axis-labels\">\n {axes}\n </g>\n ),\n matte: matte,\n [\"viz-layer\"]:\n renderedElements && renderedElements.length > 0\n ? (\n <React.Fragment key=\"viz-layer\">\n {transitionStyle}\n {renderedElements}\n </React.Fragment>\n )\n : null,\n ...additionalVizElements\n }\n\n let ariaLabel = \"\"\n\n const finalTitle =\n (title && ariaTitle) || title\n ? typeof title !== \"string\" &&\n title.props &&\n typeof title.props.children === \"string\"\n ? `titled ${title.props.children}`\n : \"with a complex title\"\n : \"with no title\"\n ariaLabel = `Visualization ${finalTitle}. Use arrow keys to navigate elements.`\n\n const orderedElements = []\n\n frameRenderOrder.forEach((r) => {\n if (renderHash[r]) {\n orderedElements.push(renderHash[r])\n }\n })\n\n const renderedDataVisualization =\n (orderedElements.length > 0 && (\n <g\n className=\"data-visualization\"\n data-testid=\"data-visualization\"\n key=\"visualization-clip-path\"\n aria-label={ariaLabel}\n role=\"group\"\n clipPath={\n matteClip && matte ? `url(#matte-clip${frameKey})` : undefined\n }\n transform={`translate(${margin.left},${margin.top})`}\n >\n {orderedElements}\n </g>\n )) ||\n null\n\n return renderedDataVisualization\n}\n\nfunction renderCanvas(\n canvasContext,\n context,\n margin,\n np,\n sketchyRenderingEngine,\n rc\n) {\n const defaultStyle = {\n fill: \"black\",\n stroke: \"black\",\n opacity: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n }\n\n const { position = [0, 0] } = np\n\n return (piece) => {\n const combinedDatum = { ...piece.d, ...piece.d.data }\n const style = piece.styleFn\n ? piece.styleFn(combinedDatum, piece.i) || defaultStyle\n : defaultStyle\n\n const fill = style.fill ? style.fill : \"black\"\n const stroke = style.stroke ? style.stroke : \"black\"\n context.setTransform(1, 0, 0, 1, margin.left, margin.top)\n context.translate(position[0], position[1])\n context.translate(piece.tx, piece.ty)\n context.fillStyle = fill\n context.strokeStyle = stroke\n context.lineWidth = style.strokeWidth ? style.strokeWidth : 0\n\n let rcSettings = {}\n const renderObject =\n piece.renderFn && piece.renderFn(combinedDatum, piece.i)\n let actualRenderMode =\n (renderObject && renderObject.renderMode) || renderObject\n\n if (actualRenderMode) {\n if (!sketchyRenderingEngine) {\n console.error(\n \"You cannot render sketchy graphics without specifying a Rough.js-like library as the sketchyRenderingEngine prop of your frame\"\n )\n actualRenderMode = undefined\n } else {\n const RoughCanvas = sketchyRenderingEngine.canvas\n if (!RoughCanvas) {\n console.error(\n \"The sketchyRenderingEngine you specify does not expose a prop `RoughCanvas` and so cannot render sketchy HTML5 Canvas graphics\"\n )\n } else {\n rc = rc || RoughCanvas(canvasContext)\n const rcExtension =\n (typeof renderObject === \"object\" && renderObject) || {}\n rcSettings = {\n fill,\n stroke,\n strokeWidth: context.lineWidth,\n ...rcExtension\n }\n }\n }\n }\n\n if (\n piece.markProps.markType === \"circle\" ||\n (piece.markProps.markType === \"rect\" && piece.markProps.rx > 0)\n ) {\n let vizX = piece.markProps.cx ?? 0,\n vizY = piece.markProps.cy ?? 0,\n r = style.r ?? piece.markProps.r\n if (piece.markProps.width) {\n const halfWidth = piece.markProps.width / 2\n vizX = piece.markProps.x + halfWidth\n vizY = piece.markProps.y + halfWidth\n r = halfWidth\n }\n if (actualRenderMode === \"sketchy\") {\n if (context.globalAlpha !== 0) rc.circle(vizX, vizY, r, rcSettings)\n } else {\n context.beginPath()\n context.arc(vizX, vizY, r, 0, 2 * Math.PI)\n context.globalAlpha = style.fillOpacity || style.opacity || 1\n if (style.fill && style.fill !== \"none\" && context.globalAlpha !== 0) {\n context.fill()\n }\n\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n )\n context.stroke()\n }\n } else if (piece.markProps.markType === \"rect\") {\n if (actualRenderMode === \"sketchy\") {\n context.globalAlpha = style.opacity || 1\n if (context.globalAlpha !== 0)\n rc.rectangle(\n piece.markProps.x,\n piece.markProps.y,\n piece.markProps.width,\n piece.markProps.height,\n rcSettings\n )\n } else {\n context.globalAlpha = style.fillOpacity || style.opacity || 1\n if (style.fill && style.fill !== \"none\" && context.globalAlpha !== 0)\n context.fillRect(\n piece.markProps.x,\n piece.markProps.y,\n piece.markProps.width,\n piece.markProps.height\n )\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n )\n context.strokeRect(\n piece.markProps.x,\n piece.markProps.y,\n piece.markProps.width,\n piece.markProps.height\n )\n }\n } else if (piece.markProps.markType === \"path\") {\n if (actualRenderMode === \"sketchy\") {\n context.globalAlpha = style.opacity || 1\n rc.path(piece.markProps.d, rcSettings)\n } else {\n const p = new Path2D(piece.markProps.d)\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n )\n context.stroke(p)\n context.globalAlpha = style.fillOpacity || style.opacity || 1\n if (style.fill && style.fill !== \"none\" && context.globalAlpha !== 0)\n context.fill(p)\n }\n } else if (piece.markProps.markType === \"line\") {\n if (actualRenderMode === \"sketchy\") {\n context.globalAlpha = style.opacity || 1\n rc.line(\n piece.markProps.x1,\n piece.markProps.y1,\n piece.markProps.x2,\n piece.markProps.y2,\n rcSettings\n )\n } else {\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n context.beginPath()\n context.moveTo(piece.markProps.x1, piece.markProps.y1)\n context.lineTo(piece.markProps.x2, piece.markProps.y2)\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n ) {\n context.stroke()\n }\n }\n } else {\n console.error(\"CURRENTLY UNSUPPORTED MARKTYPE FOR CANVAS RENDERING\")\n }\n }\n}\n\n// using batchWork utility, this function iterates over a collection of data\n// in batches of 1000 and invokes `process` function for each data point\nfunction batchCollectionWork(process, data, options) {\n let pointer = 0\n let batchSize = 1000\n\n return batchWork(() => {\n let limit = Math.min(pointer + batchSize, data.length)\n for (let i = pointer; i < limit; i++) {\n process(data[i])\n }\n pointer = pointer + batchSize\n return data.length > pointer\n }, options)\n}\n","import * as React from \"react\"\nimport { drawMarginPath } from \"../svg/frameFunctions\"\n\ntype FilterDefTypes = {\n matte?: React.ReactNode\n key: string\n additionalDefs?: React.ReactNode\n}\n\nexport const filterDefs = ({ matte, key, additionalDefs }: FilterDefTypes) => (\n <defs>\n <filter id=\"paintyFilterHeavy\">\n <feGaussianBlur\n id=\"gaussblurrer\"\n in=\"SourceGraphic\"\n stdDeviation={4}\n colorInterpolationFilters=\"sRGB\"\n result=\"blur\"\n />\n <feColorMatrix\n in=\"blur\"\n mode=\"matrix\"\n values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 34 -7\"\n result=\"gooey\"\n />\n </filter>\n <filter id=\"paintyFilterLight\">\n <feGaussianBlur\n id=\"gaussblurrer\"\n in=\"SourceGraphic\"\n stdDeviation={2}\n colorInterpolationFilters=\"sRGB\"\n result=\"blur\"\n />\n <feColorMatrix\n in=\"blur\"\n mode=\"matrix\"\n values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 34 -7\"\n result=\"gooey\"\n />\n </filter>\n <clipPath id={`matte-clip-${key}`}>{matte}</clipPath>\n {additionalDefs}\n </defs>\n)\n\nexport const generateFinalDefs = ({\n matte,\n size,\n margin,\n frameKey,\n additionalDefs,\n name\n}) => {\n let marginGraphic\n\n if (typeof matte === \"function\") {\n marginGraphic = matte({ size, margin })\n } else if (React.isValidElement(matte)) {\n marginGraphic = matte\n } else if (matte === true) {\n marginGraphic = (\n <path\n fill=\"white\"\n transform={`translate(${-margin.left},${-margin.top})`}\n d={drawMarginPath({\n margin,\n size: size,\n inset: 0\n })}\n className={`${name}-matte`}\n />\n )\n }\n\n const finalFilterDefs = filterDefs({\n matte: marginGraphic,\n key: matte && (frameKey || name),\n additionalDefs: additionalDefs\n })\n\n return { defs: finalFilterDefs, matte: marginGraphic }\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useEffect, useState, useRef } from \"react\"\nimport AnnotationLayer from \"./AnnotationLayer\"\nimport InteractionLayer from \"./InteractionLayer\"\nimport VisualizationLayer from \"./VisualizationLayer\"\nimport { generateFrameTitle } from \"./svg/frameFunctions\"\nimport { generateFinalDefs } from \"./constants/jsx\"\n\nimport { MarginType, RoughType, TransitionConfig } from \"./types/generalTypes\"\nimport { AnnotationHandling, CustomHoverType } from \"./types/annotationTypes\"\nimport { LegendProps } from \"./types/legendTypes\"\nimport { ScaleLinear } from \"d3-scale\"\nimport { AdvancedInteractionSettings } from \"./types/interactionTypes\"\n\nimport { TooltipProvider } from \"./store/TooltipStore\"\n\ntype VizDataLayerKeys =\n | \"pieces\"\n | \"summaries\"\n | \"connectors\"\n | \"edges\"\n | \"nodes\"\n | \"lines\"\n | \"points\"\n\ntype Props = {\n name?: string\n title: string | Element | { title?: string | Element }\n margin: MarginType\n size: Array<number>\n annotationSettings: AnnotationHandling\n annotations?: Array<object>\n customHoverBehavior?: Function\n customClickBehavior?: Function\n customDoubleClickBehavior?: Function\n htmlAnnotationRules?: Function\n tooltipContent?: Function\n className?: string\n interaction?: object\n renderFn?: string | Function\n hoverAnnotation?: CustomHoverType\n backgroundGraphics?: React.ReactNode | Function\n foregroundGraphics?: React.ReactNode | Function\n interactionOverflow?: object\n disableContext?: boolean\n canvasRendering?: boolean\n canvasPostProcess?: Function\n projection?: string\n rScale?: ScaleLinear<number, number>\n columns?: object\n overlay?: Array<object>\n legendSettings?: LegendProps\n adjustedPosition: Array<number>\n defaultHTMLRule: Function\n defaultSVGRule: Function\n beforeElements?: React.ReactNode\n afterElements?: React.ReactNode\n points?: Array<object>\n projectedYMiddle?: string\n dataVersion?: string\n frameKey?: string\n additionalDefs?: React.ReactNode\n xScale: ScaleLinear<number, number>\n yScale: ScaleLinear<number, number>\n adjustedSize?: Array<number>\n renderPipeline: { [key in VizDataLayerKeys]?: object }\n projectedCoordinateNames: { x: string; y: string }\n matte?: boolean | object | Element | Function\n axes?: Array<React.ReactNode>\n axesTickLines?: React.ReactNode\n disableCanvasInteraction?: boolean\n showLinePoints?: string\n renderOrder: ReadonlyArray<VizDataLayerKeys>\n sketchyRenderingEngine: RoughType\n frameRenderOrder: Array<string>\n additionalVizElements?: object\n interactionSettings?: AdvancedInteractionSettings\n disableProgressiveRendering: boolean\n transition?: boolean | TransitionConfig\n}\n\nconst blankArray = []\n\nconst blankObject = {}\n\nconst defaultPosition = [0, 0]\nconst defaultCoordinateNames = { x: \"x\", y: \"y\" }\n\nconst defaultFrameRenderOrder = [\n \"axes-tick-lines\",\n \"viz-layer\",\n \"matte\",\n \"axes-labels\",\n \"labels\"\n]\n\nconst defaultZeroMargin = { top: 0, bottom: 0, left: 0, right: 0 }\n\nexport default function Frame(props) {\n const {\n axes,\n axesTickLines,\n className = \"\",\n name = \"\",\n frameKey,\n projectedCoordinateNames = defaultCoordinateNames,\n renderPipeline,\n size,\n adjustedSize = size,\n title,\n xScale,\n yScale,\n dataVersion,\n annotations,\n projectedYMiddle,\n interaction,\n customClickBehavior,\n customHoverBehavior,\n customDoubleClickBehavior,\n points,\n margin = defaultZeroMargin,\n backgroundGraphics,\n foregroundGraphics,\n beforeElements,\n afterElements,\n defaultSVGRule,\n defaultHTMLRule,\n adjustedPosition = defaultPosition,\n legendSettings,\n annotationSettings = blankObject,\n overlay,\n columns,\n rScale,\n projection,\n interactionOverflow,\n canvasPostProcess,\n canvasRendering,\n renderOrder = blankArray,\n showLinePoints,\n disableCanvasInteraction = false,\n sketchyRenderingEngine,\n disableContext,\n frameRenderOrder = defaultFrameRenderOrder,\n additionalVizElements = blankObject,\n interactionSettings,\n disableProgressiveRendering,\n additionalDefs,\n transition\n } = props\n\n let { hoverAnnotation } = props\n\n const canvasContext = useRef(null)\n\n const [finalDefs, changeFinalDefs] = useState(null)\n const [matte, changeMatte] = useState(null)\n useEffect(() => {\n const generatedDefs = generateFinalDefs({\n matte,\n size,\n margin,\n frameKey,\n additionalDefs,\n name\n })\n\n changeFinalDefs(generatedDefs.defs)\n changeMatte(generatedDefs.matte)\n }, [\n size[0],\n size[1],\n margin.top,\n margin.bottom,\n margin.right,\n margin.left,\n margin.top,\n matte,\n additionalDefs\n ])\n\n if (\n !hoverAnnotation &&\n (customClickBehavior || customHoverBehavior || customDoubleClickBehavior)\n ) {\n hoverAnnotation = blankArray\n }\n\n const areaAnnotations = []\n\n const totalAnnotations = annotations\n ? [...annotations, ...areaAnnotations]\n : areaAnnotations\n\n const defaultSVGRuleRef = useRef(defaultSVGRule)\n defaultSVGRuleRef.current = defaultSVGRule\n const defaultHTMLRuleRef = useRef(defaultHTMLRule)\n defaultHTMLRuleRef.current = defaultHTMLRule\n const renderPipelineRef = useRef(renderPipeline)\n renderPipelineRef.current = renderPipeline\n\n const svgAnnotationRuleCb = useCallback(\n (d, i, thisALayer) =>\n defaultSVGRuleRef.current({ d, i, annotationLayer: thisALayer, ...renderPipelineRef.current }),\n []\n )\n const htmlAnnotationRuleCb = useCallback(\n (d, i, thisALayer) =>\n defaultHTMLRuleRef.current({ d, i, annotationLayer: thisALayer, ...renderPipelineRef.current }),\n []\n )\n\n const annotationLayer = (\n <AnnotationLayer\n legendSettings={legendSettings}\n margin={margin}\n axes={axes}\n annotationHandling={annotationSettings}\n pointSizeFunction={\n annotationSettings.layout && annotationSettings.layout.pointSizeFunction\n }\n labelSizeFunction={\n annotationSettings.layout && annotationSettings.layout.labelSizeFunction\n }\n annotations={totalAnnotations}\n svgAnnotationRule={svgAnnotationRuleCb}\n htmlAnnotationRule={htmlAnnotationRuleCb}\n size={adjustedSize}\n position={[\n adjustedPosition[0] + margin.left,\n adjustedPosition[1] + margin.top\n ]}\n />\n )\n\n const generatedTitle = generateFrameTitle({\n title: title,\n size: size\n })\n\n const finalBackgroundGraphics =\n typeof backgroundGraphics === \"function\"\n ? backgroundGraphics({ size, margin })\n : backgroundGraphics\n\n const finalForegroundGraphics =\n typeof foregroundGraphics === \"function\"\n ? foregroundGraphics({ size, margin })\n : foregroundGraphics\n\n return (\n <div\n className={`${className} frame ${name}`}\n style={{\n background: \"none\"\n }}\n >\n {beforeElements && (\n <div className={`${name} frame-before-elements`}>\n {beforeElements}\n </div>\n )}\n <div\n className=\"frame-elements\"\n style={{ height: `${size[1]}px`, width: `${size[0]}px` }}\n >\n <TooltipProvider>\n <div\n className=\"visualization-layer\"\n style={{ position: \"absolute\" }}\n >\n {backgroundGraphics && (\n <svg\n className=\"background-graphics\"\n style={{ position: \"absolute\" }}\n width={size[0]}\n height={size[1]}\n >\n {backgroundGraphics && (\n <g aria-hidden={true} className=\"background-graphics\">\n {finalBackgroundGraphics}\n </g>\n )}\n </svg>\n )}\n <svg\n className=\"visualization-layer\"\n style={{ position: \"absolute\" }}\n width={size[0]}\n height={size[1]}\n >\n {finalDefs}\n <VisualizationLayer\n disableContext={disableContext}\n renderPipeline={renderPipeline}\n position={adjustedPosition}\n width={adjustedSize[0]}\n height={adjustedSize[1]}\n projectedCoordinateNames={projectedCoordinateNames}\n xScale={xScale}\n yScale={yScale}\n axes={axes}\n title={generatedTitle}\n frameKey={frameKey}\n canvasContext={canvasContext}\n dataVersion={dataVersion}\n matte={matte}\n margin={margin}\n canvasPostProcess={canvasPostProcess}\n\n renderOrder={renderOrder}\n sketchyRenderingEngine={sketchyRenderingEngine}\n axesTickLines={axesTickLines}\n additionalVizElements={additionalVizElements}\n frameRenderOrder={frameRenderOrder}\n disableProgressiveRendering={disableProgressiveRendering}\n transition={transition}\n />\n {generatedTitle && (\n <g className=\"frame-title\">{generatedTitle}</g>\n )}\n {foregroundGraphics && (\n <g aria-hidden={true} className=\"foreground-graphics\">\n {finalForegroundGraphics}\n </g>\n )}\n </svg>\n </div>\n {canvasRendering && (\n <canvas\n className=\"frame-canvas\"\n ref={canvasContext}\n style={{\n pointerEvents: \"none\",\n position: \"absolute\"\n }}\n width={size[0] / 2}\n height={size[1] / 2}\n />\n )}\n <InteractionLayer\n hoverAnnotation={hoverAnnotation}\n projectedX={projectedCoordinateNames.x}\n projectedY={projectedCoordinateNames.y}\n projectedYMiddle={projectedYMiddle}\n interaction={interaction}\n customClickBehavior={customClickBehavior}\n customHoverBehavior={customHoverBehavior}\n customDoubleClickBehavior={customDoubleClickBehavior}\n points={points}\n showLinePoints={showLinePoints}\n canvasRendering={canvasRendering}\n position={adjustedPosition}\n margin={margin}\n size={adjustedSize}\n svgSize={size}\n xScale={xScale}\n yScale={yScale}\n enabled={true}\n overlay={overlay}\n oColumns={columns}\n rScale={rScale}\n projection={projection}\n interactionOverflow={interactionOverflow}\n disableCanvasInteraction={disableCanvasInteraction}\n renderPipeline={renderPipeline}\n advancedSettings={interactionSettings}\n />\n {annotationLayer}\n </TooltipProvider>\n </div>\n {afterElements && (\n <div className={`${name} frame-after-elements`}>\n {afterElements}\n </div>\n )}\n </div>\n )\n}\n","import { sum } from \"d3-array\"\n\nimport { findFirstAccessorValue } from \"../data/multiAccessorUtils\"\n\nimport {\n ProjectedLine,\n ProjectedPoint,\n RawLine,\n RawSummary\n} from \"../types/generalTypes\"\nimport { AnnotationType } from \"../types/annotationTypes\"\n\nconst datesForUnique = (d) => (d instanceof Date ? d.getTime() : d)\n\ntype SummaryProjectionTypes = {\n data: Array<RawSummary>\n summaryDataAccessor: Array<Function>\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n}\n\ntype LineProjectionTypes = {\n data: Array<RawLine>\n lineDataAccessor: Array<Function>\n xProp: string\n xPropTop?: string\n xPropBottom?: string\n yProp: string\n yPropTop?: string\n yPropBottom?: string\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n}\n\ntype DifferenceLineProps = {\n data: Array<ProjectedLine>\n yProp: string\n yPropTop: string\n yPropBottom: string\n}\n\ntype StackedAreaTypes = {\n type: string\n data: Array<ProjectedLine>\n xProp: string\n yProp: string\n yPropMiddle: string\n sort?: (a: ProjectedLine, b: ProjectedLine) => number\n yPropTop: string\n yPropBottom: string\n}\n\ntype CumulativeLineTypes = {\n type: string\n data: Array<ProjectedLine>\n yPropMiddle: string\n yPropTop: string\n yPropBottom: string\n y1?: Function\n}\n\ntype LineChartTypes = {\n data: Array<ProjectedLine>\n y1?: Function\n x1?: Function\n yPropTop: string\n yPropMiddle: string\n yPropBottom: string\n xPropTop: string\n xPropMiddle: string\n xPropBottom: string\n}\n\ntype RelativeYTypes = {\n point?: ProjectedPoint | AnnotationType\n projectedYMiddle: string\n projectedY: string\n yAccessor: Array<Function>\n yScale: Function\n showLinePoints?: boolean | string\n}\n\ntype RelativeXTypes = {\n point?: ProjectedPoint | AnnotationType\n projectedXMiddle: string\n projectedX: string\n xAccessor: Array<Function>\n xScale: Function\n}\n\nexport const projectSummaryData = ({\n data,\n summaryDataAccessor,\n xAccessor,\n yAccessor\n}: SummaryProjectionTypes) => {\n const projectedData = []\n summaryDataAccessor.forEach((actualSummaryAccessor) => {\n xAccessor.forEach((actualXAccessor) => {\n yAccessor.forEach((actualYAccessor) => {\n const projection = (d: Object) =>\n actualSummaryAccessor(d).map((p, q) => [\n actualXAccessor(p, q),\n actualYAccessor(p, q)\n ])\n\n data.forEach((d) => {\n projectedData.push({\n ...d,\n _baseData: actualSummaryAccessor(d),\n _xyfCoordinates: projection(d)\n })\n })\n })\n })\n })\n\n return projectedData\n}\n\nexport const projectLineData = ({\n data,\n lineDataAccessor,\n xProp,\n xPropTop,\n xPropBottom,\n yProp,\n yPropTop,\n yPropBottom,\n xAccessor,\n yAccessor\n}: LineProjectionTypes) => {\n if (!Array.isArray(data)) {\n data = [data]\n }\n const projectedLine: Array<ProjectedLine> = []\n\n lineDataAccessor.forEach((actualLineAccessor, lineIndex) => {\n xAccessor.forEach((actualXAccessor, xIndex) => {\n yAccessor.forEach((actualYAccessor, yIndex) => {\n data.forEach((d: ProjectedLine) => {\n const originalLineData = { ...d, xIndex, yIndex, lineIndex }\n\n originalLineData.data = actualLineAccessor(d).map((p, q) => {\n const originalCoords = { data: p }\n\n originalCoords[xProp] = actualXAccessor(p, q)\n originalCoords[xPropTop] = originalCoords[xProp]\n originalCoords[xPropBottom] = originalCoords[xProp]\n originalCoords[yProp] = actualYAccessor(p, q)\n originalCoords[yPropTop] = originalCoords[yProp]\n originalCoords[yPropBottom] = originalCoords[yProp]\n\n return originalCoords\n })\n originalLineData.key = originalLineData.key || projectedLine.length\n projectedLine.push(originalLineData)\n })\n })\n })\n })\n\n return projectedLine\n}\n\nexport const differenceLine = ({\n data,\n yProp,\n yPropTop,\n yPropBottom\n}: DifferenceLineProps) => {\n data.forEach((l, i) => {\n l.data.forEach((point, q) => {\n const otherLine = i === 0 ? 1 : 0\n if (point[yProp] > data[otherLine].data[q][yProp]) {\n point[yPropBottom] = data[otherLine].data[q][yProp]\n point[yPropTop] = point[yProp]\n } else {\n point[yPropTop] = point[yProp]\n point[yPropBottom] = point[yProp]\n }\n })\n })\n\n return data\n}\n\nexport const stackedArea = ({\n type = \"stackedarea\",\n data,\n xProp,\n yProp,\n yPropMiddle,\n sort,\n yPropTop,\n yPropBottom\n}: StackedAreaTypes) => {\n const valueMap = new Map()\n const lineSums = data.map(() => 0)\n\n let lineIndex = 0\n for (const line of data) {\n /*\n After we calculate this, we then sort the lines (and the value used for the sorting is in this for loop)\n So, we need to know their original index order in order to use the naively populated coordinate array in valueMap\n Otherwise the coordinates in the map will be in different order than the sorted order of the lines\n */\n line.__lineIndex = lineIndex\n for (const coord of line.data) {\n const coordX = datesForUnique(coord[xProp])\n lineSums[lineIndex] += coord[yProp]\n if (!valueMap.has(coordX)) {\n valueMap.set(coordX, [])\n }\n valueMap.get(coordX)[lineIndex] = coord\n }\n lineIndex++\n }\n\n let stackSort = (a, b) => lineSums[b.key] - lineSums[a.key]\n if (type === \"stackedpercent-invert\" || type === \"stackedarea-invert\") {\n stackSort = (a, b) => lineSums[a.key] - lineSums[b.key]\n }\n sort = sort === undefined ? stackSort : sort\n\n if (sort !== null) {\n data = data.sort(sort)\n }\n\n const lineIndexSortLookup = data.map((line) => line.__lineIndex)\n\n for (const [, coordsAtX] of valueMap) {\n let negativeOffset = 0\n let positiveOffset = 0\n\n const positiveStepTotal = sum(coordsAtX, (d) =>\n d?.[yProp] > 0 ? d[yProp] : 0\n )\n const negativeStepTotal = sum(coordsAtX, (d) =>\n d?.[yProp] < 0 ? d[yProp] : 0\n )\n\n for (const newIndex of lineIndexSortLookup) {\n const l = coordsAtX[newIndex]\n if (l) {\n if (l[yProp] < 0) {\n if (\n type === \"linepercent\" ||\n type === \"stackedpercent\" ||\n type === \"stackedpercent-invert\"\n ) {\n const percent = l[yProp] / negativeStepTotal\n l.percent = percent\n if (type === \"linepercent\") {\n l[yPropBottom] =\n l[yPropBottom] =\n l[yPropTop] =\n l[yPropMiddle] =\n percent\n } else {\n const adjustment = negativeStepTotal >= 0 ? 0 : percent\n l[yPropBottom] =\n negativeStepTotal === 0\n ? 0\n : -(negativeOffset / negativeStepTotal)\n l[yPropTop] = l[yPropBottom] - adjustment\n l[yPropMiddle] = l[yPropBottom] - adjustment / 2\n }\n } else {\n l[yPropBottom] = negativeOffset\n l[yPropTop] = negativeOffset + l[yProp]\n l[yPropMiddle] = negativeOffset + l[yProp] / 2\n }\n negativeOffset += l[yProp]\n } else {\n if (\n type === \"linepercent\" ||\n type === \"stackedpercent\" ||\n type === \"stackedpercent-invert\"\n ) {\n const percent = l[yProp] / positiveStepTotal\n l.percent = percent\n\n if (type === \"linepercent\") {\n l[yPropBottom] = l[yPropTop] = l[yPropMiddle] = percent\n } else {\n const adjustment = positiveStepTotal <= 0 ? 0 : percent\n l[yPropBottom] =\n positiveStepTotal === 0 ? 0 : positiveOffset / positiveStepTotal\n l[yPropTop] = l[yPropBottom] + adjustment\n l[yPropMiddle] = l[yPropBottom] + adjustment / 2\n }\n } else {\n l[yPropBottom] = positiveOffset\n l[yPropTop] = positiveOffset + l[yProp]\n l[yPropMiddle] = positiveOffset + l[yProp] / 2\n }\n positiveOffset += l[yProp]\n }\n }\n }\n }\n\n return data\n}\n\nexport const lineChart = ({\n data,\n y1,\n x1,\n yPropTop,\n yPropMiddle,\n yPropBottom,\n xPropTop,\n xPropMiddle,\n xPropBottom\n}: LineChartTypes) => {\n if (y1) {\n for (const line of data) {\n for (const point of line.data) {\n point[yPropBottom] = y1(point)\n // Use top position for hover so overlapping-area hover points\n // align with the visible line rather than compressing toward the baseline.\n point[yPropMiddle] = point[yPropTop]\n }\n }\n }\n\n if (x1) {\n for (const line of data) {\n for (const point of line.data) {\n point[xPropBottom] = x1(point)\n point[xPropMiddle] = (point[xPropBottom] + point[xPropTop]) / 2\n }\n }\n }\n\n return data\n}\n\nexport const cumulativeLine = ({\n data,\n y1,\n yPropTop,\n yPropMiddle,\n yPropBottom,\n type = \"cumulative\"\n}: CumulativeLineTypes) => {\n for (const line of data) {\n let cumulativeValue = 0\n const dataArray =\n type === \"cumulative-reverse\" ? line.data.reverse() : line.data\n\n for (const point of dataArray) {\n cumulativeValue += point[yPropTop]\n point[yPropBottom] =\n point[yPropTop] =\n point[yPropMiddle] =\n cumulativeValue\n if (y1) {\n point[yPropBottom] = y1(point)\n point[yPropMiddle] = point[yPropBottom] + point[yPropTop] / 2\n }\n }\n }\n\n return data\n}\n\nexport const bumpChart = ({\n type = \"bumpline\",\n data,\n xProp,\n yProp,\n yPropMiddle,\n yPropTop,\n yPropBottom\n}: StackedAreaTypes) => {\n const uniqXValues = new Map()\n for (const line of data) {\n for (const point of line.data) {\n const xValue = datesForUnique(point[xProp])\n if (!uniqXValues.has(xValue)) {\n uniqXValues.set(xValue, [])\n }\n uniqXValues.get(xValue).push(point)\n }\n }\n\n let bumpSort = (a, b) => {\n if (a[yProp] > b[yProp]) {\n return 1\n }\n if (a[yProp] < b[yProp]) {\n return -1\n }\n return -1\n }\n if (type === \"bumparea-invert\" || type === \"bumpline-invert\") {\n bumpSort = (a, b) => {\n if (a[yProp] < b[yProp]) {\n return 1\n }\n if (a[yProp] > b[yProp]) {\n return -1\n }\n return -1\n }\n }\n\n for (const [, pointsAtXArray] of uniqXValues) {\n let negativeOffset = 0\n let positiveOffset = 0\n\n pointsAtXArray.sort(bumpSort)\n\n let rank = 1\n for (const point of pointsAtXArray) {\n point._XYFrameRank\n if (type === \"bumparea\" || type === \"bumparea-invert\") {\n if (point[yProp] < 0) {\n point[yPropTop] = negativeOffset + point[yProp]\n point[yPropMiddle] = negativeOffset + point[yProp] / 2\n point[yPropBottom] = negativeOffset\n negativeOffset += point[yProp]\n } else {\n point[yPropTop] = positiveOffset + point[yProp]\n point[yPropMiddle] = positiveOffset + point[yProp] / 2\n point[yPropBottom] = positiveOffset\n positiveOffset += point[yProp]\n }\n } else {\n point[yProp] = rank\n point[yPropTop] = rank\n point[yPropBottom] = rank\n }\n rank++\n }\n }\n\n return data\n}\n\nexport const dividedLine = (\n parameters: Function,\n points: Array<Object>,\n searchIterations: number = 10\n) => {\n let currentParameters = parameters(points[0], 0)\n let currentPointsArray = []\n const dividedLinesData = [\n { key: currentParameters, points: currentPointsArray }\n ]\n points.forEach((point, pointI) => {\n const newParameters = parameters(point, pointI)\n\n let matchingParams = newParameters === currentParameters\n const stringNewParams = JSON.stringify(newParameters)\n const stringCurrentParams = JSON.stringify(currentParameters)\n\n if (typeof currentParameters === \"object\") {\n matchingParams = stringNewParams === stringCurrentParams\n }\n\n if (matchingParams) {\n currentPointsArray.push(point)\n } else {\n const lastPoint = currentPointsArray[currentPointsArray.length - 1]\n let pointA = lastPoint\n let pointB = point\n let stringBParams = stringNewParams\n\n let x = 0\n while (x < searchIterations && stringNewParams === stringBParams) {\n const keys = Object.keys(pointA)\n const findPoints = simpleSearchFunction({\n pointA,\n pointB,\n currentParameters,\n parameters,\n keys\n })\n pointA = findPoints[0]\n pointB = findPoints[1]\n stringBParams = JSON.stringify(parameters(pointB))\n x++\n }\n currentPointsArray.push(pointB)\n currentPointsArray = [pointB, point]\n dividedLinesData.push({ key: newParameters, points: currentPointsArray })\n currentParameters = newParameters\n }\n })\n return dividedLinesData\n}\n\nfunction simpleSearchFunction({\n pointA,\n pointB,\n currentParameters,\n parameters,\n keys\n}: {\n pointA: Object\n pointB: Object\n currentParameters: Object\n parameters: Function\n keys: Array<string>\n}) {\n const betweenPoint = {}\n keys.forEach((key) => {\n betweenPoint[key] =\n typeof pointA[key] === \"number\"\n ? (pointA[key] + pointB[key]) / 2\n : undefined\n })\n const stringBetween = JSON.stringify(parameters(betweenPoint))\n const stringCurrent = JSON.stringify(currentParameters)\n\n if (stringBetween === stringCurrent) {\n return [betweenPoint, pointB]\n }\n return [pointA, betweenPoint]\n}\n\nexport function funnelize({\n data,\n steps,\n key\n}: {\n data: Array<Object>\n steps: Array<string>\n key: string\n}) {\n const funnelData = []\n if (!Array.isArray(data)) {\n data = [data]\n }\n if (!steps) {\n steps = data.map((d) => Object.keys(d)).reduce((a, b) => a.concat(b), [])\n }\n\n data.forEach((datum, i) => {\n const datumKey = key ? datum[key] : i\n steps.forEach((step) => {\n const funnelDatum = { funnelKey: datumKey, stepName: \"\", stepValue: 0 }\n funnelDatum.stepName = step\n funnelDatum.stepValue = datum[step] ? datum[step] : 0\n funnelData.push(funnelDatum)\n })\n })\n\n return funnelData\n}\n\nconst whichPoint = {\n bottom: \"yBottom\",\n top: \"yTop\"\n}\n\nexport function relativeY({\n point,\n projectedY,\n yAccessor,\n yScale,\n showLinePoints\n}: RelativeYTypes) {\n const baseData =\n point &&\n (showLinePoints &&\n showLinePoints !== true &&\n point[whichPoint[showLinePoints]] !== undefined\n ? point[whichPoint[showLinePoints]]\n : point.yMiddle !== undefined\n ? point.yMiddle\n : point[projectedY] !== undefined\n ? point[projectedY]\n : findFirstAccessorValue(yAccessor, point))\n\n if (Array.isArray(baseData)) {\n return baseData.map((d) => yScale(d))\n }\n return baseData !== undefined ? yScale(baseData) : 0\n}\n\nexport function relativeX({\n point,\n projectedXMiddle,\n projectedX,\n xAccessor,\n xScale\n}: RelativeXTypes) {\n const baseData =\n point &&\n (point[projectedXMiddle] !== undefined\n ? point[projectedXMiddle]\n : point[projectedX] !== undefined\n ? point[projectedX]\n : findFirstAccessorValue(xAccessor, point))\n\n if (Array.isArray(baseData)) {\n return baseData.map((d) => xScale(d))\n }\n return baseData !== undefined ? xScale(baseData) : 0\n}\n\nexport function findPointByID({\n point,\n idAccessor,\n lines,\n xScale,\n projectedX,\n xAccessor\n}: {\n point: ProjectedPoint\n idAccessor: Function\n lines: { data: ProjectedLine[] }\n xScale: Function\n projectedX: string\n xAccessor: Array<Function>\n}) {\n const pointID = idAccessor(point.parentLine || point)\n\n if (pointID) {\n const thisLine = lines.data.find((l) => idAccessor(l) === pointID)\n\n if (!thisLine) {\n return null\n }\n const pointX = xScale(findFirstAccessorValue(xAccessor, point))\n const thisPoint = thisLine.data.find(\n (p) => xScale(p[projectedX]) === pointX\n )\n\n if (!thisPoint) {\n return null\n }\n\n const newPoint = {\n ...point,\n ...thisPoint,\n ...thisPoint.data,\n parentLine: thisLine\n }\n const reactAnnotationProps = [\n \"type\",\n \"label\",\n \"note\",\n \"connector\",\n \"disabled\",\n \"color\",\n \"subject\"\n ]\n\n reactAnnotationProps.forEach((prop) => {\n if (point[prop]) newPoint[prop] = point[prop]\n })\n return newPoint\n }\n return point\n}\n","export const extentValue = extent =>\n (extent && extent.extent) || (Array.isArray(extent) && extent) || []\n","import { projectLineData, projectSummaryData } from \"../svg/lineDrawing\"\nimport {\n projectedX,\n projectedY,\n projectedYTop,\n projectedYMiddle,\n projectedYBottom,\n projectedXBottom,\n projectedXMiddle,\n projectedXTop\n} from \"../constants/coordinateNames\"\nimport {\n differenceLine,\n stackedArea,\n bumpChart,\n lineChart,\n cumulativeLine\n} from \"../svg/lineDrawing\"\n\nimport {\n contouring,\n hexbinning,\n heatmapping,\n trendlining,\n lineBounding\n} from \"../svg/areaDrawing\"\nimport { max, min } from \"d3-array\"\n\nimport { extentValue } from \"./unflowedFunctions\"\n\nimport {\n ProjectedPoint,\n ProjectedLine,\n ProjectedSummary,\n ProjectedBin,\n RawSummary,\n RawPoint,\n RawLine,\n LineTypeSettings,\n SummaryTypeSettings,\n ExtentType,\n MarginType\n} from \"../types/generalTypes\"\n\nconst baseDefinedFunction = () => true\n\nconst whichPointsHashY = {\n top: projectedYTop,\n bottom: projectedYBottom,\n orphan: projectedY\n}\n\nconst whichPointsHashX = {\n top: projectedXTop,\n bottom: projectedXBottom,\n orphan: projectedX\n}\n\nconst builtInTransformations = {\n stackedarea: stackedArea,\n \"stackedarea-invert\": stackedArea,\n stackedpercent: stackedArea,\n \"stackedpercent-invert\": stackedArea,\n linepercent: stackedArea,\n difference: differenceLine,\n bumparea: bumpChart,\n bumpline: bumpChart,\n \"bumparea-invert\": bumpChart,\n line: lineChart,\n area: lineChart,\n cumulative: cumulativeLine,\n \"cumulative-reverse\": cumulativeLine\n}\n\ntype validStrFnTypes =\n | boolean\n | string\n | number\n | Record<string, any>\n | Record<string, any>[]\n | RawPoint\n | RawPoint[]\n\nexport function stringToFn<StrFnType extends validStrFnTypes>(\n accessor?:\n | ((args?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType,\n defaultAccessor?: (arg?: Record<string, any>, i?: number) => StrFnType,\n raw?: boolean\n): (d?: Record<string, any>, i?: number) => StrFnType {\n if (!accessor && defaultAccessor) {\n return defaultAccessor\n } else if (typeof accessor === \"object\") {\n return () => accessor\n } else if (accessor instanceof Function) {\n return accessor\n } else if (raw === true) {\n const castAccessor = accessor as unknown as StrFnType\n return () => castAccessor\n } else if (typeof accessor === \"string\") {\n return (d: Record<string, any>) => (d ? d[accessor] : undefined)\n }\n\n return () => undefined\n}\n\nexport function stringToArrayFn<StrFnType extends validStrFnTypes>(\n accessor?:\n | ((arg?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType\n | Array<\n | ((arg?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType\n >,\n defaultAccessor?: (arg?: Record<string, any>, index?: number) => StrFnType,\n raw?: boolean\n): Array<(arg?: Record<string, any>, index?: number) => StrFnType> {\n if (accessor === undefined) {\n return [stringToFn<StrFnType>(undefined, defaultAccessor, raw)]\n }\n let arrayOfAccessors = []\n if (Array.isArray(accessor)) {\n arrayOfAccessors = accessor\n } else {\n arrayOfAccessors = [accessor]\n }\n\n return arrayOfAccessors.map((a) =>\n stringToFn<StrFnType>(a, defaultAccessor, raw)\n )\n}\n\nfunction rebuildFullDatasetWithSummaries(\n fullDataset: Array<ProjectedPoint | ProjectedBin | ProjectedSummary>,\n projectedSummaries: ProjectedSummary[]\n): Array<ProjectedPoint | ProjectedBin | ProjectedSummary> {\n const rebuilt: Array<ProjectedPoint | ProjectedBin | ProjectedSummary> = []\n for (const d of projectedSummaries) {\n rebuilt.push({ ...d })\n }\n for (const d of fullDataset) {\n if (!(d as ProjectedPoint).parentSummary) {\n rebuilt.push(d)\n }\n }\n return rebuilt\n}\n\ntype CalculateDataTypes = {\n lineDataAccessor: Array<Function>\n summaryDataAccessor: Array<Function>\n summaryStyleFn: Function\n summaryClassFn: Function\n summaryRenderModeFn: Function\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n summaries?: Array<RawSummary>\n points?: Array<RawPoint>\n lines?: Array<RawLine>\n lineType: LineTypeSettings\n showLinePoints?: boolean | string\n showSummaryPoints?: boolean\n xExtent?: ExtentType\n yExtent?: ExtentType\n invertX?: boolean\n invertY?: boolean\n summaryType: SummaryTypeSettings\n adjustedSize: Array<number>\n chartSize: Array<number>\n xScaleType: Function\n yScaleType: Function\n margin: MarginType\n defined?: Function\n annotations: object[]\n filterRenderedLines: (\n value: ProjectedLine,\n index: number,\n array: ProjectedLine[]\n ) => any\n filterRenderedSummaries: (\n value: ProjectedSummary,\n index: number,\n array: ProjectedSummary[]\n ) => any\n filterRenderedPoints: (\n value: ProjectedPoint | ProjectedBin | ProjectedSummary,\n index: number,\n array: (ProjectedPoint | ProjectedBin | ProjectedSummary)[]\n ) => any\n}\n\nexport const calculateDataExtent = ({\n lineDataAccessor,\n xAccessor,\n yAccessor,\n summaries,\n points,\n lines,\n lineType,\n showLinePoints,\n showSummaryPoints,\n xExtent,\n yExtent,\n invertX,\n invertY,\n summaryDataAccessor,\n summaryType,\n adjustedSize: size,\n margin,\n summaryStyleFn,\n summaryClassFn,\n summaryRenderModeFn,\n chartSize,\n filterRenderedLines,\n filterRenderedSummaries,\n filterRenderedPoints,\n defined = baseDefinedFunction,\n annotations = []\n}: CalculateDataTypes) => {\n let fullDataset: Array<ProjectedPoint | ProjectedBin | ProjectedSummary> = []\n let initialProjectedLines = []\n\n let projectedPoints: Array<ProjectedPoint> = [],\n projectedLines: Array<ProjectedLine> = [],\n projectedSummaries: Array<ProjectedSummary> = []\n if (points) {\n xAccessor.forEach((actualXAccessor, xIndex) => {\n yAccessor.forEach((actualYAccessor, yIndex) => {\n let i = 0\n for (const d of points) {\n const x = actualXAccessor(d, i)\n const y = actualYAccessor(d, i)\n const projectedPoint = { x, y, data: d, xIndex, yIndex }\n if (Array.isArray(y)) {\n projectedPoint[projectedYBottom] = Math.min(...y)\n projectedPoint[projectedYTop] = Math.max(...y)\n projectedPoint[projectedYMiddle] =\n (projectedPoint[projectedYBottom] +\n projectedPoint[projectedYTop]) /\n 2\n }\n if (Array.isArray(x)) {\n projectedPoint[projectedXBottom] = Math.min(...x)\n projectedPoint[projectedXTop] = Math.max(...x)\n projectedPoint[projectedXMiddle] =\n (projectedPoint[projectedXBottom] +\n projectedPoint[projectedXTop]) /\n 2\n }\n projectedPoints.push(projectedPoint)\n i++\n }\n })\n })\n\n for (const d of projectedPoints) {\n fullDataset.push({\n ...d,\n [projectedX]: d[projectedXTop] || d[projectedXBottom] || d.x,\n [projectedY]: d[projectedYTop] || d[projectedYBottom] || d.y\n })\n }\n }\n if (lines) {\n initialProjectedLines = projectLineData({\n data: lines,\n lineDataAccessor,\n xProp: projectedX,\n xPropTop: projectedXTop,\n xPropBottom: projectedXBottom,\n yProp: projectedY,\n yPropTop: projectedYTop,\n yPropBottom: projectedYBottom,\n xAccessor,\n yAccessor\n })\n\n const optionsObject = {\n xProp: projectedX,\n yProp: projectedY,\n yPropMiddle: projectedYMiddle,\n yPropTop: projectedYTop,\n yPropBottom: projectedYBottom,\n xPropMiddle: projectedXMiddle,\n xPropTop: projectedXTop,\n xPropBottom: projectedXBottom\n }\n\n projectedLines = lineTransformation(\n lineType,\n optionsObject\n )(initialProjectedLines)\n\n for (const d of projectedLines) {\n for (let q = 0; q < d.data.length; q++) {\n const p = d.data[q]\n if (!defined(Object.assign({}, p.data, p), q)) continue\n const mappedP: ProjectedPoint = {\n parentLine: d,\n y: p.y,\n x: p.x,\n xTop: p.xTop,\n xMiddle: p.xMiddle,\n xBottom: p.xBottom,\n yTop: p.yTop,\n yMiddle: p.yMiddle,\n yBottom: p.yBottom,\n data: p.data\n }\n if (p.percent) {\n mappedP.percent = p.percent\n }\n fullDataset.push(mappedP)\n }\n }\n if (showLinePoints) {\n const whichPointsX =\n showLinePoints === true\n ? projectedXMiddle\n : whichPointsHashX[showLinePoints]\n\n const whichPointsY =\n showLinePoints === true\n ? projectedYMiddle\n : whichPointsHashY[showLinePoints]\n\n projectedLines.forEach((d: ProjectedLine) => {\n d.data\n .filter((p, q) => {\n const isDefined = defined(Object.assign({}, p.data, p))\n if (isDefined) {\n if (showLinePoints === \"orphan\") {\n const prePoint = d.data[q - 1]\n const postPoint = d.data[q + 1]\n\n if (\n (!prePoint ||\n !defined(Object.assign({}, prePoint.data, prePoint))) &&\n (!postPoint ||\n !defined(Object.assign({}, postPoint.data, postPoint)))\n ) {\n return true\n } else {\n return false\n }\n } else {\n return true\n }\n } else {\n return false\n }\n })\n .forEach((p) => {\n projectedPoints.push({\n ...p,\n parentLine: d,\n [projectedY]:\n p[whichPointsY] !== undefined\n ? p[whichPointsY]\n : p[projectedYMiddle] !== undefined\n ? p[projectedYMiddle]\n : p[projectedYBottom] !== undefined\n ? p[projectedYBottom]\n : p.y,\n [projectedX]:\n p[whichPointsX] !== undefined\n ? p[whichPointsX]\n : p[projectedXMiddle] !== undefined\n ? p[projectedXMiddle]\n : p[projectedXBottom] !== undefined\n ? p[projectedXBottom]\n : p.y\n })\n })\n })\n }\n }\n\n if (summaries) {\n projectedSummaries = projectSummaryData({\n data: summaries,\n summaryDataAccessor,\n xAccessor,\n yAccessor\n })\n\n projectedSummaries.forEach((d) => {\n const baseData = d._baseData\n\n if (d._xyfCoordinates.length > 0 && d._xyfCoordinates[0][0][0]) {\n d._xyfCoordinates[0].forEach((multi) => {\n if (Array.isArray(multi)) {\n multi\n .map((p, q) =>\n Object.assign({ parentSummary: d }, baseData[q], {\n [projectedX]: p[0],\n [projectedY]: p[1]\n })\n )\n .forEach((e) => {\n if (showSummaryPoints) {\n projectedPoints.push({\n x: 0,\n ...e,\n [projectedY]:\n e[projectedYTop] || e[projectedYBottom] || e[projectedY]\n })\n }\n fullDataset.push({ x: 0, y: 0, ...e })\n })\n }\n })\n } else if (d._xyfCoordinates.length > 0) {\n if (Array.isArray(d._xyfCoordinates)) {\n const coordArray: [number, number][] = d._xyfCoordinates as [\n number,\n number\n ][]\n coordArray\n .map((p, q) => ({\n parentSummary: d,\n ...baseData[q],\n [projectedX]: p[0],\n [projectedY]: p[1]\n }))\n .forEach((e) => {\n if (showSummaryPoints) {\n projectedPoints.push({\n x: 0,\n ...e,\n [projectedY]:\n e[projectedYTop] || e[projectedYBottom] || e[projectedY]\n })\n }\n fullDataset.push({ x: 0, y: 0, ...e })\n })\n }\n }\n })\n }\n\n let suitableXAnnotations = []\n let suitableYAnnotations = []\n\n if (\n xExtent &&\n !Array.isArray(xExtent) &&\n xExtent.includeAnnotations === true\n ) {\n xAccessor.forEach((actualXAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const x = actualXAccessor(annotation, annotationIndex)\n if (isFinite(x)) {\n suitableXAnnotations.push({\n [projectedX]: x\n })\n }\n })\n })\n }\n\n if (\n yExtent &&\n !Array.isArray(yExtent) &&\n yExtent.includeAnnotations === true\n ) {\n yAccessor.forEach((actualYAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const y = actualYAccessor(annotation, annotationIndex)\n if (isFinite(y)) {\n suitableYAnnotations.push({\n [projectedY]: y\n })\n }\n })\n })\n }\n\n // Single-pass extent calculation over fullDataset + annotations\n let xMinVal: number | undefined\n let xMaxVal: number | undefined\n let yMinVal: number | undefined\n let yMaxVal: number | undefined\n\n for (const d of fullDataset) {\n const xLo = d[projectedXBottom] === undefined\n ? d[projectedX]\n : Math.min(d[projectedXTop], d[projectedXBottom])\n const xHi = d[projectedXTop] === undefined\n ? d[projectedX]\n : Math.max(d[projectedXBottom], d[projectedXTop])\n const yLo = d[projectedYBottom] === undefined\n ? d[projectedY]\n : Math.min(d[projectedYTop], d[projectedYBottom])\n const yHi = d[projectedYTop] === undefined\n ? d[projectedY]\n : Math.max(d[projectedYBottom], d[projectedYTop])\n\n if (xLo !== undefined && (xMinVal === undefined || xLo < xMinVal)) xMinVal = xLo\n if (xHi !== undefined && (xMaxVal === undefined || xHi > xMaxVal)) xMaxVal = xHi\n if (yLo !== undefined && (yMinVal === undefined || yLo < yMinVal)) yMinVal = yLo\n if (yHi !== undefined && (yMaxVal === undefined || yHi > yMaxVal)) yMaxVal = yHi\n }\n\n for (const d of suitableXAnnotations) {\n const v = d[projectedX]\n if (v !== undefined && (xMinVal === undefined || v < xMinVal)) xMinVal = v\n if (v !== undefined && (xMaxVal === undefined || v > xMaxVal)) xMaxVal = v\n }\n\n for (const d of suitableYAnnotations) {\n const v = d[projectedY]\n if (v !== undefined && (yMinVal === undefined || v < yMinVal)) yMinVal = v\n if (v !== undefined && (yMaxVal === undefined || v > yMaxVal)) yMaxVal = v\n }\n\n const calculatedXExtent = [xMinVal, xMaxVal]\n const calculatedYExtent = [yMinVal, yMaxVal]\n\n const actualXExtent: number[] = extentValue(xExtent)\n const actualYExtent: number[] = extentValue(yExtent)\n\n const xMin =\n actualXExtent && actualXExtent[0] !== undefined\n ? actualXExtent[0]\n : calculatedXExtent[0]\n const xMax =\n actualXExtent && actualXExtent[1] !== undefined\n ? actualXExtent[1]\n : calculatedXExtent[1]\n\n const yMin =\n actualYExtent && actualYExtent[0] !== undefined\n ? actualYExtent[0]\n : calculatedYExtent[0]\n const yMax =\n actualYExtent && actualYExtent[1] !== undefined\n ? actualYExtent[1]\n : calculatedYExtent[1]\n\n let finalYExtent = [yMin, yMax]\n let finalXExtent = [xMin, xMax]\n\n if (invertX && !(actualXExtent && actualXExtent.length === 2)) {\n finalXExtent = [finalXExtent[1], finalXExtent[0]]\n }\n\n if (\n (lineType.type === \"bumpline\" || invertY) &&\n !(actualYExtent && actualYExtent.length === 2)\n ) {\n finalYExtent = [finalYExtent[1], finalYExtent[0]]\n }\n\n if (summaryType.type && summaryType.type === \"contour\") {\n projectedSummaries = contouring({\n summaryType,\n data: projectedSummaries,\n finalXExtent,\n finalYExtent\n })\n } else if (summaryType.type && summaryType.type === \"linebounds\") {\n projectedSummaries = lineBounding({\n summaryType,\n data: projectedSummaries,\n defined\n })\n } else if (summaryType.type && summaryType.type === \"hexbin\") {\n projectedSummaries = hexbinning({\n summaryType,\n data: projectedSummaries[0],\n processedData: summaries && !!summaries[0].processedData,\n preprocess: false,\n finalXExtent,\n finalYExtent,\n size,\n margin,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderFn: summaryRenderModeFn,\n chartSize\n }) as unknown as ProjectedSummary[]\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n } else if (summaryType.type && summaryType.type === \"heatmap\") {\n projectedSummaries = heatmapping({\n summaryType,\n data: projectedSummaries[0],\n processedData: summaries && !!summaries[0].processedData,\n preprocess: false,\n finalXExtent,\n finalYExtent,\n size,\n margin,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderFn: summaryRenderModeFn,\n chartSize\n }) as unknown as ProjectedSummary[]\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n } else if (summaryType.type && summaryType.type === \"trendline\") {\n projectedSummaries = trendlining({\n summaryType,\n data: projectedSummaries[0],\n preprocess: summaries && !!summaries[0].processedData,\n finalXExtent\n })\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n }\n\n if (filterRenderedLines) {\n projectedLines = projectedLines.filter(filterRenderedLines)\n fullDataset = fullDataset.filter((d: ProjectedPoint, i) => {\n return !d.parentLine || filterRenderedLines(d.parentLine, i, [])\n })\n }\n if (filterRenderedPoints) {\n fullDataset = fullDataset.filter(filterRenderedPoints)\n }\n if (filterRenderedSummaries) {\n projectedSummaries = projectedSummaries.filter(filterRenderedSummaries)\n fullDataset = fullDataset.filter((d: ProjectedPoint, i) => {\n return !d.parentSummary || filterRenderedSummaries(d.parentSummary, i, [])\n })\n }\n\n return {\n xExtent: finalXExtent,\n yExtent: finalYExtent,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n fullDataset,\n calculatedXExtent,\n calculatedYExtent\n }\n}\n\nconst differenceCatch = (olineType, data) => {\n if (\n !builtInTransformations[olineType] ||\n (olineType === \"difference\" && data.length !== 2)\n ) {\n return \"line\"\n }\n return olineType\n}\n\nfunction lineTransformation(lineType, options) {\n return (data) =>\n builtInTransformations[differenceCatch(lineType.type, data)]({\n ...lineType,\n ...options,\n data\n })\n}\n","//size is a special case and handled checking the actual values in the size array\n\nconst sharedChangeProps = [\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n \"name\",\n \"title\",\n \"margin\",\n \"className\",\n \"additionalDefs\",\n \"renderKey\"\n]\n\n// Legacy export for backward compatibility\nexport const xyFrameDataProps = [\n \"lines\",\n \"points\",\n \"summaries\",\n \"xScaleType\",\n \"yScaleType\",\n \"xAccessor\",\n \"yAccessor\",\n \"lineDataAccessor\",\n \"areaDataAccessor\",\n \"summaryDataAccessor\",\n \"lineType\",\n \"showLinePoints\",\n \"showSummaryPoints\",\n \"defined\",\n \"summaryType\"\n]\n\n// NEW: Props that affect data projection - trigger calculateDataExtent\nexport const xyFrameDataAffectingProps = [\n // Core data props\n \"lines\",\n \"points\",\n \"summaries\",\n\n // Data accessors\n \"xAccessor\",\n \"yAccessor\",\n \"lineDataAccessor\",\n \"areaDataAccessor\",\n \"summaryDataAccessor\",\n \"lineIDAccessor\",\n\n // Data transformation\n \"lineType\",\n \"summaryType\",\n \"showLinePoints\",\n \"showSummaryPoints\",\n \"defined\",\n\n // Extent overrides (affect extent calculation)\n \"xExtent\",\n \"yExtent\",\n\n // Scale types (affect data domain)\n \"xScaleType\",\n \"yScaleType\",\n \"invertX\",\n \"invertY\",\n\n // Filters (affect which data is processed)\n \"filterRenderedLines\",\n \"filterRenderedPoints\",\n \"filterRenderedSummaries\"\n]\n\n// NEW: Props that affect scales/layout - trigger scale recalc but not data projection\nexport const xyFrameScaleAffectingProps = [\n // Size and layout\n \"size\",\n \"margin\",\n \"title\",\n\n // Axes (affect margin calculation)\n \"axes\",\n\n // All data-affecting props also affect scales\n ...xyFrameDataAffectingProps\n]\n\n// NEW: Props that only affect styling/rendering - no data or scale recalc\nexport const xyFrameStylingProps = [\n // Styling\n \"lineStyle\",\n \"pointStyle\",\n \"summaryStyle\",\n\n // Classes\n \"lineClass\",\n \"pointClass\",\n \"areaClass\",\n \"summaryClass\",\n \"className\",\n\n // Custom marks\n \"customPointMark\",\n \"customLineMark\",\n \"customSummaryMark\",\n\n // Render modes\n \"lineRenderMode\",\n \"pointRenderMode\",\n \"summaryRenderMode\",\n \"canvasLines\",\n \"canvasPoints\",\n \"canvasSummaries\",\n\n // Interaction (no data recalc needed)\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n\n // Other rendering\n \"additionalDefs\",\n \"renderKey\",\n \"name\"\n]\n\n// Legacy export - now includes all prop categories\nexport const xyFrameChangeProps = [\n ...xyFrameDataAffectingProps,\n ...xyFrameStylingProps,\n \"axes\", // Duplicated but needed for backward compatibility\n \"size\",\n \"margin\",\n \"title\"\n]\n\n// NEW: Props that affect data projection - trigger calculateOrdinalFrame data processing\nexport const orFrameDataAffectingProps = [\n // Core data\n \"data\",\n\n // Data accessors\n \"oAccessor\",\n \"rAccessor\",\n \"dataAccessor\",\n\n // Data transformation\n \"type\",\n \"summaryType\",\n \"connectorType\",\n \"projection\",\n \"orient\",\n\n // Scale types (affect data domain)\n \"oScaleType\",\n \"rScaleType\",\n\n // Extent overrides\n \"oExtent\",\n \"rExtent\",\n \"invertO\",\n \"invertR\",\n\n // Layout affecting data\n \"oPadding\",\n \"oSort\",\n \"dynamicColumnWidth\",\n \"rBaseline\",\n \"summaryPosition\",\n\n // Custom rendering\n \"renderFn\"\n]\n\n// NEW: Props that affect scales/layout - trigger scale recalc but not data projection\nexport const orFrameScaleAffectingProps = [\n // Size and layout\n \"size\",\n \"margin\",\n \"title\",\n\n // Axes and labels (affect margin/layout)\n \"axes\",\n \"oLabel\",\n\n // All data-affecting props also affect scales\n ...orFrameDataAffectingProps\n]\n\n// NEW: Props that only affect styling/rendering - no data or scale recalc\nexport const orFrameStylingProps = [\n // Styling\n \"style\",\n \"connectorStyle\",\n \"summaryStyle\",\n\n // Classes\n \"className\",\n\n // Interaction (no data recalc needed)\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n \"pieceHoverAnnotation\",\n \"summaryHoverAnnotation\",\n\n // Other rendering\n \"additionalDefs\",\n \"renderKey\",\n \"name\"\n]\n\n// Legacy export - now includes all prop categories\nexport const orFrameChangeProps = [\n ...orFrameDataAffectingProps,\n ...orFrameStylingProps,\n \"axes\", // Duplicated but needed for backward compatibility\n \"size\",\n \"margin\",\n \"title\",\n \"oLabel\"\n]\n\n// NEW: Props that affect data projection - trigger calculateNetworkFrame data processing\nexport const networkFrameDataAffectingProps = [\n // Core data\n \"graph\",\n \"nodes\",\n \"edges\",\n\n // Data accessors\n \"nodeIDAccessor\",\n \"sourceAccessor\",\n \"targetAccessor\",\n \"nodeSizeAccessor\",\n \"edgeWidthAccessor\",\n\n // Layout and type\n \"networkType\",\n \"edgeType\",\n\n // Filters\n \"filterRenderedNodes\",\n\n // Custom rendering\n \"renderFn\"\n]\n\n// NEW: Props that affect scales/layout - trigger scale recalc but not data projection\nexport const networkFrameScaleAffectingProps = [\n // Size and layout\n \"size\",\n \"margin\",\n \"title\",\n\n // Labels (might affect layout)\n \"nodeLabels\",\n\n // All data-affecting props also affect scales\n ...networkFrameDataAffectingProps\n]\n\n// NEW: Props that only affect styling/rendering - no data or scale recalc\nexport const networkFrameStylingProps = [\n // Styling\n \"nodeStyle\",\n \"edgeStyle\",\n\n // Custom marks\n \"customNodeIcon\",\n\n // Classes\n \"className\",\n\n // Interaction (no data recalc needed)\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n\n // Other rendering\n \"additionalDefs\",\n \"renderKey\",\n \"name\"\n]\n\n// Legacy export - now includes all prop categories\nexport const networkFrameChangeProps = [\n ...networkFrameDataAffectingProps,\n ...networkFrameStylingProps,\n \"size\",\n \"margin\",\n \"title\",\n \"nodeLabels\"\n]\n","import * as React from \"react\"\n\nimport Annotation from \"../Annotation\"\nimport { polygonHull } from \"d3-polygon\"\nimport Offset from \"polygon-offset\"\n\nexport const circleEnclosure = ({ d, i, circle }) => {\n const { padding = 2, radiusPadding = padding, label } = d\n\n const noteData = Object.assign(\n {\n dx: 0,\n dy: 0,\n note: { label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n coordinates: undefined,\n x: circle.x,\n y: circle.y,\n type: \"callout-circle\",\n subject: {\n radius: circle.r,\n radiusPadding\n },\n i\n }\n )\n\n if (noteData.rp) {\n switch (noteData.rp) {\n case \"top\":\n noteData.dx = 0\n noteData.dy = -circle.r - noteData.rd\n break\n case \"bottom\":\n noteData.dx = 0\n noteData.dy = circle.r + noteData.rd\n break\n case \"left\":\n noteData.dx = -circle.r - noteData.rd\n noteData.dy = 0\n break\n default:\n noteData.dx = circle.r + noteData.rd\n noteData.dy = 0\n }\n }\n //TODO: Support .ra (setting angle)\n\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const rectangleEnclosure = ({ bboxNodes, d, i }) => {\n const { padding = 0, dx = -25, dy = -25, label } = d\n const bbox = [\n [\n Math.min(...bboxNodes.map((p) => p.x0)) - padding,\n Math.min(...bboxNodes.map((p) => p.y0)) - padding\n ],\n [\n Math.max(...bboxNodes.map((p) => p.x1)) + padding,\n Math.max(...bboxNodes.map((p) => p.y1)) + padding\n ]\n ]\n\n const noteData = Object.assign(\n {\n dx: dx,\n dy: dy,\n note: { label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-rect\",\n x: bbox[0][0],\n y: bbox[0][1],\n subject: {\n width: bbox[1][0] - bbox[0][0],\n height: bbox[1][1] - bbox[0][1]\n }\n }\n )\n\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const hullEnclosure = ({ points, d, i }) => {\n const {\n color = \"currentColor\",\n dx = -25,\n dy = -25,\n label,\n padding = 10,\n buffer = padding,\n strokeWidth = 10\n } = d\n\n const hullPoints = polygonHull(points)\n\n const offset = new Offset()\n\n const bufferedHull = offset\n .data([...hullPoints, hullPoints[0]])\n .margin(buffer)[0]\n\n const hullD = `M${bufferedHull.map((d) => d.join(\",\")).join(\"L\")}Z`\n\n const firstCoord = bufferedHull[0]\n\n const { nx = firstCoord[0] + dx, ny = firstCoord[1] + dy } = d\n\n const closestCoordinates = bufferedHull.reduce((p, c) => {\n if (Math.hypot(nx - p[0], ny - p[1]) > Math.hypot(nx - c[0], ny - c[1])) {\n p = c\n }\n return p\n }, firstCoord)\n\n const noteData = Object.assign(\n {\n dx: dx,\n dy: dy,\n note: { label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-custom\",\n x: closestCoordinates[0],\n y: closestCoordinates[1],\n subject: {\n custom: [\n <path\n key=\"hull-drawing\"\n d={hullD}\n strokeWidth={strokeWidth}\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"miter\"\n strokeLinecap=\"butt\"\n fill=\"none\"\n stroke={color}\n transform={`translate(${-closestCoordinates[0]},${-closestCoordinates[1]})`}\n />\n ],\n customID: \"hull-annotation\"\n }\n }\n )\n\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const desaturationLayer = ({\n style = { fill: \"white\", fillOpacity: 0.5 },\n size,\n i,\n key\n}: {\n style: { fill?: string; fillOpacity?: number }\n size: number[]\n i?: number\n key?: string\n}) => (\n <rect\n data-testid=\"desaturation-layer\"\n key={key || `desaturation-${i}`}\n x={-5}\n y={-5}\n width={size[0] + 10}\n height={size[1] + 10}\n style={style}\n />\n)\n","\"use client\"\nimport * as React from \"react\"\nimport { useState, useEffect, useCallback } from \"react\"\n\ntype Props = {\n tooltipContent: Function\n tooltipContentArgs?: object\n}\n\ntype State = {\n collision: object\n tooltipContainerInitialDimensions: object\n tooltipContentArgsCurrent: object\n}\n\nconst // simple heuristics to check if the tooltip container exceeds the viewport\n // if so, capture the suggested offset\n checkPosition = ({\n tooltipRef,\n tooltipContentArgs,\n changeTooltipContentArgsCurrent,\n changeTooltipContainerInitialDimensions,\n changeCollision\n }) => {\n const tooltipContainerInitialDimensions =\n tooltipRef?.getBoundingClientRect()\n\n if (!tooltipContainerInitialDimensions) {\n return\n }\n\n const { right, left, top, bottom, width, height } =\n tooltipContainerInitialDimensions\n\n // flags to indicate whether the data point + tooltip dimension collides with the viewport\n // on each of the 4 directions/sides\n let collision = {\n left: false,\n right: false,\n top: false,\n bottom: false\n }\n\n if (left + width > window.innerWidth) {\n collision.right = true\n }\n if (left - width < 0) {\n collision.left = true\n }\n if (top + height > window.innerHeight) {\n collision.bottom = true\n }\n if (top - height < 0) {\n collision.top = true\n }\n\n changeTooltipContentArgsCurrent()\n changeTooltipContainerInitialDimensions(tooltipContainerInitialDimensions)\n changeCollision(collision)\n }\n\nexport default function TooltipPositioner(props: Props) {\n const { tooltipContent, tooltipContentArgs } = props\n\n const [collision, changeCollision] = useState(null)\n const [\n tooltipContainerInitialDimensions,\n changeTooltipContainerInitialDimensions\n ] = useState(null)\n const [tooltipContentArgsCurrent, changeTooltipContentArgsCurrent] =\n useState(null)\n const [tooltipNode, setTooltipNode] = useState(null)\n\n const tooltipNodeRef = useCallback((node) => {\n setTooltipNode(node)\n\n checkPosition({\n tooltipRef: node,\n tooltipContentArgs,\n changeTooltipContentArgsCurrent,\n changeTooltipContainerInitialDimensions,\n changeCollision\n })\n }, [])\n\n useEffect(() => {\n // if new args, reset collision state\n changeCollision(null)\n changeTooltipContainerInitialDimensions(null)\n }, [JSON.stringify(tooltipContentArgs)])\n\n useEffect(() => {\n if (tooltipNode && !collision) {\n checkPosition({\n tooltipRef: tooltipNode,\n tooltipContentArgs,\n changeTooltipContentArgsCurrent,\n changeTooltipContainerInitialDimensions,\n changeCollision\n })\n }\n }, [tooltipNode, collision])\n\n const containerStyle = {\n //to handle issue when the tooltip content has margins set by client,\n // which results in the tooltip container having smaller height,\n // which in turn causes the css transform to be inaccurate\n // (ref: https://www.w3.org/TR/css-box-3/#collapsing-margins)\n overflow: \"hidden\",\n\n opacity:\n collision && tooltipContentArgsCurrent === tooltipContentArgs ? 1 : 0\n }\n\n const tooltipContainerClasses = collision\n ? [\n \"tooltip-container\",\n \"tooltip-collision-evaluated\",\n collision && collision.top && \"collision-top\",\n collision && collision.bottom && \"collision-bottom\",\n collision && collision.right && \"collision-right\",\n collision && collision.left && \"collision-left\"\n ]\n .filter((el) => el)\n .join(\" \")\n : \"tooltip-container\"\n\n const tooltipContainerAttributes = {\n offset: { x: 0, y: 0 },\n tooltipContainerInitialDimensions\n }\n\n return (\n <div\n ref={tooltipNodeRef}\n style={containerStyle}\n className={tooltipContainerClasses}\n data-testid=\"TooltipPositioner\"\n >\n {tooltipContent({\n ...tooltipContentArgs,\n tooltipContainerAttributes\n })}\n </div>\n )\n}\n","import * as React from \"react\"\nimport Annotation from \"../Annotation\"\n\nimport { packEnclose } from \"d3-hierarchy\"\nimport { circleEnclosure, rectangleEnclosure, hullEnclosure } from \"./baseRules\"\nimport TooltipPositioner from \"../TooltipPositioner\"\n\nexport const htmlFrameHoverRule = ({\n d: baseD,\n i,\n tooltipContent,\n optimizeCustomTooltipPosition,\n nodes,\n edges,\n nodeIDAccessor,\n adjustedSize\n}) => {\n const d =\n baseD.x !== undefined && baseD.y !== undefined\n ? baseD\n : baseD.edge\n ? {\n ...(edges.find(\n (p) =>\n nodeIDAccessor(p.source) === nodeIDAccessor(baseD.source) &&\n nodeIDAccessor(p.target) === nodeIDAccessor(baseD.target)\n ) || {}),\n ...baseD\n }\n : nodes.find((p) => nodeIDAccessor(p) === baseD.id)\n\n if (!d) return null\n\n let content = d.edge ? (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n <p key=\"html-annotation-content-1\">\n {(d.source || d.edge.source).id} to {(d.target || d.edge.target).id}\n </p>\n </div>\n ) : (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n <p key=\"html-annotation-content-1\">{d.id}</p>\n <p key=\"html-annotation-content-2\">Degree: {d.degree}</p>\n </div>\n )\n\n if (d.type === \"frame-hover\" && tooltipContent) {\n content = optimizeCustomTooltipPosition ? (\n <TooltipPositioner\n tooltipContent={tooltipContent}\n tooltipContentArgs={d}\n />\n ) : (\n tooltipContent(d)\n )\n }\n\n const flipped = adjustedSize && d.x > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${d.y}px`\n }\n\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - d.x}px`\n } else {\n tooltipStyle.left = `${d.x}px`\n }\n\n return (\n <div\n key={`network-annotation-label-${i}`}\n className={`annotation annotation-network-label ${d.className || \"\"}`}\n data-testid=\"network-tooltip-container\"\n style={tooltipStyle}\n >\n {content}\n </div>\n )\n}\n\nexport const svgNodeRule = ({ d, i, nodeSizeAccessor }) => {\n if (!d) {\n return null\n }\n const noteData = Object.assign(\n {\n dx: d.dx || -25,\n dy: d.dy || -25,\n x: d.x,\n y: d.y,\n note: { label: d.label, orientation: d.orientation, align: d.align },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-circle\",\n subject: {\n radius: d.radius || d.radius || nodeSizeAccessor(d)\n }\n }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgReactAnnotationRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor\n}) => {\n const selectedNode =\n d.x !== undefined && d.y !== undefined\n ? d\n : projectedNodes.find((p) => nodeIDAccessor(p) === d.id)\n if (!selectedNode) {\n return null\n }\n const noteData = Object.assign(\n {\n dx: 0,\n dy: 0,\n x: selectedNode.x,\n y: selectedNode.y,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n { type: typeof d.type === \"function\" ? d.type : undefined }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgEncloseRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n}) => {\n const selectedNodes = projectedNodes.filter(\n (p) => d.ids.indexOf(nodeIDAccessor(p)) !== -1\n )\n if (selectedNodes.length === 0) {\n return null\n }\n const circle = packEnclose(\n selectedNodes.map((p) => ({ x: p.x, y: p.y, r: nodeSizeAccessor(p) }))\n )\n return circleEnclosure({ circle, d, i })\n}\n\nexport const svgRectEncloseRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n}) => {\n const selectedNodes = projectedNodes.filter(\n (p) => d.ids.indexOf(nodeIDAccessor(p)) !== -1\n )\n if (selectedNodes.length === 0) {\n return null\n }\n\n const bboxNodes = selectedNodes.map((p) => {\n if (p.shapeNode) {\n return {\n x0: p.x0,\n x1: p.x1,\n y0: p.y0,\n y1: p.y1\n }\n }\n const nodeSize = nodeSizeAccessor(p)\n return {\n x0: p.x - nodeSize,\n x1: p.x + nodeSize,\n y0: p.y - nodeSize,\n y1: p.y + nodeSize\n }\n })\n\n return rectangleEnclosure({ bboxNodes, d, i })\n}\n\nexport const svgHullEncloseRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n}) => {\n const selectedNodes = projectedNodes.filter(\n (p) => d.ids.indexOf(nodeIDAccessor(p)) !== -1\n )\n\n if (selectedNodes.length === 0) {\n return null\n }\n\n const projectedPoints = []\n\n selectedNodes.forEach((p) => {\n if (p.shapeNode) {\n projectedPoints.push({ x: p.x0, y: p.y0 })\n projectedPoints.push({ x: p.x0, y: p.y1 })\n projectedPoints.push({ x: p.x1, y: p.y0 })\n projectedPoints.push({ x: p.x1, y: p.y1 })\n } else {\n const nodeSize = nodeSizeAccessor(p)\n projectedPoints.push({ x: p.x - nodeSize, y: p.y - nodeSize })\n projectedPoints.push({ x: p.x + nodeSize, y: p.y - nodeSize })\n projectedPoints.push({ x: p.x - nodeSize, y: p.y + nodeSize })\n projectedPoints.push({ x: p.x + nodeSize, y: p.y + nodeSize })\n }\n })\n\n return hullEnclosure({ points: projectedPoints.map((d) => [d.x, d.y]), d, i })\n}\n\nexport const svgHighlightRule = ({ d, i, networkFrameRender }) => {\n const { nodes } = networkFrameRender\n const { customMark, styleFn: baseStyle } = nodes\n\n let styleFn = baseStyle\n if (d.style && typeof d.style === \"function\") {\n styleFn = (d) => ({ ...baseStyle(d), ...d.style(d) })\n } else if (d.style) {\n styleFn = (d) => ({ ...baseStyle(d), ...d.style })\n }\n\n const transform = `translate(${d.x},${d.y})`\n\n const HighlightMark = customMark({\n d,\n styleFn,\n transform,\n key: `highlight-${i}`\n })\n\n return HighlightMark\n}\n","export const genericFunction = value => () => value\n","import * as React from \"react\"\nimport { arc } from \"d3-shape\"\nimport { scaleLinear } from \"d3-scale\"\n\nexport const circleNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n transform\n}) => {\n //this is repetitious\n const style = styleFn(d, i)\n return (\n <rect\n key={key}\n transform={transform}\n width={d.nodeSize * 2}\n height={d.nodeSize * 2}\n ry={d.nodeSize * 2}\n rx={d.nodeSize * 2}\n x={-d.nodeSize}\n y={-d.nodeSize}\n {...style}\n style={style}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n\nexport const gridProps = (gridSize) => {\n return {\n x: -gridSize / 2,\n y: -gridSize / 2,\n width: gridSize,\n height: gridSize\n }\n}\n\nexport const sankeyNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n transform\n}) => {\n const height = d.direction !== \"down\" ? d.height : d.width\n const width = d.direction !== \"down\" ? d.width : d.height\n\n if (!d) {\n return <g />\n }\n\n return (\n <rect key={key}\n className={className}\n transform={transform}\n\n height={height}\n width={width}\n x={-width / 2}\n y={-height / 2}\n rx={0}\n ry={0}\n style={styleFn(d)}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n\nexport const chordNodeGenerator =\n (size) =>\n ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n return (\n <path key={key}\n className={className}\n transform={`translate(${size[0] / 2},${size[1] / 2})`}\n\n d={d.d}\n style={styleFn(d, i)}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n }\n\nexport const matrixNodeGenerator = (size, nodes) => {\n const gridSize = Math.min(...size)\n const stepSize = gridSize / (nodes.length + 1)\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n const showText = stepSize > 6\n const showLine = stepSize > 3\n const showRect = stepSize > 0.5\n\n const textProps: {\n textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\"\n fontSize: string\n } = {\n textAnchor: \"end\",\n fontSize: `${stepSize / 2}px`\n }\n const style = styleFn(d, i)\n const renderModeValue = renderMode ? renderMode(d, i) : undefined\n\n return (\n <g key={key} className={className}>\n {showRect && (\n <rect\n x={stepSize / 2}\n y={d.y - stepSize / 2}\n width={gridSize - stepSize}\n height={stepSize}\n style={{ ...style, stroke: \"none\" }}\n />\n )}\n {showRect && (\n <rect\n y={stepSize / 2}\n x={d.y - stepSize / 2}\n height={gridSize - stepSize}\n width={stepSize}\n style={{ ...style, stroke: \"none\" }}\n />\n )}\n {showLine && (\n <line\n stroke=\"black\"\n x1={0}\n x2={gridSize - stepSize / 2}\n y1={d.y - stepSize / 2}\n y2={d.y - stepSize / 2}\n style={style}\n />\n )}\n {showLine && (\n <line\n stroke=\"black\"\n y1={0}\n y2={gridSize - stepSize / 2}\n x1={d.y - stepSize / 2}\n x2={d.y - stepSize / 2}\n style={style}\n />\n )}\n {showLine && i === nodes.length - 1 && (\n <line\n stroke=\"black\"\n x1={0}\n x2={gridSize - stepSize / 2}\n y1={d.y + stepSize / 2}\n y2={d.y + stepSize / 2}\n style={style}\n />\n )}\n {showLine && i === nodes.length - 1 && (\n <line\n stroke=\"black\"\n y1={0}\n y2={gridSize - stepSize / 2}\n x1={d.y + stepSize / 2}\n x2={d.y + stepSize / 2}\n style={style}\n />\n )}\n {showText && (\n <text x={0} y={d.y + stepSize / 5} {...textProps}>\n {d.id}\n </text>\n )}\n {showText && (\n <text\n transform={`translate(${d.y}) rotate(90) translate(0,${\n stepSize / 5\n })`}\n {...textProps}\n y={0}\n >\n {d.id}\n </text>\n )}\n </g>\n )\n }\n}\n\nexport const radialRectNodeGenerator = (size, center, type) => {\n const radialArc = arc()\n const { angleRange = [0, 360] } = type\n const rangePct = angleRange.map((d) => d / 360)\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n radialArc.innerRadius(d.y0 / 2).outerRadius(d.y1 / 2)\n\n return (\n <path key={key}\n transform={`translate(${center})`}\n\n d={radialArc({\n startAngle: adjustedPct(d.x0 / size[0]) * Math.PI * 2,\n endAngle: adjustedPct(d.x1 / size[0]) * Math.PI * 2\n })}\n style={styleFn(d, i)}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n\nexport const radialLabelGenerator = (node, nodei, nodeIDAccessor, size) => {\n const anglePct = (node.x1 + node.x0) / 2 / size[0]\n const nodeLabel = nodeIDAccessor(node, nodei)\n const labelRotate = anglePct > 0.5 ? anglePct * 360 + 90 : anglePct * 360 - 90\n\n return (\n <g transform={`rotate(${labelRotate})`}>\n {typeof nodeLabel === \"string\" ? (\n <text textAnchor=\"middle\" y={5}>\n {nodeLabel}\n </text>\n ) : (\n nodeLabel\n )}\n </g>\n )\n}\n\nexport const hierarchicalRectNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className\n}) => {\n if (!d) {\n return <g />\n }\n //this is repetitious\n return (\n <rect key={key}\n transform={`translate(0,0)`}\n\n width={d.x1 - d.x0}\n height={d.y1 - d.y0}\n x={d.x0}\n y={d.y0}\n rx={0}\n ry={0}\n style={styleFn(d, i)}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n","import * as React from \"react\"\nimport { useEffect, useRef } from \"react\"\nimport { select } from \"d3-selection\"\n\nimport {\n d as glyphD /*, project as glyphProject, mutate as glyphMutate*/\n} from \"d3-glyphedge\"\n\nimport { pathArrows } from \"d3-path-arrows\"\n\nimport {\n curveMonotoneX,\n curveMonotoneY,\n curveBasis,\n line,\n linkHorizontal,\n linkVertical\n} from \"d3-shape\"\nimport { linearRibbon } from \"./SvgHelper\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nimport { gridProps } from \"./nodeGenerators\"\n\nconst curvature = 0.5\n\nconst horizontalDagreLineGenerator = line()\n .curve(curveMonotoneX)\n .x((d) => d.x)\n .y((d) => d.y)\n\nconst verticalDagreLineGenerator = line()\n .curve(curveMonotoneY)\n .x((d) => d.x)\n .y((d) => d.y)\n\nexport function sankeyEdgeSort(a, b, direction) {\n if (a.circular && !b.circular) return -1\n if (b.circular && !a.circular) return 1\n const first = direction === \"down\" ? \"y\" : \"x\"\n const second = direction === \"down\" ? \"x\" : \"y\"\n\n return a.source[first] === b.source[first]\n ? a.sankeyWidth === b.sankeyWidth\n ? a.source[second] - b.source[second]\n : b.sankeyWidth - a.sankeyWidth\n : a.source[first] - b.source[first]\n}\n\nexport const sigmoidLinks = {\n horizontal: linkHorizontal()\n .x((d) => d.x)\n .y((d) => d.y),\n vertical: linkVertical()\n .x((d) => d.x)\n .y((d) => d.y),\n radial: glyphD.lineArc\n}\n\nexport const customEdgeHashD = {\n curve: (d, projection = \"vertical\") => sigmoidLinks[projection](d),\n linearc: (d) => glyphD.lineArc(d),\n ribbon: (d) => glyphD.ribbon(d, d.width),\n arrowhead: (d) =>\n glyphD.arrowHead(d, d.target.nodeSize, d.width, d.width * 1.5),\n halfarrow: (d) =>\n glyphD.halfArrow(d, d.target.nodeSize, d.width, d.width * 1.5),\n nail: (d) => glyphD.nail(d, d.source.nodeSize),\n comet: (d) => glyphD.comet(d, d.target.nodeSize),\n taffy: (d) =>\n glyphD.taffy(\n d,\n d.source.nodeSize / 2,\n d.target.nodeSize / 2,\n (d.source.nodeSize + d.target.nodeSize) / 4\n )\n}\n\nexport const genericLineGenerator = (d) =>\n `M${d.source.x},${d.source.y}L${d.target.x},${d.target.y}`\n\nexport const matrixEdgeGenerator =\n (size, nodes) =>\n ({ d, i, styleFn, renderMode, key, className }) => {\n const gridSize = Math.min(...size) / nodes.length\n const style = styleFn(d, i)\n return (\n <g key={key}>\n <rect\n key={key}\n className={className}\n transform={`translate(${d.source.y},${d.target.y})`}\n {...style}\n style={style}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n {...gridProps(gridSize)}\n />\n </g>\n )\n }\n\nexport const arcEdgeGenerator = (size) => {\n const yAdjust = size[1] / size[0]\n function arcDiagramArc(d) {\n const draw = line().curve(curveBasis)\n const midX = (d.source.x + d.target.x) / 2\n const midY = d.source.x - d.target.x\n return draw([\n [d.source.x, 0],\n [midX, midY * yAdjust],\n [d.target.x, 0]\n ])\n }\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n const style = styleFn(d, i)\n return (\n <path\n key={key}\n className={className}\n transform={`translate(0,${size[1] / 2})`}\n d={arcDiagramArc(d)}\n {...style}\n style={style}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n\nconst ArrowedPath = (props) => {\n const { d, width, edgeLength, circular } = props\n const pathRef = useRef(null)\n\n useEffect(() => {\n if (pathRef?.current) {\n const circularMod = circular ? width : edgeLength\n const arrowHeadSize = Math.max(Math.min(width, circularMod) / 5, 2)\n let arrows = pathArrows()\n .arrowLength(arrowHeadSize * 2.5)\n .gapLength(100)\n .arrowHeadSize(arrowHeadSize)\n .path(d)\n\n select(pathRef.current).selectAll(\"*\").remove()\n\n select(pathRef.current).call(arrows)\n\n select(pathRef.current)\n .selectAll(\":not(.arrow-head)\")\n .style(\"fill\", \"none\")\n .style(\"stroke-width\", arrowHeadSize / 4)\n .style(\"stroke\", \"white\")\n\n select(pathRef.current).selectAll(\".arrow-head\").style(\"fill\", \"white\")\n }\n }, [d])\n\n return <g ref={pathRef} />\n}\n\nexport const sankeyArrowGenerator = (props) => {\n const {\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n\n generatedPath\n } = props\n\n const { showArrows } = d\n\n let arrowPath = \"\"\n if (d.circular) {\n const { circularPathData } = d\n const {\n sourceX,\n sourceY,\n leftFullExtent,\n rightFullExtent,\n verticalFullExtent,\n targetX,\n targetY\n } = circularPathData\n\n arrowPath = `M${sourceX},${sourceY}L${leftFullExtent},${sourceY}L${leftFullExtent},${verticalFullExtent}L${rightFullExtent},${verticalFullExtent}L${rightFullExtent},${targetY}L${targetX},${targetY}`\n } else {\n let x0 = d.source.x1,\n x1 = d.target.x0,\n xi = interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.y0,\n y1 = d.y1\n\n arrowPath = `M${x0},${y0}C${x2},${y0} ${x3},${y1} ${x1},${y1}`\n }\n\n return (\n <React.Fragment key={key}>\n <path\n className={className}\n\n d={generatedPath}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n {showArrows && (\n <ArrowedPath\n d={arrowPath}\n width={d.sankeyWidth}\n edgeLength={Math.abs(d.target.x - d.source.x)}\n circular={d.circular}\n />\n )}\n </React.Fragment>\n )\n}\n\nexport const chordEdgeGenerator =\n (size) =>\n ({ d, i, styleFn, renderMode, key, className }) =>\n (\n <path key={key}\n className={className}\n transform={`translate(${size[0] / 2},${size[1] / 2})`}\n\n d={d.d}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n\nexport const dagreEdgeGenerator = (direction) => {\n const dagreLineGenerator =\n direction === \"LR\" || direction === \"RL\"\n ? horizontalDagreLineGenerator\n : verticalDagreLineGenerator\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (d.ribbon || d.parallelEdges) {\n const ribbonGenerator = linearRibbon()\n\n ribbonGenerator.x((p) => p.x)\n ribbonGenerator.y((p) => p.y)\n ribbonGenerator.r(() => d.weight || 1)\n\n if (d.parallelEdges) {\n const sortedParallelEdges = d.parallelEdges.sort(\n (a, b) => b.weight - a.weight\n )\n return (\n <g key={`${key}`}>\n {ribbonGenerator({\n points: d.points,\n multiple: d.parallelEdges\n }).map((ribbonD, ribbonI) => (\n <path key={`${key}-${ribbonI}`}\n className={className}\n\n d={ribbonD}\n style={styleFn(sortedParallelEdges[ribbonI], i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n ))}\n </g>\n )\n }\n\n return (\n <path key={key}\n className={className}\n\n d={ribbonGenerator(d.points)}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n\n return (\n <path key={key}\n className={className}\n\n d={dagreLineGenerator(d.points)}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n","import { linearRibbon } from \"./SvgHelper\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nconst curvature = 0.5\n\nexport const ribbonLink = (d) => {\n const diff =\n d.direction === \"down\"\n ? Math.abs(d.target.y - d.source.y)\n : Math.abs(d.source.x - d.target.x)\n // const halfWidth = d.width / 2\n const testCoordinates =\n d.direction === \"down\"\n ? [\n {\n x: d.y0,\n y: d.source.y\n },\n {\n x: d.y0,\n y: d.source.y + diff / 3\n },\n {\n x: d.y1,\n y: d.target.y - diff / 3\n },\n {\n x: d.y1,\n y: d.target.y\n }\n ]\n : [\n {\n x: d.source.x0,\n y: d.y0\n },\n {\n x: d.source.x0 + diff / 3,\n y: d.y0\n },\n {\n x: d.target.x0 - diff / 3,\n y: d.y1\n },\n {\n x: d.target.x0,\n y: d.y1\n }\n ]\n\n const linkGenerator = linearRibbon()\n\n linkGenerator.x((d) => d.x)\n linkGenerator.y((d) => d.y)\n linkGenerator.r(() => d.sankeyWidth / 2)\n\n return linkGenerator(testCoordinates)\n}\n\nexport const areaLink = (d) => {\n let x0, x1, x2, x3, y0, y1, xi, y2, y3\n\n if (d.direction === \"down\") {\n x0 = d.y0 - d.sankeyWidth / 2\n x1 = d.y1 - d.sankeyWidth / 2\n x2 = d.y1 + d.sankeyWidth / 2\n x3 = d.y0 + d.sankeyWidth / 2\n y0 = d.source.y1\n y1 = d.target.y0\n xi = interpolateNumber(y0, y1)\n y2 = xi(curvature)\n y3 = xi(1 - curvature)\n\n return `M${x0},${y0}C${x0},${y2} ${x1},${y3} ${x1},${y1}L${x2},${y1}C${x2},${y3} ${x3},${y2} ${x3},${y0}Z`\n }\n ;(x0 = d.source.x1), // eslint-disable-line no-sequences\n (x1 = d.target.x0),\n (xi = interpolateNumber(x0, x1)),\n (x2 = xi(curvature)),\n (x3 = xi(1 - curvature)),\n (y0 = d.y0 - d.sankeyWidth / 2),\n (y1 = d.y1 - d.sankeyWidth / 2),\n (y2 = d.y1 + d.sankeyWidth / 2),\n (y3 = d.y0 + d.sankeyWidth / 2)\n\n return `M${x0},${y0}C${x2},${y0} ${x3},${y1} ${x1},${y1}L${x1},${y2}C${x3},${y2} ${x2},${y3} ${x0},${y3}Z`\n}\n\nexport function circularAreaLink(link) {\n const linkGenerator = linearRibbon()\n\n linkGenerator.x((d) => d.x)\n linkGenerator.y((d) => d.y)\n linkGenerator.r(() => link.sankeyWidth / 2)\n\n const xyForLink =\n link.direction === \"down\"\n ? [\n {\n x: link.circularPathData.sourceY,\n y: link.circularPathData.sourceX\n },\n {\n x: link.circularPathData.sourceY,\n y: link.circularPathData.leftFullExtent\n },\n {\n x: link.circularPathData.verticalFullExtent,\n y: link.circularPathData.leftFullExtent\n },\n {\n x: link.circularPathData.verticalFullExtent,\n y: link.circularPathData.rightFullExtent\n },\n {\n x: link.circularPathData.targetY,\n y: link.circularPathData.rightFullExtent\n },\n {\n x: link.circularPathData.targetY,\n y: link.circularPathData.targetX\n }\n ]\n : [\n {\n x: link.circularPathData.sourceX,\n y: link.circularPathData.sourceY\n },\n {\n x: link.circularPathData.leftFullExtent,\n y: link.circularPathData.sourceY\n },\n {\n x: link.circularPathData.leftFullExtent,\n y: link.circularPathData.verticalFullExtent\n },\n {\n x: link.circularPathData.rightFullExtent,\n y: link.circularPathData.verticalFullExtent\n },\n {\n x: link.circularPathData.rightFullExtent,\n y: link.circularPathData.targetY\n },\n {\n x: link.circularPathData.targetX,\n y: link.circularPathData.targetY\n }\n ]\n\n return linkGenerator(xyForLink)\n}\n","export function topologicalSort(nodesArray, edgesArray) {\n // adapted from https://simplapi.wordpress.com/2015/08/19/detect-graph-cycle-in-javascript/\n const nodes = []\n const nodeMap = new Map()\n for (const edge of edgesArray) {\n if (!edge.source.id || !edge.target.id) {\n return false\n }\n if (!nodeMap.has(edge.source.id)) {\n const newNode = { _id: edge.source.id, links: [] }\n nodeMap.set(edge.source.id, newNode)\n nodes.push(newNode)\n }\n if (!nodeMap.has(edge.target.id)) {\n const newNode = { _id: edge.target.id, links: [] }\n nodeMap.set(edge.target.id, newNode)\n nodes.push(newNode)\n }\n nodeMap.get(edge.source.id).links.push(edge.target.id)\n }\n\n // Test if a node got any icoming edge\n function hasIncomingEdge(list, node) {\n for (let i = 0, l = list.length; i < l; ++i) {\n if (list[i].links.indexOf(node._id) !== -1) {\n return true\n }\n }\n return false\n }\n\n // Kahn Algorithm\n const L = [],\n S = nodes.filter((node) => !hasIncomingEdge(nodes, node))\n\n let n = null\n\n while (S.length) {\n // Remove a node n from S\n n = S.pop()\n // Add n to tail of L\n L.push(n)\n\n let i = n.links.length\n while (i--) {\n // Getting the node associated to the current stored id in links\n const m = nodes[nodes.map((d) => d._id).indexOf(n.links[i])]\n\n // Remove edge e from the graph\n n.links.pop()\n\n if (!hasIncomingEdge(nodes, m)) {\n S.push(m)\n }\n }\n }\n\n // If any of them still got links, there is cycle somewhere\n const nodeWithEdge = nodes.find((node) => node.links.length !== 0)\n\n return nodeWithEdge ? null : L\n}\n\nconst hierarchyDecorator = (hierarchy, hashEntries, nodeIDAccessor, nodes) => {\n if (hierarchy.children) {\n for (const child of hierarchy.children) {\n const theseEntries = hashEntries.filter((entry) => entry[1] === child.id)\n\n for (const entry of theseEntries) {\n const idNode =\n nodes.find((node) => nodeIDAccessor(node) === entry[0]) || {}\n\n const newNode = {\n id: entry[0],\n ...idNode,\n children: [],\n childMap: {}\n }\n\n child.childMap.set(entry[0], newNode)\n child.children.push(newNode)\n }\n if (child.children.length > 0) {\n hierarchyDecorator(child, hashEntries, nodeIDAccessor, nodes)\n }\n }\n }\n}\n\nexport const softStack = (\n edges,\n nodes,\n sourceAccessor,\n targetAccessor,\n nodeIDAccessor\n) => {\n let hierarchy = { id: \"root-generated\", children: [], childMap: new Map() }\n const discoveredHierarchyMap = new Map()\n const targetToSourceMap = new Map()\n let hasLogicalRoot = true\n let isHierarchical = true\n\n for (let i = 0; i < edges.length; i++) {\n const edge = edges[i]\n\n const source = sourceAccessor(edge)\n const target = targetAccessor(edge)\n const sourceID =\n typeof source === \"object\" ? nodeIDAccessor(source) : source\n const targetID =\n typeof target === \"object\" ? nodeIDAccessor(target) : target\n\n targetToSourceMap.set(targetID, sourceID)\n\n if (!discoveredHierarchyMap.has(sourceID)) {\n discoveredHierarchyMap.set(sourceID, targetID)\n } else {\n isHierarchical = false\n break\n }\n }\n\n if (isHierarchical) {\n const hashEntries: Array<string[]> = []\n for (const entry of discoveredHierarchyMap) {\n hashEntries.push(entry)\n const target = entry[1]\n if (!discoveredHierarchyMap.has(target)) {\n discoveredHierarchyMap.set(target, \"root-generated\")\n const idNode =\n nodes.find((node) => nodeIDAccessor(node) === target) || {}\n\n const newNode = {\n id: target,\n ...idNode,\n children: [],\n childMap: new Map()\n }\n hierarchy.childMap.set(target, newNode)\n hierarchy.children.push(newNode)\n }\n }\n\n hierarchyDecorator(hierarchy, hashEntries, nodeIDAccessor, nodes)\n\n nodes.forEach((node) => {\n const nodeID = nodeIDAccessor(node)\n if (\n !discoveredHierarchyMap.has(nodeID) &&\n !targetToSourceMap.has(nodeID)\n ) {\n hierarchy.children.push({\n id: nodeID,\n ...node,\n children: [],\n childMap: new Map()\n })\n }\n })\n\n if (hierarchy.children.length === 1) {\n hierarchy = hierarchy.children[0]\n hasLogicalRoot = false\n }\n\n return { hierarchy, isHierarchical: true, hasLogicalRoot }\n }\n\n return { hierarchy: {}, isHierarchical: false, hasLogicalRoot: false }\n}\n","import * as React from \"react\"\n\nimport {\n sankeyEdgeSort,\n customEdgeHashD,\n genericLineGenerator\n} from \"./edgeGenerators\"\n\nimport { gridProps } from \"./nodeGenerators\"\n\n// Re-export everything from the split modules so existing imports continue to work\nexport {\n circleNodeGenerator,\n sankeyNodeGenerator,\n chordNodeGenerator,\n matrixNodeGenerator,\n radialRectNodeGenerator,\n radialLabelGenerator,\n hierarchicalRectNodeGenerator\n} from \"./nodeGenerators\"\n\nexport {\n matrixEdgeGenerator,\n arcEdgeGenerator,\n sankeyArrowGenerator,\n chordEdgeGenerator,\n dagreEdgeGenerator\n} from \"./edgeGenerators\"\n\nexport { ribbonLink, areaLink, circularAreaLink } from \"./sankeyLinks\"\n\nexport { topologicalSort, softStack } from \"./graphAlgorithms\"\n\nexport const drawNodes = ({\n data,\n renderKeyFn,\n customMark,\n styleFn,\n classFn,\n renderMode,\n canvasDrawing,\n canvasRenderFn,\n\n networkSettings\n}) => {\n const markGenerator = customMark\n const renderedData = []\n\n if (networkSettings.type === \"matrix\" && canvasRenderFn) {\n return\n }\n\n if (networkSettings) {\n let i = 0\n for (const d of data) {\n const generatedMark = markGenerator({\n d,\n i,\n renderKeyFn,\n styleFn,\n classFn,\n renderMode,\n key: renderKeyFn ? renderKeyFn(d, i) : d.id || `node-${i}`,\n className: `node ${classFn(d, i)}`,\n transform: `translate(${d.x},${d.y})`\n })\n\n if (canvasRenderFn && canvasRenderFn(d, i) === true) {\n const { transform = \"translate(0,0)\" } = generatedMark.props\n const [x, y] = transform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n const canvasNode = {\n baseClass: \"frame-piece\",\n tx: x,\n ty: y,\n d,\n i,\n markProps: {\n markType: typeof generatedMark.type === \"string\" ? generatedMark.type : generatedMark.props.markType,\n ...generatedMark.props\n },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasNode)\n } else {\n // Use the already generated mark\n renderedData.push(generatedMark)\n }\n i++\n }\n }\n return renderedData\n}\n\nexport const drawEdges = (settings) => {\n const {\n data: baseData,\n renderKeyFn,\n customMark,\n styleFn,\n classFn,\n renderMode,\n canvasRenderFn,\n canvasDrawing,\n type,\n\n networkSettings,\n projection,\n numberOfNodes,\n size\n } = settings\n\n const {\n type: networkType,\n direction,\n edgeSort = sankeyEdgeSort\n } = networkSettings\n const data =\n networkType === \"sankey\"\n ? baseData.sort((a, b) => edgeSort(a, b, direction))\n : baseData\n\n let dGenerator = genericLineGenerator\n const renderedData = []\n if (canvasRenderFn && networkSettings.type === \"matrix\") {\n let i = 0\n const gridSize = Math.floor(Math.min(...size) / numberOfNodes)\n for (const d of data) {\n const canvasEdge = {\n baseClass: \"frame-piece\",\n tx: d.source.y,\n ty: d.target.y,\n d,\n i,\n markProps: { markType: \"rect\", ...gridProps(gridSize) },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasEdge)\n i++\n }\n } else if (customMark) {\n // CUSTOM MARK IMPLEMENTATION\n if (type) {\n if (typeof type === \"function\") {\n dGenerator = type\n } else if (customEdgeHashD[type]) {\n dGenerator = (d) => customEdgeHashD[type](d, projection)\n }\n }\n let i = 0\n for (const d of data) {\n const renderedCustomMark = customMark({\n d,\n i,\n renderKeyFn,\n styleFn,\n classFn,\n renderMode,\n key: renderKeyFn ? renderKeyFn(d, i) : `edge-${i}`,\n className: `${classFn(d, i)} edge`,\n transform: `translate(${d.x},${d.y})`,\n\n generatedPath: dGenerator(d)\n })\n if (\n renderedCustomMark &&\n renderedCustomMark.props &&\n (renderedCustomMark.props.markType !== \"path\" ||\n renderedCustomMark.props.d)\n ) {\n renderedData.push(renderedCustomMark)\n }\n i++\n }\n } else {\n if (type) {\n if (typeof type === \"function\") {\n dGenerator = type\n } else if (customEdgeHashD[type]) {\n dGenerator = (d) => customEdgeHashD[type](d, projection)\n }\n }\n let i = 0\n for (const d of data) {\n const renderedD = dGenerator(d)\n\n if (renderedD && canvasRenderFn && canvasRenderFn(d, i) === true) {\n const canvasEdge = {\n baseClass: \"frame-piece\",\n tx: d.x,\n ty: d.y,\n d,\n i,\n markProps: { markType: \"path\", d: renderedD },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasEdge)\n } else if (renderedD) {\n renderedData.push(\n <path key={renderKeyFn ? renderKeyFn(d, i) : `edge-${i}`}\n\n className={`${classFn(d)} edge`}\n d={renderedD}\n style={styleFn(d, i)}\n tabIndex={-1}\n role=\"img\"\n aria-label={`connection from ${d.source.id} to ${d.target.id}`}\n />\n )\n }\n }\n }\n\n return renderedData\n}\n","export const emptyArray = []\n\nexport const baseNodeProps = {\n id: undefined,\n degree: 0,\n inDegree: 0,\n outDegree: 0,\n x: 0,\n y: 0,\n x1: 0,\n x0: 0,\n y1: 0,\n y0: 0,\n height: 0,\n width: 0,\n radius: 0,\n r: 0,\n direction: undefined,\n textHeight: 0,\n textWidth: 0,\n fontSize: 0,\n scale: 1,\n nodeSize: 0,\n component: -99,\n shapeNode: false\n}\n\nexport const baseNetworkSettings = {\n hierarchicalNetwork: false\n}\n\nexport const baseGraphSettings = {\n nodeHash: new Map(),\n edgeHash: new Map(),\n nodes: [],\n edges: [],\n hierarchicalNetwork: false,\n type: \"force\"\n}\n","import {\n tree,\n pack,\n cluster,\n treemap,\n partition\n} from \"d3-hierarchy\"\nimport { NetworkLayoutHandler, NetworkLayoutMap } from \"./types\"\n\nexport const hierarchicalTypeHash = {\n dendrogram: tree,\n tree,\n circlepack: pack,\n cluster,\n treemap,\n partition\n}\n\n// Hierarchy layouts don't use the standard layout handler pattern because\n// they are applied during data loading (via hierarchicalTypeHash), not during\n// the layout dispatch phase. These entries exist so the layout map recognizes\n// these types as valid and falls through to the default node positioning.\nconst hierarchyFallthrough: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges\n}) => {\n projectedNodes.forEach((node) => {\n node.x = node.x === undefined ? (node.x0 + node.x1) / 2 : node.x\n node.y = node.y === undefined ? node.y0 : node.y\n })\n\n return { projectedNodes, projectedEdges }\n}\n\nexport const hierarchyLayouts: NetworkLayoutMap = {\n tree: hierarchyFallthrough,\n dendrogram: hierarchyFallthrough,\n cluster: hierarchyFallthrough,\n treemap: hierarchyFallthrough,\n circlepack: hierarchyFallthrough,\n partition: hierarchyFallthrough\n}\n","import {\n sankeyCircular,\n sankeyLeft,\n sankeyRight,\n sankeyCenter,\n sankeyJustify\n} from \"d3-sankey-circular\"\nimport { NetworkLayoutHandler } from \"./types\"\n\nexport const sankeyOrientHash = {\n left: sankeyLeft,\n right: sankeyRight,\n center: sankeyCenter,\n justify: sankeyJustify\n}\n\nexport const sankeyLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n nodeIDAccessor\n}) => {\n const {\n orient = \"center\",\n iterations = 100,\n nodePadding,\n nodePaddingRatio = nodePadding ? undefined : 0.5,\n nodeWidth = networkSettings.type === \"flowchart\" ? 2 : 24,\n customSankey,\n direction = \"right\",\n showArrows = false\n } = networkSettings\n\n const sankeyOrient = sankeyOrientHash[orient]\n\n const actualSankey = customSankey || sankeyCircular\n\n let frameExtent = [[0, 0], adjustedSize]\n\n if (\n networkSettings.direction === \"up\" ||\n networkSettings.direction === \"down\"\n ) {\n frameExtent = [\n [0, 0],\n [adjustedSize[1], adjustedSize[0]]\n ]\n }\n\n // CREATE FAKE EDGES TO GET UP TO PASSED VALUE\n let resultEdges = projectedEdges\n const generateEphemeralEdges = projectedNodes.some(\n (n) => !n.createdByFrame && n.value > 0\n )\n if (generateEphemeralEdges) {\n const edgeValueMap = new Map()\n for (const edge of projectedEdges) {\n if (!edgeValueMap.has(edge.source.id)) {\n edgeValueMap.set(edge.source.id, {\n source: 0,\n target: 0\n })\n }\n if (!edgeValueMap.has(edge.target.id)) {\n edgeValueMap.set(edge.target.id, {\n source: 0,\n target: 0\n })\n }\n edgeValueMap.get(edge.source.id).source += edge.value\n edgeValueMap.get(edge.target.id).target += edge.value\n }\n for (const node of projectedNodes) {\n if (!node.createdByFrame) {\n let maxEdgeValue = 0\n if (edgeValueMap.has(node.id)) {\n maxEdgeValue = Math.max(\n edgeValueMap.get(node.id).source,\n edgeValueMap.get(node.id).target\n )\n }\n if (node.value > maxEdgeValue) {\n projectedEdges.push({\n source: node,\n target: node,\n value: node.value - maxEdgeValue,\n ephemeral: true\n })\n }\n }\n }\n }\n\n const frameSankey = actualSankey()\n .extent(frameExtent)\n .links(projectedEdges)\n .nodes(projectedNodes)\n .nodeAlign(sankeyOrient)\n .nodeId(nodeIDAccessor)\n .nodeWidth(nodeWidth)\n .iterations(iterations)\n\n if (generateEphemeralEdges) {\n resultEdges = projectedEdges.filter((e) => !e.ephemeral)\n }\n\n if (frameSankey.nodePaddingRatio && nodePaddingRatio) {\n frameSankey.nodePaddingRatio(nodePaddingRatio)\n } else if (nodePadding) {\n frameSankey.nodePadding(nodePadding)\n }\n\n frameSankey()\n\n projectedNodes.forEach((d) => {\n d.height = d.y1 - d.y0\n d.width = d.x1 - d.x0\n d.x = d.x0 + d.width / 2\n d.y = d.y0 + d.height / 2\n d.radius = d.height / 2\n d.direction = direction\n })\n\n const finalEdges = generateEphemeralEdges ? resultEdges : projectedEdges\n finalEdges.forEach((d) => {\n d.showArrows = showArrows\n d.sankeyWidth = d.width\n d.direction = direction\n d.width = undefined\n })\n\n return { projectedNodes, projectedEdges: finalEdges }\n}\n","import {\n hierarchicalRectNodeGenerator,\n radialRectNodeGenerator,\n chordNodeGenerator,\n chordEdgeGenerator,\n matrixNodeGenerator,\n matrixEdgeGenerator,\n arcEdgeGenerator,\n sankeyNodeGenerator,\n circleNodeGenerator,\n dagreEdgeGenerator,\n sankeyArrowGenerator\n} from \"../svg/networkDrawing\"\n\n// Re-export from new locations for backwards compatibility\nexport { hierarchicalTypeHash } from \"./layouts/hierarchyLayout\"\nexport { sankeyOrientHash } from \"./layouts/sankeyLayout\"\n\nexport function determineNodeIcon(baseCustomNodeIcon, networkSettings, size, nodes) {\n if (baseCustomNodeIcon) return baseCustomNodeIcon\n\n const center = [size[0] / 2, size[1] / 2]\n\n switch (networkSettings.type) {\n case \"sankey\":\n return sankeyNodeGenerator\n case \"partition\":\n return networkSettings.projection === \"radial\"\n ? radialRectNodeGenerator(size, center, networkSettings)\n : hierarchicalRectNodeGenerator\n case \"treemap\":\n return networkSettings.projection === \"radial\"\n ? radialRectNodeGenerator(size, center, networkSettings)\n : hierarchicalRectNodeGenerator\n case \"circlepack\":\n return circleNodeGenerator\n case \"chord\":\n return chordNodeGenerator(size)\n case \"dagre\":\n return hierarchicalRectNodeGenerator\n case \"matrix\":\n return matrixNodeGenerator(size, nodes)\n }\n\n return circleNodeGenerator\n}\n\nexport function determineEdgeIcon({\n baseCustomEdgeIcon,\n networkSettings,\n size,\n graph,\n nodes\n}) {\n if (baseCustomEdgeIcon) return baseCustomEdgeIcon\n switch (networkSettings.type) {\n case \"partition\":\n return () => null\n case \"treemap\":\n return () => null\n case \"circlepack\":\n return () => null\n case \"chord\":\n return chordEdgeGenerator(size)\n case \"matrix\":\n return matrixEdgeGenerator(size, nodes)\n case \"arc\":\n return arcEdgeGenerator(size)\n case \"dagre\":\n if (graph) return dagreEdgeGenerator(graph.graph().rankdir)\n case \"sankey\":\n return sankeyArrowGenerator\n }\n return undefined\n}\n\nexport const basicMiddle = (d) => ({\n edge: d,\n x: (d.source.x + d.target.x) / 2,\n y: (d.source.y + d.target.y) / 2\n})\n\nexport const edgePointHash = {\n sankey: (d) => ({\n edge: d,\n x: (d.source.x1 + d.target.x0) / 2,\n y: d.circularPathData\n ? d.circularPathData.verticalFullExtent\n : ((d.y0 + d.y1) / 2 + (d.y0 + d.y1) / 2) / 2\n }),\n force: basicMiddle,\n tree: basicMiddle,\n cluster: basicMiddle,\n matrix: (d) => {\n return {\n edge: d,\n x: d.source.y,\n y: d.target.y\n }\n }\n}\n\nexport const hierarchicalProjectable = {\n partition: true,\n cluster: true,\n tree: true,\n dendrogram: true\n}\n\nexport const radialProjectable = {\n partition: true,\n cluster: true,\n tree: true,\n dendrogram: true\n}\n","import { hierarchy } from \"d3-hierarchy\"\n\nexport function recursiveIDAccessor(idAccessor, node, accessorString) {\n if (node.parent) {\n accessorString = `${accessorString}-${recursiveIDAccessor(\n idAccessor,\n { ...node.parent, ...node.parent.data },\n accessorString\n )}`\n }\n return `${accessorString}-${idAccessor({ ...node, ...node.data })}`\n}\n\nexport const defaultHierarchicalIDAccessor = (d) => d.id || d.descendantIndex\n\nexport const nodesEdgesFromHierarchy = (\n baseRootNode,\n idAccessor = defaultHierarchicalIDAccessor\n) => {\n const edges = []\n const nodes = []\n\n const rootNode = baseRootNode.descendants\n ? baseRootNode\n : hierarchy(baseRootNode)\n\n const descendants = rootNode.descendants()\n\n let i = 0\n\n for (const node of descendants) {\n node.descendantIndex = i\n i++\n }\n\n for (const node of descendants) {\n const generatedID = `${\n idAccessor({\n ...node,\n ...node.data\n }) ?? defaultHierarchicalIDAccessor(node)\n }-${\n node.parent\n ? recursiveIDAccessor(\n idAccessor,\n { ...node.parent, ...node.parent.data },\n \"\"\n ) ?? node.parent.name\n : \"root\"\n }`\n\n const dataD = Object.assign(node, node.data || {}, {\n hierarchicalID: generatedID\n })\n nodes.push(dataD)\n if (node.parent !== null) {\n const dataParent = Object.assign(node.parent, node.parent.data || {})\n edges.push({\n source: dataParent,\n target: dataD,\n depth: node.depth,\n weight: 1,\n value: 1,\n _NWFEdgeKey: generatedID\n })\n }\n }\n\n return { edges, nodes }\n}\n\nexport function breadthFirstCompontents(baseNodes, hash) {\n const componentMap = {\n \"0\": { componentNodes: [], componentEdges: [] }\n }\n const components = [componentMap[\"0\"]]\n\n let componentID = 0\n\n traverseNodesBF(baseNodes, true)\n\n function traverseNodesBF(nodes, top) {\n for (const node of nodes) {\n const hashNode = hash.get(node)\n if (!hashNode) {\n componentMap[\"0\"].componentNodes.push(node)\n } else if (hashNode.component === -99) {\n if (top === true) {\n componentID++\n componentMap[componentID] = {\n componentNodes: [],\n componentEdges: []\n }\n components.push(componentMap[componentID])\n }\n\n hashNode.component = componentID\n componentMap[componentID].componentNodes.push(node)\n componentMap[componentID].componentEdges.push(...hashNode.edges)\n const traversibleNodes = [...hashNode.connectedNodes]\n traverseNodesBF(traversibleNodes, hash)\n }\n }\n }\n\n return components.sort(\n (a, b) => b.componentNodes.length - a.componentNodes.length\n )\n}\n\nexport const matrixify = ({ edgeHash, nodes, edgeWidthAccessor, nodeIDAccessor }) => {\n const matrix = []\n for (const nodeSource of nodes) {\n const nodeSourceID = nodeIDAccessor(nodeSource)\n const sourceRow = []\n matrix.push(sourceRow)\n for (const nodeTarget of nodes) {\n const nodeTargetID = nodeIDAccessor(nodeTarget)\n const theEdge = edgeHash.get(`${nodeSourceID}|${nodeTargetID}`)\n if (theEdge) {\n sourceRow.push(edgeWidthAccessor(theEdge))\n } else {\n sourceRow.push(0)\n }\n }\n }\n return matrix\n}\n","import * as React from \"react\"\n\nimport { scaleLinear } from \"d3-scale\"\n\nimport { min, max } from \"d3-array\"\n\nimport {\n TitleType\n} from \"../svg/frameFunctions\"\n\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\n\nimport { NetworkPipelineCache } from \"../data/networkPipelineCache\"\n\nimport {\n drawNodes,\n drawEdges,\n softStack,\n areaLink,\n ribbonLink,\n circularAreaLink,\n radialLabelGenerator\n} from \"../svg/networkDrawing\"\n\nimport { hierarchy } from \"d3-hierarchy\"\n\nimport {\n NetworkFrameProps,\n NetworkFrameState,\n NetworkSettingsType,\n NodeType\n} from \"../types/networkTypes\"\n\nimport { NetworkLayoutMap } from \"./layouts/types\"\n\nimport { baseNodeProps, baseNetworkSettings, baseGraphSettings, emptyArray } from \"./networkDefaults\"\nimport { determineNodeIcon, determineEdgeIcon, basicMiddle, edgePointHash, hierarchicalProjectable, radialProjectable } from \"./networkLayoutHelpers\"\nimport { hierarchicalTypeHash } from \"./layouts/hierarchyLayout\"\nimport { recursiveIDAccessor, defaultHierarchicalIDAccessor, nodesEdgesFromHierarchy } from \"./hierarchyUtils\"\n\nexport { nodesEdgesFromHierarchy } from \"./hierarchyUtils\"\n\nexport const calculateNetworkFrame = (\n currentProps: NetworkFrameProps,\n prevState: NetworkFrameState,\n cache: NetworkPipelineCache,\n layoutMap?: NetworkLayoutMap\n) => {\n const {\n graph,\n nodes = Array.isArray(graph) || typeof graph === \"function\"\n ? emptyArray\n : (graph && graph.nodes) || emptyArray,\n edges = typeof graph === \"function\"\n ? emptyArray\n : Array.isArray(graph)\n ? graph\n : (graph && graph.edges) || emptyArray,\n networkType,\n size,\n nodeStyle,\n nodeClass,\n canvasNodes,\n edgeStyle,\n edgeClass,\n canvasEdges,\n nodeRenderMode,\n edgeRenderMode,\n nodeLabels,\n title: baseTitle,\n margin: baseMargin,\n hoverAnnotation,\n customNodeIcon: baseCustomNodeIcon,\n customEdgeIcon: baseCustomEdgeIcon,\n filterRenderedNodes\n } = currentProps\n\n let { edgeType } = currentProps\n\n let networkSettings: NetworkSettingsType\n\n const nodeHierarchicalIDFill = {}\n let networkSettingsKeys = [\"type\"]\n\n if (typeof networkType === \"string\") {\n networkSettings = {\n type: networkType,\n ...baseNetworkSettings,\n graphSettings: baseGraphSettings\n }\n } else {\n if (networkType) networkSettingsKeys = Object.keys(networkType)\n\n networkSettings = {\n type: \"force\",\n ...baseNetworkSettings,\n ...networkType,\n graphSettings: baseGraphSettings\n }\n }\n\n if (\n networkSettings.projection === \"vertical\" &&\n networkSettings.type === \"sankey\"\n ) {\n networkSettings.direction = \"down\"\n }\n\n networkSettingsKeys.push(\"height\", \"width\")\n\n const title =\n typeof baseTitle === \"object\" &&\n !React.isValidElement(baseTitle) &&\n baseTitle !== null\n ? (baseTitle as TitleType)\n : ({ title: baseTitle, orient: \"top\" } as TitleType)\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(baseMargin, title, size)\n\n networkSettings.graphSettings.nodes = nodes\n networkSettings.graphSettings.edges = edges\n networkSettings.graphSettings.filterRenderedNodes = filterRenderedNodes\n\n let { edgeHash, nodeHash } = networkSettings.graphSettings\n\n const createPointLayer =\n networkSettings.type === \"treemap\" ||\n networkSettings.type === \"partition\" ||\n networkSettings.type === \"sankey\"\n\n const cachedAccessors = cache.accessorConversions(\n currentProps.nodeIDAccessor,\n currentProps.sourceAccessor,\n currentProps.targetAccessor,\n currentProps.nodeSizeAccessor,\n currentProps.edgeWidthAccessor\n )\n\n const nodeIDAccessor = cachedAccessors.nodeIDAccessor\n const sourceAccessor = cachedAccessors.sourceAccessor\n const targetAccessor = cachedAccessors.targetAccessor\n const nodeSizeAccessor: (args?: Record<string, any>) => number = cachedAccessors.nodeSizeAccessor as (args?: Record<string, any>) => number\n const edgeWidthAccessor = cachedAccessors.edgeWidthAccessor\n const { nodeStyleFn, nodeClassFn, nodeRenderModeFn, nodeCanvasRenderFn } = cache.nodeStyleFns(\n nodeStyle, nodeClass, nodeRenderMode, canvasNodes\n )\n\n let { projectedNodes, projectedEdges } = prevState\n\n const isHierarchical =\n typeof networkSettings.type === \"string\" &&\n hierarchicalTypeHash[networkSettings.type]\n\n const changedData =\n !prevState.projectedNodes ||\n !prevState.projectedEdges ||\n prevState.graphSettings.nodes !== nodes ||\n prevState.graphSettings.edges !== edges ||\n isHierarchical ||\n prevState.graphSettings.filterRenderedNodes !== filterRenderedNodes\n\n if (networkSettings.type === \"dagre\") {\n const dagreGraph = graph as {\n nodes: Function\n edges: Function\n node: Function\n edge: Function\n }\n const dagreNodeMap = new Map()\n projectedNodes = dagreGraph.nodes().map((n) => {\n const baseNode = dagreGraph.node(n)\n const dagreNode = {\n ...baseNode,\n x0: baseNode.x - baseNode.width / 2,\n x1: baseNode.x + baseNode.width / 2,\n y0: baseNode.y - baseNode.height / 2,\n y1: baseNode.y + baseNode.height / 2,\n id: n,\n shapeNode: true,\n sourceLinks: [],\n targetLinks: []\n }\n dagreNodeMap.set(n, dagreNode)\n return dagreNode\n })\n projectedEdges = dagreGraph.edges().map((e) => {\n const dagreEdge = dagreGraph.edge(e)\n const baseEdge = {\n ...dagreEdge,\n points: dagreEdge.points.map((d) => ({ ...d }))\n }\n baseEdge.source = projectedNodes.find((p) => p.id === e.v)\n baseEdge.target = projectedNodes.find((p) => p.id === e.w)\n baseEdge.points.unshift({ x: baseEdge.source.x, y: baseEdge.source.y })\n baseEdge.points.push({ x: baseEdge.target.x, y: baseEdge.target.y })\n dagreNodeMap.get(e.v).targetLinks.push(baseEdge)\n dagreNodeMap.get(e.w).sourceLinks.push(baseEdge)\n return baseEdge\n })\n } else if (changedData) {\n const previousNodes = projectedNodes\n edgeHash = new Map()\n nodeHash = new Map()\n networkSettings.graphSettings.edgeHash = edgeHash\n networkSettings.graphSettings.nodeHash = nodeHash\n projectedNodes = []\n projectedEdges = []\n const fixFunction =\n typeof networkSettings.fixExistingNodes === \"function\"\n ? networkSettings.fixExistingNodes\n : networkSettings.fixExistingNodes\n ? () => true\n : false\n nodes.forEach((node) => {\n const projectedNode = { ...node }\n const id = nodeIDAccessor(projectedNode)\n const existingNode = previousNodes.find((prevNode) => prevNode.id === id)\n\n const equivalentOldNode = existingNode || { x: undefined, y: undefined }\n nodeHash.set(id, projectedNode)\n nodeHash.set(node, projectedNode)\n projectedNodes.push(projectedNode)\n projectedNode.id = id\n projectedNode.inDegree = 0\n projectedNode.outDegree = 0\n projectedNode.degree = 0\n projectedNode.x = equivalentOldNode.x\n projectedNode.y = equivalentOldNode.y\n if (existingNode && fixFunction && fixFunction(existingNode)) {\n projectedNode.fx = existingNode.x\n projectedNode.fy = existingNode.y\n }\n })\n\n let operationalEdges = edges\n let baseEdges = edges\n\n if (isHierarchical && Array.isArray(edges)) {\n const createdHierarchicalData = softStack(\n edges,\n nodes,\n sourceAccessor,\n targetAccessor,\n nodeIDAccessor\n )\n\n if (createdHierarchicalData.isHierarchical) {\n baseEdges = createdHierarchicalData.hierarchy\n projectedNodes = []\n } else {\n console.error(\n \"You've sent an edge list that is not strictly hierarchical (there are nodes with multiple parents) defaulting to force-directed network layout\"\n )\n networkSettings.type = \"force\"\n }\n }\n\n if (!Array.isArray(baseEdges)) {\n networkSettings.hierarchicalNetwork = true\n const rootNode = hierarchy(baseEdges, networkSettings.hierarchyChildren)\n\n rootNode.sum(networkSettings.hierarchySum || ((d) => d.value))\n\n if (isHierarchical) {\n const layout = networkSettings.layout || isHierarchical\n const hierarchicalLayout = layout()\n const networkSettingKeys = Object.keys(networkSettings)\n if (\n (networkSettings.type === \"dendrogram\" ||\n networkSettings.type === \"tree\" ||\n networkSettings.type === \"cluster\") &&\n hierarchicalLayout.separation\n ) {\n hierarchicalLayout.separation(\n (a, b) =>\n (nodeSizeAccessor({ ...a, ...a.data }) || 1) +\n (networkSettings.nodePadding || 0) +\n (nodeSizeAccessor({ ...b, ...b.data }) || 1)\n )\n }\n\n networkSettingKeys.forEach((key) => {\n if (hierarchicalLayout[key]) {\n hierarchicalLayout[key](networkSettings[key])\n }\n })\n const layoutSize =\n networkSettings.projection === \"horizontal\" && isHierarchical\n ? [adjustedSize[1], adjustedSize[0]]\n : adjustedSize\n if (!networkSettings.nodeSize && hierarchicalLayout.size) {\n hierarchicalLayout.size(layoutSize)\n }\n\n hierarchicalLayout(rootNode)\n }\n\n operationalEdges = nodesEdgesFromHierarchy(rootNode, nodeIDAccessor).edges\n }\n\n baseNodeProps.shapeNode = createPointLayer\n if (Array.isArray(operationalEdges)) {\n operationalEdges.forEach((edge) => {\n const source = sourceAccessor(edge)\n const target = targetAccessor(edge)\n const sourceTarget = [source, target]\n sourceTarget.forEach((nodeDirection) => {\n if (!nodeHash.get(nodeDirection)) {\n const nodeObject: NodeType =\n typeof nodeDirection === \"object\"\n ? {\n ...baseNodeProps,\n ...nodeDirection\n }\n : {\n ...baseNodeProps,\n id: nodeDirection,\n createdByFrame: true\n }\n\n const nodeIDValue = nodeObject.id || nodeIDAccessor(nodeObject)\n nodeHierarchicalIDFill[nodeIDValue]\n ? (nodeHierarchicalIDFill[nodeIDValue] += 1)\n : (nodeHierarchicalIDFill[nodeIDValue] = 1)\n\n if (!nodeObject.id) {\n const nodeSuffix =\n nodeHierarchicalIDFill[nodeIDValue] === 1\n ? \"\"\n : `-${nodeHierarchicalIDFill[nodeIDValue]}`\n nodeObject.id = `${nodeIDValue}${nodeSuffix}`\n }\n\n nodeHash.set(nodeDirection, nodeObject)\n\n projectedNodes.push(nodeObject)\n }\n })\n\n const edgeWeight = edge.weight || 1\n\n const sourceNode = nodeHash.get(source)\n const targetNode = nodeHash.get(target)\n\n targetNode.inDegree += edgeWeight\n sourceNode.outDegree += edgeWeight\n targetNode.degree += edgeWeight\n sourceNode.degree += edgeWeight\n\n const edgeKey = `${nodeIDAccessor(sourceNode) || source}|${\n nodeIDAccessor(targetNode) || target\n }`\n const newEdge = Object.assign({}, edge, {\n source: nodeHash.get(source),\n target: nodeHash.get(target)\n })\n edgeHash.set(edgeKey, newEdge)\n projectedEdges.push(newEdge)\n if (networkSettings.type === \"matrix\") {\n projectedEdges.push({\n ...newEdge,\n source: newEdge.target,\n target: newEdge.source\n })\n }\n })\n }\n } else {\n edgeHash = new Map()\n networkSettings.graphSettings.edgeHash = edgeHash\n projectedEdges.forEach((edge) => {\n const edgeSource =\n typeof edge.source === \"string\"\n ? edge.source\n : nodeIDAccessor(edge.source)\n const edgeTarget =\n typeof edge.target === \"string\"\n ? edge.target\n : nodeIDAccessor(edge.target)\n\n const edgeKey = `${edgeSource}|${edgeTarget}`\n edgeHash.set(edgeKey, edge)\n })\n }\n\n const customNodeIcon = determineNodeIcon(\n baseCustomNodeIcon,\n networkSettings,\n adjustedSize,\n projectedNodes\n )\n\n const customEdgeIcon = determineEdgeIcon({\n baseCustomEdgeIcon,\n networkSettings,\n size: adjustedSize,\n nodes: projectedNodes,\n graph\n })\n\n networkSettings.width = size[0]\n networkSettings.height = size[1]\n\n let networkSettingsChanged = false\n\n networkSettingsKeys.forEach((key) => {\n if (\n key !== \"edgeType\" &&\n key !== \"graphSettings\" &&\n networkSettings[key] !== prevState.graphSettings[key]\n ) {\n networkSettingsChanged = true\n }\n })\n\n //Support bubble chart with circle pack and with force\n if (networkSettings.type === \"sankey\") {\n edgeType = (d) =>\n d.circular\n ? circularAreaLink(d)\n : edgeType === \"angled\"\n ? ribbonLink(d)\n : areaLink(d)\n } else if (isHierarchical) {\n projectedNodes.forEach((node) => {\n if (createPointLayer) {\n node.x = (node.x0 + node.x1) / 2\n node.y = (node.y0 + node.y1) / 2\n }\n if (\n typeof networkSettings.type === \"string\" &&\n hierarchicalProjectable[networkSettings.type] &&\n networkSettings.projection === \"horizontal\"\n ) {\n const ox = node.x\n node.x = node.y\n node.y = ox\n\n if (createPointLayer) {\n const ox0 = node.x0\n const ox1 = node.x1\n node.x0 = node.y0\n node.x1 = node.y1\n node.y0 = ox0\n node.y1 = ox1\n }\n } else if (\n typeof networkSettings.type === \"string\" &&\n radialProjectable[networkSettings.type] &&\n networkSettings.projection === \"radial\"\n ) {\n const radialPoint =\n node.depth === 0\n ? [adjustedSize[0] / 2, adjustedSize[1] / 2]\n : pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n node.x / adjustedSize[0],\n node.y / 2\n )\n node.x = radialPoint[0]\n node.y = radialPoint[1]\n } else {\n node.x = node.x\n node.y = node.y\n if (createPointLayer) {\n node.x0 = node.x0\n node.x1 = node.x1\n node.y0 = node.y0\n node.y1 = node.y1\n }\n }\n })\n }\n\n if (\n networkSettings.type !== \"static\" &&\n (changedData || networkSettingsChanged)\n ) {\n let components = [\n {\n componentNodes: projectedNodes,\n componentEdges: projectedEdges\n }\n ]\n\n const layoutType = typeof networkSettings.type === \"string\" ? networkSettings.type : \"custom\"\n const handler = layoutMap?.[layoutType]\n\n if (handler) {\n const result = handler({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n edgeHash,\n nodeIDAccessor,\n edgeWidthAccessor,\n nodeSizeAccessor,\n size\n })\n projectedNodes = result.projectedNodes\n projectedEdges = result.projectedEdges\n if (result.components) components = result.components\n } else if (typeof networkSettings.type === \"function\") {\n networkSettings.type({\n nodes: projectedNodes,\n edges: projectedEdges\n })\n } else {\n projectedNodes.forEach((node) => {\n node.x = node.x === undefined ? (node.x0 + node.x1) / 2 : node.x\n node.y = node.y === undefined ? node.y0 : node.y\n })\n }\n\n prevState.graphSettings.nodes = currentProps.nodes\n prevState.graphSettings.edges = currentProps.edges\n }\n\n //filter out user-defined nodes\n projectedNodes = projectedNodes.filter(filterRenderedNodes)\n\n projectedEdges = projectedEdges.filter(\n (d) =>\n projectedNodes.indexOf(d.target) !== -1 &&\n projectedNodes.indexOf(d.source) !== -1\n )\n\n if (networkSettings.direction === \"flip\") {\n projectedNodes.forEach((node) => {\n // const ox = node.x\n // const oy = node.y\n node.x = adjustedSize[0] - node.x\n node.y = adjustedSize[1] - node.y\n })\n } else if (\n networkSettings.direction === \"up\" ||\n networkSettings.direction === \"down\"\n ) {\n const mod =\n networkSettings.direction === \"up\"\n ? (value) => adjustedSize[1] - value\n : (value) => value\n projectedNodes.forEach((node) => {\n const ox = node.x\n const ox0 = node.x0\n const ox1 = node.x1\n node.x = mod(node.y)\n node.x0 = mod(node.y0)\n node.x1 = mod(node.y1)\n node.y = ox\n node.y0 = ox0\n node.y1 = ox1\n })\n } else if (networkSettings.direction === \"left\") {\n projectedNodes.forEach((node) => {\n node.x = adjustedSize[0] - node.x\n node.x0 = adjustedSize[0] - node.x0\n node.x1 = adjustedSize[0] - node.x1\n })\n }\n\n if (typeof networkSettings.zoom === \"function\") {\n networkSettings.zoom(projectedNodes, projectedEdges, adjustedSize)\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.type !== \"matrix\" &&\n networkSettings.type !== \"chord\" &&\n networkSettings.type !== \"sankey\" &&\n networkSettings.type !== \"partition\" &&\n networkSettings.type !== \"treemap\" &&\n networkSettings.type !== \"circlepack\" &&\n networkSettings.type !== \"dagre\"\n ) {\n // ZOOM SHOULD MAINTAIN ASPECT RATIO, ADD \"stretch\" to fill whole area\n const xMin = min(projectedNodes.map((p) => p.x - nodeSizeAccessor(p)))\n const xMax = max(projectedNodes.map((p) => p.x + nodeSizeAccessor(p)))\n const yMin = min(projectedNodes.map((p) => p.y - nodeSizeAccessor(p)))\n const yMax = max(projectedNodes.map((p) => p.y + nodeSizeAccessor(p)))\n\n const xSize = Math.abs(xMax - xMin)\n const ySize = Math.abs(yMax - yMin)\n\n const networkAspectRatio = xSize / ySize\n const baseAspectRatio = adjustedSize[0] / adjustedSize[1]\n\n let yMod, xMod\n\n if (networkSettings.zoom === \"stretch\") {\n yMod = 0\n xMod = 0\n } else if (xSize > ySize) {\n if (networkAspectRatio > baseAspectRatio) {\n xMod = 0\n yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2\n } else {\n yMod = 0\n xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2\n }\n } else {\n if (networkAspectRatio > baseAspectRatio) {\n xMod = 0\n yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2\n } else {\n yMod = 0\n xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2\n }\n }\n\n const projectionScaleX = scaleLinear()\n .domain([xMin, xMax])\n .range([xMod, adjustedSize[0] - xMod])\n const projectionScaleY = scaleLinear()\n .domain([yMin, yMax])\n .range([yMod, adjustedSize[1] - yMod])\n projectedNodes.forEach((node) => {\n node.x = projectionScaleX(node.x)\n node.y = projectionScaleY(node.y)\n })\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.projection !== \"radial\" &&\n (networkSettings.type === \"partition\" ||\n networkSettings.type === \"treemap\" ||\n networkSettings.type === \"dagre\")\n ) {\n const xMin = min(projectedNodes.map((p) => p.x0))\n const xMax = max(projectedNodes.map((p) => p.x1))\n const yMin = min(projectedNodes.map((p) => p.y0))\n const yMax = max(projectedNodes.map((p) => p.y1))\n\n const projectionScaleX = scaleLinear()\n .domain([xMin, xMax])\n .range([margin.left, adjustedSize[0] - margin.right])\n const projectionScaleY = scaleLinear()\n .domain([yMin, yMax])\n .range([margin.top, adjustedSize[1] - margin.bottom])\n projectedNodes.forEach((node) => {\n node.x = projectionScaleX(node.x)\n node.y = projectionScaleY(node.y)\n node.x0 = projectionScaleX(node.x0)\n node.y0 = projectionScaleY(node.y0)\n node.x1 = projectionScaleX(node.x1)\n node.y1 = projectionScaleY(node.y1)\n node.zoomedHeight = node.y1 - node.y0\n node.zoomedWidth = node.x1 - node.x0\n })\n\n projectedEdges.forEach((edge) => {\n if (edge.points) {\n edge.points.forEach((p) => {\n p.x = projectionScaleX(p.x)\n p.y = projectionScaleY(p.y)\n })\n }\n })\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.type === \"sankey\" &&\n projectedEdges.some((e) => e.circular)\n ) {\n const circularLinks = projectedEdges.filter((e) => e.circular)\n const xMinEdge =\n min(\n circularLinks,\n (e) => e.circularPathData.rightFullExtent - e.sankeyWidth / 2\n ) || Infinity\n const xMaxEdge =\n max(\n circularLinks,\n (e) => e.circularPathData.leftFullExtent + e.sankeyWidth / 2\n ) || -Infinity\n const yMinEdge =\n min(\n circularLinks,\n (e) => e.circularPathData.verticalFullExtent - e.sankeyWidth / 2\n ) || Infinity\n const yMaxEdge =\n max(\n circularLinks,\n (e) => e.circularPathData.verticalFullExtent + e.sankeyWidth / 2\n ) || -Infinity\n\n const yMinNode = min(projectedNodes, (node) => node.y0)\n const yMaxNode = max(projectedNodes, (node) => node.y1)\n const xMinNode = min(projectedNodes, (node) => node.x0)\n const xMaxNode = max(projectedNodes, (node) => node.x1)\n\n const sankeyMinX = Math.min(xMinEdge, xMinNode)\n const sankeyMaxX = Math.max(xMaxEdge, xMaxNode)\n const sankeyMinY = Math.min(yMinEdge, yMinNode)\n const sankeyMaxY = Math.max(yMaxEdge, yMaxNode)\n\n const projectionScaleX = scaleLinear()\n .domain([sankeyMinX, sankeyMaxX])\n .range([0, adjustedSize[0]])\n const projectionScaleY = scaleLinear()\n .domain([sankeyMinY, sankeyMaxY])\n .range([0, adjustedSize[1]])\n\n const widthFactor = adjustedSize[1] / (sankeyMaxY - sankeyMinY)\n\n for (const node of projectedNodes) {\n node.x = projectionScaleX(node.x)\n node.x0 = projectionScaleX(node.x0)\n node.x1 = projectionScaleX(node.x1)\n node.y = projectionScaleY(node.y)\n node.y0 = projectionScaleY(node.y0)\n node.y1 = projectionScaleY(node.y1)\n node.width = node.x1 - node.x0\n node.height = node.y1 - node.y0\n }\n\n for (const edge of projectedEdges) {\n if (edge.circular) {\n edge.circularPathData.sourceX = projectionScaleX(\n edge.circularPathData.sourceX\n )\n edge.circularPathData.sourceY = projectionScaleY(\n edge.circularPathData.sourceY\n )\n edge.circularPathData.leftFullExtent = projectionScaleX(\n edge.circularPathData.leftFullExtent\n )\n edge.circularPathData.verticalFullExtent = projectionScaleY(\n edge.circularPathData.verticalFullExtent\n )\n edge.circularPathData.rightFullExtent = projectionScaleX(\n edge.circularPathData.rightFullExtent\n )\n edge.circularPathData.targetX = projectionScaleX(\n edge.circularPathData.targetX\n )\n edge.circularPathData.targetY = projectionScaleY(\n edge.circularPathData.targetY\n )\n } else {\n edge.y0 = projectionScaleY(edge.y0)\n edge.y1 = projectionScaleY(edge.y1)\n }\n edge.sankeyWidth = edge.sankeyWidth * widthFactor\n }\n }\n\n projectedNodes.forEach((node) => {\n node.nodeSize = nodeSizeAccessor(node)\n })\n\n projectedEdges.forEach((edge) => {\n edge.width = edgeWidthAccessor(edge)\n })\n\n let legendSettings\n\n if (currentProps.legend) {\n legendSettings = currentProps.legend\n if (!legendSettings.legendGroups) {\n ///Something auto for networks\n const legendGroups = [\n {\n styleFn: currentProps.nodeStyle,\n type: \"fill\",\n items: []\n }\n ]\n legendSettings.legendGroups = legendGroups\n }\n }\n\n const cachedEdgeStyles = cache.edgeStyleFns(edgeStyle, edgeClass, edgeRenderMode, canvasEdges)\n\n const networkFrameRender = {\n edges: {\n accessibleTransform: (data, i) => {\n const edgeX = (data[i].source.x + data[i].target.x) / 2\n const edgeY = (data[i].source.y + data[i].target.y) / 2\n return { type: \"frame-hover\", ...data[i], x: edgeX, y: edgeY }\n },\n data: projectedEdges,\n styleFn: cachedEdgeStyles.edgeStyleFn,\n classFn: cachedEdgeStyles.edgeClassFn,\n renderMode: cachedEdgeStyles.edgeRenderModeFn,\n canvasRenderFn: cachedEdgeStyles.edgeCanvasRenderFn,\n renderKeyFn: currentProps.edgeRenderKey\n ? currentProps.edgeRenderKey\n : (d) => d._NWFEdgeKey || d.key || `${d.source.id}-${d.target.id}`,\n behavior: drawEdges,\n projection: networkSettings.projection,\n type: edgeType,\n customMark: customEdgeIcon,\n networkSettings,\n numberOfNodes: projectedNodes.length,\n size: adjustedSize\n },\n nodes: {\n accessibleTransform: (data, i) => ({\n type: \"frame-hover\",\n ...data[i],\n ...(data[i].data || {})\n }),\n data: projectedNodes,\n styleFn: nodeStyleFn,\n classFn: nodeClassFn,\n renderMode: nodeRenderModeFn,\n canvasRenderFn: nodeCanvasRenderFn,\n customMark: customNodeIcon,\n behavior: drawNodes,\n renderKeyFn: currentProps.nodeRenderKey,\n networkSettings\n }\n }\n\n const nodeLabelAnnotations = []\n if (currentProps.nodeLabels && projectedNodes) {\n projectedNodes.forEach((node, nodei) => {\n const feasibleLabel =\n nodeLabels && nodeLabels !== true && nodeLabels(node)\n\n if (nodeLabels === true || feasibleLabel) {\n const actualLabel =\n networkSettings.projection === \"radial\" && node.depth !== 0\n ? radialLabelGenerator(\n node,\n nodei,\n nodeLabels === true ? nodeIDAccessor : nodeLabels,\n adjustedSize\n )\n : nodeLabels === true\n ? nodeIDAccessor(node, nodei)\n : feasibleLabel\n\n let nodeLabel\n\n if (React.isValidElement(actualLabel)) {\n nodeLabel = {\n key: `node-label-${nodei}`,\n type: \"basic-node-label\",\n x: node.x,\n y: node.y,\n element: actualLabel\n }\n } else {\n nodeLabel = {\n key: `node-label-${nodei}`,\n className: \"node-label\",\n dx: 0,\n dy: 0,\n x: node.x,\n y: node.y,\n color: \"currentColor\",\n note: { label: actualLabel },\n connector: { end: \"none\" },\n type: \"label\",\n subject: { radius: nodeSizeAccessor(node) + 2 }\n }\n }\n\n nodeLabelAnnotations.push(nodeLabel)\n }\n })\n }\n\n let projectedXYPoints\n const overlay = []\n const areaBasedTypes = [\n \"circlepack\",\n \"treemap\",\n \"partition\",\n \"chord\"\n // \"matrix\"\n ]\n if (\n (hoverAnnotation &&\n areaBasedTypes.find((d) => d === networkSettings.type)) ||\n hoverAnnotation === \"area\"\n ) {\n if (hoverAnnotation !== \"edge\") {\n const renderedNodeOverlays = projectedNodes.map((d, i) => ({\n overlayData: d,\n ...customNodeIcon({\n d,\n i,\n transform: `translate(${d.x},${d.y})`,\n styleFn: () => ({ opacity: 0 })\n }).props\n }))\n\n overlay.push(...renderedNodeOverlays)\n }\n if (hoverAnnotation !== \"node\") {\n projectedEdges.forEach((d, i) => {\n const generatedIcon = customEdgeIcon({\n d,\n i,\n transform: `translate(${d.x},${d.y})`,\n styleFn: () => ({ opacity: 0 })\n })\n if (generatedIcon) {\n overlay.push({\n overlayData: {\n ...d,\n x: d.x === undefined ? (d.source.x + d.target.x) / 2 : d.x,\n y: d.y === undefined ? (d.source.y + d.target.y) / 2 : d.y,\n edge: true\n },\n ...generatedIcon.props\n })\n }\n })\n }\n } else if (\n hoverAnnotation === \"edge\" &&\n typeof networkSettings.type === \"string\" &&\n edgePointHash[networkSettings.type]\n ) {\n projectedXYPoints = projectedEdges.map(edgePointHash[networkSettings.type])\n } else if (\n Array.isArray(hoverAnnotation) ||\n hoverAnnotation === true ||\n hoverAnnotation === \"node\"\n ) {\n projectedXYPoints = projectedNodes\n if (changedData || networkSettingsChanged)\n projectedXYPoints = [...projectedNodes]\n } else if (\n hoverAnnotation === \"all\" &&\n typeof networkSettings.type === \"string\"\n ) {\n projectedXYPoints = [\n ...projectedEdges.map(edgePointHash[networkSettings.type]),\n ...projectedNodes\n ]\n }\n\n return {\n adjustedPosition: adjustedPosition,\n adjustedSize: adjustedSize,\n backgroundGraphics: currentProps.backgroundGraphics,\n foregroundGraphics: currentProps.foregroundGraphics,\n title,\n renderNumber: prevState.renderNumber + 1,\n projectedNodes,\n projectedEdges,\n projectedXYPoints,\n overlay,\n nodeIDAccessor,\n sourceAccessor,\n targetAccessor,\n nodeSizeAccessor,\n edgeWidthAccessor,\n margin,\n legendSettings,\n networkFrameRender,\n nodeLabelAnnotations,\n graphSettings: {\n ...networkSettings.graphSettings,\n ...networkSettings\n },\n props: currentProps\n }\n}\n","import memoize from \"memoize-one\"\nimport { calculateMargin, adjustedPositionSize } from \"../svg/frameFunctions\"\nimport { stringToFn } from \"./dataFunctions\"\n\nimport { genericFunction } from \"../generic_utilities/functions\"\n\nexport function createNetworkPipelineCache() {\n return {\n marginCalc: memoize((\n margin: any,\n title: any,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, title, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n accessorConversions: memoize((\n nodeIDAccessor: any,\n sourceAccessor: any,\n targetAccessor: any,\n nodeSizeAccessor: any,\n edgeWidthAccessor: any\n ) => ({\n nodeIDAccessor: stringToFn<string>(nodeIDAccessor, (d) => d ? d.id : undefined),\n sourceAccessor: stringToFn<string | Record<string, any>>(sourceAccessor, (d) => d.source),\n targetAccessor: stringToFn<string | Record<string, any>>(targetAccessor, (d) => d.target),\n nodeSizeAccessor: typeof nodeSizeAccessor === \"number\"\n ? genericFunction(nodeSizeAccessor)\n : stringToFn<number>(nodeSizeAccessor, genericFunction(5)),\n edgeWidthAccessor: stringToFn<number>(edgeWidthAccessor, (d) => d.weight || 1),\n })),\n\n nodeStyleFns: memoize((\n nodeStyle: any,\n nodeClass: any,\n nodeRenderMode: any,\n canvasNodes: any\n ) => ({\n nodeStyleFn: stringToFn<Record<string, any>>(nodeStyle, () => ({}), true),\n nodeClassFn: stringToFn<string>(nodeClass, () => \"\", true),\n nodeRenderModeFn: stringToFn<string | Record<string, any>>(nodeRenderMode, undefined, true),\n nodeCanvasRenderFn: canvasNodes ? stringToFn<boolean>(canvasNodes, undefined, true) : undefined,\n })),\n\n edgeStyleFns: memoize((\n edgeStyle: any,\n edgeClass: any,\n edgeRenderMode: any,\n canvasEdges: any\n ) => ({\n edgeStyleFn: stringToFn<Record<string, any>>(edgeStyle, () => ({}), true),\n edgeClassFn: stringToFn<string>(edgeClass, () => \"\", true),\n edgeRenderModeFn: stringToFn<string | Record<string, any>>(edgeRenderMode, undefined, true),\n edgeCanvasRenderFn: canvasEdges ? stringToFn<boolean>(canvasEdges, undefined, true) : undefined,\n })),\n }\n}\n\nexport type NetworkPipelineCache = ReturnType<typeof createNetworkPipelineCache>\n","import { chord, ribbon } from \"d3-chord\"\nimport { arc } from \"d3-shape\"\nimport pathBounds from \"svg-path-bounding-box\"\nimport { matrixify } from \"../hierarchyUtils\"\nimport { NetworkLayoutHandler } from \"./types\"\n\nexport const chordLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n edgeHash,\n nodeIDAccessor,\n edgeWidthAccessor\n}) => {\n const radius = adjustedSize[1] / 2\n\n const { groupWidth = 20, padAngle = 0.01, sortGroups } = networkSettings\n\n const arcGenerator = arc()\n .innerRadius(radius - groupWidth)\n .outerRadius(radius)\n\n const ribbonGenerator = ribbon().radius(radius - groupWidth)\n\n const matrixifiedNetwork = matrixify({\n edgeHash: edgeHash,\n nodes: projectedNodes,\n edgeWidthAccessor,\n nodeIDAccessor\n })\n\n const chordGenerator = chord().padAngle(padAngle)\n\n if (sortGroups) {\n chordGenerator.sortGroups(sortGroups)\n }\n\n const chords = chordGenerator(matrixifiedNetwork)\n const groups = chords.groups\n\n groups.forEach((group) => {\n const groupCentroid = arcGenerator.centroid(group)\n const groupD = arcGenerator(group)\n const groupNode = projectedNodes[group.index]\n groupNode.d = groupD\n groupNode.index = group.index\n groupNode.x = groupCentroid[0] + adjustedSize[0] / 2\n groupNode.y = groupCentroid[1] + adjustedSize[1] / 2\n })\n\n chords.forEach((generatedChord) => {\n const chordD = ribbonGenerator(generatedChord)\n\n const nodeSourceID = nodeIDAccessor(\n projectedNodes[generatedChord.source.index]\n )\n const nodeTargetID = nodeIDAccessor(\n projectedNodes[generatedChord.target.index]\n )\n // d3-chord always emits source.index < target.index, which may\n // not match the original edge direction. Try both key orders.\n const chordEdge =\n edgeHash.get(`${nodeSourceID}|${nodeTargetID}`) ||\n edgeHash.get(`${nodeTargetID}|${nodeSourceID}`)\n if (chordEdge) {\n chordEdge.d = chordD\n const chordBounds = pathBounds(chordD)\n chordEdge.x =\n adjustedSize[0] / 2 + (chordBounds.x1 + chordBounds.x2) / 2\n chordEdge.y =\n adjustedSize[1] / 2 + (chordBounds.y1 + chordBounds.y2) / 2\n }\n })\n\n return { projectedNodes, projectedEdges }\n}\n","import {\n forceSimulation,\n forceX,\n forceY,\n forceLink,\n forceManyBody\n} from \"d3-force\"\nimport { scaleLinear } from \"d3-scale\"\nimport { min, max } from \"d3-array\"\nimport { breadthFirstCompontents } from \"../hierarchyUtils\"\nimport { NetworkLayoutHandler } from \"./types\"\n\nexport const forceLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n nodeSizeAccessor\n}) => {\n // Adaptive iteration count for force layout: reduce iterations for large networks\n const nodeCount = projectedNodes.length\n const adaptiveIterations = Math.max(\n 50,\n Math.min(300, Math.floor(300 - (nodeCount - 30) * 2))\n )\n\n const {\n iterations = adaptiveIterations,\n edgeStrength = 0.1,\n distanceMax = Infinity,\n edgeDistance,\n forceManyBody: nsForceMB = (d) => -25 * nodeSizeAccessor(d)\n } = networkSettings\n\n // Set deterministic initial positions for nodes that don't have x/y yet.\n // d3-force uses Math.random() for unpositioned nodes which produces\n // different layouts on every render. A phyllotaxis spiral gives\n // evenly-distributed starting positions based on index alone.\n const cx = adjustedSize[0] / 2\n const cy = adjustedSize[1] / 2\n const goldenAngle = Math.PI * (3 - Math.sqrt(5))\n projectedNodes.forEach((node, i) => {\n if (node.x == null || node.y == null) {\n const r = Math.sqrt(i + 0.5) * 10\n const theta = i * goldenAngle\n node.x = cx + r * Math.cos(theta)\n node.y = cy + r * Math.sin(theta)\n }\n })\n\n const linkForce = forceLink().strength((d) =>\n Math.min(2.5, d.weight ? d.weight * edgeStrength : edgeStrength)\n )\n\n if (edgeDistance) {\n linkForce.distance(edgeDistance)\n }\n\n const simulation =\n networkSettings.simulation ||\n forceSimulation().force(\n \"charge\",\n forceManyBody().distanceMax(distanceMax).strength(nsForceMB)\n )\n\n simulation.nodes(projectedNodes)\n\n const forceMod = adjustedSize[1] / adjustedSize[0]\n\n if (!simulation.force(\"x\")) {\n simulation.force(\n \"x\",\n forceX(adjustedSize[0] / 2).strength(forceMod * 0.1)\n )\n }\n if (!simulation.force(\"y\")) {\n simulation.force(\"y\", forceY(adjustedSize[1] / 2).strength(0.1))\n }\n\n if (projectedEdges.length !== 0 && !simulation.force(\"link\")) {\n simulation.force(\"link\", linkForce)\n simulation.force(\"link\").links(projectedEdges)\n }\n\n //reset alpha if it's too cold\n if (simulation.alpha() < 0.1) {\n simulation.alpha(1)\n }\n\n simulation.stop()\n\n for (let i = 0; i < iterations; ++i) {\n simulation.tick()\n }\n\n return { projectedNodes, projectedEdges }\n}\n\nexport const motifsLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n nodeSizeAccessor,\n size\n}) => {\n const componentMap = new Map()\n projectedEdges.forEach((edge) => {\n ;[edge.source, edge.target].forEach((node) => {\n if (!componentMap.get(node)) {\n componentMap.set(node, {\n node,\n component: -99,\n connectedNodes: [],\n edges: []\n })\n }\n })\n\n componentMap.get(edge.source).connectedNodes.push(edge.target)\n componentMap.get(edge.target).connectedNodes.push(edge.source)\n componentMap.get(edge.source).edges.push(edge)\n })\n\n const components = breadthFirstCompontents(projectedNodes, componentMap)\n\n const largestComponent = Math.max(\n projectedNodes.length / 3,\n components[0].componentNodes.length\n )\n\n const layoutSize = size[0] > size[1] ? size[1] : size[0]\n const layoutDirection = size[0] > size[1] ? \"horizontal\" : \"vertical\"\n\n // Adaptive iteration count for motifs layout (same as force layout)\n const nodeCount = projectedNodes.length\n const adaptiveIterations = Math.max(\n 50,\n Math.min(300, Math.floor(300 - (nodeCount - 30) * 2))\n )\n\n const {\n iterations = adaptiveIterations,\n edgeStrength = 0.1,\n edgeDistance,\n padding = 0\n } = networkSettings\n\n let currentX = padding\n let currentY = padding\n\n components.forEach(({ componentNodes, componentEdges }) => {\n const linkForce = forceLink().strength((d) =>\n Math.min(2.5, d.weight ? d.weight * edgeStrength : edgeStrength)\n )\n\n if (edgeDistance) {\n linkForce.distance(edgeDistance)\n }\n\n const componentLayoutSize =\n Math.max(componentNodes.length / largestComponent, 0.2) * layoutSize\n\n const xBound = componentLayoutSize + currentX\n const yBound = componentLayoutSize + currentY\n\n if (layoutDirection === \"horizontal\") {\n if (yBound > size[1]) {\n currentX = componentLayoutSize + currentX + padding\n currentY = componentLayoutSize + padding\n } else {\n currentY = componentLayoutSize + currentY + padding\n }\n } else {\n if (xBound > size[0]) {\n currentY = componentLayoutSize + currentY + padding\n currentX = componentLayoutSize + padding\n } else {\n currentX = componentLayoutSize + currentX + padding\n }\n }\n\n const xCenter = currentX - componentLayoutSize / 2\n const yCenter = currentY - componentLayoutSize / 2\n\n const simulation = forceSimulation()\n .force(\n \"charge\",\n forceManyBody().strength(\n networkSettings.forceManyBody ||\n ((d) => -25 * nodeSizeAccessor(d))\n )\n )\n .force(\"link\", linkForce)\n\n simulation\n .force(\"x\", forceX(xCenter))\n .force(\"y\", forceY(yCenter))\n .nodes(componentNodes)\n\n simulation.force(\"link\").links(componentEdges)\n\n simulation.stop()\n\n for (let i = 0; i < iterations; ++i) simulation.tick()\n\n const maxX = max(componentNodes.map((d) => d.x))\n const maxY = max(componentNodes.map((d) => d.y))\n const minX = min(componentNodes.map((d) => d.x))\n const minY = min(componentNodes.map((d) => d.y))\n\n const resetX = scaleLinear()\n .domain([minX, maxX])\n .range([currentX - componentLayoutSize, currentX - 20])\n const resetY = scaleLinear()\n .domain([minY, maxY])\n .range([currentY - componentLayoutSize, currentY - 20])\n\n componentNodes.forEach((node) => {\n node.x = resetX(node.x)\n node.y = resetY(node.y)\n })\n })\n\n return { projectedNodes, projectedEdges, components }\n}\n","import { NetworkLayoutHandler } from \"./types\"\n\nexport const matrixLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize\n}) => {\n let sortedNodes = projectedNodes\n if (networkSettings.sort) {\n sortedNodes = [...projectedNodes].sort(networkSettings.sort)\n }\n\n const gridSize = Math.min(...adjustedSize)\n const stepSize = gridSize / (sortedNodes.length + 1)\n\n sortedNodes.forEach((node, index) => {\n node.x = 0\n node.y = (index + 1) * stepSize\n })\n\n return { projectedNodes: sortedNodes, projectedEdges }\n}\n\nexport const arcLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize\n}) => {\n let sortedNodes = projectedNodes\n if (networkSettings.sort) {\n sortedNodes = [...projectedNodes].sort(networkSettings.sort)\n }\n\n const stepSize = adjustedSize[0] / (sortedNodes.length + 2)\n\n sortedNodes.forEach((node, index) => {\n node.x = (index + 1) * stepSize\n node.y = adjustedSize[1] / 2\n })\n\n return { projectedNodes: sortedNodes, projectedEdges }\n}\n\nexport const simpleLayouts = {\n matrix: matrixLayout,\n arc: arcLayout\n}\n","import { NetworkLayoutMap } from \"./types\"\nimport { chordLayout } from \"./chordLayout\"\nimport { sankeyLayout } from \"./sankeyLayout\"\nimport { forceLayout, motifsLayout } from \"./forceLayout\"\nimport { hierarchyLayouts } from \"./hierarchyLayout\"\nimport { simpleLayouts } from \"./simpleLayouts\"\n\nexport { NetworkLayoutHandler, NetworkLayoutMap } from \"./types\"\nexport { chordLayout } from \"./chordLayout\"\nexport { sankeyLayout, sankeyOrientHash } from \"./sankeyLayout\"\nexport { forceLayout, motifsLayout } from \"./forceLayout\"\nexport { hierarchyLayouts, hierarchicalTypeHash } from \"./hierarchyLayout\"\nexport { simpleLayouts, matrixLayout, arcLayout } from \"./simpleLayouts\"\n\nexport const allNetworkLayouts: NetworkLayoutMap = {\n chord: chordLayout,\n sankey: sankeyLayout,\n flowchart: sankeyLayout,\n force: forceLayout,\n motifs: motifsLayout,\n ...hierarchyLayouts,\n ...simpleLayouts\n}\n","\"use client\"\nimport { useRef, useMemo } from \"react\"\n\n// this hooks should only be used for transitioning from class to function components\n// this hooks is supposed to replicate behavior of getDerivedStateFromProps\n// and some assumptions related to it:\n// 1. initial state, defined in \"constructor\" should not trigger additional computation\n// 2. the computation function can opt-out if it thinks that nothing has changed, so the existing state should be used\n//\n// ideally, the state must be refactored to be function component friendly, so this hooks should become irrelevant\nexport function useDerivedStateFromProps<Props, State>(\n fn: (nextProps: Props, prevState: State) => Partial<State> | null,\n props: Props,\n initialState: State\n): State {\n let prevRef = useRef(initialState)\n let state = useMemo(() => {\n let state = prevRef.current\n let patch = fn(props, state)\n if (patch != null) {\n return { ...state, ...patch }\n }\n return state\n }, [props])\n prevRef.current = state\n return state\n}\n","\"use client\"\nimport { useEffect, useRef } from \"react\"\nimport { GeneralFrameProps, GeneralFrameState } from \"./types/generalTypes\"\n\n// to properly replicate behavior of componentWillUnmount, the effect must not have dependencies\n// which is why we need to store latest props and state values in ref that can be accessible during unmount\n// TODO get rid of the behavior and props.onUnmount\nexport function useLegacyUnmountCallback(props: GeneralFrameProps, state: GeneralFrameState) {\n let ref = useRef<[GeneralFrameProps, GeneralFrameState]>()\n ref.current = [props, state]\n useEffect(() => {\n return () => {\n const [props, state] = ref.current\n const onUnmount = props.onUnmount\n if (onUnmount) {\n onUnmount(props, state)\n }\n }\n }, [])\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useMemo, useRef } from \"react\"\n\nimport Frame from \"./Frame\"\n\nimport { stringToFn } from \"./data/dataFunctions\"\n\nimport {\n networkFrameChangeProps,\n networkFrameDataAffectingProps,\n networkFrameScaleAffectingProps,\n networkFrameStylingProps\n} from \"./constants/frame_props\"\n\nimport {\n htmlFrameHoverRule,\n svgNodeRule,\n svgReactAnnotationRule,\n svgEncloseRule,\n svgRectEncloseRule,\n svgHullEncloseRule,\n svgHighlightRule\n} from \"./annotationRules/networkframeRules\"\n\nimport { desaturationLayer } from \"./annotationRules/baseRules\"\n\nimport { genericFunction } from \"./generic_utilities/functions\"\n\nimport { AnnotationType } from \"./types/annotationTypes\"\n\nimport { scaleLinear } from \"d3-scale\"\n\nimport { calculateNetworkFrame } from \"./processing/network\"\nimport { createNetworkPipelineCache, NetworkPipelineCache } from \"./data/networkPipelineCache\"\nimport { allNetworkLayouts } from \"./processing/layouts\"\n\nconst blankArray = []\n\nconst matrixRenderOrder: ReadonlyArray<\"nodes\" | \"edges\"> = [\"nodes\", \"edges\"]\nconst generalRenderOrder: ReadonlyArray<\"nodes\" | \"edges\"> = [\"edges\", \"nodes\"]\n\nconst projectedCoordinateNames = { y: \"y\", x: \"x\" }\n\nconst xScale = scaleLinear()\nconst yScale = scaleLinear()\n\n\nimport {\n NodeType,\n NetworkFrameProps,\n NetworkFrameState\n} from \"./types/networkTypes\"\nimport { UpdatedAnnotationLayerProps } from \"./AnnotationLayer/AnnotationLayer\"\nimport { useDerivedStateFromProps } from \"./useDerivedStateFromProps\"\nimport { useLegacyUnmountCallback } from \"./useLegacyUnmountCallback\"\n\nconst defaultProps = {\n annotations: [],\n foregroundGraphics: [],\n size: [500, 500],\n className: \"\",\n name: \"networkframe\",\n networkType: { type: \"force\", iterations: 500 },\n filterRenderedNodes: (d: NodeType) => d.id !== \"root-generated\"\n}\n\nexport function NetworkFrameInner<TNode = Record<string, any>, TEdge = Record<string, any>>(\n allProps: NetworkFrameProps<TNode, TEdge>\n) {\n const props: NetworkFrameProps<TNode, TEdge> = { ...defaultProps, ...allProps }\n const pipelineCacheRef = useRef(createNetworkPipelineCache())\n const baseState = {\n dataVersion: undefined,\n nodeData: [],\n edgeData: [],\n adjustedPosition: [],\n adjustedSize: [],\n backgroundGraphics: null,\n foregroundGraphics: null,\n projectedNodes: [],\n projectedEdges: [],\n renderNumber: 0,\n nodeLabelAnnotations: [],\n graphSettings: {\n type: \"empty-start\",\n nodes: [],\n edges: [],\n nodeHash: new Map(),\n edgeHash: new Map(),\n hierarchicalNetwork: false\n },\n edgeWidthAccessor: stringToFn<number>(\"weight\"),\n legendSettings: undefined,\n margin: { top: 0, left: 0, right: 0, bottom: 0 },\n networkFrameRender: {},\n nodeIDAccessor: stringToFn<string>(\"id\"),\n nodeSizeAccessor: genericFunction(5),\n overlay: [],\n projectedXYPoints: [],\n sourceAccessor: stringToFn<string | Record<string, any>>(\"source\"),\n targetAccessor: stringToFn<string | Record<string, any>>(\"target\"),\n title: { title: undefined },\n props: props as NetworkFrameProps\n }\n\n const initialState = useMemo(\n () => ({\n ...baseState,\n ...calculateNetworkFrame(props as NetworkFrameProps, baseState, pipelineCacheRef.current, (props as NetworkFrameProps)._layoutMap || allNetworkLayouts)\n } as NetworkFrameState),\n []\n )\n\n const state = useDerivedStateFromProps(\n (nextProps, prevState) => deriveNetworkFrameState(nextProps as NetworkFrameProps, prevState, pipelineCacheRef.current, (nextProps as NetworkFrameProps)._layoutMap || allNetworkLayouts),\n props as NetworkFrameProps,\n initialState\n )\n\n useLegacyUnmountCallback(props, state)\n\n const propsRef = useRef(props)\n propsRef.current = props\n const stateRef = useRef(state)\n stateRef.current = state\n\n const defaultSVGRuleCb = useCallback(\n (args) => defaultNetworkSVGRule(propsRef.current as NetworkFrameProps, stateRef.current, args),\n []\n )\n const defaultHTMLRuleCb = useCallback(\n (args) => defaultNetworkHTMLRule(propsRef.current as NetworkFrameProps, stateRef.current, args),\n []\n )\n\n const {\n annotations = [],\n annotationSettings,\n className,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n size,\n matte,\n hoverAnnotation,\n beforeElements,\n afterElements,\n interaction,\n disableContext,\n canvasPostProcess,\n canvasNodes,\n canvasEdges,\n additionalDefs,\n renderOrder = state.graphSettings && state.graphSettings.type === \"matrix\"\n ? matrixRenderOrder\n : generalRenderOrder,\n sketchyRenderingEngine,\n frameRenderOrder,\n disableCanvasInteraction,\n interactionSettings,\n disableProgressiveRendering,\n transition\n } = props\n const {\n backgroundGraphics,\n foregroundGraphics,\n projectedXYPoints,\n margin,\n legendSettings,\n adjustedPosition,\n adjustedSize,\n networkFrameRender,\n nodeLabelAnnotations,\n overlay,\n title\n } = state\n\n // Memoize overlay formatting\n const formattedOverlay = useMemo(\n () => (overlay && overlay.length > 0 ? overlay : undefined),\n [overlay]\n )\n\n // Memoize active hover annotation logic\n const activeHoverAnnotation = useMemo(() => {\n if (Array.isArray(hoverAnnotation)) {\n return hoverAnnotation\n } else if (\n (customClickBehavior ||\n customDoubleClickBehavior ||\n customHoverBehavior) &&\n (hoverAnnotation === undefined || hoverAnnotation === false)\n ) {\n return blankArray\n } else {\n return !!hoverAnnotation\n }\n }, [\n hoverAnnotation,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior\n ])\n\n // Memoize merged annotations to prevent unnecessary array creation\n const mergedAnnotations = useMemo(\n () => [...annotations, ...nodeLabelAnnotations],\n [annotations, nodeLabelAnnotations]\n )\n\n // Memoize canvas rendering flag\n const canvasRendering = useMemo(\n () => !!(canvasNodes || canvasEdges),\n [canvasNodes, canvasEdges]\n )\n\n return (\n <Frame\n name=\"networkframe\"\n renderPipeline={networkFrameRender}\n adjustedPosition={adjustedPosition}\n adjustedSize={adjustedSize}\n size={size}\n xScale={xScale}\n yScale={yScale}\n title={title}\n matte={matte}\n className={className}\n additionalDefs={additionalDefs}\n frameKey={\"none\"}\n projectedCoordinateNames={projectedCoordinateNames}\n defaultSVGRule={defaultSVGRuleCb}\n defaultHTMLRule={defaultHTMLRuleCb}\n hoverAnnotation={activeHoverAnnotation}\n annotations={mergedAnnotations}\n annotationSettings={annotationSettings}\n legendSettings={legendSettings}\n interaction={interaction}\n customClickBehavior={customClickBehavior}\n customHoverBehavior={customHoverBehavior}\n customDoubleClickBehavior={customDoubleClickBehavior}\n points={projectedXYPoints}\n margin={margin}\n overlay={formattedOverlay}\n backgroundGraphics={backgroundGraphics}\n foregroundGraphics={foregroundGraphics}\n beforeElements={beforeElements}\n afterElements={afterElements}\n disableContext={disableContext}\n canvasPostProcess={canvasPostProcess}\n canvasRendering={canvasRendering}\n renderOrder={renderOrder}\n disableCanvasInteraction={disableCanvasInteraction}\n sketchyRenderingEngine={sketchyRenderingEngine}\n frameRenderOrder={frameRenderOrder}\n interactionSettings={interactionSettings}\n disableProgressiveRendering={disableProgressiveRendering}\n transition={transition}\n />\n )\n}\n\nfunction deriveNetworkFrameState(\n nextProps: NetworkFrameProps,\n prevState: NetworkFrameState,\n cache?: NetworkPipelineCache,\n layoutMap?: Record<string, any>\n) {\n const { props } = prevState\n\n // Check which category of props changed\n const dataPropsChanged = !prevState.dataVersion && networkFrameDataAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const scalePropsChanged = !prevState.dataVersion && networkFrameScaleAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const sizeChanged = props.size[0] !== nextProps.size[0] || props.size[1] !== nextProps.size[1]\n\n // Force full recalc if dataVersion changed or no projected data exists\n if (\n (prevState.dataVersion && prevState.dataVersion !== nextProps.dataVersion) ||\n (!prevState.projectedNodes && !prevState.projectedEdges)\n ) {\n return {\n ...calculateNetworkFrame(nextProps, prevState, cache, layoutMap),\n props: nextProps\n }\n }\n\n // Full data recalculation needed if data-affecting props changed\n if (dataPropsChanged) {\n return {\n ...calculateNetworkFrame(nextProps, prevState, cache, layoutMap),\n props: nextProps\n }\n }\n\n // Scale/layout recalculation needed if size or scale-affecting props changed\n // Note: For network layouts (especially force), size changes might affect positioning\n if (sizeChanged || scalePropsChanged) {\n return {\n ...calculateNetworkFrame(nextProps, prevState, cache, layoutMap),\n props: nextProps\n }\n }\n\n // Only styling changed - no recalc needed, React will re-render with existing state\n return { props: nextProps }\n}\n\nconst annotationTypeStrings = new Set([\n \"label\", \"callout\", \"callout-circle\", \"callout-rect\",\n \"callout-custom\", \"xy-threshold\", \"bracket\"\n])\n\nfunction defaultNetworkSVGRule(\n props: NetworkFrameProps,\n state: NetworkFrameState,\n {\n d: baseD,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const {\n projectedNodes,\n projectedEdges,\n nodeIDAccessor,\n nodeSizeAccessor,\n networkFrameRender,\n adjustedSize,\n adjustedPosition\n } = state\n //TODO PASS FRAME STYLE FNs TO HIGHLIGHT\n const { svgAnnotationRules } = props\n\n const d = baseD.ids\n ? baseD\n : baseD.edge\n ? {\n ...(projectedEdges.find((p) => {\n return (\n nodeIDAccessor(p.source) === nodeIDAccessor(baseD.edge.source) &&\n nodeIDAccessor(p.target) === nodeIDAccessor(baseD.edge.target)\n )\n }) || {}),\n ...baseD\n }\n : {\n ...(projectedNodes.find((p) => nodeIDAccessor(p) === baseD.id) || {}),\n ...baseD\n }\n\n const { voronoiHover } = annotationLayer\n\n if (svgAnnotationRules) {\n const customAnnotation = svgAnnotationRules({\n d,\n i,\n networkFrameProps: props,\n networkFrameState: state,\n nodes: projectedNodes,\n edges: projectedEdges,\n voronoiHover,\n screenCoordinates: [d.x, d.y],\n adjustedPosition,\n adjustedSize,\n annotationLayer\n })\n if (customAnnotation !== null) {\n return customAnnotation\n }\n }\n if (d.type === \"node\") {\n return svgNodeRule({\n d,\n i,\n nodeSizeAccessor\n })\n } else if (d.type === \"desaturation-layer\") {\n return desaturationLayer({\n style: d.style instanceof Function ? d.style(d, i) : d.style,\n size: adjustedSize,\n i,\n key: d.key\n })\n } else if (d.type === \"basic-node-label\") {\n return (\n <g key={d.key || `basic-${i}`} transform={`translate(${d.x},${d.y})`}>\n {(baseD.element || baseD.label) as React.ReactNode}\n </g>\n )\n } else if (typeof d.type === \"function\" || annotationTypeStrings.has(d.type)) {\n return svgReactAnnotationRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor\n })\n } else if (d.type === \"enclose\") {\n return svgEncloseRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n })\n } else if (d.type === \"enclose-rect\") {\n return svgRectEncloseRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n })\n } else if (d.type === \"enclose-hull\") {\n return svgHullEncloseRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n })\n } else if (d.type === \"highlight\") {\n return svgHighlightRule({\n d,\n i,\n networkFrameRender\n })\n }\n return null\n}\n\nfunction defaultNetworkHTMLRule(\n props: NetworkFrameProps,\n state: NetworkFrameState,\n {\n d: baseD,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const {\n tooltipContent,\n optimizeCustomTooltipPosition,\n htmlAnnotationRules\n } = props\n const {\n projectedNodes,\n projectedEdges,\n nodeIDAccessor,\n adjustedSize,\n adjustedPosition\n } = state\n\n const { voronoiHover } = annotationLayer\n\n const d = baseD.ids\n ? baseD\n : baseD.edge\n ? {\n ...(projectedEdges.find(\n (p) =>\n nodeIDAccessor(p.source) === nodeIDAccessor(baseD.source) &&\n nodeIDAccessor(p.target) === nodeIDAccessor(baseD.target)\n ) || {}),\n ...baseD\n }\n : {\n ...(projectedNodes.find((p) => nodeIDAccessor(p) === baseD.id) || {}),\n ...baseD\n }\n\n if (htmlAnnotationRules) {\n const customAnnotation = htmlAnnotationRules({\n d,\n i,\n networkFrameProps: props,\n networkFrameState: state,\n nodes: projectedNodes,\n edges: projectedEdges,\n voronoiHover,\n screenCoordinates: [d.x, d.y],\n adjustedPosition,\n adjustedSize,\n annotationLayer\n })\n if (customAnnotation !== null) {\n return customAnnotation\n }\n }\n if (d.type === \"frame-hover\") {\n return htmlFrameHoverRule({\n d,\n i,\n tooltipContent,\n optimizeCustomTooltipPosition,\n nodes: projectedNodes,\n edges: projectedEdges,\n nodeIDAccessor,\n adjustedSize\n })\n }\n return null\n}\n\nNetworkFrameInner.displayName = \"NetworkFrame\"\nconst NetworkFrame = React.memo(NetworkFrameInner) as typeof NetworkFrameInner\nexport default NetworkFrame\n","\"use client\"\nimport { useState, useLayoutEffect, RefObject } from \"react\"\n\nexport function useBoundingRect(ref: RefObject<HTMLElement>): DOMRect | null {\n const [rect, setRect] = useState<DOMRect | null>(null)\n useLayoutEffect(() => {\n const element = ref.current\n if (element != null) {\n setRect(element.getBoundingClientRect())\n // TypeScript 3.9 does not know about resize observer\n // @ts-ignore\n const observer = new ResizeObserver((entries) => {\n if (entries.length > 0) {\n setRect(entries[0].contentRect as DOMRect)\n }\n })\n observer.observe(element)\n return () => observer.disconnect()\n }\n }, [])\n return rect\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useState, useLayoutEffect, useRef } from \"react\"\n\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\nimport { XYFrameProps } from \"./types/xyTypes\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\nimport { useBoundingRect } from \"./useBoundingRect\"\n\nexport interface ResponsiveFrameProps {\n debounce?: number\n responsiveWidth?: boolean\n responsiveHeight?: boolean\n gridDisplay?: boolean\n elementResizeEvent?: Function\n}\n\nexport interface ResponsiveFrameState {\n containerHeight?: number\n containerWidth?: number\n}\n\ntype ActualFrameProps = OrdinalFrameProps | XYFrameProps | NetworkFrameProps\n\nconst createResponsiveFrame = (ParticularFrame) => {\n function ResponsiveFrame(props: ResponsiveFrameProps & ActualFrameProps) {\n const {\n responsiveWidth,\n responsiveHeight,\n size = [500, 500],\n dataVersion,\n debounce = 200,\n gridDisplay,\n ...rest\n } = props\n\n const actualSize = [...size]\n\n let returnEmpty = false\n\n let sceneRef = useRef()\n let rect = useBoundingRect(sceneRef)\n\n if (responsiveWidth) {\n if (rect == null) returnEmpty = true\n else actualSize[0] = rect.width\n }\n\n if (responsiveHeight) {\n if (rect == null) returnEmpty = true\n else actualSize[1] = rect.height\n }\n\n const dataVersionWithSize = dataVersion + actualSize.toString() + debounce\n\n return (\n <div\n data-testid=\"responsive-container\"\n className=\"responsive-container\"\n style={\n gridDisplay\n ? { minWidth: \"0px\", minHeight: \"0px\" }\n : { height: \"100%\", width: \"100%\" }\n }\n ref={sceneRef}\n >\n {!returnEmpty && (\n <ParticularFrame\n {...rest}\n size={actualSize}\n dataVersion={dataVersion ? dataVersionWithSize : undefined}\n />\n )}\n </div>\n )\n }\n ResponsiveFrame.isResizing = setTimeout(() => {})\n\n ResponsiveFrame.displayName = `Responsive${ParticularFrame.displayName}`\n return ResponsiveFrame\n}\n\nexport default createResponsiveFrame\n","\"use client\"\nimport NetworkFrame from \"./NetworkFrame\"\nimport createResponsiveFrame from \"./ResponsiveFrame\"\nimport { ResponsiveFrameProps } from \"./ResponsiveFrame\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\nexport const ResponsiveNetworkFrame =\n\t/*#__PURE__*/ createResponsiveFrame(NetworkFrame) as\n\t<TNode = Record<string, any>, TEdge = Record<string, any>>(props: ResponsiveFrameProps & NetworkFrameProps<TNode, TEdge>) => JSX.Element\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useState } from \"react\"\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\nimport { XYFrameProps } from \"./types/xyTypes\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\ntype ActualFrameProps = OrdinalFrameProps | XYFrameProps | NetworkFrameProps\n\nconst allFrameDefaults = {\n margin: 0\n}\n\nfunction sparkNetworkSettings(originalSettings = \"force\") {\n let finalSettings = {}\n if (originalSettings) {\n finalSettings = originalSettings\n if (originalSettings === \"force\") finalSettings = { type: \"force\" }\n\n return {\n edgeStrength: 2,\n edgeDistance: 5,\n nodePadding: 1,\n nodeWidth: 5,\n groupWidth: 4,\n ...finalSettings\n }\n }\n return originalSettings\n}\n\ntype SparkFrameProps = {\n sparkStyle?: object\n size?: number | number[]\n}\n\ntype SparkFrameState = {\n containerHeight: number\n containerWidth: number\n}\n\nexport const axisDefaults = {\n tickFormat: () => \"\",\n baseline: false\n}\n\nexport const xyFrameDefaults = (props) => ({\n ...allFrameDefaults,\n ...props,\n hoverAnnotation: props.hoverAnnotation,\n axes: props.axes\n ? props.axes.map((a) => ({ ...axisDefaults, ...a }))\n : props.axes\n})\n\nexport const ordinalFrameDefaults = (props) => ({\n ...allFrameDefaults,\n ...props,\n hoverAnnotation: props.hoverAnnotation,\n axes: props.axes\n ? props.axes.map((a) => ({ ...axisDefaults, ...a }))\n : props.axes\n})\n\nexport const networkFrameDefaults = (props) => ({\n ...allFrameDefaults,\n nodeSizeAccessor: 2,\n ...props,\n networkType: sparkNetworkSettings(props.networkType)\n})\n\nexport default function createSparkFrame(Frame, defaults, frameName) {\n return (props: SparkFrameProps) => {\n const { size = [], sparkStyle = {} } = props\n\n const [containerHeight, changeContainerHeight] = useState(30)\n\n const actualSize = []\n\n actualSize[0] =\n typeof size === \"number\" ? size : size[0] ? size[0] : containerHeight\n actualSize[1] = containerHeight\n\n const sparkNodeRef = useCallback((node) => {\n if (node) { \n const lineHeight =\n +window.getComputedStyle(node).lineHeight.split(\"px\")[0] - 5\n changeContainerHeight(isNaN(lineHeight) ? node.offsetHeight : lineHeight)\n }\n }, [])\n\n return (\n <div\n style={Object.assign(\n {\n width: `${actualSize[0]}px`,\n height: `${actualSize[1]}px`,\n display: \"inline-block\",\n marginLeft: \"5px\",\n marginRight: \"5px\"\n },\n sparkStyle\n )}\n ref={sparkNodeRef}\n >\n <Frame {...defaults(props)} size={actualSize} />\n </div>\n )\n }\n}\n","\"use client\"\nimport NetworkFrame from \"./NetworkFrame\"\nimport createSparkFrame from \"./SparkFrame\"\nimport { networkFrameDefaults } from \"./SparkFrame\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\nexport const SparkNetworkFrame = /*#__PURE__*/ createSparkFrame(\n NetworkFrame,\n networkFrameDefaults,\n \"SparkNetworkFrame\"\n) as <TNode = Record<string, any>, TEdge = Record<string, any>>(props: NetworkFrameProps<TNode, TEdge> & { sparkStyle?: object; size?: number | number[] }) => JSX.Element\n"],"names":["React","useState","useLayoutEffect","createContext","useMemo","useContext","labella","Annotation","useEffect","createBrush","select","useRef","d3Extent","Delaunay","this","emptyObjectReturnFn","arc","line","curveLinearClosed","quantile","scaleLinear","contourDensity","hexbin","curveCardinal","regression","curveStep","curveStepBefore","curveStepAfter","curveBasis","curveLinear","curveCatmullRom","curveMonotoneY","curveMonotoneX","curveNatural","histogram","max","area","sum","brushX","brushY","brush","useCallback","blankArray","polygonHull","Offset","packEnclose","curvature","linkHorizontal","linkVertical","glyphD","pathArrows","interpolateNumber","tree","pack","cluster","treemap","partition","sankeyLeft","sankeyRight","sankeyCenter","sankeyJustify","sankeyCircular","hierarchy","min","memoize","ribbon","chord","pathBounds","forceLink","forceSimulation","forceManyBody","forceX","forceY"],"mappings":"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"}
|