semiotic 2.0.3 → 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/AnnotationLayer/AnnotationLayer.d.ts +0 -1
- package/dist/Axis/axisTitle.d.ts +3 -3
- package/dist/Axis/summaryGraphic.d.ts +1 -1
- package/dist/FacetController.d.ts +1 -1
- package/dist/MinimapXYFrame.d.ts +2 -2
- package/dist/NetworkFrame.d.ts +5 -1
- package/dist/OrdinalFrame.d.ts +5 -1
- package/dist/ResponsiveFrame.d.ts +2 -2
- package/dist/ResponsiveMinimapXYFrame.d.ts +3 -6
- package/dist/ResponsiveNetworkFrame.d.ts +3 -6
- package/dist/ResponsiveOrdinalFrame.d.ts +3 -6
- package/dist/ResponsiveXYFrame.d.ts +3 -6
- package/dist/SparkFrame.d.ts +1 -1
- package/dist/SparkNetworkFrame.d.ts +3 -3
- package/dist/SparkOrdinalFrame.d.ts +3 -3
- package/dist/SparkXYFrame.d.ts +3 -3
- package/dist/Tooltip/Tooltip.d.ts +141 -0
- package/dist/TooltipPositioner/index.d.ts +1 -1
- package/dist/VisualizationLayer.d.ts +3 -3
- package/dist/XYFrame.d.ts +5 -1
- package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
- package/dist/annotationRules/networkframeRules.d.ts +2 -2
- package/dist/annotationRules/orframeRules.d.ts +2 -4
- package/dist/annotationRules/xyframeRules.d.ts +2 -2
- package/dist/batchWork.d.ts +1 -1
- 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/frame_props.d.ts +9 -0
- package/dist/constants/jsx.d.ts +2 -2
- package/dist/data/dataFunctions.d.ts +11 -12
- package/dist/data/networkPipelineCache.d.ts +27 -0
- package/dist/data/ordinalPipelineCache.d.ts +33 -0
- package/dist/data/xyPipelineCache.d.ts +35 -0
- package/dist/index.d.ts +70 -62
- package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +1 -1
- 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 +5 -4
- package/dist/processing/hierarchyUtils.d.ts +16 -0
- package/dist/processing/layouts/chordLayout.d.ts +2 -0
- package/dist/processing/layouts/forceLayout.d.ts +3 -0
- package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
- package/dist/processing/layouts/index.d.ts +8 -0
- package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
- package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
- package/dist/processing/layouts/types.d.ts +17 -0
- package/dist/processing/network.d.ts +25 -28
- package/dist/processing/networkDefaults.d.ts +36 -0
- package/dist/processing/networkLayoutHelpers.d.ts +54 -0
- package/dist/processing/ordinal.d.ts +43 -43
- 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 +46 -41
- 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 +19 -3
- package/dist/semiotic.js +18707 -12983
- package/dist/semiotic.js.map +1 -0
- package/dist/semiotic.min.js +1 -0
- package/dist/semiotic.module.js +18651 -12953
- 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/svg/SvgHelper.d.ts +1 -5
- package/dist/svg/areaDrawing.d.ts +3 -13
- 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/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 +17 -28
- package/dist/svg/graphAlgorithms.d.ts +14 -0
- package/dist/svg/hexbinLayout.d.ts +7 -0
- package/dist/svg/lineDrawing.d.ts +8 -8
- package/dist/svg/networkDrawing.d.ts +5 -123
- package/dist/svg/nodeGenerators.d.ts +58 -0
- package/dist/svg/pieceDrawing.d.ts +1 -2
- package/dist/svg/pieceLayouts.d.ts +5 -23
- package/dist/svg/sankeyLinks.d.ts +3 -0
- package/dist/svg/summaryAxis.d.ts +6 -0
- package/dist/svg/summaryLayouts.d.ts +36 -57
- package/dist/svg/swarmLayout.d.ts +13 -0
- package/dist/types/annotationTypes.d.ts +13 -18
- package/dist/types/canvasTypes.d.ts +1 -1
- package/dist/types/generalTypes.d.ts +37 -35
- package/dist/types/interactionTypes.d.ts +7 -9
- package/dist/types/legendTypes.d.ts +2 -2
- package/dist/types/networkTypes.d.ts +40 -30
- package/dist/types/ordinalTypes.d.ts +27 -18
- package/dist/types/xyTypes.d.ts +13 -16
- package/dist/useLegacyUnmountCallback.d.ts +2 -1
- package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
- package/dist/visualizationLayerBehavior/general.d.ts +8 -12
- 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 -66
- package/dist/AnnotationLayer/helpers.d.ts +0 -6
- package/dist/AnnotationLayer/index.d.ts +0 -2
- package/dist/Mark/Mark.d.ts +0 -3
- package/dist/Mark/Mark.types.d.ts +0 -10
- package/dist/Mark/constants/markTransition.d.ts +0 -10
- package/dist/Mark/markBehavior/drawing.d.ts +0 -13
- package/dist/SpanOrDiv.d.ts +0 -10
- package/dist/components/Annotation.d.ts +0 -3
- package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
- package/dist/components/Axis/Axis.d.ts +0 -7
- package/dist/components/Axis/axisTitle.d.ts +0 -10
- package/dist/components/Axis/index.d.ts +0 -2
- package/dist/components/Axis/summaryGraphic.d.ts +0 -17
- package/dist/components/Brush.d.ts +0 -12
- package/dist/components/DividedLine.d.ts +0 -16
- package/dist/components/FacetController.d.ts +0 -12
- package/dist/components/Frame.d.ts +0 -2
- package/dist/components/InteractionLayer.d.ts +0 -3
- package/dist/components/Legend.d.ts +0 -3
- package/dist/components/Mark/Mark.d.ts +0 -3
- package/dist/components/Mark/Mark.types.d.ts +0 -10
- package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
- package/dist/components/MiniMap.d.ts +0 -14
- package/dist/components/MinimapXYFrame.d.ts +0 -10
- package/dist/components/NetworkFrame.d.ts +0 -4
- package/dist/components/OrdinalFrame.d.ts +0 -4
- package/dist/components/ResponsiveFrame.d.ts +0 -22
- package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
- package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
- package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
- package/dist/components/ResponsiveXYFrame.d.ts +0 -6
- package/dist/components/SpanOrDiv.d.ts +0 -10
- package/dist/components/SparkFrame.d.ts +0 -14
- package/dist/components/SparkNetworkFrame.d.ts +0 -5
- package/dist/components/SparkOrdinalFrame.d.ts +0 -5
- package/dist/components/SparkXYFrame.d.ts +0 -5
- package/dist/components/TooltipPositioner/index.d.ts +0 -7
- package/dist/components/VisualizationLayer.d.ts +0 -33
- package/dist/components/XYFrame.d.ts +0 -4
- package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
- package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
- package/dist/components/annotationRules/baseRules.d.ts +0 -25
- package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
- package/dist/components/annotationRules/orframeRules.d.ts +0 -105
- package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
- package/dist/components/batchWork.d.ts +0 -6
- package/dist/components/constants/coordinateNames.d.ts +0 -8
- package/dist/components/constants/frame_props.d.ts +0 -4
- package/dist/components/constants/jsx.d.ts +0 -19
- package/dist/components/data/dataFunctions.d.ts +0 -46
- package/dist/components/data/multiAccessorUtils.d.ts +0 -1
- package/dist/components/data/unflowedFunctions.d.ts +0 -1
- package/dist/components/generic_utilities/functions.d.ts +0 -1
- package/dist/components/index.d.ts +0 -125
- package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
- package/dist/components/processing/InteractionItems.d.ts +0 -12
- package/dist/components/processing/network.d.ts +0 -114
- package/dist/components/processing/ordinal.d.ts +0 -102
- package/dist/components/processing/xyDrawing.d.ts +0 -135
- package/dist/components/semiotic.d.ts +0 -35
- package/dist/components/store/TooltipStore.d.ts +0 -2
- package/dist/components/store/createStore.d.ts +0 -1
- package/dist/components/svg/SvgHelper.d.ts +0 -37
- package/dist/components/svg/areaDrawing.d.ts +0 -31
- package/dist/components/svg/ckmeans.d.ts +0 -69
- package/dist/components/svg/frameFunctions.d.ts +0 -119
- package/dist/components/svg/lineDrawing.d.ts +0 -99
- package/dist/components/svg/networkDrawing.d.ts +0 -134
- package/dist/components/svg/pieceDrawing.d.ts +0 -13
- package/dist/components/svg/pieceLayouts.d.ts +0 -71
- package/dist/components/svg/summaryLayouts.d.ts +0 -74
- package/dist/components/types/annotationTypes.d.ts +0 -140
- package/dist/components/types/canvasTypes.d.ts +0 -9
- package/dist/components/types/generalTypes.d.ts +0 -236
- package/dist/components/types/interactionTypes.d.ts +0 -74
- package/dist/components/types/legendTypes.d.ts +0 -20
- package/dist/components/types/networkTypes.d.ts +0 -165
- package/dist/components/types/ordinalTypes.d.ts +0 -103
- package/dist/components/types/xyTypes.d.ts +0 -118
- package/dist/components/useBoundingRect.d.ts +0 -2
- package/dist/components/useDerivedStateFromProps.d.ts +0 -1
- package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
- package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
- package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
- package/dist/setupTests.d.ts +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinal.module.js","sources":["../src/components/constants/frame_props.ts","../src/components/Annotation.tsx","../src/components/svg/pieceDrawing.tsx","../src/components/annotationRules/baseRules.tsx","../src/components/data/multiAccessorUtils.ts","../src/components/svg/contourLayout.ts","../src/components/svg/hexbinLayout.tsx","../src/components/svg/areaDrawing.tsx","../src/components/visualizationLayerBehavior/general.tsx","../src/components/TooltipPositioner/index.tsx","../src/components/annotationRules/orframeRules.tsx","../src/components/annotationLayerBehavior/d3labeler.ts","../src/components/annotationLayerBehavior/annotationHandling.ts","../src/components/Legend.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/boxplotRenderer.tsx","../src/components/svg/ckmeans.ts","../src/components/svg/ckbinsRenderer.tsx","../src/components/svg/contourRenderer.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/svg/summaryAxis.tsx","../src/components/svg/swarmLayout.tsx","../src/components/svg/pieceLayouts.tsx","../src/components/generic_utilities/functions.ts","../src/components/processing/ordinalConstants.ts","../src/components/processing/ordinalOverlays.tsx","../src/components/processing/ordinalRenderPipeline.tsx","../src/components/processing/ordinal.tsx","../src/components/data/ordinalPipelineCache.ts","../src/components/useDerivedStateFromProps.ts","../src/components/useLegacyUnmountCallback.ts","../src/components/OrdinalFrame.tsx","../src/components/useBoundingRect.ts","../src/components/ResponsiveFrame.tsx","../src/components/ResponsiveOrdinalFrame.tsx","../src/components/SparkFrame.tsx","../src/components/SparkOrdinalFrame.ts"],"sourcesContent":["//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 { 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","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 * 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","export const findFirstAccessorValue = (accessorArray, data) => {\n for (let i = 0; i < accessorArray.length; i++) {\n const valueCheck = accessorArray[i](data)\n if (\n valueCheck !== undefined &&\n !Number.isNaN(valueCheck) &&\n valueCheck !== null\n )\n return valueCheck\n }\n\n return undefined\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 * 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","\"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\"\n\nimport Annotation from \"../Annotation\"\n\n\nimport { packEnclose } from \"d3-hierarchy\"\nimport { max, min, sum, extent } from \"d3-array\"\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\nimport { circleEnclosure, rectangleEnclosure } from \"./baseRules\"\nimport { findFirstAccessorValue } from \"../data/multiAccessorUtils\"\nimport { line } from \"d3-shape\"\nimport { curveHash } from \"../visualizationLayerBehavior/general\"\nimport TooltipPositioner from \"../TooltipPositioner\"\n\nconst derivePieceValue = (accessor, piece) => {\n const pieceVal = accessor(piece)\n return (pieceVal && pieceVal.toString && pieceVal.toString()) || pieceVal\n}\n\nfunction polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0\n\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians)\n }\n}\n\nfunction pieContentGenerator({ column }) {\n return (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n <p key=\"or-annotation-1\">{column.name}</p>\n <p key=\"or-annotation-2\">{`${(column.pct * 100).toFixed(0)}%`}</p>\n </div>\n )\n}\n\nfunction arcBracket({\n x,\n y,\n radius,\n startAngle,\n endAngle,\n inset,\n outset,\n curly = true\n}) {\n const start = polarToCartesian(x, y, radius + outset, endAngle)\n const end = polarToCartesian(x, y, radius + outset, startAngle)\n\n const innerStart = polarToCartesian(x, y, radius + outset - inset, endAngle)\n const innerEnd = polarToCartesian(x, y, radius + outset - inset, startAngle)\n\n const angleSize = endAngle - startAngle\n const largeArcFlag = angleSize <= 180 ? \"0\" : \"1\"\n let d\n if (curly) {\n const curlyOffset = Math.min(10, angleSize / 4)\n\n const middleLeft = polarToCartesian(\n x,\n y,\n radius + outset,\n (startAngle + endAngle) / 2 + curlyOffset\n )\n\n const middle = polarToCartesian(\n x,\n y,\n radius + outset + 10,\n (startAngle + endAngle) / 2\n )\n const middleRight = polarToCartesian(\n x,\n y,\n radius + outset,\n (startAngle + endAngle) / 2 - curlyOffset\n )\n\n d = [\n \"M\",\n innerStart.x,\n innerStart.y,\n \"L\",\n start.x,\n start.y,\n \"A\",\n radius + outset,\n radius + outset,\n 0,\n 0,\n 0,\n middleLeft.x,\n middleLeft.y,\n \"A\",\n radius + outset,\n radius + outset,\n 1,\n 0,\n 1,\n middle.x,\n middle.y,\n \"A\",\n radius + outset,\n radius + outset,\n 1,\n 0,\n 1,\n middleRight.x,\n middleRight.y,\n\n \"A\",\n radius + outset,\n radius + outset,\n 0,\n 0,\n 0,\n end.x,\n end.y,\n \"L\",\n innerEnd.x,\n innerEnd.y\n ].join(\" \")\n } else {\n d = [\n \"M\",\n innerStart.x,\n innerStart.y,\n \"L\",\n start.x,\n start.y,\n \"A\",\n radius + outset,\n radius + outset,\n 0,\n largeArcFlag,\n 0,\n end.x,\n end.y,\n \"L\",\n innerEnd.x,\n innerEnd.y\n ].join(\" \")\n }\n\n const midAngle = (startAngle + endAngle) / 2\n let textOffset, largeTextArcFlag, finalTextEnd, finalTextStart, arcFlip\n const lowerArc = midAngle > 90 && midAngle < 270\n if (lowerArc) {\n textOffset = 12\n largeTextArcFlag = endAngle - startAngle <= 180 ? \"0\" : \"1\"\n arcFlip = 0\n } else {\n largeTextArcFlag = endAngle - startAngle <= 180 ? \"0\" : \"1\"\n textOffset = 5\n arcFlip = 1\n }\n textOffset += curly ? 10 : 0\n const textStart = polarToCartesian(\n x,\n y,\n radius + outset + textOffset,\n endAngle\n )\n const textEnd = polarToCartesian(\n x,\n y,\n radius + outset + textOffset,\n startAngle\n )\n if (lowerArc) {\n finalTextStart = textStart\n finalTextEnd = textEnd\n } else {\n finalTextStart = textEnd\n finalTextEnd = textStart\n }\n\n const textD = [\n \"M\",\n finalTextStart.x,\n finalTextStart.y,\n \"A\",\n radius + outset + textOffset,\n radius + outset + textOffset,\n arcFlip,\n largeTextArcFlag,\n arcFlip,\n finalTextEnd.x,\n finalTextEnd.y\n ].join(\" \")\n\n return { arcPath: d, textArcPath: textD }\n}\n\nexport const getColumnScreenCoordinates = ({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n}) => {\n const column =\n typeof d.column === \"object\"\n ? d.column\n : projectedColumns[d.facetColumn] ||\n projectedColumns[findFirstAccessorValue(oAccessor, d)]\n\n if (!column) {\n return { coordinates: [0, 0], pieces: undefined, column: undefined }\n }\n const pieces = column.pieceData || column.pieces\n\n const positionValue =\n (summaryType.type && summaryType.type !== \"none\") ||\n [\"swarm\", \"point\", \"clusterbar\", \"timeline\"].find((p) => p === type.type)\n ? max(pieces.map((p) => p.scaledValue))\n : projection === \"horizontal\"\n ? max(\n pieces.map((p) =>\n p.value >= 0 ? p.scaledValue + p.bottom : p.bottom\n )\n )\n : min(\n pieces.map((p) =>\n p.value >= 0 ? p.bottom - p.scaledValue : p.bottom\n )\n )\n\n let xPosition = column.middle + adjustedPosition[0]\n let yPosition =\n (summaryType.type && summaryType.type !== \"none\") ||\n [\"swarm\", \"point\", \"clusterbar\", \"timeline\"].find((p) => p === type.type)\n ? adjustedSize[1] - positionValue\n : positionValue\n yPosition += 10\n\n if (projection === \"horizontal\") {\n yPosition = column.middle\n xPosition = positionValue + adjustedPosition[0]\n } else if (projection === \"radial\") {\n const { pieArc } = column\n\n const { translate, outerPoint, centroid } = pieArc\n\n xPosition = (centroid[0] + outerPoint[0]) / 2 + translate[0]\n yPosition = (centroid[1] + outerPoint[1]) / 2 + translate[1]\n }\n return { coordinates: [xPosition, yPosition], pieces, column }\n}\n\nexport const svgHighlightRule = ({\n d,\n pieceIDAccessor,\n orFrameRender,\n oAccessor\n}) => {\n const thisID = pieceIDAccessor(d)\n const thisO = findFirstAccessorValue(oAccessor, d)\n\n const { pieces } = orFrameRender\n const { styleFn } = pieces\n\n const foundPieces =\n (pieces &&\n pieces.data\n .filter((p) => {\n return (\n (thisID === undefined ||\n pieceIDAccessor({ ...p.piece, ...p.piece.data }) === thisID) &&\n (thisO === undefined ||\n findFirstAccessorValue(oAccessor, p.piece.data) === thisO)\n )\n })\n .map((p, q) => {\n let styleObject = {\n style: styleFn({ ...p.piece, ...p.piece.data })\n }\n if (d.style && typeof d.style === \"function\") {\n styleObject = {\n style: {\n ...styleObject,\n ...d.style({ ...p.piece, ...p.piece.data })\n }\n }\n } else if (d.style) {\n styleObject = { style: { ...styleObject, ...d.style } }\n }\n const styledD = { ...p.renderElement, ...styleObject }\n const className = `highlight-annotation ${\n (d.class &&\n typeof d.class === \"function\" &&\n d.class(p.piece.data, q)) ||\n (d.class && d.class) ||\n \"\"\n }`\n\n if (React.isValidElement(p.renderElement)) {\n return React.cloneElement(p.renderElement, {\n ...styleObject,\n className\n })\n }\n\n const { markType, ...restProps } = styledD\n return React.createElement(markType || 'path', {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2px\",\n key: `highlight-piece-${q}`,\n ...restProps,\n className\n })\n })) ||\n []\n\n return [...foundPieces]\n}\n\nexport const findIDPiece = (pieceIDAccessor, oColumn, d) => {\n const foundIDValue = pieceIDAccessor(d)\n\n const pieceID = foundIDValue === \"\" && d.rName ? d.rName : foundIDValue\n\n const basePieces =\n oColumn &&\n oColumn.pieceData.filter(\n (r) => r.rName === pieceID || pieceIDAccessor(r.data) === pieceID\n )\n\n if (\n pieceID === \"\" ||\n basePieces === undefined ||\n basePieces === false ||\n basePieces.length !== 1\n )\n return d\n\n const basePiece = basePieces[0]\n\n const reactAnnotationProps = [\n \"type\",\n \"label\",\n \"note\",\n \"connector\",\n \"disabled\",\n \"color\",\n \"subject\"\n ]\n\n if (basePiece) {\n reactAnnotationProps.forEach((prop) => {\n if (d[prop]) basePiece[prop] = d[prop]\n })\n }\n\n return basePiece\n}\n\nexport const screenProject = ({\n p,\n adjustedSize,\n rScale,\n oColumn,\n rAccessor,\n idPiece,\n projection,\n rScaleType\n}) => {\n const basePValue = findFirstAccessorValue(rAccessor, p) || p.value\n const pValue = Array.isArray(basePValue)\n ? Math.max(...basePValue)\n : basePValue\n\n let o\n if (oColumn) {\n o = oColumn.middle\n } else {\n o = 0\n }\n\n if (oColumn && projection === \"radial\") {\n return pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n oColumn.pct_middle,\n idPiece && (idPiece.x === undefined ? idPiece.scaledValue : idPiece.x)\n ? idPiece.x / 2 || (idPiece.bottom + idPiece.scaledValue / 2) / 2\n : pValue / 2\n )\n }\n if (projection === \"horizontal\") {\n return [\n idPiece && idPiece.scaledEndValue\n ? idPiece.scaledEndValue\n : idPiece && idPiece.scaledValue\n ? idPiece.value >= 0\n ? idPiece.bottom + idPiece.scaledValue\n : idPiece.bottom\n : rScale(pValue),\n o\n ]\n }\n const newScale = rScaleType\n .copy()\n .domain(rScale.domain())\n .range(rScale.range().reverse())\n\n return [\n o,\n idPiece && (idPiece.x === undefined ? idPiece.scaledValue : idPiece.x)\n ? idPiece.y === undefined\n ? idPiece.value >= 0\n ? idPiece.bottom - idPiece.scaledValue\n : idPiece.bottom\n : idPiece.y\n : newScale(pValue)\n ]\n}\n\nexport const svgORRule = ({ d, i, screenCoordinates, projection }) => {\n return (\n <text \n key={`${d.label}annotationtext${i}`}\n x={parseInt(\n screenCoordinates[0] + (projection === \"horizontal\" ? 10 : 0)\n )}\n y={parseInt(screenCoordinates[1] + (projection === \"vertical\" ? 10 : 0))}\n className={`annotation annotation-or-label ${d.className || \"\"}`}\n data-testid=\"annotation-or-label\"\n textAnchor=\"middle\"\n >\n {d.label}\n </text>\n )\n}\n\nexport const basicReactAnnotationRule = ({ d, i, screenCoordinates }) => {\n const noteData = Object.assign(\n {\n dx: 0,\n dy: 0,\n note: { label: d.label, orientation: d.orientation, align: d.align },\n connector: { end: \"arrow\" }\n },\n d,\n {\n x: screenCoordinates[0],\n y: screenCoordinates[1],\n type: typeof d.type === \"function\" ? d.type : undefined,\n screenCoordinates\n }\n )\n if (d.fixedX) noteData.x = d.fixedX\n if (d.fixedY) noteData.y = d.fixedY\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgEncloseRule = ({ d, i, screenCoordinates }) => {\n const circle = packEnclose(\n screenCoordinates.map((p) => ({ x: p[0], y: p[1], r: 2 }))\n )\n\n return circleEnclosure({ d, i, circle })\n}\n\nexport const svgRRule = ({\n d,\n i,\n screenCoordinates,\n rScale,\n rAccessor,\n adjustedSize,\n adjustedPosition,\n projection\n}) => {\n let x, y, xPosition, yPosition, subject, dx, dy\n if (projection === \"radial\") {\n return (\n <Annotation\n key={d.key || `annotation-${i}`}\n noteData={Object.assign(\n {\n dx: 50,\n dy: 50,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-circle\",\n subject: {\n radius: rScale(findFirstAccessorValue(rAccessor, d)) / 2,\n radiusPadding: 0\n },\n x: adjustedSize[0] / 2,\n y: adjustedSize[1] / 2\n }\n )}\n />\n )\n } else if (projection === \"horizontal\") {\n dx = 50\n dy = 50\n yPosition = d.offset || i * 25\n x = screenCoordinates[0]\n y = yPosition\n subject = {\n x,\n y1: 0,\n y2: adjustedSize[1] + adjustedPosition[1]\n }\n } else {\n dx = 50\n dy = -20\n xPosition = d.offset || i * 25\n y = screenCoordinates[1]\n x = xPosition\n subject = {\n y,\n x1: 0,\n x2: adjustedSize[0] + adjustedPosition[0]\n }\n }\n\n const noteData = Object.assign(\n {\n dx,\n dy,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"xy-threshold\",\n x,\n y,\n subject\n }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgCategoryRule = ({\n projection,\n d,\n i,\n categories,\n adjustedSize\n}) => {\n const {\n bracketType = \"curly\",\n position = projection === \"vertical\" ? \"top\" : \"left\",\n depth = 30,\n offset = 0,\n padding = 0\n } = d\n const actualCategories = Array.isArray(d.categories)\n ? d.categories\n : [d.categories]\n\n const cats = actualCategories.map((c) => categories[c])\n\n if (projection === \"radial\") {\n const arcPadding = padding / adjustedSize[1]\n const leftX = min(\n cats.map((p) => p.pct_start + p.pct_padding / 2 + arcPadding / 2)\n )\n const rightX = max(\n cats.map((p) => p.pct_start + p.pct - p.pct_padding / 2 - arcPadding / 2)\n )\n\n const chartSize = Math.min(adjustedSize[0], adjustedSize[1]) / 2\n const centerX = adjustedSize[0] / 2\n const centerY = adjustedSize[1] / 2\n\n const { arcPath, textArcPath } = arcBracket({\n x: 0,\n y: 0,\n radius: chartSize,\n startAngle: leftX * 360,\n endAngle: rightX * 360,\n inset: depth,\n outset: offset,\n curly: bracketType === \"curly\"\n })\n\n const textPathID = `text-path-${i}-${Math.random()}`\n return (\n <g\n className=\"category-annotation annotation\"\n transform={`translate(${centerX},${centerY})`}\n >\n <path d={arcPath} fill=\"none\" stroke=\"currentColor\" />\n <path id={textPathID} d={textArcPath} style={{ display: \"none\" }} />\n <text font-size=\"12.5\">\n <textPath\n startOffset={\"50%\"}\n textAnchor={\"middle\"}\n xlinkHref={`#${textPathID}`}\n >\n {d.label}\n </textPath>\n </text>\n </g>\n )\n } else {\n const leftX = min(cats.map((p) => p.x))\n const rightX = max(cats.map((p) => p.x + p.width))\n\n if (projection === \"vertical\") {\n let yPosition = position === \"top\" ? 0 : adjustedSize[1]\n yPosition += position === \"top\" ? -offset : offset\n const noteData = {\n type: \"bracket\",\n y: yPosition,\n x: leftX - padding,\n note: {\n title: d.title || d.label,\n label: d.title ? d.label : undefined\n },\n subject: {\n type: bracketType,\n width: rightX - leftX + padding * 2,\n depth: position === \"top\" ? -depth : depth\n }\n }\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n } else if (projection === \"horizontal\") {\n let yPosition = position === \"left\" ? 0 : adjustedSize[0]\n yPosition += position === \"left\" ? -offset : offset\n const noteData = {\n type: \"bracket\",\n x: yPosition,\n y: leftX - padding,\n note: {\n title: d.title || d.label,\n label: d.title ? d.label : undefined\n },\n subject: {\n type: bracketType,\n height: rightX - leftX + padding * 2,\n depth: position === \"left\" ? -depth : depth\n }\n }\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n }\n }\n}\n\nexport const htmlFrameHoverRule = ({\n d,\n i,\n rAccessor,\n oAccessor,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition,\n pieceIDAccessor,\n projectedColumns,\n adjustedSize,\n rScale,\n type,\n rScaleType\n}) => {\n tooltipContent =\n tooltipContent === \"pie\"\n ? () =>\n pieContentGenerator({\n column: d.column\n })\n : tooltipContent\n //To string because React gives a DOM error if it gets a date\n let contentFill\n const pO = findFirstAccessorValue(oAccessor, d) || d.column\n const oColumn = projectedColumns[pO]\n\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, d)\n\n if (!idPiece) {\n return null\n }\n\n const screenCoordinates =\n ((type.type === \"clusterbar\" ||\n type.type === \"point\" ||\n type.type === \"swarm\") &&\n d.x !== undefined &&\n d.y !== undefined) ||\n d.isSummaryData\n ? [d.x, d.y]\n : screenProject({\n p: d,\n adjustedSize,\n rScale,\n oColumn,\n rAccessor,\n idPiece,\n projection,\n rScaleType\n })\n\n if (d.isSummaryData) {\n let summaryContent = d.label\n\n if (d.pieces && d.pieces.length !== 0) {\n if (d.pieces.length === 1) {\n summaryContent = []\n rAccessor.forEach((actualRAccessor) => {\n summaryContent.push(actualRAccessor(d.pieces[0].data))\n })\n } else {\n summaryContent = []\n rAccessor.forEach((actualRAccessor) => {\n const pieceData = extent(\n d.pieces.map((p) => p.data).map(actualRAccessor)\n )\n summaryContent.push(`From ${pieceData[0]} to ${pieceData[1]}`)\n })\n }\n }\n const summaryLabel = <p key=\"html-annotation-content-2\">{summaryContent}</p>\n contentFill = [\n <p key=\"html-annotation-content-1\">{d.key}</p>,\n summaryLabel,\n <p key=\"html-annotation-content-3\">{d.value}</p>\n ]\n } else if (d.data) {\n contentFill = []\n\n oAccessor.forEach((actualOAccessor, i) => {\n if (idPiece.data) {\n const pieceOVal = derivePieceValue(actualOAccessor, idPiece.data)\n contentFill.push(\n <p key={`html-annotation-content-o-${i}`}>{pieceOVal}</p>\n )\n }\n })\n\n rAccessor.forEach((actualRAccessor, i) => {\n if (idPiece.data) {\n const pieceRVal = derivePieceValue(actualRAccessor, idPiece.data)\n contentFill.push(\n <p key={`html-annotation-content-r-${i}`}>{pieceRVal}</p>\n )\n }\n })\n } else if (d.label) {\n contentFill = d.label\n }\n let content = (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n {contentFill}\n </div>\n )\n\n if (d.type === \"frame-hover\" && tooltipContent && idPiece) {\n const tooltipContentArgs = {\n ...idPiece,\n ...idPiece.data,\n column: oColumn,\n pieces: oColumn ? oColumn.pieceData.map(p => p.data) : []\n }\n content = optimizeCustomTooltipPosition ? (\n <TooltipPositioner\n tooltipContent={tooltipContent}\n tooltipContentArgs={tooltipContentArgs}\n />\n ) : (\n tooltipContent(tooltipContentArgs)\n )\n }\n\n const xPos = parseInt(screenCoordinates[0])\n const flipped = adjustedSize && xPos > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${parseInt(screenCoordinates[1])}px`\n }\n\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - xPos}px`\n } else {\n tooltipStyle.left = `${xPos}px`\n }\n\n return (\n <div\n key={`xylabel-${i}`}\n className={`annotation annotation-or-label ${projection} ${\n d.className || \"\"\n }`}\n data-testid=\"annotation-or-label\"\n style={tooltipStyle}\n >\n {content}\n </div>\n )\n}\n\nexport const htmlColumnHoverRule = ({\n d,\n i,\n summaryType,\n oAccessor,\n type,\n adjustedPosition,\n adjustedSize,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition,\n projectedColumns\n}) => {\n //we need to ignore negative pieces to make sure the hover behavior populates on top of the positive bar\n const {\n coordinates: [xPosition, yPosition],\n pieces,\n column\n } = getColumnScreenCoordinates({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n })\n\n if (column === undefined) {\n return null\n }\n //To string because React gives a DOM error if it gets a date\n const oContent = []\n oAccessor.forEach((actualOAccessor, i) => {\n if (pieces[0].data) {\n const pieceOVal = derivePieceValue(actualOAccessor, pieces[0].data)\n oContent.push(<p key={`or-annotation-o-${i}`}>{pieceOVal}</p>)\n }\n })\n\n let content = (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n {oContent}\n <p key=\"or-annotation-2\">\n {sum(pieces.map((p) => p.value).filter((p) => p > 0))}\n </p>\n </div>\n )\n\n if (d.type === \"column-hover\" && tooltipContent) {\n if (tooltipContent === \"pie\") {\n tooltipContent = pieContentGenerator\n }\n\n const tooltipContentArgs = {\n ...d,\n pieces: pieces.map((p) => p.data),\n column,\n oAccessor\n }\n content = optimizeCustomTooltipPosition ? (\n <TooltipPositioner\n tooltipContent={tooltipContent}\n tooltipContentArgs={tooltipContentArgs}\n />\n ) : (\n tooltipContent(tooltipContentArgs)\n )\n } else if (d.label) {\n content = (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n {d.label}\n </div>\n )\n }\n\n const xPos = parseInt(xPosition)\n const flipped = adjustedSize && xPos > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${parseInt(yPosition)}px`\n }\n\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - xPos}px`\n } else {\n tooltipStyle.left = `${xPos}px`\n }\n\n return (\n <div\n key={`orlabel-${i}`}\n className={`annotation annotation-or-label ${projection} ${\n d.className || \"\"\n }`}\n data-testid=\"annotation-or-label\"\n style={tooltipStyle}\n >\n {content}\n </div>\n )\n}\n\nexport const svgRectEncloseRule = ({ d, i, screenCoordinates }) => {\n const bboxNodes = screenCoordinates.map((p) => {\n return {\n x0: (p.x0 = p[0]),\n x1: (p.x1 = p[0]),\n y0: (p.y0 = p[1]),\n y1: (p.y1 = p[1])\n }\n })\n\n return rectangleEnclosure({ bboxNodes, d, i })\n}\n\nexport const svgOrdinalLine = ({ screenCoordinates, d, voronoiHover }) => {\n const lineGenerator = line()\n .x((d) => d[0])\n .y((d) => d[1])\n if (d.curve) {\n const interpolator = curveHash[d.curve] || d.curve\n lineGenerator.curve(interpolator)\n }\n\n const lineStyle =\n typeof d.lineStyle === \"function\" ? d.lineStyle(d) : d.lineStyle || {}\n\n return (\n <g key=\"ordinal-line-annotation\">\n <path\n stroke=\"currentColor\"\n fill=\"none\"\n style={lineStyle}\n d={lineGenerator(screenCoordinates)}\n />\n {(d.points || d.interactive) &&\n screenCoordinates.map((p, q) => {\n const pointStyle =\n typeof d.pointStyle === \"function\"\n ? d.pointStyle(d.coordinates[q], q)\n : d.pointStyle || {}\n\n return (\n <g\n transform={`translate(${p[0]},${p[1]})`}\n key={`ordinal-line-point-${q}`}\n >\n {d.points && (\n <circle style={pointStyle} r={d.radius || 5} fill=\"currentColor\" />\n )}\n {d.interactive && (\n <circle\n style={{ pointerEvents: \"all\" }}\n r={d.hoverRadius || 15}\n opacity={0}\n onMouseEnter={() =>\n voronoiHover({\n type: \"frame-hover\",\n ...d.coordinates[q],\n data: d.coordinates[q]\n })\n }\n onMouseOut={() => voronoiHover()}\n />\n )}\n </g>\n )\n })}\n </g>\n )\n}\n","// 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","\"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 { 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 { 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\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","import * as React from \"react\"\nimport Axis from \"../Axis\"\n\n/**\n * Generates an Axis component for summary visualizations\n * This function creates the actual Axis component with the provided props\n */\nexport function axisGenerator(axisProps, i, axisScale) {\n return (\n <Axis\n label={axisProps.label}\n key={axisProps.key || `orframe-summary-axis-${i}`}\n orient={axisProps.orient}\n size={axisProps.size}\n ticks={axisProps.ticks}\n tickSize={axisProps.tickSize}\n tickFormat={axisProps.tickFormat}\n tickValues={axisProps.tickValues}\n rotate={axisProps.rotate}\n scale={axisScale}\n className={axisProps.className}\n />\n )\n}\n","import * as React from \"react\"\nimport { forceSimulation, forceX, forceY, forceCollide } from \"d3-force\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\n\nexport function swarmLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n\n rScale\n}) {\n let allCalculatedPieces = []\n\n const columnKeys = Object.keys(data)\n\n // Calculate total data points for adaptive iterations\n const totalDataPoints = columnKeys.reduce((sum, key) => {\n return sum + (data[key].pieceData?.length || 0)\n }, 0)\n\n // Adaptive iteration count: reduce iterations for large datasets to maintain performance\n const adaptiveIterations = Math.max(\n 30,\n Math.min(120, Math.floor(120 - (totalDataPoints - 100) / 20))\n )\n\n const iterations = type.iterations !== undefined ? type.iterations : adaptiveIterations\n\n columnKeys.forEach((key, ordsetI) => {\n const oColumn = data[key]\n const anglePiece = 1 / columnKeys.length\n const oData = oColumn.pieceData\n const adjustedColumnWidth = oColumn.width\n\n const circleRadius =\n type.r ||\n Math.max(2, Math.min(5, (4 * adjustedColumnWidth) / oData.length))\n\n const simulation = forceSimulation(oData)\n .force(\"y\", forceY((d) => d.scaledValue).strength(type.strength || 2))\n .force(\"x\", forceX(oColumn.middle))\n .force(\"collide\", forceCollide(circleRadius))\n .stop()\n\n if (projection === \"vertical\") {\n simulation.force(\n \"y\",\n forceY((d) => d.scaledVerticalValue).strength(type.strength || 2)\n )\n }\n\n for (let i = 0; i < iterations; ++i) simulation.tick()\n\n const calculatedPieces = oData.map((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.y\n\n if (projection === \"horizontal\") {\n yPosition = piece.x\n xPosition = piece.y\n } else if (projection === \"radial\") {\n const angle = oColumn.pct_middle\n xPosition =\n ((piece.x - oColumn.middle) / adjustedColumnWidth) * anglePiece\n const rPosition = piece.scaledValue / 2\n const xAngle = angle + xPosition\n const baseCentroid = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n xAngle,\n rPosition\n )\n xPosition = baseCentroid[0]\n yPosition = baseCentroid[1]\n }\n\n const actualCircleRadius =\n typeof circleRadius === \"function\"\n ? circleRadius(piece, i)\n : circleRadius\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n x: xPosition,\n y: yPosition,\n r: circleRadius,\n\n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n markType: \"rect\",\n key: `piece-${piece.renderKey}`,\n height: actualCircleRadius * 2,\n width: actualCircleRadius * 2,\n x: xPosition - actualCircleRadius,\n y: yPosition - actualCircleRadius,\n rx: actualCircleRadius,\n ry: actualCircleRadius,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy: {\n x: xPosition,\n y: yPosition\n },\n piece,\n renderValue,\n renderElement: renderElementObject\n }\n\n return calculatedPiece\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n","import * as React from \"react\"\nimport { /*area, curveCatmullRom,*/ arc } from \"d3-shape\"\nimport pathBounds from \"svg-path-bounding-box\"\nimport { scaleLinear } from \"d3-scale\"\nimport { arcTweener } from \"./SvgHelper\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\n\n// RENAME XY to drawingProps\n\ntype PieceXYProp = {\n x?: number\n y?: number\n middle?: number\n height?: number\n width?: number\n dx?: number\n dy?: number\n}\n\nconst twoPI = Math.PI * 2\n\nconst radialBarFeatureGenerator = ({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n}) => {\n let { innerRadius } = type\n const { offsetAngle = 0, angleRange = [0, 360] } = type\n const offsetPct = offsetAngle / 360\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 let innerSize =\n type.type === \"clusterbar\"\n ? 0\n : type.type === \"timeline\"\n ? piece.scaledValue / 2\n : piece.bottom / 2\n let outerSize =\n type.type === \"clusterbar\"\n ? piece.scaledValue / 2\n : type.type === \"timeline\"\n ? piece.scaledEndValue / 2\n : piece.scaledValue / 2 + piece.bottom / 2\n\n if (innerRadius) {\n innerRadius = parseInt(innerRadius, 10)\n const canvasRadius = adjustedSize[0] / 2\n const donutMod = (canvasRadius - innerRadius) / canvasRadius\n innerSize = innerSize * donutMod + innerRadius\n outerSize = outerSize * donutMod + innerRadius\n }\n\n const arcGenerator = arc().innerRadius(innerSize).outerRadius(outerSize)\n\n const angle =\n (type.type === \"clusterbar\"\n ? (ordset.pct - ordset.pct_padding) / ordset.pieceData.length\n : ordset.pct) * rangeMod\n\n const startAngle = adjustedPct(\n type.type === \"clusterbar\"\n ? ordset.pct_start +\n (i / ordset.pieceData.length) * (ordset.pct - ordset.pct_padding)\n : ordset.pct === 1\n ? 0\n : ordset.pct_start + offsetPct\n )\n\n const endAngle =\n ordset.pct === 1\n ? rangePct[1]\n : Math.max(startAngle, startAngle + angle - ordset.pct_padding / 2)\n\n const startAngleFinal = startAngle * twoPI\n const endAngleFinal = endAngle * twoPI\n\n const markD = arcGenerator({\n startAngle: startAngleFinal,\n endAngle: endAngleFinal\n })\n\n const centroid = arcGenerator.centroid({\n startAngle: startAngleFinal,\n endAngle: endAngleFinal\n })\n\n const xOffset = adjustedSize[0] / 2\n const yOffset = adjustedSize[1] / 2\n const xPosition = centroid[0] + xOffset\n const yPosition = centroid[1] + yOffset\n\n const outerPoint = pointOnArcAtAngle(\n [0, 0],\n (startAngle + endAngle) / 2,\n piece.scaledValue / 2\n )\n\n const xy = {\n arcGenerator: arcGenerator,\n startAngle: startAngleFinal,\n endAngle: endAngleFinal,\n dx: outerPoint[0],\n dy: outerPoint[1]\n }\n const translate = `translate(${xOffset},${yOffset})`\n\n return {\n xPosition,\n yPosition,\n xy,\n translate,\n tx: xOffset,\n ty: yOffset,\n markProps: {\n markType: \"path\",\n d: markD,\n transform: translate\n }\n }\n}\n\nconst iconBarCustomMark =\n ({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n }) =>\n (piece, i, xy) => {\n const iconD =\n typeof type.icon === \"string\" ? type.icon : type.icon(piece.data, i)\n const { iconPadding = 1, resize = \"auto\" } = type\n\n const iconBounds = pathBounds(iconD)\n const iconTranslate = [\n 0 - iconBounds.x1 + iconPadding,\n 0 - iconBounds.y1 + iconPadding\n ]\n iconBounds.height += iconPadding * 2\n iconBounds.width += iconPadding * 2\n\n const icons = []\n\n let stackedIconSize = iconBounds.height\n let stackedIconNumber = 1\n let iconScale = 1\n const spaceToUse = projection === \"horizontal\" ? finalHeight : finalWidth\n const sizeToFit =\n projection === \"horizontal\" ? iconBounds.height : iconBounds.width\n const sizeToPad =\n projection === \"horizontal\" ? iconBounds.width : iconBounds.height\n const spaceToFill = projection === \"horizontal\" ? xy.width : xy.height\n const spaceToStackFill = projection === \"horizontal\" ? xy.height : xy.width\n if (resize === \"auto\") {\n stackedIconSize = spaceToUse / sizeToFit\n if (stackedIconSize < 1) {\n iconScale = stackedIconSize\n } else {\n stackedIconNumber = Math.floor(stackedIconSize)\n iconScale =\n 1 + (stackedIconSize - stackedIconNumber) / stackedIconNumber\n }\n } else if (resize === \"fixed\") {\n iconScale = spaceToUse / sizeToFit\n }\n\n // const finalIconWidth = iconBounds.width * iconScale;\n const finalIconHeight = iconBounds.height * iconScale\n\n const spaceToStep = sizeToPad * iconScale\n const spaceToStackStep = sizeToFit * iconScale\n\n iconTranslate[0] = iconTranslate[0] * iconScale\n iconTranslate[1] = iconTranslate[1] * iconScale\n\n const randoClipID = `iso-clip-${i}-${Math.random()}`\n const clipPath = `url(#${randoClipID})`\n if (xy.width > 0) {\n icons.push(\n <clipPath key={randoClipID} id={randoClipID}>\n <rect x={0} y={0} width={xy.width} height={xy.height} />\n </clipPath>\n )\n const iconPieces = []\n const stepStart =\n projection === \"horizontal\" ? 0 : xy.height - finalIconHeight\n const stepper = projection === \"horizontal\" ? spaceToStep : -spaceToStep\n const stepTest =\n projection === \"horizontal\"\n ? (step, spaceToFillValue) => step < spaceToFillValue\n : (step, spaceToFillValue, stepperValue) => step > 0 + stepperValue\n\n for (\n let step = stepStart;\n stepTest(step, spaceToFill, stepper);\n step += stepper\n ) {\n for (\n let stack = 0;\n stack < spaceToStackFill;\n stack += spaceToStackStep\n ) {\n const stepX = projection === \"horizontal\" ? step : stack\n const stepY = projection === \"horizontal\" ? stack : step\n const paddedX = stepX + iconTranslate[0]\n const paddedY = stepY + iconTranslate[1]\n iconPieces.push(\n <path \n key={`icon-${step}-${stack}`}\n transform={`translate(${paddedX},${paddedY}) scale(${iconScale})`}\n vectorEffect={\"non-scaling-stroke\"}\n d={iconD}\n style={styleFn({ ...piece, ...piece.data }, i)}\n className={classFn({ ...piece, ...piece.data }, i)}\n />\n )\n }\n }\n icons.push(\n <g key={`clipped-region-${i}`} clipPath={clipPath}>\n {iconPieces}\n </g>\n )\n }\n return icons\n }\n\nexport function clusterBarLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n\n const barColumnWidth = Math.max(ordset.width, 1)\n const clusterWidth = barColumnWidth / ordset.pieceData.length\n\n let currentX = 0\n let currentY = 0\n\n const calculatedPieces = ordset.pieceData.map((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.base\n let finalWidth = clusterWidth\n let finalHeight = piece.scaledValue\n let xy: PieceXYProp = { x: 0, y: 0 }\n if (!piece.negative) {\n yPosition -= piece.scaledValue\n }\n\n if (projection === \"horizontal\") {\n //TODO: NEGATIVE FOR HORIZONTAL\n yPosition = piece.x\n xPosition = piece.base\n finalHeight = clusterWidth\n finalWidth = piece.scaledValue\n xy.x = piece.scaledValue\n if (piece.negative) {\n xPosition -= piece.scaledValue\n xy.x = xPosition\n }\n }\n\n let translate,\n markProps = {},\n pieceTx = 0,\n pieceTy = 0\n\n if (projection === \"radial\") {\n let tx, ty\n ;({ xPosition, yPosition, markProps, xy, tx, ty } = radialBarFeatureGenerator({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n xy.x = xPosition\n } else {\n xPosition += currentX\n yPosition += currentY\n markProps = {\n markType: \"rect\",\n x: xPosition,\n y: yPosition,\n width: Math.max(0, finalWidth),\n height: Math.max(0, finalHeight),\n rx: 0,\n ry: 0\n }\n if (projection === \"vertical\") {\n xy.x = xPosition\n }\n }\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n xy.y = yPosition\n xy.middle = clusterWidth / 2\n xy.height = finalHeight\n xy.width = finalWidth\n\n if (type.icon && projection !== \"radial\") {\n type.customMark = iconBarCustomMark({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n })\n } else if (type.icon && projection === \"radial\") {\n console.error(\"Icons are currently unsupported on radial charts\")\n }\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={\n translate ? translate : `translate(${xPosition},${yPosition})`\n }\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n transform: translate,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...markProps,\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n }\n if (projection === \"horizontal\") {\n currentY += finalHeight\n } else {\n currentX += finalWidth\n }\n\n // currentOffset += pieceSize\n return calculatedPiece\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n return allCalculatedPieces\n}\n\nexport function barLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n const keys = Object.keys(data)\n let allCalculatedPieces = []\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n const barColumnWidth = Math.max(ordset.width, 1)\n\n ordset.pieceData.forEach((piece, i) => {\n const pieceSize = piece.scaledValue\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.bottom\n let finalWidth = barColumnWidth\n let finalHeight = pieceSize\n\n let xy = {}\n\n if (!piece.negative) {\n yPosition -= piece.scaledValue\n }\n\n if (projection === \"vertical\") {\n xy = {\n x: xPosition,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n } else if (projection === \"horizontal\") {\n yPosition = piece.x\n xPosition = piece.bottom\n finalHeight = barColumnWidth\n finalWidth = pieceSize\n\n xy = {\n x: xPosition + piece.scaledValue,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n if (piece.negative) {\n xPosition = piece.bottom - piece.scaledValue\n }\n }\n\n let markProps,\n pieceTx = 0,\n pieceTy = 0\n\n if (projection === \"radial\") {\n let tx, ty\n ;({ markProps, xPosition, yPosition, tx, ty } = radialBarFeatureGenerator({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n finalHeight = undefined\n finalWidth = undefined\n\n xy = {\n x: xPosition,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n } else {\n markProps = {\n markType: \"rect\",\n x: xPosition,\n y: yPosition,\n width: Math.max(0, finalWidth),\n height: Math.max(0, finalHeight),\n rx: 0,\n ry: 0\n }\n }\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n if (type.icon && projection !== \"radial\") {\n type.customMark = iconBarCustomMark({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n })\n } else if (type.icon && projection !== \"horizontal\") {\n console.error(\"Icons are currently unsupported in radial charts\")\n }\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n role=\"img\"\n tabIndex={-1}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners,\n ...markProps\n }\n )\n\n allCalculatedPieces.push({\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n })\n })\n })\n\n return allCalculatedPieces\n}\n\nexport function timelineLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n const calculatedPieces = []\n\n ordset.pieceData.forEach((piece, i) => {\n let scaledValue, scaledBottom\n let pieceTx = 0, pieceTy = 0\n\n const renderValue = renderMode && renderMode(piece.data, i)\n let xPosition = ordset.x\n let height = piece.scaledEndValue - piece.scaledValue\n let yPosition = piece.scaledVerticalValue - height\n let width = ordset.width\n let markProps: {\n markType: string\n height?: number\n width?: number\n x?: number\n y?: number\n d?: string\n transform?: string\n } = {\n markType: \"rect\",\n height: height < 0 ? -height : height,\n width,\n x: xPosition,\n y: height < 0 ? yPosition + height : yPosition\n }\n\n if (projection === \"horizontal\") {\n yPosition = ordset.x\n xPosition = piece.scaledValue\n scaledValue = piece.scaledEndValue - piece.scaledValue\n scaledBottom = piece.scaledBottom\n width = piece.scaledEndValue - piece.scaledValue\n height = ordset.width\n markProps = {\n markType: \"rect\",\n height,\n width: width < 0 ? -width : width,\n x: width < 0 ? xPosition + width : xPosition,\n y: yPosition\n }\n } else if (projection === \"radial\") {\n let tx, ty\n ;({ markProps, tx, ty } = radialBarFeatureGenerator({\n piece,\n type,\n ordset,\n adjustedSize,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n }\n\n //Only return the actual piece if you're rendering points, otherwise you just needed to iterate and calculate the points for the contour summary type\n\n const eventListeners = eventListenersGenerator(piece, i)\n const xy = {\n x: xPosition,\n y: yPosition,\n scaledValue,\n scaledBottom,\n height\n }\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition + height})`}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...markProps,\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n }\n\n calculatedPieces.push(calculatedPiece)\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n\nexport function pointLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n const circleRadius = type.r || 3\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n\n const calculatedPieces = []\n\n ordset.pieceData.forEach((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = ordset.middle\n let yPosition = piece.scaledVerticalValue\n\n if (projection === \"horizontal\") {\n yPosition = ordset.middle\n xPosition = piece.scaledValue\n } else if (projection === \"radial\") {\n const angle = ordset.pct_middle\n\n const rPosition = piece.scaledValue / 2\n const baseCentroid = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n angle,\n rPosition\n )\n xPosition = baseCentroid[0]\n yPosition = baseCentroid[1]\n }\n\n //Only return the actual piece if you're rendering points, otherwise you just needed to iterate and calculate the points for the contour summary type\n const actualCircleRadius =\n typeof circleRadius === \"function\"\n ? circleRadius(piece, i)\n : circleRadius\n const eventListeners = eventListenersGenerator(piece, i)\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {type.customMark(\n {\n ...piece.data,\n ...piece,\n x: xPosition,\n y: yPosition,\n width: ordset.width\n },\n i,\n {\n r: circleRadius,\n x: xPosition,\n y: yPosition,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n markType: \"rect\",\n key: `piece-${piece.renderKey}`,\n height: actualCircleRadius * 2,\n width: actualCircleRadius * 2,\n x: xPosition - actualCircleRadius,\n y: yPosition - actualCircleRadius,\n rx: actualCircleRadius,\n ry: actualCircleRadius,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy: {\n x: xPosition,\n y: yPosition\n },\n piece,\n renderValue,\n renderElement: renderElementObject\n }\n\n calculatedPieces.push(calculatedPiece)\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n\n// Re-export from new location for backwards compatibility\nexport { swarmLayout } from \"./swarmLayout\"\n","export const genericFunction = value => () => value\n","import {\n clusterBarLayout,\n barLayout,\n pointLayout,\n swarmLayout,\n timelineLayout\n} from \"../svg/pieceLayouts\"\n\nimport { genericFunction } from \"../generic_utilities/functions\"\n\nexport const layoutHash = {\n clusterbar: clusterBarLayout,\n bar: barLayout,\n point: pointLayout,\n swarm: swarmLayout,\n timeline: timelineLayout\n}\n\nexport const midMod = (d) => (d.middle ? d.middle : 0)\n\nexport const zeroFunction = genericFunction(0)\nexport const twoPI = Math.PI * 2\n\nexport const naturalLanguageTypes = {\n bar: { items: \"bar\", chart: \"bar chart\" },\n clusterbar: { items: \"bar\", chart: \"grouped bar chart\" },\n swarm: { items: \"point\", chart: \"swarm plot\" },\n point: { items: \"point\", chart: \"point plot\" },\n timeline: { items: \"bar\", chart: \"timeline\" }\n}\n","import { ProjectionTypes } from \"../types/generalTypes\"\n\ninterface PieArc {\n markD: string\n centroid: number[]\n translate: number[]\n midAngle: number\n}\n\ninterface ProjectedColumn {\n width: number\n x: number\n middle: number\n y: number\n pieceData: Record<string, any>[]\n pieArc?: PieArc\n [key: string]: unknown\n}\n\nexport interface GenerateColumnOverlaysArgs {\n oExtent: string[]\n projectedColumns: { [key: string]: ProjectedColumn }\n rScale: { range: () => number[] }\n pieArcs: PieArc[]\n padding: number\n projection: ProjectionTypes\n customDoubleClickBehavior?: Function\n customClickBehavior?: Function\n customHoverBehavior?: Function\n}\n\nexport function generateColumnOverlays({\n oExtent,\n projectedColumns,\n rScale,\n pieArcs,\n padding,\n projection,\n customDoubleClickBehavior,\n customClickBehavior,\n customHoverBehavior\n}: GenerateColumnOverlaysArgs): Record<string, any>[] {\n return oExtent.map((d, i) => {\n const barColumnWidth = projectedColumns[d].width\n let xPosition = projectedColumns[d].x\n let yPosition = 0\n let height = rScale.range()[1]\n let width = barColumnWidth + padding\n if (projection === \"horizontal\") {\n yPosition = projectedColumns[d].x\n xPosition = 0\n width = rScale.range()[1]\n height = barColumnWidth\n }\n\n if (projection === \"radial\") {\n const { markD, centroid, translate, midAngle } = pieArcs[i]\n const radialMousePackage = {\n type: \"column-hover\",\n column: projectedColumns[d],\n pieces: projectedColumns[d].pieceData,\n summary: projectedColumns[d].pieceData,\n arcAngles: {\n centroid,\n translate,\n midAngle,\n length: rScale.range()[1] / 2\n }\n }\n return {\n markType: \"path\",\n key: `hover${d}`,\n d: markD,\n transform: `translate(${translate.join(\",\")})`,\n style: { opacity: 0 },\n overlayData: radialMousePackage,\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(radialMousePackage, e)\n }),\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(radialMousePackage, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(radialMousePackage, e)\n }),\n onMouseLeave:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(e)\n })\n }\n }\n\n const baseMousePackage = {\n type: \"column-hover\",\n column: projectedColumns[d],\n pieces: projectedColumns[d].pieceData,\n summary: projectedColumns[d].pieceData\n }\n return {\n markType: \"rect\",\n key: `hover-${d}`,\n x: xPosition,\n y: yPosition,\n height: height,\n width: width,\n style: { opacity: 0 },\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(baseMousePackage, e)\n }),\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(baseMousePackage, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(baseMousePackage, e)\n }),\n onMouseLeave: (e) => {\n customHoverBehavior(undefined, e)\n },\n overlayData: baseMousePackage\n }\n })\n}\n","import * as React from \"react\"\n\nimport { orFrameConnectionRenderer } from \"../svg/frameFunctions\"\nimport { renderLaidOutPieces } from \"../svg/pieceDrawing\"\nimport { renderLaidOutSummaries } from \"../svg/summaryLayouts\"\n\nimport {\n OrdinalFrameProps,\n OrdinalFrameState,\n PieceTypeSettings,\n ProjectedOrdinalSummary\n} from \"../types/ordinalTypes\"\n\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport { MarginType, GenericAccessor } from \"../types/generalTypes\"\n\nimport { midMod, zeroFunction, naturalLanguageTypes } from \"./ordinalConstants\"\n\nimport { ScaleBand, ScaleLinear } from \"d3-scale\"\n\nexport interface AssembleRenderPipelineArgs {\n // Piece / overlay data\n usesPieceOverlays: boolean\n shouldRecalculateOverlay: boolean\n calculatedPieceData: Record<string, any>[]\n projection: string\n customClickBehavior?: Function\n customDoubleClickBehavior?: Function\n customHoverBehavior?: Function\n currentState: OrdinalFrameState\n\n // Render config (all style/class/renderMode values are pre-converted functions from the cache)\n connectorStyle: Function\n connectorClass: Function\n connectorRenderMode: Function\n connectorCanvasRender: Function\n summaryCanvasRender: Function\n pieceCanvasRender: Function\n connectorType: Record<string, any>\n eventListenersGenerator: () => Record<string, never>\n pieceType: PieceTypeSettings\n summaryStyle: Function\n summaryClass: Function\n pieceStyle: Function\n pieceClass: Function\n\n // Data\n keyedData: { [key: string]: Record<string, any>[] }\n oExtent: string[]\n projectedColumns: { [key: string]: Record<string, any> }\n calculatedSummaries: ProjectedOrdinalSummary\n oAccessor: Function[]\n\n // Scales\n rScale: ScaleLinear<number, number>\n\n // Extent\n calculatedRExtent: number[]\n calculatedOExtent: string[]\n rExtentSettings: Record<string, any>\n oExtentSettings: { extent?: string[]; onChange?: Function }\n\n // Layout\n adjustedPosition: number[]\n adjustedSize: number[]\n margin: MarginType\n\n // Additional props\n backgroundGraphics?: React.ReactNode | Function\n foregroundGraphics?: React.ReactNode | Function\n arrayWrappedAxis?: AxisProps[]\n axis: React.ReactNode[]\n axesTickLines: object[]\n oLabels: React.ReactNode\n title: object\n columnOverlays: Record<string, any>[]\n oScaleType: ScaleBand<string>\n instantiatedRScaleType: ScaleLinear<number, number>\n oScale: ScaleBand<string>\n rExtent: number[]\n legend?: object | boolean\n pieceIDAccessor: GenericAccessor<string>\n currentProps: OrdinalFrameProps\n}\n\nexport function assembleRenderPipeline(args: AssembleRenderPipelineArgs) {\n const {\n usesPieceOverlays,\n shouldRecalculateOverlay,\n calculatedPieceData,\n projection,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n currentState,\n\n connectorStyle,\n connectorClass,\n connectorRenderMode,\n connectorCanvasRender,\n summaryCanvasRender,\n pieceCanvasRender,\n connectorType,\n eventListenersGenerator,\n pieceType,\n summaryStyle,\n summaryClass,\n pieceStyle,\n pieceClass,\n\n keyedData,\n oExtent,\n projectedColumns,\n calculatedSummaries,\n oAccessor,\n\n rScale,\n\n calculatedRExtent,\n calculatedOExtent,\n rExtentSettings,\n oExtentSettings,\n\n adjustedPosition,\n adjustedSize,\n margin,\n\n backgroundGraphics,\n foregroundGraphics,\n arrayWrappedAxis,\n axis,\n axesTickLines,\n oLabels,\n title,\n oScaleType,\n instantiatedRScaleType,\n oScale,\n rExtent,\n legend,\n pieceIDAccessor,\n currentProps\n } = args\n\n let { columnOverlays } = args\n\n // Piece overlays for bar/clusterbar/timeline types\n if (usesPieceOverlays) {\n const yMod = projection === \"horizontal\" ? midMod : zeroFunction\n const xMod = projection === \"vertical\" ? midMod : zeroFunction\n if (shouldRecalculateOverlay) {\n columnOverlays = calculatedPieceData.map((d, i) => {\n const mousePackage = {\n ...d.piece,\n x: d.xy.x + xMod(d.xy),\n y: d.xy.y + yMod(d.xy)\n }\n if (React.isValidElement(d.renderElement)) {\n return {\n renderElement: d.renderElement,\n overlayData: mousePackage\n }\n }\n return {\n ...d.renderElement,\n key: `hover-${i}`,\n style: { opacity: 0 },\n overlayData: mousePackage,\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(mousePackage.data, e)\n }),\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(mousePackage.data, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(mousePackage.data, e)\n }),\n onMouseLeave:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(undefined, e)\n })\n }\n })\n } else {\n columnOverlays = currentState.columnOverlays\n }\n }\n\n const typeAriaLabel = (pieceType.type !== undefined &&\n typeof pieceType.type !== \"function\" &&\n naturalLanguageTypes[pieceType.type]) || {\n items: \"piece\",\n chart: \"ordinal chart\"\n }\n\n const orFrameRender = {\n connectors: {\n accessibleTransform: (data, i) => data[i],\n projection,\n data: { keyedData, oExtent } as unknown as object[],\n styleFn: connectorStyle,\n classFn: connectorClass,\n renderMode: connectorRenderMode,\n canvasRender: connectorCanvasRender,\n behavior: orFrameConnectionRenderer,\n type: connectorType,\n eventListenersGenerator,\n pieceType\n },\n summaries: {\n accessibleTransform: (data, i) => {\n const columnName = oExtent[i]\n\n const summaryPackage = {\n type: \"column-hover\",\n column: projectedColumns[columnName],\n pieces: projectedColumns[columnName].pieceData,\n summary: projectedColumns[columnName].pieceData,\n oAccessor\n }\n return summaryPackage\n },\n data: calculatedSummaries.marks,\n behavior: renderLaidOutSummaries,\n canvasRender: summaryCanvasRender,\n styleFn: summaryStyle,\n classFn: summaryClass\n },\n pieces: {\n accessibleTransform: (data, i) => ({\n ...(data[i].piece ? { ...data[i].piece, ...data[i].xy } : data[i]),\n type: \"frame-hover\"\n }),\n shouldRender: pieceType.type && pieceType.type !== \"none\",\n data: calculatedPieceData,\n behavior: renderLaidOutPieces,\n canvasRender: pieceCanvasRender,\n styleFn: pieceStyle,\n classFn: pieceClass,\n axis: arrayWrappedAxis,\n ariaLabel: typeAriaLabel\n }\n }\n\n if (\n rExtentSettings.onChange &&\n (currentState.calculatedRExtent || []).join(\",\") !==\n (calculatedRExtent || []).join(\",\")\n ) {\n rExtentSettings.onChange(calculatedRExtent)\n }\n\n if (\n oExtentSettings.onChange &&\n (currentState.calculatedOExtent || []).join(\",\") !==\n (calculatedOExtent || []).join(\",\")\n ) {\n oExtentSettings.onChange(calculatedOExtent)\n }\n\n let legendSettings\n\n if (legend) {\n legendSettings = legend === true ? {} : { ...legend }\n\n // Sort legend items to match the sorted oExtent order\n if (legendSettings.legendGroups) {\n const extentOrder = new Map(oExtent.map((d, i) => [d, i]))\n legendSettings.legendGroups = legendSettings.legendGroups.map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => {\n const aIdx = extentOrder.has(a.label) ? extentOrder.get(a.label) : Infinity\n const bIdx = extentOrder.has(b.label) ? extentOrder.get(b.label) : Infinity\n return aIdx - bIdx\n })\n }))\n }\n }\n\n return {\n adjustedPosition,\n adjustedSize,\n backgroundGraphics,\n foregroundGraphics,\n axisData: arrayWrappedAxis,\n axes: axis,\n axesTickLines,\n oLabels: { labels: oLabels },\n title,\n columnOverlays,\n renderNumber: currentState.renderNumber + 1,\n oScaleType,\n rScaleType: instantiatedRScaleType,\n oExtent,\n rExtent,\n oScale,\n rScale,\n calculatedOExtent,\n calculatedRExtent,\n projectedColumns,\n margin,\n legendSettings,\n orFrameRender,\n pieceIDAccessor,\n props: currentProps\n }\n}\n","import * as React from \"react\"\n\nimport { sum, max, min, extent } from \"d3-array\"\n\nimport { arc } from \"d3-shape\"\nimport {\n objectifyType,\n keyAndObjectifyBarData,\n orFrameAxisGenerator\n} from \"../svg/frameFunctions\"\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\nimport { drawSummaries } from \"../svg/summaryLayouts\"\nimport { axisGenerator } from \"../svg/summaryAxis\"\n\n\nimport { OrdinalPipelineCache } from \"../data/ordinalPipelineCache\"\n\nimport {\n OrdinalFrameProps,\n OrdinalFrameState,\n PieceTypeSettings,\n OExtentObject,\n ProjectedOrdinalSummary,\n LabelSettingsType\n} from \"../types/ordinalTypes\"\n\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport { PieceLayoutType } from \"../types/generalTypes\"\n\nimport { scaleOrdinal, scaleLinear, ScaleBand, ScaleLinear } from \"d3-scale\"\n\nimport {\n layoutHash,\n midMod,\n zeroFunction,\n twoPI,\n naturalLanguageTypes\n} from \"./ordinalConstants\"\n\nimport { generateColumnOverlays } from \"./ordinalOverlays\"\nimport { assembleRenderPipeline } from \"./ordinalRenderPipeline\"\n\nexport { layoutHash, midMod, zeroFunction, twoPI, naturalLanguageTypes } from \"./ordinalConstants\"\nexport { generateColumnOverlays } from \"./ordinalOverlays\"\nexport type { GenerateColumnOverlaysArgs } from \"./ordinalOverlays\"\nexport { assembleRenderPipeline } from \"./ordinalRenderPipeline\"\nexport type { AssembleRenderPipelineArgs } from \"./ordinalRenderPipeline\"\n\nexport const calculateMappedMiddles = (\n oScale: ScaleBand<string>,\n middleMax: number,\n padding: number\n) => {\n const oScaleDomainValues = oScale.domain()\n\n const mappedMiddles = {}\n oScaleDomainValues.forEach((p, q) => {\n const base = oScale(p) - padding\n const next = oScaleDomainValues[q + 1]\n ? oScale(oScaleDomainValues[q + 1])\n : middleMax\n const diff = (next - base) / 2\n mappedMiddles[p] = base + diff\n })\n\n return mappedMiddles\n}\n\nexport const calculateOrdinalFrame = (\n currentProps: OrdinalFrameProps,\n currentState: OrdinalFrameState,\n cache: OrdinalPipelineCache\n) => {\n let oLabels\n const projectedColumns = {}\n\n const {\n oPadding: basePadding = 0,\n summaryType: baseSummaryType,\n type: baseType,\n connectorType: baseConnectorType,\n oAccessor: baseOAccessor,\n rAccessor: baseRAccessor,\n connectorStyle: baseConnectorStyle,\n style: baseStyle,\n rExtent: baseRExtent,\n oSort,\n pieceClass: basePieceClass,\n summaryStyle: baseSummaryStyle,\n summaryClass: baseSummaryClass,\n dynamicColumnWidth,\n projection,\n customHoverBehavior,\n customClickBehavior,\n customDoubleClickBehavior,\n size,\n pixelColumnWidth,\n title: baseTitle,\n oLabel,\n hoverAnnotation,\n pieceHoverAnnotation,\n summaryHoverAnnotation,\n backgroundGraphics,\n foregroundGraphics,\n oScaleType,\n rScaleType,\n legend,\n renderKey: baseRenderKey,\n data,\n margin: baseMargin,\n oExtent: baseOExtent,\n axes: baseAxes,\n pieceIDAccessor: basePieceIDAccessor,\n multiAxis,\n annotations,\n sketchyRenderingEngine\n } = currentProps\n\n // Radial (pie chart) projection ignores oPadding — angular gaps widen\n // radially and create visual artifacts between slices\n const padding = projection === \"radial\" ? 0 : basePadding\n\n const summaryType = objectifyType(baseSummaryType)\n const pieceType = objectifyType(baseType) as PieceTypeSettings\n const connectorType = objectifyType(baseConnectorType)\n\n const cachedAccessors = cache.accessorConversions(baseOAccessor, baseRAccessor, baseRenderKey, basePieceIDAccessor)\n\n const oAccessor = cachedAccessors.oAccessor\n const rAccessor = cachedAccessors.rAccessor\n const renderKey = cachedAccessors.renderKey\n\n const eventListenersGenerator = () => ({})\n\n const {\n connectorStyle, summaryStyle, pieceStyle, pieceClass, summaryClass,\n connectorClass: connectorClassFn, pieceRenderMode, summaryRenderMode,\n connectorRenderMode: connectorRenderModeFn,\n pieceCanvasRender, summaryCanvasRender, connectorCanvasRender\n } = cache.styleFns(\n baseConnectorStyle, baseSummaryStyle, baseStyle, basePieceClass, baseSummaryClass,\n currentProps.connectorClass, currentProps.renderMode, currentProps.summaryRenderMode,\n currentProps.connectorRenderMode,\n currentProps.canvasPieces, currentProps.canvasSummaries, currentProps.canvasConnectors\n )\n const title =\n typeof baseTitle === \"object\" &&\n !React.isValidElement(baseTitle) &&\n baseTitle !== null\n ? baseTitle\n : { title: baseTitle, orient: \"top\" }\n\n const pieceIDAccessor = cachedAccessors.pieceIDAccessor\n\n const originalRAccessor = Array.isArray(baseRAccessor)\n ? baseRAccessor\n : [baseRAccessor]\n\n const originalOAccessor = Array.isArray(baseOAccessor)\n ? baseOAccessor\n : [baseOAccessor]\n\n // For radial (pie chart) projection, force uniform arc depth by overriding\n // rAccessor to always return 1. Encode value via dynamicColumnWidth instead.\n let effectiveRAccessor = rAccessor\n let effectiveDynamicColumnWidth = dynamicColumnWidth\n if (projection === \"radial\") {\n if (!effectiveDynamicColumnWidth) {\n // Auto-set dynamicColumnWidth to sum original rAccessor values\n // so angular extent still encodes the data\n const originalAccessors = rAccessor\n effectiveDynamicColumnWidth = (pieces: object[]) =>\n sum(pieces, (d) => {\n let total = 0\n for (const accessor of originalAccessors) {\n total += accessor(d) || 0\n }\n return total\n })\n }\n effectiveRAccessor = [() => 1]\n }\n\n const { allData, multiExtents } = keyAndObjectifyBarData({\n data,\n renderKey,\n oAccessor,\n rAccessor: effectiveRAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis\n })\n\n let columnOverlays\n\n const prevProps = currentState.props\n const shouldRecalculateOverlay =\n currentProps.data !== prevProps.data ||\n currentProps.size[0] !== prevProps.size[0] ||\n currentProps.size[1] !== prevProps.size[1] ||\n currentProps.margin !== prevProps.margin ||\n !currentState.columnOverlays ||\n currentState.columnOverlays.length === 0 ||\n currentProps.customClickBehavior !== prevProps.customClickBehavior ||\n currentProps.customDoubleClickBehavior !==\n prevProps.customDoubleClickBehavior ||\n currentProps.customHoverBehavior !== prevProps.customHoverBehavior\n\n let arrayWrappedAxis: AxisProps[] | undefined\n\n if (Array.isArray(baseAxes)) {\n arrayWrappedAxis = baseAxes.map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n } else if (baseAxes) {\n arrayWrappedAxis = [baseAxes].map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n }\n\n if (multiExtents && baseAxes) {\n arrayWrappedAxis.forEach((d, i) => {\n d.extentOverride = multiExtents[i]\n })\n }\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(\n baseMargin, arrayWrappedAxis, title, oLabel, projection, size\n )\n\n const oExtentSettings: OExtentObject =\n baseOExtent === undefined || Array.isArray(baseOExtent)\n ? { extent: baseOExtent as string[] }\n : baseOExtent\n\n const calculatedOExtent = allData.reduce(\n (p: Array<string | number>, c: { column: string | number }) => {\n const baseOValue = c.column\n const oValue = baseOValue !== undefined ? String(baseOValue) : baseOValue\n\n if (p.indexOf(oValue) === -1) {\n p.push(oValue)\n }\n return p\n },\n []\n ) as string[]\n\n let oExtent: string[] =\n (oExtentSettings.extent as string[]) || (calculatedOExtent as string[])\n\n if (pieceType.type === \"barpercent\") {\n const oExtentSums = oExtent\n .map((d) =>\n allData\n .filter((p: { column: string }) => String(p.column) === d)\n .reduce((p, c: { value: number }) => p + c.value, 0)\n )\n .reduce((p, c, i) => {\n p[oExtent[i]] = c\n return p\n }, {})\n\n allData.forEach((d: { value?: number; column: string }) => {\n d.value = (oExtentSums[d.column] && d.value / oExtentSums[d.column]) || 0\n })\n\n pieceType.type = \"bar\"\n }\n\n if (pixelColumnWidth) {\n if (projection === \"radial\") {\n console.error(\"pixelColumnWidth is not honored in radial mode\")\n } else if (projection === \"vertical\") {\n adjustedSize[0] = oExtent.length * pixelColumnWidth\n } else {\n adjustedSize[1] = oExtent.length * pixelColumnWidth\n }\n }\n\n const oDomain = (projection === \"vertical\" && [0, adjustedSize[0]]) || [\n 0,\n adjustedSize[1]\n ]\n\n const cwHash = oExtent.reduce(\n (p, c) => {\n p[c] = (1 / oExtent.length) * oDomain[1]\n p.total += p[c]\n return p\n },\n { total: 0 }\n )\n\n const castOScaleType = oScaleType as unknown as (ScaleBand<string> & (() => ScaleBand<string>))\n\n const oScale = (effectiveDynamicColumnWidth\n ? scaleOrdinal()\n : castOScaleType?.domain\n ? castOScaleType\n : castOScaleType()) as ScaleBand<string>\n\n oScale.domain(oExtent)\n\n let maxColumnValues\n\n const rExtentSettings =\n baseRExtent === undefined || Array.isArray(baseRExtent)\n ? { extent: baseRExtent, onChange: undefined, includeAnnotations: false }\n : baseRExtent\n\n let rExtent = rExtentSettings.extent as number[]\n let subZeroRExtent = [0, 0]\n\n if (\n pieceType.type === \"bar\" &&\n summaryType.type &&\n summaryType.type !== \"none\"\n ) {\n pieceType.type = \"none\"\n }\n\n const annotationsForExtent = []\n\n if (rExtentSettings.includeAnnotations && annotations) {\n rAccessor.forEach((actualRAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const r = actualRAccessor(annotation, annotationIndex)\n if (isFinite(r)) {\n annotationsForExtent.push(r)\n }\n })\n })\n }\n\n if (pieceType.type === \"timeline\") {\n const rData = allData.map((d: { value: number }) => d.value)\n const leftExtent = extent(rData.map((d) => d[0]))\n const rightExtent = extent(rData.map((d) => d[1]))\n rExtent = extent([...leftExtent, ...rightExtent, ...annotationsForExtent])\n } else if (pieceType.type !== \"bar\") {\n rExtent = extent([\n ...allData.map((d: { value: number }) => d.value),\n ...annotationsForExtent\n ])\n } else {\n const nestedPositiveData = []\n const nestedNegativeData = []\n\n const positiveDataKeys = {}\n const negativeDataKeys = {}\n for (const datum of allData as { column: string; value: number }[]) {\n if (datum.value >= 0) {\n if (!positiveDataKeys[datum.column]) {\n positiveDataKeys[datum.column] = {\n column: datum.column,\n value: 0\n }\n nestedPositiveData.push(positiveDataKeys[datum.column])\n }\n positiveDataKeys[datum.column].value += datum.value\n } else {\n if (!negativeDataKeys[datum.column]) {\n negativeDataKeys[datum.column] = {\n column: datum.column,\n value: 0\n }\n nestedNegativeData.push(negativeDataKeys[datum.column])\n }\n negativeDataKeys[datum.column].value += datum.value\n }\n }\n\n const positiveAnnotations = annotationsForExtent.filter((d) => d > 0)\n\n rExtent = [\n 0,\n nestedPositiveData.length === 0 && positiveAnnotations.length === 0\n ? 0\n : Math.max(\n max([\n ...nestedPositiveData.map((d: { value: number }) => d.value),\n ...positiveAnnotations\n ]),\n 0\n )\n ]\n\n const negativeAnnotations = annotationsForExtent.filter((d) => d < 0)\n\n subZeroRExtent = [\n 0,\n nestedNegativeData.length === 0\n ? 0\n : Math.min(\n min([\n ...nestedNegativeData.map((d: { value: number }) => d.value),\n ...negativeAnnotations\n ]),\n 0\n )\n ]\n rExtent = [subZeroRExtent[1], rExtent[1]]\n }\n\n if ((pieceType.type === \"clusterbar\" || multiAxis) && rExtent[0] > 0) {\n rExtent[0] = 0\n }\n\n const calculatedRExtent = rExtent\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n rExtentSettings.extent[1] !== undefined\n ) {\n rExtent = rExtentSettings.extent as number[]\n } else {\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[1] !== undefined &&\n rExtentSettings.extent[0] === undefined\n ) {\n rExtent[1] = rExtentSettings.extent[1]\n }\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n rExtentSettings.extent[1] === undefined\n ) {\n rExtent[0] = rExtentSettings.extent[0]\n }\n }\n\n if (\n currentProps.invertR ||\n (rExtentSettings.extent &&\n rExtentSettings.extent[0] > rExtentSettings.extent[1])\n ) {\n rExtent = [rExtent[1], rExtent[0]]\n }\n\n const nestedPieces = {}\n\n for (const datum of allData as { column: string; value: number }[]) {\n if (!nestedPieces[datum.column]) {\n nestedPieces[datum.column] = []\n }\n nestedPieces[datum.column].push(datum)\n }\n\n if (oSort !== undefined) {\n oExtent = oExtent.sort((a, b) =>\n oSort(\n a,\n b,\n nestedPieces[a].map((d) => d.data),\n nestedPieces[b].map((d) => d.data)\n )\n )\n\n oScale.domain(oExtent)\n } else {\n // Default sort: descending by summed value, with dynamicColumnWidth as tiebreaker\n const columnSums: Record<string, number> = {}\n for (const col of oExtent) {\n columnSums[col] = sum(nestedPieces[col], (d: { value: number }) => d.value)\n }\n\n let columnWidthValues: Record<string, number> | undefined\n if (effectiveDynamicColumnWidth) {\n columnWidthValues = {}\n let columnValueCreator: (d: any[]) => number\n if (typeof effectiveDynamicColumnWidth === \"string\") {\n columnValueCreator = (d) => sum(d, (p: any) => p.data[effectiveDynamicColumnWidth as string])\n } else {\n columnValueCreator = (d) => (effectiveDynamicColumnWidth as Function)(d.map((p: any) => p.data))\n }\n for (const col of oExtent) {\n columnWidthValues[col] = columnValueCreator(nestedPieces[col])\n }\n }\n\n oExtent = oExtent.sort((a, b) => {\n const diff = columnSums[b] - columnSums[a]\n if (diff !== 0) return diff\n if (columnWidthValues) return columnWidthValues[b] - columnWidthValues[a]\n return 0\n })\n\n oScale.domain(oExtent)\n }\n\n if (effectiveDynamicColumnWidth) {\n let columnValueCreator\n if (typeof effectiveDynamicColumnWidth === \"string\") {\n columnValueCreator = (d) => sum(d, (p) => p.data[effectiveDynamicColumnWidth as string])\n } else {\n columnValueCreator = (d) => (effectiveDynamicColumnWidth as Function)(d.map((p) => p.data))\n }\n const thresholdDomain = [0]\n const columnValues = []\n maxColumnValues = 0\n\n oExtent.forEach((d) => {\n const oValues = allData.filter((p: { column: string }) => p.column === d)\n const columnValue = columnValueCreator(oValues)\n\n columnValues.push(columnValue)\n maxColumnValues += columnValue\n })\n\n cwHash.total = 0\n oExtent.forEach((d, i) => {\n const oValue = columnValues[i]\n const stepValue = (oValue / maxColumnValues) * (oDomain[1] - oDomain[0])\n cwHash[d] = stepValue\n cwHash.total += stepValue\n if (i !== oExtent.length - 1) {\n thresholdDomain.push(stepValue + thresholdDomain[i])\n }\n })\n oScale.range(thresholdDomain)\n } else {\n oScale.range(oDomain)\n }\n\n const rDomain = (projection === \"vertical\" && [0, adjustedSize[1]]) || [\n 0,\n adjustedSize[0]\n ]\n\n const castRScaleType = rScaleType as unknown as (ScaleLinear<number, number> & { (): ScaleLinear<number, number> })\n\n // if rScaleType has a domain that means it's instantiated, otherwise, it needs to be instantiated\n const instantiatedRScaleType = castRScaleType.domain\n ? castRScaleType\n : castRScaleType()\n\n const zeroCheck = instantiatedRScaleType(0)\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n (isNaN(zeroCheck) || zeroCheck === -Infinity || zeroCheck === Infinity)\n ) {\n rExtent[0] = rExtentSettings.extent[0]\n }\n\n const rScale = instantiatedRScaleType.copy().domain(rExtent).range(rDomain)\n\n const rScaleReverse = scaleLinear().domain(rDomain).range(rDomain.reverse())\n\n const rScaleVertical = instantiatedRScaleType\n .copy()\n .domain(rExtent)\n .range(rDomain)\n\n const columnWidth = cwHash ? 0 : oScale.bandwidth()\n\n let pieceData = []\n\n let mappedMiddleSize = adjustedSize[1]\n if (projection === \"vertical\") {\n mappedMiddleSize = adjustedSize[0]\n }\n const mappedMiddles = calculateMappedMiddles(\n oScale,\n mappedMiddleSize,\n padding\n )\n\n pieceData = oExtent.map((d) => (nestedPieces[d] ? nestedPieces[d] : []))\n\n let zeroValue =\n projection === \"vertical\" ? rScaleReverse(rScale(0)) : rScale(0)\n\n if (\n (isNaN(zeroValue) || zeroValue === -Infinity || zeroValue === Infinity) &&\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n (zeroCheck === -Infinity || zeroCheck === Infinity)\n ) {\n zeroValue =\n projection === \"vertical\"\n ? rScaleReverse(rScale(rExtentSettings.extent[0]))\n : rScale(rExtentSettings.extent[0])\n }\n\n oExtent.forEach((o, i) => {\n projectedColumns[o] = {\n name: o,\n padding,\n pieceData: pieceData[i],\n pieces: pieceData[i]\n }\n projectedColumns[o].x = oScale(o) + padding / 2\n projectedColumns[o].y = 0\n projectedColumns[o].middle = mappedMiddles[o] + padding / 2\n\n let negativeOffset = zeroValue\n let positiveOffset = zeroValue\n\n let negativeBaseValue = 0\n let positiveBaseValue = 0\n\n projectedColumns[o].pieceData.forEach((piece) => {\n let valPosition\n\n if (pieceType.type === \"timeline\") {\n piece.scaledValue = rScale(piece.value[0])\n piece.scaledEndValue = rScale(piece.value[1])\n piece.scaledVerticalValue = rScaleVertical(piece.value[0])\n } else if (pieceType.type !== \"bar\" && pieceType.type !== \"clusterbar\") {\n piece.scaledValue = rScale(piece.value)\n piece.scaledVerticalValue = rScaleVertical(piece.value)\n } else if (pieceType.type === \"clusterbar\") {\n valPosition =\n projection === \"vertical\"\n ? rScaleReverse(rScale(piece.value))\n : rScale(piece.value)\n piece.scaledValue = Math.abs(zeroValue - valPosition)\n }\n\n piece.x = projectedColumns[o].x\n if (piece.value >= 0) {\n if (pieceType.type === \"bar\") {\n piece.scaledValue =\n projection === \"vertical\"\n ? positiveOffset -\n rScaleReverse(rScale(positiveBaseValue + piece.value))\n : rScale(positiveBaseValue + piece.value) - positiveOffset\n\n positiveBaseValue += piece.value\n }\n piece.base = zeroValue\n piece.bottom = pieceType.type === \"bar\" ? positiveOffset : 0\n piece.middle = piece.scaledValue / 2 + positiveOffset\n positiveOffset =\n projection === \"vertical\"\n ? positiveOffset - piece.scaledValue\n : positiveOffset + piece.scaledValue\n piece.negative = false\n } else {\n if (pieceType.type === \"bar\") {\n piece.scaledValue =\n projection === \"vertical\"\n ? Math.abs(rScale(piece.value) - rScale(0))\n : Math.abs(rScale(piece.value) - zeroValue)\n\n negativeBaseValue += piece.value\n }\n piece.base = zeroValue\n piece.bottom = pieceType.type === \"bar\" ? negativeOffset : 0\n piece.middle = negativeOffset - piece.scaledValue / 2\n negativeOffset =\n projection === \"vertical\"\n ? negativeOffset + piece.scaledValue\n : negativeOffset - piece.scaledValue\n piece.negative = true\n }\n })\n\n if (cwHash) {\n projectedColumns[o].width = cwHash[o] - padding\n\n if (currentProps.ordinalAlign === \"center\") {\n if (i === 0) {\n projectedColumns[o].x =\n projectedColumns[o].x - projectedColumns[o].width / 2\n projectedColumns[o].middle =\n projectedColumns[o].middle - projectedColumns[o].width / 2\n } else {\n projectedColumns[o].x =\n projectedColumns[oExtent[i - 1]].x +\n projectedColumns[oExtent[i - 1]].width\n projectedColumns[o].middle =\n projectedColumns[o].x + projectedColumns[o].width / 2\n }\n }\n\n projectedColumns[o].pct = cwHash[o] / cwHash.total\n projectedColumns[o].pct_start =\n (projectedColumns[o].x - oDomain[0]) / cwHash.total\n projectedColumns[o].pct_padding = padding / cwHash.total\n projectedColumns[o].pct_middle =\n (projectedColumns[o].middle - oDomain[0]) / cwHash.total\n } else {\n projectedColumns[o].width = columnWidth - padding\n if (currentProps.ordinalAlign === \"center\") {\n projectedColumns[o].x =\n projectedColumns[o].x - projectedColumns[o].width / 2\n projectedColumns[o].middle =\n projectedColumns[o].middle - projectedColumns[o].width / 2\n }\n\n projectedColumns[o].pct = columnWidth / adjustedSize[1]\n projectedColumns[o].pct_start =\n (projectedColumns[o].x - oDomain[0]) / adjustedSize[1]\n projectedColumns[o].pct_padding = padding / adjustedSize[1]\n projectedColumns[o].pct_middle =\n (projectedColumns[o].middle - oDomain[0]) / adjustedSize[1]\n }\n })\n\n const labelArray = []\n\n const pieArcs = []\n\n const labelSettings: LabelSettingsType =\n typeof oLabel === \"object\"\n ? Object.assign({ label: true, padding: 5 }, oLabel)\n : { orient: \"default\", label: oLabel, padding: 5 }\n\n if (oLabel || hoverAnnotation) {\n const offsetPct =\n (pieceType.offsetAngle && pieceType.offsetAngle / 360) || 0\n\n const rangePct = (pieceType.angleRange &&\n pieceType.angleRange.map((d) => d / 360)) || [0, 1]\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n oExtent.forEach((d) => {\n const arcGenerator = arc()\n .innerRadius(0)\n .outerRadius(rScale.range()[1] / 2)\n\n const angle = projectedColumns[d].pct * rangeMod\n const startAngle = adjustedPct(projectedColumns[d].pct_start + offsetPct)\n\n const endAngle = startAngle + angle\n const midAngle = startAngle + angle / 2\n\n const markD = arcGenerator({\n startAngle: startAngle * twoPI,\n endAngle: endAngle * twoPI\n })\n const translate = [adjustedSize[0] / 2, adjustedSize[1] / 2]\n const centroid = arcGenerator.centroid({\n startAngle: startAngle * twoPI,\n endAngle: endAngle * twoPI\n })\n\n const addedPadding =\n centroid[1] > 0 &&\n (!labelSettings.orient ||\n labelSettings.orient === \"default\" ||\n labelSettings.orient === \"edge\")\n ? 8\n : 0\n\n const outerPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n rScale.range()[1] / 2 + labelSettings.padding + addedPadding\n )\n\n const pieArc = {\n startAngle,\n endAngle,\n midAngle,\n markD,\n translate,\n centroid,\n outerPoint\n }\n\n projectedColumns[d].pieArc = pieArc\n\n pieArcs.push(pieArc)\n })\n }\n\n if (currentProps.oLabel) {\n let labelingFn\n if (typeof labelSettings.label === \"function\") {\n labelingFn = labelSettings.label\n } else {\n const labelStyle: {\n textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\"\n } = {\n textAnchor: \"middle\"\n }\n if (projection === \"horizontal\" && labelSettings.orient === \"right\") {\n labelStyle.textAnchor = \"start\"\n } else if (projection === \"horizontal\") {\n labelStyle.textAnchor = \"end\"\n }\n\n labelingFn = (d, p, i) => {\n const additionalStyle: {\n textAnchor?: \"inherit\" | \"middle\" | \"end\" | \"start\" | null\n } = {}\n let transformRotate\n\n if (projection === \"radial\" && labelSettings.orient === \"stem\") {\n transformRotate = `rotate(${\n pieArcs[i].outerPoint[0] < 0\n ? pieArcs[i].midAngle * 360 + 90\n : pieArcs[i].midAngle * 360 - 90\n })`\n } else if (\n projection === \"radial\" &&\n labelSettings.orient === \"annotation\"\n ) {\n const { centroid } = pieArcs[i]\n\n const labelIndex = pieArcs.filter(\n (p, q) =>\n q < i &&\n centroid[0] < 0 === pieArcs[q].centroid[0] < 0 &&\n centroid[1] < 0 === pieArcs[q].centroid[1] < 0\n ).length\n const labelMod = labelIndex * 15\n let labelLength = d.length * 7\n let textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\" = \"start\"\n\n let positionProps = { dx: 0, dy: 0 }\n if (centroid[0] < 0) {\n textAnchor = \"end\"\n labelLength = -labelLength\n positionProps.dx = -35\n } else {\n positionProps.dx = 35\n }\n\n if (centroid[1] < 0) {\n positionProps.dy = -35 - labelMod\n } else {\n positionProps.dy = 35 + labelMod\n }\n return (\n <g>\n <path\n fill=\"none\"\n stroke=\"black\"\n strokeWidth={2}\n d={`M0,0L${positionProps.dx},${positionProps.dy}L${\n positionProps.dx + labelLength\n },${positionProps.dy}`}\n />\n <text\n textAnchor={textAnchor}\n x={positionProps.dx}\n y={positionProps.dy - 2}\n >\n {d}\n </text>\n </g>\n )\n } else if (\n projection === \"radial\" &&\n labelSettings.orient !== \"center\"\n ) {\n transformRotate = `rotate(${\n pieArcs[i].outerPoint[1] < 0\n ? pieArcs[i].midAngle * 360\n : pieArcs[i].midAngle * 360 + 180\n })`\n }\n if (\n projection === \"radial\" &&\n labelSettings.orient === \"stem\" &&\n ((pieArcs[i].outerPoint[0] > 0 && labelSettings.padding < 0) ||\n (pieArcs[i].outerPoint[0] < 0 && labelSettings.padding >= 0))\n ) {\n additionalStyle.textAnchor = \"end\"\n } else if (projection === \"radial\" && labelSettings.orient === \"stem\") {\n additionalStyle.textAnchor = \"start\"\n }\n return (\n <text\n {...labelStyle}\n {...additionalStyle}\n transform={transformRotate}\n >\n {d}\n </text>\n )\n }\n }\n\n oExtent.forEach((d, i) => {\n let xPosition = projectedColumns[d].middle\n let yPosition = 0\n\n if (projection === \"horizontal\") {\n yPosition = projectedColumns[d].middle\n if (labelSettings.orient === \"right\") {\n xPosition = adjustedSize[0] + 3\n } else {\n xPosition = -3\n }\n } else if (projection === \"radial\") {\n if (labelSettings.orient === \"annotation\") {\n xPosition =\n pieArcs[i].centroid[0] * 0.25 +\n pieArcs[i].outerPoint[0] * 0.75 +\n pieArcs[i].translate[0]\n yPosition =\n pieArcs[i].centroid[1] * 0.25 +\n pieArcs[i].outerPoint[1] * 0.75 +\n pieArcs[i].translate[1]\n } else if (labelSettings.orient === \"center\") {\n xPosition = pieArcs[i].centroid[0] + pieArcs[i].translate[0]\n yPosition = pieArcs[i].centroid[1] + pieArcs[i].translate[1]\n } else {\n xPosition = pieArcs[i].outerPoint[0] + pieArcs[i].translate[0]\n yPosition = pieArcs[i].outerPoint[1] + pieArcs[i].translate[1]\n }\n }\n\n const labelValue = labelSettings.labelFormatter\n ? labelSettings.labelFormatter(d)\n : d\n\n const label = labelingFn(\n labelValue,\n projectedColumns[d].pieceData.map((d) => d.data),\n i,\n projectedColumns[d]\n )\n labelArray.push(\n <g\n key={`olabel-${i}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {label}\n </g>\n )\n })\n\n if (projection === \"vertical\") {\n let labelY\n if (labelSettings.orient === \"top\") {\n labelY = -15\n } else {\n labelY = 15 + rScale.range()[1]\n }\n oLabels = (\n <g\n key=\"ordinalframe-labels-container\"\n className=\"ordinal-labels\"\n transform={`translate(0,${labelY})`}\n >\n {labelArray}\n </g>\n )\n } else if (projection === \"horizontal\") {\n oLabels = (\n <g key=\"ordinalframe-labels-container\" className=\"ordinal-labels\">\n {labelArray}\n </g>\n )\n } else if (projection === \"radial\") {\n oLabels = (\n <g key=\"ordinalframe-labels-container\" className=\"ordinal-labels\">\n {labelArray}\n </g>\n )\n }\n }\n\n const isBarType = [\"bar\", \"clusterbar\", \"timeline\"].indexOf(pieceType.type) !== -1\n const usesPieceOverlays = (currentProps.hoverAnnotation || currentProps.pieceHoverAnnotation) && isBarType\n\n if (\n !usesPieceOverlays &&\n !currentProps.summaryHoverAnnotation &&\n (currentProps.hoverAnnotation ||\n currentProps.customClickBehavior ||\n currentProps.customDoubleClickBehavior ||\n currentProps.customHoverBehavior)\n ) {\n if (shouldRecalculateOverlay) {\n columnOverlays = generateColumnOverlays({\n oExtent,\n projectedColumns,\n rScale,\n pieArcs,\n padding,\n projection,\n customDoubleClickBehavior,\n customClickBehavior,\n customHoverBehavior\n })\n } else {\n columnOverlays = currentState.columnOverlays\n }\n }\n\n let pieceDataXY\n\n const pieceTypeForXY =\n pieceType.type && pieceType.type !== \"none\" ? pieceType.type : \"point\"\n const pieceTypeLayout: PieceLayoutType =\n typeof pieceTypeForXY === \"function\"\n ? pieceTypeForXY\n : layoutHash[pieceTypeForXY]\n\n const calculatedPieceData = pieceTypeLayout({\n type: pieceType,\n data: projectedColumns,\n renderMode: pieceRenderMode,\n eventListenersGenerator,\n styleFn: pieceStyle,\n projection,\n classFn: pieceClass,\n adjustedSize,\n chartSize: size,\n margin,\n rScale\n }) as Record<string, any>[]\n\n const keyedData = calculatedPieceData.reduce((p, c) => {\n if (c.o) {\n if (!p[c.o]) {\n p[c.o] = []\n }\n p[c.o].push(c)\n }\n return p\n }, {})\n\n Object.keys(projectedColumns).forEach((d) => {\n projectedColumns[d].xyData = keyedData[d] || []\n })\n let calculatedSummaries: ProjectedOrdinalSummary = {}\n\n if (summaryType.type && summaryType.type !== \"none\") {\n calculatedSummaries = drawSummaries({\n data: projectedColumns,\n type: summaryType,\n renderMode: summaryRenderMode,\n styleFn: summaryStyle,\n classFn: summaryClass,\n projection,\n eventListenersGenerator,\n adjustedSize,\n // chartSize: size,\n margin,\n axisCreator: axisGenerator\n })\n\n calculatedSummaries.originalData = projectedColumns\n }\n\n const yMod = projection === \"horizontal\" ? midMod : zeroFunction\n const xMod = projection === \"vertical\" ? midMod : zeroFunction\n const basePieceData = calculatedPieceData\n .map((d) => {\n if (d.piece && d.xy) {\n return {\n ...d.piece,\n type: \"frame-hover\",\n x: d.xy.x + xMod(d.xy),\n y: d.xy.y + yMod(d.xy)\n }\n }\n return null\n })\n .filter((d) => d)\n\n if (\n ((hoverAnnotation || pieceHoverAnnotation) &&\n [\"bar\", \"clusterbar\", \"timeline\"].indexOf(pieceType.type) === -1) ||\n summaryHoverAnnotation\n ) {\n if (summaryHoverAnnotation && calculatedSummaries.xyPoints) {\n pieceDataXY = calculatedSummaries.xyPoints.map(\n (d: { x: number; y: number }) =>\n Object.assign({}, d, {\n type: \"frame-hover\",\n isSummaryData: true,\n x: d.x,\n y: d.y\n })\n )\n } else if ((hoverAnnotation || pieceHoverAnnotation) && calculatedPieceData) {\n //Check interaction layer rendering when only one point per column\n pieceDataXY = basePieceData\n }\n }\n\n const { axis, axesTickLines } = orFrameAxisGenerator({\n axis: arrayWrappedAxis,\n data: allData,\n projection,\n adjustedSize,\n size,\n rScale,\n rScaleType: instantiatedRScaleType.copy(),\n pieceType,\n rExtent,\n maxColumnValues,\n xyData: basePieceData,\n margin,\n thresholds: calculatedSummaries.thresholds\n })\n\n return {\n pieceDataXY,\n oAccessor,\n rAccessor,\n summaryType,\n type: pieceType,\n ...assembleRenderPipeline({\n usesPieceOverlays,\n shouldRecalculateOverlay,\n calculatedPieceData,\n projection,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n currentState,\n\n connectorStyle,\n connectorClass: connectorClassFn,\n connectorRenderMode: connectorRenderModeFn,\n connectorCanvasRender,\n summaryCanvasRender,\n pieceCanvasRender,\n connectorType,\n eventListenersGenerator,\n pieceType,\n summaryStyle,\n summaryClass,\n pieceStyle,\n pieceClass,\n\n keyedData,\n oExtent,\n projectedColumns,\n calculatedSummaries,\n oAccessor,\n\n rScale,\n\n calculatedRExtent,\n calculatedOExtent,\n rExtentSettings,\n oExtentSettings,\n\n adjustedPosition,\n adjustedSize,\n margin,\n\n backgroundGraphics,\n foregroundGraphics,\n arrayWrappedAxis,\n axis,\n axesTickLines,\n oLabels,\n title,\n columnOverlays,\n oScaleType,\n instantiatedRScaleType,\n oScale,\n rExtent,\n legend,\n pieceIDAccessor,\n currentProps\n })\n }\n}\n","import memoize from \"memoize-one\"\nimport { calculateMargin, adjustedPositionSize, keyAndObjectifyBarData } from \"../svg/frameFunctions\"\nimport { stringToFn, stringToArrayFn } from \"./dataFunctions\"\nimport { ProjectionTypes } from \"../types/generalTypes\"\n\nexport function createOrdinalPipelineCache() {\n return {\n marginCalc: memoize((\n margin: any,\n axes: any,\n title: any,\n oLabel: any,\n projection: ProjectionTypes,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, axes, title, oLabel, projection, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin,\n projection\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n structureData: memoize((\n data: any[],\n renderKey: any,\n oAccessor: Function[],\n rAccessor: Array<(d: number | object, i?: number) => number>,\n originalRAccessor: any[],\n originalOAccessor: any[],\n multiAxis: boolean\n ) => {\n return keyAndObjectifyBarData({\n data,\n renderKey,\n oAccessor,\n rAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis\n })\n }),\n\n accessorConversions: memoize((\n baseOAccessor: any,\n baseRAccessor: any,\n baseRenderKey: any,\n basePieceIDAccessor: any\n ) => ({\n oAccessor: stringToArrayFn<string | number>(baseOAccessor, (d) => d.renderKey),\n rAccessor: stringToArrayFn<number>(baseRAccessor, (d) => d.value || 1),\n renderKey: stringToFn<string | number>(baseRenderKey, (d, i) => i),\n pieceIDAccessor: stringToFn<string>(basePieceIDAccessor, () => \"\"),\n })),\n\n styleFns: memoize((\n baseConnectorStyle: any,\n baseSummaryStyle: any,\n baseStyle: any,\n basePieceClass: any,\n baseSummaryClass: any,\n baseConnectorClass: any,\n baseRenderMode: any,\n baseSummaryRenderMode: any,\n baseConnectorRenderMode: any,\n canvasPieces: any,\n canvasSummaries: any,\n canvasConnectors: any\n ) => ({\n connectorStyle: stringToFn<Record<string, any>>(baseConnectorStyle, () => ({}), true),\n summaryStyle: stringToFn<Record<string, any>>(baseSummaryStyle, () => ({}), true),\n pieceStyle: stringToFn<Record<string, any>>(baseStyle, () => ({}), true),\n pieceClass: stringToFn<string>(basePieceClass, () => \"\", true),\n summaryClass: stringToFn<string>(baseSummaryClass, () => \"\", true),\n connectorClass: stringToFn<string>(baseConnectorClass, () => \"\", true),\n pieceRenderMode: stringToFn<Record<string, any> | string>(baseRenderMode, undefined, true),\n summaryRenderMode: stringToFn<Record<string, any> | string>(baseSummaryRenderMode, undefined, true),\n connectorRenderMode: stringToFn<Record<string, any> | string>(baseConnectorRenderMode, undefined, true),\n pieceCanvasRender: stringToFn<boolean>(canvasPieces, undefined, true),\n summaryCanvasRender: stringToFn<boolean>(canvasSummaries, undefined, true),\n connectorCanvasRender: stringToFn<boolean>(canvasConnectors, undefined, true),\n })),\n }\n}\n\nexport type OrdinalPipelineCache = ReturnType<typeof createOrdinalPipelineCache>\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 { scaleBand, scaleLinear, ScaleLinear } from \"d3-scale\"\n\nimport {\n orFrameChangeProps,\n orFrameDataAffectingProps,\n orFrameScaleAffectingProps,\n orFrameStylingProps\n} from \"./constants/frame_props\"\nimport {\n svgORRule,\n svgHighlightRule,\n svgOrdinalLine,\n basicReactAnnotationRule,\n svgEncloseRule,\n svgRectEncloseRule,\n svgRRule,\n svgCategoryRule,\n htmlFrameHoverRule,\n htmlColumnHoverRule,\n screenProject,\n findIDPiece,\n getColumnScreenCoordinates\n} from \"./annotationRules/orframeRules\"\n\nimport { desaturationLayer } from \"./annotationRules/baseRules\"\n\nimport { findFirstAccessorValue } from \"./data/multiAccessorUtils\"\n\nimport Frame from \"./Frame\"\n\nimport { stringToFn, stringToArrayFn } from \"./data/dataFunctions\"\n\nimport { calculateOrdinalFrame } from \"./processing/ordinal\"\nimport { createOrdinalPipelineCache, OrdinalPipelineCache } from \"./data/ordinalPipelineCache\"\n\nimport { AnnotationType } from \"./types/annotationTypes\"\n\nimport { UpdatedAnnotationLayerProps } from \"./AnnotationLayer/AnnotationLayer\"\n\nimport { OrdinalFrameProps, OrdinalFrameState } from \"./types/ordinalTypes\"\nimport { useDerivedStateFromProps } from \"./useDerivedStateFromProps\"\nimport { useLegacyUnmountCallback } from \"./useLegacyUnmountCallback\"\n\nconst xScale = scaleLinear()\nconst yScale = scaleLinear()\n\nconst projectedCoordinatesObject = { y: \"y\", x: \"x\" }\n\nconst defaultOverflow = { top: 0, bottom: 0, left: 0, right: 0 }\n\nconst defaultProps: Partial<OrdinalFrameProps> = {\n annotations: [],\n foregroundGraphics: [],\n projection: \"vertical\",\n size: [500, 500],\n className: \"\",\n data: [],\n oScaleType: scaleBand(),\n rScaleType: scaleLinear as unknown as () => ScaleLinear<number, number>,\n type: \"none\",\n optimizeCustomTooltipPosition: false\n}\n\nexport function OrdinalFrameInner<TDatum = Record<string, any>>(\n allProps: OrdinalFrameProps<TDatum>\n) {\n const props = { ...defaultProps, ...allProps } as OrdinalFrameProps<TDatum>\n const pipelineCacheRef = useRef(createOrdinalPipelineCache())\n const baseState = {\n adjustedPosition: [],\n adjustedSize: [],\n backgroundGraphics: undefined,\n foregroundGraphics: undefined,\n axisData: undefined,\n renderNumber: 0,\n oLabels: { labels: [] },\n oAccessor: stringToArrayFn<string>(\"renderKey\"),\n rAccessor: stringToArrayFn<number>(\"value\"),\n oScale: scaleBand(),\n rScale: scaleLinear(),\n axes: undefined,\n calculatedOExtent: [],\n calculatedRExtent: [0, 1],\n columnOverlays: [],\n dataVersion: undefined,\n legendSettings: undefined,\n margin: { top: 0, bottom: 0, left: 0, right: 0 },\n oExtent: [],\n oScaleType: scaleBand(),\n orFrameRender: {},\n pieceDataXY: [],\n pieceIDAccessor: stringToFn<string>(\"semioticPieceID\"),\n projectedColumns: {},\n rExtent: [],\n rScaleType: scaleLinear(),\n summaryType: { type: \"none\" },\n title: {},\n type: { type: \"none\" },\n props: props as OrdinalFrameProps\n }\n\n const initialState = useMemo(\n () => ({\n ...baseState,\n ...calculateOrdinalFrame(props as OrdinalFrameProps, baseState, pipelineCacheRef.current)\n } as OrdinalFrameState),\n []\n )\n const state = useDerivedStateFromProps(\n (nextProps, prevState) => deriveOrdinalFrameState(nextProps as OrdinalFrameProps, prevState, pipelineCacheRef.current),\n props as OrdinalFrameProps,\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) => defaultORSVGRule(propsRef.current as OrdinalFrameProps, stateRef.current, args),\n []\n )\n const defaultHTMLRuleCb = useCallback(\n (args) => defaultORHTMLRule(propsRef.current as OrdinalFrameProps, stateRef.current, args),\n []\n )\n\n const {\n className,\n annotationSettings,\n annotations,\n matte,\n renderKey,\n interaction,\n customClickBehavior,\n customHoverBehavior,\n customDoubleClickBehavior,\n projection,\n backgroundGraphics,\n foregroundGraphics,\n afterElements,\n beforeElements,\n disableContext,\n summaryType,\n summaryHoverAnnotation,\n pieceHoverAnnotation,\n hoverAnnotation,\n canvasPostProcess,\n canvasPieces,\n canvasSummaries,\n canvasConnectors,\n renderOrder,\n additionalDefs,\n sketchyRenderingEngine,\n frameRenderOrder,\n disableCanvasInteraction,\n disableProgressiveRendering,\n transition\n } = props\n\n const {\n orFrameRender,\n projectedColumns,\n adjustedPosition,\n adjustedSize,\n legendSettings,\n columnOverlays,\n axesTickLines,\n axes,\n margin,\n pieceDataXY,\n oLabels,\n title\n } = state\n\n const size = [\n adjustedSize[0] + margin.left + margin.right,\n adjustedSize[1] + margin.top + margin.bottom\n ]\n\n let interactionOverflow\n\n if (summaryType && summaryType.amplitude) {\n if (projection === \"horizontal\") {\n interactionOverflow = {\n top: summaryType.amplitude,\n bottom: 0,\n left: 0,\n right: 0\n }\n } else if (projection === \"radial\") {\n interactionOverflow = defaultOverflow\n } else {\n interactionOverflow = {\n top: 0,\n bottom: 0,\n left: summaryType.amplitude,\n right: 0\n }\n }\n }\n\n // Memoize foreground graphics calculation\n const renderedForegroundGraphics = useMemo(\n () =>\n typeof foregroundGraphics === \"function\"\n ? foregroundGraphics({ size, margin })\n : foregroundGraphics,\n [foregroundGraphics, size, margin]\n )\n\n // Memoize className concatenation\n const frameClassName = useMemo(\n () => `${className} ${projection}`,\n [className, projection]\n )\n\n // Memoize hoverAnnotation selection\n const selectedHoverAnnotation = useMemo(\n () => summaryHoverAnnotation || hoverAnnotation || pieceHoverAnnotation,\n [summaryHoverAnnotation, pieceHoverAnnotation, hoverAnnotation]\n )\n\n // Memoize interaction object\n const memoizedInteraction = useMemo(\n () =>\n interaction && {\n ...interaction,\n brush: interaction.columnsBrush !== true && \"oBrush\",\n projection,\n projectedColumns\n },\n [interaction, projection, projectedColumns]\n )\n\n // Memoize canvas rendering flag\n const canvasRendering = useMemo(\n () => !!(canvasPieces || canvasSummaries || canvasConnectors),\n [canvasPieces, canvasSummaries, canvasConnectors]\n )\n\n return (\n <Frame\n name=\"ordinalframe\"\n renderPipeline={orFrameRender}\n adjustedPosition={adjustedPosition}\n adjustedSize={adjustedSize}\n size={size}\n xScale={xScale}\n yScale={yScale}\n axes={axes}\n axesTickLines={axesTickLines}\n title={title}\n matte={matte}\n additionalDefs={additionalDefs}\n className={frameClassName}\n frameKey={\"none\"}\n renderFn={renderKey}\n projectedCoordinateNames={projectedCoordinatesObject}\n defaultSVGRule={defaultSVGRuleCb}\n defaultHTMLRule={defaultHTMLRuleCb}\n hoverAnnotation={selectedHoverAnnotation}\n annotations={annotations}\n annotationSettings={annotationSettings}\n legendSettings={legendSettings}\n interaction={memoizedInteraction}\n customClickBehavior={customClickBehavior}\n customHoverBehavior={customHoverBehavior}\n customDoubleClickBehavior={customDoubleClickBehavior}\n points={pieceDataXY}\n margin={margin}\n columns={projectedColumns}\n backgroundGraphics={backgroundGraphics}\n foregroundGraphics={renderedForegroundGraphics}\n beforeElements={beforeElements}\n afterElements={afterElements}\n overlay={columnOverlays}\n rScale={state.rScale}\n projection={projection}\n disableContext={disableContext}\n interactionOverflow={interactionOverflow}\n canvasPostProcess={canvasPostProcess}\n \n canvasRendering={canvasRendering}\n renderOrder={renderOrder}\n disableCanvasInteraction={disableCanvasInteraction}\n sketchyRenderingEngine={sketchyRenderingEngine}\n frameRenderOrder={frameRenderOrder}\n additionalVizElements={oLabels}\n disableProgressiveRendering={disableProgressiveRendering}\n transition={transition}\n />\n )\n}\n\nfunction deriveOrdinalFrameState(\n nextProps: OrdinalFrameProps,\n prevState: OrdinalFrameState,\n cache?: OrdinalPipelineCache\n) {\n const { props } = prevState\n\n // Check which category of props changed\n const dataPropsChanged = !prevState.dataVersion && orFrameDataAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const scalePropsChanged = !prevState.dataVersion && orFrameScaleAffectingProps.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 projectedColumns exists\n if (\n (prevState.dataVersion && prevState.dataVersion !== nextProps.dataVersion) ||\n !prevState.projectedColumns\n ) {\n return {\n ...calculateOrdinalFrame(nextProps, prevState, cache),\n props: nextProps\n }\n }\n\n // Full data recalculation needed if data-affecting props changed\n if (dataPropsChanged) {\n return {\n ...calculateOrdinalFrame(nextProps, prevState, cache),\n props: nextProps\n }\n }\n\n // Scale/layout recalculation needed if size or scale-affecting props changed\n // Note: calculateOrdinalFrame doesn't have an updateData flag like XYFrame,\n // but size changes typically need full recalc due to column layout\n if (sizeChanged || scalePropsChanged) {\n return {\n ...calculateOrdinalFrame(nextProps, prevState, cache),\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 defaultORSVGRule(\n props: OrdinalFrameProps,\n state: OrdinalFrameState,\n {\n d,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const { projection, svgAnnotationRules } = props\n\n const {\n adjustedPosition,\n adjustedSize,\n oAccessor,\n rAccessor,\n oScale,\n rScale,\n projectedColumns,\n orFrameRender,\n pieceIDAccessor,\n rScaleType,\n summaryType,\n type\n } = state\n\n let screenCoordinates: number[] | number[][] = [0, 0]\n\n getColumnScreenCoordinates\n\n if (d.isColumnAnnotation) {\n const {\n coordinates: [xPosition, yPosition]\n } = getColumnScreenCoordinates({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n })\n screenCoordinates = [xPosition, yPosition]\n } else if (d.coordinates || (d.type === \"enclose\" && d.neighbors)) {\n screenCoordinates = (d.coordinates || d.neighbors).map(\n (p: { column?: string }) => {\n const pO = findFirstAccessorValue(oAccessor, p) || p.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, p)\n\n return screenProject({\n p,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n )\n } else {\n const pO = findFirstAccessorValue(oAccessor, d) || d.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, d)\n\n screenCoordinates = screenProject({\n p: d,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n\n const { voronoiHover } = annotationLayer\n\n //TODO: Process your rules first\n const customAnnotation =\n svgAnnotationRules &&\n svgAnnotationRules({\n d,\n i,\n oScale,\n rScale,\n oAccessor,\n rAccessor,\n orFrameProps: props,\n orFrameState: state,\n screenCoordinates,\n adjustedPosition,\n adjustedSize,\n annotationLayer,\n categories: projectedColumns,\n voronoiHover\n })\n if (svgAnnotationRules && customAnnotation !== null) {\n return customAnnotation\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 === \"ordinal-line\") {\n return svgOrdinalLine({ d, screenCoordinates, voronoiHover })\n } else if (d.type === \"or\") {\n return svgORRule({ d, i, screenCoordinates, projection })\n } else if (d.type === \"highlight\") {\n return svgHighlightRule({\n d,\n pieceIDAccessor,\n orFrameRender,\n oAccessor\n })\n } else if (typeof d.type === \"function\" || annotationTypeStrings.has(d.type)) {\n return basicReactAnnotationRule({ d, i, screenCoordinates })\n } else if (d.type === \"enclose\") {\n return svgEncloseRule({ d, i, screenCoordinates })\n } else if (d.type === \"enclose-rect\") {\n return svgRectEncloseRule({ d, screenCoordinates, i })\n } else if (d.type === \"r\") {\n return svgRRule({\n d,\n i,\n screenCoordinates,\n rScale,\n rAccessor,\n projection,\n adjustedSize,\n adjustedPosition\n })\n } else if (d.type === \"category\") {\n return svgCategoryRule({\n projection,\n d,\n i,\n categories: state.projectedColumns,\n adjustedSize\n })\n }\n return null\n}\n\nfunction defaultORHTMLRule(\n props: OrdinalFrameProps,\n state: OrdinalFrameState,\n {\n d,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const {\n adjustedPosition,\n adjustedSize,\n oAccessor,\n rAccessor,\n oScale,\n rScale,\n projectedColumns,\n summaryType,\n type,\n pieceIDAccessor,\n rScaleType\n } = state\n const {\n htmlAnnotationRules,\n tooltipContent,\n optimizeCustomTooltipPosition,\n projection,\n size\n } = props\n let screenCoordinates: number[] | number[][] = [0, 0]\n\n const { voronoiHover } = annotationLayer\n\n if (d.coordinates || (d.type === \"enclose\" && d.neighbors)) {\n screenCoordinates = (d.coordinates || d.neighbors).map(\n (p: { column?: string }) => {\n const pO = findFirstAccessorValue(oAccessor, p) || p.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, p)\n\n return screenProject({\n p,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n )\n } else if (d.type === \"column-hover\") {\n const {\n coordinates: [xPosition, yPosition]\n } = getColumnScreenCoordinates({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n })\n screenCoordinates = [xPosition, yPosition]\n } else {\n const pO = findFirstAccessorValue(oAccessor, d) || d.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, d)\n\n screenCoordinates = screenProject({\n p: d,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n\n const flippedRScale =\n projection === \"vertical\"\n ? rScaleType.domain(rScale.domain()).range(rScale.range().reverse())\n : rScale\n //TODO: Process your rules first\n const customAnnotation =\n htmlAnnotationRules &&\n htmlAnnotationRules({\n d,\n i,\n oScale,\n rScale: flippedRScale,\n oAccessor,\n rAccessor,\n orFrameProps: props,\n screenCoordinates,\n adjustedPosition,\n adjustedSize,\n annotationLayer,\n orFrameState: state,\n categories: state.projectedColumns,\n voronoiHover\n })\n\n if (htmlAnnotationRules && customAnnotation !== null) {\n return customAnnotation\n }\n\n if (d.type === \"frame-hover\") {\n return htmlFrameHoverRule({\n d,\n i,\n rAccessor,\n oAccessor,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition,\n projectedColumns,\n pieceIDAccessor,\n adjustedSize,\n rScale,\n type,\n rScaleType\n })\n } else if (d.type === \"column-hover\") {\n return htmlColumnHoverRule({\n d,\n i,\n summaryType,\n oAccessor,\n projectedColumns,\n type,\n adjustedPosition,\n adjustedSize,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition\n })\n }\n return null\n}\n\nOrdinalFrameInner.displayName = \"OrdinalFrame\"\nconst OrdinalFrame = React.memo(OrdinalFrameInner) as typeof OrdinalFrameInner\nexport default OrdinalFrame\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 OrdinalFrame from \"./OrdinalFrame\"\nimport createResponsiveFrame from \"./ResponsiveFrame\"\nimport { ResponsiveFrameProps } from \"./ResponsiveFrame\"\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\n\nexport const ResponsiveOrdinalFrame =\n\t/*#__PURE__*/ createResponsiveFrame(OrdinalFrame) as\n\t<TDatum = Record<string, any>>(props: ResponsiveFrameProps & OrdinalFrameProps<TDatum>) => 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 OrdinalFrame from \"./OrdinalFrame\"\nimport createSparkFrame from \"./SparkFrame\"\nimport { ordinalFrameDefaults } from \"./SparkFrame\"\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\n\nexport const SparkOrdinalFrame = /*#__PURE__*/ createSparkFrame(\n OrdinalFrame,\n ordinalFrameDefaults,\n \"SparkOrdinalFrame\"\n) as <TDatum = Record<string, any>>(props: OrdinalFrameProps<TDatum> & { sparkStyle?: object; size?: number | number[] }) => JSX.Element\n"],"names":["Annotation","extent","React","createBrush","d3Extent","this","emptyObjectReturnFn","twoPI"],"mappings":"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"}
|