@fluentui/react-charts 9.1.10 → 9.2.0
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 +28 -2
- package/dist/index.d.ts +39 -3
- 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.map +1 -1
- 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 +11 -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 +2 -1
- 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 +15 -7
- 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 +11 -3
- 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 +10 -1
- 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 +19 -2
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib/components/GanttChart/index.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js +1 -2
- 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 +9 -2
- 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 +70 -58
- 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 +11 -3
- 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.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 +9 -2
- 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 +28 -10
- 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.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.js +57 -14
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.raw.js +138 -0
- package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
- package/lib/components/LineChart/LineChart.js +9 -2
- 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.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 +5 -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 +11 -3
- 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 +62 -28
- 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 +22 -8
- 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.map +1 -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/image-export-utils.js +256 -0
- package/lib/utilities/image-export-utils.js.map +1 -0
- 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.map +1 -1
- package/lib/utilities/utilities.js +50 -5
- package/lib/utilities/utilities.js.map +1 -1
- 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.map +1 -1
- 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 +10 -2
- 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 +2 -1
- 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 +14 -6
- 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 +10 -2
- 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.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.raw.js +59 -0
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +10 -1
- 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 +18 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib-commonjs/components/GanttChart/index.js.map +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js +1 -1
- 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 +9 -2
- 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 +70 -58
- 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.raw.js +69 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +10 -2
- 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.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.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.raw.js +134 -0
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +9 -2
- 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.raw.js +55 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/Legends/Legends.js +28 -10
- 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.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +101 -28
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +174 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/LineChart/LineChart.js +9 -2
- 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.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.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.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 +5 -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 +10 -2
- 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.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.raw.js +44 -0
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +62 -28
- 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.raw.js +74 -0
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +22 -8
- 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.map +1 -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/image-export-utils.js +274 -0
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -0
- 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.map +1 -1
- package/lib-commonjs/utilities/utilities.js +56 -5
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
- package/package.json +12 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GanttChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { ScaleLinear, ScaleBand, ScaleTime } from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { Legend, Legends } from '../Legends/index';\nimport { Margins, GanttChartDataPoint } from '../../types/DataPoint';\nimport { CartesianChart, ModifiedCartesianChartProps } from '../CommonComponents/index';\nimport { GanttChartProps } from './GanttChart.types';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { ChartPopoverProps } from '../../index';\nimport {\n ChartTypes,\n YAxisType,\n XAxisTypes,\n getTypeOfAxis,\n getNextColor,\n findHBCWANumericMinMaxOfY,\n createYAxisForHorizontalBarChartWithAxis,\n IDomainNRange,\n createStringYAxisForHorizontalBarChartWithAxis,\n areArraysEqual,\n MIN_DOMAIN_MARGIN,\n sortAxisCategories,\n calculateAppropriateBarWidth,\n getColorFromToken,\n getScalePadding,\n getDateFormatLevel,\n} from '../../utilities/index';\nimport { formatDateToLocaleString, getMultiLevelDateTimeFormatOptions } from '@fluentui/chart-utilities';\n\ntype NumberScale = ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\ntype DateScale = ScaleTime<Date, number>;\n\nconst DEFAULT_BAR_HEIGHT = 24;\nconst MIN_BAR_HEIGHT = 1;\n\nexport const GanttChart: React.FunctionComponent<GanttChartProps> = React.forwardRef<HTMLDivElement, GanttChartProps>(\n ({ useUTC = true, yAxisCategoryOrder = 'default', maxBarHeight = 24, ...props }, forwardedRef) => {\n const _barHeight = React.useRef<number>(DEFAULT_BAR_HEIGHT);\n const _margins = React.useRef<Margins>({});\n const _calloutAnchorPoint = React.useRef<GanttChartDataPoint | null>(null);\n const _emptyChartId = useId('Gantt_empty');\n const _legendId = useId('gantt_legend');\n const _legendMap = React.useRef<Record<string, { id: string; startColor: string; endColor: string }>>({});\n const _prevProps = React.useRef<Partial<GanttChartProps>>({});\n\n const [calloutColor, setCalloutColor] = React.useState<string>('');\n const [hoveredLegend, setHoveredLegend] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [calloutDataPoint, setCalloutDataPoint] = React.useState<GanttChartDataPoint>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n\n React.useEffect(() => {\n if (!areArraysEqual(_prevProps.current.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n _prevProps.current = props;\n }, [props]);\n\n const _points = React.useMemo(() => {\n _legendMap.current = {};\n let colorIndex = 0;\n\n return (\n props.data?.map(point => {\n const legend = `${point.legend}`;\n if (!_legendMap.current[legend]) {\n let startColor = point.color ? getColorFromToken(point.color) : getNextColor(colorIndex, 0);\n let endColor = startColor;\n\n if (props.enableGradient) {\n startColor = point.gradient?.[0]!;\n endColor = point.gradient?.[1]!;\n }\n\n _legendMap.current[legend] = { id: `${_legendId}_${colorIndex}`, startColor, endColor };\n colorIndex += 1;\n }\n\n const { startColor, endColor } = _legendMap.current[legend];\n return {\n ...point,\n color: startColor,\n ...(props.enableGradient ? { gradient: [startColor, endColor] as [string, string] } : {}),\n };\n }) ?? []\n );\n }, [props.data, props.enableGradient]);\n\n const _xAxisType = React.useMemo(() => {\n if (_points.length > 0) {\n return getTypeOfAxis(_points[0].x.start, true) as XAxisTypes;\n }\n return XAxisTypes.DateAxis;\n }, [_points]);\n\n const _yAxisType = React.useMemo(() => {\n if (_points.length > 0) {\n return getTypeOfAxis(_points[0].y, false) as YAxisType;\n }\n return YAxisType.StringAxis;\n }, [_points]);\n\n const _yAxisPadding = React.useMemo(() => {\n return getScalePadding(props.yAxisPadding, undefined, 1 / 2);\n }, [props.yAxisPadding]);\n\n const _dateFormatOptions = React.useMemo(() => {\n if (_xAxisType !== XAxisTypes.DateAxis) {\n return undefined;\n }\n\n let lowestFormatLevel = 100;\n let highestFormatLevel = -1;\n _points.forEach(p => {\n const startFormatLevel = getDateFormatLevel(p.x.start as Date, useUTC as boolean);\n const endFormatLevel = getDateFormatLevel(p.x.end as Date, useUTC as boolean);\n lowestFormatLevel = Math.min(lowestFormatLevel, startFormatLevel, endFormatLevel);\n highestFormatLevel = Math.max(highestFormatLevel, startFormatLevel, endFormatLevel);\n });\n\n return getMultiLevelDateTimeFormatOptions(lowestFormatLevel, highestFormatLevel);\n }, [useUTC, _points, _xAxisType]);\n\n const _mapYValueToXValues = React.useCallback(() => {\n const yValueToXValues: Record<string, number[]> = {};\n _points.forEach(point => {\n if (!yValueToXValues[point.y]) {\n yValueToXValues[point.y] = [];\n }\n yValueToXValues[point.y].push(+point.x.end - +point.x.start);\n });\n return yValueToXValues;\n }, [_points]);\n\n const _getOrderedYAxisLabels = React.useCallback(() => {\n const yValueToXValues = _mapYValueToXValues();\n\n if (_yAxisType !== YAxisType.StringAxis) {\n return Object.keys(yValueToXValues).sort((a, b) => +a - +b);\n }\n\n if (yAxisCategoryOrder === 'default') {\n return Object.keys(yValueToXValues).reverse();\n }\n return sortAxisCategories(yValueToXValues, yAxisCategoryOrder);\n }, [_mapYValueToXValues, _yAxisType, yAxisCategoryOrder]);\n\n const _yAxisLabels = React.useMemo(() => _getOrderedYAxisLabels(), [_getOrderedYAxisLabels]);\n\n const _getDomainNRangeValues = React.useCallback(\n (\n points: GanttChartDataPoint[],\n margins: Margins,\n containerWidth: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ): IDomainNRange => {\n const xValues: (Date | number)[] = [];\n points.forEach(point => {\n xValues.push(point.x.start, point.x.end);\n });\n\n const xMin = d3Min(xValues) || 0;\n const xMax = d3Max(xValues) || 0;\n\n return {\n dStartValue: isRTL ? xMax : xMin,\n dEndValue: isRTL ? xMin : xMax,\n rStartValue: margins.left! + (isRTL ? 0 : shiftX),\n rEndValue: containerWidth - margins.right! - (isRTL ? shiftX : 0),\n };\n },\n [],\n );\n\n const _getMargins = React.useCallback((margins: Margins) => {\n _margins.current = margins;\n }, []);\n\n const _getFormattedXValue = React.useCallback(\n (point: GanttChartDataPoint): string => {\n let formattedStartX: string;\n let formattedEndX: string;\n\n if (_xAxisType === XAxisTypes.DateAxis) {\n formattedStartX = formatDateToLocaleString(\n point.x.start as Date,\n props.culture,\n useUTC as boolean,\n false,\n _dateFormatOptions,\n );\n formattedEndX = formatDateToLocaleString(\n point.x.end as Date,\n props.culture,\n useUTC as boolean,\n false,\n _dateFormatOptions,\n );\n } else {\n formattedStartX = point.x.start.toString();\n formattedEndX = point.x.end.toString();\n }\n\n return `${formattedStartX} - ${formattedEndX}`;\n },\n [props.culture, useUTC, _dateFormatOptions, _xAxisType],\n );\n\n const _getCustomizedCallout = React.useCallback(() => {\n const defaultRender = (point?: GanttChartDataPoint): React.JSX.Element | null => {\n return point ? (\n <ChartPopover\n isPopoverOpen={isPopoverOpen}\n clickPosition={clickPosition}\n XValue={point.yAxisCalloutData || point.y.toString()}\n legend={point.legend}\n YValue={point.xAxisCalloutData || _getFormattedXValue(point)}\n color={point.color}\n culture={props.culture}\n />\n ) : null;\n };\n\n return props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(calloutDataPoint, defaultRender)\n : null;\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [_getFormattedXValue, calloutDataPoint, props.culture, props.onRenderCalloutPerDataPoint]);\n\n const _getAriaLabel = React.useCallback(\n (point: GanttChartDataPoint): string => {\n const xValue = point.xAxisCalloutData || _getFormattedXValue(point);\n const yValue = point.yAxisCalloutData || point.y;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${yValue}. ` + (point.legend ? `${point.legend}, ` : '') + `${xValue}.`\n );\n },\n [_getFormattedXValue],\n );\n\n const _getHighlightedLegend = React.useCallback(() => {\n return selectedLegends.length > 0 ? selectedLegends : hoveredLegend ? [hoveredLegend] : [];\n }, [hoveredLegend, selectedLegends]);\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n const _legendHighlighted = React.useCallback(\n (legend: string | undefined) => {\n return _getHighlightedLegend().includes(`${legend}`);\n },\n [_getHighlightedLegend],\n );\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n const _noLegendHighlighted = React.useCallback(() => {\n return _getHighlightedLegend().length === 0;\n }, [_getHighlightedLegend]);\n\n const _showCallout = React.useCallback(\n (target: React.MouseEvent<SVGElement> | React.FocusEvent<SVGElement>, point: GanttChartDataPoint) => {\n if (!(_noLegendHighlighted() || _legendHighlighted(point.legend)) || _calloutAnchorPoint.current === point) {\n return;\n }\n if ('clientX' in target && 'clientY' in target) {\n updatePosition(target.clientX, target.clientY);\n } else {\n const rect = (target.target as SVGElement).getBoundingClientRect();\n updatePosition(rect.left, rect.top);\n }\n _calloutAnchorPoint.current = point;\n setPopoverOpen(true);\n setCalloutLegend(point.legend!);\n setCalloutColor(point.color!);\n setXCalloutValue(point.yAxisCalloutData || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData! || _getFormattedXValue(point));\n setCalloutDataPoint(point);\n },\n [_getFormattedXValue, _legendHighlighted, _noLegendHighlighted],\n );\n\n const _onBarFocus = React.useCallback(\n (point: GanttChartDataPoint, focusEvent: React.FocusEvent<SVGElement>): void => {\n _showCallout(focusEvent, point);\n },\n [_showCallout],\n );\n\n const _onBarHover = React.useCallback(\n (point: GanttChartDataPoint, mouseEvent: React.MouseEvent<SVGElement>): void => {\n _showCallout(mouseEvent, point);\n },\n [_showCallout],\n );\n\n const _onBarLeave = React.useCallback((): void => {\n // do nothing\n }, []);\n\n const _handleChartMouseLeave = React.useCallback((): void => {\n _calloutAnchorPoint.current = null;\n setPopoverOpen(false);\n setCalloutLegend('');\n setCalloutColor('');\n setXCalloutValue('');\n setYCalloutValue('');\n setCalloutDataPoint(undefined);\n }, []);\n\n const _getBarHeight = React.useCallback(\n (adjustedValue: number): number => {\n let barHeight: number;\n if (typeof props.barHeight === 'number') {\n barHeight = props.barHeight;\n } else {\n barHeight = adjustedValue;\n }\n if (typeof maxBarHeight === 'number') {\n barHeight = Math.min(barHeight, maxBarHeight);\n }\n barHeight = Math.max(barHeight, MIN_BAR_HEIGHT);\n return barHeight;\n },\n [maxBarHeight, props.barHeight],\n );\n\n const _getOrderedDataPoints = React.useCallback(() => {\n const result: GanttChartDataPoint[] = [];\n\n const yValueToPoints: Record<string, GanttChartDataPoint[]> = {};\n _points.forEach(point => {\n if (!yValueToPoints[point.y]) {\n yValueToPoints[point.y] = [];\n }\n yValueToPoints[point.y].push(point);\n });\n\n for (let i = _yAxisLabels.length - 1; i >= 0; i--) {\n const yValue = _yAxisLabels[i];\n if (yValueToPoints[yValue]) {\n result.push(...yValueToPoints[yValue].sort((a, b) => +a.x.start - +b.x.start));\n }\n }\n\n return result;\n }, [_points, _yAxisLabels]);\n\n const _createBars = React.useCallback(\n ({\n xScale,\n yScalePrimary: yScale,\n }: {\n xScale: DateScale | NumberScale;\n yScalePrimary: NumberScale | StringScale;\n }): React.JSX.Element => {\n const getGradientId = (legend: string | undefined) => {\n const legendId = _legendMap.current[`${legend}`].id;\n return `${legendId}_gradient`;\n };\n\n const gradientDefs: React.JSX.Element[] = [];\n if (props.enableGradient) {\n Object.keys(_legendMap.current).forEach((legend: string, index: number) => {\n const { startColor, endColor } = _legendMap.current[legend];\n gradientDefs.push(\n <linearGradient key={index} id={getGradientId(legend)}>\n <stop offset=\"0\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>,\n );\n });\n }\n\n let scaleBandwidth = 0;\n if (_yAxisType === YAxisType.StringAxis) {\n scaleBandwidth = (yScale as StringScale).bandwidth();\n _barHeight.current = _getBarHeight(scaleBandwidth);\n }\n\n const points = _getOrderedDataPoints();\n const bars = points.map((point: GanttChartDataPoint, index: number) => {\n const rectStartX = xScale(point.x.start);\n const rectEndX = xScale(point.x.end);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rectY = yScale(point.y as any)! + (scaleBandwidth - _barHeight.current) / 2;\n\n const shouldHighlight = _noLegendHighlighted() || _legendHighlighted(point.legend);\n\n return (\n <rect\n key={index}\n x={Math.min(rectStartX, rectEndX)}\n y={rectY}\n width={Math.abs(rectEndX - rectStartX)}\n height={_barHeight.current}\n rx={props.roundCorners ? 3 : 0}\n fill={props.enableGradient ? `url(#${getGradientId(point.legend)})` : point.color}\n opacity={shouldHighlight ? 1 : 0.1}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement>) => _onBarHover(point, event)}\n onMouseLeave={_onBarLeave}\n onFocus={(event: React.FocusEvent<SVGElement>) => _onBarFocus(point, event)}\n onBlur={_onBarLeave}\n tabIndex={shouldHighlight ? 0 : -1}\n role=\"img\"\n aria-label={_getAriaLabel(point)}\n />\n );\n });\n return (\n <g>\n {gradientDefs.length > 0 ? <defs>{gradientDefs}</defs> : null}\n {bars}\n </g>\n );\n },\n [\n _getAriaLabel,\n _getBarHeight,\n _getOrderedDataPoints,\n _legendHighlighted,\n _noLegendHighlighted,\n _onBarFocus,\n _onBarHover,\n _onBarLeave,\n _yAxisType,\n props.enableGradient,\n props.roundCorners,\n ],\n );\n\n const _onLegendHover = React.useCallback((legend: string): void => {\n setHoveredLegend(legend);\n }, []);\n\n const _onLegendLeave = React.useCallback((): void => {\n setHoveredLegend('');\n }, []);\n\n const _onLegendSelectionChange = React.useCallback(\n (_selectedLegends: string[], event: React.MouseEvent<HTMLButtonElement>, currentLegend?: Legend): void => {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n },\n [props.legendProps],\n );\n\n const _getLegendData = React.useCallback((): React.JSX.Element => {\n const actions: Legend[] = [];\n\n Object.keys(_legendMap.current).forEach((legendTitle: string) => {\n const legend: Legend = {\n title: legendTitle,\n color: _legendMap.current[legendTitle].startColor,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n onChange={_onLegendSelectionChange}\n {...props.legendProps}\n />\n );\n return legends;\n }, [\n _handleChartMouseLeave,\n _onLegendHover,\n _onLegendLeave,\n _onLegendSelectionChange,\n props.enabledLegendsWrapLines,\n props.legendProps,\n props.legendsOverflowText,\n ]);\n\n const _getChartTitle = React.useCallback((): string => {\n return (props.chartTitle ? `${props.chartTitle}. ` : '') + `Gantt chart with ${_points.length} data points. `;\n }, [_points.length, props.chartTitle]);\n\n const _isChartEmpty = React.useCallback((): boolean => {\n return _points.length === 0;\n }, [_points.length]);\n\n const _getYDomainMargins = React.useCallback(\n (containerHeight: number): Margins => {\n let domainMargin = MIN_DOMAIN_MARGIN;\n\n const ySet = new Set<string | number>();\n _points.forEach((point: GanttChartDataPoint) => {\n ySet.add(point.y);\n });\n const uniqueY = Array.from(ySet);\n\n /** Total height available to render the bars */\n const totalHeight =\n containerHeight -\n (_margins.current.top! + MIN_DOMAIN_MARGIN) -\n (_margins.current.bottom! + MIN_DOMAIN_MARGIN);\n\n if (_yAxisType !== YAxisType.StringAxis) {\n _barHeight.current = _getBarHeight(\n calculateAppropriateBarWidth(uniqueY as number[] | Date[], totalHeight, _yAxisPadding),\n );\n domainMargin += _barHeight.current / 2;\n }\n\n return {\n ..._margins.current,\n top: _margins.current.top! + domainMargin,\n bottom: _margins.current.bottom! + domainMargin,\n };\n },\n [_getBarHeight, _points, _yAxisPadding, _yAxisType],\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 if (!_isChartEmpty()) {\n _barHeight.current = _getBarHeight(DEFAULT_BAR_HEIGHT);\n\n const calloutProps: ChartPopoverProps = {\n isPopoverOpen,\n clickPosition,\n color: calloutColor,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue,\n ...props.calloutProps,\n };\n const tickParams: ModifiedCartesianChartProps['tickParams'] = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n return (\n <CartesianChart\n {...props}\n yAxisPadding={_yAxisPadding}\n chartTitle={_getChartTitle()}\n points={_points}\n chartType={ChartTypes.GanttChart}\n xAxisType={_xAxisType}\n yAxisType={_yAxisType}\n stringDatasetForYAxisDomain={_yAxisLabels}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={_getLegendData()}\n createYAxis={createYAxisForHorizontalBarChartWithAxis}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxisForHorizontalBarChartWithAxis}\n getMinMaxOfYAxis={findHBCWANumericMinMaxOfY}\n customizedCallout={_getCustomizedCallout()}\n getmargins={_getMargins}\n getYDomainMargins={_getYDomainMargins}\n onChartMouseLeave={_handleChartMouseLeave}\n useUTC={useUTC}\n children={_createBars}\n />\n );\n } else {\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n }\n },\n);\n\nGanttChart.displayName = 'GanttChart';\n"],"names":["React","max","d3Max","min","d3Min","useId","Legends","CartesianChart","ChartPopover","ChartTypes","YAxisType","XAxisTypes","getTypeOfAxis","getNextColor","findHBCWANumericMinMaxOfY","createYAxisForHorizontalBarChartWithAxis","createStringYAxisForHorizontalBarChartWithAxis","areArraysEqual","MIN_DOMAIN_MARGIN","sortAxisCategories","calculateAppropriateBarWidth","getColorFromToken","getScalePadding","getDateFormatLevel","formatDateToLocaleString","getMultiLevelDateTimeFormatOptions","DEFAULT_BAR_HEIGHT","MIN_BAR_HEIGHT","GanttChart","forwardRef","useUTC","yAxisCategoryOrder","maxBarHeight","props","forwardedRef","_barHeight","useRef","_margins","_calloutAnchorPoint","_emptyChartId","_legendId","_legendMap","_prevProps","calloutColor","setCalloutColor","useState","hoveredLegend","setHoveredLegend","calloutLegend","setCalloutLegend","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegends","setSelectedLegends","legendProps","calloutDataPoint","setCalloutDataPoint","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","useEffect","current","_points","useMemo","colorIndex","data","map","point","legend","startColor","color","endColor","enableGradient","gradient","id","_xAxisType","length","start","DateAxis","_yAxisType","StringAxis","_yAxisPadding","yAxisPadding","undefined","_dateFormatOptions","lowestFormatLevel","highestFormatLevel","forEach","p","startFormatLevel","endFormatLevel","end","Math","_mapYValueToXValues","useCallback","yValueToXValues","push","_getOrderedYAxisLabels","Object","keys","sort","a","b","reverse","_yAxisLabels","_getDomainNRangeValues","points","margins","containerWidth","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","xValues","xMin","xMax","dStartValue","dEndValue","rStartValue","left","rEndValue","right","_getMargins","_getFormattedXValue","formattedStartX","formattedEndX","culture","toString","_getCustomizedCallout","defaultRender","XValue","yAxisCalloutData","YValue","xAxisCalloutData","onRenderCalloutPerDataPoint","_getAriaLabel","xValue","yValue","callOutAccessibilityData","ariaLabel","_getHighlightedLegend","_legendHighlighted","includes","_noLegendHighlighted","_showCallout","target","updatePosition","clientX","clientY","rect","getBoundingClientRect","top","_onBarFocus","focusEvent","_onBarHover","mouseEvent","_onBarLeave","_handleChartMouseLeave","_getBarHeight","adjustedValue","barHeight","_getOrderedDataPoints","result","yValueToPoints","i","_createBars","xScale","yScalePrimary","yScale","getGradientId","legendId","gradientDefs","index","linearGradient","key","stop","offset","stopColor","scaleBandwidth","bandwidth","bars","rectStartX","rectEndX","rectY","shouldHighlight","width","abs","height","rx","roundCorners","fill","opacity","onClick","onMouseOver","event","onMouseLeave","onFocus","onBlur","tabIndex","role","aria-label","g","defs","_onLegendHover","_onLegendLeave","_onLegendSelectionChange","_selectedLegends","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","actions","legendTitle","title","hoverAction","onMouseOutAction","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","_getChartTitle","chartTitle","_isChartEmpty","_getYDomainMargins","containerHeight","domainMargin","ySet","Set","add","uniqueY","Array","from","totalHeight","bottom","newX","newY","threshold","distance","sqrt","pow","calloutProps","tickParams","tickFormat","yAxisType","stringDatasetForYAxisDomain","legendBars","createYAxis","getDomainNRangeValues","createStringYAxis","getMinMaxOfYAxis","customizedCallout","getmargins","getYDomainMargins","onChartMouseLeave","children","div","style","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/GanttChart/GanttChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { ScaleLinear, ScaleBand, ScaleTime } from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { Legend, Legends, LegendContainer } from '../Legends/index';\nimport { Margins, GanttChartDataPoint } from '../../types/DataPoint';\nimport { CartesianChart, ModifiedCartesianChartProps } from '../CommonComponents/index';\nimport { GanttChartProps } from './GanttChart.types';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { ChartPopoverProps, ImageExportOptions, Chart } from '../../index';\nimport {\n ChartTypes,\n YAxisType,\n XAxisTypes,\n getTypeOfAxis,\n getNextColor,\n findHBCWANumericMinMaxOfY,\n createYAxisForHorizontalBarChartWithAxis,\n IDomainNRange,\n createStringYAxisForHorizontalBarChartWithAxis,\n areArraysEqual,\n MIN_DOMAIN_MARGIN,\n sortAxisCategories,\n calculateAppropriateBarWidth,\n getColorFromToken,\n getScalePadding,\n getDateFormatLevel,\n useRtl,\n} from '../../utilities/index';\nimport { formatDateToLocaleString, getMultiLevelDateTimeFormatOptions } from '@fluentui/chart-utilities';\nimport { toImage } from '../../utilities/image-export-utils';\n\ntype NumberScale = ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\ntype DateScale = ScaleTime<Date, number>;\n\nconst DEFAULT_BAR_HEIGHT = 24;\nconst MIN_BAR_HEIGHT = 1;\n\nexport const GanttChart: React.FunctionComponent<GanttChartProps> = React.forwardRef<HTMLDivElement, GanttChartProps>(\n ({ useUTC = true, yAxisCategoryOrder = 'default', maxBarHeight = 24, ...props }, forwardedRef) => {\n const _barHeight = React.useRef<number>(DEFAULT_BAR_HEIGHT);\n const _margins = React.useRef<Margins>({});\n const _calloutAnchorPoint = React.useRef<GanttChartDataPoint | null>(null);\n const _emptyChartId = useId('Gantt_empty');\n const _legendId = useId('gantt_legend');\n const _legendMap = React.useRef<Record<string, { id: string; startColor: string; endColor: string }>>({});\n const _prevProps = React.useRef<Partial<GanttChartProps>>({});\n\n const [calloutColor, setCalloutColor] = React.useState<string>('');\n const [hoveredLegend, setHoveredLegend] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [calloutDataPoint, setCalloutDataPoint] = React.useState<GanttChartDataPoint>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const cartesianChartRef = React.useRef<Chart>(null);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRTL = useRtl();\n\n React.useEffect(() => {\n if (!areArraysEqual(_prevProps.current.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n _prevProps.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n const _points = React.useMemo(() => {\n _legendMap.current = {};\n let colorIndex = 0;\n\n return (\n props.data?.map(point => {\n const legend = `${point.legend}`;\n if (!_legendMap.current[legend]) {\n let startColor = point.color ? getColorFromToken(point.color) : getNextColor(colorIndex, 0);\n let endColor = startColor;\n\n if (props.enableGradient) {\n startColor = point.gradient?.[0]!;\n endColor = point.gradient?.[1]!;\n }\n\n _legendMap.current[legend] = { id: `${_legendId}_${colorIndex}`, startColor, endColor };\n colorIndex += 1;\n }\n\n const { startColor, endColor } = _legendMap.current[legend];\n return {\n ...point,\n color: startColor,\n ...(props.enableGradient ? { gradient: [startColor, endColor] as [string, string] } : {}),\n };\n }) ?? []\n );\n }, [props.data, props.enableGradient]);\n\n const _xAxisType = React.useMemo(() => {\n if (_points.length > 0) {\n return getTypeOfAxis(_points[0].x.start, true) as XAxisTypes;\n }\n return XAxisTypes.DateAxis;\n }, [_points]);\n\n const _yAxisType = React.useMemo(() => {\n if (_points.length > 0) {\n return getTypeOfAxis(_points[0].y, false) as YAxisType;\n }\n return YAxisType.StringAxis;\n }, [_points]);\n\n const _yAxisPadding = React.useMemo(() => {\n return getScalePadding(props.yAxisPadding, undefined, 1 / 2);\n }, [props.yAxisPadding]);\n\n const _dateFormatOptions = React.useMemo(() => {\n if (_xAxisType !== XAxisTypes.DateAxis) {\n return undefined;\n }\n\n let lowestFormatLevel = 100;\n let highestFormatLevel = -1;\n _points.forEach(p => {\n const startFormatLevel = getDateFormatLevel(p.x.start as Date, useUTC as boolean);\n const endFormatLevel = getDateFormatLevel(p.x.end as Date, useUTC as boolean);\n lowestFormatLevel = Math.min(lowestFormatLevel, startFormatLevel, endFormatLevel);\n highestFormatLevel = Math.max(highestFormatLevel, startFormatLevel, endFormatLevel);\n });\n\n return getMultiLevelDateTimeFormatOptions(lowestFormatLevel, highestFormatLevel);\n }, [useUTC, _points, _xAxisType]);\n\n const _mapYValueToXValues = React.useCallback(() => {\n const yValueToXValues: Record<string, number[]> = {};\n _points.forEach(point => {\n if (!yValueToXValues[point.y]) {\n yValueToXValues[point.y] = [];\n }\n yValueToXValues[point.y].push(+point.x.end - +point.x.start);\n });\n return yValueToXValues;\n }, [_points]);\n\n const _getOrderedYAxisLabels = React.useCallback(() => {\n const yValueToXValues = _mapYValueToXValues();\n\n if (_yAxisType !== YAxisType.StringAxis) {\n return Object.keys(yValueToXValues).sort((a, b) => +a - +b);\n }\n\n if (yAxisCategoryOrder === 'default') {\n return Object.keys(yValueToXValues).reverse();\n }\n return sortAxisCategories(yValueToXValues, yAxisCategoryOrder);\n }, [_mapYValueToXValues, _yAxisType, yAxisCategoryOrder]);\n\n const _yAxisLabels = React.useMemo(() => _getOrderedYAxisLabels(), [_getOrderedYAxisLabels]);\n\n const _getDomainNRangeValues = React.useCallback(\n (\n points: GanttChartDataPoint[],\n margins: Margins,\n containerWidth: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ): IDomainNRange => {\n const xValues: (Date | number)[] = [];\n points.forEach(point => {\n xValues.push(point.x.start, point.x.end);\n });\n\n const xMin = d3Min(xValues) || 0;\n const xMax = d3Max(xValues) || 0;\n\n return {\n dStartValue: isRTL ? xMax : xMin,\n dEndValue: isRTL ? xMin : xMax,\n rStartValue: margins.left! + (isRTL ? 0 : shiftX),\n rEndValue: containerWidth - margins.right! - (isRTL ? shiftX : 0),\n };\n },\n [],\n );\n\n const _getMargins = React.useCallback((margins: Margins) => {\n _margins.current = margins;\n }, []);\n\n const _getFormattedXValue = React.useCallback(\n (point: GanttChartDataPoint): string => {\n let formattedStartX: string;\n let formattedEndX: string;\n\n if (_xAxisType === XAxisTypes.DateAxis) {\n formattedStartX = formatDateToLocaleString(\n point.x.start as Date,\n props.culture,\n useUTC as boolean,\n false,\n _dateFormatOptions,\n );\n formattedEndX = formatDateToLocaleString(\n point.x.end as Date,\n props.culture,\n useUTC as boolean,\n false,\n _dateFormatOptions,\n );\n } else {\n formattedStartX = point.x.start.toString();\n formattedEndX = point.x.end.toString();\n }\n\n return `${formattedStartX} - ${formattedEndX}`;\n },\n [props.culture, useUTC, _dateFormatOptions, _xAxisType],\n );\n\n const _getCustomizedCallout = React.useCallback(() => {\n const defaultRender = (point?: GanttChartDataPoint): React.JSX.Element | null => {\n return point ? (\n <ChartPopover\n isPopoverOpen={isPopoverOpen}\n clickPosition={clickPosition}\n XValue={point.yAxisCalloutData || point.y.toString()}\n legend={point.legend}\n YValue={point.xAxisCalloutData || _getFormattedXValue(point)}\n color={point.color}\n culture={props.culture}\n />\n ) : null;\n };\n\n return props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(calloutDataPoint, defaultRender)\n : null;\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [_getFormattedXValue, calloutDataPoint, props.culture, props.onRenderCalloutPerDataPoint]);\n\n const _getAriaLabel = React.useCallback(\n (point: GanttChartDataPoint): string => {\n const xValue = point.xAxisCalloutData || _getFormattedXValue(point);\n const yValue = point.yAxisCalloutData || point.y;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${yValue}. ` + (point.legend ? `${point.legend}, ` : '') + `${xValue}.`\n );\n },\n [_getFormattedXValue],\n );\n\n const _getHighlightedLegend = React.useCallback(() => {\n return selectedLegends.length > 0 ? selectedLegends : hoveredLegend ? [hoveredLegend] : [];\n }, [hoveredLegend, selectedLegends]);\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n const _legendHighlighted = React.useCallback(\n (legend: string | undefined) => {\n return _getHighlightedLegend().includes(`${legend}`);\n },\n [_getHighlightedLegend],\n );\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n const _noLegendHighlighted = React.useCallback(() => {\n return _getHighlightedLegend().length === 0;\n }, [_getHighlightedLegend]);\n\n const _showCallout = React.useCallback(\n (target: React.MouseEvent<SVGElement> | React.FocusEvent<SVGElement>, point: GanttChartDataPoint) => {\n if (!(_noLegendHighlighted() || _legendHighlighted(point.legend)) || _calloutAnchorPoint.current === point) {\n return;\n }\n if ('clientX' in target && 'clientY' in target) {\n updatePosition(target.clientX, target.clientY);\n } else {\n const rect = (target.target as SVGElement).getBoundingClientRect();\n updatePosition(rect.left, rect.top);\n }\n _calloutAnchorPoint.current = point;\n setPopoverOpen(true);\n setCalloutLegend(point.legend!);\n setCalloutColor(point.color!);\n setXCalloutValue(point.yAxisCalloutData || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData! || _getFormattedXValue(point));\n setCalloutDataPoint(point);\n },\n [_getFormattedXValue, _legendHighlighted, _noLegendHighlighted],\n );\n\n const _onBarFocus = React.useCallback(\n (point: GanttChartDataPoint, focusEvent: React.FocusEvent<SVGElement>): void => {\n _showCallout(focusEvent, point);\n },\n [_showCallout],\n );\n\n const _onBarHover = React.useCallback(\n (point: GanttChartDataPoint, mouseEvent: React.MouseEvent<SVGElement>): void => {\n _showCallout(mouseEvent, point);\n },\n [_showCallout],\n );\n\n const _onBarLeave = React.useCallback((): void => {\n // do nothing\n }, []);\n\n const _handleChartMouseLeave = React.useCallback((): void => {\n _calloutAnchorPoint.current = null;\n setPopoverOpen(false);\n setCalloutLegend('');\n setCalloutColor('');\n setXCalloutValue('');\n setYCalloutValue('');\n setCalloutDataPoint(undefined);\n }, []);\n\n const _getBarHeight = React.useCallback(\n (adjustedValue: number): number => {\n let barHeight: number;\n if (typeof props.barHeight === 'number') {\n barHeight = props.barHeight;\n } else {\n barHeight = adjustedValue;\n }\n if (typeof maxBarHeight === 'number') {\n barHeight = Math.min(barHeight, maxBarHeight);\n }\n barHeight = Math.max(barHeight, MIN_BAR_HEIGHT);\n return barHeight;\n },\n [maxBarHeight, props.barHeight],\n );\n\n const _getOrderedDataPoints = React.useCallback(() => {\n const result: GanttChartDataPoint[] = [];\n\n const yValueToPoints: Record<string, GanttChartDataPoint[]> = {};\n _points.forEach(point => {\n if (!yValueToPoints[point.y]) {\n yValueToPoints[point.y] = [];\n }\n yValueToPoints[point.y].push(point);\n });\n\n for (let i = _yAxisLabels.length - 1; i >= 0; i--) {\n const yValue = _yAxisLabels[i];\n if (yValueToPoints[yValue]) {\n result.push(...yValueToPoints[yValue].sort((a, b) => +a.x.start - +b.x.start));\n }\n }\n\n return result;\n }, [_points, _yAxisLabels]);\n\n const _createBars = React.useCallback(\n ({\n xScale,\n yScalePrimary: yScale,\n }: {\n xScale: DateScale | NumberScale;\n yScalePrimary: NumberScale | StringScale;\n }): React.JSX.Element => {\n const getGradientId = (legend: string | undefined) => {\n const legendId = _legendMap.current[`${legend}`].id;\n return `${legendId}_gradient`;\n };\n\n const gradientDefs: React.JSX.Element[] = [];\n if (props.enableGradient) {\n Object.keys(_legendMap.current).forEach((legend: string, index: number) => {\n const { startColor, endColor } = _legendMap.current[legend];\n gradientDefs.push(\n <linearGradient key={index} id={getGradientId(legend)}>\n <stop offset=\"0\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>,\n );\n });\n }\n\n let scaleBandwidth = 0;\n if (_yAxisType === YAxisType.StringAxis) {\n scaleBandwidth = (yScale as StringScale).bandwidth();\n _barHeight.current = _getBarHeight(scaleBandwidth);\n }\n\n const points = _getOrderedDataPoints();\n const bars = points.map((point: GanttChartDataPoint, index: number) => {\n const rectStartX = xScale(point.x.start);\n const rectEndX = xScale(point.x.end);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rectY = yScale(point.y as any)! + (scaleBandwidth - _barHeight.current) / 2;\n\n const shouldHighlight = _noLegendHighlighted() || _legendHighlighted(point.legend);\n\n return (\n <rect\n key={index}\n x={Math.min(rectStartX, rectEndX)}\n y={rectY}\n width={Math.abs(rectEndX - rectStartX)}\n height={_barHeight.current}\n rx={props.roundCorners ? 3 : 0}\n fill={props.enableGradient ? `url(#${getGradientId(point.legend)})` : point.color}\n opacity={shouldHighlight ? 1 : 0.1}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement>) => _onBarHover(point, event)}\n onMouseLeave={_onBarLeave}\n onFocus={(event: React.FocusEvent<SVGElement>) => _onBarFocus(point, event)}\n onBlur={_onBarLeave}\n tabIndex={shouldHighlight ? 0 : -1}\n role=\"img\"\n aria-label={_getAriaLabel(point)}\n />\n );\n });\n return (\n <g>\n {gradientDefs.length > 0 ? <defs>{gradientDefs}</defs> : null}\n {bars}\n </g>\n );\n },\n [\n _getAriaLabel,\n _getBarHeight,\n _getOrderedDataPoints,\n _legendHighlighted,\n _noLegendHighlighted,\n _onBarFocus,\n _onBarHover,\n _onBarLeave,\n _yAxisType,\n props.enableGradient,\n props.roundCorners,\n ],\n );\n\n const _onLegendHover = React.useCallback((legend: string): void => {\n setHoveredLegend(legend);\n }, []);\n\n const _onLegendLeave = React.useCallback((): void => {\n setHoveredLegend('');\n }, []);\n\n const _onLegendSelectionChange = React.useCallback(\n (_selectedLegends: string[], event: React.MouseEvent<HTMLButtonElement>, currentLegend?: Legend): void => {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n },\n [props.legendProps],\n );\n\n const _getLegendData = React.useCallback((): React.JSX.Element => {\n const actions: Legend[] = [];\n\n Object.keys(_legendMap.current).forEach((legendTitle: string) => {\n const legend: Legend = {\n title: legendTitle,\n color: _legendMap.current[legendTitle].startColor,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n onChange={_onLegendSelectionChange}\n {...props.legendProps}\n legendRef={_legendsRef}\n />\n );\n return legends;\n }, [\n _handleChartMouseLeave,\n _onLegendHover,\n _onLegendLeave,\n _onLegendSelectionChange,\n props.enabledLegendsWrapLines,\n props.legendProps,\n props.legendsOverflowText,\n ]);\n\n const _getChartTitle = React.useCallback((): string => {\n return (props.chartTitle ? `${props.chartTitle}. ` : '') + `Gantt chart with ${_points.length} data points. `;\n }, [_points.length, props.chartTitle]);\n\n const _isChartEmpty = React.useCallback((): boolean => {\n return _points.length === 0;\n }, [_points.length]);\n\n const _getYDomainMargins = React.useCallback(\n (containerHeight: number): Margins => {\n let domainMargin = MIN_DOMAIN_MARGIN;\n\n const ySet = new Set<string | number>();\n _points.forEach((point: GanttChartDataPoint) => {\n ySet.add(point.y);\n });\n const uniqueY = Array.from(ySet);\n\n /** Total height available to render the bars */\n const totalHeight =\n containerHeight -\n (_margins.current.top! + MIN_DOMAIN_MARGIN) -\n (_margins.current.bottom! + MIN_DOMAIN_MARGIN);\n\n if (_yAxisType !== YAxisType.StringAxis) {\n _barHeight.current = _getBarHeight(\n calculateAppropriateBarWidth(uniqueY as number[] | Date[], totalHeight, _yAxisPadding),\n );\n domainMargin += _barHeight.current / 2;\n }\n\n return {\n ..._margins.current,\n top: _margins.current.top! + domainMargin,\n bottom: _margins.current.bottom! + domainMargin,\n };\n },\n [_getBarHeight, _points, _yAxisPadding, _yAxisType],\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 if (!_isChartEmpty()) {\n _barHeight.current = _getBarHeight(DEFAULT_BAR_HEIGHT);\n\n const calloutProps: ChartPopoverProps = {\n isPopoverOpen,\n clickPosition,\n color: calloutColor,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue,\n ...props.calloutProps,\n };\n const tickParams: ModifiedCartesianChartProps['tickParams'] = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n return (\n <CartesianChart\n {...props}\n yAxisPadding={_yAxisPadding}\n chartTitle={_getChartTitle()}\n points={_points}\n chartType={ChartTypes.GanttChart}\n xAxisType={_xAxisType}\n yAxisType={_yAxisType}\n componentRef={cartesianChartRef}\n stringDatasetForYAxisDomain={_yAxisLabels}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={_getLegendData()}\n createYAxis={createYAxisForHorizontalBarChartWithAxis}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxisForHorizontalBarChartWithAxis}\n getMinMaxOfYAxis={findHBCWANumericMinMaxOfY}\n customizedCallout={_getCustomizedCallout()}\n getmargins={_getMargins}\n getYDomainMargins={_getYDomainMargins}\n onChartMouseLeave={_handleChartMouseLeave}\n useUTC={useUTC}\n children={_createBars}\n />\n );\n } else {\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n }\n },\n);\n\nGanttChart.displayName = 'GanttChart';\n"],"names":["React","max","d3Max","min","d3Min","useId","Legends","CartesianChart","ChartPopover","ChartTypes","YAxisType","XAxisTypes","getTypeOfAxis","getNextColor","findHBCWANumericMinMaxOfY","createYAxisForHorizontalBarChartWithAxis","createStringYAxisForHorizontalBarChartWithAxis","areArraysEqual","MIN_DOMAIN_MARGIN","sortAxisCategories","calculateAppropriateBarWidth","getColorFromToken","getScalePadding","getDateFormatLevel","useRtl","formatDateToLocaleString","getMultiLevelDateTimeFormatOptions","toImage","DEFAULT_BAR_HEIGHT","MIN_BAR_HEIGHT","GanttChart","forwardRef","useUTC","yAxisCategoryOrder","maxBarHeight","props","forwardedRef","_barHeight","useRef","_margins","_calloutAnchorPoint","_emptyChartId","_legendId","_legendMap","_prevProps","calloutColor","setCalloutColor","useState","hoveredLegend","setHoveredLegend","calloutLegend","setCalloutLegend","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegends","setSelectedLegends","legendProps","calloutDataPoint","setCalloutDataPoint","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","cartesianChartRef","_legendsRef","_isRTL","useEffect","current","useImperativeHandle","componentRef","chartContainer","opts","toSVG","_points","useMemo","colorIndex","data","map","point","legend","startColor","color","endColor","enableGradient","gradient","id","_xAxisType","length","start","DateAxis","_yAxisType","StringAxis","_yAxisPadding","yAxisPadding","undefined","_dateFormatOptions","lowestFormatLevel","highestFormatLevel","forEach","p","startFormatLevel","endFormatLevel","end","Math","_mapYValueToXValues","useCallback","yValueToXValues","push","_getOrderedYAxisLabels","Object","keys","sort","a","b","reverse","_yAxisLabels","_getDomainNRangeValues","points","margins","containerWidth","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","xValues","xMin","xMax","dStartValue","dEndValue","rStartValue","left","rEndValue","right","_getMargins","_getFormattedXValue","formattedStartX","formattedEndX","culture","toString","_getCustomizedCallout","defaultRender","XValue","yAxisCalloutData","YValue","xAxisCalloutData","onRenderCalloutPerDataPoint","_getAriaLabel","xValue","yValue","callOutAccessibilityData","ariaLabel","_getHighlightedLegend","_legendHighlighted","includes","_noLegendHighlighted","_showCallout","target","updatePosition","clientX","clientY","rect","getBoundingClientRect","top","_onBarFocus","focusEvent","_onBarHover","mouseEvent","_onBarLeave","_handleChartMouseLeave","_getBarHeight","adjustedValue","barHeight","_getOrderedDataPoints","result","yValueToPoints","i","_createBars","xScale","yScalePrimary","yScale","getGradientId","legendId","gradientDefs","index","linearGradient","key","stop","offset","stopColor","scaleBandwidth","bandwidth","bars","rectStartX","rectEndX","rectY","shouldHighlight","width","abs","height","rx","roundCorners","fill","opacity","onClick","onMouseOver","event","onMouseLeave","onFocus","onBlur","tabIndex","role","aria-label","g","defs","_onLegendHover","_onLegendLeave","_onLegendSelectionChange","_selectedLegends","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","actions","legendTitle","title","hoverAction","onMouseOutAction","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","legendRef","_getChartTitle","chartTitle","_isChartEmpty","_getYDomainMargins","containerHeight","domainMargin","ySet","Set","add","uniqueY","Array","from","totalHeight","bottom","newX","newY","threshold","distance","sqrt","pow","calloutProps","tickParams","tickFormat","yAxisType","stringDatasetForYAxisDomain","legendBars","createYAxis","getDomainNRangeValues","createStringYAxis","getMinMaxOfYAxis","customizedCallout","getmargins","getYDomainMargins","onChartMouseLeave","children","div","style","displayName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GanttChart.types.ts"],"sourcesContent":["import { RenderFunction } from '../../utilities/index';\nimport { CartesianChartProps, CartesianChartStyleProps, CartesianChartStyles, GanttChartDataPoint } from '../../index';\n\n/**\n * Gantt Chart properties\n * {@docCategory GanttChart}\n */\nexport interface GanttChartProps extends CartesianChartProps {\n /**\n * An array of data points to be rendered in the chart.\n */\n data?: GanttChartDataPoint[];\n\n /**\n * Callback function to render a custom callout for each data point.\n */\n onRenderCalloutPerDataPoint?: RenderFunction<GanttChartDataPoint>;\n\n /**\n * Height of each bar, in pixels.\n */\n barHeight?: number;\n\n /**\n * Title of the chart.\n */\n chartTitle?: string;\n\n /**\n * Locale identifier string used to format numbers and dates according to the specified culture.\n * Example: 'en-US', 'fr-FR'.\n */\n culture?: string;\n\n /**\n * Padding between bars as a fraction of the [step](https://d3js.org/d3-scale/band#band_step).\n * Takes a number in the range [0, 1].\n * @default 1/2\n */\n yAxisPadding?: number;\n\n /**\n * If true, truncates y-axis tick labels longer than `noOfCharsToTruncate` with ellipses\n * and displays them in a tooltip on hover.\n * @default false\n */\n showYAxisLablesTooltip?: boolean;\n\n /**\n * If true, renders full y-axis tick labels without truncation.\n * @default false\n */\n showYAxisLables?: boolean;\n\n /**\n * If true, enables gradient fills for the bars.\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * If true, applies rounded corners to the bars.\n * @default false\n */\n roundCorners?: boolean;\n\n /**\n * Maximum height of each bar, in pixels.\n * @default 24\n */\n maxBarHeight?: number;\n}\n\n/**\n * Gantt Chart style properties\n * {@docCategory GanttChart}\n */\nexport interface GanttChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * Gantt Chart styles\n * {@docCategory GanttChart}\n */\nexport interface GanttChartStyles extends CartesianChartStyles {}\n"],"names":[],"mappings":"AA+EA;;;CAGC,GACD,WAAiE"}
|
|
1
|
+
{"version":3,"sources":["../src/components/GanttChart/GanttChart.types.ts"],"sourcesContent":["import { RenderFunction } from '../../utilities/index';\nimport { CartesianChartProps, CartesianChartStyleProps, CartesianChartStyles, GanttChartDataPoint } from '../../index';\n\n/**\n * Gantt Chart properties\n * {@docCategory GanttChart}\n */\nexport interface GanttChartProps extends CartesianChartProps {\n /**\n * An array of data points to be rendered in the chart.\n */\n data?: GanttChartDataPoint[];\n\n /**\n * Callback function to render a custom callout for each data point.\n */\n onRenderCalloutPerDataPoint?: RenderFunction<GanttChartDataPoint>;\n\n /**\n * Height of each bar, in pixels.\n */\n barHeight?: number;\n\n /**\n * Title of the chart.\n */\n chartTitle?: string;\n\n /**\n * Locale identifier string used to format numbers and dates according to the specified culture.\n * Example: 'en-US', 'fr-FR'.\n */\n culture?: string;\n\n /**\n * Padding between bars as a fraction of the [step](https://d3js.org/d3-scale/band#band_step).\n * Takes a number in the range [0, 1].\n * @default 1/2\n */\n yAxisPadding?: number;\n\n /**\n * If true, truncates y-axis tick labels longer than `noOfCharsToTruncate` with ellipses\n * and displays them in a tooltip on hover.\n * @default false\n */\n showYAxisLablesTooltip?: boolean;\n\n /**\n * If true, renders full y-axis tick labels without truncation.\n * @default false\n */\n showYAxisLables?: boolean;\n\n /**\n * If true, enables gradient fills for the bars.\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * If true, applies rounded corners to the bars.\n * @default false\n */\n roundCorners?: boolean;\n\n /**\n * Maximum height of each bar, in pixels.\n * @default 24\n */\n maxBarHeight?: number;\n}\n\n/**\n * Gantt Chart style properties\n * {@docCategory GanttChart}\n */\nexport interface GanttChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * Gantt Chart styles\n * {@docCategory GanttChart}\n */\nexport interface GanttChartStyles extends CartesianChartStyles {}\n"],"names":[],"mappings":"AA+EA;;;CAGC,GACD,WAAiE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './GanttChart';\nexport * from './GanttChart.types';\n"],"names":[],"mappings":";;;;;uBAAc,eAAe;uBACf,qBAAqB"}
|
|
1
|
+
{"version":3,"sources":["../src/components/GanttChart/index.ts"],"sourcesContent":["export * from './GanttChart';\nexport * from './GanttChart.types';\n"],"names":[],"mappings":";;;;;uBAAc,eAAe;uBACf,qBAAqB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/ "use strict";
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
function _export(target, all) {
|
|
8
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: all[name]
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
_export(exports, {
|
|
14
|
+
ganttClassNames: function() {
|
|
15
|
+
return ganttClassNames;
|
|
16
|
+
},
|
|
17
|
+
useGanttChartStyles: function() {
|
|
18
|
+
return useGanttChartStyles;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const ganttClassNames = {
|
|
22
|
+
root: '',
|
|
23
|
+
xAxis: '',
|
|
24
|
+
yAxis: '',
|
|
25
|
+
legendContainer: '',
|
|
26
|
+
hover: '',
|
|
27
|
+
descriptionMessage: '',
|
|
28
|
+
tooltip: '',
|
|
29
|
+
axisTitle: '',
|
|
30
|
+
chartTitle: '',
|
|
31
|
+
opacityChangeOnHover: '',
|
|
32
|
+
shapeStyles: '',
|
|
33
|
+
chartWrapper: '',
|
|
34
|
+
svgTooltip: '',
|
|
35
|
+
chart: ''
|
|
36
|
+
};
|
|
37
|
+
const useGanttChartStyles = (props)=>{
|
|
38
|
+
return {};
|
|
39
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/GanttChart/useGanttChartStyles.styles.ts"],"sourcesContent":["import { GanttChartStyles, GanttChartProps } from '../../index';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\n/**\n * @internal\n */\nexport const ganttClassNames: SlotClassNames<GanttChartStyles> = {\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n descriptionMessage: '',\n tooltip: '',\n axisTitle: '',\n chartTitle: '',\n opacityChangeOnHover: '',\n shapeStyles: '',\n chartWrapper: '',\n svgTooltip: '',\n chart: '',\n};\n\n/**\n * Apply styling to the GanttChart component\n */\nexport const useGanttChartStyles = (props: GanttChartProps): GanttChartStyles => {\n return {};\n};\n"],"names":["ganttClassNames","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","tooltip","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useGanttChartStyles","props"],"mappings":"AAGA;;CAEC,GACD;;;;;;;;;;;mBAAaA;;;uBAoBAe;;;;AApBN,MAAMf,kBAAoD;IAC/DC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,iBAAiB;IACjBC,OAAO;IACPC,oBAAoB;IACpBC,SAAS;IACTC,WAAW;IACXC,YAAY;IACZC,sBAAsB;IACtBC,aAAa;IACbC,cAAc;IACdC,YAAY;IACZC,OAAO;AACT,EAAE;AAKK,MAAMC,sBAAsB,CAACC;IAClC,OAAO,CAAC;AACV,EAAE"}
|
|
@@ -39,6 +39,7 @@ const _SVGTooltipText = require("../../utilities/SVGTooltipText");
|
|
|
39
39
|
const _index1 = require("../Legends/index");
|
|
40
40
|
const _reacttabster = require("@fluentui/react-tabster");
|
|
41
41
|
const _ChartPopover = require("../CommonComponents/ChartPopover");
|
|
42
|
+
const _imageexportutils = require("../../utilities/image-export-utils");
|
|
42
43
|
const GAUGE_MARGIN = 16;
|
|
43
44
|
const LABEL_WIDTH = 36;
|
|
44
45
|
const LABEL_HEIGHT = 16;
|
|
@@ -106,6 +107,7 @@ const getChartValueLabel = (chartValue, minValue, maxValue, chartValueFormat, fo
|
|
|
106
107
|
};
|
|
107
108
|
const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
108
109
|
var _props_legendProps;
|
|
110
|
+
const _legendsRef = _react.useRef(null);
|
|
109
111
|
const _getMargins = ()=>{
|
|
110
112
|
const { hideMinMax, chartTitle, sublabel } = props;
|
|
111
113
|
return {
|
|
@@ -162,7 +164,11 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
162
164
|
props
|
|
163
165
|
]);
|
|
164
166
|
_react.useImperativeHandle(props.componentRef, ()=>({
|
|
165
|
-
chartContainer: _rootElem.current
|
|
167
|
+
chartContainer: _rootElem.current,
|
|
168
|
+
toImage: (opts)=>{
|
|
169
|
+
var _legendsRef_current;
|
|
170
|
+
return (0, _imageexportutils.toImage)(_rootElem.current, (_legendsRef_current = _legendsRef.current) === null || _legendsRef_current === void 0 ? void 0 : _legendsRef_current.toSVG, _isRTL, opts);
|
|
171
|
+
}
|
|
166
172
|
}), []);
|
|
167
173
|
const classes = (0, _useGaugeChartStylesstyles.useGaugeChartStyles)(props);
|
|
168
174
|
function _getStylesBasedOnBreakpoint() {
|
|
@@ -283,7 +289,8 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
283
289
|
centerLegends: true,
|
|
284
290
|
...props.legendProps,
|
|
285
291
|
// eslint-disable-next-line react/jsx-no-bind
|
|
286
|
-
onChange: _onLegendSelectionChange
|
|
292
|
+
onChange: _onLegendSelectionChange,
|
|
293
|
+
legendRef: _legendsRef
|
|
287
294
|
}));
|
|
288
295
|
}
|
|
289
296
|
function _onLegendSelectionChange(selectedLegends, event, currentLegend) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GaugeChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGaugeChartStyles } from './useGaugeChartStyles.styles';\nimport { select as d3Select } from 'd3-selection';\nimport { arc as d3Arc } from 'd3-shape';\nimport { YValueHover } from '../../index';\nimport {\n Points,\n areArraysEqual,\n formatScientificLimitWidth,\n getAccessibleDataObject,\n getColorFromToken,\n getNextColor,\n pointTypes,\n useRtl,\n} from '../../utilities/index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { SVGTooltipText } from '../../utilities/SVGTooltipText';\nimport { Legend, LegendShape, Legends, Shape } from '../Legends/index';\nimport { GaugeChartVariant, GaugeValueFormat, GaugeChartProps, GaugeChartSegment } from './GaugeChart.types';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\n\nconst GAUGE_MARGIN = 16;\nconst LABEL_WIDTH = 36;\nconst LABEL_HEIGHT = 16;\nconst LABEL_OFFSET = 4;\nconst TITLE_OFFSET = 11;\nconst EXTRA_NEEDLE_LENGTH = 4;\nexport const ARC_PADDING = 2;\nexport const BREAKPOINTS = [\n { minRadius: 52, arcWidth: 12, fontSize: 20 },\n { minRadius: 70, arcWidth: 16, fontSize: 24 },\n { minRadius: 88, arcWidth: 20, fontSize: 32 },\n { minRadius: 106, arcWidth: 24, fontSize: 32 },\n { minRadius: 124, arcWidth: 28, fontSize: 40 },\n { minRadius: 142, arcWidth: 32, fontSize: 40 },\n];\n\nexport const calcNeedleRotation = (chartValue: number, minValue: number, maxValue: number) => {\n let needleRotation = ((chartValue - minValue) / (maxValue - minValue)) * 180;\n if (needleRotation < 0) {\n needleRotation = 0;\n } else if (needleRotation > 180) {\n needleRotation = 180;\n }\n\n return needleRotation;\n};\n\nexport const getSegmentLabel = (\n segment: ExtendedSegment,\n minValue: number,\n maxValue: number,\n variant?: GaugeChartVariant,\n isAriaLabel: boolean = false,\n) => {\n if (isAriaLabel) {\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.legend}, ${segment.size} out of ${maxValue} or ${((segment.size / maxValue) * 100).toFixed()}%`\n : `${segment.legend}, ${segment.start} to ${segment.end}`;\n }\n\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.size} (${((segment.size / maxValue) * 100).toFixed()}%)`\n : `${segment.start} - ${segment.end}`;\n};\n\nexport const getChartValueLabel = (\n chartValue: number,\n minValue: number,\n maxValue: number,\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string),\n forCallout: boolean = false,\n): string => {\n if (forCallout) {\n // When displaying the chart value as a percentage, use fractions in the callout, and vice versa.\n // This helps clarify the actual value and avoid repetition.\n return minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${((chartValue / maxValue) * 100).toFixed()}%`\n : `${chartValue}/${maxValue}`;\n }\n\n return typeof chartValueFormat === 'function'\n ? chartValueFormat([chartValue - minValue, maxValue - minValue])\n : minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${chartValue}/${maxValue}`\n : `${((chartValue / maxValue) * 100).toFixed()}%`;\n};\n\ninterface YValue extends Omit<YValueHover, 'y'> {\n y?: string | number;\n}\nexport interface ExtendedSegment extends GaugeChartSegment {\n start: number;\n end: number;\n}\n\nexport const GaugeChart: React.FunctionComponent<GaugeChartProps> = React.forwardRef<HTMLDivElement, GaugeChartProps>(\n (props, forwardedRef) => {\n const _getMargins = () => {\n const { hideMinMax, chartTitle, sublabel } = props;\n return {\n left: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n right: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n top: (chartTitle ? TITLE_OFFSET + LABEL_HEIGHT : EXTRA_NEEDLE_LENGTH / 2) + GAUGE_MARGIN,\n bottom: (sublabel ? LABEL_OFFSET + LABEL_HEIGHT : 0) + GAUGE_MARGIN,\n };\n };\n const _margins: { left: number; right: number; top: number; bottom: number } = _getMargins();\n const _legendsHeight: number = !props.hideLegend ? 32 : 0;\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\n const _isRTL: boolean = useRtl();\n const [width, setWidth] = React.useState<number>(140 + _getMargins().left + _getMargins().right);\n const [height, setHeight] = React.useState<number>(70 + _getMargins().top + _getMargins().bottom + _legendsHeight);\n const [hoveredLegend, setHoveredLegend] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [focusedElement, setFocusedElement] = React.useState<string | undefined>('');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [hoverYValues, setHoverYValues] = React.useState<YValue[]>([]);\n const prevPropsRef = React.useRef<GaugeChartProps | null>(null);\n const _width = props.width || width;\n const _height = props.height || height;\n const _outerRadius: number = Math.min(\n (_width - (_margins.left + _margins.right)) / 2,\n _height - (_margins.top + _margins.bottom + _legendsHeight),\n );\n const { arcWidth, chartValueSize } = _getStylesBasedOnBreakpoint();\n const _innerRadius: number = _outerRadius - arcWidth;\n let _minValue!: number;\n let _maxValue!: number;\n let _segments!: ExtendedSegment[];\n let _calloutAnchor: string = '';\n\n React.useEffect(() => {\n if (_rootElem.current) {\n setWidth(_rootElem.current.clientWidth);\n setHeight(_rootElem.current.clientHeight);\n }\n }, []);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n }),\n [],\n );\n\n const classes = useGaugeChartStyles(props);\n function _getStylesBasedOnBreakpoint() {\n for (let index = BREAKPOINTS.length - 1; index >= 0; index -= 1) {\n if (_outerRadius >= BREAKPOINTS[index].minRadius) {\n return {\n arcWidth: BREAKPOINTS[index].arcWidth,\n chartValueSize: BREAKPOINTS[index].fontSize,\n };\n }\n }\n return {\n arcWidth: BREAKPOINTS[0].arcWidth,\n chartValueSize: BREAKPOINTS[0].fontSize,\n };\n }\n\n function _processProps() {\n const { minValue = 0, maxValue, segments, roundCorners } = props;\n\n let total = minValue;\n const processedSegments: ExtendedSegment[] = segments.map(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (segment: { size: number; legend: any; color: string; accessibilityData: any }, index: number) => {\n const size = Math.max(segment.size, 0);\n total += size;\n return {\n legend: segment.legend,\n size,\n color:\n typeof segment.color !== 'undefined'\n ? getColorFromToken(segment.color, false)\n : getNextColor(index, 0, false),\n accessibilityData: segment.accessibilityData,\n start: total - size,\n end: total,\n };\n },\n );\n if (typeof maxValue !== 'undefined' && total < maxValue) {\n processedSegments.push({\n legend: 'Unknown',\n size: maxValue - total,\n color: 'neutralLight',\n start: total,\n end: maxValue,\n });\n total = maxValue;\n }\n\n const arcGenerator = d3Arc()\n .cornerRadius(roundCorners ? 3 : 0)\n .padAngle(ARC_PADDING / _outerRadius)\n .padRadius(_outerRadius);\n const rtlSafeSegments = _isRTL ? Array.from(processedSegments).reverse() : processedSegments;\n let prevAngle = -Math.PI / 2;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const arcs = rtlSafeSegments.map((segment, index) => {\n const endAngle = prevAngle + (segment.size / (total - minValue)) * Math.PI;\n const d = arcGenerator({\n innerRadius: _innerRadius,\n outerRadius: _outerRadius,\n startAngle: prevAngle,\n endAngle,\n })!;\n prevAngle = endAngle;\n return {\n d,\n segmentIndex: _isRTL ? processedSegments.length - 1 - index : index,\n startAngle: prevAngle - (segment.size / (total - minValue)) * Math.PI,\n endAngle,\n };\n });\n\n _minValue = minValue;\n _maxValue = total;\n _segments = processedSegments;\n\n return {\n arcs,\n };\n }\n\n function _renderNeedle() {\n const needleRotation = calcNeedleRotation(props.chartValue, _minValue, _maxValue);\n const rtlSafeNeedleRotation = _isRTL ? 180 - needleRotation : needleRotation;\n const strokeWidth = 2;\n const halfStrokeWidth = strokeWidth / 2;\n const needleLength = _outerRadius - _innerRadius + EXTRA_NEEDLE_LENGTH;\n\n return (\n <g transform={`rotate(${rtlSafeNeedleRotation}, 0, 0)`}>\n <path\n d={`\n M 0,${-halfStrokeWidth - 3}\n L ${-needleLength},${-halfStrokeWidth - 1}\n A ${halfStrokeWidth + 1},${halfStrokeWidth + 1},0,0,0,${-needleLength},${halfStrokeWidth + 1}\n L 0,${halfStrokeWidth + 3}\n A ${halfStrokeWidth + 3},${halfStrokeWidth + 3},0,0,0,0,${-halfStrokeWidth - 3}\n `}\n strokeWidth={strokeWidth}\n className={classes.needle}\n transform={`translate(${-_innerRadius + EXTRA_NEEDLE_LENGTH / 2})`}\n data-is-focusable={true}\n onFocus={e => _handleFocus(e, 'Needle')}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, 'Needle')}\n onMouseMove={e => _handleMouseOver(e, 'Needle')}\n role=\"img\"\n aria-label={\n 'Current value: ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)\n }\n />\n </g>\n );\n }\n\n function _renderLegends() {\n if (props.hideLegend) {\n return null;\n }\n\n const legends: Legend[] = _segments.map((segment, index) => {\n const color: string = segment.color || getNextColor(index, 0, false);\n\n return {\n title: segment.legend,\n color,\n hoverAction: () => {\n setHoveredLegend(segment.legend);\n },\n onMouseOutAction: () => {\n setHoveredLegend('');\n },\n };\n });\n\n return (\n <div className={classes.legendsContainer}>\n <Legends\n legends={legends}\n centerLegends\n {...props.legendProps}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={_onLegendSelectionChange}\n />\n </div>\n );\n }\n\n function _onLegendSelectionChange(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _legendHighlighted(legend: string) {\n return _getHighlightedLegend().includes(legend!);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : hoveredLegend ? [hoveredLegend] : [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _handleFocus(focusEvent: React.FocusEvent<SVGElement>, focusedElement: string) {\n _showCallout(focusEvent, focusedElement, true);\n }\n\n function _handleBlur() {\n _hideCallout(true);\n }\n\n function _handleMouseOver(mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string) {\n _showCallout(mouseEvent, hoveredElement, false);\n }\n\n function _handleMouseOut() {\n _hideCallout(false);\n }\n\n function _handleCalloutDismiss() {\n _hideCallout(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _showCallout(\n event: React.MouseEvent<SVGElement, MouseEvent> | React.FocusEvent<SVGElement, Element>,\n legend: string,\n isFocusEvent: boolean,\n ) {\n if (_calloutAnchor === legend) {\n return;\n }\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in event) {\n clientX = event.clientX;\n clientY = event.clientY;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const target = event.currentTarget as HTMLElement | SVGElement;\n if (target && 'getBoundingClientRect' in target) {\n const boundingRect = target.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n }\n _calloutAnchor = legend;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverXValue: string =\n 'Current value is ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat, true);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverYValues: YValue[] = _segments.map(segment => {\n const yValue: YValue = {\n legend: segment.legend,\n y: getSegmentLabel(segment, _minValue, _maxValue, props.variant),\n color: segment.color,\n };\n return yValue;\n });\n _updatePosition(clientX, clientY);\n setPopoverOpen(\n ['Needle', 'Chart value'].includes(legend) || _noLegendHighlighted() || _legendHighlighted(legend),\n );\n setHoverXValue(hoverXValue);\n setHoverYValues(hoverYValues);\n if (isFocusEvent) {\n setFocusedElement(legend);\n }\n }\n\n function _hideCallout(isBlurEvent?: boolean) {\n _calloutAnchor = '';\n setPopoverOpen(false);\n setHoverXValue('');\n setHoverYValues([]);\n if (isBlurEvent) {\n setFocusedElement('');\n }\n }\n\n function _wrapContent(content: string, id: string, maxWidth: number) {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n }\n\n // TO DO: Write a common functional component for Multi value callout and divide sub count method\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _multiValueCallout(calloutProps: any) {\n const yValueHoverSubCountsExists: boolean = _yValueHoverSubCountsExists(calloutProps.YValueHover);\n return (\n <div className={classes.calloutContentRoot}>\n <div\n className={classes.calloutDateTimeContainer}\n style={yValueHoverSubCountsExists ? { marginBottom: '11px' } : {}}\n >\n <div\n className={classes.calloutContentX}\n {...getAccessibleDataObject(calloutProps!.xAxisCalloutAccessibilityData, 'text', false)}\n >\n {formatToLocaleString(calloutProps!.hoverXValue, props.culture) as React.ReactNode}\n </div>\n </div>\n <div className={classes.calloutInfoContainer} style={yValueHoverSubCountsExists ? { display: 'flex' } : {}}>\n {calloutProps!.YValueHover &&\n calloutProps!.YValueHover.map((yValue: YValueHover, index: number, yValues: YValueHover[]) => {\n const isLast: boolean = index + 1 === yValues.length;\n const { shouldDrawBorderBottom = false } = yValue;\n return (\n <div\n {...getAccessibleDataObject(yValue.callOutAccessibilityData, 'text', false)}\n key={`callout-content-${index}`}\n style={\n yValueHoverSubCountsExists\n ? {\n display: 'inline-block',\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n : {\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n }\n >\n {_getCalloutContent(yValue, index, yValueHoverSubCountsExists, isLast)}\n </div>\n );\n })}\n {!!calloutProps.descriptionMessage && (\n <div className={classes.descriptionMessage}>{calloutProps.descriptionMessage}</div>\n )}\n </div>\n </div>\n );\n }\n\n function _yValueHoverSubCountsExists(yValueHover?: YValueHover[]) {\n if (yValueHover) {\n return yValueHover.some(\n (yValue: {\n legend?: string;\n y?: number;\n color?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n }) => yValue.yAxisCalloutData && typeof yValue.yAxisCalloutData !== 'string',\n );\n }\n return false;\n }\n\n function _getCalloutContent(\n xValue: YValueHover,\n index: number,\n yValueHoverSubCountsExists: boolean,\n isLast: boolean,\n ): React.ReactNode {\n const marginStyle: React.CSSProperties = isLast ? {} : { marginRight: '16px' };\n const toDrawShape = xValue.index !== undefined && xValue.index !== -1;\n const { culture } = props;\n const yValue = formatToLocaleString(xValue.y, culture) as React.ReactNode;\n if (!xValue.yAxisCalloutData || typeof xValue.yAxisCalloutData === 'string') {\n return (\n <div style={yValueHoverSubCountsExists ? marginStyle : {}}>\n {yValueHoverSubCountsExists && (\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n )}\n <div\n id={`${index}_${xValue.y}`}\n className={classes.calloutBlockContainer}\n style={{ borderInlineStart: `4px solid ${xValue.color}` }}\n >\n {toDrawShape && (\n <Shape\n svgProps={{\n className: classes.shapeStyles,\n }}\n pathProps={{ fill: xValue.color }}\n shape={Points[xValue.index! % Object.keys(pointTypes).length] as LegendShape}\n style={{ display: 'flex' }}\n />\n )}\n <div>\n <div className={classes.calloutlegendText}> {xValue.legend}</div>\n <div className={classes.calloutContentY}>\n {\n formatToLocaleString(\n xValue.yAxisCalloutData ? xValue.yAxisCalloutData : xValue.y || xValue.data,\n culture,\n ) as React.ReactNode\n }\n </div>\n </div>\n </div>\n </div>\n );\n } else {\n const subcounts: { [id: string]: number } = xValue.yAxisCalloutData as { [id: string]: number };\n return (\n <div style={marginStyle}>\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n {Object.keys(subcounts).map((subcountName: string) => {\n return (\n <div key={subcountName} className={classes.calloutBlockContainer}>\n <div className={classes.calloutlegendText}>\n {' '}\n {formatToLocaleString(subcountName, culture) as React.ReactNode}\n </div>\n <div className={classes.calloutContentY}>\n {formatToLocaleString(subcounts[subcountName], culture) as React.ReactNode}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\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 function _getChartTitle(): string {\n const { chartTitle } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Gauge chart with ${_segments.length} segments. `;\n }\n const { arcs } = _processProps();\n const focusAttributes = useFocusableGroup();\n return (\n <div className={classes.root} ref={el => (_rootElem.current = el)}>\n <div className={classes.chartWrapper} {...focusAttributes}>\n <svg\n className={classes.chart}\n width={_width}\n height={_height - _legendsHeight}\n role=\"region\"\n aria-label={_getChartTitle()}\n onMouseLeave={_handleMouseOut}\n >\n <g transform={`translate(${_width / 2}, ${_height - (_margins.bottom + _legendsHeight)})`}>\n {props.chartTitle && (\n <text\n x={0}\n y={-(_outerRadius + TITLE_OFFSET)}\n textAnchor=\"middle\"\n className={classes.chartTitle}\n aria-hidden={true}\n >\n {props.chartTitle}\n </text>\n )}\n {!props.hideMinMax && (\n <>\n <text\n x={(_isRTL ? 1 : -1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"end\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Min value: ${_minValue}`}\n >\n {formatScientificLimitWidth(_minValue)}\n </text>\n <text\n x={(_isRTL ? -1 : 1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"start\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Max value: ${_maxValue}`}\n >\n {formatScientificLimitWidth(_maxValue)}\n </text>\n </>\n )}\n {arcs.map((arc, index) => {\n const segment = _segments[arc.segmentIndex];\n return (\n <React.Fragment key={index}>\n <path\n d={arc.d}\n strokeWidth={focusedElement === segment.legend ? ARC_PADDING : 0}\n className={classes.segment}\n fill={segment.color}\n opacity={_legendHighlighted(segment.legend) || _noLegendHighlighted() ? 1 : 0.1}\n {...getAccessibleDataObject(\n {\n ariaLabel: getSegmentLabel(segment, _minValue, _maxValue, props.variant, true),\n ...segment.accessibilityData,\n },\n 'img',\n true,\n )}\n onFocus={e => _handleFocus(e, segment.legend)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, segment.legend)}\n onMouseLeave={e => _handleCalloutDismiss()}\n onMouseMove={e => _handleMouseOver(e, segment.legend)}\n data-is-focusable={_legendHighlighted(segment.legend) || _noLegendHighlighted()}\n tabIndex={segment.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n })}\n {_renderNeedle()}\n <g\n onMouseEnter={e => _handleMouseOver(e, 'Chart value')}\n onMouseMove={e => _handleMouseOver(e, 'Chart value')}\n >\n <SVGTooltipText\n content={getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)}\n textProps={{\n x: 0,\n y: 0,\n textAnchor: 'middle',\n className: classes.chartValue,\n fontSize: chartValueSize,\n 'aria-hidden': 'true',\n }}\n maxWidth={_innerRadius * 2 - 24}\n wrapContent={_wrapContent}\n />\n </g>\n {props.sublabel && (\n <SVGTooltipText\n content={props.sublabel}\n textProps={{\n x: 0,\n y: 4,\n textAnchor: 'middle',\n dominantBaseline: 'hanging',\n className: classes.sublabel,\n }}\n maxWidth={_innerRadius * 2}\n wrapContent={_wrapContent}\n />\n )}\n </g>\n </svg>\n </div>\n {_renderLegends()}\n {!props.hideTooltip && isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n customCallout={{\n customizedCallout: _multiValueCallout({ hoverXValue: hoverXValue, YValueHover: hoverYValues }),\n }}\n />\n )}\n </div>\n );\n },\n);\nGaugeChart.displayName = 'GaugeChart';\n"],"names":["React","useGaugeChartStyles","select","d3Select","arc","d3Arc","Points","areArraysEqual","formatScientificLimitWidth","getAccessibleDataObject","getColorFromToken","getNextColor","pointTypes","useRtl","formatToLocaleString","SVGTooltipText","Legends","Shape","useFocusableGroup","ChartPopover","GAUGE_MARGIN","LABEL_WIDTH","LABEL_HEIGHT","LABEL_OFFSET","TITLE_OFFSET","EXTRA_NEEDLE_LENGTH","ARC_PADDING","BREAKPOINTS","minRadius","arcWidth","fontSize","calcNeedleRotation","chartValue","minValue","maxValue","needleRotation","getSegmentLabel","segment","variant","isAriaLabel","legend","size","toFixed","start","end","getChartValueLabel","chartValueFormat","forCallout","toString","GaugeChart","forwardRef","props","forwardedRef","_getMargins","hideMinMax","chartTitle","sublabel","left","right","top","bottom","_margins","_legendsHeight","hideLegend","_rootElem","useRef","_isRTL","width","setWidth","useState","height","setHeight","hoveredLegend","setHoveredLegend","selectedLegends","setSelectedLegends","legendProps","focusedElement","setFocusedElement","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","hoverXValue","setHoverXValue","hoverYValues","setHoverYValues","prevPropsRef","_width","_height","_outerRadius","Math","min","chartValueSize","_getStylesBasedOnBreakpoint","_innerRadius","_minValue","_maxValue","_segments","_calloutAnchor","useEffect","current","clientWidth","clientHeight","prevProps","useImperativeHandle","componentRef","chartContainer","classes","index","length","_processProps","segments","roundCorners","total","processedSegments","map","max","color","accessibilityData","push","arcGenerator","cornerRadius","padAngle","padRadius","rtlSafeSegments","Array","from","reverse","prevAngle","PI","arcs","endAngle","d","innerRadius","outerRadius","startAngle","segmentIndex","_renderNeedle","rtlSafeNeedleRotation","strokeWidth","halfStrokeWidth","needleLength","g","transform","path","className","needle","data-is-focusable","onFocus","e","_handleFocus","onBlur","_handleBlur","onMouseEnter","_handleMouseOver","onMouseMove","role","aria-label","_renderLegends","legends","title","hoverAction","onMouseOutAction","div","legendsContainer","centerLegends","onChange","_onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","_legendHighlighted","_getHighlightedLegend","includes","_noLegendHighlighted","focusEvent","_showCallout","_hideCallout","mouseEvent","hoveredElement","_handleMouseOut","_handleCalloutDismiss","isFocusEvent","clientX","clientY","target","currentTarget","boundingRect","getBoundingClientRect","yValue","_updatePosition","isBlurEvent","_wrapContent","content","id","maxWidth","textElement","text","node","isOverflowing","textLength","getComputedTextLength","_multiValueCallout","calloutProps","yValueHoverSubCountsExists","_yValueHoverSubCountsExists","YValueHover","calloutContentRoot","calloutDateTimeContainer","style","marginBottom","calloutContentX","xAxisCalloutAccessibilityData","culture","calloutInfoContainer","display","yValues","isLast","shouldDrawBorderBottom","callOutAccessibilityData","key","paddingBottom","_getCalloutContent","descriptionMessage","yValueHover","some","yAxisCalloutData","xValue","marginStyle","marginRight","toDrawShape","undefined","calloutBlockContainer","borderInlineStart","svgProps","shapeStyles","pathProps","fill","shape","Object","keys","calloutlegendText","calloutContentY","data","subcounts","subcountName","newX","newY","threshold","distance","sqrt","pow","_getChartTitle","focusAttributes","root","ref","el","chartWrapper","svg","chart","onMouseLeave","textAnchor","aria-hidden","limits","Fragment","opacity","ariaLabel","tabIndex","textProps","wrapContent","dominantBaseline","hideTooltip","customCallout","customizedCallout","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/GaugeChart/GaugeChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGaugeChartStyles } from './useGaugeChartStyles.styles';\nimport { select as d3Select } from 'd3-selection';\nimport { arc as d3Arc } from 'd3-shape';\nimport { YValueHover } from '../../index';\nimport {\n Points,\n areArraysEqual,\n formatScientificLimitWidth,\n getAccessibleDataObject,\n getColorFromToken,\n getNextColor,\n pointTypes,\n useRtl,\n} from '../../utilities/index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { SVGTooltipText } from '../../utilities/SVGTooltipText';\nimport { Legend, LegendShape, Legends, Shape, LegendContainer } from '../Legends/index';\nimport { GaugeChartVariant, GaugeValueFormat, GaugeChartProps, GaugeChartSegment } from './GaugeChart.types';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { ImageExportOptions } from '../../types/index';\nimport { toImage } from '../../utilities/image-export-utils';\n\nconst GAUGE_MARGIN = 16;\nconst LABEL_WIDTH = 36;\nconst LABEL_HEIGHT = 16;\nconst LABEL_OFFSET = 4;\nconst TITLE_OFFSET = 11;\nconst EXTRA_NEEDLE_LENGTH = 4;\nexport const ARC_PADDING = 2;\nexport const BREAKPOINTS = [\n { minRadius: 52, arcWidth: 12, fontSize: 20 },\n { minRadius: 70, arcWidth: 16, fontSize: 24 },\n { minRadius: 88, arcWidth: 20, fontSize: 32 },\n { minRadius: 106, arcWidth: 24, fontSize: 32 },\n { minRadius: 124, arcWidth: 28, fontSize: 40 },\n { minRadius: 142, arcWidth: 32, fontSize: 40 },\n];\n\nexport const calcNeedleRotation = (chartValue: number, minValue: number, maxValue: number) => {\n let needleRotation = ((chartValue - minValue) / (maxValue - minValue)) * 180;\n if (needleRotation < 0) {\n needleRotation = 0;\n } else if (needleRotation > 180) {\n needleRotation = 180;\n }\n\n return needleRotation;\n};\n\nexport const getSegmentLabel = (\n segment: ExtendedSegment,\n minValue: number,\n maxValue: number,\n variant?: GaugeChartVariant,\n isAriaLabel: boolean = false,\n) => {\n if (isAriaLabel) {\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.legend}, ${segment.size} out of ${maxValue} or ${((segment.size / maxValue) * 100).toFixed()}%`\n : `${segment.legend}, ${segment.start} to ${segment.end}`;\n }\n\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.size} (${((segment.size / maxValue) * 100).toFixed()}%)`\n : `${segment.start} - ${segment.end}`;\n};\n\nexport const getChartValueLabel = (\n chartValue: number,\n minValue: number,\n maxValue: number,\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string),\n forCallout: boolean = false,\n): string => {\n if (forCallout) {\n // When displaying the chart value as a percentage, use fractions in the callout, and vice versa.\n // This helps clarify the actual value and avoid repetition.\n return minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${((chartValue / maxValue) * 100).toFixed()}%`\n : `${chartValue}/${maxValue}`;\n }\n\n return typeof chartValueFormat === 'function'\n ? chartValueFormat([chartValue - minValue, maxValue - minValue])\n : minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${chartValue}/${maxValue}`\n : `${((chartValue / maxValue) * 100).toFixed()}%`;\n};\n\ninterface YValue extends Omit<YValueHover, 'y'> {\n y?: string | number;\n}\nexport interface ExtendedSegment extends GaugeChartSegment {\n start: number;\n end: number;\n}\n\nexport const GaugeChart: React.FunctionComponent<GaugeChartProps> = React.forwardRef<HTMLDivElement, GaugeChartProps>(\n (props, forwardedRef) => {\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _getMargins = () => {\n const { hideMinMax, chartTitle, sublabel } = props;\n return {\n left: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n right: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n top: (chartTitle ? TITLE_OFFSET + LABEL_HEIGHT : EXTRA_NEEDLE_LENGTH / 2) + GAUGE_MARGIN,\n bottom: (sublabel ? LABEL_OFFSET + LABEL_HEIGHT : 0) + GAUGE_MARGIN,\n };\n };\n const _margins: { left: number; right: number; top: number; bottom: number } = _getMargins();\n const _legendsHeight: number = !props.hideLegend ? 32 : 0;\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\n const _isRTL: boolean = useRtl();\n const [width, setWidth] = React.useState<number>(140 + _getMargins().left + _getMargins().right);\n const [height, setHeight] = React.useState<number>(70 + _getMargins().top + _getMargins().bottom + _legendsHeight);\n const [hoveredLegend, setHoveredLegend] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [focusedElement, setFocusedElement] = React.useState<string | undefined>('');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [hoverYValues, setHoverYValues] = React.useState<YValue[]>([]);\n const prevPropsRef = React.useRef<GaugeChartProps | null>(null);\n const _width = props.width || width;\n const _height = props.height || height;\n const _outerRadius: number = Math.min(\n (_width - (_margins.left + _margins.right)) / 2,\n _height - (_margins.top + _margins.bottom + _legendsHeight),\n );\n const { arcWidth, chartValueSize } = _getStylesBasedOnBreakpoint();\n const _innerRadius: number = _outerRadius - arcWidth;\n let _minValue!: number;\n let _maxValue!: number;\n let _segments!: ExtendedSegment[];\n let _calloutAnchor: string = '';\n\n React.useEffect(() => {\n if (_rootElem.current) {\n setWidth(_rootElem.current.clientWidth);\n setHeight(_rootElem.current.clientHeight);\n }\n }, []);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(_rootElem.current, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n const classes = useGaugeChartStyles(props);\n function _getStylesBasedOnBreakpoint() {\n for (let index = BREAKPOINTS.length - 1; index >= 0; index -= 1) {\n if (_outerRadius >= BREAKPOINTS[index].minRadius) {\n return {\n arcWidth: BREAKPOINTS[index].arcWidth,\n chartValueSize: BREAKPOINTS[index].fontSize,\n };\n }\n }\n return {\n arcWidth: BREAKPOINTS[0].arcWidth,\n chartValueSize: BREAKPOINTS[0].fontSize,\n };\n }\n\n function _processProps() {\n const { minValue = 0, maxValue, segments, roundCorners } = props;\n\n let total = minValue;\n const processedSegments: ExtendedSegment[] = segments.map(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (segment: { size: number; legend: any; color: string; accessibilityData: any }, index: number) => {\n const size = Math.max(segment.size, 0);\n total += size;\n return {\n legend: segment.legend,\n size,\n color:\n typeof segment.color !== 'undefined'\n ? getColorFromToken(segment.color, false)\n : getNextColor(index, 0, false),\n accessibilityData: segment.accessibilityData,\n start: total - size,\n end: total,\n };\n },\n );\n if (typeof maxValue !== 'undefined' && total < maxValue) {\n processedSegments.push({\n legend: 'Unknown',\n size: maxValue - total,\n color: 'neutralLight',\n start: total,\n end: maxValue,\n });\n total = maxValue;\n }\n\n const arcGenerator = d3Arc()\n .cornerRadius(roundCorners ? 3 : 0)\n .padAngle(ARC_PADDING / _outerRadius)\n .padRadius(_outerRadius);\n const rtlSafeSegments = _isRTL ? Array.from(processedSegments).reverse() : processedSegments;\n let prevAngle = -Math.PI / 2;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const arcs = rtlSafeSegments.map((segment, index) => {\n const endAngle = prevAngle + (segment.size / (total - minValue)) * Math.PI;\n const d = arcGenerator({\n innerRadius: _innerRadius,\n outerRadius: _outerRadius,\n startAngle: prevAngle,\n endAngle,\n })!;\n prevAngle = endAngle;\n return {\n d,\n segmentIndex: _isRTL ? processedSegments.length - 1 - index : index,\n startAngle: prevAngle - (segment.size / (total - minValue)) * Math.PI,\n endAngle,\n };\n });\n\n _minValue = minValue;\n _maxValue = total;\n _segments = processedSegments;\n\n return {\n arcs,\n };\n }\n\n function _renderNeedle() {\n const needleRotation = calcNeedleRotation(props.chartValue, _minValue, _maxValue);\n const rtlSafeNeedleRotation = _isRTL ? 180 - needleRotation : needleRotation;\n const strokeWidth = 2;\n const halfStrokeWidth = strokeWidth / 2;\n const needleLength = _outerRadius - _innerRadius + EXTRA_NEEDLE_LENGTH;\n\n return (\n <g transform={`rotate(${rtlSafeNeedleRotation}, 0, 0)`}>\n <path\n d={`\n M 0,${-halfStrokeWidth - 3}\n L ${-needleLength},${-halfStrokeWidth - 1}\n A ${halfStrokeWidth + 1},${halfStrokeWidth + 1},0,0,0,${-needleLength},${halfStrokeWidth + 1}\n L 0,${halfStrokeWidth + 3}\n A ${halfStrokeWidth + 3},${halfStrokeWidth + 3},0,0,0,0,${-halfStrokeWidth - 3}\n `}\n strokeWidth={strokeWidth}\n className={classes.needle}\n transform={`translate(${-_innerRadius + EXTRA_NEEDLE_LENGTH / 2})`}\n data-is-focusable={true}\n onFocus={e => _handleFocus(e, 'Needle')}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, 'Needle')}\n onMouseMove={e => _handleMouseOver(e, 'Needle')}\n role=\"img\"\n aria-label={\n 'Current value: ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)\n }\n />\n </g>\n );\n }\n\n function _renderLegends() {\n if (props.hideLegend) {\n return null;\n }\n\n const legends: Legend[] = _segments.map((segment, index) => {\n const color: string = segment.color || getNextColor(index, 0, false);\n\n return {\n title: segment.legend,\n color,\n hoverAction: () => {\n setHoveredLegend(segment.legend);\n },\n onMouseOutAction: () => {\n setHoveredLegend('');\n },\n };\n });\n\n return (\n <div className={classes.legendsContainer}>\n <Legends\n legends={legends}\n centerLegends\n {...props.legendProps}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n </div>\n );\n }\n\n function _onLegendSelectionChange(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _legendHighlighted(legend: string) {\n return _getHighlightedLegend().includes(legend!);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : hoveredLegend ? [hoveredLegend] : [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _handleFocus(focusEvent: React.FocusEvent<SVGElement>, focusedElement: string) {\n _showCallout(focusEvent, focusedElement, true);\n }\n\n function _handleBlur() {\n _hideCallout(true);\n }\n\n function _handleMouseOver(mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string) {\n _showCallout(mouseEvent, hoveredElement, false);\n }\n\n function _handleMouseOut() {\n _hideCallout(false);\n }\n\n function _handleCalloutDismiss() {\n _hideCallout(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _showCallout(\n event: React.MouseEvent<SVGElement, MouseEvent> | React.FocusEvent<SVGElement, Element>,\n legend: string,\n isFocusEvent: boolean,\n ) {\n if (_calloutAnchor === legend) {\n return;\n }\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in event) {\n clientX = event.clientX;\n clientY = event.clientY;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const target = event.currentTarget as HTMLElement | SVGElement;\n if (target && 'getBoundingClientRect' in target) {\n const boundingRect = target.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n }\n _calloutAnchor = legend;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverXValue: string =\n 'Current value is ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat, true);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverYValues: YValue[] = _segments.map(segment => {\n const yValue: YValue = {\n legend: segment.legend,\n y: getSegmentLabel(segment, _minValue, _maxValue, props.variant),\n color: segment.color,\n };\n return yValue;\n });\n _updatePosition(clientX, clientY);\n setPopoverOpen(\n ['Needle', 'Chart value'].includes(legend) || _noLegendHighlighted() || _legendHighlighted(legend),\n );\n setHoverXValue(hoverXValue);\n setHoverYValues(hoverYValues);\n if (isFocusEvent) {\n setFocusedElement(legend);\n }\n }\n\n function _hideCallout(isBlurEvent?: boolean) {\n _calloutAnchor = '';\n setPopoverOpen(false);\n setHoverXValue('');\n setHoverYValues([]);\n if (isBlurEvent) {\n setFocusedElement('');\n }\n }\n\n function _wrapContent(content: string, id: string, maxWidth: number) {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n }\n\n // TO DO: Write a common functional component for Multi value callout and divide sub count method\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _multiValueCallout(calloutProps: any) {\n const yValueHoverSubCountsExists: boolean = _yValueHoverSubCountsExists(calloutProps.YValueHover);\n return (\n <div className={classes.calloutContentRoot}>\n <div\n className={classes.calloutDateTimeContainer}\n style={yValueHoverSubCountsExists ? { marginBottom: '11px' } : {}}\n >\n <div\n className={classes.calloutContentX}\n {...getAccessibleDataObject(calloutProps!.xAxisCalloutAccessibilityData, 'text', false)}\n >\n {formatToLocaleString(calloutProps!.hoverXValue, props.culture) as React.ReactNode}\n </div>\n </div>\n <div className={classes.calloutInfoContainer} style={yValueHoverSubCountsExists ? { display: 'flex' } : {}}>\n {calloutProps!.YValueHover &&\n calloutProps!.YValueHover.map((yValue: YValueHover, index: number, yValues: YValueHover[]) => {\n const isLast: boolean = index + 1 === yValues.length;\n const { shouldDrawBorderBottom = false } = yValue;\n return (\n <div\n {...getAccessibleDataObject(yValue.callOutAccessibilityData, 'text', false)}\n key={`callout-content-${index}`}\n style={\n yValueHoverSubCountsExists\n ? {\n display: 'inline-block',\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n : {\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n }\n >\n {_getCalloutContent(yValue, index, yValueHoverSubCountsExists, isLast)}\n </div>\n );\n })}\n {!!calloutProps.descriptionMessage && (\n <div className={classes.descriptionMessage}>{calloutProps.descriptionMessage}</div>\n )}\n </div>\n </div>\n );\n }\n\n function _yValueHoverSubCountsExists(yValueHover?: YValueHover[]) {\n if (yValueHover) {\n return yValueHover.some(\n (yValue: {\n legend?: string;\n y?: number;\n color?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n }) => yValue.yAxisCalloutData && typeof yValue.yAxisCalloutData !== 'string',\n );\n }\n return false;\n }\n\n function _getCalloutContent(\n xValue: YValueHover,\n index: number,\n yValueHoverSubCountsExists: boolean,\n isLast: boolean,\n ): React.ReactNode {\n const marginStyle: React.CSSProperties = isLast ? {} : { marginRight: '16px' };\n const toDrawShape = xValue.index !== undefined && xValue.index !== -1;\n const { culture } = props;\n const yValue = formatToLocaleString(xValue.y, culture) as React.ReactNode;\n if (!xValue.yAxisCalloutData || typeof xValue.yAxisCalloutData === 'string') {\n return (\n <div style={yValueHoverSubCountsExists ? marginStyle : {}}>\n {yValueHoverSubCountsExists && (\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n )}\n <div\n id={`${index}_${xValue.y}`}\n className={classes.calloutBlockContainer}\n style={{ borderInlineStart: `4px solid ${xValue.color}` }}\n >\n {toDrawShape && (\n <Shape\n svgProps={{\n className: classes.shapeStyles,\n }}\n pathProps={{ fill: xValue.color }}\n shape={Points[xValue.index! % Object.keys(pointTypes).length] as LegendShape}\n style={{ display: 'flex' }}\n />\n )}\n <div>\n <div className={classes.calloutlegendText}> {xValue.legend}</div>\n <div className={classes.calloutContentY}>\n {\n formatToLocaleString(\n xValue.yAxisCalloutData ? xValue.yAxisCalloutData : xValue.y || xValue.data,\n culture,\n ) as React.ReactNode\n }\n </div>\n </div>\n </div>\n </div>\n );\n } else {\n const subcounts: { [id: string]: number } = xValue.yAxisCalloutData as { [id: string]: number };\n return (\n <div style={marginStyle}>\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n {Object.keys(subcounts).map((subcountName: string) => {\n return (\n <div key={subcountName} className={classes.calloutBlockContainer}>\n <div className={classes.calloutlegendText}>\n {' '}\n {formatToLocaleString(subcountName, culture) as React.ReactNode}\n </div>\n <div className={classes.calloutContentY}>\n {formatToLocaleString(subcounts[subcountName], culture) as React.ReactNode}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\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 function _getChartTitle(): string {\n const { chartTitle } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Gauge chart with ${_segments.length} segments. `;\n }\n const { arcs } = _processProps();\n const focusAttributes = useFocusableGroup();\n return (\n <div className={classes.root} ref={el => (_rootElem.current = el)}>\n <div className={classes.chartWrapper} {...focusAttributes}>\n <svg\n className={classes.chart}\n width={_width}\n height={_height - _legendsHeight}\n role=\"region\"\n aria-label={_getChartTitle()}\n onMouseLeave={_handleMouseOut}\n >\n <g transform={`translate(${_width / 2}, ${_height - (_margins.bottom + _legendsHeight)})`}>\n {props.chartTitle && (\n <text\n x={0}\n y={-(_outerRadius + TITLE_OFFSET)}\n textAnchor=\"middle\"\n className={classes.chartTitle}\n aria-hidden={true}\n >\n {props.chartTitle}\n </text>\n )}\n {!props.hideMinMax && (\n <>\n <text\n x={(_isRTL ? 1 : -1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"end\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Min value: ${_minValue}`}\n >\n {formatScientificLimitWidth(_minValue)}\n </text>\n <text\n x={(_isRTL ? -1 : 1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"start\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Max value: ${_maxValue}`}\n >\n {formatScientificLimitWidth(_maxValue)}\n </text>\n </>\n )}\n {arcs.map((arc, index) => {\n const segment = _segments[arc.segmentIndex];\n return (\n <React.Fragment key={index}>\n <path\n d={arc.d}\n strokeWidth={focusedElement === segment.legend ? ARC_PADDING : 0}\n className={classes.segment}\n fill={segment.color}\n opacity={_legendHighlighted(segment.legend) || _noLegendHighlighted() ? 1 : 0.1}\n {...getAccessibleDataObject(\n {\n ariaLabel: getSegmentLabel(segment, _minValue, _maxValue, props.variant, true),\n ...segment.accessibilityData,\n },\n 'img',\n true,\n )}\n onFocus={e => _handleFocus(e, segment.legend)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, segment.legend)}\n onMouseLeave={e => _handleCalloutDismiss()}\n onMouseMove={e => _handleMouseOver(e, segment.legend)}\n data-is-focusable={_legendHighlighted(segment.legend) || _noLegendHighlighted()}\n tabIndex={segment.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n })}\n {_renderNeedle()}\n <g\n onMouseEnter={e => _handleMouseOver(e, 'Chart value')}\n onMouseMove={e => _handleMouseOver(e, 'Chart value')}\n >\n <SVGTooltipText\n content={getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)}\n textProps={{\n x: 0,\n y: 0,\n textAnchor: 'middle',\n className: classes.chartValue,\n fontSize: chartValueSize,\n 'aria-hidden': 'true',\n }}\n maxWidth={_innerRadius * 2 - 24}\n wrapContent={_wrapContent}\n />\n </g>\n {props.sublabel && (\n <SVGTooltipText\n content={props.sublabel}\n textProps={{\n x: 0,\n y: 4,\n textAnchor: 'middle',\n dominantBaseline: 'hanging',\n className: classes.sublabel,\n }}\n maxWidth={_innerRadius * 2}\n wrapContent={_wrapContent}\n />\n )}\n </g>\n </svg>\n </div>\n {_renderLegends()}\n {!props.hideTooltip && isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n customCallout={{\n customizedCallout: _multiValueCallout({ hoverXValue: hoverXValue, YValueHover: hoverYValues }),\n }}\n />\n )}\n </div>\n );\n },\n);\nGaugeChart.displayName = 'GaugeChart';\n"],"names":["React","useGaugeChartStyles","select","d3Select","arc","d3Arc","Points","areArraysEqual","formatScientificLimitWidth","getAccessibleDataObject","getColorFromToken","getNextColor","pointTypes","useRtl","formatToLocaleString","SVGTooltipText","Legends","Shape","useFocusableGroup","ChartPopover","toImage","GAUGE_MARGIN","LABEL_WIDTH","LABEL_HEIGHT","LABEL_OFFSET","TITLE_OFFSET","EXTRA_NEEDLE_LENGTH","ARC_PADDING","BREAKPOINTS","minRadius","arcWidth","fontSize","calcNeedleRotation","chartValue","minValue","maxValue","needleRotation","getSegmentLabel","segment","variant","isAriaLabel","legend","size","toFixed","start","end","getChartValueLabel","chartValueFormat","forCallout","toString","GaugeChart","forwardRef","props","forwardedRef","_legendsRef","useRef","_getMargins","hideMinMax","chartTitle","sublabel","left","right","top","bottom","_margins","_legendsHeight","hideLegend","_rootElem","_isRTL","width","setWidth","useState","height","setHeight","hoveredLegend","setHoveredLegend","selectedLegends","setSelectedLegends","legendProps","focusedElement","setFocusedElement","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","hoverXValue","setHoverXValue","hoverYValues","setHoverYValues","prevPropsRef","_width","_height","_outerRadius","Math","min","chartValueSize","_getStylesBasedOnBreakpoint","_innerRadius","_minValue","_maxValue","_segments","_calloutAnchor","useEffect","current","clientWidth","clientHeight","prevProps","useImperativeHandle","componentRef","chartContainer","opts","toSVG","classes","index","length","_processProps","segments","roundCorners","total","processedSegments","map","max","color","accessibilityData","push","arcGenerator","cornerRadius","padAngle","padRadius","rtlSafeSegments","Array","from","reverse","prevAngle","PI","arcs","endAngle","d","innerRadius","outerRadius","startAngle","segmentIndex","_renderNeedle","rtlSafeNeedleRotation","strokeWidth","halfStrokeWidth","needleLength","g","transform","path","className","needle","data-is-focusable","onFocus","e","_handleFocus","onBlur","_handleBlur","onMouseEnter","_handleMouseOver","onMouseMove","role","aria-label","_renderLegends","legends","title","hoverAction","onMouseOutAction","div","legendsContainer","centerLegends","onChange","_onLegendSelectionChange","legendRef","event","currentLegend","canSelectMultipleLegends","slice","_legendHighlighted","_getHighlightedLegend","includes","_noLegendHighlighted","focusEvent","_showCallout","_hideCallout","mouseEvent","hoveredElement","_handleMouseOut","_handleCalloutDismiss","isFocusEvent","clientX","clientY","target","currentTarget","boundingRect","getBoundingClientRect","yValue","_updatePosition","isBlurEvent","_wrapContent","content","id","maxWidth","textElement","text","node","isOverflowing","textLength","getComputedTextLength","_multiValueCallout","calloutProps","yValueHoverSubCountsExists","_yValueHoverSubCountsExists","YValueHover","calloutContentRoot","calloutDateTimeContainer","style","marginBottom","calloutContentX","xAxisCalloutAccessibilityData","culture","calloutInfoContainer","display","yValues","isLast","shouldDrawBorderBottom","callOutAccessibilityData","key","paddingBottom","_getCalloutContent","descriptionMessage","yValueHover","some","yAxisCalloutData","xValue","marginStyle","marginRight","toDrawShape","undefined","calloutBlockContainer","borderInlineStart","svgProps","shapeStyles","pathProps","fill","shape","Object","keys","calloutlegendText","calloutContentY","data","subcounts","subcountName","newX","newY","threshold","distance","sqrt","pow","_getChartTitle","focusAttributes","root","ref","el","chartWrapper","svg","chart","onMouseLeave","textAnchor","aria-hidden","limits","Fragment","opacity","ariaLabel","tabIndex","textProps","wrapContent","dominantBaseline","hideTooltip","customCallout","customizedCallout","displayName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GaugeChart.types.ts"],"sourcesContent":["import { LegendsProps } from '../Legends/index';\nimport { AccessibilityProps, Chart } from '../../types/index';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Gradient color of the segment\n */\n gradient?: [string, string];\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeValueFormat = 'percentage' | 'fraction';\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeChartVariant = 'single-segment' | 'multiple-segments';\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartProps {\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: GaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);\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 * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: GaugeChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ChartPopoverProps>;\n\n /**\n * Specifies the variant of GaugeChart to be rendered\n * @defaultvalue GaugeChartVariant.MultipleSegments\n */\n variant?: GaugeChartVariant;\n\n /**\n * Prop to enable the gradient in the chart\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * Prop to enable the round corners in the chart\n * @default false\n */\n roundCorners?: boolean;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<Chart>;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartStyles {\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 the min and max values\n */\n limits?: string;\n\n /**\n * Styles for the chart value\n */\n chartValue?: string;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: string;\n\n /**\n * Styles for the needle\n */\n needle?: string;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: string;\n\n /**\n * Styles for the segments\n */\n segment?: string;\n\n /**\n * Styles for gradient segments\n */\n gradientSegment?: string;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: string;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: string;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: string;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: string;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: string;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: string;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: string;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: string;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: string;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: string;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: string;\n}\n"],"names":[],"mappings":"AAgKA;;;CAGC,GACD,WAoGC"}
|
|
1
|
+
{"version":3,"sources":["../src/components/GaugeChart/GaugeChart.types.ts"],"sourcesContent":["import { LegendsProps } from '../Legends/index';\nimport { AccessibilityProps, Chart } from '../../types/index';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Gradient color of the segment\n */\n gradient?: [string, string];\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeValueFormat = 'percentage' | 'fraction';\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeChartVariant = 'single-segment' | 'multiple-segments';\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartProps {\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: GaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);\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 * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: GaugeChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ChartPopoverProps>;\n\n /**\n * Specifies the variant of GaugeChart to be rendered\n * @defaultvalue GaugeChartVariant.MultipleSegments\n */\n variant?: GaugeChartVariant;\n\n /**\n * Prop to enable the gradient in the chart\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * Prop to enable the round corners in the chart\n * @default false\n */\n roundCorners?: boolean;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<Chart>;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartStyles {\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 the min and max values\n */\n limits?: string;\n\n /**\n * Styles for the chart value\n */\n chartValue?: string;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: string;\n\n /**\n * Styles for the needle\n */\n needle?: string;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: string;\n\n /**\n * Styles for the segments\n */\n segment?: string;\n\n /**\n * Styles for gradient segments\n */\n gradientSegment?: string;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: string;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: string;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: string;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: string;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: string;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: string;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: string;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: string;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: string;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: string;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: string;\n}\n"],"names":[],"mappings":"AAgKA;;;CAGC,GACD,WAoGC"}
|