@fluentui/react-charts 0.0.0-nightly-20250728-0406.1 → 0.0.0-nightly-20250730-0406.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/CHANGELOG.md +34 -15
- package/dist/index.d.ts +198 -10
- package/lib/AreaChart.js.map +1 -1
- package/lib/CartesianChart.js.map +1 -1
- package/lib/DeclarativeChart.js.map +1 -1
- package/lib/DonutChart.js.map +1 -1
- package/lib/FunnelChart.js.map +1 -1
- package/lib/GanttChart.js +1 -0
- package/lib/GanttChart.js.map +1 -0
- package/lib/GaugeChart.js.map +1 -1
- package/lib/GroupedVerticalBarChart.js.map +1 -1
- package/lib/HeatMapChart.js.map +1 -1
- package/lib/HorizontalBarChart.js.map +1 -1
- package/lib/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/Legends.js.map +1 -1
- package/lib/LineChart.js.map +1 -1
- package/lib/Popover.js.map +1 -1
- package/lib/ResponsiveContainer.js.map +1 -1
- package/lib/SankeyChart.js.map +1 -1
- package/lib/ScatterChart.js.map +1 -1
- package/lib/Sparkline.js.map +1 -1
- package/lib/VerticalBarChart.js.map +1 -1
- package/lib/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/AreaChart/AreaChart.js +3 -3
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/AreaChart.types.js.map +1 -1
- package/lib/components/AreaChart/index.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +1 -2
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +41 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +12 -8
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib/components/CommonComponents/index.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +1 -2
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +128 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +1 -2
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +126 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.js +6 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +44 -13
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DeclarativeChart/imageExporter.js +1 -0
- package/lib/components/DeclarativeChart/imageExporter.js.map +1 -1
- package/lib/components/DeclarativeChart/index.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -1
- package/lib/components/DonutChart/Arc/index.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js +1 -2
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +44 -0
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -0
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib/components/DonutChart/Pie/Pie.types.js.map +1 -1
- package/lib/components/DonutChart/Pie/index.js.map +1 -1
- package/lib/components/DonutChart/Pie/usePieStyles.styles.js +1 -2
- package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js +29 -0
- package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -0
- package/lib/components/DonutChart/index.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +1 -2
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +45 -0
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -0
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib/components/FunnelChart/funnelGeometry.js.map +1 -1
- package/lib/components/FunnelChart/index.js.map +1 -1
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +1 -2
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +51 -0
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -0
- package/lib/components/GanttChart/GanttChart.js +530 -0
- package/lib/components/GanttChart/GanttChart.js.map +1 -0
- package/lib/components/GanttChart/GanttChart.types.js +4 -0
- package/lib/components/GanttChart/GanttChart.types.js.map +1 -0
- package/lib/components/GanttChart/index.js +2 -0
- package/lib/components/GanttChart/index.js.map +1 -0
- package/lib/components/GanttChart/useGanttChartStyles.styles.js +24 -0
- package/lib/components/GanttChart/useGanttChartStyles.styles.js.map +1 -0
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js +23 -0
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -0
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GaugeChart/index.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +1 -2
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +142 -0
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +61 -56
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/index.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +53 -0
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HeatMapChart/index.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -2
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +38 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -0
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js +23 -26
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js +5 -3
- package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
- package/lib/components/HorizontalBarChart/index.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +1 -2
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +120 -0
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/index.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -2
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +39 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -0
- package/lib/components/Legends/Legends.js +7 -8
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/Legends/Legends.types.js.map +1 -1
- package/lib/components/Legends/OverflowMenu.js.map +1 -1
- package/lib/components/Legends/index.js.map +1 -1
- package/lib/components/Legends/shape.js +3 -3
- package/lib/components/Legends/shape.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.js +33 -6
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.raw.js +125 -0
- package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
- package/lib/components/LineChart/LineChart.js +3 -3
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.types.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/Textbox.js +2 -1
- package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib/components/LineChart/index.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +1 -2
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +52 -0
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -0
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
- package/lib/components/ResponsiveContainer/index.js.map +1 -1
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -2
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +28 -0
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -0
- package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib/components/SankeyChart/index.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +1 -2
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +77 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -0
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/index.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +1 -2
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +43 -0
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -0
- package/lib/components/Sparkline/Sparkline.js.map +1 -1
- package/lib/components/Sparkline/Sparkline.types.js.map +1 -1
- package/lib/components/Sparkline/index.js.map +1 -1
- package/lib/components/Sparkline/useSparklineStyles.styles.js +1 -2
- package/lib/components/Sparkline/useSparklineStyles.styles.raw.js +30 -0
- package/lib/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -0
- package/lib/components/VerticalBarChart/VerticalBarChart.js +56 -29
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib/components/VerticalBarChart/index.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +58 -0
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +17 -10
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/index.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +49 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/DataPoint.js +3 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/types/EventAnnotation.js.map +1 -1
- package/lib/types/LegendDataItem.js.map +1 -1
- package/lib/types/index.js.map +1 -1
- package/lib/utilities/FocusableTooltipText.js.map +1 -1
- package/lib/utilities/KeyCodes.js.map +1 -1
- package/lib/utilities/SVGTooltipText.js +2 -0
- package/lib/utilities/SVGTooltipText.js.map +1 -1
- package/lib/utilities/async-utils.js.map +1 -1
- package/lib/utilities/colors.js.map +1 -1
- package/lib/utilities/getWindow.js.map +1 -1
- package/lib/utilities/index.js.map +1 -1
- package/lib/utilities/overflow-utils.js.map +1 -1
- package/lib/utilities/string.js.map +1 -1
- package/lib/utilities/test-data.js +236 -0
- package/lib/utilities/test-data.js.map +1 -1
- package/lib/utilities/utilities.js +95 -27
- package/lib/utilities/utilities.js.map +1 -1
- package/lib/utilities/vbc-utils.js +2 -2
- package/lib/utilities/vbc-utils.js.map +1 -1
- package/lib-commonjs/AreaChart.js.map +1 -1
- package/lib-commonjs/CartesianChart.js.map +1 -1
- package/lib-commonjs/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/DonutChart.js.map +1 -1
- package/lib-commonjs/FunnelChart.js.map +1 -1
- package/lib-commonjs/GanttChart.js +6 -0
- package/lib-commonjs/GanttChart.js.map +1 -0
- package/lib-commonjs/GaugeChart.js.map +1 -1
- package/lib-commonjs/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/HeatMapChart.js.map +1 -1
- package/lib-commonjs/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/Legends.js.map +1 -1
- package/lib-commonjs/LineChart.js.map +1 -1
- package/lib-commonjs/Popover.js.map +1 -1
- package/lib-commonjs/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/SankeyChart.js.map +1 -1
- package/lib-commonjs/ScatterChart.js.map +1 -1
- package/lib-commonjs/Sparkline.js.map +1 -1
- package/lib-commonjs/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +3 -3
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -1
- package/lib-commonjs/components/AreaChart/index.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +57 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +11 -7
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/index.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +142 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +140 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +5 -0
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +47 -13
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js +1 -0
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +58 -0
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +1 -1
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js +43 -0
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/DonutChart/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +59 -0
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/funnelGeometry.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/index.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +65 -0
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/GanttChart/GanttChart.js +541 -0
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -0
- package/lib-commonjs/components/GanttChart/GanttChart.types.js +7 -0
- package/lib-commonjs/components/GanttChart/GanttChart.types.js.map +1 -0
- package/lib-commonjs/components/GanttChart/index.js +7 -0
- package/lib-commonjs/components/GanttChart/index.js.map +1 -0
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js +39 -0
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js +39 -0
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/index.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +160 -0
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +61 -56
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/index.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +69 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/index.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +56 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +23 -26
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js +3 -3
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/index.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +134 -0
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +55 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/Legends/Legends.js +7 -8
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
- package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
- package/lib-commonjs/components/Legends/index.js.map +1 -1
- package/lib-commonjs/components/Legends/shape.js +2 -2
- package/lib-commonjs/components/Legends/shape.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +46 -5
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +141 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/LineChart/LineChart.js +3 -3
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +2 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib-commonjs/components/LineChart/index.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +66 -0
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +46 -0
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/index.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +95 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/index.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +57 -0
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
- package/lib-commonjs/components/Sparkline/Sparkline.types.js.map +1 -1
- package/lib-commonjs/components/Sparkline/index.js.map +1 -1
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +1 -1
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js +44 -0
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +56 -29
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/index.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +74 -0
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +17 -10
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/index.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +67 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/index.js +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js +3 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/types/EventAnnotation.js.map +1 -1
- package/lib-commonjs/types/LegendDataItem.js.map +1 -1
- package/lib-commonjs/types/index.js.map +1 -1
- package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/KeyCodes.js.map +1 -1
- package/lib-commonjs/utilities/SVGTooltipText.js +2 -0
- package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/async-utils.js.map +1 -1
- package/lib-commonjs/utilities/colors.js.map +1 -1
- package/lib-commonjs/utilities/getWindow.js.map +1 -1
- package/lib-commonjs/utilities/index.js.map +1 -1
- package/lib-commonjs/utilities/overflow-utils.js.map +1 -1
- package/lib-commonjs/utilities/string.js.map +1 -1
- package/lib-commonjs/utilities/test-data.js +245 -0
- package/lib-commonjs/utilities/test-data.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +91 -22
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/lib-commonjs/utilities/vbc-utils.js +2 -2
- package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
- package/package.json +14 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FunnelChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useId } from '@fluentui/react-utilities';\nimport { useRtl } from '../../utilities/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from './FunnelChart.types';\nimport { Legend, Legends } from '../Legends/index';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { getContrastTextColor } from '../../utilities/colors';\nimport { useFunnelChartStyles } from './useFunnelChartStyles.styles';\nimport {\n getHorizontalFunnelSegmentGeometry,\n getVerticalFunnelSegmentGeometry,\n getSegmentTextProps,\n getStackedHorizontalFunnelSegmentGeometry,\n getStackedVerticalFunnelSegmentGeometry,\n} from './funnelGeometry';\nimport { ChartPopoverProps } from '../../index';\n\nexport const FunnelChart: React.FunctionComponent<FunnelChartProps> = React.forwardRef<\n HTMLDivElement,\n FunnelChartProps\n>((props, forwardedRef) => {\n const _emptyChartId: string = useId('_FunnelChart_empty');\n const isRTL = useRtl();\n\n const [hoveredStage, setHoveredStage] = React.useState<string | null>(null);\n const [calloutData, setCalloutData] = React.useState<FunnelChartDataPoint | null>(null);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>([]);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const chartContainerRef = React.useRef<HTMLDivElement | null>(null);\n const isStacked = isStackedFunnelData(props.data);\n\n React.useEffect(() => {\n if (props.legendProps?.selectedLegends) {\n setSelectedLegends(props.legendProps.selectedLegends);\n }\n }, [props.legendProps?.selectedLegends]);\n\n function _handleHover(data: FunnelChartDataPoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent?.persist();\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setCalloutData(data);\n setPopoverOpen(true);\n }\n\n function _handleFocus(data: FunnelChartDataPoint, focusEvent: React.FocusEvent<SVGPathElement>) {\n focusEvent?.persist();\n let x = 0;\n let y = 0;\n const targetRect = (focusEvent.target as SVGPathElement).getBoundingClientRect();\n x = targetRect.left + targetRect.width / 2;\n y = targetRect.top + targetRect.height / 2;\n\n updatePosition(x, y);\n setCalloutData(data);\n setPopoverOpen(true);\n }\n\n function _handleStackedHover(\n stage: string,\n subValue: { category: string; value: number; color: string },\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setPopoverOpen(true);\n }\n\n function _handleStackedFocus(\n stage: string,\n subValue: { category: string; value: number; color: string },\n focusEvent: React.FocusEvent<SVGPathElement>,\n ) {\n focusEvent?.persist();\n let x = 0;\n let y = 0;\n const targetRect = (focusEvent.target as SVGPathElement).getBoundingClientRect();\n x = targetRect.left + targetRect.width / 2;\n y = targetRect.top + targetRect.height / 2;\n\n updatePosition(x, y);\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setPopoverOpen(true);\n }\n\n function _handleMouseOut() {\n setHoveredStage(null);\n setPopoverOpen(false);\n setCalloutData(null);\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n const _onLegendSelectionChangeCallback = React.useCallback(_onLegendSelectionChange, [props.legendProps]);\n\n function getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : hoveredStage ? [hoveredStage] : [];\n }\n\n function legendHighlighted(legend: string): boolean {\n return getHighlightedLegend().includes(legend);\n }\n\n function noLegendHighlighted(): boolean {\n return getHighlightedLegend().length === 0;\n }\n\n function _getEventHandlerProps(\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } },\n opacity?: number,\n ) {\n if ('subValue' in data) {\n return {\n culture: props.culture,\n onMouseOver:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) => _handleStackedHover(data.stage, data.subValue, event)\n : undefined,\n onMouseMove:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) => _handleStackedHover(data.stage, data.subValue, event)\n : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) => _handleStackedFocus(data.stage, data.subValue, event),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n } else {\n return {\n culture: props.culture,\n onMouseOver: opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event) : undefined,\n onMouseMove: opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event) : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) => _handleFocus(data, event),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n }\n }\n\n function _renderSegmentText({\n show,\n x,\n y,\n value,\n textColor,\n }: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n textColor: string;\n }) {\n if (!show) {\n return null;\n }\n\n const textElement = (\n <text x={isRTL ? funnelWidth - x : x} y={y} textAnchor=\"middle\" alignmentBaseline=\"middle\" fill={textColor}>\n {formatToLocaleString(value.toString(), props.culture) as React.ReactNode}\n </text>\n );\n\n if (isRTL) {\n return <g transform={`scale(-1,1) translate(${-funnelWidth},0)`}>{textElement}</g>;\n }\n return textElement;\n }\n\n function _renderFunnelSegment({\n key,\n pathD,\n fill,\n opacity,\n textProps,\n data,\n tabIndex,\n }: {\n key: string | number;\n pathD: string;\n fill: string;\n opacity: number;\n textProps?: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n };\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } };\n tabIndex?: number;\n }) {\n const eventHandlers = _getEventHandlerProps(data, opacity);\n const textColor = getContrastTextColor(fill);\n\n return (\n <g key={key}>\n <path d={pathD} fill={fill} opacity={opacity} {...eventHandlers} tabIndex={tabIndex} />\n {textProps && <g {...eventHandlers}>{_renderSegmentText({ ...textProps, textColor })}</g>}\n </g>\n );\n }\n\n function _createFunnel(\n containerHeight: number,\n containerWidth: number,\n ): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element[] {\n const { data } = props;\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n return data.map((d, i) => {\n const geometryProps =\n props.orientation === 'vertical'\n ? getVerticalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL })\n : getHorizontalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL });\n\n const { pathD, textX, textY, availableWidth } = geometryProps;\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps(d);\n const textProps = getSegmentTextProps({\n availableWidth,\n minTextWidth,\n textX,\n textY,\n value: d.value!,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: i,\n pathD,\n fill: d.color!,\n opacity: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: d,\n tabIndex: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 0 : undefined,\n });\n });\n }\n\n function isStackedFunnelData(data: FunnelChartDataPoint[]): boolean {\n return Array.isArray(data) && data.every(stage => Array.isArray(stage.subValues));\n }\n\n function _renderStackedSegment(\n stage: FunnelChartDataPoint,\n subValue: { value: number; color: string; category: string },\n stageIndex: number,\n subValueIndex: number,\n geometryParams: {\n stages: FunnelChartDataPoint[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n },\n ): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element {\n // Ensure stages have subValues for geometry functions\n const stagesWithSubValues = geometryParams.stages.map(s => ({\n ...s,\n subValues: s.subValues || [],\n }));\n const geom =\n props.orientation === 'vertical'\n ? getStackedVerticalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n })\n : getStackedHorizontalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n });\n\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps({ stage: stage.stage as string, subValue });\n const textProps = getSegmentTextProps({\n availableWidth: geom.availableWidth,\n minTextWidth,\n textX: geom.textX,\n textY: geom.textY,\n value: subValue.value,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: `${stageIndex}-${subValueIndex}`,\n pathD: geom.pathD,\n fill: subValue.color,\n opacity:\n (isStackedFunnelData(props.data) && legendHighlighted(subValue.category)) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: { stage: stage.stage as string, subValue },\n tabIndex: legendHighlighted(subValue.category) || noLegendHighlighted() ? 0 : undefined,\n });\n }\n\n function _createStackedFunnel(\n containerHeight: number,\n containerWidth: number,\n ): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element[] {\n const { data } = props;\n\n const stages = data;\n const totals = stages.map(s => s?.subValues?.reduce((sum, subValue) => sum + subValue.value, 0) ?? 0);\n const maxTotal = Math.max(...totals);\n\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const paths: JSX.Element[] = [];\n\n const geometryParams = {\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n isRTL,\n };\n\n for (let i = 0; i < stages.length; i++) {\n const cur = stages[i];\n for (let k = 0; k < (cur.subValues ?? []).length; k++) {\n const v = cur.subValues?.[k];\n if (!v) {\n continue;\n }\n paths.push(_renderStackedSegment(cur, v, i, k, geometryParams));\n }\n }\n return paths;\n }\n\n function _renderLegends(): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element {\n if (props.hideLegend) {\n return <></>;\n }\n let legends: Legend[];\n\n if (isStacked) {\n // Collect unique categories and their color\n const categoryMap: Record<string, string> = {};\n props.data.forEach((stage: FunnelChartDataPoint) => {\n (stage.subValues || []).forEach(sub => {\n if (!(sub.category in categoryMap)) {\n categoryMap[sub.category] = sub.color;\n }\n });\n });\n legends = Object.entries(categoryMap).map(([category, color]) => ({\n title: category,\n color,\n hoverAction: () => setHoveredStage(category),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n } else {\n legends = props.data.map((d: FunnelChartDataPoint) => ({\n title: d.stage as string,\n color: d.color!,\n hoverAction: () => setHoveredStage(d.stage as string),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n }\n\n return (\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Legends\n legends={legends}\n centerLegends={true}\n onChange={_onLegendSelectionChangeCallback}\n {...props.legendProps}\n />\n </div>\n );\n }\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n const classes = useFunnelChartStyles(props);\n\n const calloutProps: ChartPopoverProps = {\n ...props.calloutProps,\n color: calloutData?.color,\n hoverXValue: calloutData?.stage,\n YValue: calloutData?.value,\n };\n\n const width = props.width || 350;\n const height = props.height || 500;\n\n const funnelMarginTop = 40;\n const funnelWidth = width * 0.8;\n const funnelOffsetX = (width - funnelWidth) / 2;\n const focusAttributes = useFocusableGroup();\n\n return !_isChartEmpty() ? (\n <div ref={chartContainerRef} className={classes.root} {...focusAttributes}>\n <svg width={width} height={height} className={classes.chart} role={'img'} aria-label={props.chartTitle}>\n <g\n transform={\n isRTL\n ? `translate(${funnelOffsetX + funnelWidth}, ${funnelMarginTop}) scale(-1,1)`\n : `translate(${funnelOffsetX}, ${funnelMarginTop})`\n }\n >\n {isStacked\n ? _createStackedFunnel(height - funnelMarginTop, funnelWidth)\n : _createFunnel(height - funnelMarginTop, funnelWidth)}\n </g>\n </svg>\n {isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n XValue={calloutProps?.hoverXValue as string}\n yCalloutValue={calloutProps?.YValue as string}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n color={calloutProps?.color}\n isCartesian={false}\n />\n )}\n {_renderLegends()}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nFunnelChart.displayName = 'FunnelChart';\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nFunnelChart.defaultProps = {\n orientation: 'vertical',\n};\n"],"names":["FunnelChart","React","forwardRef","props","forwardedRef","_emptyChartId","useId","isRTL","useRtl","hoveredStage","setHoveredStage","useState","calloutData","setCalloutData","selectedLegends","setSelectedLegends","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","chartContainerRef","useRef","isStacked","isStackedFunnelData","data","useEffect","legendProps","_handleHover","mouseEvent","persist","updatePosition","clientX","clientY","_handleFocus","focusEvent","targetRect","target","getBoundingClientRect","left","width","top","height","_handleStackedHover","stage","subValue","value","color","category","_handleStackedFocus","_handleMouseOut","_onLegendSelectionChange","legendsSelected","event","currentLegend","canSelectMultipleLegends","slice","onChange","_onLegendSelectionChangeCallback","useCallback","getHighlightedLegend","length","legendHighlighted","legend","includes","noLegendHighlighted","_getEventHandlerProps","opacity","culture","onMouseOver","undefined","onMouseMove","onFocus","onBlur","onMouseOut","_renderSegmentText","show","textColor","textElement","createElement","text","funnelWidth","textAnchor","alignmentBaseline","fill","formatToLocaleString","toString","g","transform","_renderFunnelSegment","key","pathD","textProps","tabIndex","eventHandlers","getContrastTextColor","path","d","_createFunnel","containerHeight","containerWidth","funnelHeight","map","i","geometryProps","orientation","getVerticalFunnelSegmentGeometry","getHorizontalFunnelSegmentGeometry","textX","textY","availableWidth","minTextWidth","eventHandlerProps","getSegmentTextProps","Array","isArray","every","subValues","_renderStackedSegment","stageIndex","subValueIndex","geometryParams","stagesWithSubValues","stages","s","geom","getStackedVerticalFunnelSegmentGeometry","k","getStackedHorizontalFunnelSegmentGeometry","_createStackedFunnel","totals","reduce","sum","maxTotal","Math","max","paths","cur","v","push","_renderLegends","hideLegend","Fragment","legends","categoryMap","forEach","sub","Object","entries","title","hoverAction","onMouseOutAction","div","style","display","justifyContent","Legends","centerLegends","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","classes","useFunnelChartStyles","calloutProps","hoverXValue","YValue","funnelMarginTop","funnelOffsetX","focusAttributes","useFocusableGroup","ref","className","root","svg","chart","role","aria-label","chartTitle","ChartPopover","XValue","yCalloutValue","isCartesian","id","displayName","defaultProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/FunnelChart/FunnelChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useId } from '@fluentui/react-utilities';\nimport { useRtl } from '../../utilities/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from './FunnelChart.types';\nimport { Legend, Legends } from '../Legends/index';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { getContrastTextColor } from '../../utilities/colors';\nimport { useFunnelChartStyles } from './useFunnelChartStyles.styles';\nimport {\n getHorizontalFunnelSegmentGeometry,\n getVerticalFunnelSegmentGeometry,\n getSegmentTextProps,\n getStackedHorizontalFunnelSegmentGeometry,\n getStackedVerticalFunnelSegmentGeometry,\n} from './funnelGeometry';\nimport { ChartPopoverProps } from '../../index';\n\nexport const FunnelChart: React.FunctionComponent<FunnelChartProps> = React.forwardRef<\n HTMLDivElement,\n FunnelChartProps\n>((props, forwardedRef) => {\n const _emptyChartId: string = useId('_FunnelChart_empty');\n const isRTL = useRtl();\n\n const [hoveredStage, setHoveredStage] = React.useState<string | null>(null);\n const [calloutData, setCalloutData] = React.useState<FunnelChartDataPoint | null>(null);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>([]);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const chartContainerRef = React.useRef<HTMLDivElement | null>(null);\n const isStacked = isStackedFunnelData(props.data);\n\n React.useEffect(() => {\n if (props.legendProps?.selectedLegends) {\n setSelectedLegends(props.legendProps.selectedLegends);\n }\n }, [props.legendProps?.selectedLegends]);\n\n function _handleHover(data: FunnelChartDataPoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent?.persist();\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setCalloutData(data);\n setPopoverOpen(true);\n }\n\n function _handleFocus(data: FunnelChartDataPoint, focusEvent: React.FocusEvent<SVGPathElement>) {\n focusEvent?.persist();\n let x = 0;\n let y = 0;\n const targetRect = (focusEvent.target as SVGPathElement).getBoundingClientRect();\n x = targetRect.left + targetRect.width / 2;\n y = targetRect.top + targetRect.height / 2;\n\n updatePosition(x, y);\n setCalloutData(data);\n setPopoverOpen(true);\n }\n\n function _handleStackedHover(\n stage: string,\n subValue: { category: string; value: number; color: string },\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setPopoverOpen(true);\n }\n\n function _handleStackedFocus(\n stage: string,\n subValue: { category: string; value: number; color: string },\n focusEvent: React.FocusEvent<SVGPathElement>,\n ) {\n focusEvent?.persist();\n let x = 0;\n let y = 0;\n const targetRect = (focusEvent.target as SVGPathElement).getBoundingClientRect();\n x = targetRect.left + targetRect.width / 2;\n y = targetRect.top + targetRect.height / 2;\n\n updatePosition(x, y);\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setPopoverOpen(true);\n }\n\n function _handleMouseOut() {\n setHoveredStage(null);\n setPopoverOpen(false);\n setCalloutData(null);\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n const _onLegendSelectionChangeCallback = React.useCallback(_onLegendSelectionChange, [props.legendProps]);\n\n function getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : hoveredStage ? [hoveredStage] : [];\n }\n\n function legendHighlighted(legend: string): boolean {\n return getHighlightedLegend().includes(legend);\n }\n\n function noLegendHighlighted(): boolean {\n return getHighlightedLegend().length === 0;\n }\n\n function _getEventHandlerProps(\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } },\n opacity?: number,\n ) {\n if ('subValue' in data) {\n return {\n culture: props.culture,\n onMouseOver:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) => _handleStackedHover(data.stage, data.subValue, event)\n : undefined,\n onMouseMove:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) => _handleStackedHover(data.stage, data.subValue, event)\n : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) => _handleStackedFocus(data.stage, data.subValue, event),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n } else {\n return {\n culture: props.culture,\n onMouseOver: opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event) : undefined,\n onMouseMove: opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event) : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) => _handleFocus(data, event),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n }\n }\n\n function _renderSegmentText({\n show,\n x,\n y,\n value,\n textColor,\n }: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n textColor: string;\n }) {\n if (!show) {\n return null;\n }\n\n const textElement = (\n <text x={isRTL ? funnelWidth - x : x} y={y} textAnchor=\"middle\" alignmentBaseline=\"middle\" fill={textColor}>\n {formatToLocaleString(value.toString(), props.culture) as React.ReactNode}\n </text>\n );\n\n if (isRTL) {\n return <g transform={`scale(-1,1) translate(${-funnelWidth},0)`}>{textElement}</g>;\n }\n return textElement;\n }\n\n function _renderFunnelSegment({\n key,\n pathD,\n fill,\n opacity,\n textProps,\n data,\n tabIndex,\n }: {\n key: string | number;\n pathD: string;\n fill: string;\n opacity: number;\n textProps?: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n };\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } };\n tabIndex?: number;\n }) {\n const eventHandlers = _getEventHandlerProps(data, opacity);\n const textColor = getContrastTextColor(fill);\n\n return (\n <g key={key}>\n <path d={pathD} fill={fill} opacity={opacity} {...eventHandlers} tabIndex={tabIndex} />\n {textProps && <g {...eventHandlers}>{_renderSegmentText({ ...textProps, textColor })}</g>}\n </g>\n );\n }\n\n function _createFunnel(\n containerHeight: number,\n containerWidth: number,\n ): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element[] {\n const { data } = props;\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n return data.map((d, i) => {\n const geometryProps =\n props.orientation === 'vertical'\n ? getVerticalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL })\n : getHorizontalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL });\n\n const { pathD, textX, textY, availableWidth } = geometryProps;\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps(d);\n const textProps = getSegmentTextProps({\n availableWidth,\n minTextWidth,\n textX,\n textY,\n value: d.value!,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: i,\n pathD,\n fill: d.color!,\n opacity: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: d,\n tabIndex: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 0 : undefined,\n });\n });\n }\n\n function isStackedFunnelData(data: FunnelChartDataPoint[]): boolean {\n return Array.isArray(data) && data.every(stage => Array.isArray(stage.subValues));\n }\n\n function _renderStackedSegment(\n stage: FunnelChartDataPoint,\n subValue: { value: number; color: string; category: string },\n stageIndex: number,\n subValueIndex: number,\n geometryParams: {\n stages: FunnelChartDataPoint[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n },\n ): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element {\n // Ensure stages have subValues for geometry functions\n const stagesWithSubValues = geometryParams.stages.map(s => ({\n ...s,\n subValues: s.subValues || [],\n }));\n const geom =\n props.orientation === 'vertical'\n ? getStackedVerticalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n })\n : getStackedHorizontalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n });\n\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps({ stage: stage.stage as string, subValue });\n const textProps = getSegmentTextProps({\n availableWidth: geom.availableWidth,\n minTextWidth,\n textX: geom.textX,\n textY: geom.textY,\n value: subValue.value,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: `${stageIndex}-${subValueIndex}`,\n pathD: geom.pathD,\n fill: subValue.color,\n opacity:\n (isStackedFunnelData(props.data) && legendHighlighted(subValue.category)) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: { stage: stage.stage as string, subValue },\n tabIndex: legendHighlighted(subValue.category) || noLegendHighlighted() ? 0 : undefined,\n });\n }\n\n function _createStackedFunnel(\n containerHeight: number,\n containerWidth: number,\n ): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element[] {\n const { data } = props;\n\n const stages = data;\n const totals = stages.map(s => s?.subValues?.reduce((sum, subValue) => sum + subValue.value, 0) ?? 0);\n const maxTotal = Math.max(...totals);\n\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const paths: JSX.Element[] = [];\n\n const geometryParams = {\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n isRTL,\n };\n\n for (let i = 0; i < stages.length; i++) {\n const cur = stages[i];\n for (let k = 0; k < (cur.subValues ?? []).length; k++) {\n const v = cur.subValues?.[k];\n if (!v) {\n continue;\n }\n paths.push(_renderStackedSegment(cur, v, i, k, geometryParams));\n }\n }\n return paths;\n }\n\n function _renderLegends(): // eslint-disable-next-line @typescript-eslint/no-deprecated\n JSX.Element {\n if (props.hideLegend) {\n return <></>;\n }\n let legends: Legend[];\n\n if (isStacked) {\n // Collect unique categories and their color\n const categoryMap: Record<string, string> = {};\n props.data.forEach((stage: FunnelChartDataPoint) => {\n (stage.subValues || []).forEach(sub => {\n if (!(sub.category in categoryMap)) {\n categoryMap[sub.category] = sub.color;\n }\n });\n });\n legends = Object.entries(categoryMap).map(([category, color]) => ({\n title: category,\n color,\n hoverAction: () => setHoveredStage(category),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n } else {\n legends = props.data.map((d: FunnelChartDataPoint) => ({\n title: d.stage as string,\n color: d.color!,\n hoverAction: () => setHoveredStage(d.stage as string),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n }\n\n return (\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Legends\n legends={legends}\n centerLegends={true}\n onChange={_onLegendSelectionChangeCallback}\n {...props.legendProps}\n />\n </div>\n );\n }\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n const classes = useFunnelChartStyles(props);\n\n const calloutProps: ChartPopoverProps = {\n ...props.calloutProps,\n color: calloutData?.color,\n hoverXValue: calloutData?.stage,\n YValue: calloutData?.value,\n };\n\n const width = props.width || 350;\n const height = props.height || 500;\n\n const funnelMarginTop = 40;\n const funnelWidth = width * 0.8;\n const funnelOffsetX = (width - funnelWidth) / 2;\n const focusAttributes = useFocusableGroup();\n\n return !_isChartEmpty() ? (\n <div ref={chartContainerRef} className={classes.root} {...focusAttributes}>\n <svg width={width} height={height} className={classes.chart} role={'img'} aria-label={props.chartTitle}>\n <g\n transform={\n isRTL\n ? `translate(${funnelOffsetX + funnelWidth}, ${funnelMarginTop}) scale(-1,1)`\n : `translate(${funnelOffsetX}, ${funnelMarginTop})`\n }\n >\n {isStacked\n ? _createStackedFunnel(height - funnelMarginTop, funnelWidth)\n : _createFunnel(height - funnelMarginTop, funnelWidth)}\n </g>\n </svg>\n {isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n XValue={calloutProps?.hoverXValue as string}\n yCalloutValue={calloutProps?.YValue as string}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n color={calloutProps?.color}\n isCartesian={false}\n />\n )}\n {_renderLegends()}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nFunnelChart.displayName = 'FunnelChart';\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nFunnelChart.defaultProps = {\n orientation: 'vertical',\n};\n"],"names":["React","useId","useRtl","Legends","useFocusableGroup","ChartPopover","formatToLocaleString","getContrastTextColor","useFunnelChartStyles","getHorizontalFunnelSegmentGeometry","getVerticalFunnelSegmentGeometry","getSegmentTextProps","getStackedHorizontalFunnelSegmentGeometry","getStackedVerticalFunnelSegmentGeometry","FunnelChart","forwardRef","props","forwardedRef","_emptyChartId","isRTL","hoveredStage","setHoveredStage","useState","calloutData","setCalloutData","selectedLegends","setSelectedLegends","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","chartContainerRef","useRef","isStacked","isStackedFunnelData","data","useEffect","legendProps","_handleHover","mouseEvent","persist","updatePosition","clientX","clientY","_handleFocus","focusEvent","targetRect","target","getBoundingClientRect","left","width","top","height","_handleStackedHover","stage","subValue","value","color","category","_handleStackedFocus","_handleMouseOut","_onLegendSelectionChange","legendsSelected","event","currentLegend","canSelectMultipleLegends","slice","onChange","_onLegendSelectionChangeCallback","useCallback","getHighlightedLegend","length","legendHighlighted","legend","includes","noLegendHighlighted","_getEventHandlerProps","opacity","culture","onMouseOver","undefined","onMouseMove","onFocus","onBlur","onMouseOut","_renderSegmentText","show","textColor","textElement","text","funnelWidth","textAnchor","alignmentBaseline","fill","toString","g","transform","_renderFunnelSegment","key","pathD","textProps","tabIndex","eventHandlers","path","d","_createFunnel","containerHeight","containerWidth","funnelHeight","map","i","geometryProps","orientation","textX","textY","availableWidth","minTextWidth","eventHandlerProps","Array","isArray","every","subValues","_renderStackedSegment","stageIndex","subValueIndex","geometryParams","stagesWithSubValues","stages","s","geom","k","_createStackedFunnel","totals","reduce","sum","maxTotal","Math","max","paths","cur","v","push","_renderLegends","hideLegend","legends","categoryMap","forEach","sub","Object","entries","title","hoverAction","onMouseOutAction","div","style","display","justifyContent","centerLegends","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","classes","calloutProps","hoverXValue","YValue","funnelMarginTop","funnelOffsetX","focusAttributes","ref","className","root","svg","chart","role","aria-label","chartTitle","XValue","yCalloutValue","isCartesian","id","displayName","defaultProps"],"mappings":";;;;+BAmBac;;;;;;;iEAnBU,QAAQ;gCACT,4BAA4B;uBAC3B,wBAAwB;wBAEf,mBAAmB;8BACjB,0BAA0B;8BAC/B,mCAAmC;gCAC3B,4BAA4B;wBAC5B,yBAAyB;4CACzB,gCAAgC;gCAO9D,mBAAmB;AAGnB,oBAAMA,WAAAA,GAAyDd,OAAMe,UAAU,CAGpF,CAACC,OAAOC;QAgBJD;IAfJ,MAAME,oBAAwBjB,qBAAAA,EAAM;IACpC,MAAMkB,YAAQjB,aAAAA;IAEd,MAAM,CAACkB,cAAcC,gBAAgB,GAAGrB,OAAMsB,QAAQ,CAAgB;IACtE,MAAM,CAACC,aAAaC,eAAe,GAAGxB,OAAMsB,QAAQ,CAA8B;IAClF,MAAM,CAACG,iBAAiBC,mBAAmB,GAAG1B,OAAMsB,QAAQ,CAAW,EAAE;IACzE,MAAM,CAACK,eAAeC,iBAAiB,GAAG5B,OAAMsB,QAAQ,CAAC;QAAEO,GAAG;QAAGC,GAAG;IAAE;IACtE,MAAM,CAACC,eAAeC,eAAe,GAAGhC,OAAMsB,QAAQ,CAAC;IACvD,MAAMW,oBAAoBjC,OAAMkC,MAAM,CAAwB;IAC9D,MAAMC,YAAYC,oBAAoBpB,MAAMqB,IAAI;IAEhDrC,OAAMsC,SAAS,CAAC;YACVtB;QAAJ,IAAA,CAAIA,qBAAAA,MAAMuB,WAAAA,AAAW,MAAA,QAAjBvB,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBS,eAAe,EAAE;YACtCC,mBAAmBV,MAAMuB,WAAW,CAACd,eAAe;QACtD;IACF,GAAG;SAACT,qBAAAA,MAAMuB,WAAAA,AAAW,MAAA,QAAjBvB,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBS,eAAe;KAAC;IAEvC,SAASe,aAAaH,IAA0B,EAAEI,UAAwC;QACxFA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYC,OAAO;QACnBC,eAAeF,WAAWG,OAAO,EAAEH,WAAWI,OAAO;QACrDrB,eAAea;QACfL,eAAe;IACjB;IAEA,SAASc,aAAaT,IAA0B,EAAEU,UAA4C;QAC5FA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYL,OAAO;QACnB,IAAIb,IAAI;QACR,IAAIC,IAAI;QACR,MAAMkB,aAAcD,WAAWE,MAAM,CAAoBC,qBAAqB;QAC9ErB,IAAImB,WAAWG,IAAI,GAAGH,WAAWI,KAAK,GAAG;QACzCtB,IAAIkB,WAAWK,GAAG,GAAGL,WAAWM,MAAM,GAAG;QAEzCX,eAAed,GAAGC;QAClBN,eAAea;QACfL,eAAe;IACjB;IAEA,SAASuB,oBACPC,KAAa,EACbC,QAA4D,EAC5DhB,UAAwC;QAExCA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYC,OAAO;QACnBC,eAAeF,WAAWG,OAAO,EAAEH,WAAWI,OAAO;QACrDrB,eAAe;YACbgC;YACAE,OAAOD,SAASC,KAAK;YACrBC,OAAOF,SAASE,KAAK;YACrBC,UAAUH,SAASG,QAAQ;QAC7B;QACA5B,eAAe;IACjB;IAEA,SAAS6B,oBACPL,KAAa,EACbC,QAA4D,EAC5DV,UAA4C;QAE5CA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAYL,OAAO;QACnB,IAAIb,IAAI;QACR,IAAIC,IAAI;QACR,MAAMkB,aAAcD,WAAWE,MAAM,CAAoBC,qBAAqB;QAC9ErB,IAAImB,WAAWG,IAAI,GAAGH,WAAWI,KAAK,GAAG;QACzCtB,IAAIkB,WAAWK,GAAG,GAAGL,WAAWM,MAAM,GAAG;QAEzCX,eAAed,GAAGC;QAClBN,eAAe;YACbgC;YACAE,OAAOD,SAASC,KAAK;YACrBC,OAAOF,SAASE,KAAK;YACrBC,UAAUH,SAASG,QAAQ;QAC7B;QACA5B,eAAe;IACjB;IAEA,SAAS8B;QACPzC,gBAAgB;QAChBW,eAAe;QACfR,eAAe;IACjB;IAEA,SAASuC,yBACPC,eAAyB,EACzBC,KAA0C,EAC1CC,aAAsB;YAElBlD,oBAMAA;QANJ,IAAA,CAAIA,qBAAAA,MAAMuB,WAAAA,AAAW,MAAA,QAAjBvB,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBmD,wBAAwB,EAAE;YAC/CzC,mBAAmBsC;QACrB,OAAO;YACLtC,mBAAmBsC,gBAAgBI,KAAK,CAAC,CAAC;QAC5C;QAEA,IAAA,CAAIpD,sBAAAA,MAAMuB,WAAAA,AAAW,MAAA,QAAjBvB,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAmBqD,QAAQ,EAAE;YAC/BrD,MAAMuB,WAAW,CAAC8B,QAAQ,CAACL,iBAAiBC,OAAOC;QACrD;IACF;IAEA,MAAMI,mCAAmCtE,OAAMuE,WAAW,CAACR,0BAA0B;QAAC/C,MAAMuB,WAAW;KAAC;IAExG,SAASiC;QACP,OAAO/C,gBAAgBgD,MAAM,GAAG,IAAIhD,kBAAkBL,eAAe;YAACA;SAAa,GAAG,EAAE;IAC1F;IAEA,SAASsD,kBAAkBC,MAAc;QACvC,OAAOH,uBAAuBI,QAAQ,CAACD;IACzC;IAEA,SAASE;QACP,OAAOL,uBAAuBC,MAAM,KAAK;IAC3C;IAEA,SAASK,sBACPzC,IAA4G,EAC5G0C,OAAgB;QAEhB,IAAI,cAAc1C,MAAM;YACtB,OAAO;gBACL2C,SAAShE,MAAMgE,OAAO;gBACtBC,aACEF,WAAW,IACP,CAACd,QAAwCV,oBAAoBlB,KAAKmB,KAAK,EAAEnB,KAAKoB,QAAQ,EAAEQ,SACxFiB;gBACNC,aACEJ,WAAW,IACP,CAACd,QAAwCV,oBAAoBlB,KAAKmB,KAAK,EAAEnB,KAAKoB,QAAQ,EAAEQ,SACxFiB;gBACNE,SAAS,CAACnB,QAA4CJ,oBAAoBxB,KAAKmB,KAAK,EAAEnB,KAAKoB,QAAQ,EAAEQ;gBACrGoB,QAAQ,IAAMvB;gBACdwB,YAAY,IAAMxB;YACpB;QACF,OAAO;YACL,OAAO;gBACLkB,SAAShE,MAAMgE,OAAO;gBACtBC,aAAaF,WAAW,IAAI,CAACd,QAAwCzB,aAAaH,MAAM4B,SAASiB;gBACjGC,aAAaJ,WAAW,IAAI,CAACd,QAAwCzB,aAAaH,MAAM4B,SAASiB;gBACjGE,SAAS,CAACnB,QAA4CnB,aAAaT,MAAM4B;gBACzEoB,QAAQ,IAAMvB;gBACdwB,YAAY,IAAMxB;YACpB;QACF;IACF;IAEA,SAASyB,mBAAmB,EAC1BC,IAAI,EACJ3D,CAAC,EACDC,CAAC,EACD4B,KAAK,EACL+B,SAAS,EAOV;QACC,IAAI,CAACD,MAAM;YACT,OAAO;QACT;QAEA,MAAME,cAAAA,WAAAA,GACJ,OAAA,aAAA,CAACC,QAAAA;YAAK9D,GAAGV,QAAQyE,cAAc/D,IAAIA;YAAGC,GAAGA;YAAG+D,YAAW;YAASC,mBAAkB;YAASC,MAAMN;eAC9FnF,oCAAAA,EAAqBoD,MAAMsC,QAAQ,IAAIhF,MAAMgE,OAAO;QAIzD,IAAI7D,OAAO;YACT,OAAA,WAAA,GAAO,OAAA,aAAA,CAAC8E,KAAAA;gBAAEC,WAAW,CAAC,sBAAsB,EAAE,CAACN,YAAY,GAAG,CAAC;eAAGF;QACpE;QACA,OAAOA;IACT;IAEA,SAASS,qBAAqB,EAC5BC,GAAG,EACHC,KAAK,EACLN,IAAI,EACJhB,OAAO,EACPuB,SAAS,EACTjE,IAAI,EACJkE,QAAQ,EAcT;QACC,MAAMC,gBAAgB1B,sBAAsBzC,MAAM0C;QAClD,MAAMU,gBAAYlF,4BAAAA,EAAqBwF;QAEvC,OAAA,WAAA,GACE,OAAA,aAAA,CAACE,KAAAA;YAAEG,KAAKA;yBACN,OAAA,aAAA,CAACK,QAAAA;YAAKC,GAAGL;YAAON,MAAMA;YAAMhB,SAASA;YAAU,GAAGyB,aAAa;YAAED,UAAUA;YAC1ED,aAAAA,WAAAA,GAAa,OAAA,aAAA,CAACL,KAAMO,eAAgBjB,mBAAmB;YAAE,GAAGe,SAAS;YAAEb;QAAU;IAGxF;IAEA,SAASkB,cACPC,eAAuB,EACvBC,cAAsB;QAGtB,MAAM,EAAExE,IAAI,EAAE,GAAGrB;QACjB,MAAM4E,cAAciB;QACpB,MAAMC,eAAeF,kBAAkB;QAEvC,OAAOvE,KAAK0E,GAAG,CAAC,CAACL,GAAGM;YAClB,MAAMC,gBACJjG,MAAMkG,WAAW,KAAK,iBAClBxG,gDAAAA,EAAiC;gBAAEgG;gBAAGM;gBAAG3E;gBAAMuD;gBAAakB;gBAAc3F;YAAM,SAChFV,kDAAAA,EAAmC;gBAAEiG;gBAAGM;gBAAG3E;gBAAMuD;gBAAakB;gBAAc3F;YAAM;YAExF,MAAM,EAAEkF,KAAK,EAAEc,KAAK,EAAEC,KAAK,EAAEC,cAAc,EAAE,GAAGJ;YAChD,MAAMK,eAAe;YACrB,MAAMC,oBAAoBzC,sBAAsB4B;YAChD,MAAMJ,gBAAY3F,mCAAAA,EAAoB;gBACpC0G;gBACAC;gBACAH;gBACAC;gBACA1D,OAAOgD,EAAEhD,KAAK;gBACd,GAAG6D,iBAAiB;YACtB;YAEA,OAAOpB,qBAAqB;gBAC1BC,KAAKY;gBACLX;gBACAN,MAAMW,EAAE/C,KAAK;gBACboB,SAASL,kBAAkBgC,EAAElD,KAAK,KAAeqB,wBAAwB,IAAI;gBAC7EyB;gBACAjE,MAAMqE;gBACNH,UAAU7B,kBAAkBgC,EAAElD,KAAK,KAAeqB,wBAAwB,IAAIK;YAChF;QACF;IACF;IAEA,SAAS9C,oBAAoBC,IAA4B;QACvD,OAAOmF,MAAMC,OAAO,CAACpF,SAASA,KAAKqF,KAAK,CAAClE,CAAAA,QAASgE,MAAMC,OAAO,CAACjE,MAAMmE,SAAS;IACjF;IAEA,SAASC,sBACPpE,KAA2B,EAC3BC,QAA4D,EAC5DoE,UAAkB,EAClBC,aAAqB,EACrBC,cAOC;QAGD,sDAAsD;QACtD,MAAMC,sBAAsBD,eAAeE,MAAM,CAAClB,GAAG,CAACmB,CAAAA,IAAM;gBAC1D,GAAGA,CAAC;gBACJP,WAAWO,EAAEP,SAAS,IAAI,EAAE;aAC9B,CAAA;QACA,MAAMQ,OACJnH,MAAMkG,WAAW,KAAK,iBAClBrG,uDAAAA,EAAwC;YACtC,GAAGkH,cAAc;YACjBE,QAAQD;YACRhB,GAAGa;YACHO,GAAGN;QACL,SACAlH,yDAAAA,EAA0C;YACxC,GAAGmH,cAAc;YACjBE,QAAQD;YACRhB,GAAGa;YACHO,GAAGN;QACL;QAEN,MAAMR,eAAe;QACrB,MAAMC,oBAAoBzC,sBAAsB;YAAEtB,OAAOA,MAAMA,KAAK;YAAYC;QAAS;QACzF,MAAM6C,YAAY3F,uCAAAA,EAAoB;YACpC0G,gBAAgBc,KAAKd,cAAc;YACnCC;YACAH,OAAOgB,KAAKhB,KAAK;YACjBC,OAAOe,KAAKf,KAAK;YACjB1D,OAAOD,SAASC,KAAK;YACrB,GAAG6D,iBAAiB;QACtB;QAEA,OAAOpB,qBAAqB;YAC1BC,KAAK,GAAGyB,WAAW,CAAC,EAAEC,eAAe;YACrCzB,OAAO8B,KAAK9B,KAAK;YACjBN,MAAMtC,SAASE,KAAK;YACpBoB,SACG3C,oBAAoBpB,MAAMqB,IAAI,KAAKqC,kBAAkBjB,SAASG,QAAQ,KAAMiB,wBAAwB,IAAI;YAC3GyB;YACAjE,MAAM;gBAAEmB,OAAOA,MAAMA,KAAK;gBAAYC;YAAS;YAC/C8C,UAAU7B,kBAAkBjB,SAASG,QAAQ,KAAKiB,wBAAwB,IAAIK;QAChF;IACF;IAEA,SAASmD,qBACPzB,eAAuB,EACvBC,cAAsB;QAGtB,MAAM,EAAExE,IAAI,EAAE,GAAGrB;QAEjB,MAAMiH,SAAS5F;QACf,MAAMiG,SAASL,OAAOlB,GAAG,CAACmB,CAAAA;gBAAKA;gBAAAA;mBAAAA,CAAAA,sBAAAA,MAAAA,QAAAA,MAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,eAAAA,EAAGP,SAAAA,AAAS,MAAA,QAAZO,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAcK,MAAM,CAAC,CAACC,KAAK/E,WAAa+E,MAAM/E,SAASC,KAAK,EAAE,EAAA,MAAA,QAA9DwE,wBAAAA,KAAAA,IAAAA,sBAAoE;;QACnG,MAAMO,WAAWC,KAAKC,GAAG,IAAIL;QAE7B,MAAM1C,cAAciB;QACpB,MAAMC,eAAeF,kBAAkB;QAEvC,4DAA4D;QAC5D,MAAMgC,QAAuB,EAAE;QAE/B,MAAMb,iBAAiB;YACrBE;YACAK;YACAG;YACA7C;YACAkB;YACA3F;QACF;QAEA,IAAK,IAAI6F,IAAI,GAAGA,IAAIiB,OAAOxD,MAAM,EAAEuC,IAAK;YACtC,MAAM6B,MAAMZ,MAAM,CAACjB,EAAE;gBACA6B;YAArB,IAAK,IAAIT,IAAI,GAAGA,IAAKS,CAAAA,CAAAA,iBAAAA,IAAIlB,SAAAA,AAAS,MAAA,QAAbkB,mBAAAA,KAAAA,IAAAA,iBAAiB,EAAA,AAAC,EAAGpE,MAAM,EAAE2D,IAAK;oBAC3CS;gBAAV,MAAMC,IAAAA,CAAID,kBAAAA,IAAIlB,SAAAA,AAAS,MAAA,QAAbkB,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAe,CAACT,EAAE;gBAC5B,IAAI,CAACU,GAAG;oBACN;gBACF;gBACAF,MAAMG,IAAI,CAACnB,sBAAsBiB,KAAKC,GAAG9B,GAAGoB,GAAGL;YACjD;QACF;QACA,OAAOa;IACT;IAEA,SAASI;QAEP,IAAIhI,MAAMiI,UAAU,EAAE;YACpB,OAAA,WAAA,GAAO,OAAA,aAAA,CAAA,OAAA,QAAA,EAAA;QACT;QACA,IAAIC;QAEJ,IAAI/G,WAAW;YACb,4CAA4C;YAC5C,MAAMgH,cAAsC,CAAC;YAC7CnI,MAAMqB,IAAI,CAAC+G,OAAO,CAAC,CAAC5F;iBACjBA,MAAMmE,SAAS,IAAI,EAAA,AAAC,EAAGyB,OAAO,CAACC,CAAAA;oBAC9B,IAAI,CAAEA,CAAAA,IAAIzF,QAAQ,IAAIuF,WAAAA,CAAU,EAAI;wBAClCA,WAAW,CAACE,IAAIzF,QAAQ,CAAC,GAAGyF,IAAI1F,KAAK;oBACvC;gBACF;YACF;YACAuF,UAAUI,OAAOC,OAAO,CAACJ,aAAapC,GAAG,CAAC,CAAC,CAACnD,UAAUD,MAAM,GAAM,CAAA;oBAChE6F,OAAO5F;oBACPD;oBACA8F,aAAa,IAAMpI,gBAAgBuC;oBACnC8F,kBAAkB,IAAMrI,gBAAgB;gBAC1C,CAAA;QACF,OAAO;YACL6H,UAAUlI,MAAMqB,IAAI,CAAC0E,GAAG,CAAC,CAACL,IAA6B,CAAA;oBACrD8C,OAAO9C,EAAElD,KAAK;oBACdG,OAAO+C,EAAE/C,KAAK;oBACd8F,aAAa,IAAMpI,gBAAgBqF,EAAElD,KAAK;oBAC1CkG,kBAAkB,IAAMrI,gBAAgB;iBAC1C,CAAA;QACF;QAEA,OAAA,WAAA,GACE,OAAA,aAAA,CAACsI,OAAAA;YAAIC,OAAO;gBAAEC,SAAS;gBAAQC,gBAAgB;YAAS;yBACtD,OAAA,aAAA,CAAC3J,eAAAA,EAAAA;YACC+I,SAASA;YACTa,eAAe;YACf1F,UAAUC;YACT,GAAGtD,MAAMuB,WAAW;;IAI7B;IAEA,SAASyH;QACP,OAAO,CAAEhJ,CAAAA,MAAMqB,IAAI,IAAIrB,MAAMqB,IAAI,CAACoC,MAAM,GAAG,CAAA;IAC7C;IAEA,SAAS9B,eAAesH,IAAY,EAAEC,IAAY;QAChD,MAAMC,YAAY,GAAG,+BAA+B;QACpD,MAAM,EAAEtI,CAAC,EAAEC,CAAC,EAAE,GAAGH;QACjB,+BAA+B;QAC/B,MAAMyI,WAAW1B,KAAK2B,IAAI,CAAC3B,KAAK4B,GAAG,CAACL,OAAOpI,GAAG,KAAK6G,KAAK4B,GAAG,CAACJ,OAAOpI,GAAG;QACtE,+EAA+E;QAC/E,IAAIsI,WAAWD,WAAW;YACxBvI,iBAAiB;gBAAEC,GAAGoI;gBAAMnI,GAAGoI;YAAK;YACpClI,eAAe;QACjB;IACF;IAEA,MAAMuI,cAAU/J,gDAAAA,EAAqBQ;IAErC,MAAMwJ,eAAkC;QACtC,GAAGxJ,MAAMwJ,YAAY;QACrB7G,KAAK,EAAEpC,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAaoC,KAAK;QACzB8G,WAAW,EAAElJ,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAaiC,KAAK;QAC/BkH,MAAM,EAAEnJ,gBAAAA,QAAAA,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAamC,KAAK;IAC5B;IAEA,MAAMN,QAAQpC,MAAMoC,KAAK,IAAI;IAC7B,MAAME,SAAStC,MAAMsC,MAAM,IAAI;IAE/B,MAAMqH,kBAAkB;IACxB,MAAM/E,cAAcxC,QAAQ;IAC5B,MAAMwH,gBAAiBxH,CAAAA,QAAQwC,WAAAA,CAAU,GAAK;IAC9C,MAAMiF,sBAAkBzK,+BAAAA;QAsBPY;IApBjB,OAAO,CAACgJ,kBAAAA,WAAAA,GACN,OAAA,aAAA,CAACL,OAAAA;QAAImB,KAAK7I;QAAmB8I,WAAWR,QAAQS,IAAI;QAAG,GAAGH,eAAe;qBACvE,OAAA,aAAA,CAACI,OAAAA;QAAI7H,OAAOA;QAAOE,QAAQA;QAAQyH,WAAWR,QAAQW,KAAK;QAAEC,MAAM;QAAOC,cAAYpK,MAAMqK,UAAU;qBACpG,OAAA,aAAA,CAACpF,KAAAA;QACCC,WACE/E,QACI,CAAC,UAAU,EAAEyJ,gBAAgBhF,YAAY,EAAE,EAAE+E,gBAAgB,aAAa,CAAC,GAC3E,CAAC,UAAU,EAAEC,cAAc,EAAE,EAAED,gBAAgB,CAAC,CAAC;OAGtDxI,YACGkG,qBAAqB/E,SAASqH,iBAAiB/E,eAC/Ce,cAAcrD,SAASqH,iBAAiB/E,gBAG/C7D,iBAAAA,WAAAA,GACC,OAAA,aAAA,CAAC1B,0BAAAA,EAAAA;QACE,GAAGW,MAAMwJ,YAAY;QACtBc,MAAM,EAAEd,iBAAAA,QAAAA,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAcC,WAAW;QACjCc,aAAa,EAAEf,iBAAAA,QAAAA,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAcE,MAAM;QACnC1F,SAAShE,kBAAAA,MAAMgE,OAAAA,AAAO,MAAA,QAAbhE,mBAAAA,KAAAA,IAAAA,iBAAiB;QAC1BW,eAAeA;QACfI,eAAeA;QACf4B,KAAK,EAAE6G,iBAAAA,QAAAA,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAc7G,KAAK;QAC1B6H,aAAa;QAGhBxC,oBAAAA,WAAAA,GAGH,OAAA,aAAA,CAACW,OAAAA;QAAI8B,IAAIvK;QAAeiK,MAAM;QAASvB,OAAO;YAAE7E,SAAS;QAAI;QAAGqG,cAAY;;AAEhF,GAAG;AACHtK,YAAY4K,WAAW,GAAG;AAC1B,4DAA4D;AAC5D5K,YAAY6K,YAAY,GAAG;IACzBzE,aAAa;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FunnelChart.types.ts"],"sourcesContent":["import * as React from 'react';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\nimport { LegendsProps } from '../Legends/index';\n\n/**\n * Data point for funnel chart\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartDataPoint {\n /**\n * Stage name or identifier\n */\n stage: string | number;\n /**\n * Sub-values for stacked funnel charts\n * Each sub-value represents a category within the stage\n */\n subValues?: Array<{ category: string; value: number; color: string }>;\n /**\n * Value for the stage (used for non-stacked funnel charts)\n */\n value?: number;\n /**\n * Color for the stage (used for non-stacked funnel charts)\n */\n color?: string;\n}\n\n/**\n * Funnel Chart component props\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartProps {\n /**\n * Data points for the funnel chart\n */\n data: FunnelChartDataPoint[];\n /**\n * Title for the chart\n */\n chartTitle?: string;\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: ChartPopoverProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: FunnelChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Reference to the chart component\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentRef?: React.RefObject<any>;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Orientation of the funnel chart\n * @defaultvalue 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Funnel Chart style properties\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyleProps {\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n /**\n * Width of the chart\n */\n chartWidth: number;\n /**\n * Height of the chart\n */\n chartHeight: number;\n}\n\n/**\n * Funnel Chart styles\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyles {\n /**\n * Styles for the root element\n */\n root?: string;\n\n /**\n * Styles for the chart\n */\n chart?: string;\n\n /**\n * Styles for text elements\n */\n text?: string;\n\n /**\n * Styles for the callout root element\n */\n calloutContentRoot?: string;\n}\n"],"names":[
|
|
1
|
+
{"version":3,"sources":["../src/components/FunnelChart/FunnelChart.types.ts"],"sourcesContent":["import * as React from 'react';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\nimport { LegendsProps } from '../Legends/index';\n\n/**\n * Data point for funnel chart\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartDataPoint {\n /**\n * Stage name or identifier\n */\n stage: string | number;\n /**\n * Sub-values for stacked funnel charts\n * Each sub-value represents a category within the stage\n */\n subValues?: Array<{ category: string; value: number; color: string }>;\n /**\n * Value for the stage (used for non-stacked funnel charts)\n */\n value?: number;\n /**\n * Color for the stage (used for non-stacked funnel charts)\n */\n color?: string;\n}\n\n/**\n * Funnel Chart component props\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartProps {\n /**\n * Data points for the funnel chart\n */\n data: FunnelChartDataPoint[];\n /**\n * Title for the chart\n */\n chartTitle?: string;\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: ChartPopoverProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: FunnelChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Reference to the chart component\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentRef?: React.RefObject<any>;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Orientation of the funnel chart\n * @defaultvalue 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Funnel Chart style properties\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyleProps {\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n /**\n * Width of the chart\n */\n chartWidth: number;\n /**\n * Height of the chart\n */\n chartHeight: number;\n}\n\n/**\n * Funnel Chart styles\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyles {\n /**\n * Styles for the root element\n */\n root?: string;\n\n /**\n * Styles for the chart\n */\n chart?: string;\n\n /**\n * Styles for text elements\n */\n text?: string;\n\n /**\n * Styles for the callout root element\n */\n calloutContentRoot?: string;\n}\n"],"names":["React"],"mappings":";;;;;iEAAuB,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["funnelGeometry.ts"],"sourcesContent":["import * as React from 'react';\nimport { FunnelChartDataPoint } from './FunnelChart.types';\n\nexport interface FunnelSegmentGeometry {\n pathD: string;\n textX: number;\n textY: number;\n availableWidth: number;\n}\n\nexport interface StackedFunnelSegmentGeometry {\n pathD: string;\n textX: number;\n textY: number;\n availableWidth: number;\n}\n\ninterface SubValue {\n category: string;\n value: number;\n color: string;\n}\n\ninterface Stage {\n subValues: SubValue[];\n}\n\nexport function getVerticalFunnelSegmentGeometry({\n d,\n i,\n data,\n funnelWidth,\n funnelHeight,\n isRTL,\n}: {\n d: FunnelChartDataPoint;\n i: number;\n data: FunnelChartDataPoint[];\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n}): FunnelSegmentGeometry {\n const segmentHeight = funnelHeight / data.length;\n const widthScale = (value: number) => (value / Math.max(...data.map(dataPoint => dataPoint.value!))) * funnelWidth;\n const topWidth = widthScale(d.value!);\n const bottomWidth = i < data.length - 1 ? widthScale(data[i + 1].value!) : 0;\n const xOffset = (funnelWidth - topWidth) / 2;\n const nextXOffset = (funnelWidth - bottomWidth) / 2;\n const xStart = isRTL ? funnelWidth - xOffset : xOffset;\n const xEnd = isRTL ? funnelWidth - nextXOffset : nextXOffset;\n\n const isLastSegment = i === data.length - 1;\n const textY = isLastSegment ? i * segmentHeight + segmentHeight * 0.33 : i * segmentHeight + segmentHeight / 2;\n\n const textX = funnelWidth / 2;\n let availableWidth = topWidth;\n if (isLastSegment) {\n const yFromTop = textY - i * segmentHeight;\n const widthAtY = topWidth * (1 - yFromTop / segmentHeight);\n availableWidth = Math.max(widthAtY * 0.8, 0);\n } else {\n availableWidth = Math.min(topWidth, bottomWidth) * 0.9;\n }\n const pathD = `M${xStart},${i * segmentHeight}\n L${funnelWidth - xStart},${i * segmentHeight}\n L${funnelWidth - xEnd},${(i + 1) * segmentHeight}\n L${xEnd},${(i + 1) * segmentHeight}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getHorizontalFunnelSegmentGeometry({\n d,\n i,\n data,\n funnelWidth,\n funnelHeight,\n isRTL,\n}: {\n d: FunnelChartDataPoint;\n i: number;\n data: FunnelChartDataPoint[];\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n}): FunnelSegmentGeometry {\n const segmentWidth = funnelWidth / data.length;\n const heightScale = (value: number) => (value / Math.max(...data.map(dataPoint => dataPoint.value!))) * funnelHeight;\n const leftHeight = heightScale(d.value!);\n const rightHeight = i < data.length - 1 ? heightScale(data[i + 1].value!) : 0;\n const yOffset = (funnelHeight - leftHeight) / 2;\n const nextYOffset = (funnelHeight - rightHeight) / 2;\n const x0 = i * segmentWidth;\n const x1 = (i + 1) * segmentWidth;\n\n const isLastSegment = i === data.length - 1;\n let textX: number;\n let textY: number;\n let availableWidth = segmentWidth * 0.8;\n\n if (isLastSegment) {\n // For the triangular last segment, position text at 1/4 from the left edge\n textX = x0 + (x1 - x0) * 0.25;\n textY = funnelHeight / 2;\n\n // For triangular segments, we need to check both height and width constraints\n // The segment needs to be large enough to contain text\n const segmentArea = (leftHeight * segmentWidth) / 2; // Area of triangle\n const minAreaForText = 800; // Minimum area needed to show text\n\n if (leftHeight < 40 || segmentArea < minAreaForText) {\n // Hide text if height is too small or area is insufficient\n availableWidth = 0;\n } else {\n // Calculate available width at text position\n const widthAtTextPosition = (x1 - x0) * 0.75;\n availableWidth = widthAtTextPosition * 0.6;\n }\n } else {\n textX = (x0 + x1) / 2;\n textY = funnelHeight / 2;\n const minHeight = Math.min(leftHeight, rightHeight);\n availableWidth = minHeight > 20 ? segmentWidth * 0.8 : 0;\n }\n\n const pathD = `M${x0},${yOffset}\n L${x1},${nextYOffset}\n L${x1},${funnelHeight - nextYOffset}\n L${x0},${funnelHeight - yOffset}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getStackedVerticalFunnelSegmentGeometry({\n i,\n k,\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n}: {\n i: number;\n k: number;\n stages: Stage[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n}): StackedFunnelSegmentGeometry {\n const segmentHeight = funnelHeight / stages.length;\n const cur = stages[i];\n const next = stages[i + 1] || { subValues: [] };\n const curTotal = totals[i] || 1;\n const nextTotal = totals[i + 1] || 0;\n\n let cumTop = 0;\n let cumBot = 0;\n for (let idx = 0; idx < k; idx++) {\n const v = cur.subValues[idx];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n cumTop += (val / curTotal) * (curTotal / maxTotal) * funnelWidth;\n cumBot += (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelWidth;\n }\n const v = cur.subValues[k];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n const topW = (val / curTotal) * (curTotal / maxTotal) * funnelWidth;\n const botW = (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelWidth;\n const topStart = (funnelWidth - (curTotal / maxTotal) * funnelWidth) / 2 + cumTop;\n const topEnd = topStart + topW;\n const botStart = (funnelWidth - (nextTotal / maxTotal) * funnelWidth) / 2 + cumBot;\n const botEnd = botStart + botW;\n const textX = (topStart + topEnd + botStart + botEnd) / 4;\n\n const isLastSegment = i === stages.length - 1;\n const textY = isLastSegment ? i * segmentHeight + segmentHeight * 0.33 : (i + 0.5) * segmentHeight;\n\n // Calculate available width based on this specific segment's width\n let availableWidth: number;\n if (isLastSegment) {\n // For triangular last segment, use the width at text Y position\n const yFromTop = textY - i * segmentHeight;\n const widthRatio = 1 - yFromTop / segmentHeight;\n availableWidth = topW * widthRatio;\n } else {\n // For trapezoidal segments, use the actual segment width\n availableWidth = Math.min(topW, botW);\n }\n\n const pathD = `M${topStart},${i * segmentHeight}\n L${topEnd},${i * segmentHeight}\n L${botEnd},${(i + 1) * segmentHeight}\n L${botStart},${(i + 1) * segmentHeight}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getStackedHorizontalFunnelSegmentGeometry({\n i,\n k,\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n}: {\n i: number;\n k: number;\n stages: Stage[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n}): StackedFunnelSegmentGeometry {\n const segmentWidth = funnelWidth / stages.length;\n const cur = stages[i];\n const next = stages[i + 1] || { subValues: [] };\n const curTotal = totals[i] || 1;\n const nextTotal = totals[i + 1] || 0;\n\n let cumTop = 0;\n let cumBot = 0;\n for (let idx = 0; idx < k; idx++) {\n const v = cur.subValues[idx];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n cumTop += (val / curTotal) * (curTotal / maxTotal) * funnelHeight;\n cumBot += (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelHeight;\n }\n const v = cur.subValues[k];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n const topH = (val / curTotal) * (curTotal / maxTotal) * funnelHeight;\n const botH = (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelHeight;\n const leftStart = i * segmentWidth;\n const leftEnd = (i + 1) * segmentWidth;\n const topStart = (funnelHeight - (curTotal / maxTotal) * funnelHeight) / 2 + cumTop;\n const topEnd = topStart + topH;\n const botStart = (funnelHeight - (nextTotal / maxTotal) * funnelHeight) / 2 + cumBot;\n const botEnd = botStart + botH;\n\n const isLastSegment = i === stages.length - 1;\n let textX: number;\n let textY: number;\n let availableWidth: number;\n\n if (isLastSegment) {\n textX = leftStart + (leftEnd - leftStart) * 0.25;\n textY = (topStart + topEnd) / 2;\n // For triangular segments, calculate available width at text position\n const segmentWidthAtTextPos = (leftEnd - leftStart) * 0.5;\n availableWidth = segmentWidthAtTextPos * 0.8;\n\n // For triangular last segments, also check if there's enough height\n // The segment area should be large enough to contain text\n const segmentArea = (topH * segmentWidth) / 2;\n if (topH < 24 || segmentArea < 600) {\n availableWidth = 0;\n }\n } else {\n textX = (leftStart + leftEnd) / 2;\n textY = (topStart + topEnd + botStart + botEnd) / 4;\n // For trapezoidal segments, use full segment width\n availableWidth = Math.abs(leftEnd - leftStart) * 0.9;\n\n // Check if the segment has sufficient height for text\n // For non-last segments, we need to ensure there's enough vertical space\n const avgHeight = (topH + botH) / 2;\n if (avgHeight < 20) {\n availableWidth = 0;\n }\n }\n\n const pathD = `M${leftStart},${topStart}\n L${leftEnd},${botStart}\n L${leftEnd},${botEnd}\n L${leftStart},${topEnd}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getSegmentTextProps({\n availableWidth,\n minTextWidth = 24,\n textX,\n textY,\n value,\n culture,\n onMouseOver,\n onMouseMove,\n onMouseOut,\n}: {\n availableWidth: number;\n minTextWidth?: number;\n textX: number;\n textY: number;\n value: number;\n culture: string | undefined;\n onMouseOver: ((event: React.MouseEvent<SVGElement>) => void) | undefined;\n onMouseMove: ((event: React.MouseEvent<SVGElement>) => void) | undefined;\n onMouseOut: (() => void) | undefined;\n}) {\n return {\n show: availableWidth > minTextWidth && availableWidth > 0,\n x: textX,\n y: textY,\n value,\n culture,\n onMouseOver,\n onMouseMove,\n onMouseOut,\n };\n}\n"],"names":["getHorizontalFunnelSegmentGeometry","getSegmentTextProps","getStackedHorizontalFunnelSegmentGeometry","getStackedVerticalFunnelSegmentGeometry","getVerticalFunnelSegmentGeometry","d","i","data","funnelWidth","funnelHeight","isRTL","segmentHeight","length","widthScale","value","Math","max","map","dataPoint","topWidth","bottomWidth","xOffset","nextXOffset","xStart","xEnd","isLastSegment","textY","textX","availableWidth","yFromTop","widthAtY","min","pathD","segmentWidth","heightScale","leftHeight","rightHeight","yOffset","nextYOffset","x0","x1","segmentArea","minAreaForText","widthAtTextPosition","minHeight","k","stages","totals","maxTotal","next","cur","subValues","curTotal","nextTotal","cumTop","cumBot","idx","v","vNext","find","x","category","val","nextVal","topW","botW","topStart","topEnd","botStart","botEnd","widthRatio","topH","botH","leftStart","leftEnd","segmentWidthAtTextPos","abs","avgHeight","minTextWidth","culture","onMouseOver","onMouseMove","onMouseOut","show","y"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/FunnelChart/funnelGeometry.ts"],"sourcesContent":["import * as React from 'react';\nimport { FunnelChartDataPoint } from './FunnelChart.types';\n\nexport interface FunnelSegmentGeometry {\n pathD: string;\n textX: number;\n textY: number;\n availableWidth: number;\n}\n\nexport interface StackedFunnelSegmentGeometry {\n pathD: string;\n textX: number;\n textY: number;\n availableWidth: number;\n}\n\ninterface SubValue {\n category: string;\n value: number;\n color: string;\n}\n\ninterface Stage {\n subValues: SubValue[];\n}\n\nexport function getVerticalFunnelSegmentGeometry({\n d,\n i,\n data,\n funnelWidth,\n funnelHeight,\n isRTL,\n}: {\n d: FunnelChartDataPoint;\n i: number;\n data: FunnelChartDataPoint[];\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n}): FunnelSegmentGeometry {\n const segmentHeight = funnelHeight / data.length;\n const widthScale = (value: number) => (value / Math.max(...data.map(dataPoint => dataPoint.value!))) * funnelWidth;\n const topWidth = widthScale(d.value!);\n const bottomWidth = i < data.length - 1 ? widthScale(data[i + 1].value!) : 0;\n const xOffset = (funnelWidth - topWidth) / 2;\n const nextXOffset = (funnelWidth - bottomWidth) / 2;\n const xStart = isRTL ? funnelWidth - xOffset : xOffset;\n const xEnd = isRTL ? funnelWidth - nextXOffset : nextXOffset;\n\n const isLastSegment = i === data.length - 1;\n const textY = isLastSegment ? i * segmentHeight + segmentHeight * 0.33 : i * segmentHeight + segmentHeight / 2;\n\n const textX = funnelWidth / 2;\n let availableWidth = topWidth;\n if (isLastSegment) {\n const yFromTop = textY - i * segmentHeight;\n const widthAtY = topWidth * (1 - yFromTop / segmentHeight);\n availableWidth = Math.max(widthAtY * 0.8, 0);\n } else {\n availableWidth = Math.min(topWidth, bottomWidth) * 0.9;\n }\n const pathD = `M${xStart},${i * segmentHeight}\n L${funnelWidth - xStart},${i * segmentHeight}\n L${funnelWidth - xEnd},${(i + 1) * segmentHeight}\n L${xEnd},${(i + 1) * segmentHeight}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getHorizontalFunnelSegmentGeometry({\n d,\n i,\n data,\n funnelWidth,\n funnelHeight,\n isRTL,\n}: {\n d: FunnelChartDataPoint;\n i: number;\n data: FunnelChartDataPoint[];\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n}): FunnelSegmentGeometry {\n const segmentWidth = funnelWidth / data.length;\n const heightScale = (value: number) => (value / Math.max(...data.map(dataPoint => dataPoint.value!))) * funnelHeight;\n const leftHeight = heightScale(d.value!);\n const rightHeight = i < data.length - 1 ? heightScale(data[i + 1].value!) : 0;\n const yOffset = (funnelHeight - leftHeight) / 2;\n const nextYOffset = (funnelHeight - rightHeight) / 2;\n const x0 = i * segmentWidth;\n const x1 = (i + 1) * segmentWidth;\n\n const isLastSegment = i === data.length - 1;\n let textX: number;\n let textY: number;\n let availableWidth = segmentWidth * 0.8;\n\n if (isLastSegment) {\n // For the triangular last segment, position text at 1/4 from the left edge\n textX = x0 + (x1 - x0) * 0.25;\n textY = funnelHeight / 2;\n\n // For triangular segments, we need to check both height and width constraints\n // The segment needs to be large enough to contain text\n const segmentArea = (leftHeight * segmentWidth) / 2; // Area of triangle\n const minAreaForText = 800; // Minimum area needed to show text\n\n if (leftHeight < 40 || segmentArea < minAreaForText) {\n // Hide text if height is too small or area is insufficient\n availableWidth = 0;\n } else {\n // Calculate available width at text position\n const widthAtTextPosition = (x1 - x0) * 0.75;\n availableWidth = widthAtTextPosition * 0.6;\n }\n } else {\n textX = (x0 + x1) / 2;\n textY = funnelHeight / 2;\n const minHeight = Math.min(leftHeight, rightHeight);\n availableWidth = minHeight > 20 ? segmentWidth * 0.8 : 0;\n }\n\n const pathD = `M${x0},${yOffset}\n L${x1},${nextYOffset}\n L${x1},${funnelHeight - nextYOffset}\n L${x0},${funnelHeight - yOffset}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getStackedVerticalFunnelSegmentGeometry({\n i,\n k,\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n}: {\n i: number;\n k: number;\n stages: Stage[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n}): StackedFunnelSegmentGeometry {\n const segmentHeight = funnelHeight / stages.length;\n const cur = stages[i];\n const next = stages[i + 1] || { subValues: [] };\n const curTotal = totals[i] || 1;\n const nextTotal = totals[i + 1] || 0;\n\n let cumTop = 0;\n let cumBot = 0;\n for (let idx = 0; idx < k; idx++) {\n const v = cur.subValues[idx];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n cumTop += (val / curTotal) * (curTotal / maxTotal) * funnelWidth;\n cumBot += (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelWidth;\n }\n const v = cur.subValues[k];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n const topW = (val / curTotal) * (curTotal / maxTotal) * funnelWidth;\n const botW = (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelWidth;\n const topStart = (funnelWidth - (curTotal / maxTotal) * funnelWidth) / 2 + cumTop;\n const topEnd = topStart + topW;\n const botStart = (funnelWidth - (nextTotal / maxTotal) * funnelWidth) / 2 + cumBot;\n const botEnd = botStart + botW;\n const textX = (topStart + topEnd + botStart + botEnd) / 4;\n\n const isLastSegment = i === stages.length - 1;\n const textY = isLastSegment ? i * segmentHeight + segmentHeight * 0.33 : (i + 0.5) * segmentHeight;\n\n // Calculate available width based on this specific segment's width\n let availableWidth: number;\n if (isLastSegment) {\n // For triangular last segment, use the width at text Y position\n const yFromTop = textY - i * segmentHeight;\n const widthRatio = 1 - yFromTop / segmentHeight;\n availableWidth = topW * widthRatio;\n } else {\n // For trapezoidal segments, use the actual segment width\n availableWidth = Math.min(topW, botW);\n }\n\n const pathD = `M${topStart},${i * segmentHeight}\n L${topEnd},${i * segmentHeight}\n L${botEnd},${(i + 1) * segmentHeight}\n L${botStart},${(i + 1) * segmentHeight}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getStackedHorizontalFunnelSegmentGeometry({\n i,\n k,\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n}: {\n i: number;\n k: number;\n stages: Stage[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n}): StackedFunnelSegmentGeometry {\n const segmentWidth = funnelWidth / stages.length;\n const cur = stages[i];\n const next = stages[i + 1] || { subValues: [] };\n const curTotal = totals[i] || 1;\n const nextTotal = totals[i + 1] || 0;\n\n let cumTop = 0;\n let cumBot = 0;\n for (let idx = 0; idx < k; idx++) {\n const v = cur.subValues[idx];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n cumTop += (val / curTotal) * (curTotal / maxTotal) * funnelHeight;\n cumBot += (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelHeight;\n }\n const v = cur.subValues[k];\n const vNext = next.subValues?.find((x: SubValue) => x.category === v.category);\n const val = v.value;\n const nextVal = vNext ? vNext.value : 0;\n const topH = (val / curTotal) * (curTotal / maxTotal) * funnelHeight;\n const botH = (nextVal / nextTotal || 0) * (nextTotal / maxTotal) * funnelHeight;\n const leftStart = i * segmentWidth;\n const leftEnd = (i + 1) * segmentWidth;\n const topStart = (funnelHeight - (curTotal / maxTotal) * funnelHeight) / 2 + cumTop;\n const topEnd = topStart + topH;\n const botStart = (funnelHeight - (nextTotal / maxTotal) * funnelHeight) / 2 + cumBot;\n const botEnd = botStart + botH;\n\n const isLastSegment = i === stages.length - 1;\n let textX: number;\n let textY: number;\n let availableWidth: number;\n\n if (isLastSegment) {\n textX = leftStart + (leftEnd - leftStart) * 0.25;\n textY = (topStart + topEnd) / 2;\n // For triangular segments, calculate available width at text position\n const segmentWidthAtTextPos = (leftEnd - leftStart) * 0.5;\n availableWidth = segmentWidthAtTextPos * 0.8;\n\n // For triangular last segments, also check if there's enough height\n // The segment area should be large enough to contain text\n const segmentArea = (topH * segmentWidth) / 2;\n if (topH < 24 || segmentArea < 600) {\n availableWidth = 0;\n }\n } else {\n textX = (leftStart + leftEnd) / 2;\n textY = (topStart + topEnd + botStart + botEnd) / 4;\n // For trapezoidal segments, use full segment width\n availableWidth = Math.abs(leftEnd - leftStart) * 0.9;\n\n // Check if the segment has sufficient height for text\n // For non-last segments, we need to ensure there's enough vertical space\n const avgHeight = (topH + botH) / 2;\n if (avgHeight < 20) {\n availableWidth = 0;\n }\n }\n\n const pathD = `M${leftStart},${topStart}\n L${leftEnd},${botStart}\n L${leftEnd},${botEnd}\n L${leftStart},${topEnd}\n Z`;\n return { pathD, textX, textY, availableWidth };\n}\n\nexport function getSegmentTextProps({\n availableWidth,\n minTextWidth = 24,\n textX,\n textY,\n value,\n culture,\n onMouseOver,\n onMouseMove,\n onMouseOut,\n}: {\n availableWidth: number;\n minTextWidth?: number;\n textX: number;\n textY: number;\n value: number;\n culture: string | undefined;\n onMouseOver: ((event: React.MouseEvent<SVGElement>) => void) | undefined;\n onMouseMove: ((event: React.MouseEvent<SVGElement>) => void) | undefined;\n onMouseOut: (() => void) | undefined;\n}) {\n return {\n show: availableWidth > minTextWidth && availableWidth > 0,\n x: textX,\n y: textY,\n value,\n culture,\n onMouseOver,\n onMouseMove,\n onMouseOut,\n };\n}\n"],"names":["React","getVerticalFunnelSegmentGeometry","d","i","data","funnelWidth","funnelHeight","isRTL","segmentHeight","length","widthScale","value","Math","max","map","dataPoint","topWidth","bottomWidth","xOffset","nextXOffset","xStart","xEnd","isLastSegment","textY","textX","availableWidth","yFromTop","widthAtY","min","pathD","getHorizontalFunnelSegmentGeometry","segmentWidth","heightScale","leftHeight","rightHeight","yOffset","nextYOffset","x0","x1","segmentArea","minAreaForText","widthAtTextPosition","minHeight","getStackedVerticalFunnelSegmentGeometry","k","stages","totals","maxTotal","next","cur","subValues","curTotal","nextTotal","cumTop","cumBot","idx","v","vNext","find","x","category","val","nextVal","topW","botW","topStart","topEnd","botStart","botEnd","widthRatio","getStackedHorizontalFunnelSegmentGeometry","topH","botH","leftStart","leftEnd","segmentWidthAtTextPos","abs","avgHeight","getSegmentTextProps","minTextWidth","culture","onMouseOver","onMouseMove","onMouseOut","show","y"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './FunnelChart';\nexport * from './FunnelChart.types';\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../src/components/FunnelChart/index.ts"],"sourcesContent":["export * from './FunnelChart';\nexport * from './FunnelChart.types';\n"],"names":[],"mappings":";;;;;uBAAc,gBAAgB;uBAChB,sBAAsB"}
|
|
@@ -76,4 +76,4 @@ const useFunnelChartStyles = (props)=>{
|
|
|
76
76
|
text: (0, _react.mergeClasses)(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),
|
|
77
77
|
calloutContentRoot: (0, _react.mergeClasses)(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot)
|
|
78
78
|
};
|
|
79
|
-
};
|
|
79
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useFunnelChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const funnelClassNames = {\n root: 'fui-funnel__root',\n chart: 'fui-funnel__chart',\n text: 'fui-funnel__text',\n calloutContentRoot: 'fui-funnel__callout-content-root'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n alignItems: 'center',\n width: '100%',\n height: '100%',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n position: 'relative'\n },\n chart: {\n display: 'block',\n width: '100%',\n height: '100%'\n },\n text: {\n pointerEvents: 'none',\n fontWeight: tokens.fontWeightSemibold,\n fill: tokens.colorNeutralForeground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300\n },\n calloutContentRoot: {\n maxWidth: '238px'\n }\n});\n/**\n * Apply styling to the FunnelChart component\n */ export const useFunnelChartStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2, _props_styles3;\n const { className } = props;\n const baseStyles = useStyles();\n return {\n root: mergeClasses(funnelClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n chart: mergeClasses(funnelClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),\n text: mergeClasses(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),\n calloutContentRoot: mergeClasses(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot)\n };\n};\n"],"names":["
|
|
1
|
+
{"version":3,"sources":["useFunnelChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const funnelClassNames = {\n root: 'fui-funnel__root',\n chart: 'fui-funnel__chart',\n text: 'fui-funnel__text',\n calloutContentRoot: 'fui-funnel__callout-content-root'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n alignItems: 'center',\n width: '100%',\n height: '100%',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n position: 'relative'\n },\n chart: {\n display: 'block',\n width: '100%',\n height: '100%'\n },\n text: {\n pointerEvents: 'none',\n fontWeight: tokens.fontWeightSemibold,\n fill: tokens.colorNeutralForeground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300\n },\n calloutContentRoot: {\n maxWidth: '238px'\n }\n});\n/**\n * Apply styling to the FunnelChart component\n */ export const useFunnelChartStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2, _props_styles3;\n const { className } = props;\n const baseStyles = useStyles();\n return {\n root: mergeClasses(funnelClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n chart: mergeClasses(funnelClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),\n text: mergeClasses(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),\n calloutContentRoot: mergeClasses(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot)\n };\n};\n"],"names":["__styles","mergeClasses","tokens","funnelClassNames","root","chart","text","calloutContentRoot","useStyles","Bt984gj","a9b677","Bqenvij","Bahqtrf","Be2twd7","Bhrd7zp","qhf8xq","mc9l5x","Bkecrkj","Bkfmm31","B2u0y6b","d","useFunnelChartStyles","props","_props_styles","_props_styles1","_props_styles2","_props_styles3","className","baseStyles","styles"],"mappings":";;;;;;;;;;;IAIiBG,gBAAgB;;;wBAoCI;eAApBkB;;;uBAxCwB,gBAAgB;AAI9C,yBAAyB;IAChCjB,IAAI,EAAE,kBAAkB;IACxBC,KAAK,EAAE,mBAAmB;IAC1BC,IAAI,EAAE,kBAAkB;IACxBC,kBAAkB,EAAE;AACxB,CAAC;AACD;;CAEA,GAAI,MAAMC,SAAS,GAAA,WAAA,OAAGR,eAAA,EAAA;IAAAI,IAAA,EAAA;QAAAK,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;IAAA;IAAAV,KAAA,EAAA;QAAAW,MAAA,EAAA;QAAAN,MAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAL,IAAA,EAAA;QAAAW,OAAA,EAAA;QAAAH,OAAA,EAAA;QAAAI,OAAA,EAAA;QAAAN,OAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAN,kBAAA,EAAA;QAAAY,OAAA,EAAA;IAAA;AAAA,GAAA;IAAAC,CAAA,EAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;KAAA;AAAA,CAyBrB,CAAC;AAGS,8BAA8BE,KAAK,IAAG;IAC7C,IAAIC,aAAa,EAAEC,cAAc,EAAEC,cAAc,EAAEC,cAAc;IACjE,MAAM,EAAEC,SAAAA,EAAW,GAAGL,KAAK;IAC3B,MAAMM,UAAU,GAAGpB,SAAS,CAAC,CAAC;IAC9B,OAAO;QACHJ,IAAI,MAAEH,mBAAY,EAACE,gBAAgB,CAACC,IAAI,EAAEwB,UAAU,CAACxB,IAAI,EAAEuB,SAAS,EAAE,CAACJ,aAAa,GAAGD,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIN,aAAa,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,aAAa,CAACnB,IAAI,CAAC;QACxKC,KAAK,MAAEJ,mBAAY,EAACE,gBAAgB,CAACE,KAAK,EAAEuB,UAAU,CAACvB,KAAK,EAAE,CAACmB,cAAc,GAAGF,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIL,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,cAAc,CAACnB,KAAK,CAAC;QACpKC,IAAI,MAAEL,mBAAY,EAACE,gBAAgB,CAACG,IAAI,EAAEsB,UAAU,CAACtB,IAAI,EAAE,CAACmB,cAAc,GAAGH,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIJ,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,cAAc,CAACnB,IAAI,CAAC;QAChKC,kBAAkB,MAAEN,mBAAY,EAAC2B,UAAU,CAACrB,kBAAkB,EAAE,CAACmB,cAAc,GAAGJ,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIH,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,cAAc,CAACnB,kBAAkB;IACtL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
funnelClassNames: function() {
|
|
13
|
+
return funnelClassNames;
|
|
14
|
+
},
|
|
15
|
+
useFunnelChartStyles: function() {
|
|
16
|
+
return useFunnelChartStyles;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _react = require("@griffel/react");
|
|
20
|
+
const _reacttheme = require("@fluentui/react-theme");
|
|
21
|
+
const funnelClassNames = {
|
|
22
|
+
root: 'fui-funnel__root',
|
|
23
|
+
chart: 'fui-funnel__chart',
|
|
24
|
+
text: 'fui-funnel__text',
|
|
25
|
+
calloutContentRoot: 'fui-funnel__callout-content-root'
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Base Styles
|
|
29
|
+
*/ const useStyles = (0, _react.makeStyles)({
|
|
30
|
+
root: {
|
|
31
|
+
alignItems: 'center',
|
|
32
|
+
width: '100%',
|
|
33
|
+
height: '100%',
|
|
34
|
+
fontFamily: _reacttheme.tokens.fontFamilyBase,
|
|
35
|
+
fontSize: _reacttheme.tokens.fontSizeBase300,
|
|
36
|
+
fontWeight: _reacttheme.tokens.fontWeightRegular,
|
|
37
|
+
position: 'relative'
|
|
38
|
+
},
|
|
39
|
+
chart: {
|
|
40
|
+
display: 'block',
|
|
41
|
+
width: '100%',
|
|
42
|
+
height: '100%'
|
|
43
|
+
},
|
|
44
|
+
text: {
|
|
45
|
+
pointerEvents: 'none',
|
|
46
|
+
fontWeight: _reacttheme.tokens.fontWeightSemibold,
|
|
47
|
+
fill: _reacttheme.tokens.colorNeutralForeground1,
|
|
48
|
+
fontFamily: _reacttheme.tokens.fontFamilyBase,
|
|
49
|
+
fontSize: _reacttheme.tokens.fontSizeBase300
|
|
50
|
+
},
|
|
51
|
+
calloutContentRoot: {
|
|
52
|
+
maxWidth: '238px'
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const useFunnelChartStyles = (props)=>{
|
|
56
|
+
var _props_styles, _props_styles1, _props_styles2, _props_styles3;
|
|
57
|
+
const { className } = props;
|
|
58
|
+
const baseStyles = useStyles();
|
|
59
|
+
return {
|
|
60
|
+
root: (0, _react.mergeClasses)(funnelClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),
|
|
61
|
+
chart: (0, _react.mergeClasses)(funnelClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),
|
|
62
|
+
text: (0, _react.mergeClasses)(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),
|
|
63
|
+
calloutContentRoot: (0, _react.mergeClasses)(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot)
|
|
64
|
+
};
|
|
65
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/FunnelChart/useFunnelChartStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { FunnelChartProps, FunnelChartStyles } from './index';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\n/**\n * @internal\n */\nexport const funnelClassNames: SlotClassNames<FunnelChartStyles> = {\n root: 'fui-funnel__root',\n chart: 'fui-funnel__chart',\n text: 'fui-funnel__text',\n calloutContentRoot: 'fui-funnel__callout-content-root',\n};\n\n/**\n * Base Styles\n */\nconst useStyles = makeStyles({\n root: {\n alignItems: 'center',\n width: '100%',\n height: '100%',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n position: 'relative',\n },\n chart: {\n display: 'block',\n width: '100%',\n height: '100%',\n },\n text: {\n pointerEvents: 'none',\n fontWeight: tokens.fontWeightSemibold,\n fill: tokens.colorNeutralForeground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n },\n calloutContentRoot: {\n maxWidth: '238px',\n },\n});\n\n/**\n * Apply styling to the FunnelChart component\n */\nexport const useFunnelChartStyles = (props: FunnelChartProps): FunnelChartStyles => {\n const { className } = props;\n const baseStyles = useStyles();\n\n return {\n root: mergeClasses(funnelClassNames.root, baseStyles.root, className, props.styles?.root),\n chart: mergeClasses(funnelClassNames.chart, baseStyles.chart, props.styles?.chart),\n text: mergeClasses(funnelClassNames.text, baseStyles.text, props.styles?.text),\n calloutContentRoot: mergeClasses(baseStyles.calloutContentRoot, props.styles?.calloutContentRoot),\n };\n};\n"],"names":["makeStyles","mergeClasses","tokens","funnelClassNames","root","chart","text","calloutContentRoot","useStyles","alignItems","width","height","fontFamily","fontFamilyBase","fontSize","fontSizeBase300","fontWeight","fontWeightRegular","position","display","pointerEvents","fontWeightSemibold","fill","colorNeutralForeground1","maxWidth","useFunnelChartStyles","props","className","baseStyles","styles"],"mappings":";;;;;;;;;;;IAQaG,gBAAAA;;;IAwCAsB,oBAAAA;;;;uBAhD4B,iBAAiB;4BACnC,wBAAwB;AAOxC,yBAA4D;IACjErB,MAAM;IACNC,OAAO;IACPC,MAAM;IACNC,oBAAoB;AACtB,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYR,iBAAAA,EAAW;IAC3BI,MAAM;QACJK,YAAY;QACZC,OAAO;QACPC,QAAQ;QACRC,YAAYV,kBAAAA,CAAOW,cAAc;QACjCC,UAAUZ,kBAAAA,CAAOa,eAAe;QAChCC,YAAYd,kBAAAA,CAAOe,iBAAiB;QACpCC,UAAU;IACZ;IACAb,OAAO;QACLc,SAAS;QACTT,OAAO;QACPC,QAAQ;IACV;IACAL,MAAM;QACJc,eAAe;QACfJ,YAAYd,kBAAAA,CAAOmB,kBAAkB;QACrCC,MAAMpB,kBAAAA,CAAOqB,uBAAuB;QACpCX,YAAYV,kBAAAA,CAAOW,cAAc;QACjCC,UAAUZ,kBAAAA,CAAOa,eAAe;IAClC;IACAR,oBAAoB;QAClBiB,UAAU;IACZ;AACF;AAKO,6BAA6B,CAACE;QAKqCA,eACRA,gBACHA,gBACKA;IAPlE,MAAM,EAAEC,SAAS,EAAE,GAAGD;IACtB,MAAME,aAAapB;IAEnB,OAAO;QACLJ,UAAMH,mBAAAA,EAAaE,iBAAiBC,IAAI,EAAEwB,WAAWxB,IAAI,EAAEuB,WAAAA,CAAWD,gBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAActB,IAAI;QACxFC,WAAOJ,mBAAAA,EAAaE,iBAAiBE,KAAK,EAAEuB,WAAWvB,KAAK,EAAA,CAAEqB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcrB,KAAK;QACjFC,UAAML,mBAAAA,EAAaE,iBAAiBG,IAAI,EAAEsB,WAAWtB,IAAI,EAAA,CAAEoB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcpB,IAAI;QAC7EC,wBAAoBN,mBAAAA,EAAa2B,WAAWrB,kBAAkB,EAAA,CAAEmB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcnB,kBAAkB;IAClG;AACF,EAAE"}
|