@fluentui/react-charts 0.0.0-nightly-20250930-0405.1 → 0.0.0-nightly-20251002-0406.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -15
- package/lib/components/AreaChart/AreaChart.js +1 -0
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +1 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.js +1 -0
- package/lib/components/ChartTable/ChartTable.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.js +2 -0
- package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +1 -0
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +1 -0
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.js +1 -0
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +2 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +1 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +2 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +1 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +1 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +1 -0
- 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/DonutChart/Arc/Arc.js +1 -0
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js +2 -0
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +1 -0
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +1 -0
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/DonutChart/Pie/Pie.js +1 -0
- package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib/components/DonutChart/Pie/usePieStyles.styles.js +2 -0
- package/lib/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js +1 -0
- package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +2 -0
- package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +1 -0
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js +1 -0
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +2 -0
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +1 -0
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +1 -0
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +1 -0
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +2 -0
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +1 -0
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -0
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +1 -0
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +1 -0
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +2 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +1 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js +1 -0
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +2 -0
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +1 -0
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +2 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +1 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib/components/Legends/Legends.js +1 -0
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/Legends/OverflowMenu.js +1 -0
- package/lib/components/Legends/OverflowMenu.js.map +1 -1
- package/lib/components/Legends/shape.js +1 -0
- package/lib/components/Legends/shape.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.js +2 -0
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.raw.js +1 -0
- package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +1 -0
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/LabelLink.js +1 -0
- package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/Textbox.js +1 -0
- package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +2 -0
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +1 -0
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js +1 -0
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +2 -0
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +1 -0
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -1
- package/lib/components/ResponsiveContainer/withResponsiveContainer.js +1 -0
- package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +1 -0
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +2 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +1 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +1 -0
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +2 -0
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +1 -0
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib/components/Sparkline/Sparkline.js +1 -0
- package/lib/components/Sparkline/Sparkline.js.map +1 -1
- package/lib/components/Sparkline/useSparklineStyles.styles.js +2 -0
- package/lib/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
- package/lib/components/Sparkline/useSparklineStyles.styles.raw.js +1 -0
- package/lib/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +1 -0
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +2 -0
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +1 -0
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +1 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib/utilities/FocusableTooltipText.js +1 -0
- package/lib/utilities/FocusableTooltipText.js.map +1 -1
- package/lib/utilities/SVGTooltipText.js +1 -0
- package/lib/utilities/SVGTooltipText.js.map +1 -1
- package/lib/utilities/image-export-utils.js +1 -0
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.js +1 -0
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +1 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js +1 -0
- package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +1 -0
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.js +1 -0
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +1 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +1 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +2 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +2 -1
- 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/DonutChart/Arc/Arc.js +1 -0
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +1 -0
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +2 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.js +2 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +1 -0
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +1 -0
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +1 -0
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +1 -0
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js +1 -0
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +1 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +1 -0
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +1 -0
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +1 -0
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.js +1 -0
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/Legends/OverflowMenu.js +1 -0
- package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
- package/lib-commonjs/components/Legends/shape.js +1 -0
- package/lib-commonjs/components/Legends/shape.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +1 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +1 -0
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +1 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +1 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +1 -0
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +1 -0
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -0
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js +2 -1
- package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +1 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +1 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +1 -0
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/Sparkline/Sparkline.js +1 -0
- package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +1 -0
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -0
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/FocusableTooltipText.js +2 -1
- package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/SVGTooltipText.js +1 -0
- package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.js +1 -0
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +1 -0
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/HeatMapChart/HeatMapChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { HeatMapChartProps } from './HeatMapChart.types';\nimport {\n AccessibilityProps,\n Chart,\n HeatMapChartData,\n HeatMapChartDataPoint,\n Margins,\n ImageExportOptions,\n} from '../../types/index';\nimport {\n ChartTypes,\n getAccessibleDataObject,\n getColorContrast,\n getTypeOfAxis,\n resolveCSSVariables,\n XAxisTypes,\n YAxisType,\n createNumericYAxis,\n IMargins,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n useRtl,\n sortAxisCategories,\n} from '../../utilities/index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { CartesianChart, ChartPopoverProps, ChildProps } from '../CommonComponents/index';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { useHeatMapChartStyles } from './useHeatMapChartStyles.styles';\nimport { Legend, Legends, LegendContainer } from '../Legends/index';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { timeFormat as d3TimeFormat } from 'd3-time-format';\nimport { toImage } from '../../utilities/image-export-utils';\n\ntype DataSet = {\n dataSet: RectanglesGraphData;\n yAxisPoints: string[];\n xAxisPoints: string[];\n};\ntype FlattenData = HeatMapChartDataPoint & {\n legend: string;\n};\ntype RectanglesGraphData = { [key: string]: FlattenData[] };\n\nexport const HeatMapChart: React.FunctionComponent<HeatMapChartProps> = React.forwardRef<\n HTMLDivElement,\n HeatMapChartProps\n>(\n (\n props = {\n xAxisCategoryOrder: 'default',\n yAxisCategoryOrder: 'default',\n data: [],\n domainValuesForColorScale: [],\n rangeValuesForColorScale: [],\n },\n forwardedRef,\n ) => {\n const classes = useHeatMapChartStyles(props);\n const _stringXAxisDataPoints = React.useRef<string[]>([]);\n const _stringYAxisDataPoints = React.useRef<string[]>([]);\n const _dataSet = React.useRef<RectanglesGraphData>({});\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _colorScale = React.useRef<any>();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _xAxisScale = React.useRef<any>();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _yAxisScale = React.useRef<any>();\n const _xAxisType = React.useRef<XAxisTypes>();\n const _yAxisType = React.useRef<YAxisType>();\n const _calloutAnchorPoint = React.useRef<FlattenData | null>(null);\n const _emptyChartId = useId('_HeatMap_empty');\n const _margins = React.useRef<Margins>({});\n const cartesianChartRef = React.useRef<Chart>(null);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRtl = useRtl();\n\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [calloutTextColor, setCalloutTextColor] = React.useState<string>('');\n const [calloutYValue, setCalloutYValue] = React.useState<string>('');\n const [ratio, setRatio] = React.useState<[number, number]>();\n const [descriptionMessage, setDescriptionMessage] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\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 function _getMinMaxOfYAxis() {\n return { startValue: 0, endValue: 0 };\n }\n\n function _getDomainNRangeValues(\n points: HeatMapChartDataPoint[],\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(_margins.current, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n const _getXandY = (): { x: string | Date | number; y: string | Date | number } => {\n let x: string | Date | number = '';\n let y: string | Date | number = '';\n props.data.forEach((item: HeatMapChartData) => {\n if (item.data && item.data.length > 0) {\n x = item.data[0].x;\n y = item.data[0].y;\n return { x, y };\n }\n });\n return { x, y };\n };\n\n const _getMargins = (margins: Margins) => {\n _margins.current = margins;\n };\n\n const _getOpacity = (legendTitle: string): string => {\n const opacity = _legendHighlighted(legendTitle) || _noLegendHighlighted() ? '1' : '0.1';\n return opacity;\n };\n\n const _onRectFocus = (id: string, data: FlattenData, focusEvent: React.FocusEvent<SVGGElement>): void => {\n const boundingRect = focusEvent.currentTarget.getBoundingClientRect();\n const clientX = boundingRect.left + boundingRect.width / 2;\n const clientY = boundingRect.top + boundingRect.height / 2;\n updatePosition(clientX, clientY);\n /** Show the callout if highlighted rectangle is focused and Hide it if unhighlighted rectangle is focused */\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setCalloutYValue(`${data.rectText}`);\n setCalloutTextColor(Number.isNaN(data.value) ? tokens.colorNeutralForeground1 : _colorScale.current(data.value));\n setCalloutLegend(data.legend);\n setRatio(data.ratio);\n setDescriptionMessage(data.descriptionMessage || '');\n setCallOutAccessibilityData(data.callOutAccessibilityData);\n };\n\n const _onRectMouseOver = (id: string, data: FlattenData, mouseEvent: React.MouseEvent<SVGGElement>): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint.current !== data) {\n _calloutAnchorPoint.current = data;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n /** Show the callout if highlighted rectangle is hovered and Hide it if unhighlighted rectangle is hovered */\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setCalloutYValue(`${data.rectText}`);\n setCalloutTextColor(\n Number.isNaN(data.value) ? tokens.colorNeutralForeground1 : _colorScale.current(data.value),\n );\n setCalloutLegend(data.legend);\n setRatio(data.ratio);\n setDescriptionMessage(data.descriptionMessage || '');\n setCallOutAccessibilityData(data.callOutAccessibilityData);\n }\n };\n\n const _onRectBlurOrMouseOut = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint.current = null;\n setPopoverOpen(false);\n };\n\n const _getInvertedTextColor = (color: string): string => {\n return color === tokens.colorNeutralForeground1 ? tokens.colorNeutralBackground1 : tokens.colorNeutralForeground1;\n };\n\n /**\n * This is the function which is responsible for\n * drawing the rectangle in the graph and also\n * attaching dom events to that rectangles\n */\n const _createRectangles = (): React.ReactNode => {\n const rectangles: JSXElement[] = [];\n const yAxisDataPoints = _stringYAxisDataPoints.current.slice().reverse();\n /**\n * yAxisDataPoint is noting but the DataPoint\n * which will be rendered on the y-axis\n */\n yAxisDataPoints.forEach((yAxisDataPoint: string) => {\n let index = 0;\n _stringXAxisDataPoints.current.forEach((xAxisDataPoint: string) => {\n let rectElement: JSXElement;\n const id = `x${xAxisDataPoint}y${yAxisDataPoint}`;\n if (\n _dataSet.current[yAxisDataPoint][index]?.x === xAxisDataPoint &&\n typeof _dataSet.current[yAxisDataPoint][index]?.value === 'number'\n ) {\n /**\n * dataPointObject is an object where it contains information on single\n * data point such as x, y , value, rectText property of the rectangle\n */\n const dataPointObject = _dataSet.current[yAxisDataPoint][index];\n let styleRules = '';\n let foregroundColor = tokens.colorNeutralForeground1;\n if (cartesianChartRef.current?.chartContainer) {\n styleRules = resolveCSSVariables(cartesianChartRef.current.chartContainer, foregroundColor);\n }\n const contrastRatio = getColorContrast(styleRules, _colorScale.current(dataPointObject.value));\n if (contrastRatio < 3) {\n foregroundColor = _getInvertedTextColor(foregroundColor);\n }\n rectElement = (\n <g\n key={id}\n role=\"img\"\n aria-label={_getAriaLabel(dataPointObject)}\n tabIndex={_legendHighlighted(dataPointObject.legend) || _noLegendHighlighted() ? 0 : -1}\n fillOpacity={_getOpacity(dataPointObject.legend)}\n transform={`translate(${_xAxisScale.current(dataPointObject.x)}, ${_yAxisScale.current(\n dataPointObject.y,\n )})`}\n onFocus={e => _onRectFocus(id, dataPointObject, e)}\n onBlur={_onRectBlurOrMouseOut}\n onMouseOver={e => _onRectMouseOver(id, dataPointObject, e)}\n onMouseOut={_onRectBlurOrMouseOut}\n >\n <rect\n fill={_colorScale.current(dataPointObject.value)}\n width={_xAxisScale.current.bandwidth()}\n height={_yAxisScale.current.bandwidth()}\n onClick={dataPointObject.onClick}\n />\n <text\n dominantBaseline={'middle'}\n textAnchor={'middle'}\n className={classes.text}\n transform={`translate(${_xAxisScale.current.bandwidth() / 2}, ${\n _yAxisScale.current.bandwidth() / 2\n })`}\n fill={foregroundColor}\n >\n {formatToLocaleString(dataPointObject.rectText, props.culture, props.useUTC) as React.ReactNode}\n </text>\n </g>\n );\n index++;\n } else {\n const dataPointObject: FlattenData = {\n x: xAxisDataPoint,\n y: yAxisDataPoint,\n value: NaN,\n rectText: 'No data available',\n legend: '',\n };\n rectElement = (\n <g\n key={id}\n role=\"img\"\n aria-label={_getAriaLabel(dataPointObject)}\n tabIndex={_noLegendHighlighted() ? 0 : -1}\n transform={`translate(${_xAxisScale.current(dataPointObject.x)}, ${_yAxisScale.current(\n dataPointObject.y,\n )})`}\n onFocus={e => _onRectFocus(id, dataPointObject, e)}\n onBlur={_onRectBlurOrMouseOut}\n onMouseOver={e => _onRectMouseOver(id, dataPointObject, e)}\n onMouseOut={_onRectBlurOrMouseOut}\n >\n <rect\n fill=\"transparent\"\n width={_xAxisScale.current.bandwidth()}\n height={_yAxisScale.current.bandwidth()}\n />\n </g>\n );\n }\n rectangles.push(rectElement);\n });\n });\n return rectangles;\n };\n /**\n * when the legend is hovered we need to highlight\n * all the rectangles which fall under that category\n * and un-highlight the rest of them\n * @param legendTitle\n */\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n /**\n * when the mouse is out from the legend , we need\n * to show the graph in initial mode.\n */\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n /**\n * @param legendTitle\n * when the legend is clicked we need to highlight\n * all the rectangles which fall under that category\n * and un highlight the rest of them\n */\n const _onLegendClick = (legendTitle: string): void => {\n /**\n * check if the legend is already selceted,\n * if yes, un-select the legend, else\n * set the selected legend state to legendTitle\n */\n if (selectedLegend === legendTitle) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(legendTitle);\n }\n };\n const _createLegendBars = (): JSXElement => {\n const { data, legendProps } = props;\n const legends: Legend[] = [];\n data.forEach((item: HeatMapChartData) => {\n const legend: Legend = {\n title: item.legend,\n color: _colorScale.current(item.value),\n action: () => {\n _onLegendClick(item.legend);\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(item.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n legends.push(legend);\n });\n return <Legends {...legendProps} legends={legends} legendRef={_legendsRef} />;\n };\n\n const _getColorScale = () => {\n const { domainValuesForColorScale, rangeValuesForColorScale } = props;\n return d3ScaleLinear()\n .domain(domainValuesForColorScale)\n .range(rangeValuesForColorScale as unknown as number[]);\n };\n\n const _getXIndex = (value: string | Date | number): string => {\n if (_xAxisType.current === XAxisTypes.DateAxis) {\n return `${(value as Date).getTime()}`;\n } else if (_xAxisType.current === XAxisTypes.StringAxis) {\n return value as string;\n } else if (_xAxisType.current === XAxisTypes.NumericAxis) {\n return `${value}`;\n } else {\n return '';\n }\n };\n const _getYIndex = (value: string | Date | number): string => {\n if (_yAxisType.current === YAxisType.DateAxis) {\n return `${(value as Date).getTime()}`;\n } else if (_yAxisType.current === YAxisType.StringAxis) {\n return value as string;\n } else if (_yAxisType.current === YAxisType.NumericAxis) {\n return `${value}`;\n } else {\n return '';\n }\n };\n\n const { xAxisStringFormatter } = props;\n const _getFormattedLabelForXAxisDataPoint = React.useCallback(\n (point: string): string => {\n return xAxisStringFormatter ? xAxisStringFormatter(point) : point;\n },\n [xAxisStringFormatter],\n );\n\n const { yAxisStringFormatter } = props;\n const _getFormattedLabelForYAxisDataPoint = React.useCallback(\n (point: string): string => {\n return yAxisStringFormatter ? yAxisStringFormatter(point) : point;\n },\n [yAxisStringFormatter],\n );\n\n /**\n * This function will return the final sorted and formatted x-axis points\n * which will be rendered on the x-axis\n * @param points\n * @returns x-axis points\n */\n const _getXAxisDataPoints = React.useCallback(\n (points: { [key: string]: '1' }): string[] => {\n let xAxisPoints: string[] = [];\n const unFormattedXAxisDataPoints = _getOrderedXAxisLabels(points);\n xAxisPoints = unFormattedXAxisDataPoints.map((xPoint: string) => {\n if (_xAxisType.current === XAxisTypes.DateAxis) {\n return _getStringFormattedDate(xPoint, props.xAxisDateFormatString);\n } else if (_xAxisType.current === XAxisTypes.NumericAxis) {\n return _getStringFormattedNumber(xPoint, props.xAxisNumberFormatString);\n } else {\n return _getFormattedLabelForXAxisDataPoint(xPoint);\n }\n });\n\n return xAxisPoints;\n },\n [\n _getFormattedLabelForXAxisDataPoint,\n props.sortOrder,\n props.xAxisDateFormatString,\n props.xAxisNumberFormatString,\n ],\n );\n\n /**\n * This function will return the final sorted and formatted y-axis points\n * which will be rendered on the y-axis\n * @param points\n * @returns yaxis points\n */\n const _getYAxisDataPoints = React.useCallback(\n (points: { [key: string]: '1' }): string[] => {\n let yAxisPoints: string[] = [];\n const unFormattedYAxisDataPoints = _getOrderedYAxisLabels(points);\n yAxisPoints = unFormattedYAxisDataPoints.map((yPoint: string) => {\n if (_yAxisType.current === YAxisType.DateAxis) {\n return _getStringFormattedDate(yPoint, props.yAxisDateFormatString);\n } else if (_yAxisType.current === YAxisType.NumericAxis) {\n return _getStringFormattedNumber(yPoint, props.yAxisNumberFormatString);\n } else {\n return _getFormattedLabelForYAxisDataPoint(yPoint);\n }\n });\n\n return yAxisPoints;\n },\n [\n _getFormattedLabelForYAxisDataPoint,\n props.sortOrder,\n props.yAxisDateFormatString,\n props.yAxisNumberFormatString,\n ],\n );\n\n /**\n * This will create a new data set based on the prop\n * @data\n * We will be using This data set to contsruct our rectangles\n * in the chart, we use this data set becuase, when we loop in this\n * data and build the heat map, it will support accessibility as\n * specified in the figma\n */\n\n const _createNewDataSet = React.useCallback(\n (\n data: HeatMapChartData[],\n xAxisDateFormatString: string | undefined,\n xAxisNumberFormatString: string | undefined,\n yAxisDateFormatString: string | undefined,\n yAxisNumberFormatString: string | undefined,\n ): DataSet => {\n /**\n * please do not destructure any of the props here,\n * instead send them as parameter to this functions so that\n * this functions get called whenever the prop changes\n */\n const flattenData: FlattenData[] = [];\n /**\n * below for each loop will store all the datapoints in the one array.\n * basically it will flatten the nestesd array (data prop) into single array\n * of object. where each object contains x, y, rectText , value and legend propety of single\n * data point.\n */\n data.forEach((item: HeatMapChartData) => {\n item.data.forEach((point: HeatMapChartDataPoint) => {\n flattenData.push({ ...point, legend: item.legend });\n });\n });\n const yPoints: RectanglesGraphData = {};\n const uniqueYPoints: { [key: string]: '1' } = {};\n const uniqueXPoints: { [key: string]: '1' } = {};\n flattenData.forEach((item: FlattenData) => {\n const posX = _getXIndex(item.x);\n const posY = _getYIndex(item.y);\n\n uniqueXPoints[posX] = '1';\n uniqueYPoints[posY] = '1';\n /** we will check if the property(posY) is already there in object, if Yes,\n * then we will append the item in the Array related to the pos, if not\n * then we will simply append the item in the new Array and\n * assign that array to the property (posY) in the Object\n * and finally we will get the array of Objects associated to each\n * property (which is nothing but y data point) and object in the\n * array are noting but x data points associated to the property y\n */\n if (yPoints[posY]) {\n yPoints[posY] = [...yPoints[posY], item];\n } else {\n yPoints[posY] = [item];\n }\n });\n /**\n * we will now sort(ascending) the array's of y data point based on the x value\n * sorting is important to achive the accessibility order of the\n * rectangles and then format the x and y datapoints respectively\n */\n Object.keys(yPoints).forEach((item: string) => {\n yPoints[item] = _getOrderedXPoints(yPoints[item]);\n\n yPoints[item].forEach((datapoint: HeatMapChartDataPoint) => {\n if (_xAxisType.current === XAxisTypes.DateAxis) {\n datapoint.x = _getStringFormattedDate(datapoint.x as string, xAxisDateFormatString);\n }\n if (_xAxisType.current === XAxisTypes.NumericAxis) {\n datapoint.x = _getStringFormattedNumber(datapoint.x as string, xAxisNumberFormatString);\n }\n if (_xAxisType.current === XAxisTypes.StringAxis) {\n datapoint.x = _getFormattedLabelForXAxisDataPoint(datapoint.x as string);\n }\n if (_yAxisType.current === YAxisType.DateAxis) {\n datapoint.y = _getStringFormattedDate(datapoint.y as string, yAxisDateFormatString);\n }\n if (_yAxisType.current === YAxisType.NumericAxis) {\n datapoint.y = _getStringFormattedNumber(datapoint.y as string, yAxisNumberFormatString);\n }\n if (_yAxisType.current === YAxisType.StringAxis) {\n datapoint.y = _getFormattedLabelForYAxisDataPoint(datapoint.y as string);\n }\n });\n });\n /**\n * if y-axis data points are of type date or number or if we have string formatter,\n * then we need to change data points to their respective string\n * format, becuase in the private variable _stringYAxisDatapoints, points will be stored in\n * string format. and in here `yPoint` are not so we need to change, so that\n * function `_createRectangles` should work perfetcly while looping, and if we don't change\n * then `_createRectangles` will fail while looping, causing the error\n * Cannot read property 'forEach' of undefined\n */\n\n Object.keys(yPoints).forEach((yPoint: string) => {\n if (_yAxisType.current === YAxisType.DateAxis) {\n yPoints[_getStringFormattedDate(yPoint, yAxisDateFormatString)] = yPoints[yPoint];\n } else if (_yAxisType.current === YAxisType.NumericAxis) {\n yPoints[`${_getStringFormattedNumber(yPoint, yAxisNumberFormatString)}`] = yPoints[yPoint];\n } else {\n yPoints[_getFormattedLabelForYAxisDataPoint(yPoint)] = yPoints[yPoint];\n }\n });\n /**\n * assigning new data set\n */\n const dataSet = yPoints;\n /**\n * These are the Y axis data points which will get rendered in the\n * Y axis in graph\n */\n const yAxisPoints = _getYAxisDataPoints(uniqueYPoints);\n /**\n * These are the x axis data points which will get rendered in the\n * x axis in the graph\n */\n\n const xAxisPoints = _getXAxisDataPoints(uniqueXPoints);\n return {\n dataSet,\n yAxisPoints,\n xAxisPoints,\n };\n },\n [\n _getFormattedLabelForXAxisDataPoint,\n _getFormattedLabelForYAxisDataPoint,\n _getXAxisDataPoints,\n _getYAxisDataPoints,\n props.sortOrder,\n ],\n );\n\n const _getStringFormattedDate = (point: string, formatString?: string): string => {\n const date = new Date();\n date.setTime(+point);\n return d3TimeFormat(formatString || '%b/%d')(date);\n };\n\n const _getStringFormattedNumber = (point: string, formatString?: string): string => {\n return d3Format(formatString || '.2~s')(+point);\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 const _legendHighlighted = (legendTitle: string) => {\n return selectedLegend === legendTitle || (selectedLegend === '' && activeLegend === legendTitle);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n const _noLegendHighlighted = () => {\n return selectedLegend === '' && activeLegend === '';\n };\n\n const _getAriaLabel = (point: FlattenData): string => {\n const xValue = point.x;\n const yValue = point.y;\n const legend = point.legend;\n const zValue = point.ratio ? `${point.ratio[0]}/${point.ratio[1]}` : point.rectText || point.value;\n const description = point.descriptionMessage;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${xValue}, ${yValue}. ${legend}, ${zValue}.` + (description ? ` ${description}.` : '')\n );\n };\n\n const _isChartEmpty = (): boolean => {\n return !(props.data && props.data.length > 0);\n };\n\n const _getChartTitle = (): string => {\n const { chartTitle } = props;\n const numDataPoints = props.data.reduce((acc, curr) => acc + curr.data.length, 0);\n return (chartTitle ? `${chartTitle}. ` : '') + `Heat map chart with ${numDataPoints} data points. `;\n };\n\n const _getOrderedXAxisLabels = (points: { [key: string]: '1' }) => {\n if (!_shouldOrderXAxisLabelsByCategoryOrder()) {\n // Keep the original ordering logic as the default behavior to ensure backward compatibility\n return Object.keys(points).sort((a: string, b: string) => {\n if (_xAxisType.current === XAxisTypes.DateAxis || _xAxisType.current === XAxisTypes.NumericAxis) {\n return +a - +b;\n } else {\n return props.sortOrder === 'none' ? 0 : a.toLowerCase() > b.toLowerCase() ? 1 : -1;\n }\n });\n }\n\n return sortAxisCategories(_mapCategoryToValues(), props.xAxisCategoryOrder);\n };\n\n const _getOrderedYAxisLabels = (points: { [key: string]: '1' }) => {\n if (!_shouldOrderYAxisLabelsByCategoryOrder()) {\n // Keep the original ordering logic as the default behavior to ensure backward compatibility\n return Object.keys(points).sort((a: string, b: string) => {\n if (_yAxisType.current === YAxisType.DateAxis || _yAxisType.current === YAxisType.NumericAxis) {\n return +a - +b;\n } else {\n return props.sortOrder === 'none' ? 0 : a.toLowerCase() > b.toLowerCase() ? 1 : -1;\n }\n });\n }\n\n return sortAxisCategories(_mapCategoryToValues(true), props.yAxisCategoryOrder);\n };\n\n const _getOrderedXPoints = (xPoints: FlattenData[]) => {\n if (!_shouldOrderXAxisLabelsByCategoryOrder()) {\n return xPoints.sort((a: HeatMapChartDataPoint, b: HeatMapChartDataPoint) => {\n if (_xAxisType.current === XAxisTypes.StringAxis) {\n return props.sortOrder === 'none'\n ? 0\n : (a.x as string).toLowerCase() > (b.x as string).toLowerCase()\n ? 1\n : -1;\n } else if (_xAxisType.current === XAxisTypes.DateAxis) {\n return (a.x as Date).getTime() - (b.x as Date).getTime();\n } else if (_xAxisType.current === XAxisTypes.NumericAxis) {\n return +(a.x as string) > +(b.x as string) ? 1 : -1;\n } else {\n return a.x > b.x ? 1 : -1;\n }\n });\n }\n\n const result: FlattenData[] = [];\n\n const xValueToPoints: Record<string, FlattenData[]> = {};\n xPoints.forEach(point => {\n const xValue = point.x as string;\n if (!xValueToPoints[xValue]) {\n xValueToPoints[xValue] = [];\n }\n xValueToPoints[xValue].push(point);\n });\n\n const xAxisLabels = _getOrderedXAxisLabels({});\n xAxisLabels.forEach(xValue => {\n if (xValueToPoints[xValue]) {\n result.push(...xValueToPoints[xValue]);\n }\n });\n\n return result;\n };\n\n const _shouldOrderXAxisLabelsByCategoryOrder = () => {\n return _xAxisType.current === XAxisTypes.StringAxis && props.xAxisCategoryOrder !== 'default';\n };\n\n const _shouldOrderYAxisLabelsByCategoryOrder = () => {\n return _yAxisType.current === YAxisType.StringAxis && props.yAxisCategoryOrder !== 'default';\n };\n\n const _mapCategoryToValues = (isYAxis = false) => {\n const categoryToValues: Record<string, number[]> = {};\n props.data.forEach(item => {\n item.data.forEach(point => {\n const category = (isYAxis ? point.y : point.x) as string;\n if (!categoryToValues[category]) {\n categoryToValues[category] = [];\n }\n categoryToValues[category].push(point.value);\n });\n });\n return categoryToValues;\n };\n\n const 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 }\n };\n\n const { x, y } = _getXandY();\n _xAxisType.current = getTypeOfAxis(x, true) as XAxisTypes;\n _yAxisType.current = getTypeOfAxis(y, false) as YAxisType;\n const { data, xAxisDateFormatString, xAxisNumberFormatString, yAxisDateFormatString, yAxisNumberFormatString } =\n props;\n _colorScale.current = _getColorScale();\n const { dataSet, xAxisPoints, yAxisPoints } = React.useMemo(\n () =>\n _createNewDataSet(\n data,\n xAxisDateFormatString,\n xAxisNumberFormatString,\n yAxisDateFormatString,\n yAxisNumberFormatString,\n ),\n [\n _createNewDataSet,\n data,\n xAxisDateFormatString,\n xAxisNumberFormatString,\n yAxisDateFormatString,\n yAxisNumberFormatString,\n ],\n );\n _dataSet.current = dataSet;\n _stringYAxisDataPoints.current = yAxisPoints;\n _stringXAxisDataPoints.current = xAxisPoints;\n const calloutProps: ChartPopoverProps = {\n ...props.calloutProps,\n isPopoverOpen,\n YValue: calloutYValue,\n legend: calloutLegend,\n color: calloutTextColor,\n ratio,\n descriptionMessage,\n clickPosition,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n styles: {\n calloutContentRoot: classes.calloutContentRoot!,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={data}\n chartType={ChartTypes.HeatMapChart}\n xAxisType={XAxisTypes.StringAxis}\n yAxisType={YAxisType.StringAxis}\n calloutProps={calloutProps}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={_stringXAxisDataPoints.current}\n stringDatasetForYAxisDomain={_stringYAxisDataPoints.current}\n createStringYAxis={createStringYAxis}\n getDomainNRangeValues={_getDomainNRangeValues}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n getmargins={_getMargins}\n xAxisTickCount={_stringXAxisDataPoints.current.length}\n xAxistickSize={0}\n xAxisPadding={0.02}\n yAxisPadding={0.02}\n legendBars={_createLegendBars()}\n onChartMouseLeave={_handleChartMouseLeave}\n componentRef={cartesianChartRef}\n tickParams={tickParams}\n /* eslint-disable react/jsx-no-bind */\n children={(p: ChildProps) => {\n _xAxisScale.current = p.xScale;\n _yAxisScale.current = p.yScalePrimary;\n return _createRectangles();\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\n"],"names":["React","ChartTypes","getAccessibleDataObject","getColorContrast","getTypeOfAxis","resolveCSSVariables","XAxisTypes","YAxisType","createNumericYAxis","domainRangeOfXStringAxis","createStringYAxis","useRtl","sortAxisCategories","formatToLocaleString","CartesianChart","useId","tokens","useHeatMapChartStyles","Legends","scaleLinear","d3ScaleLinear","format","d3Format","timeFormat","d3TimeFormat","toImage","HeatMapChart","forwardRef","props","xAxisCategoryOrder","yAxisCategoryOrder","data","domainValuesForColorScale","rangeValuesForColorScale","forwardedRef","classes","_stringXAxisDataPoints","useRef","_stringYAxisDataPoints","_dataSet","_colorScale","_xAxisScale","_yAxisScale","_xAxisType","_yAxisType","_calloutAnchorPoint","_emptyChartId","_margins","cartesianChartRef","_legendsRef","_isRtl","selectedLegend","setSelectedLegend","useState","activeLegend","setActiveLegend","isPopoverOpen","setPopoverOpen","calloutLegend","setCalloutLegend","calloutTextColor","setCalloutTextColor","calloutYValue","setCalloutYValue","ratio","setRatio","descriptionMessage","setDescriptionMessage","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","useImperativeHandle","componentRef","chartContainer","current","opts","toSVG","_getMinMaxOfYAxis","startValue","endValue","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","_getXandY","forEach","item","length","_getMargins","_getOpacity","legendTitle","opacity","_legendHighlighted","_noLegendHighlighted","_onRectFocus","id","focusEvent","boundingRect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","height","updatePosition","legend","rectText","Number","isNaN","value","colorNeutralForeground1","_onRectMouseOver","mouseEvent","persist","_onRectBlurOrMouseOut","_handleChartMouseLeave","_getInvertedTextColor","color","colorNeutralBackground1","_createRectangles","rectangles","yAxisDataPoints","slice","reverse","yAxisDataPoint","index","xAxisDataPoint","rectElement","dataPointObject","styleRules","foregroundColor","contrastRatio","g","key","role","aria-label","_getAriaLabel","tabIndex","fillOpacity","transform","onFocus","e","onBlur","onMouseOver","onMouseOut","rect","fill","bandwidth","onClick","text","dominantBaseline","textAnchor","className","culture","useUTC","NaN","push","_onLegendHover","_onLegendLeave","_onLegendClick","_createLegendBars","legendProps","legends","title","action","hoverAction","onMouseOutAction","legendRef","_getColorScale","domain","range","_getXIndex","getTime","StringAxis","_getYIndex","xAxisStringFormatter","_getFormattedLabelForXAxisDataPoint","useCallback","point","yAxisStringFormatter","_getFormattedLabelForYAxisDataPoint","_getXAxisDataPoints","xAxisPoints","unFormattedXAxisDataPoints","_getOrderedXAxisLabels","map","xPoint","_getStringFormattedDate","xAxisDateFormatString","_getStringFormattedNumber","xAxisNumberFormatString","sortOrder","_getYAxisDataPoints","yAxisPoints","unFormattedYAxisDataPoints","_getOrderedYAxisLabels","yPoint","yAxisDateFormatString","yAxisNumberFormatString","_createNewDataSet","flattenData","yPoints","uniqueYPoints","uniqueXPoints","posX","posY","Object","keys","_getOrderedXPoints","datapoint","dataSet","formatString","date","Date","setTime","xValue","yValue","zValue","description","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","numDataPoints","reduce","acc","curr","_shouldOrderXAxisLabelsByCategoryOrder","sort","a","b","toLowerCase","_mapCategoryToValues","_shouldOrderYAxisLabelsByCategoryOrder","xPoints","result","xValueToPoints","xAxisLabels","isYAxis","categoryToValues","category","newX","newY","threshold","distance","Math","sqrt","pow","useMemo","calloutProps","YValue","styles","calloutContentRoot","tickParams","tickFormat","yAxisType","createYAxis","datasetForXAxisDomain","stringDatasetForYAxisDomain","getDomainNRangeValues","getMinMaxOfYAxis","getmargins","xAxisTickCount","xAxistickSize","xAxisPadding","yAxisPadding","legendBars","onChartMouseLeave","children","p","xScale","yScalePrimary","div","style"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/HeatMapChart/HeatMapChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { HeatMapChartProps } from './HeatMapChart.types';\nimport {\n AccessibilityProps,\n Chart,\n HeatMapChartData,\n HeatMapChartDataPoint,\n Margins,\n ImageExportOptions,\n} from '../../types/index';\nimport {\n ChartTypes,\n getAccessibleDataObject,\n getColorContrast,\n getTypeOfAxis,\n resolveCSSVariables,\n XAxisTypes,\n YAxisType,\n createNumericYAxis,\n IMargins,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n useRtl,\n sortAxisCategories,\n} from '../../utilities/index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { CartesianChart, ChartPopoverProps, ChildProps } from '../CommonComponents/index';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { useHeatMapChartStyles } from './useHeatMapChartStyles.styles';\nimport { Legend, Legends, LegendContainer } from '../Legends/index';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { timeFormat as d3TimeFormat } from 'd3-time-format';\nimport { toImage } from '../../utilities/image-export-utils';\n\ntype DataSet = {\n dataSet: RectanglesGraphData;\n yAxisPoints: string[];\n xAxisPoints: string[];\n};\ntype FlattenData = HeatMapChartDataPoint & {\n legend: string;\n};\ntype RectanglesGraphData = { [key: string]: FlattenData[] };\n\nexport const HeatMapChart: React.FunctionComponent<HeatMapChartProps> = React.forwardRef<\n HTMLDivElement,\n HeatMapChartProps\n>(\n (\n props = {\n xAxisCategoryOrder: 'default',\n yAxisCategoryOrder: 'default',\n data: [],\n domainValuesForColorScale: [],\n rangeValuesForColorScale: [],\n },\n forwardedRef,\n ) => {\n const classes = useHeatMapChartStyles(props);\n const _stringXAxisDataPoints = React.useRef<string[]>([]);\n const _stringYAxisDataPoints = React.useRef<string[]>([]);\n const _dataSet = React.useRef<RectanglesGraphData>({});\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _colorScale = React.useRef<any>();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _xAxisScale = React.useRef<any>();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _yAxisScale = React.useRef<any>();\n const _xAxisType = React.useRef<XAxisTypes>();\n const _yAxisType = React.useRef<YAxisType>();\n const _calloutAnchorPoint = React.useRef<FlattenData | null>(null);\n const _emptyChartId = useId('_HeatMap_empty');\n const _margins = React.useRef<Margins>({});\n const cartesianChartRef = React.useRef<Chart>(null);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRtl = useRtl();\n\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [calloutTextColor, setCalloutTextColor] = React.useState<string>('');\n const [calloutYValue, setCalloutYValue] = React.useState<string>('');\n const [ratio, setRatio] = React.useState<[number, number]>();\n const [descriptionMessage, setDescriptionMessage] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\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 function _getMinMaxOfYAxis() {\n return { startValue: 0, endValue: 0 };\n }\n\n function _getDomainNRangeValues(\n points: HeatMapChartDataPoint[],\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(_margins.current, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n const _getXandY = (): { x: string | Date | number; y: string | Date | number } => {\n let x: string | Date | number = '';\n let y: string | Date | number = '';\n props.data.forEach((item: HeatMapChartData) => {\n if (item.data && item.data.length > 0) {\n x = item.data[0].x;\n y = item.data[0].y;\n return { x, y };\n }\n });\n return { x, y };\n };\n\n const _getMargins = (margins: Margins) => {\n _margins.current = margins;\n };\n\n const _getOpacity = (legendTitle: string): string => {\n const opacity = _legendHighlighted(legendTitle) || _noLegendHighlighted() ? '1' : '0.1';\n return opacity;\n };\n\n const _onRectFocus = (id: string, data: FlattenData, focusEvent: React.FocusEvent<SVGGElement>): void => {\n const boundingRect = focusEvent.currentTarget.getBoundingClientRect();\n const clientX = boundingRect.left + boundingRect.width / 2;\n const clientY = boundingRect.top + boundingRect.height / 2;\n updatePosition(clientX, clientY);\n /** Show the callout if highlighted rectangle is focused and Hide it if unhighlighted rectangle is focused */\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setCalloutYValue(`${data.rectText}`);\n setCalloutTextColor(Number.isNaN(data.value) ? tokens.colorNeutralForeground1 : _colorScale.current(data.value));\n setCalloutLegend(data.legend);\n setRatio(data.ratio);\n setDescriptionMessage(data.descriptionMessage || '');\n setCallOutAccessibilityData(data.callOutAccessibilityData);\n };\n\n const _onRectMouseOver = (id: string, data: FlattenData, mouseEvent: React.MouseEvent<SVGGElement>): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint.current !== data) {\n _calloutAnchorPoint.current = data;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n /** Show the callout if highlighted rectangle is hovered and Hide it if unhighlighted rectangle is hovered */\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setCalloutYValue(`${data.rectText}`);\n setCalloutTextColor(\n Number.isNaN(data.value) ? tokens.colorNeutralForeground1 : _colorScale.current(data.value),\n );\n setCalloutLegend(data.legend);\n setRatio(data.ratio);\n setDescriptionMessage(data.descriptionMessage || '');\n setCallOutAccessibilityData(data.callOutAccessibilityData);\n }\n };\n\n const _onRectBlurOrMouseOut = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint.current = null;\n setPopoverOpen(false);\n };\n\n const _getInvertedTextColor = (color: string): string => {\n return color === tokens.colorNeutralForeground1 ? tokens.colorNeutralBackground1 : tokens.colorNeutralForeground1;\n };\n\n /**\n * This is the function which is responsible for\n * drawing the rectangle in the graph and also\n * attaching dom events to that rectangles\n */\n const _createRectangles = (): React.ReactNode => {\n const rectangles: JSXElement[] = [];\n const yAxisDataPoints = _stringYAxisDataPoints.current.slice().reverse();\n /**\n * yAxisDataPoint is noting but the DataPoint\n * which will be rendered on the y-axis\n */\n yAxisDataPoints.forEach((yAxisDataPoint: string) => {\n let index = 0;\n _stringXAxisDataPoints.current.forEach((xAxisDataPoint: string) => {\n let rectElement: JSXElement;\n const id = `x${xAxisDataPoint}y${yAxisDataPoint}`;\n if (\n _dataSet.current[yAxisDataPoint][index]?.x === xAxisDataPoint &&\n typeof _dataSet.current[yAxisDataPoint][index]?.value === 'number'\n ) {\n /**\n * dataPointObject is an object where it contains information on single\n * data point such as x, y , value, rectText property of the rectangle\n */\n const dataPointObject = _dataSet.current[yAxisDataPoint][index];\n let styleRules = '';\n let foregroundColor = tokens.colorNeutralForeground1;\n if (cartesianChartRef.current?.chartContainer) {\n styleRules = resolveCSSVariables(cartesianChartRef.current.chartContainer, foregroundColor);\n }\n const contrastRatio = getColorContrast(styleRules, _colorScale.current(dataPointObject.value));\n if (contrastRatio < 3) {\n foregroundColor = _getInvertedTextColor(foregroundColor);\n }\n rectElement = (\n <g\n key={id}\n role=\"img\"\n aria-label={_getAriaLabel(dataPointObject)}\n tabIndex={_legendHighlighted(dataPointObject.legend) || _noLegendHighlighted() ? 0 : -1}\n fillOpacity={_getOpacity(dataPointObject.legend)}\n transform={`translate(${_xAxisScale.current(dataPointObject.x)}, ${_yAxisScale.current(\n dataPointObject.y,\n )})`}\n onFocus={e => _onRectFocus(id, dataPointObject, e)}\n onBlur={_onRectBlurOrMouseOut}\n onMouseOver={e => _onRectMouseOver(id, dataPointObject, e)}\n onMouseOut={_onRectBlurOrMouseOut}\n >\n <rect\n fill={_colorScale.current(dataPointObject.value)}\n width={_xAxisScale.current.bandwidth()}\n height={_yAxisScale.current.bandwidth()}\n onClick={dataPointObject.onClick}\n />\n <text\n dominantBaseline={'middle'}\n textAnchor={'middle'}\n className={classes.text}\n transform={`translate(${_xAxisScale.current.bandwidth() / 2}, ${\n _yAxisScale.current.bandwidth() / 2\n })`}\n fill={foregroundColor}\n >\n {formatToLocaleString(dataPointObject.rectText, props.culture, props.useUTC) as React.ReactNode}\n </text>\n </g>\n );\n index++;\n } else {\n const dataPointObject: FlattenData = {\n x: xAxisDataPoint,\n y: yAxisDataPoint,\n value: NaN,\n rectText: 'No data available',\n legend: '',\n };\n rectElement = (\n <g\n key={id}\n role=\"img\"\n aria-label={_getAriaLabel(dataPointObject)}\n tabIndex={_noLegendHighlighted() ? 0 : -1}\n transform={`translate(${_xAxisScale.current(dataPointObject.x)}, ${_yAxisScale.current(\n dataPointObject.y,\n )})`}\n onFocus={e => _onRectFocus(id, dataPointObject, e)}\n onBlur={_onRectBlurOrMouseOut}\n onMouseOver={e => _onRectMouseOver(id, dataPointObject, e)}\n onMouseOut={_onRectBlurOrMouseOut}\n >\n <rect\n fill=\"transparent\"\n width={_xAxisScale.current.bandwidth()}\n height={_yAxisScale.current.bandwidth()}\n />\n </g>\n );\n }\n rectangles.push(rectElement);\n });\n });\n return rectangles;\n };\n /**\n * when the legend is hovered we need to highlight\n * all the rectangles which fall under that category\n * and un-highlight the rest of them\n * @param legendTitle\n */\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n /**\n * when the mouse is out from the legend , we need\n * to show the graph in initial mode.\n */\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n /**\n * @param legendTitle\n * when the legend is clicked we need to highlight\n * all the rectangles which fall under that category\n * and un highlight the rest of them\n */\n const _onLegendClick = (legendTitle: string): void => {\n /**\n * check if the legend is already selceted,\n * if yes, un-select the legend, else\n * set the selected legend state to legendTitle\n */\n if (selectedLegend === legendTitle) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(legendTitle);\n }\n };\n const _createLegendBars = (): JSXElement => {\n const { data, legendProps } = props;\n const legends: Legend[] = [];\n data.forEach((item: HeatMapChartData) => {\n const legend: Legend = {\n title: item.legend,\n color: _colorScale.current(item.value),\n action: () => {\n _onLegendClick(item.legend);\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(item.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n legends.push(legend);\n });\n return <Legends {...legendProps} legends={legends} legendRef={_legendsRef} />;\n };\n\n const _getColorScale = () => {\n const { domainValuesForColorScale, rangeValuesForColorScale } = props;\n return d3ScaleLinear()\n .domain(domainValuesForColorScale)\n .range(rangeValuesForColorScale as unknown as number[]);\n };\n\n const _getXIndex = (value: string | Date | number): string => {\n if (_xAxisType.current === XAxisTypes.DateAxis) {\n return `${(value as Date).getTime()}`;\n } else if (_xAxisType.current === XAxisTypes.StringAxis) {\n return value as string;\n } else if (_xAxisType.current === XAxisTypes.NumericAxis) {\n return `${value}`;\n } else {\n return '';\n }\n };\n const _getYIndex = (value: string | Date | number): string => {\n if (_yAxisType.current === YAxisType.DateAxis) {\n return `${(value as Date).getTime()}`;\n } else if (_yAxisType.current === YAxisType.StringAxis) {\n return value as string;\n } else if (_yAxisType.current === YAxisType.NumericAxis) {\n return `${value}`;\n } else {\n return '';\n }\n };\n\n const { xAxisStringFormatter } = props;\n const _getFormattedLabelForXAxisDataPoint = React.useCallback(\n (point: string): string => {\n return xAxisStringFormatter ? xAxisStringFormatter(point) : point;\n },\n [xAxisStringFormatter],\n );\n\n const { yAxisStringFormatter } = props;\n const _getFormattedLabelForYAxisDataPoint = React.useCallback(\n (point: string): string => {\n return yAxisStringFormatter ? yAxisStringFormatter(point) : point;\n },\n [yAxisStringFormatter],\n );\n\n /**\n * This function will return the final sorted and formatted x-axis points\n * which will be rendered on the x-axis\n * @param points\n * @returns x-axis points\n */\n const _getXAxisDataPoints = React.useCallback(\n (points: { [key: string]: '1' }): string[] => {\n let xAxisPoints: string[] = [];\n const unFormattedXAxisDataPoints = _getOrderedXAxisLabels(points);\n xAxisPoints = unFormattedXAxisDataPoints.map((xPoint: string) => {\n if (_xAxisType.current === XAxisTypes.DateAxis) {\n return _getStringFormattedDate(xPoint, props.xAxisDateFormatString);\n } else if (_xAxisType.current === XAxisTypes.NumericAxis) {\n return _getStringFormattedNumber(xPoint, props.xAxisNumberFormatString);\n } else {\n return _getFormattedLabelForXAxisDataPoint(xPoint);\n }\n });\n\n return xAxisPoints;\n },\n [\n _getFormattedLabelForXAxisDataPoint,\n props.sortOrder,\n props.xAxisDateFormatString,\n props.xAxisNumberFormatString,\n ],\n );\n\n /**\n * This function will return the final sorted and formatted y-axis points\n * which will be rendered on the y-axis\n * @param points\n * @returns yaxis points\n */\n const _getYAxisDataPoints = React.useCallback(\n (points: { [key: string]: '1' }): string[] => {\n let yAxisPoints: string[] = [];\n const unFormattedYAxisDataPoints = _getOrderedYAxisLabels(points);\n yAxisPoints = unFormattedYAxisDataPoints.map((yPoint: string) => {\n if (_yAxisType.current === YAxisType.DateAxis) {\n return _getStringFormattedDate(yPoint, props.yAxisDateFormatString);\n } else if (_yAxisType.current === YAxisType.NumericAxis) {\n return _getStringFormattedNumber(yPoint, props.yAxisNumberFormatString);\n } else {\n return _getFormattedLabelForYAxisDataPoint(yPoint);\n }\n });\n\n return yAxisPoints;\n },\n [\n _getFormattedLabelForYAxisDataPoint,\n props.sortOrder,\n props.yAxisDateFormatString,\n props.yAxisNumberFormatString,\n ],\n );\n\n /**\n * This will create a new data set based on the prop\n * @data\n * We will be using This data set to contsruct our rectangles\n * in the chart, we use this data set becuase, when we loop in this\n * data and build the heat map, it will support accessibility as\n * specified in the figma\n */\n\n const _createNewDataSet = React.useCallback(\n (\n data: HeatMapChartData[],\n xAxisDateFormatString: string | undefined,\n xAxisNumberFormatString: string | undefined,\n yAxisDateFormatString: string | undefined,\n yAxisNumberFormatString: string | undefined,\n ): DataSet => {\n /**\n * please do not destructure any of the props here,\n * instead send them as parameter to this functions so that\n * this functions get called whenever the prop changes\n */\n const flattenData: FlattenData[] = [];\n /**\n * below for each loop will store all the datapoints in the one array.\n * basically it will flatten the nestesd array (data prop) into single array\n * of object. where each object contains x, y, rectText , value and legend propety of single\n * data point.\n */\n data.forEach((item: HeatMapChartData) => {\n item.data.forEach((point: HeatMapChartDataPoint) => {\n flattenData.push({ ...point, legend: item.legend });\n });\n });\n const yPoints: RectanglesGraphData = {};\n const uniqueYPoints: { [key: string]: '1' } = {};\n const uniqueXPoints: { [key: string]: '1' } = {};\n flattenData.forEach((item: FlattenData) => {\n const posX = _getXIndex(item.x);\n const posY = _getYIndex(item.y);\n\n uniqueXPoints[posX] = '1';\n uniqueYPoints[posY] = '1';\n /** we will check if the property(posY) is already there in object, if Yes,\n * then we will append the item in the Array related to the pos, if not\n * then we will simply append the item in the new Array and\n * assign that array to the property (posY) in the Object\n * and finally we will get the array of Objects associated to each\n * property (which is nothing but y data point) and object in the\n * array are noting but x data points associated to the property y\n */\n if (yPoints[posY]) {\n yPoints[posY] = [...yPoints[posY], item];\n } else {\n yPoints[posY] = [item];\n }\n });\n /**\n * we will now sort(ascending) the array's of y data point based on the x value\n * sorting is important to achive the accessibility order of the\n * rectangles and then format the x and y datapoints respectively\n */\n Object.keys(yPoints).forEach((item: string) => {\n yPoints[item] = _getOrderedXPoints(yPoints[item]);\n\n yPoints[item].forEach((datapoint: HeatMapChartDataPoint) => {\n if (_xAxisType.current === XAxisTypes.DateAxis) {\n datapoint.x = _getStringFormattedDate(datapoint.x as string, xAxisDateFormatString);\n }\n if (_xAxisType.current === XAxisTypes.NumericAxis) {\n datapoint.x = _getStringFormattedNumber(datapoint.x as string, xAxisNumberFormatString);\n }\n if (_xAxisType.current === XAxisTypes.StringAxis) {\n datapoint.x = _getFormattedLabelForXAxisDataPoint(datapoint.x as string);\n }\n if (_yAxisType.current === YAxisType.DateAxis) {\n datapoint.y = _getStringFormattedDate(datapoint.y as string, yAxisDateFormatString);\n }\n if (_yAxisType.current === YAxisType.NumericAxis) {\n datapoint.y = _getStringFormattedNumber(datapoint.y as string, yAxisNumberFormatString);\n }\n if (_yAxisType.current === YAxisType.StringAxis) {\n datapoint.y = _getFormattedLabelForYAxisDataPoint(datapoint.y as string);\n }\n });\n });\n /**\n * if y-axis data points are of type date or number or if we have string formatter,\n * then we need to change data points to their respective string\n * format, becuase in the private variable _stringYAxisDatapoints, points will be stored in\n * string format. and in here `yPoint` are not so we need to change, so that\n * function `_createRectangles` should work perfetcly while looping, and if we don't change\n * then `_createRectangles` will fail while looping, causing the error\n * Cannot read property 'forEach' of undefined\n */\n\n Object.keys(yPoints).forEach((yPoint: string) => {\n if (_yAxisType.current === YAxisType.DateAxis) {\n yPoints[_getStringFormattedDate(yPoint, yAxisDateFormatString)] = yPoints[yPoint];\n } else if (_yAxisType.current === YAxisType.NumericAxis) {\n yPoints[`${_getStringFormattedNumber(yPoint, yAxisNumberFormatString)}`] = yPoints[yPoint];\n } else {\n yPoints[_getFormattedLabelForYAxisDataPoint(yPoint)] = yPoints[yPoint];\n }\n });\n /**\n * assigning new data set\n */\n const dataSet = yPoints;\n /**\n * These are the Y axis data points which will get rendered in the\n * Y axis in graph\n */\n const yAxisPoints = _getYAxisDataPoints(uniqueYPoints);\n /**\n * These are the x axis data points which will get rendered in the\n * x axis in the graph\n */\n\n const xAxisPoints = _getXAxisDataPoints(uniqueXPoints);\n return {\n dataSet,\n yAxisPoints,\n xAxisPoints,\n };\n },\n [\n _getFormattedLabelForXAxisDataPoint,\n _getFormattedLabelForYAxisDataPoint,\n _getXAxisDataPoints,\n _getYAxisDataPoints,\n props.sortOrder,\n ],\n );\n\n const _getStringFormattedDate = (point: string, formatString?: string): string => {\n const date = new Date();\n date.setTime(+point);\n return d3TimeFormat(formatString || '%b/%d')(date);\n };\n\n const _getStringFormattedNumber = (point: string, formatString?: string): string => {\n return d3Format(formatString || '.2~s')(+point);\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 const _legendHighlighted = (legendTitle: string) => {\n return selectedLegend === legendTitle || (selectedLegend === '' && activeLegend === legendTitle);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n const _noLegendHighlighted = () => {\n return selectedLegend === '' && activeLegend === '';\n };\n\n const _getAriaLabel = (point: FlattenData): string => {\n const xValue = point.x;\n const yValue = point.y;\n const legend = point.legend;\n const zValue = point.ratio ? `${point.ratio[0]}/${point.ratio[1]}` : point.rectText || point.value;\n const description = point.descriptionMessage;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${xValue}, ${yValue}. ${legend}, ${zValue}.` + (description ? ` ${description}.` : '')\n );\n };\n\n const _isChartEmpty = (): boolean => {\n return !(props.data && props.data.length > 0);\n };\n\n const _getChartTitle = (): string => {\n const { chartTitle } = props;\n const numDataPoints = props.data.reduce((acc, curr) => acc + curr.data.length, 0);\n return (chartTitle ? `${chartTitle}. ` : '') + `Heat map chart with ${numDataPoints} data points. `;\n };\n\n const _getOrderedXAxisLabels = (points: { [key: string]: '1' }) => {\n if (!_shouldOrderXAxisLabelsByCategoryOrder()) {\n // Keep the original ordering logic as the default behavior to ensure backward compatibility\n return Object.keys(points).sort((a: string, b: string) => {\n if (_xAxisType.current === XAxisTypes.DateAxis || _xAxisType.current === XAxisTypes.NumericAxis) {\n return +a - +b;\n } else {\n return props.sortOrder === 'none' ? 0 : a.toLowerCase() > b.toLowerCase() ? 1 : -1;\n }\n });\n }\n\n return sortAxisCategories(_mapCategoryToValues(), props.xAxisCategoryOrder);\n };\n\n const _getOrderedYAxisLabels = (points: { [key: string]: '1' }) => {\n if (!_shouldOrderYAxisLabelsByCategoryOrder()) {\n // Keep the original ordering logic as the default behavior to ensure backward compatibility\n return Object.keys(points).sort((a: string, b: string) => {\n if (_yAxisType.current === YAxisType.DateAxis || _yAxisType.current === YAxisType.NumericAxis) {\n return +a - +b;\n } else {\n return props.sortOrder === 'none' ? 0 : a.toLowerCase() > b.toLowerCase() ? 1 : -1;\n }\n });\n }\n\n return sortAxisCategories(_mapCategoryToValues(true), props.yAxisCategoryOrder);\n };\n\n const _getOrderedXPoints = (xPoints: FlattenData[]) => {\n if (!_shouldOrderXAxisLabelsByCategoryOrder()) {\n return xPoints.sort((a: HeatMapChartDataPoint, b: HeatMapChartDataPoint) => {\n if (_xAxisType.current === XAxisTypes.StringAxis) {\n return props.sortOrder === 'none'\n ? 0\n : (a.x as string).toLowerCase() > (b.x as string).toLowerCase()\n ? 1\n : -1;\n } else if (_xAxisType.current === XAxisTypes.DateAxis) {\n return (a.x as Date).getTime() - (b.x as Date).getTime();\n } else if (_xAxisType.current === XAxisTypes.NumericAxis) {\n return +(a.x as string) > +(b.x as string) ? 1 : -1;\n } else {\n return a.x > b.x ? 1 : -1;\n }\n });\n }\n\n const result: FlattenData[] = [];\n\n const xValueToPoints: Record<string, FlattenData[]> = {};\n xPoints.forEach(point => {\n const xValue = point.x as string;\n if (!xValueToPoints[xValue]) {\n xValueToPoints[xValue] = [];\n }\n xValueToPoints[xValue].push(point);\n });\n\n const xAxisLabels = _getOrderedXAxisLabels({});\n xAxisLabels.forEach(xValue => {\n if (xValueToPoints[xValue]) {\n result.push(...xValueToPoints[xValue]);\n }\n });\n\n return result;\n };\n\n const _shouldOrderXAxisLabelsByCategoryOrder = () => {\n return _xAxisType.current === XAxisTypes.StringAxis && props.xAxisCategoryOrder !== 'default';\n };\n\n const _shouldOrderYAxisLabelsByCategoryOrder = () => {\n return _yAxisType.current === YAxisType.StringAxis && props.yAxisCategoryOrder !== 'default';\n };\n\n const _mapCategoryToValues = (isYAxis = false) => {\n const categoryToValues: Record<string, number[]> = {};\n props.data.forEach(item => {\n item.data.forEach(point => {\n const category = (isYAxis ? point.y : point.x) as string;\n if (!categoryToValues[category]) {\n categoryToValues[category] = [];\n }\n categoryToValues[category].push(point.value);\n });\n });\n return categoryToValues;\n };\n\n const 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 }\n };\n\n const { x, y } = _getXandY();\n _xAxisType.current = getTypeOfAxis(x, true) as XAxisTypes;\n _yAxisType.current = getTypeOfAxis(y, false) as YAxisType;\n const { data, xAxisDateFormatString, xAxisNumberFormatString, yAxisDateFormatString, yAxisNumberFormatString } =\n props;\n _colorScale.current = _getColorScale();\n const { dataSet, xAxisPoints, yAxisPoints } = React.useMemo(\n () =>\n _createNewDataSet(\n data,\n xAxisDateFormatString,\n xAxisNumberFormatString,\n yAxisDateFormatString,\n yAxisNumberFormatString,\n ),\n [\n _createNewDataSet,\n data,\n xAxisDateFormatString,\n xAxisNumberFormatString,\n yAxisDateFormatString,\n yAxisNumberFormatString,\n ],\n );\n _dataSet.current = dataSet;\n _stringYAxisDataPoints.current = yAxisPoints;\n _stringXAxisDataPoints.current = xAxisPoints;\n const calloutProps: ChartPopoverProps = {\n ...props.calloutProps,\n isPopoverOpen,\n YValue: calloutYValue,\n legend: calloutLegend,\n color: calloutTextColor,\n ratio,\n descriptionMessage,\n clickPosition,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n styles: {\n calloutContentRoot: classes.calloutContentRoot!,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={data}\n chartType={ChartTypes.HeatMapChart}\n xAxisType={XAxisTypes.StringAxis}\n yAxisType={YAxisType.StringAxis}\n calloutProps={calloutProps}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={_stringXAxisDataPoints.current}\n stringDatasetForYAxisDomain={_stringYAxisDataPoints.current}\n createStringYAxis={createStringYAxis}\n getDomainNRangeValues={_getDomainNRangeValues}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n getmargins={_getMargins}\n xAxisTickCount={_stringXAxisDataPoints.current.length}\n xAxistickSize={0}\n xAxisPadding={0.02}\n yAxisPadding={0.02}\n legendBars={_createLegendBars()}\n onChartMouseLeave={_handleChartMouseLeave}\n componentRef={cartesianChartRef}\n tickParams={tickParams}\n /* eslint-disable react/jsx-no-bind */\n children={(p: ChildProps) => {\n _xAxisScale.current = p.xScale;\n _yAxisScale.current = p.yScalePrimary;\n return _createRectangles();\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\n"],"names":["React","ChartTypes","getAccessibleDataObject","getColorContrast","getTypeOfAxis","resolveCSSVariables","XAxisTypes","YAxisType","createNumericYAxis","domainRangeOfXStringAxis","createStringYAxis","useRtl","sortAxisCategories","formatToLocaleString","CartesianChart","useId","tokens","useHeatMapChartStyles","Legends","scaleLinear","d3ScaleLinear","format","d3Format","timeFormat","d3TimeFormat","toImage","HeatMapChart","forwardRef","props","xAxisCategoryOrder","yAxisCategoryOrder","data","domainValuesForColorScale","rangeValuesForColorScale","forwardedRef","classes","_stringXAxisDataPoints","useRef","_stringYAxisDataPoints","_dataSet","_colorScale","_xAxisScale","_yAxisScale","_xAxisType","_yAxisType","_calloutAnchorPoint","_emptyChartId","_margins","cartesianChartRef","_legendsRef","_isRtl","selectedLegend","setSelectedLegend","useState","activeLegend","setActiveLegend","isPopoverOpen","setPopoverOpen","calloutLegend","setCalloutLegend","calloutTextColor","setCalloutTextColor","calloutYValue","setCalloutYValue","ratio","setRatio","descriptionMessage","setDescriptionMessage","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","useImperativeHandle","componentRef","chartContainer","current","opts","toSVG","_getMinMaxOfYAxis","startValue","endValue","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","_getXandY","forEach","item","length","_getMargins","_getOpacity","legendTitle","opacity","_legendHighlighted","_noLegendHighlighted","_onRectFocus","id","focusEvent","boundingRect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","height","updatePosition","legend","rectText","Number","isNaN","value","colorNeutralForeground1","_onRectMouseOver","mouseEvent","persist","_onRectBlurOrMouseOut","_handleChartMouseLeave","_getInvertedTextColor","color","colorNeutralBackground1","_createRectangles","rectangles","yAxisDataPoints","slice","reverse","yAxisDataPoint","index","xAxisDataPoint","rectElement","dataPointObject","styleRules","foregroundColor","contrastRatio","g","key","role","aria-label","_getAriaLabel","tabIndex","fillOpacity","transform","onFocus","e","onBlur","onMouseOver","onMouseOut","rect","fill","bandwidth","onClick","text","dominantBaseline","textAnchor","className","culture","useUTC","NaN","push","_onLegendHover","_onLegendLeave","_onLegendClick","_createLegendBars","legendProps","legends","title","action","hoverAction","onMouseOutAction","legendRef","_getColorScale","domain","range","_getXIndex","getTime","StringAxis","_getYIndex","xAxisStringFormatter","_getFormattedLabelForXAxisDataPoint","useCallback","point","yAxisStringFormatter","_getFormattedLabelForYAxisDataPoint","_getXAxisDataPoints","xAxisPoints","unFormattedXAxisDataPoints","_getOrderedXAxisLabels","map","xPoint","_getStringFormattedDate","xAxisDateFormatString","_getStringFormattedNumber","xAxisNumberFormatString","sortOrder","_getYAxisDataPoints","yAxisPoints","unFormattedYAxisDataPoints","_getOrderedYAxisLabels","yPoint","yAxisDateFormatString","yAxisNumberFormatString","_createNewDataSet","flattenData","yPoints","uniqueYPoints","uniqueXPoints","posX","posY","Object","keys","_getOrderedXPoints","datapoint","dataSet","formatString","date","Date","setTime","xValue","yValue","zValue","description","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","numDataPoints","reduce","acc","curr","_shouldOrderXAxisLabelsByCategoryOrder","sort","a","b","toLowerCase","_mapCategoryToValues","_shouldOrderYAxisLabelsByCategoryOrder","xPoints","result","xValueToPoints","xAxisLabels","isYAxis","categoryToValues","category","newX","newY","threshold","distance","Math","sqrt","pow","useMemo","calloutProps","YValue","styles","calloutContentRoot","tickParams","tickFormat","yAxisType","createYAxis","datasetForXAxisDomain","stringDatasetForYAxisDomain","getDomainNRangeValues","getMinMaxOfYAxis","getmargins","xAxisTickCount","xAxistickSize","xAxisPadding","yAxisPadding","legendBars","onChartMouseLeave","children","p","xScale","yScalePrimary","div","style"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useHeatMapChartStyles.styles.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["useHeatMapChartStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { typographyStyles } from '@fluentui/react-theme';\nexport const heatmapChartClassNames = {\n root: 'fui-hmc__root',\n text: 'fui-hmc__text',\n calloutContentRoot: 'fui-hmc__calloutContentRoot',\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 axisAnnotation: ''\n};\nconst useStyles = makeStyles({\n root: {},\n text: {\n ...typographyStyles.body1Strong,\n pointerEvents: 'none'\n },\n calloutContentRoot: {\n maxWidth: '238px'\n }\n});\nexport const useHeatMapChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n root: mergeClasses(heatmapChartClassNames.root, baseStyles.root /*, props.styles?.root*/ ),\n text: mergeClasses(heatmapChartClassNames.text, baseStyles.text /*, props.styles?.text*/ ),\n calloutContentRoot: mergeClasses(heatmapChartClassNames.calloutContentRoot, baseStyles.calloutContentRoot /*, props.styles?.calloutContentRoot*/ )\n };\n};\n"],"names":["__styles","mergeClasses","typographyStyles","heatmapChartClassNames","root","text","calloutContentRoot","xAxis","yAxis","legendContainer","hover","descriptionMessage","tooltip","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","useStyles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","Bkecrkj","B2u0y6b","d","useHeatMapChartStyles","props","baseStyles"],"mappings":"AAAA,YAAY;;;;;;;;;;;;IAGCG,sBAAsB;;;IA6BtB0B,qBAAqB;;;;uBA/BO,gBAAgB;AAElD,+BAA+B;IAClCzB,IAAI,EAAE,eAAe;IACrBC,IAAI,EAAE,eAAe;IACrBC,kBAAkB,EAAE,6BAA6B;IACjDC,KAAK,EAAE,EAAE;IACTC,KAAK,EAAE,EAAE;IACTC,eAAe,EAAE,EAAE;IACnBC,KAAK,EAAE,EAAE;IACTC,kBAAkB,EAAE,EAAE;IACtBC,OAAO,EAAE,EAAE;IACXC,SAAS,EAAE,EAAE;IACbC,UAAU,EAAE,EAAE;IACdC,oBAAoB,EAAE,EAAE;IACxBC,WAAW,EAAE,EAAE;IACfC,YAAY,EAAE,EAAE;IAChBC,UAAU,EAAE,EAAE;IACdC,KAAK,EAAE,EAAE;IACTC,cAAc,EAAE;AACpB,CAAC;AACD,MAAMC,SAAS,GAAA,WAAA,OAAGrB,eAAA,EAAA;IAAAI,IAAA,EAAA,CAAA;IAAAC,IAAA,EAAA;QAAAiB,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAApB,kBAAA,EAAA;QAAAqB,OAAA,EAAA;IAAA;AAAA,GAAA;IAAAC,CAAA,EAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;KAAA;AAAA,CASjB,CAAC;AACK,8BAA+BE,KAAK,IAAG;IAC1C,MAAMC,UAAU,GAAGV,SAAS,CAAC,CAAC;IAC9B,OAAO;QACHjB,IAAI,MAAEH,mBAAY,EAACE,sBAAsB,CAACC,IAAI,EAAE2B,UAAU,CAAC3B,IAAI,CAAC,sBAAA,EAAyB,CAAC;QAC1FC,IAAI,MAAEJ,mBAAY,EAACE,sBAAsB,CAACE,IAAI,EAAE0B,UAAU,CAAC1B,IAAI,CAAC,sBAAA,EAAyB,CAAC;QAC1FC,kBAAkB,MAAEL,mBAAY,EAACE,sBAAsB,CAACG,kBAAkB,EAAEyB,UAAU,CAACzB,kBAAkB,CAAC,oCAAA,EAAuC;IACrJ,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/HeatMapChart/useHeatMapChartStyles.styles.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../src/components/HeatMapChart/useHeatMapChartStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport type { HeatMapChartProps, HeatMapChartStyles } from './HeatMapChart.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { typographyStyles } from '@fluentui/react-theme';\n\nexport const heatmapChartClassNames: SlotClassNames<HeatMapChartStyles> = {\n root: 'fui-hmc__root',\n text: 'fui-hmc__text',\n calloutContentRoot: 'fui-hmc__calloutContentRoot',\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 axisAnnotation: '',\n};\nconst useStyles = makeStyles({\n root: {},\n text: {\n ...typographyStyles.body1Strong,\n pointerEvents: 'none',\n },\n calloutContentRoot: {\n maxWidth: '238px',\n },\n});\n\nexport const useHeatMapChartStyles = (props: HeatMapChartProps): HeatMapChartStyles => {\n const baseStyles = useStyles();\n\n return {\n root: mergeClasses(heatmapChartClassNames.root, baseStyles.root /*, props.styles?.root*/),\n text: mergeClasses(heatmapChartClassNames.text, baseStyles.text /*, props.styles?.text*/),\n calloutContentRoot: mergeClasses(\n heatmapChartClassNames.calloutContentRoot,\n baseStyles.calloutContentRoot /*, props.styles?.calloutContentRoot*/,\n ),\n };\n};\n"],"names":["makeStyles","mergeClasses","typographyStyles","heatmapChartClassNames","root","text","calloutContentRoot","xAxis","yAxis","legendContainer","hover","descriptionMessage","tooltip","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","useStyles","body1Strong","pointerEvents","maxWidth","useHeatMapChartStyles","props","baseStyles"],"mappings":"AAAA;;;;;;;;;;;;IAOaG,sBAAAA;;;IA8BAsB,qBAAAA;;;;uBAnC4B,iBAAiB;4BAGzB,wBAAwB;AAElD,+BAAmE;IACxErB,MAAM;IACNC,MAAM;IACNC,oBAAoB;IACpBC,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;IACPC,gBAAgB;AAClB,EAAE;AACF,MAAMC,gBAAYrB,iBAAAA,EAAW;IAC3BI,MAAM,CAAC;IACPC,MAAM;QACJ,GAAGH,4BAAAA,CAAiBoB,WAAW;QAC/BC,eAAe;IACjB;IACAjB,oBAAoB;QAClBkB,UAAU;IACZ;AACF;AAEO,8BAA8B,CAACE;IACpC,MAAMC,aAAaN;IAEnB,OAAO;QACLjB,UAAMH,mBAAAA,EAAaE,uBAAuBC,IAAI,EAAEuB,WAAWvB,IAAI,CAAC,sBAAsB;QACtFC,UAAMJ,mBAAAA,EAAaE,uBAAuBE,IAAI,EAAEsB,WAAWtB,IAAI,CAAC,sBAAsB;QACtFC,wBAAoBL,mBAAAA,EAClBE,uBAAuBG,kBAAkB,EACzCqB,WAAWrB,kBAAkB,CAAC,oCAAoC;IAEtE;AACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/HorizontalBarChart/HorizontalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useHorizontalBarChartStyles } from './useHorizontalBarChartStyles.styles';\nimport { ChartProps, HorizontalBarChartProps, ChartDataPoint, RefArrayData, HorizontalBarChartVariant } from './index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { formatScientificLimitWidth, getAccessibleDataObject, useRtl } from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { FocusableTooltipText } from '../../utilities/FocusableTooltipText';\nimport { Legend, Legends } from '../../index';\n\n/**\n * HorizontalBarChart is the context wrapper and container for all HorizontalBarChart content/controls,\n * It has no direct style or slot opinions.\n *\n * HorizontalBarChart also provides API interfaces for callbacks that will occur on navigation events.\n */\nexport const HorizontalBarChart: React.FunctionComponent<HorizontalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n HorizontalBarChartProps\n>((props, forwardedRef) => {\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const _uniqLineText: string = useId('_HorizontalLine_');\n const _refArray: RefArrayData[] = [];\n const _isRTL: boolean = useRtl();\n const barChartSvgRef: React.RefObject<SVGSVGElement> = React.createRef<SVGSVGElement>();\n const _emptyChartId: string = useId('_HBC_empty');\n let _barHeight: number;\n let _calloutAnchorPoint: ChartDataPoint | null;\n let isSingleBar: boolean = true;\n let _showToolTipOnSegment: boolean = !props.hideTooltip;\n\n const [hoverValue, setHoverValue] = React.useState<string | number | Date | null>('');\n const [lineColor, setLineColor] = React.useState<string>('');\n const [legend, setLegend] = React.useState<string | null>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string | undefined>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [barCalloutProps, setBarCalloutProps] = React.useState<ChartDataPoint>();\n const [barSpacingInPercent, setBarSpacingInPercent] = React.useState<number>(0);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n\n function _refCallback(element: SVGGElement, legendTitle: string | undefined): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _hoverOn(\n event: React.FocusEvent<SVGRectElement> | React.MouseEvent<SVGRectElement>,\n hoverVal: string | number | Date,\n point: ChartDataPoint,\n ): void {\n if (\n (!isPopoverOpen || legend !== point.legend!) &&\n _calloutAnchorPoint !== point &&\n (_legendHighlighted(point.legend) || _noLegendHighlighted())\n ) {\n _calloutAnchorPoint = point;\n let x = 0;\n let y = 0;\n\n if ('clientX' in event && event.clientX && event.clientY) {\n // Mouse event\n x = event.clientX;\n y = event.clientY;\n } else {\n // Focus event\n const targetRect = (event.target as SVGRectElement).getBoundingClientRect();\n x = targetRect.left + targetRect.width / 2;\n y = targetRect.top + targetRect.height / 2;\n }\n\n updatePosition(x, y);\n setHoverValue(hoverVal);\n setLineColor(point.color!);\n setLegend(point.legend!);\n setXCalloutValue(point.xAxisCalloutData!);\n setYCalloutValue(point.yAxisCalloutData!);\n setBarCalloutProps(point);\n // ToDo - Confirm setting multiple state variables like this is performant.\n }\n }\n\n function _hoverOff(): void {\n /*ToDo. To fix*/\n }\n\n const _handleChartMouseLeave = () => {\n _calloutAnchorPoint = null;\n if (isPopoverOpen) {\n setPopoverOpen(false);\n setHoverValue('');\n setLineColor('');\n setLegend('');\n }\n };\n\n const _adjustProps = (): void => {\n _barHeight = props.barHeight || 12;\n };\n\n const _getChartDataText = (data: ChartProps) => {\n /* return props.barChartCustomData ? (\n <div role=\"text\">{props.barChartCustomData(data)}</div>\n ) : ( */\n return _getDefaultTextData(data);\n //)\n };\n\n function _createLegends(chartProps: ChartProps[]): JSXElement {\n const legendItems: Legend[] = chartProps.flatMap(\n point =>\n point.chartData?.map((dataPoint): Legend => {\n const legend = dataPoint.legend ?? '';\n const color = dataPoint.color ?? '';\n\n return {\n title: legend,\n color,\n action: () => setSelectedLegend(selectedLegend === legend ? '' : legend),\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(legend);\n },\n onMouseOutAction: () => setActiveLegend(''),\n };\n }) ?? [],\n );\n\n return (\n <Legends legends={legendItems} centerLegends overflowText={props.legendsOverflowText} {...props.legendProps} />\n );\n }\n\n function _getDefaultTextData(data: ChartProps): JSXElement {\n const chartDataMode = props.chartDataMode || 'default';\n\n if (chartDataMode === 'hidden') {\n return <></>; // No text data for hidden mode\n }\n\n const { culture } = props;\n const accessibilityData = getAccessibleDataObject(data.chartDataAccessibilityData!, 'text', false);\n if (!isSingleBar) {\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(total, culture) as React.ReactNode}\n </div>\n );\n }\n\n const chartData: ChartDataPoint = data!.chartData![0];\n const x = chartData.horizontalBarChartdata!.x;\n const y = chartData.horizontalBarChartdata!.total!;\n\n switch (chartDataMode) {\n case 'default':\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(x, culture) as React.ReactNode}\n </div>\n );\n case 'fraction':\n return (\n <div {...accessibilityData}>\n <span className={classes.chartTitleRight}>{formatToLocaleString(x, culture) as React.ReactNode}</span>\n <span className={classes.chartDataTextDenominator}>{' / ' + formatToLocaleString(y, culture)}</span>\n </div>\n );\n case 'percentage':\n const dataRatioPercentage = `${formatToLocaleString(Math.round((x / y) * 100), culture)}%`;\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {dataRatioPercentage}\n </div>\n );\n }\n }\n\n function _createBenchmark(data: ChartProps): JSXElement {\n if (data.chartData![0].horizontalBarChartdata!.total === undefined) {\n return <></>;\n }\n const totalData = data.chartData![0].horizontalBarChartdata!.total!;\n const benchmarkData = data.chartData![0].data;\n const benchmarkRatio = Math.round(((benchmarkData ? benchmarkData : 0) / totalData) * 100);\n\n const benchmarkStyles = {\n left: 'calc(' + benchmarkRatio + '% - 4px)',\n };\n\n return (\n <div className={classes.benchmarkContainer}>\n <div className={classes.triangle} style={benchmarkStyles} />\n </div>\n );\n }\n\n /**\n * This functions returns an array of <rect> elements, which form the bars\n * For each bar an x value, and a width needs to be specified\n * The computations are done based on percentages\n * Extra margin is also provided, in the x value to provide some spacing in between the bars\n */\n\n function _createBars(data: ChartProps): JSXElement[] {\n const noOfBars =\n data.chartData?.reduce((count: number, point: ChartDataPoint) => (count += (point.data || 0) > 0 ? 1 : 0), 0) ||\n 1;\n const totalMarginPercent = barSpacingInPercent * (noOfBars - 1);\n const defaultColors: string[] = [\n tokens.colorPaletteBlueForeground2,\n tokens.colorPaletteCornflowerForeground2,\n tokens.colorPaletteDarkGreenForeground2,\n tokens.colorPaletteNavyForeground2,\n tokens.colorPaletteDarkOrangeForeground2,\n ];\n // calculating starting point of each bar and it's range\n const startingPoint: number[] = [];\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n let prevPosition = 0;\n let value = 0;\n\n let sumOfPercent = 0;\n data.chartData!.map((point: ChartDataPoint, index: number) => {\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n\n return sumOfPercent;\n });\n\n /**\n * The %age of the space occupied by the margin needs to subtracted\n * while computing the scaling ratio, since the margins are not being\n * scaled down, only the data is being scaled down from a higher percentage to lower percentage\n * Eg: 95% of the space is taken by the bars, 5% by the margins\n * Now if the sumOfPercent is 120% -> This needs to be scaled down to 95%, not 100%\n * since that's only space available to the bars\n */\n const scalingRatio = sumOfPercent !== 0 ? (sumOfPercent - totalMarginPercent) / 100 : 1;\n\n const bars = data.chartData!.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color ? point.color : defaultColors[Math.floor(Math.random() * 4 + 1)];\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n if (index > 0) {\n prevPosition += value;\n }\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1 / scalingRatio;\n } else {\n value = value / scalingRatio;\n }\n startingPoint.push(prevPosition);\n\n const xValue = point.horizontalBarChartdata!.x;\n const placeholderIndex = 1;\n const isLegendSelected: boolean = _legendHighlighted(point.legend) || _noLegendHighlighted();\n\n // Render bar label instead of placeholder bar for absolute-scale variant\n if (index === placeholderIndex && props.variant === HorizontalBarChartVariant.AbsoluteScale) {\n if (props.hideLabels) {\n return <text key={index} />;\n }\n\n const barValue = data.chartData![0].horizontalBarChartdata!.x;\n\n return (\n <text\n key={index}\n x={`${_isRTL ? 100 - startingPoint[index] : startingPoint[index]}%`}\n y={_barHeight / 2}\n dominantBaseline=\"central\"\n transform={`translate(${_isRTL ? -4 : 4})`}\n className={classes.barLabel}\n aria-hidden={true}\n >\n {formatScientificLimitWidth(barValue)}\n </text>\n );\n }\n\n return (\n <rect\n key={index}\n x={`${\n _isRTL\n ? 100 - startingPoint[index] - value - index * barSpacingInPercent\n : startingPoint[index] + index * barSpacingInPercent\n }%`}\n y={0}\n width={value + '%'}\n height={_barHeight}\n fill={color}\n onMouseOver={\n _showToolTipOnSegment && point.legend !== '' ? event => _hoverOn(event, xValue, point) : undefined\n }\n onFocus={_showToolTipOnSegment && point.legend !== '' ? event => _hoverOn(event, xValue, point) : undefined}\n role=\"img\"\n aria-label={_getAriaLabel(point)}\n onBlur={_hoverOff}\n onMouseLeave={_hoverOff}\n className={classes.barWrapper}\n opacity={isLegendSelected ? 1 : 0.1}\n tabIndex={_legendHighlighted(point.legend!) || _noLegendHighlighted() ? 0 : undefined}\n />\n );\n });\n return bars;\n }\n\n const _getAriaLabel = (point: ChartDataPoint): string => {\n const legend = point.xAxisCalloutData || point.legend;\n const yValue =\n point.yAxisCalloutData ||\n (point.horizontalBarChartdata\n ? `${point.horizontalBarChartdata.x}/${point.horizontalBarChartdata.total ?? ''}`\n : 0);\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n function updatePosition(newX: number, newY: number): void {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n\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 React.useEffect(() => {\n const svgWidth = barChartSvgRef?.current?.getBoundingClientRect().width || 0;\n const MARGIN_WIDTH_IN_PX = 3;\n if (svgWidth) {\n const currentBarSpacing = (MARGIN_WIDTH_IN_PX / svgWidth) * 100;\n setBarSpacingInPercent(currentBarSpacing);\n }\n }, [barChartSvgRef]);\n\n function _legendHighlighted(barLegend?: string) {\n if (barLegend === undefined) {\n return false;\n }\n return selectedLegend === barLegend || (selectedLegend === '' && activeLegend === barLegend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted() {\n return selectedLegend === '' && activeLegend === '';\n }\n\n const { data } = props;\n _adjustProps();\n const classes = useHorizontalBarChartStyles(props);\n const focusAttributes = useFocusableGroup();\n const legendButtons = _createLegends(data!);\n\n let datapoint: number | undefined = 0;\n return !_isChartEmpty() ? (\n <div className={classes.root} onMouseLeave={_handleChartMouseLeave}>\n {data!.map((points: ChartProps, index: number) => {\n if (points.chartData && points.chartData![0] && points.chartData![0].horizontalBarChartdata!.x) {\n datapoint = points.chartData![0].horizontalBarChartdata!.x;\n } else {\n datapoint = 0;\n }\n isSingleBar = props.showLegendForSinglePointBar\n ? false\n : points.chartData!.length === 1 || (points.chartData!.length > 1 && points.chartData![1].legend === '');\n if (isSingleBar) {\n points.chartData![1] = {\n legend: '',\n horizontalBarChartdata: {\n x: points.chartData![0].horizontalBarChartdata!.total! - datapoint!,\n total: points.chartData![0].horizontalBarChartdata!.total!,\n },\n color: tokens.colorBackgroundOverlay,\n };\n }\n\n // Hide right side text of chart title for absolute-scale variant\n const chartDataText =\n props.variant === HorizontalBarChartVariant.AbsoluteScale ? null : _getChartDataText(points!);\n const bars = _createBars(points!);\n const keyVal = _uniqLineText + '_' + index;\n // ToDo - Showtriangle property is per data series. How to account for it in the new stylesheet\n /* const classes = useHorizontalBarChartStyles(props.styles!, {\n width: props.width,\n showTriangle: !!points!.chartData![0].data,\n variant: props.variant,\n }); */\n\n return (\n <div key={index}>\n <div className={classes.items} {...focusAttributes}>\n <div className={classes.chartTitle}>\n {points!.chartTitle && (\n <FocusableTooltipText\n className={classes.chartTitleLeft}\n content={points!.chartTitle}\n accessibilityData={points!.chartTitleAccessibilityData}\n />\n )}\n {chartDataText}\n </div>\n {points!.chartData![0].data && _createBenchmark(points!)}\n <svg ref={barChartSvgRef} className={classes.chart} aria-label={points!.chartTitle}>\n <g\n id={keyVal}\n ref={(e: SVGGElement) => {\n _refCallback(e, points!.chartData![0].legend);\n }}\n // NOTE: points.chartData![0] contains current data value\n onClick={() => {\n const p = points!.chartData![0];\n if (p && p.onClick) {\n p.onClick();\n }\n }}\n >\n {bars}\n </g>\n </svg>\n </div>\n </div>\n );\n })}\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={legend!}\n YValue={hoverValue!}\n color={lineColor}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerHorizontalBar\n ? props.onRenderCalloutPerHorizontalBar(barCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(barCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!isSingleBar && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendButtons}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n //TODO validate and fix focus border for issue for popover\n});\nHorizontalBarChart.displayName = 'HorizontalBarChart';\n"],"names":["React","useHorizontalBarChartStyles","HorizontalBarChartVariant","formatToLocaleString","formatScientificLimitWidth","getAccessibleDataObject","useRtl","useId","tokens","useFocusableGroup","ChartPopover","FocusableTooltipText","Legends","HorizontalBarChart","forwardRef","props","forwardedRef","legendContainer","useRef","_uniqLineText","_refArray","_isRTL","barChartSvgRef","createRef","_emptyChartId","_barHeight","_calloutAnchorPoint","isSingleBar","_showToolTipOnSegment","hideTooltip","hoverValue","setHoverValue","useState","lineColor","setLineColor","legend","setLegend","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","barCalloutProps","setBarCalloutProps","barSpacingInPercent","setBarSpacingInPercent","isPopoverOpen","setPopoverOpen","clickPosition","setClickPosition","x","y","selectedLegend","setSelectedLegend","activeLegend","setActiveLegend","_refCallback","element","legendTitle","push","index","refElement","_hoverOn","event","hoverVal","point","_legendHighlighted","_noLegendHighlighted","clientX","clientY","targetRect","target","getBoundingClientRect","left","width","top","height","updatePosition","color","xAxisCalloutData","yAxisCalloutData","_hoverOff","_handleChartMouseLeave","_adjustProps","barHeight","_getChartDataText","data","_getDefaultTextData","_createLegends","chartProps","legendItems","flatMap","chartData","map","dataPoint","title","action","hoverAction","onMouseOutAction","legends","centerLegends","overflowText","legendsOverflowText","legendProps","chartDataMode","culture","accessibilityData","chartDataAccessibilityData","total","reduce","acc","horizontalBarChartdata","div","className","classes","chartTitleRight","span","chartDataTextDenominator","dataRatioPercentage","Math","round","_createBenchmark","undefined","totalData","benchmarkData","benchmarkRatio","benchmarkStyles","benchmarkContainer","triangle","style","_createBars","noOfBars","count","totalMarginPercent","defaultColors","colorPaletteBlueForeground2","colorPaletteCornflowerForeground2","colorPaletteDarkGreenForeground2","colorPaletteNavyForeground2","colorPaletteDarkOrangeForeground2","startingPoint","prevPosition","value","sumOfPercent","pointData","scalingRatio","bars","floor","random","xValue","placeholderIndex","isLegendSelected","variant","AbsoluteScale","hideLabels","text","key","barValue","dominantBaseline","transform","barLabel","aria-hidden","rect","fill","onMouseOver","onFocus","role","aria-label","_getAriaLabel","onBlur","onMouseLeave","barWrapper","opacity","tabIndex","yValue","callOutAccessibilityData","ariaLabel","_isChartEmpty","length","newX","newY","threshold","distance","sqrt","pow","useEffect","svgWidth","current","MARGIN_WIDTH_IN_PX","currentBarSpacing","barLegend","focusAttributes","legendButtons","datapoint","root","points","showLegendForSinglePointBar","colorBackgroundOverlay","chartDataText","keyVal","items","chartTitle","chartTitleLeft","content","chartTitleAccessibilityData","svg","ref","chart","g","id","e","onClick","p","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerHorizontalBar","customCalloutProps","calloutPropsPerDataPoint","isCartesian","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/HorizontalBarChart/HorizontalBarChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useHorizontalBarChartStyles } from './useHorizontalBarChartStyles.styles';\nimport { ChartProps, HorizontalBarChartProps, ChartDataPoint, RefArrayData, HorizontalBarChartVariant } from './index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { formatScientificLimitWidth, getAccessibleDataObject, useRtl } from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { FocusableTooltipText } from '../../utilities/FocusableTooltipText';\nimport { Legend, Legends } from '../../index';\n\n/**\n * HorizontalBarChart is the context wrapper and container for all HorizontalBarChart content/controls,\n * It has no direct style or slot opinions.\n *\n * HorizontalBarChart also provides API interfaces for callbacks that will occur on navigation events.\n */\nexport const HorizontalBarChart: React.FunctionComponent<HorizontalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n HorizontalBarChartProps\n>((props, forwardedRef) => {\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const _uniqLineText: string = useId('_HorizontalLine_');\n const _refArray: RefArrayData[] = [];\n const _isRTL: boolean = useRtl();\n const barChartSvgRef: React.RefObject<SVGSVGElement> = React.createRef<SVGSVGElement>();\n const _emptyChartId: string = useId('_HBC_empty');\n let _barHeight: number;\n let _calloutAnchorPoint: ChartDataPoint | null;\n let isSingleBar: boolean = true;\n let _showToolTipOnSegment: boolean = !props.hideTooltip;\n\n const [hoverValue, setHoverValue] = React.useState<string | number | Date | null>('');\n const [lineColor, setLineColor] = React.useState<string>('');\n const [legend, setLegend] = React.useState<string | null>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string | undefined>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [barCalloutProps, setBarCalloutProps] = React.useState<ChartDataPoint>();\n const [barSpacingInPercent, setBarSpacingInPercent] = React.useState<number>(0);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n\n function _refCallback(element: SVGGElement, legendTitle: string | undefined): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _hoverOn(\n event: React.FocusEvent<SVGRectElement> | React.MouseEvent<SVGRectElement>,\n hoverVal: string | number | Date,\n point: ChartDataPoint,\n ): void {\n if (\n (!isPopoverOpen || legend !== point.legend!) &&\n _calloutAnchorPoint !== point &&\n (_legendHighlighted(point.legend) || _noLegendHighlighted())\n ) {\n _calloutAnchorPoint = point;\n let x = 0;\n let y = 0;\n\n if ('clientX' in event && event.clientX && event.clientY) {\n // Mouse event\n x = event.clientX;\n y = event.clientY;\n } else {\n // Focus event\n const targetRect = (event.target as SVGRectElement).getBoundingClientRect();\n x = targetRect.left + targetRect.width / 2;\n y = targetRect.top + targetRect.height / 2;\n }\n\n updatePosition(x, y);\n setHoverValue(hoverVal);\n setLineColor(point.color!);\n setLegend(point.legend!);\n setXCalloutValue(point.xAxisCalloutData!);\n setYCalloutValue(point.yAxisCalloutData!);\n setBarCalloutProps(point);\n // ToDo - Confirm setting multiple state variables like this is performant.\n }\n }\n\n function _hoverOff(): void {\n /*ToDo. To fix*/\n }\n\n const _handleChartMouseLeave = () => {\n _calloutAnchorPoint = null;\n if (isPopoverOpen) {\n setPopoverOpen(false);\n setHoverValue('');\n setLineColor('');\n setLegend('');\n }\n };\n\n const _adjustProps = (): void => {\n _barHeight = props.barHeight || 12;\n };\n\n const _getChartDataText = (data: ChartProps) => {\n /* return props.barChartCustomData ? (\n <div role=\"text\">{props.barChartCustomData(data)}</div>\n ) : ( */\n return _getDefaultTextData(data);\n //)\n };\n\n function _createLegends(chartProps: ChartProps[]): JSXElement {\n const legendItems: Legend[] = chartProps.flatMap(\n point =>\n point.chartData?.map((dataPoint): Legend => {\n const legend = dataPoint.legend ?? '';\n const color = dataPoint.color ?? '';\n\n return {\n title: legend,\n color,\n action: () => setSelectedLegend(selectedLegend === legend ? '' : legend),\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(legend);\n },\n onMouseOutAction: () => setActiveLegend(''),\n };\n }) ?? [],\n );\n\n return (\n <Legends legends={legendItems} centerLegends overflowText={props.legendsOverflowText} {...props.legendProps} />\n );\n }\n\n function _getDefaultTextData(data: ChartProps): JSXElement {\n const chartDataMode = props.chartDataMode || 'default';\n\n if (chartDataMode === 'hidden') {\n return <></>; // No text data for hidden mode\n }\n\n const { culture } = props;\n const accessibilityData = getAccessibleDataObject(data.chartDataAccessibilityData!, 'text', false);\n if (!isSingleBar) {\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(total, culture) as React.ReactNode}\n </div>\n );\n }\n\n const chartData: ChartDataPoint = data!.chartData![0];\n const x = chartData.horizontalBarChartdata!.x;\n const y = chartData.horizontalBarChartdata!.total!;\n\n switch (chartDataMode) {\n case 'default':\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(x, culture) as React.ReactNode}\n </div>\n );\n case 'fraction':\n return (\n <div {...accessibilityData}>\n <span className={classes.chartTitleRight}>{formatToLocaleString(x, culture) as React.ReactNode}</span>\n <span className={classes.chartDataTextDenominator}>{' / ' + formatToLocaleString(y, culture)}</span>\n </div>\n );\n case 'percentage':\n const dataRatioPercentage = `${formatToLocaleString(Math.round((x / y) * 100), culture)}%`;\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {dataRatioPercentage}\n </div>\n );\n }\n }\n\n function _createBenchmark(data: ChartProps): JSXElement {\n if (data.chartData![0].horizontalBarChartdata!.total === undefined) {\n return <></>;\n }\n const totalData = data.chartData![0].horizontalBarChartdata!.total!;\n const benchmarkData = data.chartData![0].data;\n const benchmarkRatio = Math.round(((benchmarkData ? benchmarkData : 0) / totalData) * 100);\n\n const benchmarkStyles = {\n left: 'calc(' + benchmarkRatio + '% - 4px)',\n };\n\n return (\n <div className={classes.benchmarkContainer}>\n <div className={classes.triangle} style={benchmarkStyles} />\n </div>\n );\n }\n\n /**\n * This functions returns an array of <rect> elements, which form the bars\n * For each bar an x value, and a width needs to be specified\n * The computations are done based on percentages\n * Extra margin is also provided, in the x value to provide some spacing in between the bars\n */\n\n function _createBars(data: ChartProps): JSXElement[] {\n const noOfBars =\n data.chartData?.reduce((count: number, point: ChartDataPoint) => (count += (point.data || 0) > 0 ? 1 : 0), 0) ||\n 1;\n const totalMarginPercent = barSpacingInPercent * (noOfBars - 1);\n const defaultColors: string[] = [\n tokens.colorPaletteBlueForeground2,\n tokens.colorPaletteCornflowerForeground2,\n tokens.colorPaletteDarkGreenForeground2,\n tokens.colorPaletteNavyForeground2,\n tokens.colorPaletteDarkOrangeForeground2,\n ];\n // calculating starting point of each bar and it's range\n const startingPoint: number[] = [];\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n let prevPosition = 0;\n let value = 0;\n\n let sumOfPercent = 0;\n data.chartData!.map((point: ChartDataPoint, index: number) => {\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n\n return sumOfPercent;\n });\n\n /**\n * The %age of the space occupied by the margin needs to subtracted\n * while computing the scaling ratio, since the margins are not being\n * scaled down, only the data is being scaled down from a higher percentage to lower percentage\n * Eg: 95% of the space is taken by the bars, 5% by the margins\n * Now if the sumOfPercent is 120% -> This needs to be scaled down to 95%, not 100%\n * since that's only space available to the bars\n */\n const scalingRatio = sumOfPercent !== 0 ? (sumOfPercent - totalMarginPercent) / 100 : 1;\n\n const bars = data.chartData!.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color ? point.color : defaultColors[Math.floor(Math.random() * 4 + 1)];\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n if (index > 0) {\n prevPosition += value;\n }\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1 / scalingRatio;\n } else {\n value = value / scalingRatio;\n }\n startingPoint.push(prevPosition);\n\n const xValue = point.horizontalBarChartdata!.x;\n const placeholderIndex = 1;\n const isLegendSelected: boolean = _legendHighlighted(point.legend) || _noLegendHighlighted();\n\n // Render bar label instead of placeholder bar for absolute-scale variant\n if (index === placeholderIndex && props.variant === HorizontalBarChartVariant.AbsoluteScale) {\n if (props.hideLabels) {\n return <text key={index} />;\n }\n\n const barValue = data.chartData![0].horizontalBarChartdata!.x;\n\n return (\n <text\n key={index}\n x={`${_isRTL ? 100 - startingPoint[index] : startingPoint[index]}%`}\n y={_barHeight / 2}\n dominantBaseline=\"central\"\n transform={`translate(${_isRTL ? -4 : 4})`}\n className={classes.barLabel}\n aria-hidden={true}\n >\n {formatScientificLimitWidth(barValue)}\n </text>\n );\n }\n\n return (\n <rect\n key={index}\n x={`${\n _isRTL\n ? 100 - startingPoint[index] - value - index * barSpacingInPercent\n : startingPoint[index] + index * barSpacingInPercent\n }%`}\n y={0}\n width={value + '%'}\n height={_barHeight}\n fill={color}\n onMouseOver={\n _showToolTipOnSegment && point.legend !== '' ? event => _hoverOn(event, xValue, point) : undefined\n }\n onFocus={_showToolTipOnSegment && point.legend !== '' ? event => _hoverOn(event, xValue, point) : undefined}\n role=\"img\"\n aria-label={_getAriaLabel(point)}\n onBlur={_hoverOff}\n onMouseLeave={_hoverOff}\n className={classes.barWrapper}\n opacity={isLegendSelected ? 1 : 0.1}\n tabIndex={_legendHighlighted(point.legend!) || _noLegendHighlighted() ? 0 : undefined}\n />\n );\n });\n return bars;\n }\n\n const _getAriaLabel = (point: ChartDataPoint): string => {\n const legend = point.xAxisCalloutData || point.legend;\n const yValue =\n point.yAxisCalloutData ||\n (point.horizontalBarChartdata\n ? `${point.horizontalBarChartdata.x}/${point.horizontalBarChartdata.total ?? ''}`\n : 0);\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n function updatePosition(newX: number, newY: number): void {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n\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 React.useEffect(() => {\n const svgWidth = barChartSvgRef?.current?.getBoundingClientRect().width || 0;\n const MARGIN_WIDTH_IN_PX = 3;\n if (svgWidth) {\n const currentBarSpacing = (MARGIN_WIDTH_IN_PX / svgWidth) * 100;\n setBarSpacingInPercent(currentBarSpacing);\n }\n }, [barChartSvgRef]);\n\n function _legendHighlighted(barLegend?: string) {\n if (barLegend === undefined) {\n return false;\n }\n return selectedLegend === barLegend || (selectedLegend === '' && activeLegend === barLegend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted() {\n return selectedLegend === '' && activeLegend === '';\n }\n\n const { data } = props;\n _adjustProps();\n const classes = useHorizontalBarChartStyles(props);\n const focusAttributes = useFocusableGroup();\n const legendButtons = _createLegends(data!);\n\n let datapoint: number | undefined = 0;\n return !_isChartEmpty() ? (\n <div className={classes.root} onMouseLeave={_handleChartMouseLeave}>\n {data!.map((points: ChartProps, index: number) => {\n if (points.chartData && points.chartData![0] && points.chartData![0].horizontalBarChartdata!.x) {\n datapoint = points.chartData![0].horizontalBarChartdata!.x;\n } else {\n datapoint = 0;\n }\n isSingleBar = props.showLegendForSinglePointBar\n ? false\n : points.chartData!.length === 1 || (points.chartData!.length > 1 && points.chartData![1].legend === '');\n if (isSingleBar) {\n points.chartData![1] = {\n legend: '',\n horizontalBarChartdata: {\n x: points.chartData![0].horizontalBarChartdata!.total! - datapoint!,\n total: points.chartData![0].horizontalBarChartdata!.total!,\n },\n color: tokens.colorBackgroundOverlay,\n };\n }\n\n // Hide right side text of chart title for absolute-scale variant\n const chartDataText =\n props.variant === HorizontalBarChartVariant.AbsoluteScale ? null : _getChartDataText(points!);\n const bars = _createBars(points!);\n const keyVal = _uniqLineText + '_' + index;\n // ToDo - Showtriangle property is per data series. How to account for it in the new stylesheet\n /* const classes = useHorizontalBarChartStyles(props.styles!, {\n width: props.width,\n showTriangle: !!points!.chartData![0].data,\n variant: props.variant,\n }); */\n\n return (\n <div key={index}>\n <div className={classes.items} {...focusAttributes}>\n <div className={classes.chartTitle}>\n {points!.chartTitle && (\n <FocusableTooltipText\n className={classes.chartTitleLeft}\n content={points!.chartTitle}\n accessibilityData={points!.chartTitleAccessibilityData}\n />\n )}\n {chartDataText}\n </div>\n {points!.chartData![0].data && _createBenchmark(points!)}\n <svg ref={barChartSvgRef} className={classes.chart} aria-label={points!.chartTitle}>\n <g\n id={keyVal}\n ref={(e: SVGGElement) => {\n _refCallback(e, points!.chartData![0].legend);\n }}\n // NOTE: points.chartData![0] contains current data value\n onClick={() => {\n const p = points!.chartData![0];\n if (p && p.onClick) {\n p.onClick();\n }\n }}\n >\n {bars}\n </g>\n </svg>\n </div>\n </div>\n );\n })}\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={legend!}\n YValue={hoverValue!}\n color={lineColor}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerHorizontalBar\n ? props.onRenderCalloutPerHorizontalBar(barCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(barCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!isSingleBar && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendButtons}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n //TODO validate and fix focus border for issue for popover\n});\nHorizontalBarChart.displayName = 'HorizontalBarChart';\n"],"names":["React","useHorizontalBarChartStyles","HorizontalBarChartVariant","formatToLocaleString","formatScientificLimitWidth","getAccessibleDataObject","useRtl","useId","tokens","useFocusableGroup","ChartPopover","FocusableTooltipText","Legends","HorizontalBarChart","forwardRef","props","forwardedRef","legendContainer","useRef","_uniqLineText","_refArray","_isRTL","barChartSvgRef","createRef","_emptyChartId","_barHeight","_calloutAnchorPoint","isSingleBar","_showToolTipOnSegment","hideTooltip","hoverValue","setHoverValue","useState","lineColor","setLineColor","legend","setLegend","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","barCalloutProps","setBarCalloutProps","barSpacingInPercent","setBarSpacingInPercent","isPopoverOpen","setPopoverOpen","clickPosition","setClickPosition","x","y","selectedLegend","setSelectedLegend","activeLegend","setActiveLegend","_refCallback","element","legendTitle","push","index","refElement","_hoverOn","event","hoverVal","point","_legendHighlighted","_noLegendHighlighted","clientX","clientY","targetRect","target","getBoundingClientRect","left","width","top","height","updatePosition","color","xAxisCalloutData","yAxisCalloutData","_hoverOff","_handleChartMouseLeave","_adjustProps","barHeight","_getChartDataText","data","_getDefaultTextData","_createLegends","chartProps","legendItems","flatMap","chartData","map","dataPoint","title","action","hoverAction","onMouseOutAction","legends","centerLegends","overflowText","legendsOverflowText","legendProps","chartDataMode","culture","accessibilityData","chartDataAccessibilityData","total","reduce","acc","horizontalBarChartdata","div","className","classes","chartTitleRight","span","chartDataTextDenominator","dataRatioPercentage","Math","round","_createBenchmark","undefined","totalData","benchmarkData","benchmarkRatio","benchmarkStyles","benchmarkContainer","triangle","style","_createBars","noOfBars","count","totalMarginPercent","defaultColors","colorPaletteBlueForeground2","colorPaletteCornflowerForeground2","colorPaletteDarkGreenForeground2","colorPaletteNavyForeground2","colorPaletteDarkOrangeForeground2","startingPoint","prevPosition","value","sumOfPercent","pointData","scalingRatio","bars","floor","random","xValue","placeholderIndex","isLegendSelected","variant","AbsoluteScale","hideLabels","text","key","barValue","dominantBaseline","transform","barLabel","aria-hidden","rect","fill","onMouseOver","onFocus","role","aria-label","_getAriaLabel","onBlur","onMouseLeave","barWrapper","opacity","tabIndex","yValue","callOutAccessibilityData","ariaLabel","_isChartEmpty","length","newX","newY","threshold","distance","sqrt","pow","useEffect","svgWidth","current","MARGIN_WIDTH_IN_PX","currentBarSpacing","barLegend","focusAttributes","legendButtons","datapoint","root","points","showLegendForSinglePointBar","colorBackgroundOverlay","chartDataText","keyVal","items","chartTitle","chartTitleLeft","content","chartTitleAccessibilityData","svg","ref","chart","g","id","e","onClick","p","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerHorizontalBar","customCalloutProps","calloutPropsPerDataPoint","isCartesian","displayName"],"mappings":"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"}
|
package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useHorizontalBarChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { HorizontalBarChartVariant } from './index';\nimport { HighContrastSelector } from '../../utilities/index';\n/**\n * @internal\n */ export const hbcClassNames = {\n root: 'fui-hbc__root',\n items: 'fui-hbc__items',\n chart: 'fui-hbc__chart',\n chartTitle: 'fui-hbc__chartTitle',\n barWrapper: 'fui-hbc__barWrapper',\n chartTitleLeft: 'fui-hbc__chartTitleLeft',\n chartTitleRight: 'fui-hbc__chartTitleRight',\n chartDataTextDenominator: 'fui-hbc__textDenom',\n benchmarkContainer: 'fui-hbc__benchmark',\n triangle: 'fui-hbc__triangle',\n barLabel: 'fui-hbc__barLabel',\n chartWrapper: 'fui-hbc__chartWrapper',\n legendContainer: 'fui-hbc__legendContainer'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%'\n },\n items10pMargin: {\n marginBottom: tokens.spacingVerticalMNudge\n },\n items16pMargin: {\n marginBottom: tokens.spacingVerticalL\n },\n chart: {\n width: '100%',\n height: '12px',\n display: 'block',\n overflow: 'visible'\n },\n barWrapper: {},\n chartTitle: {\n ...typographyStyles.caption1,\n display: 'flex',\n justifyContent: 'space-between'\n },\n chartTitleLeft: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'block',\n color: tokens.colorNeutralForeground1\n },\n chartTitleLeft4pMargin: {\n marginBottom: '4px'\n },\n chartTitleLeft5pMargin: {\n marginBottom: '5px'\n },\n chartTitleRight: {\n ...typographyStyles.body1Strong,\n color: tokens.colorNeutralForeground1\n },\n chartDataTextDenominator: {\n ...typographyStyles.body1,\n color: tokens.colorNeutralForeground1\n },\n benchmarkContainer: {\n position: 'relative',\n height: '7px',\n marginTop: '-3px',\n marginBottom: '-1px'\n },\n triangle: {\n width: '0',\n height: '0',\n ...shorthands.borderLeft('4px', 'solid', 'transparent'),\n ...shorthands.borderRight('4px', 'solid', 'transparent'),\n ...shorthands.borderTop('7px', 'solid'),\n borderTopColor: tokens.colorPaletteBlueBorderActive,\n marginBottom: tokens.spacingVerticalXS,\n position: 'absolute'\n },\n barLabel: {\n ...typographyStyles.caption1Strong,\n fill: tokens.colorNeutralForeground1,\n [HighContrastSelector]: {\n stroke: 'CanvasText'\n }\n },\n chartWrapper40ppadding: {\n paddingRight: '40p'\n },\n chartWrapper0ppadding: {\n paddingRight: tokens.spacingHorizontalNone\n },\n legendContainer: {\n paddingTop: tokens.spacingVerticalL\n }\n});\n/**\n * Apply styling to the Carousel slots based on the state\n */ export const useHorizontalBarChartStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2, _props_styles3, _props_styles4, _props_styles5, _props_styles6, _props_styles7, _props_styles8, _props_styles9, _props_styles10, _props_styles11, _props_styles12;\n const { className, showTriangle, variant, hideLabels } = props; // ToDo - width, barHeight is non enumerable. Need to be used inline.\n const baseStyles = useStyles();\n return {\n root: mergeClasses(hbcClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n items: mergeClasses(hbcClassNames.items, showTriangle || variant === HorizontalBarChartVariant.AbsoluteScale ? baseStyles.items16pMargin : baseStyles.items10pMargin, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.items),\n chart: mergeClasses(hbcClassNames.chart, baseStyles.chart, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.chart),\n chartTitle: mergeClasses(hbcClassNames.chartTitle, baseStyles.chartTitle, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.chartTitle),\n barWrapper: mergeClasses(hbcClassNames.barWrapper, baseStyles.barWrapper, (_props_styles4 = props.styles) === null || _props_styles4 === void 0 ? void 0 : _props_styles4.barWrapper),\n chartTitleLeft: mergeClasses(hbcClassNames.chartTitleLeft, baseStyles.chartTitleLeft, variant === HorizontalBarChartVariant.AbsoluteScale ? baseStyles.chartTitleLeft4pMargin : baseStyles.chartTitleLeft5pMargin, (_props_styles5 = props.styles) === null || _props_styles5 === void 0 ? void 0 : _props_styles5.chartTitleLeft),\n chartTitleRight: mergeClasses(hbcClassNames.chartTitleRight, baseStyles.chartTitleRight, (_props_styles6 = props.styles) === null || _props_styles6 === void 0 ? void 0 : _props_styles6.chartTitleRight),\n chartDataTextDenominator: mergeClasses(hbcClassNames.chartDataTextDenominator, baseStyles.chartDataTextDenominator, (_props_styles7 = props.styles) === null || _props_styles7 === void 0 ? void 0 : _props_styles7.chartDataTextDenominator),\n benchmarkContainer: mergeClasses(hbcClassNames.benchmarkContainer, baseStyles.benchmarkContainer, (_props_styles8 = props.styles) === null || _props_styles8 === void 0 ? void 0 : _props_styles8.benchmarkContainer),\n triangle: mergeClasses(hbcClassNames.triangle, baseStyles.triangle, (_props_styles9 = props.styles) === null || _props_styles9 === void 0 ? void 0 : _props_styles9.triangle),\n barLabel: mergeClasses(hbcClassNames.barLabel, baseStyles.barLabel, (_props_styles10 = props.styles) === null || _props_styles10 === void 0 ? void 0 : _props_styles10.barLabel),\n chartWrapper: mergeClasses(hbcClassNames.chartWrapper, variant === HorizontalBarChartVariant.AbsoluteScale && !hideLabels ? baseStyles.chartWrapper40ppadding : baseStyles.chartWrapper0ppadding, (_props_styles11 = props.styles) === null || _props_styles11 === void 0 ? void 0 : _props_styles11.chartWrapper),\n legendContainer: mergeClasses(hbcClassNames.legendContainer, baseStyles.legendContainer, (_props_styles12 = props.styles) === null || _props_styles12 === void 0 ? void 0 : _props_styles12.legendContainer)\n };\n};\n"],"names":["__styles","mergeClasses","shorthands","tokens","typographyStyles","HorizontalBarChartVariant","HighContrastSelector","hbcClassNames","root","items","chart","chartTitle","barWrapper","chartTitleLeft","chartTitleRight","chartDataTextDenominator","benchmarkContainer","triangle","barLabel","chartWrapper","legendContainer","useStyles","mc9l5x","Beiy3e4","a9b677","items10pMargin","jrapky","items16pMargin","Bqenvij","B68tc82","Bmxbyg5","Bpg54ce","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","Brf1p80","ygn44y","Huce71","sj55zd","chartTitleLeft4pMargin","chartTitleLeft5pMargin","qhf8xq","B6of3ja","ibv6hh","wvpqe5","zhjwy3","Bekrc4i","vrafjx","h3c5rm","B4j52fo","icvyot","g2u3we","Bkfmm31","Bpvj6i6","chartWrapper40ppadding","z189sj","chartWrapper0ppadding","z8tnut","d","p","m","useHorizontalBarChartStyles","props","_props_styles","_props_styles1","_props_styles2","_props_styles3","_props_styles4","_props_styles5","_props_styles6","_props_styles7","_props_styles8","_props_styles9","_props_styles10","_props_styles11","_props_styles12","className","showTriangle","variant","hideLabels","baseStyles","styles","AbsoluteScale"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["useHorizontalBarChartStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { HorizontalBarChartVariant } from './index';\nimport { HighContrastSelector } from '../../utilities/index';\n/**\n * @internal\n */ export const hbcClassNames = {\n root: 'fui-hbc__root',\n items: 'fui-hbc__items',\n chart: 'fui-hbc__chart',\n chartTitle: 'fui-hbc__chartTitle',\n barWrapper: 'fui-hbc__barWrapper',\n chartTitleLeft: 'fui-hbc__chartTitleLeft',\n chartTitleRight: 'fui-hbc__chartTitleRight',\n chartDataTextDenominator: 'fui-hbc__textDenom',\n benchmarkContainer: 'fui-hbc__benchmark',\n triangle: 'fui-hbc__triangle',\n barLabel: 'fui-hbc__barLabel',\n chartWrapper: 'fui-hbc__chartWrapper',\n legendContainer: 'fui-hbc__legendContainer'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%'\n },\n items10pMargin: {\n marginBottom: tokens.spacingVerticalMNudge\n },\n items16pMargin: {\n marginBottom: tokens.spacingVerticalL\n },\n chart: {\n width: '100%',\n height: '12px',\n display: 'block',\n overflow: 'visible'\n },\n barWrapper: {},\n chartTitle: {\n ...typographyStyles.caption1,\n display: 'flex',\n justifyContent: 'space-between'\n },\n chartTitleLeft: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'block',\n color: tokens.colorNeutralForeground1\n },\n chartTitleLeft4pMargin: {\n marginBottom: '4px'\n },\n chartTitleLeft5pMargin: {\n marginBottom: '5px'\n },\n chartTitleRight: {\n ...typographyStyles.body1Strong,\n color: tokens.colorNeutralForeground1\n },\n chartDataTextDenominator: {\n ...typographyStyles.body1,\n color: tokens.colorNeutralForeground1\n },\n benchmarkContainer: {\n position: 'relative',\n height: '7px',\n marginTop: '-3px',\n marginBottom: '-1px'\n },\n triangle: {\n width: '0',\n height: '0',\n ...shorthands.borderLeft('4px', 'solid', 'transparent'),\n ...shorthands.borderRight('4px', 'solid', 'transparent'),\n ...shorthands.borderTop('7px', 'solid'),\n borderTopColor: tokens.colorPaletteBlueBorderActive,\n marginBottom: tokens.spacingVerticalXS,\n position: 'absolute'\n },\n barLabel: {\n ...typographyStyles.caption1Strong,\n fill: tokens.colorNeutralForeground1,\n [HighContrastSelector]: {\n stroke: 'CanvasText'\n }\n },\n chartWrapper40ppadding: {\n paddingRight: '40p'\n },\n chartWrapper0ppadding: {\n paddingRight: tokens.spacingHorizontalNone\n },\n legendContainer: {\n paddingTop: tokens.spacingVerticalL\n }\n});\n/**\n * Apply styling to the Carousel slots based on the state\n */ export const useHorizontalBarChartStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2, _props_styles3, _props_styles4, _props_styles5, _props_styles6, _props_styles7, _props_styles8, _props_styles9, _props_styles10, _props_styles11, _props_styles12;\n const { className, showTriangle, variant, hideLabels } = props; // ToDo - width, barHeight is non enumerable. Need to be used inline.\n const baseStyles = useStyles();\n return {\n root: mergeClasses(hbcClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n items: mergeClasses(hbcClassNames.items, showTriangle || variant === HorizontalBarChartVariant.AbsoluteScale ? baseStyles.items16pMargin : baseStyles.items10pMargin, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.items),\n chart: mergeClasses(hbcClassNames.chart, baseStyles.chart, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.chart),\n chartTitle: mergeClasses(hbcClassNames.chartTitle, baseStyles.chartTitle, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.chartTitle),\n barWrapper: mergeClasses(hbcClassNames.barWrapper, baseStyles.barWrapper, (_props_styles4 = props.styles) === null || _props_styles4 === void 0 ? void 0 : _props_styles4.barWrapper),\n chartTitleLeft: mergeClasses(hbcClassNames.chartTitleLeft, baseStyles.chartTitleLeft, variant === HorizontalBarChartVariant.AbsoluteScale ? baseStyles.chartTitleLeft4pMargin : baseStyles.chartTitleLeft5pMargin, (_props_styles5 = props.styles) === null || _props_styles5 === void 0 ? void 0 : _props_styles5.chartTitleLeft),\n chartTitleRight: mergeClasses(hbcClassNames.chartTitleRight, baseStyles.chartTitleRight, (_props_styles6 = props.styles) === null || _props_styles6 === void 0 ? void 0 : _props_styles6.chartTitleRight),\n chartDataTextDenominator: mergeClasses(hbcClassNames.chartDataTextDenominator, baseStyles.chartDataTextDenominator, (_props_styles7 = props.styles) === null || _props_styles7 === void 0 ? void 0 : _props_styles7.chartDataTextDenominator),\n benchmarkContainer: mergeClasses(hbcClassNames.benchmarkContainer, baseStyles.benchmarkContainer, (_props_styles8 = props.styles) === null || _props_styles8 === void 0 ? void 0 : _props_styles8.benchmarkContainer),\n triangle: mergeClasses(hbcClassNames.triangle, baseStyles.triangle, (_props_styles9 = props.styles) === null || _props_styles9 === void 0 ? void 0 : _props_styles9.triangle),\n barLabel: mergeClasses(hbcClassNames.barLabel, baseStyles.barLabel, (_props_styles10 = props.styles) === null || _props_styles10 === void 0 ? void 0 : _props_styles10.barLabel),\n chartWrapper: mergeClasses(hbcClassNames.chartWrapper, variant === HorizontalBarChartVariant.AbsoluteScale && !hideLabels ? baseStyles.chartWrapper40ppadding : baseStyles.chartWrapper0ppadding, (_props_styles11 = props.styles) === null || _props_styles11 === void 0 ? void 0 : _props_styles11.chartWrapper),\n legendContainer: mergeClasses(hbcClassNames.legendContainer, baseStyles.legendContainer, (_props_styles12 = props.styles) === null || _props_styles12 === void 0 ? void 0 : _props_styles12.legendContainer)\n };\n};\n"],"names":["__styles","mergeClasses","shorthands","tokens","typographyStyles","HorizontalBarChartVariant","HighContrastSelector","hbcClassNames","root","items","chart","chartTitle","barWrapper","chartTitleLeft","chartTitleRight","chartDataTextDenominator","benchmarkContainer","triangle","barLabel","chartWrapper","legendContainer","useStyles","mc9l5x","Beiy3e4","a9b677","items10pMargin","jrapky","items16pMargin","Bqenvij","B68tc82","Bmxbyg5","Bpg54ce","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","Brf1p80","ygn44y","Huce71","sj55zd","chartTitleLeft4pMargin","chartTitleLeft5pMargin","qhf8xq","B6of3ja","ibv6hh","wvpqe5","zhjwy3","Bekrc4i","vrafjx","h3c5rm","B4j52fo","icvyot","g2u3we","Bkfmm31","Bpvj6i6","chartWrapper40ppadding","z189sj","chartWrapper0ppadding","z8tnut","d","p","m","useHorizontalBarChartStyles","props","_props_styles","_props_styles1","_props_styles2","_props_styles3","_props_styles4","_props_styles5","_props_styles6","_props_styles7","_props_styles8","_props_styles9","_props_styles10","_props_styles11","_props_styles12","className","showTriangle","variant","hideLabels","baseStyles","styles","AbsoluteScale"],"mappings":"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"}
|