@fluentui/react-charts 9.1.10 → 9.2.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 +41 -2
- package/dist/index.d.ts +44 -3
- package/lib/AreaChart.js.map +1 -1
- package/lib/CartesianChart.js.map +1 -1
- package/lib/DeclarativeChart.js.map +1 -1
- package/lib/DonutChart.js.map +1 -1
- package/lib/FunnelChart.js.map +1 -1
- package/lib/GanttChart.js.map +1 -1
- package/lib/GaugeChart.js.map +1 -1
- package/lib/GroupedVerticalBarChart.js.map +1 -1
- package/lib/HeatMapChart.js.map +1 -1
- package/lib/HorizontalBarChart.js.map +1 -1
- package/lib/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/Legends.js.map +1 -1
- package/lib/LineChart.js.map +1 -1
- package/lib/Popover.js.map +1 -1
- package/lib/ResponsiveContainer.js.map +1 -1
- package/lib/SankeyChart.js.map +1 -1
- package/lib/ScatterChart.js.map +1 -1
- package/lib/Sparkline.js.map +1 -1
- package/lib/VerticalBarChart.js.map +1 -1
- package/lib/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/AreaChart/AreaChart.js +11 -3
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/AreaChart.types.js.map +1 -1
- package/lib/components/AreaChart/index.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +1 -2
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +41 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +2 -1
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib/components/CommonComponents/index.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +1 -2
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +128 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +1 -2
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +126 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.js +15 -7
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +90 -29
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DeclarativeChart/imageExporter.js +1 -0
- package/lib/components/DeclarativeChart/imageExporter.js.map +1 -1
- package/lib/components/DeclarativeChart/index.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -1
- package/lib/components/DonutChart/Arc/index.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js +1 -2
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +44 -0
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -0
- package/lib/components/DonutChart/DonutChart.js +11 -3
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib/components/DonutChart/Pie/Pie.types.js.map +1 -1
- package/lib/components/DonutChart/Pie/index.js.map +1 -1
- package/lib/components/DonutChart/Pie/usePieStyles.styles.js +1 -2
- package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js +29 -0
- package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -0
- package/lib/components/DonutChart/index.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +1 -2
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +45 -0
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -0
- package/lib/components/FunnelChart/FunnelChart.js +10 -1
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib/components/FunnelChart/funnelGeometry.js.map +1 -1
- package/lib/components/FunnelChart/index.js.map +1 -1
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +1 -2
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +51 -0
- package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -0
- package/lib/components/GanttChart/GanttChart.js +19 -2
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib/components/GanttChart/index.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js +1 -2
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js +23 -0
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -0
- package/lib/components/GaugeChart/GaugeChart.js +9 -2
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GaugeChart/index.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +1 -2
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +142 -0
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +70 -58
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/index.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +53 -0
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib/components/HeatMapChart/HeatMapChart.js +11 -3
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HeatMapChart/index.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -2
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +38 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -0
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js +23 -26
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
- package/lib/components/HorizontalBarChart/index.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +1 -2
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +120 -0
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +9 -2
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/index.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -2
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +39 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -0
- package/lib/components/Legends/Legends.js +28 -10
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/Legends/Legends.types.js.map +1 -1
- package/lib/components/Legends/OverflowMenu.js.map +1 -1
- package/lib/components/Legends/index.js.map +1 -1
- package/lib/components/Legends/shape.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.js +57 -14
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.raw.js +138 -0
- package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
- package/lib/components/LineChart/LineChart.js +9 -2
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.types.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib/components/LineChart/index.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +1 -2
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +52 -0
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -0
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
- package/lib/components/ResponsiveContainer/index.js.map +1 -1
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -2
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +28 -0
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -0
- package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +5 -1
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib/components/SankeyChart/index.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +1 -2
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +77 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -0
- package/lib/components/ScatterChart/ScatterChart.js +11 -3
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/index.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +1 -2
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +43 -0
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -0
- package/lib/components/Sparkline/Sparkline.js.map +1 -1
- package/lib/components/Sparkline/Sparkline.types.js.map +1 -1
- package/lib/components/Sparkline/index.js.map +1 -1
- package/lib/components/Sparkline/useSparklineStyles.styles.js +1 -2
- package/lib/components/Sparkline/useSparklineStyles.styles.raw.js +30 -0
- package/lib/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -0
- package/lib/components/VerticalBarChart/VerticalBarChart.js +62 -28
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib/components/VerticalBarChart/index.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +58 -0
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +22 -8
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/index.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +49 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/types/EventAnnotation.js.map +1 -1
- package/lib/types/LegendDataItem.js.map +1 -1
- package/lib/types/index.js.map +1 -1
- package/lib/utilities/FocusableTooltipText.js.map +1 -1
- package/lib/utilities/KeyCodes.js.map +1 -1
- package/lib/utilities/SVGTooltipText.js +2 -0
- package/lib/utilities/SVGTooltipText.js.map +1 -1
- package/lib/utilities/async-utils.js.map +1 -1
- package/lib/utilities/colors.js.map +1 -1
- package/lib/utilities/getWindow.js.map +1 -1
- package/lib/utilities/image-export-utils.js +256 -0
- package/lib/utilities/image-export-utils.js.map +1 -0
- package/lib/utilities/index.js.map +1 -1
- package/lib/utilities/overflow-utils.js.map +1 -1
- package/lib/utilities/string.js.map +1 -1
- package/lib/utilities/test-data.js.map +1 -1
- package/lib/utilities/utilities.js +50 -5
- package/lib/utilities/utilities.js.map +1 -1
- package/lib/utilities/vbc-utils.js.map +1 -1
- package/lib-commonjs/AreaChart.js.map +1 -1
- package/lib-commonjs/CartesianChart.js.map +1 -1
- package/lib-commonjs/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/DonutChart.js.map +1 -1
- package/lib-commonjs/FunnelChart.js.map +1 -1
- package/lib-commonjs/GanttChart.js.map +1 -1
- package/lib-commonjs/GaugeChart.js.map +1 -1
- package/lib-commonjs/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/HeatMapChart.js.map +1 -1
- package/lib-commonjs/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/Legends.js.map +1 -1
- package/lib-commonjs/LineChart.js.map +1 -1
- package/lib-commonjs/Popover.js.map +1 -1
- package/lib-commonjs/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/SankeyChart.js.map +1 -1
- package/lib-commonjs/ScatterChart.js.map +1 -1
- package/lib-commonjs/Sparkline.js.map +1 -1
- package/lib-commonjs/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +10 -2
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -1
- package/lib-commonjs/components/AreaChart/index.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +57 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +2 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/index.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +142 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +140 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +14 -6
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +93 -29
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js +1 -0
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +58 -0
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/DonutChart/DonutChart.js +10 -2
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +1 -1
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js +43 -0
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/DonutChart/index.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +59 -0
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +10 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/funnelGeometry.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/index.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +65 -0
- package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/GanttChart/GanttChart.js +18 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib-commonjs/components/GanttChart/index.js.map +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js +39 -0
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +9 -2
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/index.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +160 -0
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +70 -58
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/index.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +69 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +10 -2
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/index.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +56 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +23 -26
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/index.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +134 -0
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +9 -2
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +55 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/Legends/Legends.js +28 -10
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
- package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
- package/lib-commonjs/components/Legends/index.js.map +1 -1
- package/lib-commonjs/components/Legends/shape.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +101 -28
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +174 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/LineChart/LineChart.js +9 -2
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib-commonjs/components/LineChart/index.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +66 -0
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +46 -0
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +5 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/index.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +95 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +10 -2
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/index.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +57 -0
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
- package/lib-commonjs/components/Sparkline/Sparkline.types.js.map +1 -1
- package/lib-commonjs/components/Sparkline/index.js.map +1 -1
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +1 -1
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js +44 -0
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +62 -28
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/index.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +74 -0
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +22 -8
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/index.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +67 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/types/EventAnnotation.js.map +1 -1
- package/lib-commonjs/types/LegendDataItem.js.map +1 -1
- package/lib-commonjs/types/index.js.map +1 -1
- package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/KeyCodes.js.map +1 -1
- package/lib-commonjs/utilities/SVGTooltipText.js +2 -0
- package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/async-utils.js.map +1 -1
- package/lib-commonjs/utilities/colors.js.map +1 -1
- package/lib-commonjs/utilities/getWindow.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.js +274 -0
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -0
- package/lib-commonjs/utilities/index.js.map +1 -1
- package/lib-commonjs/utilities/overflow-utils.js.map +1 -1
- package/lib-commonjs/utilities/string.js.map +1 -1
- package/lib-commonjs/utilities/test-data.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +56 -5
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
- package/package.json +12 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles } from './useScatterChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { Legend, Legends } from '../Legends/index';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport {\n areArraysEqual,\n createNumericYAxis,\n createStringYAxis,\n domainRangeOfDateForScatterChart,\n domainRangeOfNumericForScatterChart,\n domainRangeOfXStringAxis,\n find,\n findNumericMinMaxOfY,\n IDomainNRange,\n YAxisType,\n} from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ScatterChartDataPoint,\n Chart,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\ntype ScatterChartDataWithIndex = LineChartPoints & { index: number };\n\n// Create a ScatterChart variant which uses these default styles and this styled subcomponent.\n/**\n * ScatterChart component\n * {@docCategory ScatterChart}\n */\nexport const ScatterChart: React.FunctionComponent<ScatterChartProps> = React.forwardRef<\n HTMLDivElement,\n ScatterChartProps\n>((props, forwardedRef) => {\n const _circleId: string = useId('circle');\n const _seriesId: string = useId('seriesID');\n const _verticalLine: string = useId('verticalLine');\n const _tooltipId: string = useId('ScatterChartTooltipId_');\n const _firstRenderOptimization = true;\n const _emptyChartId: string = useId('_ScatterChart_empty');\n let _points: ScatterChartDataWithIndex[] = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _yAxisScale: any = '';\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let renderSeries: JSX.Element[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n const classes = useScatterChartStyles(props);\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<[]>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(false);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const prevSelectedLegendsRef = React.useRef<string[] | undefined>(undefined);\n\n React.useEffect(() => {\n if (\n prevSelectedLegendsRef.current &&\n !areArraysEqual(prevSelectedLegendsRef.current, props.legendProps?.selectedLegends)\n ) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n prevSelectedLegendsRef.current = props.legendProps?.selectedLegends;\n }, [props.legendProps?.selectedLegends]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const _xAxisType: XAxisTypes =\n props.data.lineChartData! &&\n props.data.lineChartData!.length > 0 &&\n props.data.lineChartData![0].data &&\n props.data.lineChartData![0].data.length > 0\n ? (getTypeOfAxis(props.data.lineChartData![0].data[0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n\n const pointsRef = React.useRef<ScatterChartDataWithIndex[] | []>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const calloutPointsRef = React.useRef<any[]>([]);\n React.useEffect(() => {\n /** note that height and width are not used to resize or set as dimesions of the chart,\n * fitParentContainer is responisble for setting the height and width or resizing of the svg/chart\n */\n\n if (_points !== _injectIndexPropertyInScatterChartData(props.data.lineChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data, _points]);\n\n function _injectIndexPropertyInScatterChartData(\n scatterChartData?: LineChartPoints[],\n ): ScatterChartDataWithIndex[] | [] {\n return scatterChartData\n ? scatterChartData.map((item: LineChartPoints, index: number) => {\n let color: string;\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n return {\n ...item,\n index: -1,\n color,\n };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getNumericMinMaxOfY(\n points: LineChartPoints[],\n yAxisType?: YAxisType,\n ): { startValue: number; endValue: number } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { startValue, endValue } = findNumericMinMaxOfY(points, yAxisType);\n let yPadding = 0;\n yPadding = (endValue - startValue) * 0.1;\n\n return {\n startValue: startValue - yPadding,\n endValue: endValue + yPadding,\n };\n }\n\n function _getDomainNRangeValues(\n points: any,\n margins: Margins,\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) {\n domainNRangeValue = domainRangeOfNumericForScatterChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForScatterChart(points, margins, width, isRTL, tickValues! as Date[]);\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeScatterChartData(\n xScale: NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _xAxisScale = xScale;\n _yAxisScale = yScale;\n renderSeries = _createPlot(xElement!, containerHeight!);\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n function _createLegends(data: ScatterChartDataWithIndex[]): JSX.Element {\n const { legendProps } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: ScatterChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n };\n return legend;\n });\n\n return (\n <Legends\n legends={[...legendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n selectedLegends={selectedLegends}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n function _getPointFill(seriesColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return seriesColor;\n }\n }\n\n function _createPlot(xElement: SVGElement, containerHeight: number): JSX.Element[] {\n const series: JSX.Element[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n }\n\n const yMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yPadding = (yMax - yMin) * 0.1;\n const yPaddingRange = Math.abs(_yAxisScale(yMin + yPadding) - _yAxisScale(yMin));\n\n let maxMarkerRange = 40;\n let xPaddingRange = 0;\n if (_xAxisType === XAxisTypes.StringAxis) {\n _xBandwidth = _xAxisScale.bandwidth() / 2;\n xPaddingRange = _xBandwidth;\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as Date)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n const xPadding = (xMax.getTime() - xMin.getTime()) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(new Date(xMin.getTime() + xPadding)) - _xAxisScale(xMin));\n } else {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const xPadding = (xMax - xMin) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(xMin + xPadding) - _xAxisScale(xMin));\n }\n maxMarkerRange = Math.min(maxMarkerRange, Math.min(xPaddingRange, yPaddingRange));\n\n const maxMarkerSize = d3Max(_points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n\n for (let i = _points.length - 1; i >= 0; i--) {\n const pointsForSeries: JSX.Element[] = [];\n\n const legendVal: string = _points[i].legend;\n const seriesColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n\n for (let j = 0; j < _points[i].data.length; j++) {\n const seriesId = `${_seriesId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const { x, y, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[j];\n let circleRadius = 3.5;\n const pointMarkerSize = (_points[i].data[j] as ScatterChartDataPoint).markerSize;\n if ((pointMarkerSize as number) !== undefined) {\n circleRadius = Math.min((pointMarkerSize! * maxMarkerRange) / maxMarkerSize, pointMarkerSize!);\n }\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n pointsForSeries.push(\n <circle\n id={circleId}\n key={circleId}\n r={circleRadius}\n cx={_xAxisScale(x) + _xBandwidth}\n cy={_yAxisScale(y)}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.1}\n fill={_getPointFill(seriesColor, circleId, j, false)}\n stroke={seriesColor}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n }\n\n series.push(\n <g\n key={`series_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, series ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {pointsForSeries}\n </g>,\n );\n }\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(_xAxisScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return series;\n }\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n seriesId: string,\n x: number | Date | string,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (event.target as SVGCircleElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n updatePosition(cx, cy);\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === seriesId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date | string,\n y: number | Date,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, ${_yAxisScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - _yAxisScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n } else {\n setActivePoint(circleId);\n }\n }\n\n /**\n * Screen readers announce an element as clickable if the onClick attribute is set.\n * This function sets the attribute only when a click event handler is provided.*/\n\n function _getClickHandler(func?: () => void): { onClick?: () => void } {\n if (func) {\n return {\n onClick: func,\n };\n }\n\n return {};\n }\n\n function _handleMouseOut() {\n d3Select(`#${_verticalLine}`).attr('visibility', 'hidden');\n }\n\n function _handleChartMouseLeave() {\n _uniqueCallOutID = null;\n setActivePoint('');\n if (isPopoverOpen) {\n setPopoverOpen(false);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string): boolean {\n return _getHighlightedLegend().includes(legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted(): boolean {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _getAriaLabel(seriesIndex: number, pointIndex: number): string {\n const series = _points[seriesIndex];\n const point = series.data[pointIndex];\n const formattedDate = point.x instanceof Date ? formatDate(point.x, props.useUTC) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = series.legend;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n props.data.lineChartData.filter((item: LineChartPoints) => item.data.length).length > 0\n );\n }\n\n const { legendProps, tickValues, tickFormat } = props;\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover,\n hoverXValue,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCalloutForStack: true,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n const xAxisLabels: string[] = _points\n .map((point: ScatterChartDataWithIndex) => point.data.map((dp: ScatterChartDataPoint) => dp.x as string))\n .flat();\n\n _xAxisLabels = [...new Set(xAxisLabels)];\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.ScatterChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n getmargins={_getMargins}\n getGraphData={_initializeScatterChartData}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getNumericMinMaxOfY}\n getDomainNRangeValues={_getDomainNRangeValues}\n createYAxis={createNumericYAxis}\n createStringYAxis={createStringYAxis}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={_firstRenderOptimization}\n datasetForXAxisDomain={_xAxisLabels}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n _xAxisScale = props.xScale!;\n _yAxisScale = props.yScalePrimary!;\n return (\n <>\n <g>\n <line\n x1={0}\n y1={0}\n x2={0}\n y2={props.containerHeight}\n stroke={'#323130'}\n id={_verticalLine}\n visibility={'hidden'}\n strokeDasharray={'5,5'}\n />\n <g>{renderSeries}</g>\n </g>\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nScatterChart.displayName = 'ScatterChart';\n"],"names":["React","useScatterChartStyles","select","d3Select","Legends","max","d3Max","min","d3Min","useId","areArraysEqual","createNumericYAxis","createStringYAxis","domainRangeOfDateForScatterChart","domainRangeOfNumericForScatterChart","domainRangeOfXStringAxis","find","findNumericMinMaxOfY","CartesianChart","tokens","calloutData","ChartTypes","XAxisTypes","tooltipOfAxislabels","getTypeOfAxis","getNextColor","getColorFromToken","formatDate","ScatterChart","forwardRef","props","forwardedRef","_circleId","_seriesId","_verticalLine","_tooltipId","_firstRenderOptimization","_emptyChartId","_points","_injectIndexPropertyInScatterChartData","data","lineChartData","_calloutPoints","_xAxisScale","_yAxisScale","_uniqueCallOutID","_refArray","margins","renderSeries","_xAxisLabels","xAxisCalloutAccessibilityData","_xBandwidth","cartesianChartRef","useRef","classes","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","legendProps","prevSelectedLegendsRef","undefined","useEffect","current","useImperativeHandle","componentRef","chartContainer","_xAxisType","length","StringAxis","pointsRef","calloutPointsRef","height","width","scatterChartData","map","item","index","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getNumericMinMaxOfY","points","yAxisType","startValue","endValue","yPadding","_getDomainNRangeValues","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","DateAxis","_getMargins","_margins","_initializeScatterChartData","xScale","yScale","containerHeight","containerWidth","xElement","_createPlot","_onHoverCardHide","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","legend","title","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","onChange","_onLegendSelectionChange","legendsSelected","event","currentLegend","slice","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","colorNeutralBackground1","series","yMax","yMin","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","xMin","xMax","xPadding","getTime","Date","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentPointHidden","hideNonActiveDots","push","circle","id","key","r","cx","cy","data-is-focusable","onMouseOver","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","opacity","fill","stroke","role","aria-label","_getAriaLabel","tabIndex","g","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","targetRect","target","getBoundingClientRect","left","top","formattedData","useUTC","xVal","found","element","attr","forEach","obj","values","lineHeight","mouseEvent","persist","clientX","clientY","func","onClick","_getHighlightedLegend","includes","seriesIndex","formattedDate","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","filter","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","chartTitle","getmargins","getGraphData","getMinMaxOfYAxis","getDomainNRangeValues","createYAxis","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","yScalePrimary","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/ScatterChart/ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles } from './useScatterChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { Legend, Legends } from '../Legends/index';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport {\n areArraysEqual,\n createNumericYAxis,\n createStringYAxis,\n domainRangeOfDateForScatterChart,\n domainRangeOfNumericForScatterChart,\n domainRangeOfXStringAxis,\n find,\n findNumericMinMaxOfY,\n IDomainNRange,\n YAxisType,\n useRtl,\n} from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ScatterChartDataPoint,\n Chart,\n ImageExportOptions,\n LegendContainer,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\nimport { toImage } from '../../utilities/image-export-utils';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\ntype ScatterChartDataWithIndex = LineChartPoints & { index: number };\n\n// Create a ScatterChart variant which uses these default styles and this styled subcomponent.\n/**\n * ScatterChart component\n * {@docCategory ScatterChart}\n */\nexport const ScatterChart: React.FunctionComponent<ScatterChartProps> = React.forwardRef<\n HTMLDivElement,\n ScatterChartProps\n>((props, forwardedRef) => {\n const _circleId: string = useId('circle');\n const _seriesId: string = useId('seriesID');\n const _verticalLine: string = useId('verticalLine');\n const _tooltipId: string = useId('ScatterChartTooltipId_');\n const _firstRenderOptimization = true;\n const _emptyChartId: string = useId('_ScatterChart_empty');\n let _points: ScatterChartDataWithIndex[] = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _yAxisScale: any = '';\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let renderSeries: JSX.Element[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n const classes = useScatterChartStyles(props);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRTL: boolean = useRtl();\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<[]>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(false);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const prevSelectedLegendsRef = React.useRef<string[] | undefined>(undefined);\n\n React.useEffect(() => {\n if (\n prevSelectedLegendsRef.current &&\n !areArraysEqual(prevSelectedLegendsRef.current, props.legendProps?.selectedLegends)\n ) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n prevSelectedLegendsRef.current = props.legendProps?.selectedLegends;\n }, [props.legendProps?.selectedLegends]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n const _xAxisType: XAxisTypes =\n props.data.lineChartData! &&\n props.data.lineChartData!.length > 0 &&\n props.data.lineChartData![0].data &&\n props.data.lineChartData![0].data.length > 0\n ? (getTypeOfAxis(props.data.lineChartData![0].data[0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n\n const pointsRef = React.useRef<ScatterChartDataWithIndex[] | []>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const calloutPointsRef = React.useRef<any[]>([]);\n React.useEffect(() => {\n /** note that height and width are not used to resize or set as dimesions of the chart,\n * fitParentContainer is responisble for setting the height and width or resizing of the svg/chart\n */\n\n if (_points !== _injectIndexPropertyInScatterChartData(props.data.lineChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data, _points]);\n\n function _injectIndexPropertyInScatterChartData(\n scatterChartData?: LineChartPoints[],\n ): ScatterChartDataWithIndex[] | [] {\n return scatterChartData\n ? scatterChartData.map((item: LineChartPoints, index: number) => {\n let color: string;\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n return {\n ...item,\n index: -1,\n color,\n };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getNumericMinMaxOfY(\n points: LineChartPoints[],\n yAxisType?: YAxisType,\n ): { startValue: number; endValue: number } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { startValue, endValue } = findNumericMinMaxOfY(points, yAxisType);\n let yPadding = 0;\n yPadding = (endValue - startValue) * 0.1;\n\n return {\n startValue: startValue - yPadding,\n endValue: endValue + yPadding,\n };\n }\n\n function _getDomainNRangeValues(\n points: any,\n margins: Margins,\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) {\n domainNRangeValue = domainRangeOfNumericForScatterChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForScatterChart(points, margins, width, isRTL, tickValues! as Date[]);\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeScatterChartData(\n xScale: NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _xAxisScale = xScale;\n _yAxisScale = yScale;\n renderSeries = _createPlot(xElement!, containerHeight!);\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n function _createLegends(data: ScatterChartDataWithIndex[]): JSX.Element {\n const { legendProps } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: ScatterChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n };\n return legend;\n });\n\n return (\n <Legends\n legends={[...legendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n selectedLegends={selectedLegends}\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n function _getPointFill(seriesColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return seriesColor;\n }\n }\n\n function _createPlot(xElement: SVGElement, containerHeight: number): JSX.Element[] {\n const series: JSX.Element[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n }\n\n const yMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yPadding = (yMax - yMin) * 0.1;\n const yPaddingRange = Math.abs(_yAxisScale(yMin + yPadding) - _yAxisScale(yMin));\n\n let maxMarkerRange = 40;\n let xPaddingRange = 0;\n if (_xAxisType === XAxisTypes.StringAxis) {\n _xBandwidth = _xAxisScale.bandwidth() / 2;\n xPaddingRange = _xBandwidth;\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as Date)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n const xPadding = (xMax.getTime() - xMin.getTime()) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(new Date(xMin.getTime() + xPadding)) - _xAxisScale(xMin));\n } else {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const xPadding = (xMax - xMin) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(xMin + xPadding) - _xAxisScale(xMin));\n }\n maxMarkerRange = Math.min(maxMarkerRange, Math.min(xPaddingRange, yPaddingRange));\n\n const maxMarkerSize = d3Max(_points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n\n for (let i = _points.length - 1; i >= 0; i--) {\n const pointsForSeries: JSX.Element[] = [];\n\n const legendVal: string = _points[i].legend;\n const seriesColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n\n for (let j = 0; j < _points[i].data.length; j++) {\n const seriesId = `${_seriesId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const { x, y, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[j];\n let circleRadius = 3.5;\n const pointMarkerSize = (_points[i].data[j] as ScatterChartDataPoint).markerSize;\n if ((pointMarkerSize as number) !== undefined) {\n circleRadius = Math.min((pointMarkerSize! * maxMarkerRange) / maxMarkerSize, pointMarkerSize!);\n }\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n pointsForSeries.push(\n <circle\n id={circleId}\n key={circleId}\n r={circleRadius}\n cx={_xAxisScale(x) + _xBandwidth}\n cy={_yAxisScale(y)}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.1}\n fill={_getPointFill(seriesColor, circleId, j, false)}\n stroke={seriesColor}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n }\n\n series.push(\n <g\n key={`series_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, series ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {pointsForSeries}\n </g>,\n );\n }\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(_xAxisScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return series;\n }\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n seriesId: string,\n x: number | Date | string,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (event.target as SVGCircleElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n updatePosition(cx, cy);\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === seriesId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date | string,\n y: number | Date,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, ${_yAxisScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - _yAxisScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n } else {\n setActivePoint(circleId);\n }\n }\n\n /**\n * Screen readers announce an element as clickable if the onClick attribute is set.\n * This function sets the attribute only when a click event handler is provided.*/\n\n function _getClickHandler(func?: () => void): { onClick?: () => void } {\n if (func) {\n return {\n onClick: func,\n };\n }\n\n return {};\n }\n\n function _handleMouseOut() {\n d3Select(`#${_verticalLine}`).attr('visibility', 'hidden');\n }\n\n function _handleChartMouseLeave() {\n _uniqueCallOutID = null;\n setActivePoint('');\n if (isPopoverOpen) {\n setPopoverOpen(false);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string): boolean {\n return _getHighlightedLegend().includes(legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted(): boolean {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _getAriaLabel(seriesIndex: number, pointIndex: number): string {\n const series = _points[seriesIndex];\n const point = series.data[pointIndex];\n const formattedDate = point.x instanceof Date ? formatDate(point.x, props.useUTC) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = series.legend;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n props.data.lineChartData.filter((item: LineChartPoints) => item.data.length).length > 0\n );\n }\n\n const { legendProps, tickValues, tickFormat } = props;\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover,\n hoverXValue,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCalloutForStack: true,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n const xAxisLabels: string[] = _points\n .map((point: ScatterChartDataWithIndex) => point.data.map((dp: ScatterChartDataPoint) => dp.x as string))\n .flat();\n\n _xAxisLabels = [...new Set(xAxisLabels)];\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.ScatterChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n getmargins={_getMargins}\n getGraphData={_initializeScatterChartData}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getNumericMinMaxOfY}\n getDomainNRangeValues={_getDomainNRangeValues}\n createYAxis={createNumericYAxis}\n createStringYAxis={createStringYAxis}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={_firstRenderOptimization}\n datasetForXAxisDomain={_xAxisLabels}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n _xAxisScale = props.xScale!;\n _yAxisScale = props.yScalePrimary!;\n return (\n <>\n <g>\n <line\n x1={0}\n y1={0}\n x2={0}\n y2={props.containerHeight}\n stroke={'#323130'}\n id={_verticalLine}\n visibility={'hidden'}\n strokeDasharray={'5,5'}\n />\n <g>{renderSeries}</g>\n </g>\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nScatterChart.displayName = 'ScatterChart';\n"],"names":["React","useScatterChartStyles","select","d3Select","Legends","max","d3Max","min","d3Min","useId","areArraysEqual","createNumericYAxis","createStringYAxis","domainRangeOfDateForScatterChart","domainRangeOfNumericForScatterChart","domainRangeOfXStringAxis","find","findNumericMinMaxOfY","useRtl","CartesianChart","tokens","calloutData","ChartTypes","XAxisTypes","tooltipOfAxislabels","getTypeOfAxis","getNextColor","getColorFromToken","formatDate","toImage","ScatterChart","forwardRef","props","forwardedRef","_circleId","_seriesId","_verticalLine","_tooltipId","_firstRenderOptimization","_emptyChartId","_points","_injectIndexPropertyInScatterChartData","data","lineChartData","_calloutPoints","_xAxisScale","_yAxisScale","_uniqueCallOutID","_refArray","margins","renderSeries","_xAxisLabels","xAxisCalloutAccessibilityData","_xBandwidth","cartesianChartRef","useRef","classes","_legendsRef","_isRTL","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","legendProps","prevSelectedLegendsRef","undefined","useEffect","current","useImperativeHandle","componentRef","chartContainer","opts","toSVG","_xAxisType","length","StringAxis","pointsRef","calloutPointsRef","height","width","scatterChartData","map","item","index","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getNumericMinMaxOfY","points","yAxisType","startValue","endValue","yPadding","_getDomainNRangeValues","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","DateAxis","_getMargins","_margins","_initializeScatterChartData","xScale","yScale","containerHeight","containerWidth","xElement","_createPlot","_onHoverCardHide","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","legend","title","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","onChange","_onLegendSelectionChange","legendRef","legendsSelected","event","currentLegend","slice","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","colorNeutralBackground1","series","yMax","yMin","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","xMin","xMax","xPadding","getTime","Date","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentPointHidden","hideNonActiveDots","push","circle","id","key","r","cx","cy","data-is-focusable","onMouseOver","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","opacity","fill","stroke","role","aria-label","_getAriaLabel","tabIndex","g","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","targetRect","target","getBoundingClientRect","left","top","formattedData","useUTC","xVal","found","element","attr","forEach","obj","values","lineHeight","mouseEvent","persist","clientX","clientY","func","onClick","_getHighlightedLegend","includes","seriesIndex","formattedDate","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","filter","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","chartTitle","getmargins","getGraphData","getMinMaxOfYAxis","getDomainNRangeValues","createYAxis","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","yScalePrimary","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScatterChart.types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { RenderFunction } from '../../utilities/index';\nimport {\n ChartProps,\n LineChartPoints,\n Margins,\n Basestate,\n RefArrayData,\n CustomizedCalloutData,\n} from '../../types/index';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n ChildProps,\n} from '../CommonComponents/index';\n\nexport type { ChildProps, LineChartPoints, Margins, Basestate, RefArrayData };\n\n/**\n * Line Chart properties\n * {@docCategory LineChart}\n */\nexport interface ScatterChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: ChartProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ScatterChartStyles;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Callback for getting callout description message\n */\n getCalloutDescriptionMessage?: (calloutDataProps: CustomizedCalloutData) => string | undefined;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n}\n\n/**\n * Scatter Chart styles\n * {@docCategory ScatterChart}\n */\nexport interface ScatterChartStyles extends CartesianChartStyles {}\n\n/**\n * Scatter Chart style properties\n * {@docCategory ScatterChart}\n */\nexport interface ScatterChartStyleProps extends CartesianChartStyleProps {}\n"],"names":[],"mappings":"AAAA,uDAAuD,GAwDvD;;;CAGC,GACD,WAA2E"}
|
|
1
|
+
{"version":3,"sources":["../src/components/ScatterChart/ScatterChart.types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { RenderFunction } from '../../utilities/index';\nimport {\n ChartProps,\n LineChartPoints,\n Margins,\n Basestate,\n RefArrayData,\n CustomizedCalloutData,\n} from '../../types/index';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n ChildProps,\n} from '../CommonComponents/index';\n\nexport type { ChildProps, LineChartPoints, Margins, Basestate, RefArrayData };\n\n/**\n * Line Chart properties\n * {@docCategory LineChart}\n */\nexport interface ScatterChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: ChartProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ScatterChartStyles;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Callback for getting callout description message\n */\n getCalloutDescriptionMessage?: (calloutDataProps: CustomizedCalloutData) => string | undefined;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n}\n\n/**\n * Scatter Chart styles\n * {@docCategory ScatterChart}\n */\nexport interface ScatterChartStyles extends CartesianChartStyles {}\n\n/**\n * Scatter Chart style properties\n * {@docCategory ScatterChart}\n */\nexport interface ScatterChartStyleProps extends CartesianChartStyleProps {}\n"],"names":[],"mappings":"AAAA,uDAAuD,GAwDvD;;;CAGC,GACD,WAA2E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './ScatterChart';\nexport * from './ScatterChart.types';\nexport * from '../../types/index';\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB;AAC/B,cAAc,uBAAuB;AACrC,cAAc,oBAAoB"}
|
|
1
|
+
{"version":3,"sources":["../src/components/ScatterChart/index.ts"],"sourcesContent":["export * from './ScatterChart';\nexport * from './ScatterChart.types';\nexport * from '../../types/index';\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB;AAC/B,cAAc,uBAAuB;AACrC,cAAc,oBAAoB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { makeStyles, mergeClasses, shorthands } from '@griffel/react';
|
|
2
|
+
import { tokens } from '@fluentui/react-theme';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/ export const scatterChartClassNames = {
|
|
6
|
+
tooltip: 'fui-line__tooltip',
|
|
7
|
+
root: 'fui-line__root',
|
|
8
|
+
xAxis: 'fui-line__xAxis',
|
|
9
|
+
yAxis: 'fui-line__yAxis',
|
|
10
|
+
legendContainer: 'fui-line__legendContainer',
|
|
11
|
+
hover: 'fui-line__hover',
|
|
12
|
+
descriptionMessage: 'fui-line__descriptionMessage',
|
|
13
|
+
axisTitle: 'fui-line__axisTitle',
|
|
14
|
+
chartTitle: 'fui-line__chartTitle',
|
|
15
|
+
opacityChangeOnHover: 'fui-line__opacityChangeOnHover',
|
|
16
|
+
shapeStyles: 'fui-line__shapeStyles',
|
|
17
|
+
chartWrapper: 'fui-line__chartWrapper',
|
|
18
|
+
svgTooltip: '',
|
|
19
|
+
chart: ''
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Base Styles
|
|
23
|
+
*/ const useStyles = makeStyles({
|
|
24
|
+
tooltip: {
|
|
25
|
+
display: 'flex',
|
|
26
|
+
flexDirection: 'column',
|
|
27
|
+
...shorthands.padding(tokens.spacingHorizontalS),
|
|
28
|
+
position: 'absolute',
|
|
29
|
+
textAlign: 'center',
|
|
30
|
+
top: tokens.spacingVerticalNone,
|
|
31
|
+
fill: tokens.colorNeutralBackground1,
|
|
32
|
+
borderRadius: tokens.borderRadiusSmall,
|
|
33
|
+
pointerEvents: 'none'
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Apply styling to the Carousel slots based on the state
|
|
38
|
+
*/ export const useScatterChartStyles = (props)=>{
|
|
39
|
+
const baseStyles = useStyles();
|
|
40
|
+
return {
|
|
41
|
+
tooltip: mergeClasses(scatterChartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ )
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ScatterChart/useScatterChartStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { ScatterChartProps, ScatterChartStyles } from './ScatterChart.types';\nimport { SlotClassNames } from '@fluentui/react-utilities/src/index';\n\n/**\n * @internal\n */\nexport const scatterChartClassNames: SlotClassNames<ScatterChartStyles> = {\n tooltip: 'fui-line__tooltip',\n root: 'fui-line__root',\n xAxis: 'fui-line__xAxis',\n yAxis: 'fui-line__yAxis',\n legendContainer: 'fui-line__legendContainer',\n hover: 'fui-line__hover',\n descriptionMessage: 'fui-line__descriptionMessage',\n axisTitle: 'fui-line__axisTitle',\n chartTitle: 'fui-line__chartTitle',\n opacityChangeOnHover: 'fui-line__opacityChangeOnHover',\n shapeStyles: 'fui-line__shapeStyles',\n chartWrapper: 'fui-line__chartWrapper',\n svgTooltip: '',\n chart: '',\n};\n\n/**\n * Base Styles\n */\nconst useStyles = makeStyles({\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n fill: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none',\n },\n});\n\n/**\n * Apply styling to the Carousel slots based on the state\n */\nexport const useScatterChartStyles = (props: ScatterChartProps): ScatterChartStyles => {\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(scatterChartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/),\n };\n};\n"],"names":["makeStyles","mergeClasses","shorthands","tokens","scatterChartClassNames","tooltip","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useStyles","display","flexDirection","padding","spacingHorizontalS","position","textAlign","top","spacingVerticalNone","fill","colorNeutralBackground1","borderRadius","borderRadiusSmall","pointerEvents","useScatterChartStyles","props","baseStyles"],"mappings":"AAAA,SAASA,UAAU,EAAEC,YAAY,EAAEC,UAAU,QAAQ,iBAAiB;AACtE,SAASC,MAAM,QAAQ,wBAAwB;AAI/C;;CAEC,GACD,OAAO,MAAMC,yBAA6D;IACxEC,SAAS;IACTC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,iBAAiB;IACjBC,OAAO;IACPC,oBAAoB;IACpBC,WAAW;IACXC,YAAY;IACZC,sBAAsB;IACtBC,aAAa;IACbC,cAAc;IACdC,YAAY;IACZC,OAAO;AACT,EAAE;AAEF;;CAEC,GACD,MAAMC,YAAYnB,WAAW;IAC3BK,SAAS;QACPe,SAAS;QACTC,eAAe;QACf,GAAGnB,WAAWoB,OAAO,CAACnB,OAAOoB,kBAAkB,CAAC;QAChDC,UAAU;QACVC,WAAW;QACXC,KAAKvB,OAAOwB,mBAAmB;QAC/BC,MAAMzB,OAAO0B,uBAAuB;QACpCC,cAAc3B,OAAO4B,iBAAiB;QACtCC,eAAe;IACjB;AACF;AAEA;;CAEC,GACD,OAAO,MAAMC,wBAAwB,CAACC;IACpC,MAAMC,aAAahB;IACnB,OAAO;QACLd,SAASJ,aAAaG,uBAAuBC,OAAO,EAAE8B,WAAW9B,OAAO,CAAC,uBAAuB;IAClG;AACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Sparkline.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useSparklineStyles } from './useSparklineStyles.styles';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { area as d3Area, line as d3Line, curveLinear as d3curveLinear } from 'd3-shape';\nimport { max as d3Max, extent as d3Extent } from 'd3-array';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { LineChartDataPoint } from '../../types/DataPoint';\nimport { useRtl } from '../../utilities/index';\nimport { SparklineProps } from '../../index';\n\n/**\n * Sparkline is the context wrapper and container for all Sparkline content/controls,\n * It has no direct style or slot opinions.\n *\n * Sparkline also provides API interfaces for callbacks that will occur on navigation events.\n */\nexport const Sparkline: React.FunctionComponent<SparklineProps> = React.forwardRef<HTMLDivElement, SparklineProps>(\n (props, forwardedRef) => {\n let margin = {\n top: 2,\n right: 0,\n bottom: 0,\n left: 0,\n };\n let x: any;\n let y: any;\n let _emptyChartId: string = '_SparklineChart_empty';\n let _isRTL: boolean = useRtl();\n const [points, setPoints] = React.useState<LineChartDataPoint[]>([]);\n const width = 80;\n const height = 20;\n const valueTextWidth = 80;\n\n const line = React.useMemo(() => {\n return d3Line<LineChartDataPoint>()\n .x((d: LineChartDataPoint) => x(d.x))\n .y((d: LineChartDataPoint) => y(d.y))\n .curve(d3curveLinear);\n }, [x, y]);\n\n const area = React.useMemo(() => {\n return d3Area<LineChartDataPoint>()\n .x((d: LineChartDataPoint) => x(d.x))\n .y0(height)\n .y1((d: LineChartDataPoint) => y(d.y))\n .curve(d3curveLinear);\n }, [height, x, y]);\n\n React.useEffect(() => {\n if (!_isChartEmpty()) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const _points = props.data!.lineChartData![0].data;\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const [xMin, xMax] = d3Extent(_points, (d: any) => d.x);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n x = d3ScaleLinear()\n .domain([xMin, xMax])\n .range([margin.left!, width - margin.right!]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n y = d3ScaleLinear()\n /* eslint-disable @typescript-eslint/no-explicit-any */\n .domain([0, d3Max(_points, (d: any) => d.y)])\n .range([height - margin.bottom!, margin.top!]);\n\n setPoints(_points as LineChartDataPoint[]);\n }\n }, []);\n\n const { data } = props;\n function _isChartEmpty(): boolean {\n return !(\n data &&\n data.lineChartData &&\n data.lineChartData.length > 0 &&\n data.lineChartData.filter(item => item.data.length === 0).length === 0\n );\n }\n function drawSparkline() {\n if (!line || !area) {\n return null;\n }\n return (\n <>\n <path\n className=\"line\"\n d={line(points)!}\n fill={'transparent'}\n opacity={1}\n strokeWidth={2}\n stroke={data!.lineChartData![0].color!}\n />\n <path\n className=\"area\"\n d={area(points)!}\n opacity={1}\n fillOpacity={0.2}\n fill={data!.lineChartData![0].color!}\n role=\"img\"\n aria-hidden\n />\n </>\n );\n }\n\n const classes = useSparklineStyles(props);\n const focusAttributes = useFocusableGroup();\n return !_isChartEmpty() ? (\n <div className={classes.inlineBlock} {...focusAttributes}>\n {width >= 50 && height >= 16 ? (\n <svg\n width={width}\n height={height}\n aria-label={`Sparkline with label ${data!.lineChartData![0].legend!}`}\n tabIndex={0}\n >\n {points ? drawSparkline() : null}\n </svg>\n ) : (\n <></>\n )}\n {props.showLegend && props.data!.lineChartData![0].legend ? (\n <svg width={valueTextWidth} height={height}>\n <text x=\"0%\" textAnchor={_isRTL ? 'end' : 'start'} dx={8} y=\"100%\" dy={-5} className={classes.valueText}>\n {props.data!.lineChartData![0].legend!}\n </text>\n </svg>\n ) : (\n <></>\n )}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\nSparkline.displayName = 'Sparkline';\n"],"names":["React","useSparklineStyles","scaleLinear","d3ScaleLinear","area","d3Area","line","d3Line","curveLinear","d3curveLinear","max","d3Max","extent","d3Extent","useFocusableGroup","useRtl","Sparkline","forwardRef","props","forwardedRef","margin","top","right","bottom","left","x","y","_emptyChartId","_isRTL","points","setPoints","useState","width","height","valueTextWidth","useMemo","d","curve","y0","y1","useEffect","_isChartEmpty","_points","data","lineChartData","xMin","xMax","domain","range","length","filter","item","drawSparkline","path","className","fill","opacity","strokeWidth","stroke","color","fillOpacity","role","aria-hidden","classes","focusAttributes","div","inlineBlock","svg","aria-label","legend","tabIndex","showLegend","text","textAnchor","dx","dy","valueText","id","style","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/Sparkline/Sparkline.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useSparklineStyles } from './useSparklineStyles.styles';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { area as d3Area, line as d3Line, curveLinear as d3curveLinear } from 'd3-shape';\nimport { max as d3Max, extent as d3Extent } from 'd3-array';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { LineChartDataPoint } from '../../types/DataPoint';\nimport { useRtl } from '../../utilities/index';\nimport { SparklineProps } from '../../index';\n\n/**\n * Sparkline is the context wrapper and container for all Sparkline content/controls,\n * It has no direct style or slot opinions.\n *\n * Sparkline also provides API interfaces for callbacks that will occur on navigation events.\n */\nexport const Sparkline: React.FunctionComponent<SparklineProps> = React.forwardRef<HTMLDivElement, SparklineProps>(\n (props, forwardedRef) => {\n let margin = {\n top: 2,\n right: 0,\n bottom: 0,\n left: 0,\n };\n let x: any;\n let y: any;\n let _emptyChartId: string = '_SparklineChart_empty';\n let _isRTL: boolean = useRtl();\n const [points, setPoints] = React.useState<LineChartDataPoint[]>([]);\n const width = 80;\n const height = 20;\n const valueTextWidth = 80;\n\n const line = React.useMemo(() => {\n return d3Line<LineChartDataPoint>()\n .x((d: LineChartDataPoint) => x(d.x))\n .y((d: LineChartDataPoint) => y(d.y))\n .curve(d3curveLinear);\n }, [x, y]);\n\n const area = React.useMemo(() => {\n return d3Area<LineChartDataPoint>()\n .x((d: LineChartDataPoint) => x(d.x))\n .y0(height)\n .y1((d: LineChartDataPoint) => y(d.y))\n .curve(d3curveLinear);\n }, [height, x, y]);\n\n React.useEffect(() => {\n if (!_isChartEmpty()) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const _points = props.data!.lineChartData![0].data;\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const [xMin, xMax] = d3Extent(_points, (d: any) => d.x);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n x = d3ScaleLinear()\n .domain([xMin, xMax])\n .range([margin.left!, width - margin.right!]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n y = d3ScaleLinear()\n /* eslint-disable @typescript-eslint/no-explicit-any */\n .domain([0, d3Max(_points, (d: any) => d.y)])\n .range([height - margin.bottom!, margin.top!]);\n\n setPoints(_points as LineChartDataPoint[]);\n }\n }, []);\n\n const { data } = props;\n function _isChartEmpty(): boolean {\n return !(\n data &&\n data.lineChartData &&\n data.lineChartData.length > 0 &&\n data.lineChartData.filter(item => item.data.length === 0).length === 0\n );\n }\n function drawSparkline() {\n if (!line || !area) {\n return null;\n }\n return (\n <>\n <path\n className=\"line\"\n d={line(points)!}\n fill={'transparent'}\n opacity={1}\n strokeWidth={2}\n stroke={data!.lineChartData![0].color!}\n />\n <path\n className=\"area\"\n d={area(points)!}\n opacity={1}\n fillOpacity={0.2}\n fill={data!.lineChartData![0].color!}\n role=\"img\"\n aria-hidden\n />\n </>\n );\n }\n\n const classes = useSparklineStyles(props);\n const focusAttributes = useFocusableGroup();\n return !_isChartEmpty() ? (\n <div className={classes.inlineBlock} {...focusAttributes}>\n {width >= 50 && height >= 16 ? (\n <svg\n width={width}\n height={height}\n aria-label={`Sparkline with label ${data!.lineChartData![0].legend!}`}\n tabIndex={0}\n >\n {points ? drawSparkline() : null}\n </svg>\n ) : (\n <></>\n )}\n {props.showLegend && props.data!.lineChartData![0].legend ? (\n <svg width={valueTextWidth} height={height}>\n <text x=\"0%\" textAnchor={_isRTL ? 'end' : 'start'} dx={8} y=\"100%\" dy={-5} className={classes.valueText}>\n {props.data!.lineChartData![0].legend!}\n </text>\n </svg>\n ) : (\n <></>\n )}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\nSparkline.displayName = 'Sparkline';\n"],"names":["React","useSparklineStyles","scaleLinear","d3ScaleLinear","area","d3Area","line","d3Line","curveLinear","d3curveLinear","max","d3Max","extent","d3Extent","useFocusableGroup","useRtl","Sparkline","forwardRef","props","forwardedRef","margin","top","right","bottom","left","x","y","_emptyChartId","_isRTL","points","setPoints","useState","width","height","valueTextWidth","useMemo","d","curve","y0","y1","useEffect","_isChartEmpty","_points","data","lineChartData","xMin","xMax","domain","range","length","filter","item","drawSparkline","path","className","fill","opacity","strokeWidth","stroke","color","fillOpacity","role","aria-hidden","classes","focusAttributes","div","inlineBlock","svg","aria-label","legend","tabIndex","showLegend","text","textAnchor","dx","dy","valueText","id","style","displayName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Sparkline.types.ts"],"sourcesContent":["import { ChartProps } from './index';\nimport { CartesianChartStyleProps } from '../CommonComponents/index';\n\nexport interface SparklineStyleProps extends CartesianChartStyleProps {}\n\n/**\n * Sparkline properties\n * {@docCategory SparklineChart}\n */\nexport interface SparklineProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * An array of chart data points for the Sparkline chart\n */\n data?: ChartProps;\n\n /**\n * Width of chart\n * * @default 80\n */\n width?: number;\n\n /**\n * Height of chart\n * @default 20\n */\n height?: number;\n\n /**\n * Width of value text\n * * @default 80\n */\n valueTextWidth?: number;\n\n /**\n * Additional CSS class(es) to apply to the SparklineChart.\n */\n className?: string;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * Prop used to determine whether to show the legend or not\n */\n showLegend?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: SparklineStyles;\n}\n\n/**\n * Sparkline styles\n * {@docCategory SparklineChart}\n */\nexport interface SparklineStyles {\n inlineBlock?: string;\n valueText?: string;\n}\n"],"names":[],"mappings":"AAsDA;;;CAGC,GACD,WAGC"}
|
|
1
|
+
{"version":3,"sources":["../src/components/Sparkline/Sparkline.types.ts"],"sourcesContent":["import { ChartProps } from './index';\nimport { CartesianChartStyleProps } from '../CommonComponents/index';\n\nexport interface SparklineStyleProps extends CartesianChartStyleProps {}\n\n/**\n * Sparkline properties\n * {@docCategory SparklineChart}\n */\nexport interface SparklineProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * An array of chart data points for the Sparkline chart\n */\n data?: ChartProps;\n\n /**\n * Width of chart\n * * @default 80\n */\n width?: number;\n\n /**\n * Height of chart\n * @default 20\n */\n height?: number;\n\n /**\n * Width of value text\n * * @default 80\n */\n valueTextWidth?: number;\n\n /**\n * Additional CSS class(es) to apply to the SparklineChart.\n */\n className?: string;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * Prop used to determine whether to show the legend or not\n */\n showLegend?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: SparklineStyles;\n}\n\n/**\n * Sparkline styles\n * {@docCategory SparklineChart}\n */\nexport interface SparklineStyles {\n inlineBlock?: string;\n valueText?: string;\n}\n"],"names":[],"mappings":"AAsDA;;;CAGC,GACD,WAGC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './Sparkline';\nexport * from './Sparkline.types';\nexport * from '../../types/index';\n"],"names":[],"mappings":"AAAA,cAAc,cAAc;AAC5B,cAAc,oBAAoB;AAClC,cAAc,oBAAoB"}
|
|
1
|
+
{"version":3,"sources":["../src/components/Sparkline/index.ts"],"sourcesContent":["export * from './Sparkline';\nexport * from './Sparkline.types';\nexport * from '../../types/index';\n"],"names":[],"mappings":"AAAA,cAAc,cAAc;AAC5B,cAAc,oBAAoB;AAClC,cAAc,oBAAoB"}
|
|
@@ -35,5 +35,4 @@ export const useSparklineStyles = props => {
|
|
|
35
35
|
inlineBlock: mergeClasses(sparklineClassNames.inlineBlock, baseStyles.inlineBlock, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.inlineBlock),
|
|
36
36
|
valueText: mergeClasses(sparklineClassNames.valueText, baseStyles.valueText, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.valueText)
|
|
37
37
|
};
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=useSparklineStyles.styles.js.map
|
|
38
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { makeStyles, mergeClasses } from '@griffel/react';
|
|
2
|
+
import { tokens, typographyStyles } from '@fluentui/react-theme';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/ export const sparklineClassNames = {
|
|
6
|
+
inlineBlock: 'fui-sprk__inlineBlock',
|
|
7
|
+
valueText: 'fui-sprk__valueText'
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Base Styles
|
|
11
|
+
*/ const useStyles = makeStyles({
|
|
12
|
+
inlineBlock: {
|
|
13
|
+
display: 'inline'
|
|
14
|
+
},
|
|
15
|
+
valueText: {
|
|
16
|
+
...typographyStyles.caption1,
|
|
17
|
+
fill: tokens.colorNeutralForeground1,
|
|
18
|
+
forcedColorAdjust: 'auto'
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Apply styling to the Carousel slots based on the state
|
|
23
|
+
*/ export const useSparklineStyles = (props)=>{
|
|
24
|
+
var _props_styles, _props_styles1;
|
|
25
|
+
const baseStyles = useStyles();
|
|
26
|
+
return {
|
|
27
|
+
inlineBlock: mergeClasses(sparklineClassNames.inlineBlock, baseStyles.inlineBlock, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.inlineBlock),
|
|
28
|
+
valueText: mergeClasses(sparklineClassNames.valueText, baseStyles.valueText, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.valueText)
|
|
29
|
+
};
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Sparkline/useSparklineStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { SparklineProps, SparklineStyles } from './Sparkline.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n\n/**\n * @internal\n */\nexport const sparklineClassNames: SlotClassNames<SparklineStyles> = {\n inlineBlock: 'fui-sprk__inlineBlock',\n valueText: 'fui-sprk__valueText',\n};\n\n/**\n * Base Styles\n */\nconst useStyles = makeStyles({\n inlineBlock: {\n display: 'inline',\n },\n valueText: {\n ...typographyStyles.caption1,\n fill: tokens.colorNeutralForeground1,\n forcedColorAdjust: 'auto',\n },\n});\n\n/**\n * Apply styling to the Carousel slots based on the state\n */\nexport const useSparklineStyles = (props: SparklineProps): SparklineStyles => {\n const baseStyles = useStyles();\n\n return {\n inlineBlock: mergeClasses(sparklineClassNames.inlineBlock, baseStyles.inlineBlock, props.styles?.inlineBlock),\n valueText: mergeClasses(sparklineClassNames.valueText, baseStyles.valueText, props.styles?.valueText),\n };\n};\n"],"names":["makeStyles","mergeClasses","tokens","typographyStyles","sparklineClassNames","inlineBlock","valueText","useStyles","display","caption1","fill","colorNeutralForeground1","forcedColorAdjust","useSparklineStyles","props","baseStyles","styles"],"mappings":"AAAA,SAASA,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAG1D,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,wBAAwB;AAEjE;;CAEC,GACD,OAAO,MAAMC,sBAAuD;IAClEC,aAAa;IACbC,WAAW;AACb,EAAE;AAEF;;CAEC,GACD,MAAMC,YAAYP,WAAW;IAC3BK,aAAa;QACXG,SAAS;IACX;IACAF,WAAW;QACT,GAAGH,iBAAiBM,QAAQ;QAC5BC,MAAMR,OAAOS,uBAAuB;QACpCC,mBAAmB;IACrB;AACF;AAEA;;CAEC,GACD,OAAO,MAAMC,qBAAqB,CAACC;QAIoDA,eACNA;IAJ/E,MAAMC,aAAaR;IAEnB,OAAO;QACLF,aAAaJ,aAAaG,oBAAoBC,WAAW,EAAEU,WAAWV,WAAW,GAAES,gBAAAA,MAAME,MAAM,cAAZF,oCAAAA,cAAcT,WAAW;QAC5GC,WAAWL,aAAaG,oBAAoBE,SAAS,EAAES,WAAWT,SAAS,GAAEQ,iBAAAA,MAAME,MAAM,cAAZF,qCAAAA,eAAcR,SAAS;IACtG;AACF,EAAE"}
|
|
@@ -8,6 +8,7 @@ import { useId } from '@fluentui/react-utilities';
|
|
|
8
8
|
import { tokens } from '@fluentui/react-theme';
|
|
9
9
|
import { CartesianChart, Legends, ChartPopover } from '../../index';
|
|
10
10
|
import { ChartTypes, getAccessibleDataObject, XAxisTypes, getTypeOfAxis, tooltipOfAxislabels, formatScientificLimitWidth, getBarWidth, getScalePadding, isScalePaddingDefined, calculateAppropriateBarWidth, useRtl, areArraysEqual, calculateLongestLabelWidth, findVerticalNumericMinMaxOfY, createNumericYAxis, domainRangeOfVerticalNumeric, domainRangeOfDateForAreaLineVerticalBarChart, domainRangeOfXStringAxis, createStringYAxis } from '../../utilities/index';
|
|
11
|
+
import { toImage } from '../../utilities/image-export-utils';
|
|
11
12
|
var CircleVisbility = /*#__PURE__*/ function(CircleVisbility) {
|
|
12
13
|
CircleVisbility["show"] = "visibility";
|
|
13
14
|
CircleVisbility["hide"] = "hidden";
|
|
@@ -42,6 +43,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
42
43
|
let _xAxisInnerPadding = 0;
|
|
43
44
|
let _xAxisOuterPadding = 0;
|
|
44
45
|
const cartesianChartRef = React.useRef(null);
|
|
46
|
+
const _legendsRef = React.useRef(null);
|
|
45
47
|
const [color, setColor] = React.useState('');
|
|
46
48
|
const [dataForHoverCard, setDataForHoverCard] = React.useState(0);
|
|
47
49
|
const [activeLegend, setActiveLegend] = React.useState(undefined);
|
|
@@ -64,7 +66,11 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
64
66
|
var _cartesianChartRef_current;
|
|
65
67
|
var _cartesianChartRef_current_chartContainer;
|
|
66
68
|
return {
|
|
67
|
-
chartContainer: (_cartesianChartRef_current_chartContainer = (_cartesianChartRef_current = cartesianChartRef.current) === null || _cartesianChartRef_current === void 0 ? void 0 : _cartesianChartRef_current.chartContainer) !== null && _cartesianChartRef_current_chartContainer !== void 0 ? _cartesianChartRef_current_chartContainer : null
|
|
69
|
+
chartContainer: (_cartesianChartRef_current_chartContainer = (_cartesianChartRef_current = cartesianChartRef.current) === null || _cartesianChartRef_current === void 0 ? void 0 : _cartesianChartRef_current.chartContainer) !== null && _cartesianChartRef_current_chartContainer !== void 0 ? _cartesianChartRef_current_chartContainer : null,
|
|
70
|
+
toImage: (opts)=>{
|
|
71
|
+
var _cartesianChartRef_current, _legendsRef_current;
|
|
72
|
+
return toImage((_cartesianChartRef_current = cartesianChartRef.current) === null || _cartesianChartRef_current === void 0 ? void 0 : _cartesianChartRef_current.chartContainer, (_legendsRef_current = _legendsRef.current) === null || _legendsRef_current === void 0 ? void 0 : _legendsRef_current.toSVG, _useRtl, opts);
|
|
73
|
+
}
|
|
68
74
|
};
|
|
69
75
|
}, []);
|
|
70
76
|
React.useEffect(()=>{
|
|
@@ -213,7 +219,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
213
219
|
}
|
|
214
220
|
function _adjustProps() {
|
|
215
221
|
_points = props.data || [];
|
|
216
|
-
_barWidth = getBarWidth(props.barWidth, props.maxBarWidth);
|
|
222
|
+
_barWidth = getBarWidth(props.barWidth, props.maxBarWidth, undefined, props.mode);
|
|
217
223
|
const defaultColors = [
|
|
218
224
|
tokens.colorPaletteBlueForeground2,
|
|
219
225
|
tokens.colorPaletteCornflowerForeground2,
|
|
@@ -223,7 +229,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
223
229
|
];
|
|
224
230
|
_colors = props.colors || defaultColors;
|
|
225
231
|
_isHavingLine = _checkForLine();
|
|
226
|
-
_xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, 2 / 3);
|
|
232
|
+
_xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, props.mode === 'histogram' ? 0 : _xAxisType === XAxisTypes.StringAxis ? 2 / 3 : 1 / 2);
|
|
227
233
|
_xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);
|
|
228
234
|
}
|
|
229
235
|
function _getMargins(_margins) {
|
|
@@ -433,10 +439,13 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
433
439
|
] : [
|
|
434
440
|
xMin,
|
|
435
441
|
xMax
|
|
436
|
-
]).
|
|
442
|
+
]).range([
|
|
437
443
|
margins.left + _domainMargin,
|
|
438
444
|
containerWidth - margins.right - _domainMargin
|
|
439
445
|
]);
|
|
446
|
+
if (!isScalePaddingDefined(props.xAxisInnerPadding, props.xAxisPadding) && props.mode !== 'histogram') {
|
|
447
|
+
xBarScale.nice();
|
|
448
|
+
}
|
|
440
449
|
} else if (_xAxisType === XAxisTypes.DateAxis) {
|
|
441
450
|
const sDate = d3Min(_points, (point)=>point.x);
|
|
442
451
|
const lDate = d3Max(_points, (point)=>point.x);
|
|
@@ -566,7 +575,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
566
575
|
const baselineHeight = containerHeight - margins.bottom - yBarScale(yReferencePoint);
|
|
567
576
|
// Setting the bar width here is safe because there are no dependencies earlier in the code
|
|
568
577
|
// that rely on the width of bars in vertical bar charts with string x-axis.
|
|
569
|
-
_barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());
|
|
578
|
+
_barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth(), props.mode);
|
|
570
579
|
return /*#__PURE__*/ React.createElement("g", {
|
|
571
580
|
key: point.x instanceof Date ? `${point.x.getTime()}_${index}` : `${point.x}_${index}`,
|
|
572
581
|
transform: `translate(${0.5 * (xBarScale.bandwidth() - _barWidth)}, 0)`
|
|
@@ -743,7 +752,8 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
743
752
|
overflowText: props.legendsOverflowText,
|
|
744
753
|
...props.legendProps,
|
|
745
754
|
selectedLegends: selectedLegends,
|
|
746
|
-
onChange: _onLegendSelectionChange
|
|
755
|
+
onChange: _onLegendSelectionChange,
|
|
756
|
+
legendRef: _legendsRef
|
|
747
757
|
});
|
|
748
758
|
return legends;
|
|
749
759
|
}
|
|
@@ -805,48 +815,71 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
805
815
|
}, typeof props.yAxisTickFormat === 'function' ? props.yAxisTickFormat(barValue) : formatScientificLimitWidth(barValue));
|
|
806
816
|
}
|
|
807
817
|
function _getDomainMargins(containerWidth) {
|
|
818
|
+
var _props_data;
|
|
808
819
|
_domainMargin = MIN_DOMAIN_MARGIN;
|
|
820
|
+
const mapX = {};
|
|
821
|
+
(_props_data = props.data) === null || _props_data === void 0 ? void 0 : _props_data.forEach((point)=>{
|
|
822
|
+
if (point.x instanceof Date) {
|
|
823
|
+
mapX[point.x.getTime()] = point.x;
|
|
824
|
+
} else {
|
|
825
|
+
mapX[point.x] = point.x;
|
|
826
|
+
}
|
|
827
|
+
});
|
|
828
|
+
const uniqueX = Object.values(mapX);
|
|
809
829
|
/** Total width available to render the bars */ const totalWidth = containerWidth - (margins.left + MIN_DOMAIN_MARGIN) - (margins.right + MIN_DOMAIN_MARGIN);
|
|
810
830
|
/** Rate at which the space between the bars changes wrt the bar width */ const barGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);
|
|
831
|
+
const numBars = uniqueX.length + (uniqueX.length - 1) * barGapRate;
|
|
811
832
|
if (_xAxisType === XAxisTypes.StringAxis) {
|
|
812
833
|
if (isScalePaddingDefined(props.xAxisOuterPadding, props.xAxisPadding)) {
|
|
813
834
|
// Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available
|
|
814
835
|
// to adjust the space before the first bar and after the last bar.
|
|
815
836
|
_domainMargin = 0;
|
|
816
|
-
} else if (props.barWidth !== 'auto') {
|
|
837
|
+
} else if (props.barWidth !== 'auto' && props.mode !== 'histogram') {
|
|
817
838
|
// Update the bar width so that when CartesianChart rerenders,
|
|
818
839
|
// the following calculations don't use the previous bar width.
|
|
819
840
|
_barWidth = getBarWidth(props.barWidth, props.maxBarWidth);
|
|
820
|
-
/** Total width required to render the bars. Directly proportional to bar width */ const reqWidth =
|
|
841
|
+
/** Total width required to render the bars. Directly proportional to bar width */ const reqWidth = numBars * _barWidth;
|
|
821
842
|
if (totalWidth >= reqWidth) {
|
|
822
843
|
// Center align the chart by setting equal left and right margins for domain
|
|
823
844
|
_domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;
|
|
824
845
|
}
|
|
825
|
-
} else if (
|
|
846
|
+
} else if ([
|
|
847
|
+
'plotly',
|
|
848
|
+
'histogram'
|
|
849
|
+
].includes(props.mode) && uniqueX.length > 1) {
|
|
826
850
|
// Calculate the remaining width after rendering bars at their maximum allowable width
|
|
827
|
-
const bandwidth = totalWidth /
|
|
828
|
-
const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth);
|
|
829
|
-
let reqWidth =
|
|
851
|
+
const bandwidth = totalWidth / numBars;
|
|
852
|
+
const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth, props.mode);
|
|
853
|
+
let reqWidth = numBars * barWidth;
|
|
830
854
|
const margin1 = (totalWidth - reqWidth) / 2;
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
855
|
+
let margin2 = Number.POSITIVE_INFINITY;
|
|
856
|
+
if (!props.hideTickOverlap) {
|
|
857
|
+
// Calculate the remaining width after accounting for the space required to render x-axis labels
|
|
858
|
+
const step = calculateLongestLabelWidth(uniqueX) + 20;
|
|
859
|
+
reqWidth = (uniqueX.length - _xAxisInnerPadding) * step;
|
|
860
|
+
margin2 = (totalWidth - reqWidth) / 2;
|
|
861
|
+
}
|
|
835
862
|
_domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));
|
|
836
863
|
}
|
|
837
864
|
} else {
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
865
|
+
if (props.mode === 'histogram') {
|
|
866
|
+
// Try center-aligning the bars to eliminate any gaps caused by a restricted barWidth.
|
|
867
|
+
// This only works if the bin centers are consistent across all legend groups; otherwise,
|
|
868
|
+
// the calculated domainMargin may be too small.
|
|
869
|
+
const barWidth = props.maxBarWidth;
|
|
870
|
+
const reqWidth = numBars * barWidth;
|
|
871
|
+
_domainMargin += Math.max(0, (totalWidth - reqWidth) / 2);
|
|
872
|
+
}
|
|
873
|
+
// The histogram may appear distorted when bin centers/sizes vary across different legend groups.
|
|
874
|
+
// Currently, we calculate the appropriate bar width using the closest unique x-values to make
|
|
875
|
+
// the bars of the same legend group adjacent. But these x-values can come from different legend groups
|
|
876
|
+
// and result in misleading visuals. Even if we compute bar widths separately within each group,
|
|
877
|
+
// we still lack support for rendering bars with different widths and must use the minimum width,
|
|
878
|
+
// which can cause the same issue.
|
|
879
|
+
// Solution: Instead of estimating the appropriate bar width, render each bar to span the full range
|
|
880
|
+
// of its corresponding bin explicitly.
|
|
881
|
+
_barWidth = getBarWidth(props.barWidth, props.maxBarWidth, calculateAppropriateBarWidth(uniqueX, totalWidth - 2 * (_domainMargin - MIN_DOMAIN_MARGIN), _xAxisInnerPadding), props.mode);
|
|
882
|
+
_domainMargin += _barWidth / 2;
|
|
850
883
|
}
|
|
851
884
|
return {
|
|
852
885
|
...margins,
|
|
@@ -929,6 +962,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
929
962
|
xAxisOuterPadding: _xAxisOuterPadding
|
|
930
963
|
},
|
|
931
964
|
componentRef: cartesianChartRef,
|
|
965
|
+
showRoundOffXTickValues: !isScalePaddingDefined(props.xAxisInnerPadding, props.xAxisPadding) && props.mode !== 'histogram',
|
|
932
966
|
/* eslint-disable react/jsx-no-bind */ // eslint-disable-next-line react/no-children-prop
|
|
933
967
|
children: (props)=>{
|
|
934
968
|
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("g", null, _bars), _isHavingLine && /*#__PURE__*/ React.createElement("g", null, _createLine(props.xScale, props.yScalePrimary, props.containerHeight, props.containerWidth, props.yScaleSecondary)));
|