@fluentui/react-charts 9.3.5 → 9.3.7
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 +42 -2
- package/dist/index.d.ts +239 -55
- package/lib/AnnotationOnlyChart.js +1 -0
- package/lib/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +194 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/index.js +2 -0
- package/lib/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js +31 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js +23 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.js +3 -16
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +11 -6
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.js +2 -10
- package/lib/components/ChartTable/ChartTable.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.js +59 -39
- package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +5 -5
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +617 -0
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js +1 -0
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/index.js +2 -0
- package/lib/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +173 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +126 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +159 -132
- 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 +1 -2
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib/components/CommonComponents/index.js +2 -0
- package/lib/components/CommonComponents/index.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +32 -14
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +17 -2
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +2 -6
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +1 -2
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +83 -40
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +4 -8
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +692 -94
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js +23 -8
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +2 -2
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +3 -12
- 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 +4 -2
- package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +2 -2
- package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js +2 -10
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +6 -19
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js +3 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js +3 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +2 -10
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +8 -20
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +11 -6
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +4 -17
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +3 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +3 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +25 -12
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +4 -4
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +5 -23
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +3 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +3 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.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/useLegendsStyles.styles.js +97 -37
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.raw.js +10 -11
- package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +11 -20
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.types.js +1 -1
- package/lib/components/LineChart/LineChart.types.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js +3 -4
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +15 -10
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +3 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +3 -9
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +13 -10
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +24 -24
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +13 -8
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +3 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib/components/Sparkline/Sparkline.js +11 -7
- package/lib/components/Sparkline/Sparkline.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +3 -15
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +13 -8
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +8 -18
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +11 -6
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +3 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/ChartAnnotation.js +1 -0
- package/lib/types/ChartAnnotation.js.map +1 -0
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/types/index.js +1 -0
- package/lib/types/index.js.map +1 -1
- package/lib/utilities/Common.styles.js +1 -2
- package/lib/utilities/Common.styles.js.map +1 -1
- package/lib/utilities/Common.styles.raw.js +1 -2
- package/lib/utilities/Common.styles.raw.js.map +1 -1
- package/lib/utilities/FocusableTooltipText.js +1 -1
- package/lib/utilities/FocusableTooltipText.js.map +1 -1
- package/lib/utilities/getWindow.js +0 -1
- package/lib/utilities/getWindow.js.map +1 -1
- package/lib/utilities/hooks.js +34 -0
- package/lib/utilities/hooks.js.map +1 -0
- package/lib/utilities/image-export-utils.js +221 -73
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.js +39 -37
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/AnnotationOnlyChart.js +6 -0
- package/lib-commonjs/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +205 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +6 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js +7 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js +56 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js +33 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js +2 -15
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +14 -15
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js +3 -10
- package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +74 -102
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +4 -4
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +628 -0
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js +4 -0
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js +7 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +265 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +161 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +159 -131
- 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 +1 -2
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/index.js +2 -0
- package/lib-commonjs/components/CommonComponents/index.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +35 -22
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +17 -2
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +0 -14
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +0 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +82 -39
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +678 -60
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +25 -16
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +2 -11
- 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 +4 -2
- package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +2 -2
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +2 -10
- 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/GanttChart/GanttChart.js +5 -18
- 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/useGanttChartStyles.styles.js +3 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +2 -10
- 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/GroupedVerticalBarChart/GroupedVerticalBarChart.js +8 -20
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +14 -15
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +3 -16
- 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/useHeatMapChartStyles.styles.js +3 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +47 -34
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +3 -3
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +4 -21
- 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/useHorizontalBarChartWithAxisStyles.styles.js +3 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.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/useLegendsStyles.styles.js +144 -86
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +9 -10
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +11 -20
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +2 -2
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +18 -19
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +3 -9
- 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/useSankeyChartStyles.styles.js +16 -19
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +22 -22
- 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/useScatterChartStyles.styles.js +16 -17
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/Sparkline/Sparkline.js +11 -7
- package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +3 -15
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +16 -17
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +7 -17
- 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/useVerticalStackedBarChartStyles.styles.js +14 -15
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/index.js +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js +6 -0
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -0
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/types/index.js +1 -0
- package/lib-commonjs/types/index.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.js +1 -2
- package/lib-commonjs/utilities/Common.styles.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.raw.js +1 -2
- package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/getWindow.js +0 -1
- package/lib-commonjs/utilities/getWindow.js.map +1 -1
- package/lib-commonjs/utilities/hooks.js +45 -0
- package/lib-commonjs/utilities/hooks.js.map +1 -0
- package/lib-commonjs/utilities/image-export-utils.js +222 -74
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +37 -33
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/LineChart/LineChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { LineChartProps } from './LineChart.types';\nimport { useLineChartStyles } from './useLineChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select, pointer } from 'd3-selection';\nimport { bisector } from 'd3-array';\nimport { Legend, Legends, LegendContainer } from '../Legends/index';\nimport { line as d3Line } from 'd3-shape';\nimport { max as d3Max } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { find, findCalloutPoints, YAxisType } from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n CustomizedCalloutDataPoint,\n Margins,\n RefArrayData,\n ColorFillBarsProps,\n LineChartGap,\n LineChartDataPoint,\n Chart,\n ImageExportOptions,\n YValueHover,\n} from '../../index';\nimport { EventsAnnotation } from './eventAnnotation/EventAnnotation';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n getXAxisType,\n XAxisTypes,\n tooltipOfAxislabels,\n Points,\n pointTypes,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n findNumericMinMaxOfY,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfDateForAreaLineScatterVerticalBarCharts,\n domainRangeOfNumericForAreaLineScatterCharts,\n createStringYAxis,\n useRtl,\n getCurveFactory,\n isScatterPolarSeries,\n getDomainPaddingForMarkers,\n isPlottable,\n getRangeForScatterMarkerSize,\n} from '../../utilities/index';\nimport { ScaleLinear } from 'd3-scale';\nimport { toImage } from '../../utilities/image-export-utils';\nimport { renderScatterPolarCategoryLabels } from '../../utilities/scatterpolar-utils';\nimport { formatDateToLocaleString } from '@fluentui/chart-utilities';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\nenum PointSize {\n hoverSize = 11,\n invisibleSize = 1,\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nconst DEFAULT_LINE_STROKE_SIZE = 4;\n// The given shape of a icon must be 2.5 times bigger than line width (known as stroke width)\nconst PATH_MULTIPLY_SIZE = 2.5;\n\n/**\n *\n * @param x units from origin\n * @param y units from origin\n * @param w is the legnth of the each side of a shape\n * @param index index to get the shape path\n */\nconst _getPointPath = (x: number, y: number, w: number, index: number): string => {\n const allPointPaths = [\n // circle path\n `M${x - w / 2} ${y}\n A${w / 2} ${w / 2} 0 1 0 ${x + w / 2} ${y}\n M${x - w / 2} ${y}\n A ${w / 2} ${w / 2} 0 1 1 ${x + w / 2} ${y}\n `,\n //square\n `M${x - w / 2} ${y - w / 2}\n L${x + w / 2} ${y - w / 2}\n L${x + w / 2} ${y + w / 2}\n L${x - w / 2} ${y + w / 2}\n Z`,\n //triangle\n `M${x - w / 2} ${y - 0.2886 * w}\n H ${x + w / 2}\n L${x} ${y + 0.5774 * w} Z`,\n //diamond\n `M${x} ${y - w / 2}\n L${x + w / 2} ${y}\n L${x} ${y + w / 2}\n L${x - w / 2} ${y}\n Z`,\n //pyramid\n `M${x} ${y - 0.5774 * w}\n L${x + w / 2} ${y + 0.2886 * w}\n L${x - w / 2} ${y + 0.2886 * w} Z`,\n //hexagon\n `M${x - 0.5 * w} ${y - 0.866 * w}\n L${x + 0.5 * w} ${y - 0.866 * w}\n L${x + w} ${y}\n L${x + 0.5 * w} ${y + 0.866 * w}\n L${x - 0.5 * w} ${y + 0.866 * w}\n L${x - w} ${y}\n Z`,\n //pentagon\n `M${x} ${y - 0.851 * w}\n L${x + 0.6884 * w} ${y - 0.2633 * w}\n L${x + 0.5001 * w} ${y + 0.6884 * w}\n L${x - 0.5001 * w} ${y + 0.6884 * w}\n L${x - 0.6884 * w} ${y - 0.2633 * w}\n Z`,\n //octagon\n `M${x - 0.5001 * w} ${y - 1.207 * w}\n L${x + 0.5001 * w} ${y - 1.207 * w}\n L${x + 1.207 * w} ${y - 0.5001 * w}\n L${x + 1.207 * w} ${y + 0.5001 * w}\n L${x + 0.5001 * w} ${y + 1.207 * w}\n L${x - 0.5001 * w} ${y + 1.207 * w}\n L${x - 1.207 * w} ${y + 0.5001 * w}\n L${x - 1.207 * w} ${y - 0.5001 * w}\n Z`,\n ];\n return allPointPaths[index];\n};\n\ntype LineChartDataWithIndex = LineChartPoints & { index: number };\n\n// Create a LineChart variant which uses these default styles and this styled subcomponent.\n/**\n * Linechart component\n * {@docCategory LineChart}\n */\nexport const LineChart: React.FunctionComponent<LineChartProps> = React.forwardRef<HTMLDivElement, LineChartProps>(\n ({ isCalloutForStack = true, ...restProps }, forwardedRef) => {\n const props = { isCalloutForStack, ...restProps };\n let _hasMarkersMode: boolean = false;\n let _isXAxisDateType: boolean = false;\n let _isScatterPolar: boolean = false;\n let _points: LineChartDataWithIndex[] = _injectIndexPropertyInLineChartData(props.data.lineChartData);\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 _yScalePrimary: any = '';\n let _circleId: string = useId('circle');\n let _lineId: string = useId('lineID');\n let _borderId: string = useId('borderID');\n let _verticalLine: string = useId('verticalLine');\n let _colorFillBarPatternId: string = useId('colorFillBarPattern');\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let eventLabelHeight: number = 36;\n let lines: JSXElement[];\n let _renderedColorFillBars: JSXElement[];\n const _colorFillBars = React.useRef<ColorFillBarsProps[]>([]);\n let _tooltipId: string = useId('LineChartTooltipId_');\n let _rectId: string = useId('containerRectLD');\n let _staticHighlightCircle: string = useId('staticHighlightCircle');\n let _firstRenderOptimization = true;\n let _emptyChartId: string = useId('_LineChart_empty');\n const _colorFillBarId = useId('_colorFillBarId');\n const _isRTL: boolean = useRtl();\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n const cartesianChartRef = React.useRef<Chart>(null);\n let _yScaleSecondary: ScaleLinear<number, number> | undefined;\n const _legendsRef = React.useRef<LegendContainer>(null);\n\n props.eventAnnotationProps &&\n props.eventAnnotationProps.labelHeight &&\n (eventLabelHeight = props.eventAnnotationProps.labelHeight);\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [yValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>(\n _injectIndexPropertyInLineChartData(props.data.lineChartData, true),\n );\n const [selectedColorBarLegend, setSelectedColorBarLegend] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(\n (props.legendProps?.selectedLegends?.length ?? 0) > 0,\n );\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [nearestCircleToHighlight, setNearestCircleToHighlight] = React.useState<LineChartDataPoint | null>(null);\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<CustomizedCalloutData>();\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 [YValue, setYValue] = React.useState<number | string>('');\n const [legendVal, setLegendVal] = React.useState<string>('');\n const [lineColor, setLineColor] = React.useState<string>('');\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n\n const pointsRef = React.useRef<LineChartDataWithIndex[] | []>([]);\n const calloutPointsRef = React.useRef<Record<string, YValueHover[]>>({});\n const classes = useLineChartStyles(props);\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 !== _injectIndexPropertyInLineChartData(props.data.lineChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n function _getDomainNRangeValues(\n points: LineChartPoints[],\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 = domainRangeOfNumericForAreaLineScatterCharts(\n points,\n margins,\n width,\n isRTL,\n props.xScaleType,\n _hasMarkersMode,\n );\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineScatterVerticalBarCharts(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n _hasMarkersMode,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n function _injectIndexPropertyInLineChartData(\n lineChartData?: LineChartPoints[],\n isFilterSelectedLegends: boolean = false,\n ): LineChartDataWithIndex[] | [] {\n const { allowMultipleShapesForPoints = false } = props;\n // Apply filter only if isPropChange is true\n const filteredData = isFilterSelectedLegends\n ? lineChartData?.filter(\n (item: LineChartPoints) =>\n props.legendProps?.selectedLegends?.includes(item.legend) ||\n props.legendProps?.selectedLegend === item.legend,\n )\n : lineChartData;\n _hasMarkersMode =\n filteredData?.some((item: LineChartPoints) => item.lineOptions?.mode?.includes?.('markers')) ?? false;\n _isScatterPolar = isScatterPolarSeries(filteredData!);\n return filteredData\n ? filteredData.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: allowMultipleShapesForPoints ? 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 _getCustomizedCallout() {\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps)\n : null;\n }\n\n function _getNumericMinMaxOfY(\n points: LineChartPoints[],\n yAxisType?: YAxisType,\n useSecondaryYScale?: boolean,\n ): { startValue: number; endValue: number } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { startValue, endValue } = findNumericMinMaxOfY(\n points,\n yAxisType,\n useSecondaryYScale,\n useSecondaryYScale ? props.secondaryYScaleType : props.yScaleType,\n );\n let yPadding = { start: 0, end: 0 };\n if (_hasMarkersMode) {\n yPadding = getDomainPaddingForMarkers(\n startValue,\n endValue,\n useSecondaryYScale ? props.secondaryYScaleType : props.yScaleType,\n );\n }\n return {\n startValue: startValue - yPadding.start,\n endValue: endValue + yPadding.end,\n };\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeLineChartData(\n xScale: NumericAxis,\n yScalePrimary: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) {\n _xAxisScale = xScale;\n _yScalePrimary = yScalePrimary;\n _yScaleSecondary = yScaleSecondary;\n _renderedColorFillBars = props.colorFillBars ? _createColorFillBars(containerHeight) : [];\n lines = _createLines(xElement!, containerHeight!);\n }\n\n function _handleSingleLegendSelectionAction(lineChartItem: LineChartDataWithIndex | ColorFillBarsProps) {\n if (selectedLegend === lineChartItem.legend) {\n setSelectedLegend('');\n _handleLegendClick(lineChartItem, null);\n } else {\n setSelectedLegend(lineChartItem.legend);\n _handleLegendClick(lineChartItem, lineChartItem.legend);\n }\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setSelectedColorBarLegend([]);\n setIsSelectedLegend(false);\n }\n\n function _handleLegendClick(\n lineChartItem: LineChartDataWithIndex | ColorFillBarsProps,\n selectedLegend: string | null | string[],\n ): void {\n if (lineChartItem.onLegendClick) {\n lineChartItem.onLegendClick(selectedLegend);\n }\n }\n\n function _createLegends(data: LineChartDataWithIndex[]): JSXElement {\n const { legendProps, allowMultipleShapesForPoints = false } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const mapLegendToPoints: Record<string, LineChartDataWithIndex[]> = {};\n data.forEach((point: LineChartDataWithIndex) => {\n if (point.legend) {\n if (!mapLegendToPoints[point.legend]) {\n mapLegendToPoints[point.legend] = [];\n }\n mapLegendToPoints[point.legend].push(point);\n }\n });\n const legendDataItems: Legend[] = Object.entries(mapLegendToPoints).map(([legendTitle, points]) => {\n const representativePoint = points[0];\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: legendTitle,\n color: representativePoint.color!,\n action: () => {\n if (isLegendMultiSelectEnabled) {\n points.forEach(p => _handleMultipleLineLegendSelectionAction(p));\n } else {\n points.forEach(p => _handleSingleLegendSelectionAction(p));\n }\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(legendTitle);\n },\n ...(representativePoint.legendShape && {\n shape: representativePoint.legendShape,\n }),\n ...(allowMultipleShapesForPoints && {\n shape: Points[representativePoint.index % Object.keys(pointTypes).length] as Legend['shape'],\n }),\n };\n return legend;\n });\n\n const colorFillBarsLegendDataItems = props.colorFillBars\n ? props.colorFillBars.map((colorFillBar: ColorFillBarsProps, index: number) => {\n const title = colorFillBar.legend;\n const color = getColorFromToken(colorFillBar.color);\n const legend: Legend = {\n title,\n color,\n action: () => {\n if (isLegendMultiSelectEnabled) {\n _handleMultipleColorFillBarLegendSelectionAction(colorFillBar);\n } else {\n _handleSingleLegendSelectionAction(colorFillBar);\n }\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(title);\n },\n opacity: _getColorFillBarOpacity(colorFillBar),\n stripePattern: colorFillBar.applyPattern,\n };\n return legend;\n })\n : [];\n\n return (\n <Legends\n legends={[...legendDataItems, ...colorFillBarsLegendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _getBoxWidthOfShape(pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false, strokeWidth = DEFAULT_LINE_STROKE_SIZE } = props;\n if (allowMultipleShapesForPoints) {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else if (pointIndex === 1 || isLastPoint) {\n return strokeWidth * PATH_MULTIPLY_SIZE;\n } else {\n return PointSize.invisibleSize;\n }\n } else {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else {\n return PointSize.invisibleSize;\n }\n }\n }\n\n function _getPath(\n xPos: number,\n yPos: number,\n pointId: string,\n pointIndex: number,\n isLastPoint: boolean,\n pointOftheLine: number,\n ): string {\n const { allowMultipleShapesForPoints = false } = props;\n let w = _getBoxWidthOfShape(pointId, pointIndex, isLastPoint);\n const index: number = allowMultipleShapesForPoints ? pointOftheLine % Object.keys(pointTypes).length : 0;\n const widthRatio = pointTypes[index].widthRatio;\n w = widthRatio > 1 ? w / widthRatio : w;\n\n return _getPointPath(xPos, yPos, w, index);\n }\n function _getPointFill(lineColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false } = props;\n if (allowMultipleShapesForPoints) {\n if (pointIndex === 1 || isLastPoint) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n }\n\n function _createLines(xElement: SVGElement, containerHeight: number): JSXElement[] {\n const lines: JSXElement[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n }\n const maxMarkerSize = d3Max(_points, (point: LineChartPoints) => {\n return d3Max(point.data, (item: LineChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n for (let i = _points.length - 1; i >= 0; i--) {\n const linesForLine: JSXElement[] = [];\n const bordersForLine: JSXElement[] = [];\n const pointsForLine: JSXElement[] = [];\n\n const legendVal: string = _points[i].legend;\n const lineColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n const useSecondaryYScale = !!(_points[i].useSecondaryYScale && _yScaleSecondary);\n const yScale = useSecondaryYScale ? _yScaleSecondary : _yScalePrimary;\n const extraMaxPixels = _hasMarkersMode\n ? getRangeForScatterMarkerSize({\n data: _points,\n xScale: _xAxisScale,\n yScalePrimary: _yScalePrimary,\n yScaleSecondary: _yScaleSecondary,\n useSecondaryYScale,\n xScaleType: props.xScaleType,\n yScaleType: props.yScaleType,\n secondaryYScaleType: props.secondaryYScaleType,\n })\n : 0;\n if (_points[i].data.length === 1) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {\n x: x1,\n y: y1,\n xAxisCalloutData,\n xAxisCalloutAccessibilityData,\n } = _points[i].data[0] as LineChartDataPoint;\n const xPoint = _xAxisScale(x1);\n const yPoint = yScale(y1);\n if (isPlottable(xPoint, yPoint)) {\n const circleId = `${_circleId}_${i}`;\n const isLegendSelected: boolean =\n _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n const currentMarkerSize = _points[i].data[0].markerSize!;\n const supportsTextMode = _points[i].lineOptions?.mode?.includes('text');\n const text = _points[i].data[0].text;\n const targetElement = document.getElementById(circleId);\n pointsForLine.push(\n <>\n <React.Fragment key={`${circleId}_fragment`}>\n <circle\n id={circleId}\n key={circleId}\n r={\n currentMarkerSize\n ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize\n : activePoint === circleId\n ? 5.5\n : 3.5\n }\n cx={xPoint}\n cy={yPoint}\n fill={activePoint === circleId ? tokens.colorNeutralBackground1 : lineColor}\n opacity={isLegendSelected ? 1 : 0.1}\n tabIndex={isLegendSelected ? 0 : undefined}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n strokeWidth={activePoint === circleId ? DEFAULT_LINE_STROKE_SIZE : 0}\n stroke={activePoint === circleId ? lineColor : ''}\n role=\"img\"\n aria-label={_points[i].data[0].text ?? _getAriaLabel(i, 0)}\n data-is-focusable={isLegendSelected}\n ref={(e: SVGCircleElement | null) => {\n _refCallback(e!, circleId);\n }}\n onFocus={event =>\n _handleFocus(\n event,\n circleId,\n x1,\n xAxisCalloutData,\n circleId,\n targetElement,\n xAxisCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[0].onDataPointClick)}\n />\n {!_isScatterPolar && supportsTextMode && text && (\n <text\n key={`${circleId}-label`}\n x={xPoint}\n y={\n yPoint +\n Math.max(currentMarkerSize ? (currentMarkerSize * extraMaxPixels) / maxMarkerSize : 3.5, 4) +\n 12\n }\n className={classes.markerLabel}\n opacity={isLegendSelected ? 1 : 0.1}\n >\n {text}\n </text>\n )}\n </React.Fragment>\n </>,\n );\n }\n }\n\n let gapIndex = 0;\n const gaps = _points[i].gaps?.sort((a, b) => a.startIndex - b.startIndex) ?? [];\n const lineCurve = _points[i].lineOptions?.curve;\n\n // Use path rendering technique for larger datasets to optimize performance.\n if ((props.optimizeLargeData || lineCurve) && _points[i].data.length > 1) {\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => _xAxisScale(d[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d[1]))\n .curve(getCurveFactory(lineCurve))\n .defined(d => isPlottable(_xAxisScale(d[0]), yScale(d[1])));\n\n const lineId = `${_lineId}_${i}`;\n const borderId = `${_borderId}_${i}`;\n const strokeWidth = _points[i].lineOptions?.strokeWidth || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const lineData: [number, number][] = [];\n for (let k = 0; k < _points[i].data.length; k++) {\n lineData.push([\n _points[i].data[k].x instanceof Date\n ? (_points[i].data[k].x as Date).getTime()\n : (_points[i].data[k].x as number),\n _points[i].data[k].y,\n ]);\n }\n\n // Check if lines should be drawn based on mode\n const lineMode = _points[i].lineOptions?.mode;\n const shouldDrawLines = lineMode !== 'markers';\n if (shouldDrawLines && isLegendSelected) {\n const lineBorderWidth = _points[i].lineOptions?.lineBorderWidth\n ? Number.parseFloat(_points[i].lineOptions!.lineBorderWidth!.toString())\n : 0;\n if (lineBorderWidth > 0) {\n bordersForLine.push(\n <path\n id={borderId}\n key={borderId}\n d={line(lineData)!}\n fill=\"transparent\"\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeWidth={Number.parseFloat(strokeWidth.toString()) + lineBorderWidth}\n stroke={_points[i].lineOptions?.lineBorderColor || tokens.colorNeutralBackground1}\n opacity={1}\n />,\n );\n }\n\n linesForLine.push(\n <path\n id={lineId}\n key={lineId}\n d={line(lineData)!}\n fill=\"transparent\"\n data-is-focusable={true}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n onMouseMove={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\n {..._getClickHandler(_points[i].onLineClick)}\n opacity={1}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n } else if (shouldDrawLines) {\n linesForLine.push(\n <path\n id={lineId}\n key={lineId}\n d={line(lineData)!}\n fill=\"transparent\"\n data-is-focusable={false}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n opacity={0.1}\n />,\n );\n }\n\n // Always add the highlight circle for large dataset hover\n pointsForLine.push(\n <circle\n id={`${_staticHighlightCircle}_${i}`}\n key={`${_staticHighlightCircle}_${i}`}\n r={5.5}\n cx={0}\n cy={0}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={DEFAULT_LINE_STROKE_SIZE}\n stroke={lineColor}\n visibility={'hidden'}\n onMouseMove={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\n />,\n );\n\n // Add individual markers if mode includes 'markers'\n const showMarkers = !!lineMode?.includes('markers');\n if (showMarkers) {\n for (let k = 0; k < _points[i].data.length; k++) {\n const { x, y } = _points[i].data[k];\n const xPoint = _xAxisScale(x instanceof Date ? x.getTime() : x);\n const yPoint = yScale(y);\n\n if (isPlottable(xPoint, yPoint)) {\n const markerSize = _points[i].data[k].markerSize;\n const perPointColor = _points[i].data[k]?.markerColor;\n pointsForLine.push(\n <circle\n key={`${_circleId}_${i}_${k}_marker`}\n r={\n markerSize\n ? (markerSize! * extraMaxPixels * 0.3) / maxMarkerSize\n : activePoint === _circleId\n ? 5.5\n : 3.5\n }\n cx={xPoint}\n cy={yPoint}\n fill={\n activePoint === _circleId\n ? tokens.colorNeutralBackground1\n : perPointColor || _points[i]?.color || lineColor\n }\n stroke={perPointColor || lineColor}\n strokeWidth={1}\n opacity={isLegendSelected ? 1 : 0.1}\n onMouseMove={_onMouseOverLargeDataset.bind(i, verticaLineHeight, yScale)}\n onMouseOver={_onMouseOverLargeDataset.bind(i, verticaLineHeight, yScale)}\n onMouseOut={_handleMouseOut}\n />,\n );\n }\n }\n }\n } else if (!props.optimizeLargeData) {\n for (let j = 1; j < _points[i].data.length; j++) {\n const gapResult = _checkInGap(j, gaps, gapIndex);\n const isInGap = gapResult.isInGap;\n gapIndex = gapResult.gapIndex;\n\n const lineId = `${_lineId}_${i}_${j}`;\n const borderId = `${_borderId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const {\n x: x1,\n y: y1,\n xAxisCalloutData,\n xAxisCalloutAccessibilityData,\n } = _points[i].data[j - 1] as LineChartDataPoint;\n const { x: x2, y: y2 } = _points[i].data[j] as LineChartDataPoint;\n const xPoint1 = _xAxisScale(x1);\n const yPoint1 = yScale(y1);\n const xPoint2 = _xAxisScale(x2);\n const yPoint2 = yScale(y2);\n const strokeWidth = _points[i].lineOptions?.strokeWidth || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;\n\n const isLegendSelected: boolean =\n _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n const supportsTextMode = _points[i].lineOptions?.mode?.includes('text');\n const text = _points[i].data[j - 1].text;\n let currentMarkerSize = _points[i].data[j - 1].markerSize!;\n if (isPlottable(xPoint1, yPoint1)) {\n const path = _getPath(xPoint1, yPoint1, circleId, j, false, _points[i].index);\n const targetElement = document.getElementById(circleId);\n pointsForLine.push(\n _points[i].lineOptions?.mode?.includes('markers') || supportsTextMode ? (\n <>\n <circle\n id={circleId}\n key={circleId}\n r={currentMarkerSize ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize : 4}\n cx={xPoint1}\n cy={yPoint1}\n data-is-focusable={isLegendSelected}\n onMouseOver={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x1,\n xAxisCalloutData,\n circleId,\n targetElement,\n xAxisCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_points[i].data[j - 1]?.markerColor || _getPointFill(lineColor, circleId, j, false)}\n stroke={_points[i].data[j - 1]?.markerColor || lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_points[i].data[j - 1].text ?? _getAriaLabel(i, j - 1)}\n />\n {!_isScatterPolar && supportsTextMode && text && (\n <text\n key={`${circleId}-label`}\n x={xPoint1}\n y={\n yPoint1 +\n Math.max(currentMarkerSize ? (currentMarkerSize * extraMaxPixels) / maxMarkerSize : 4, 4) +\n 12\n }\n className={classes.markerLabel}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n >\n {text}\n </text>\n )}\n </>\n ) : (\n <path\n id={circleId}\n key={circleId}\n d={path}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x1,\n xAxisCalloutData,\n circleId,\n targetElement,\n xAxisCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_points[i].data[j - 1]?.markerColor || _getPointFill(lineColor, circleId, j, false)}\n stroke={_points[i].data[j - 1]?.markerColor || lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_getAriaLabel(i, j - 1)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />\n ),\n );\n }\n if (j + 1 === _points[i].data.length) {\n // If this is last point of the line segment.\n const lastCircleId = `${circleId}${j}L`;\n const hiddenHoverCircleId = `${circleId}${j}D`;\n const lastPointHidden = _points[i].hideNonActiveDots && activePoint !== lastCircleId;\n const {\n xAxisCalloutData: lastCirlceXCallout,\n xAxisCalloutAccessibilityData: lastCirlceXCalloutAccessibilityData,\n } = _points[i].data[j];\n currentMarkerSize = _points[i].data[j].markerSize!;\n const lastSupportsTextMode = _points[i].lineOptions?.mode?.includes('text');\n const lastText = _points[i].data[j].text;\n if (isPlottable(xPoint2, yPoint2)) {\n const path = _getPath(xPoint2, yPoint2, lastCircleId, j, true, _points[i].index);\n const targetElement = document.getElementById(lastCircleId);\n pointsForLine.push(\n <React.Fragment key={`${lastCircleId}_container`}>\n {_points[i].lineOptions?.mode?.includes('markers') || lastSupportsTextMode ? (\n <>\n <circle\n id={lastCircleId}\n key={lastCircleId}\n r={currentMarkerSize ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize : 4}\n cx={xPoint2}\n cy={yPoint2}\n data-is-focusable={isLegendSelected}\n onMouseOver={event =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={event =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\n targetElement,\n lastCirlceXCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !lastPointHidden ? 1 : 0.01}\n fill={_getPointFill(lineColor, lastCircleId, j, true)}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_points[i].data[j].text ?? _getAriaLabel(i, j)}\n />\n {!_isScatterPolar && lastSupportsTextMode && lastText && (\n <text\n key={`${lastCircleId}-label`}\n x={xPoint2}\n y={\n yPoint2 +\n Math.max(\n currentMarkerSize ? (currentMarkerSize * extraMaxPixels) / maxMarkerSize : 4,\n 4,\n ) +\n 12\n }\n className={classes.markerLabel}\n >\n {text}\n </text>\n )}\n </>\n ) : (\n <path\n id={lastCircleId}\n key={lastCircleId}\n d={path}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\n targetElement,\n lastCirlceXCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !lastPointHidden ? 1 : 0.01}\n fill={_points[i].data[j]?.markerColor || _getPointFill(lineColor, lastCircleId, j, true)}\n stroke={_points[i].data[j]?.markerColor || lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />\n )}\n {/* Dummy circle acting as magnetic latch for last callout point */}\n <circle\n id={hiddenHoverCircleId}\n key={hiddenHoverCircleId}\n r={8}\n cx={xPoint2}\n cy={yPoint2}\n opacity={0}\n width={0}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n strokeWidth={0}\n focusable={false}\n onBlur={_handleMouseOut}\n />\n </React.Fragment>,\n );\n }\n }\n\n if (\n isPlottable(xPoint1, yPoint1) &&\n isPlottable(xPoint2, yPoint2) &&\n (!_hasMarkersMode || _points[i].lineOptions?.mode?.includes('lines'))\n ) {\n if (isLegendSelected) {\n // don't draw line if it is in a gap\n if (!isInGap) {\n const lineBorderWidth = _points[i].lineOptions?.lineBorderWidth\n ? Number.parseFloat(_points[i].lineOptions!.lineBorderWidth!.toString())\n : 0;\n const targetElement = document.getElementById(circleId);\n if (lineBorderWidth > 0) {\n bordersForLine.push(\n <line\n id={borderId}\n key={borderId}\n x1={xPoint1}\n y1={yPoint1}\n x2={xPoint2}\n y2={yPoint2}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeWidth={Number.parseFloat(strokeWidth.toString()) + lineBorderWidth}\n stroke={_points[i].lineOptions?.lineBorderColor || tokens.colorNeutralBackground1}\n opacity={1}\n />,\n );\n }\n\n linesForLine.push(\n <line\n id={lineId}\n key={lineId}\n x1={xPoint1}\n y1={yPoint1}\n x2={xPoint2}\n y2={yPoint2}\n strokeWidth={strokeWidth}\n ref={(e: SVGLineElement | null) => {\n _refCallback(e!, lineId);\n }}\n onMouseOver={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n stroke={lineColor}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n strokeDashoffset={_points[i].lineOptions?.strokeDashoffset}\n opacity={1}\n {..._getClickHandler(_points[i].onLineClick)}\n />,\n );\n }\n } else {\n if (!isInGap) {\n linesForLine.push(\n <line\n id={lineId}\n key={lineId}\n x1={xPoint1}\n y1={yPoint1}\n x2={xPoint2}\n y2={yPoint2}\n strokeWidth={strokeWidth}\n stroke={lineColor}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n strokeDashoffset={_points[i].lineOptions?.strokeDashoffset}\n opacity={0.1}\n />,\n );\n }\n }\n }\n }\n }\n\n // Add filled area for scatterpolar charts\n const fillMode = _points[i].lineOptions?.fill;\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n if (fillMode === 'toself' && _points[i].data.length >= 3 && isLegendSelected && _isScatterPolar) {\n const getScaledXValue = (dataPoint: LineChartDataPoint) =>\n _xAxisScale(dataPoint.x instanceof Date ? dataPoint.x : (dataPoint.x as number));\n\n const fillPathGenerator = d3Line<LineChartDataPoint>()\n .x(dataPoint => getScaledXValue(dataPoint))\n .y(dataPoint => yScale(dataPoint.y))\n .curve(getCurveFactory(lineCurve))\n .defined(dataPoint => isPlottable(getScaledXValue(dataPoint), yScale(dataPoint.y)));\n\n const fillPath = fillPathGenerator(_points[i].data as LineChartDataPoint[]);\n\n if (fillPath) {\n linesForLine.push(\n <path\n key={`scatterpolar_fill_${i}`}\n d={`${fillPath}Z`}\n fill={lineColor}\n fillOpacity={0.5}\n stroke={lineColor}\n strokeWidth={2}\n strokeOpacity={0.8}\n pointerEvents=\"none\"\n />,\n );\n }\n }\n\n if (_isScatterPolar) {\n pointsForLine.push(\n ...renderScatterPolarCategoryLabels({\n xAxisScale: _xAxisScale,\n yAxisScale: yScale,\n className: classes.markerLabel || '',\n lineOptions: (_points[i] as Partial<LineChartPoints>)?.lineOptions,\n }),\n );\n }\n\n lines.push(\n <g\n key={`line_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, line ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {bordersForLine}\n {linesForLine}\n {pointsForLine}\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 lines;\n }\n\n function _createColorFillBars(containerHeight: number) {\n const colorFillBars: JSXElement[] = [];\n if (isSelectedLegend) {\n _colorFillBars.current = selectedColorBarLegend;\n } else {\n _colorFillBars.current = props.colorFillBars!;\n }\n\n const yMinMaxValues = findNumericMinMaxOfY(_points);\n const FILL_Y_PADDING = 3;\n for (let i = 0; i < _colorFillBars.current.length; i++) {\n const colorFillBar = _colorFillBars.current[i];\n const colorFillBarId = `${_colorFillBarId}-${i}`;\n const color = getColorFromToken(colorFillBar.color);\n\n if (colorFillBar.applyPattern) {\n // Using a pattern element because CSS was unable to render diagonal stripes for rect elements\n colorFillBars.push(_getStripePattern(color, i));\n }\n\n for (let j = 0; j < colorFillBar.data.length; j++) {\n const startX = colorFillBar.data[j].startX;\n const endX = colorFillBar.data[j].endX;\n const opacity =\n _legendHighlighted(colorFillBar.legend) || _noLegendHighlighted() || isSelectedLegend\n ? _getColorFillBarOpacity(colorFillBar)\n : 0.1;\n colorFillBars.push(\n <rect\n fill={colorFillBar.applyPattern ? `url(#${_colorFillBarPatternId}_${i})` : color}\n fillOpacity={opacity}\n x={_isRTL ? _xAxisScale(endX) : _xAxisScale(startX)}\n y={_yScalePrimary(yMinMaxValues.endValue) - FILL_Y_PADDING}\n width={Math.abs(_xAxisScale(endX) - _xAxisScale(startX))}\n height={_yScalePrimary(props.yMinValue || 0) - _yScalePrimary(yMinMaxValues.endValue) + FILL_Y_PADDING}\n key={`${colorFillBarId}${j}`}\n />,\n );\n }\n }\n return colorFillBars;\n }\n\n function _getStripePattern(color: string, id: number) {\n // This describes a tile pattern that resembles diagonal stripes\n // For more information: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d\n const stripePath = 'M-4,4 l8,-8 M0,16 l16,-16 M12,20 l8,-8';\n return (\n <pattern\n id={`${_colorFillBarPatternId}_${id}`}\n width={16}\n height={16}\n key={`${_colorFillBarPatternId}_${id}`}\n patternUnits={'userSpaceOnUse'}\n >\n <path d={stripePath} stroke={color} strokeWidth={1.25} />\n </pattern>\n );\n }\n\n function _checkInGap(pointIndex: number, gaps: LineChartGap[], currentGapIndex: number) {\n let gapIndex = currentGapIndex;\n let isInGap = false;\n\n while (gapIndex < gaps.length && pointIndex > gaps[gapIndex].endIndex) {\n gapIndex++;\n }\n\n if (gapIndex < gaps.length && pointIndex > gaps[gapIndex].startIndex && pointIndex <= gaps[gapIndex].endIndex) {\n isInGap = true;\n }\n return { isInGap, gapIndex };\n }\n\n function _refCallback(element: SVGGElement, legendTitle: string): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n const _onMouseOverLargeDataset = (\n linenumber: number,\n lineHeight: number,\n mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>,\n yScale: ScaleLinear<number, number>,\n ) => {\n mouseEvent.persist();\n const { data } = props;\n const { lineChartData } = data;\n\n // This will get the value of the X when mouse is on the chart\n const xOffset = _xAxisScale.invert(pointer(mouseEvent)[0], document.getElementById(_rectId)!);\n const i = bisect(lineChartData![linenumber].data, xOffset);\n const d0 = lineChartData![linenumber].data[i - 1] as LineChartDataPoint;\n const d1 = lineChartData![linenumber].data[i] as LineChartDataPoint;\n let axisType: XAxisTypes | null = null;\n let xPointToHighlight: string | Date | number = 0;\n let index: null | number = null;\n if (d0 === undefined && d1 !== undefined) {\n xPointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n xPointToHighlight = d0.x;\n index = i - 1;\n } else {\n axisType = getTypeOfAxis(lineChartData![linenumber].data[0].x, true) as XAxisTypes;\n let x0;\n let point0;\n let point1;\n switch (axisType) {\n case XAxisTypes.DateAxis:\n x0 = new Date(xOffset).getTime();\n point0 = (d0.x as Date).getTime();\n point1 = (d1.x as Date).getTime();\n xPointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n case XAxisTypes.NumericAxis:\n x0 = xOffset as number;\n point0 = d0.x as number;\n point1 = d1.x as number;\n xPointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n default:\n break;\n }\n }\n\n const { xAxisCalloutData } = lineChartData![linenumber].data[index as number];\n const formattedDate =\n xPointToHighlight instanceof Date\n ? formatDateToLocaleString(xPointToHighlight, props.culture, props.useUTC as boolean)\n : xPointToHighlight;\n const found = findCalloutPoints(calloutPointsRef.current, xPointToHighlight) as CustomizedCalloutData | undefined;\n const pointToHighlight: LineChartDataPoint = lineChartData![linenumber].data[index!] as LineChartDataPoint;\n const pointToHighlightUpdated =\n nearestCircleToHighlight === null ||\n (nearestCircleToHighlight !== null &&\n pointToHighlight !== null &&\n (nearestCircleToHighlight.x !== pointToHighlight.x || nearestCircleToHighlight.y !== pointToHighlight.y));\n // if no points need to be called out then don't show vertical line and callout card\n if (found && pointToHighlightUpdated) {\n _uniqueCallOutID = `#${_staticHighlightCircle}_${linenumber}`;\n\n d3Select(`#${_staticHighlightCircle}_${linenumber}`)\n .attr('cx', `${_xAxisScale(pointToHighlight.x)}`)\n .attr('cy', `${yScale(pointToHighlight.y)}`)\n .attr('visibility', 'visibility');\n\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(pointToHighlight.x)}, ${yScale(pointToHighlight.y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - 5 - yScale(pointToHighlight.y)}`);\n\n const targetElement = document.getElementById(`${_staticHighlightCircle}_${linenumber}`);\n const rect = targetElement!.getBoundingClientRect();\n setNearestCircleToHighlight(pointToHighlight);\n updatePosition(rect.x, rect.y);\n setStackCalloutProps(found!);\n setYValueHover(found.values);\n setDataPointCalloutProps(found!);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue(formattedDate);\n setActivePoint('');\n }\n\n if (!found) {\n setPopoverOpen(false);\n setNearestCircleToHighlight(pointToHighlight);\n setActivePoint('');\n }\n };\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement | SVGPathElement, Element>,\n lineId: string,\n x: number | Date,\n xAxisCalloutData: string | undefined,\n circleId: string,\n targetElement: HTMLElement | null,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDateToLocaleString(x, props.culture, props.useUTC as boolean) : x;\n const found = findCalloutPoints(calloutPointsRef.current, x) as CustomizedCalloutData | undefined;\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)}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === lineId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setRefSelected(targetElement);\n setStackCalloutProps(found!);\n setDataPointCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date,\n y: number,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n yScale: ScaleLinear<number, number>,\n legendVal: string,\n lineColor: string,\n targetElement: HTMLElement | null,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDateToLocaleString(x, props.culture, props.useUTC as boolean) : x;\n const found = findCalloutPoints(calloutPointsRef.current, x) as CustomizedCalloutData | undefined;\n let hoverDp: CustomizedCalloutData | undefined = undefined;\n\n if (props.isCalloutForStack === false && found?.values) {\n const dp = find(found.values, (val: CustomizedCalloutDataPoint) => val?.y === y);\n if (dp) {\n hoverDp = {\n x,\n values: [dp],\n };\n }\n }\n // if no points need to be called out then don't show vertical line and callout card\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x)}, ${yScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - 5 - yScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n setRefSelected(targetElement);\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setYValue(y);\n setLegendVal(legendVal);\n setLineColor(lineColor);\n setStackCalloutProps(found!);\n setDataPointCalloutProps(hoverDp);\n setActivePoint(circleId);\n setNearestCircleToHighlight(null);\n }\n } else {\n setActivePoint(circleId);\n setNearestCircleToHighlight(null);\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 function _handleMultipleLineLegendSelectionAction(selectedLine: LineChartDataWithIndex) {\n const selectedLineIndex = selectedLegendPoints.reduce((acc, line, index) => {\n if (acc > -1 || line.legend !== selectedLine.legend) {\n return acc;\n } else {\n return index;\n }\n }, -1);\n\n let selectedLines: LineChartDataWithIndex[];\n if (selectedLineIndex === -1) {\n selectedLines = [...selectedLegendPoints, selectedLine];\n } else {\n selectedLines = selectedLegendPoints\n .slice(0, selectedLineIndex)\n .concat(selectedLegendPoints.slice(selectedLineIndex + 1));\n }\n\n const areAllLineLegendsSelected = props.data && selectedLines.length === props.data.lineChartData!.length;\n\n if (\n areAllLineLegendsSelected &&\n ((props.colorFillBars && props.colorFillBars.length === selectedColorBarLegend.length) || !props.colorFillBars)\n ) {\n // Clear all legends if all legends including color fill bar legends are selected\n // Or clear all legends if all legends are selected and there are no color fill bars\n _clearMultipleLegendSelections();\n } else if (!selectedLines.length && !selectedColorBarLegend.length) {\n // Clear all legends if no legends including color fill bar legends are selected\n _clearMultipleLegendSelections();\n } else {\n // Otherwise, set state when one or more legends are selected, including color fill bar legends\n setSelectedLegendPoints(selectedLines);\n setIsSelectedLegend(true);\n }\n\n const selectedLegendTitlesToPass = selectedLines.map((line: LineChartDataWithIndex) => line.legend);\n _handleLegendClick(selectedLine, selectedLegendTitlesToPass);\n }\n\n function _handleMultipleColorFillBarLegendSelectionAction(selectedColorFillBar: ColorFillBarsProps) {\n const selectedColorFillBarIndex = selectedColorBarLegend.reduce((acc, colorFillBar, index) => {\n if (acc > -1 || colorFillBar.legend !== selectedColorFillBar.legend) {\n return acc;\n } else {\n return index;\n }\n }, -1);\n\n let selectedColorFillBars: ColorFillBarsProps[];\n if (selectedColorFillBarIndex === -1) {\n selectedColorFillBars = [...selectedColorBarLegend, selectedColorFillBar];\n } else {\n selectedColorFillBars = selectedColorBarLegend\n .slice(0, selectedColorFillBarIndex)\n .concat(selectedColorBarLegend.slice(selectedColorFillBarIndex + 1));\n }\n\n const areAllColorFillBarLegendsSelected =\n selectedColorFillBars.length === (props.colorFillBars && props.colorFillBars!.length);\n\n if (\n areAllColorFillBarLegendsSelected &&\n ((props.data && props.data.lineChartData!.length === selectedLegendPoints.length) || !props.data)\n ) {\n // Clear all legends if all legends, including line legends, are selected\n // Or clear all legends if all legends are selected and there is no line data\n _clearMultipleLegendSelections();\n } else if (!selectedColorFillBars.length && !selectedLegendPoints.length) {\n // Clear all legends if no legends are selected, including line legends\n _clearMultipleLegendSelections();\n } else {\n // set state when one or more legends are selected, including line legends\n setSelectedColorBarLegend(selectedColorFillBars);\n setIsSelectedLegend(true);\n }\n\n const selectedLegendTitlesToPass = selectedColorFillBars.map(\n (colorFillBar: ColorFillBarsProps) => colorFillBar.legend,\n );\n _handleLegendClick(selectedColorFillBar, selectedLegendTitlesToPass);\n }\n\n function _clearMultipleLegendSelections() {\n setSelectedColorBarLegend([]);\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string) {\n return selectedLegend === legend || (selectedLegend === '' && activeLegend === legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted() {\n return selectedLegend === '' && activeLegend === '';\n }\n\n function _getColorFillBarOpacity(colorFillBar: ColorFillBarsProps) {\n return colorFillBar.applyPattern ? 1 : 0.4;\n }\n\n function _getAriaLabel(lineIndex: number, pointIndex: number): string {\n const line = _points[lineIndex];\n const point = line.data[pointIndex];\n const formattedDate =\n point.x instanceof Date ? formatDateToLocaleString(point.x, props.culture, props.useUTC as boolean) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = line.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, eventAnnotationProps } = props;\n _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n\n _isXAxisDateType = getXAxisType(_points);\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n calloutPointsRef.current = 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: yValueHover,\n hoverXValue: hoverXValue,\n YValue: YValue,\n legend: legendVal,\n color: lineColor,\n XValue: hoverXValue! as string,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData: xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n isPopoverOpen: isPopoverOpen,\n clickPosition: clickPosition,\n positioning: {\n target: refSelected,\n },\n isCalloutForStack: props.isCalloutForStack,\n culture: props.culture,\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.LineChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n createYAxis={createNumericYAxis}\n getmargins={_getMargins}\n getMinMaxOfYAxis={_getNumericMinMaxOfY}\n getGraphData={_initializeLineChartData}\n xAxisType={_isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n {...(_isScatterPolar ? { yMaxValue: 1, yMinValue: -1 } : {})}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={props.enablePerfOptimization && _firstRenderOptimization}\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 _yScalePrimary = props.yScalePrimary!;\n _yScaleSecondary = props.yScaleSecondary;\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 {props.optimizeLargeData ? (\n <rect id={_rectId} width={props.containerWidth} height={props.containerHeight} fill={'transparent'} />\n ) : (\n <></>\n )}\n <g>\n {_renderedColorFillBars}\n {lines}\n </g>\n {eventAnnotationProps && (\n <EventsAnnotation\n {...eventAnnotationProps}\n scale={props.xScale!}\n chartYTop={margins.top! + eventLabelHeight}\n chartYBottom={props.containerHeight! - 35}\n />\n )}\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 },\n);\nLineChart.displayName = 'LineChart';\n"],"names":["React","useLineChartStyles","select","d3Select","pointer","bisector","Legends","line","d3Line","max","d3Max","useId","find","findCalloutPoints","CartesianChart","EventsAnnotation","tokens","calloutData","ChartTypes","getXAxisType","XAxisTypes","tooltipOfAxislabels","Points","pointTypes","getTypeOfAxis","getNextColor","getColorFromToken","findNumericMinMaxOfY","createNumericYAxis","domainRangeOfDateForAreaLineScatterVerticalBarCharts","domainRangeOfNumericForAreaLineScatterCharts","createStringYAxis","useRtl","getCurveFactory","isScatterPolarSeries","getDomainPaddingForMarkers","isPlottable","getRangeForScatterMarkerSize","toImage","renderScatterPolarCategoryLabels","formatDateToLocaleString","PointSize","bisect","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","LineChart","forwardRef","isCalloutForStack","restProps","forwardedRef","props","_hasMarkersMode","_isXAxisDateType","_isScatterPolar","_points","_injectIndexPropertyInLineChartData","data","lineChartData","_xAxisScale","_yScalePrimary","_circleId","_lineId","_borderId","_verticalLine","_colorFillBarPatternId","_uniqueCallOutID","_refArray","margins","eventLabelHeight","lines","_renderedColorFillBars","_colorFillBars","useRef","_tooltipId","_rectId","_staticHighlightCircle","_firstRenderOptimization","_emptyChartId","_colorFillBarId","_isRTL","xAxisCalloutAccessibilityData","cartesianChartRef","_yScaleSecondary","_legendsRef","eventAnnotationProps","labelHeight","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","yValueHover","setYValueHover","selectedLegend","setSelectedLegend","selectedLegendPoints","setSelectedLegendPoints","selectedColorBarLegend","setSelectedColorBarLegend","isSelectedLegend","setIsSelectedLegend","legendProps","selectedLegends","length","activePoint","setActivePoint","nearestCircleToHighlight","setNearestCircleToHighlight","dataPointCalloutProps","setDataPointCalloutProps","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","isPopoverOpen","setPopoverOpen","YValue","setYValue","legendVal","setLegendVal","lineColor","setLineColor","refSelected","setRefSelected","pointsRef","calloutPointsRef","classes","useEffect","current","height","width","useImperativeHandle","componentRef","chartContainer","opts","toSVG","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","xScaleType","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","isFilterSelectedLegends","allowMultipleShapesForPoints","filteredData","filter","item","includes","legend","some","lineOptions","mode","map","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getNumericMinMaxOfY","yAxisType","useSecondaryYScale","startValue","endValue","secondaryYScaleType","yScaleType","yPadding","start","end","_getMargins","_margins","_initializeLineChartData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","colorFillBars","_createColorFillBars","_createLines","_handleSingleLegendSelectionAction","lineChartItem","_handleLegendClick","_onHoverCardHide","onLegendClick","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","mapLegendToPoints","forEach","point","push","legendDataItems","Object","entries","legendTitle","representativePoint","title","action","p","_handleMultipleLineLegendSelectionAction","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","keys","colorFillBarsLegendDataItems","colorFillBar","_handleMultipleColorFillBarLegendSelectionAction","opacity","_getColorFillBarOpacity","stripePattern","applyPattern","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","legendRef","_getBoxWidthOfShape","pointId","pointIndex","isLastPoint","strokeWidth","_getPath","xPos","yPos","pointOftheLine","widthRatio","_getPointFill","colorNeutralBackground1","maxMarkerSize","markerSize","i","linesForLine","bordersForLine","pointsForLine","verticaLineHeight","bottom","yScale","extraMaxPixels","x1","y1","xAxisCalloutData","xPoint","yPoint","circleId","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentMarkerSize","supportsTextMode","text","targetElement","document","getElementById","Fragment","key","circle","id","r","cx","cy","fill","tabIndex","undefined","onMouseOver","event","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","stroke","role","aria-label","_getAriaLabel","data-is-focusable","ref","e","_refCallback","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","className","markerLabel","gapIndex","gaps","sort","a","b","startIndex","lineCurve","curve","optimizeLargeData","defined","lineId","borderId","lineData","k","Date","getTime","lineMode","shouldDrawLines","lineBorderWidth","Number","parseFloat","toString","path","strokeLinecap","lineBorderColor","strokeDasharray","_onMouseOverLargeDataset","onLineClick","visibility","showMarkers","perPointColor","markerColor","bind","j","gapResult","_checkInGap","isInGap","x2","y2","xPoint1","yPoint1","xPoint2","yPoint2","currentPointHidden","hideNonActiveDots","lastCircleId","hiddenHoverCircleId","lastPointHidden","lastCirlceXCallout","lastCirlceXCalloutAccessibilityData","lastSupportsTextMode","lastText","focusable","strokeDashoffset","fillMode","getScaledXValue","dataPoint","fillPathGenerator","fillPath","fillOpacity","strokeOpacity","pointerEvents","xAxisScale","yAxisScale","g","showXAxisLablesTooltip","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","yMinMaxValues","FILL_Y_PADDING","colorFillBarId","_getStripePattern","startX","endX","rect","abs","yMinValue","stripePath","pattern","patternUnits","currentGapIndex","endIndex","element","refElement","linenumber","lineHeight","mouseEvent","persist","xOffset","invert","d0","d1","axisType","xPointToHighlight","x0","point0","point1","formattedDate","culture","useUTC","found","pointToHighlight","pointToHighlightUpdated","attr","getBoundingClientRect","values","formattedData","obj","hoverDp","dp","val","func","onClick","selectedLine","selectedLineIndex","reduce","acc","selectedLines","slice","concat","areAllLineLegendsSelected","_clearMultipleLegendSelections","selectedLegendTitlesToPass","selectedColorFillBar","selectedColorFillBarIndex","selectedColorFillBars","areAllColorFillBarLegendsSelected","lineIndex","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","tickFormat","legendBars","hideLegend","calloutProps","YValueHover","XValue","descriptionMessage","getCalloutDescriptionMessage","positioning","target","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","chartTitle","createYAxis","getmargins","getMinMaxOfYAxis","getGraphData","yMaxValue","getDomainNRangeValues","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","scale","chartYTop","top","chartYBottom","div","style","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/LineChart/LineChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { LineChartProps } from './LineChart.types';\nimport { useLineChartStyles } from './useLineChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select, pointer } from 'd3-selection';\nimport { bisector } from 'd3-array';\nimport { Legend, Legends } from '../Legends/index';\nimport { line as d3Line } from 'd3-shape';\nimport { max as d3Max } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { find, findCalloutPoints, YAxisType } from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n CustomizedCalloutDataPoint,\n Margins,\n RefArrayData,\n ColorFillBarsProps,\n LineChartGap,\n LineChartDataPoint,\n YValueHover,\n} from '../../index';\nimport { EventsAnnotation } from './eventAnnotation/EventAnnotation';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n getXAxisType,\n XAxisTypes,\n tooltipOfAxislabels,\n Points,\n pointTypes,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n findNumericMinMaxOfY,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfDateForAreaLineScatterVerticalBarCharts,\n domainRangeOfNumericForAreaLineScatterCharts,\n createStringYAxis,\n useRtl,\n getCurveFactory,\n isScatterPolarSeries,\n getDomainPaddingForMarkers,\n isPlottable,\n getRangeForScatterMarkerSize,\n} from '../../utilities/index';\nimport { ScaleLinear } from 'd3-scale';\nimport { renderScatterPolarCategoryLabels } from '../../utilities/scatterpolar-utils';\nimport { formatDateToLocaleString } from '@fluentui/chart-utilities';\nimport { useImageExport } from '../../utilities/hooks';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\nenum PointSize {\n hoverSize = 11,\n invisibleSize = 1,\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nconst DEFAULT_LINE_STROKE_SIZE = 4;\n// The given shape of a icon must be 2.5 times bigger than line width (known as stroke width)\nconst PATH_MULTIPLY_SIZE = 2.5;\n\n/**\n *\n * @param x units from origin\n * @param y units from origin\n * @param w is the legnth of the each side of a shape\n * @param index index to get the shape path\n */\nconst _getPointPath = (x: number, y: number, w: number, index: number): string => {\n const allPointPaths = [\n // circle path\n `M${x - w / 2} ${y}\n A${w / 2} ${w / 2} 0 1 0 ${x + w / 2} ${y}\n M${x - w / 2} ${y}\n A ${w / 2} ${w / 2} 0 1 1 ${x + w / 2} ${y}\n `,\n //square\n `M${x - w / 2} ${y - w / 2}\n L${x + w / 2} ${y - w / 2}\n L${x + w / 2} ${y + w / 2}\n L${x - w / 2} ${y + w / 2}\n Z`,\n //triangle\n `M${x - w / 2} ${y - 0.2886 * w}\n H ${x + w / 2}\n L${x} ${y + 0.5774 * w} Z`,\n //diamond\n `M${x} ${y - w / 2}\n L${x + w / 2} ${y}\n L${x} ${y + w / 2}\n L${x - w / 2} ${y}\n Z`,\n //pyramid\n `M${x} ${y - 0.5774 * w}\n L${x + w / 2} ${y + 0.2886 * w}\n L${x - w / 2} ${y + 0.2886 * w} Z`,\n //hexagon\n `M${x - 0.5 * w} ${y - 0.866 * w}\n L${x + 0.5 * w} ${y - 0.866 * w}\n L${x + w} ${y}\n L${x + 0.5 * w} ${y + 0.866 * w}\n L${x - 0.5 * w} ${y + 0.866 * w}\n L${x - w} ${y}\n Z`,\n //pentagon\n `M${x} ${y - 0.851 * w}\n L${x + 0.6884 * w} ${y - 0.2633 * w}\n L${x + 0.5001 * w} ${y + 0.6884 * w}\n L${x - 0.5001 * w} ${y + 0.6884 * w}\n L${x - 0.6884 * w} ${y - 0.2633 * w}\n Z`,\n //octagon\n `M${x - 0.5001 * w} ${y - 1.207 * w}\n L${x + 0.5001 * w} ${y - 1.207 * w}\n L${x + 1.207 * w} ${y - 0.5001 * w}\n L${x + 1.207 * w} ${y + 0.5001 * w}\n L${x + 0.5001 * w} ${y + 1.207 * w}\n L${x - 0.5001 * w} ${y + 1.207 * w}\n L${x - 1.207 * w} ${y + 0.5001 * w}\n L${x - 1.207 * w} ${y - 0.5001 * w}\n Z`,\n ];\n return allPointPaths[index];\n};\n\ntype LineChartDataWithIndex = LineChartPoints & { index: number };\n\n// Create a LineChart variant which uses these default styles and this styled subcomponent.\n/**\n * Linechart component\n * {@docCategory LineChart}\n */\nexport const LineChart: React.FunctionComponent<LineChartProps> = React.forwardRef<HTMLDivElement, LineChartProps>(\n ({ isCalloutForStack = true, ...restProps }, forwardedRef) => {\n const props = { isCalloutForStack, ...restProps };\n let _hasMarkersMode: boolean = false;\n let _isXAxisDateType: boolean = false;\n let _isScatterPolar: boolean = false;\n let _points: LineChartDataWithIndex[] = _injectIndexPropertyInLineChartData(props.data.lineChartData);\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 _yScalePrimary: any = '';\n let _circleId: string = useId('circle');\n let _lineId: string = useId('lineID');\n let _borderId: string = useId('borderID');\n let _verticalLine: string = useId('verticalLine');\n let _colorFillBarPatternId: string = useId('colorFillBarPattern');\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let eventLabelHeight: number = 36;\n let lines: JSXElement[];\n let _renderedColorFillBars: JSXElement[];\n const _colorFillBars = React.useRef<ColorFillBarsProps[]>([]);\n let _tooltipId: string = useId('LineChartTooltipId_');\n let _rectId: string = useId('containerRectLD');\n let _staticHighlightCircle: string = useId('staticHighlightCircle');\n let _firstRenderOptimization = true;\n let _emptyChartId: string = useId('_LineChart_empty');\n const _colorFillBarId = useId('_colorFillBarId');\n const _isRTL: boolean = useRtl();\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n const { cartesianChartRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend);\n let _yScaleSecondary: ScaleLinear<number, number> | undefined;\n\n props.eventAnnotationProps &&\n props.eventAnnotationProps.labelHeight &&\n (eventLabelHeight = props.eventAnnotationProps.labelHeight);\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [yValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>(\n _injectIndexPropertyInLineChartData(props.data.lineChartData, true),\n );\n const [selectedColorBarLegend, setSelectedColorBarLegend] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(\n (props.legendProps?.selectedLegends?.length ?? 0) > 0,\n );\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [nearestCircleToHighlight, setNearestCircleToHighlight] = React.useState<LineChartDataPoint | null>(null);\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<CustomizedCalloutData>();\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 [YValue, setYValue] = React.useState<number | string>('');\n const [legendVal, setLegendVal] = React.useState<string>('');\n const [lineColor, setLineColor] = React.useState<string>('');\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n\n const pointsRef = React.useRef<LineChartDataWithIndex[] | []>([]);\n const calloutPointsRef = React.useRef<Record<string, YValueHover[]>>({});\n const classes = useLineChartStyles(props);\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 !== _injectIndexPropertyInLineChartData(props.data.lineChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data]);\n\n function _getDomainNRangeValues(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForAreaLineScatterCharts(\n points,\n margins,\n width,\n isRTL,\n props.xScaleType,\n _hasMarkersMode,\n );\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineScatterVerticalBarCharts(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n _hasMarkersMode,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n function _injectIndexPropertyInLineChartData(\n lineChartData?: LineChartPoints[],\n isFilterSelectedLegends: boolean = false,\n ): LineChartDataWithIndex[] | [] {\n const { allowMultipleShapesForPoints = false } = props;\n // Apply filter only if isPropChange is true\n const filteredData = isFilterSelectedLegends\n ? lineChartData?.filter(\n (item: LineChartPoints) =>\n props.legendProps?.selectedLegends?.includes(item.legend) ||\n props.legendProps?.selectedLegend === item.legend,\n )\n : lineChartData;\n _hasMarkersMode =\n filteredData?.some((item: LineChartPoints) => item.lineOptions?.mode?.includes?.('markers')) ?? false;\n _isScatterPolar = isScatterPolarSeries(filteredData!);\n return filteredData\n ? filteredData.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: allowMultipleShapesForPoints ? 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 _getCustomizedCallout() {\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps)\n : null;\n }\n\n function _getNumericMinMaxOfY(\n points: LineChartPoints[],\n yAxisType?: YAxisType,\n useSecondaryYScale?: boolean,\n ): { startValue: number; endValue: number } {\n const { startValue, endValue } = findNumericMinMaxOfY(\n points,\n yAxisType,\n useSecondaryYScale,\n useSecondaryYScale ? props.secondaryYScaleType : props.yScaleType,\n );\n let yPadding = { start: 0, end: 0 };\n if (_hasMarkersMode) {\n yPadding = getDomainPaddingForMarkers(\n startValue,\n endValue,\n useSecondaryYScale ? props.secondaryYScaleType : props.yScaleType,\n );\n }\n return {\n startValue: startValue - yPadding.start,\n endValue: endValue + yPadding.end,\n };\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeLineChartData(\n xScale: NumericAxis,\n yScalePrimary: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) {\n _xAxisScale = xScale;\n _yScalePrimary = yScalePrimary;\n _yScaleSecondary = yScaleSecondary;\n _renderedColorFillBars = props.colorFillBars ? _createColorFillBars(containerHeight) : [];\n lines = _createLines(xElement!, containerHeight!);\n }\n\n function _handleSingleLegendSelectionAction(lineChartItem: LineChartDataWithIndex | ColorFillBarsProps) {\n if (selectedLegend === lineChartItem.legend) {\n setSelectedLegend('');\n _handleLegendClick(lineChartItem, null);\n } else {\n setSelectedLegend(lineChartItem.legend);\n _handleLegendClick(lineChartItem, lineChartItem.legend);\n }\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setSelectedColorBarLegend([]);\n setIsSelectedLegend(false);\n }\n\n function _handleLegendClick(\n lineChartItem: LineChartDataWithIndex | ColorFillBarsProps,\n selectedLegend: string | null | string[],\n ): void {\n if (lineChartItem.onLegendClick) {\n lineChartItem.onLegendClick(selectedLegend);\n }\n }\n\n function _createLegends(data: LineChartDataWithIndex[]): JSXElement {\n const { legendProps, allowMultipleShapesForPoints = false } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const mapLegendToPoints: Record<string, LineChartDataWithIndex[]> = {};\n data.forEach((point: LineChartDataWithIndex) => {\n if (point.legend) {\n if (!mapLegendToPoints[point.legend]) {\n mapLegendToPoints[point.legend] = [];\n }\n mapLegendToPoints[point.legend].push(point);\n }\n });\n const legendDataItems: Legend[] = Object.entries(mapLegendToPoints).map(([legendTitle, points]) => {\n const representativePoint = points[0];\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: legendTitle,\n color: representativePoint.color!,\n action: () => {\n if (isLegendMultiSelectEnabled) {\n points.forEach(p => _handleMultipleLineLegendSelectionAction(p));\n } else {\n points.forEach(p => _handleSingleLegendSelectionAction(p));\n }\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(legendTitle);\n },\n ...(representativePoint.legendShape && {\n shape: representativePoint.legendShape,\n }),\n ...(allowMultipleShapesForPoints && {\n shape: Points[representativePoint.index % Object.keys(pointTypes).length] as Legend['shape'],\n }),\n };\n return legend;\n });\n\n const colorFillBarsLegendDataItems = props.colorFillBars\n ? props.colorFillBars.map((colorFillBar: ColorFillBarsProps, index: number) => {\n const title = colorFillBar.legend;\n const color = getColorFromToken(colorFillBar.color);\n const legend: Legend = {\n title,\n color,\n action: () => {\n if (isLegendMultiSelectEnabled) {\n _handleMultipleColorFillBarLegendSelectionAction(colorFillBar);\n } else {\n _handleSingleLegendSelectionAction(colorFillBar);\n }\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(title);\n },\n opacity: _getColorFillBarOpacity(colorFillBar),\n stripePattern: colorFillBar.applyPattern,\n };\n return legend;\n })\n : [];\n\n return (\n <Legends\n legends={[...legendDataItems, ...colorFillBarsLegendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _getBoxWidthOfShape(pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false, strokeWidth = DEFAULT_LINE_STROKE_SIZE } = props;\n if (allowMultipleShapesForPoints) {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else if (pointIndex === 1 || isLastPoint) {\n return strokeWidth * PATH_MULTIPLY_SIZE;\n } else {\n return PointSize.invisibleSize;\n }\n } else {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else {\n return PointSize.invisibleSize;\n }\n }\n }\n\n function _getPath(\n xPos: number,\n yPos: number,\n pointId: string,\n pointIndex: number,\n isLastPoint: boolean,\n pointOftheLine: number,\n ): string {\n const { allowMultipleShapesForPoints = false } = props;\n let w = _getBoxWidthOfShape(pointId, pointIndex, isLastPoint);\n const index: number = allowMultipleShapesForPoints ? pointOftheLine % Object.keys(pointTypes).length : 0;\n const widthRatio = pointTypes[index].widthRatio;\n w = widthRatio > 1 ? w / widthRatio : w;\n\n return _getPointPath(xPos, yPos, w, index);\n }\n function _getPointFill(lineColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false } = props;\n if (allowMultipleShapesForPoints) {\n if (pointIndex === 1 || isLastPoint) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n }\n\n function _createLines(xElement: SVGElement, containerHeight: number): JSXElement[] {\n const lines: JSXElement[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n }\n const maxMarkerSize = d3Max(_points, (point: LineChartPoints) => {\n return d3Max(point.data, (item: LineChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n for (let i = _points.length - 1; i >= 0; i--) {\n const linesForLine: JSXElement[] = [];\n const bordersForLine: JSXElement[] = [];\n const pointsForLine: JSXElement[] = [];\n\n const legendVal: string = _points[i].legend;\n const lineColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n const useSecondaryYScale = !!(_points[i].useSecondaryYScale && _yScaleSecondary);\n const yScale = useSecondaryYScale ? _yScaleSecondary : _yScalePrimary;\n const extraMaxPixels = _hasMarkersMode\n ? getRangeForScatterMarkerSize({\n data: _points,\n xScale: _xAxisScale,\n yScalePrimary: _yScalePrimary,\n yScaleSecondary: _yScaleSecondary,\n useSecondaryYScale,\n xScaleType: props.xScaleType,\n yScaleType: props.yScaleType,\n secondaryYScaleType: props.secondaryYScaleType,\n })\n : 0;\n if (_points[i].data.length === 1) {\n const {\n x: x1,\n y: y1,\n xAxisCalloutData,\n xAxisCalloutAccessibilityData,\n } = _points[i].data[0] as LineChartDataPoint;\n const xPoint = _xAxisScale(x1);\n const yPoint = yScale(y1);\n if (isPlottable(xPoint, yPoint)) {\n const circleId = `${_circleId}_${i}`;\n const isLegendSelected: boolean =\n _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n const currentMarkerSize = _points[i].data[0].markerSize!;\n const supportsTextMode = _points[i].lineOptions?.mode?.includes('text');\n const text = _points[i].data[0].text;\n const targetElement = document.getElementById(circleId);\n pointsForLine.push(\n <>\n <React.Fragment key={`${circleId}_fragment`}>\n <circle\n id={circleId}\n key={circleId}\n r={\n currentMarkerSize\n ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize\n : activePoint === circleId\n ? 5.5\n : 3.5\n }\n cx={xPoint}\n cy={yPoint}\n fill={activePoint === circleId ? tokens.colorNeutralBackground1 : lineColor}\n opacity={isLegendSelected ? 1 : 0.1}\n tabIndex={isLegendSelected ? 0 : undefined}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n strokeWidth={activePoint === circleId ? DEFAULT_LINE_STROKE_SIZE : 0}\n stroke={activePoint === circleId ? lineColor : ''}\n role=\"img\"\n aria-label={_points[i].data[0].text ?? _getAriaLabel(i, 0)}\n data-is-focusable={isLegendSelected}\n ref={(e: SVGCircleElement | null) => {\n _refCallback(e!, circleId);\n }}\n onFocus={event =>\n _handleFocus(\n event,\n circleId,\n x1,\n xAxisCalloutData,\n circleId,\n targetElement,\n xAxisCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[0].onDataPointClick)}\n />\n {!_isScatterPolar && supportsTextMode && text && (\n <text\n key={`${circleId}-label`}\n x={xPoint}\n y={\n yPoint +\n Math.max(currentMarkerSize ? (currentMarkerSize * extraMaxPixels) / maxMarkerSize : 3.5, 4) +\n 12\n }\n className={classes.markerLabel}\n opacity={isLegendSelected ? 1 : 0.1}\n >\n {text}\n </text>\n )}\n </React.Fragment>\n </>,\n );\n }\n }\n\n let gapIndex = 0;\n const gaps = _points[i].gaps?.sort((a, b) => a.startIndex - b.startIndex) ?? [];\n const lineCurve = _points[i].lineOptions?.curve;\n\n // Use path rendering technique for larger datasets to optimize performance.\n if ((props.optimizeLargeData || lineCurve) && _points[i].data.length > 1) {\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => _xAxisScale(d[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d[1]))\n .curve(getCurveFactory(lineCurve))\n .defined(d => isPlottable(_xAxisScale(d[0]), yScale(d[1])));\n\n const lineId = `${_lineId}_${i}`;\n const borderId = `${_borderId}_${i}`;\n const strokeWidth = _points[i].lineOptions?.strokeWidth || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const lineData: [number, number][] = [];\n for (let k = 0; k < _points[i].data.length; k++) {\n lineData.push([\n _points[i].data[k].x instanceof Date\n ? (_points[i].data[k].x as Date).getTime()\n : (_points[i].data[k].x as number),\n _points[i].data[k].y,\n ]);\n }\n\n // Check if lines should be drawn based on mode\n const lineMode = _points[i].lineOptions?.mode;\n const shouldDrawLines = lineMode !== 'markers';\n if (shouldDrawLines && isLegendSelected) {\n const lineBorderWidth = _points[i].lineOptions?.lineBorderWidth\n ? Number.parseFloat(_points[i].lineOptions!.lineBorderWidth!.toString())\n : 0;\n if (lineBorderWidth > 0) {\n bordersForLine.push(\n <path\n id={borderId}\n key={borderId}\n d={line(lineData)!}\n fill=\"transparent\"\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeWidth={Number.parseFloat(strokeWidth.toString()) + lineBorderWidth}\n stroke={_points[i].lineOptions?.lineBorderColor || tokens.colorNeutralBackground1}\n opacity={1}\n />,\n );\n }\n\n linesForLine.push(\n <path\n id={lineId}\n key={lineId}\n d={line(lineData)!}\n fill=\"transparent\"\n data-is-focusable={true}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n onMouseMove={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\n {..._getClickHandler(_points[i].onLineClick)}\n opacity={1}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n } else if (shouldDrawLines) {\n linesForLine.push(\n <path\n id={lineId}\n key={lineId}\n d={line(lineData)!}\n fill=\"transparent\"\n data-is-focusable={false}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n opacity={0.1}\n />,\n );\n }\n\n // Always add the highlight circle for large dataset hover\n pointsForLine.push(\n <circle\n id={`${_staticHighlightCircle}_${i}`}\n key={`${_staticHighlightCircle}_${i}`}\n r={5.5}\n cx={0}\n cy={0}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={DEFAULT_LINE_STROKE_SIZE}\n stroke={lineColor}\n visibility={'hidden'}\n onMouseMove={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\n />,\n );\n\n // Add individual markers if mode includes 'markers'\n const showMarkers = !!lineMode?.includes('markers');\n if (showMarkers) {\n for (let k = 0; k < _points[i].data.length; k++) {\n const { x, y } = _points[i].data[k];\n const xPoint = _xAxisScale(x instanceof Date ? x.getTime() : x);\n const yPoint = yScale(y);\n\n if (isPlottable(xPoint, yPoint)) {\n const markerSize = _points[i].data[k].markerSize;\n const perPointColor = _points[i].data[k]?.markerColor;\n pointsForLine.push(\n <circle\n key={`${_circleId}_${i}_${k}_marker`}\n r={\n markerSize\n ? (markerSize! * extraMaxPixels * 0.3) / maxMarkerSize\n : activePoint === _circleId\n ? 5.5\n : 3.5\n }\n cx={xPoint}\n cy={yPoint}\n fill={\n activePoint === _circleId\n ? tokens.colorNeutralBackground1\n : perPointColor || _points[i]?.color || lineColor\n }\n stroke={perPointColor || lineColor}\n strokeWidth={1}\n opacity={isLegendSelected ? 1 : 0.1}\n onMouseMove={_onMouseOverLargeDataset.bind(i, verticaLineHeight, yScale)}\n onMouseOver={_onMouseOverLargeDataset.bind(i, verticaLineHeight, yScale)}\n onMouseOut={_handleMouseOut}\n />,\n );\n }\n }\n }\n } else if (!props.optimizeLargeData) {\n for (let j = 1; j < _points[i].data.length; j++) {\n const gapResult = _checkInGap(j, gaps, gapIndex);\n const isInGap = gapResult.isInGap;\n gapIndex = gapResult.gapIndex;\n\n const lineId = `${_lineId}_${i}_${j}`;\n const borderId = `${_borderId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const {\n x: x1,\n y: y1,\n xAxisCalloutData,\n xAxisCalloutAccessibilityData,\n } = _points[i].data[j - 1] as LineChartDataPoint;\n const { x: x2, y: y2 } = _points[i].data[j] as LineChartDataPoint;\n const xPoint1 = _xAxisScale(x1);\n const yPoint1 = yScale(y1);\n const xPoint2 = _xAxisScale(x2);\n const yPoint2 = yScale(y2);\n const strokeWidth = _points[i].lineOptions?.strokeWidth || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;\n\n const isLegendSelected: boolean =\n _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n const supportsTextMode = _points[i].lineOptions?.mode?.includes('text');\n const text = _points[i].data[j - 1].text;\n let currentMarkerSize = _points[i].data[j - 1].markerSize!;\n if (isPlottable(xPoint1, yPoint1)) {\n const path = _getPath(xPoint1, yPoint1, circleId, j, false, _points[i].index);\n const targetElement = document.getElementById(circleId);\n pointsForLine.push(\n _points[i].lineOptions?.mode?.includes('markers') || supportsTextMode ? (\n <>\n <circle\n id={circleId}\n key={circleId}\n r={currentMarkerSize ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize : 4}\n cx={xPoint1}\n cy={yPoint1}\n data-is-focusable={isLegendSelected}\n onMouseOver={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x1,\n xAxisCalloutData,\n circleId,\n targetElement,\n xAxisCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_points[i].data[j - 1]?.markerColor || _getPointFill(lineColor, circleId, j, false)}\n stroke={_points[i].data[j - 1]?.markerColor || lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_points[i].data[j - 1].text ?? _getAriaLabel(i, j - 1)}\n />\n {!_isScatterPolar && supportsTextMode && text && (\n <text\n key={`${circleId}-label`}\n x={xPoint1}\n y={\n yPoint1 +\n Math.max(currentMarkerSize ? (currentMarkerSize * extraMaxPixels) / maxMarkerSize : 4, 4) +\n 12\n }\n className={classes.markerLabel}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n >\n {text}\n </text>\n )}\n </>\n ) : (\n <path\n id={circleId}\n key={circleId}\n d={path}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x1,\n xAxisCalloutData,\n circleId,\n targetElement,\n xAxisCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_points[i].data[j - 1]?.markerColor || _getPointFill(lineColor, circleId, j, false)}\n stroke={_points[i].data[j - 1]?.markerColor || lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_getAriaLabel(i, j - 1)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />\n ),\n );\n }\n if (j + 1 === _points[i].data.length) {\n // If this is last point of the line segment.\n const lastCircleId = `${circleId}${j}L`;\n const hiddenHoverCircleId = `${circleId}${j}D`;\n const lastPointHidden = _points[i].hideNonActiveDots && activePoint !== lastCircleId;\n const {\n xAxisCalloutData: lastCirlceXCallout,\n xAxisCalloutAccessibilityData: lastCirlceXCalloutAccessibilityData,\n } = _points[i].data[j];\n currentMarkerSize = _points[i].data[j].markerSize!;\n const lastSupportsTextMode = _points[i].lineOptions?.mode?.includes('text');\n const lastText = _points[i].data[j].text;\n if (isPlottable(xPoint2, yPoint2)) {\n const path = _getPath(xPoint2, yPoint2, lastCircleId, j, true, _points[i].index);\n const targetElement = document.getElementById(lastCircleId);\n pointsForLine.push(\n <React.Fragment key={`${lastCircleId}_container`}>\n {_points[i].lineOptions?.mode?.includes('markers') || lastSupportsTextMode ? (\n <>\n <circle\n id={lastCircleId}\n key={lastCircleId}\n r={currentMarkerSize ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize : 4}\n cx={xPoint2}\n cy={yPoint2}\n data-is-focusable={isLegendSelected}\n onMouseOver={event =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={event =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\n targetElement,\n lastCirlceXCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !lastPointHidden ? 1 : 0.01}\n fill={_getPointFill(lineColor, lastCircleId, j, true)}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_points[i].data[j].text ?? _getAriaLabel(i, j)}\n />\n {!_isScatterPolar && lastSupportsTextMode && lastText && (\n <text\n key={`${lastCircleId}-label`}\n x={xPoint2}\n y={\n yPoint2 +\n Math.max(\n currentMarkerSize ? (currentMarkerSize * extraMaxPixels) / maxMarkerSize : 4,\n 4,\n ) +\n 12\n }\n className={classes.markerLabel}\n >\n {text}\n </text>\n )}\n </>\n ) : (\n <path\n id={lastCircleId}\n key={lastCircleId}\n d={path}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\n targetElement,\n lastCirlceXCalloutAccessibilityData,\n )\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !lastPointHidden ? 1 : 0.01}\n fill={_points[i].data[j]?.markerColor || _getPointFill(lineColor, lastCircleId, j, true)}\n stroke={_points[i].data[j]?.markerColor || lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />\n )}\n {/* Dummy circle acting as magnetic latch for last callout point */}\n <circle\n id={hiddenHoverCircleId}\n key={hiddenHoverCircleId}\n r={8}\n cx={xPoint2}\n cy={yPoint2}\n opacity={0}\n width={0}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n strokeWidth={0}\n focusable={false}\n onBlur={_handleMouseOut}\n />\n </React.Fragment>,\n );\n }\n }\n\n if (\n isPlottable(xPoint1, yPoint1) &&\n isPlottable(xPoint2, yPoint2) &&\n (!_hasMarkersMode || _points[i].lineOptions?.mode?.includes('lines'))\n ) {\n if (isLegendSelected) {\n // don't draw line if it is in a gap\n if (!isInGap) {\n const lineBorderWidth = _points[i].lineOptions?.lineBorderWidth\n ? Number.parseFloat(_points[i].lineOptions!.lineBorderWidth!.toString())\n : 0;\n const targetElement = document.getElementById(circleId);\n if (lineBorderWidth > 0) {\n bordersForLine.push(\n <line\n id={borderId}\n key={borderId}\n x1={xPoint1}\n y1={yPoint1}\n x2={xPoint2}\n y2={yPoint2}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeWidth={Number.parseFloat(strokeWidth.toString()) + lineBorderWidth}\n stroke={_points[i].lineOptions?.lineBorderColor || tokens.colorNeutralBackground1}\n opacity={1}\n />,\n );\n }\n\n linesForLine.push(\n <line\n id={lineId}\n key={lineId}\n x1={xPoint1}\n y1={yPoint1}\n x2={xPoint2}\n y2={yPoint2}\n strokeWidth={strokeWidth}\n ref={(e: SVGLineElement | null) => {\n _refCallback(e!, lineId);\n }}\n onMouseOver={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseMove={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n legendVal,\n lineColor,\n targetElement,\n )\n }\n onMouseOut={_handleMouseOut}\n stroke={lineColor}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n strokeDashoffset={_points[i].lineOptions?.strokeDashoffset}\n opacity={1}\n {..._getClickHandler(_points[i].onLineClick)}\n />,\n );\n }\n } else {\n if (!isInGap) {\n linesForLine.push(\n <line\n id={lineId}\n key={lineId}\n x1={xPoint1}\n y1={yPoint1}\n x2={xPoint2}\n y2={yPoint2}\n strokeWidth={strokeWidth}\n stroke={lineColor}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={_points[i].lineOptions?.strokeDasharray}\n strokeDashoffset={_points[i].lineOptions?.strokeDashoffset}\n opacity={0.1}\n />,\n );\n }\n }\n }\n }\n }\n\n // Add filled area for scatterpolar charts\n const fillMode = _points[i].lineOptions?.fill;\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n if (fillMode === 'toself' && _points[i].data.length >= 3 && isLegendSelected && _isScatterPolar) {\n const getScaledXValue = (dataPoint: LineChartDataPoint) =>\n _xAxisScale(dataPoint.x instanceof Date ? dataPoint.x : (dataPoint.x as number));\n\n const fillPathGenerator = d3Line<LineChartDataPoint>()\n .x(dataPoint => getScaledXValue(dataPoint))\n .y(dataPoint => yScale(dataPoint.y))\n .curve(getCurveFactory(lineCurve))\n .defined(dataPoint => isPlottable(getScaledXValue(dataPoint), yScale(dataPoint.y)));\n\n const fillPath = fillPathGenerator(_points[i].data as LineChartDataPoint[]);\n\n if (fillPath) {\n linesForLine.push(\n <path\n key={`scatterpolar_fill_${i}`}\n d={`${fillPath}Z`}\n fill={lineColor}\n fillOpacity={0.5}\n stroke={lineColor}\n strokeWidth={2}\n strokeOpacity={0.8}\n pointerEvents=\"none\"\n />,\n );\n }\n }\n\n if (_isScatterPolar) {\n pointsForLine.push(\n ...renderScatterPolarCategoryLabels({\n xAxisScale: _xAxisScale,\n yAxisScale: yScale,\n className: classes.markerLabel || '',\n lineOptions: (_points[i] as Partial<LineChartPoints>)?.lineOptions,\n }),\n );\n }\n\n lines.push(\n <g\n key={`line_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, line ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {bordersForLine}\n {linesForLine}\n {pointsForLine}\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 lines;\n }\n\n function _createColorFillBars(containerHeight: number) {\n const colorFillBars: JSXElement[] = [];\n if (isSelectedLegend) {\n _colorFillBars.current = selectedColorBarLegend;\n } else {\n _colorFillBars.current = props.colorFillBars!;\n }\n\n const yMinMaxValues = findNumericMinMaxOfY(_points);\n const FILL_Y_PADDING = 3;\n for (let i = 0; i < _colorFillBars.current.length; i++) {\n const colorFillBar = _colorFillBars.current[i];\n const colorFillBarId = `${_colorFillBarId}-${i}`;\n const color = getColorFromToken(colorFillBar.color);\n\n if (colorFillBar.applyPattern) {\n // Using a pattern element because CSS was unable to render diagonal stripes for rect elements\n colorFillBars.push(_getStripePattern(color, i));\n }\n\n for (let j = 0; j < colorFillBar.data.length; j++) {\n const startX = colorFillBar.data[j].startX;\n const endX = colorFillBar.data[j].endX;\n const opacity =\n _legendHighlighted(colorFillBar.legend) || _noLegendHighlighted() || isSelectedLegend\n ? _getColorFillBarOpacity(colorFillBar)\n : 0.1;\n colorFillBars.push(\n <rect\n fill={colorFillBar.applyPattern ? `url(#${_colorFillBarPatternId}_${i})` : color}\n fillOpacity={opacity}\n x={_isRTL ? _xAxisScale(endX) : _xAxisScale(startX)}\n y={_yScalePrimary(yMinMaxValues.endValue) - FILL_Y_PADDING}\n width={Math.abs(_xAxisScale(endX) - _xAxisScale(startX))}\n height={_yScalePrimary(props.yMinValue || 0) - _yScalePrimary(yMinMaxValues.endValue) + FILL_Y_PADDING}\n key={`${colorFillBarId}${j}`}\n />,\n );\n }\n }\n return colorFillBars;\n }\n\n function _getStripePattern(color: string, id: number) {\n // This describes a tile pattern that resembles diagonal stripes\n // For more information: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d\n const stripePath = 'M-4,4 l8,-8 M0,16 l16,-16 M12,20 l8,-8';\n return (\n <pattern\n id={`${_colorFillBarPatternId}_${id}`}\n width={16}\n height={16}\n key={`${_colorFillBarPatternId}_${id}`}\n patternUnits={'userSpaceOnUse'}\n >\n <path d={stripePath} stroke={color} strokeWidth={1.25} />\n </pattern>\n );\n }\n\n function _checkInGap(pointIndex: number, gaps: LineChartGap[], currentGapIndex: number) {\n let gapIndex = currentGapIndex;\n let isInGap = false;\n\n while (gapIndex < gaps.length && pointIndex > gaps[gapIndex].endIndex) {\n gapIndex++;\n }\n\n if (gapIndex < gaps.length && pointIndex > gaps[gapIndex].startIndex && pointIndex <= gaps[gapIndex].endIndex) {\n isInGap = true;\n }\n return { isInGap, gapIndex };\n }\n\n function _refCallback(element: SVGGElement, legendTitle: string): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n const _onMouseOverLargeDataset = (\n linenumber: number,\n lineHeight: number,\n mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>,\n yScale: ScaleLinear<number, number>,\n ) => {\n mouseEvent.persist();\n const { data } = props;\n const { lineChartData } = data;\n\n // This will get the value of the X when mouse is on the chart\n const xOffset = _xAxisScale.invert(pointer(mouseEvent)[0], document.getElementById(_rectId)!);\n const i = bisect(lineChartData![linenumber].data, xOffset);\n const d0 = lineChartData![linenumber].data[i - 1] as LineChartDataPoint;\n const d1 = lineChartData![linenumber].data[i] as LineChartDataPoint;\n let axisType: XAxisTypes | null = null;\n let xPointToHighlight: string | Date | number = 0;\n let index: null | number = null;\n if (d0 === undefined && d1 !== undefined) {\n xPointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n xPointToHighlight = d0.x;\n index = i - 1;\n } else {\n axisType = getTypeOfAxis(lineChartData![linenumber].data[0].x, true) as XAxisTypes;\n let x0;\n let point0;\n let point1;\n switch (axisType) {\n case XAxisTypes.DateAxis:\n x0 = new Date(xOffset).getTime();\n point0 = (d0.x as Date).getTime();\n point1 = (d1.x as Date).getTime();\n xPointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n case XAxisTypes.NumericAxis:\n x0 = xOffset as number;\n point0 = d0.x as number;\n point1 = d1.x as number;\n xPointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n default:\n break;\n }\n }\n\n const { xAxisCalloutData } = lineChartData![linenumber].data[index as number];\n const formattedDate =\n xPointToHighlight instanceof Date\n ? formatDateToLocaleString(xPointToHighlight, props.culture, props.useUTC as boolean)\n : xPointToHighlight;\n const found = findCalloutPoints(calloutPointsRef.current, xPointToHighlight) as CustomizedCalloutData | undefined;\n const pointToHighlight: LineChartDataPoint = lineChartData![linenumber].data[index!] as LineChartDataPoint;\n\n // Check if this point is plottable. If not, close the popover and return.\n const xPoint = _xAxisScale(pointToHighlight.x);\n const yPoint = yScale(pointToHighlight.y);\n if (!isPlottable(xPoint, yPoint)) {\n return;\n }\n\n const pointToHighlightUpdated =\n nearestCircleToHighlight === null ||\n (nearestCircleToHighlight !== null &&\n pointToHighlight !== null &&\n (nearestCircleToHighlight.x !== pointToHighlight.x || nearestCircleToHighlight.y !== pointToHighlight.y));\n // if no points need to be called out then don't show vertical line and callout card\n if (found && pointToHighlightUpdated) {\n _uniqueCallOutID = `#${_staticHighlightCircle}_${linenumber}`;\n\n d3Select(`#${_staticHighlightCircle}_${linenumber}`)\n .attr('cx', `${xPoint}`)\n .attr('cy', `${yPoint}`)\n .attr('visibility', 'visibility');\n\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${xPoint}, ${yPoint})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - 5 - yPoint}`);\n\n const targetElement = document.getElementById(`${_staticHighlightCircle}_${linenumber}`);\n const rect = targetElement!.getBoundingClientRect();\n setNearestCircleToHighlight(pointToHighlight);\n updatePosition(rect.x, rect.y);\n setStackCalloutProps(found!);\n setYValueHover(found.values);\n setDataPointCalloutProps(found!);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue(formattedDate);\n setActivePoint('');\n }\n\n if (!found) {\n setPopoverOpen(false);\n setNearestCircleToHighlight(pointToHighlight);\n setActivePoint('');\n }\n };\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement | SVGPathElement, Element>,\n lineId: string,\n x: number | Date,\n xAxisCalloutData: string | undefined,\n circleId: string,\n targetElement: HTMLElement | null,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDateToLocaleString(x, props.culture, props.useUTC as boolean) : x;\n const found = findCalloutPoints(calloutPointsRef.current, x) as CustomizedCalloutData | undefined;\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)}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === lineId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setRefSelected(targetElement);\n setStackCalloutProps(found!);\n setDataPointCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date,\n y: number,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n yScale: ScaleLinear<number, number>,\n legendVal: string,\n lineColor: string,\n targetElement: HTMLElement | null,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDateToLocaleString(x, props.culture, props.useUTC as boolean) : x;\n const found = findCalloutPoints(calloutPointsRef.current, x) as CustomizedCalloutData | undefined;\n let hoverDp: CustomizedCalloutData | undefined = undefined;\n\n if (props.isCalloutForStack === false && found?.values) {\n const dp = find(found.values, (val: CustomizedCalloutDataPoint) => val?.y === y);\n if (dp) {\n hoverDp = {\n x,\n values: [dp],\n };\n }\n }\n // if no points need to be called out then don't show vertical line and callout card\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x)}, ${yScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - 5 - yScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n setRefSelected(targetElement);\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setYValue(y);\n setLegendVal(legendVal);\n setLineColor(lineColor);\n setStackCalloutProps(found!);\n setDataPointCalloutProps(hoverDp);\n setActivePoint(circleId);\n setNearestCircleToHighlight(null);\n }\n } else {\n setActivePoint(circleId);\n setNearestCircleToHighlight(null);\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 function _handleMultipleLineLegendSelectionAction(selectedLine: LineChartDataWithIndex) {\n const selectedLineIndex = selectedLegendPoints.reduce((acc, line, index) => {\n if (acc > -1 || line.legend !== selectedLine.legend) {\n return acc;\n } else {\n return index;\n }\n }, -1);\n\n let selectedLines: LineChartDataWithIndex[];\n if (selectedLineIndex === -1) {\n selectedLines = [...selectedLegendPoints, selectedLine];\n } else {\n selectedLines = selectedLegendPoints\n .slice(0, selectedLineIndex)\n .concat(selectedLegendPoints.slice(selectedLineIndex + 1));\n }\n\n const areAllLineLegendsSelected = props.data && selectedLines.length === props.data.lineChartData!.length;\n\n if (\n areAllLineLegendsSelected &&\n ((props.colorFillBars && props.colorFillBars.length === selectedColorBarLegend.length) || !props.colorFillBars)\n ) {\n // Clear all legends if all legends including color fill bar legends are selected\n // Or clear all legends if all legends are selected and there are no color fill bars\n _clearMultipleLegendSelections();\n } else if (!selectedLines.length && !selectedColorBarLegend.length) {\n // Clear all legends if no legends including color fill bar legends are selected\n _clearMultipleLegendSelections();\n } else {\n // Otherwise, set state when one or more legends are selected, including color fill bar legends\n setSelectedLegendPoints(selectedLines);\n setIsSelectedLegend(true);\n }\n\n const selectedLegendTitlesToPass = selectedLines.map((line: LineChartDataWithIndex) => line.legend);\n _handleLegendClick(selectedLine, selectedLegendTitlesToPass);\n }\n\n function _handleMultipleColorFillBarLegendSelectionAction(selectedColorFillBar: ColorFillBarsProps) {\n const selectedColorFillBarIndex = selectedColorBarLegend.reduce((acc, colorFillBar, index) => {\n if (acc > -1 || colorFillBar.legend !== selectedColorFillBar.legend) {\n return acc;\n } else {\n return index;\n }\n }, -1);\n\n let selectedColorFillBars: ColorFillBarsProps[];\n if (selectedColorFillBarIndex === -1) {\n selectedColorFillBars = [...selectedColorBarLegend, selectedColorFillBar];\n } else {\n selectedColorFillBars = selectedColorBarLegend\n .slice(0, selectedColorFillBarIndex)\n .concat(selectedColorBarLegend.slice(selectedColorFillBarIndex + 1));\n }\n\n const areAllColorFillBarLegendsSelected =\n selectedColorFillBars.length === (props.colorFillBars && props.colorFillBars!.length);\n\n if (\n areAllColorFillBarLegendsSelected &&\n ((props.data && props.data.lineChartData!.length === selectedLegendPoints.length) || !props.data)\n ) {\n // Clear all legends if all legends, including line legends, are selected\n // Or clear all legends if all legends are selected and there is no line data\n _clearMultipleLegendSelections();\n } else if (!selectedColorFillBars.length && !selectedLegendPoints.length) {\n // Clear all legends if no legends are selected, including line legends\n _clearMultipleLegendSelections();\n } else {\n // set state when one or more legends are selected, including line legends\n setSelectedColorBarLegend(selectedColorFillBars);\n setIsSelectedLegend(true);\n }\n\n const selectedLegendTitlesToPass = selectedColorFillBars.map(\n (colorFillBar: ColorFillBarsProps) => colorFillBar.legend,\n );\n _handleLegendClick(selectedColorFillBar, selectedLegendTitlesToPass);\n }\n\n function _clearMultipleLegendSelections() {\n setSelectedColorBarLegend([]);\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string) {\n return selectedLegend === legend || (selectedLegend === '' && activeLegend === legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted() {\n return selectedLegend === '' && activeLegend === '';\n }\n\n function _getColorFillBarOpacity(colorFillBar: ColorFillBarsProps) {\n return colorFillBar.applyPattern ? 1 : 0.4;\n }\n\n function _getAriaLabel(lineIndex: number, pointIndex: number): string {\n const line = _points[lineIndex];\n const point = line.data[pointIndex];\n const formattedDate =\n point.x instanceof Date ? formatDateToLocaleString(point.x, props.culture, props.useUTC as boolean) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = line.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, eventAnnotationProps } = props;\n _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n\n _isXAxisDateType = getXAxisType(_points);\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n calloutPointsRef.current = 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: yValueHover,\n hoverXValue: hoverXValue,\n YValue: YValue,\n legend: legendVal,\n color: lineColor,\n XValue: hoverXValue! as string,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData: xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n isPopoverOpen: isPopoverOpen,\n clickPosition: clickPosition,\n positioning: {\n target: refSelected,\n },\n isCalloutForStack: props.isCalloutForStack,\n culture: props.culture,\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.LineChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n createYAxis={createNumericYAxis}\n getmargins={_getMargins}\n getMinMaxOfYAxis={_getNumericMinMaxOfY}\n getGraphData={_initializeLineChartData}\n xAxisType={_isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n {...(_isScatterPolar ? { yMaxValue: 1, yMinValue: -1 } : {})}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={props.enablePerfOptimization && _firstRenderOptimization}\n componentRef={cartesianChartRef}\n children={(props: ChildProps) => {\n _xAxisScale = props.xScale!;\n _yScalePrimary = props.yScalePrimary!;\n _yScaleSecondary = props.yScaleSecondary;\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 {props.optimizeLargeData ? (\n <rect id={_rectId} width={props.containerWidth} height={props.containerHeight} fill={'transparent'} />\n ) : (\n <></>\n )}\n <g>\n {_renderedColorFillBars}\n {lines}\n </g>\n {eventAnnotationProps && (\n <EventsAnnotation\n {...eventAnnotationProps}\n scale={props.xScale!}\n chartYTop={margins.top! + eventLabelHeight}\n chartYBottom={props.containerHeight! - 35}\n />\n )}\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 },\n);\nLineChart.displayName = 'LineChart';\n"],"names":["React","useLineChartStyles","select","d3Select","pointer","bisector","Legends","line","d3Line","max","d3Max","useId","find","findCalloutPoints","CartesianChart","EventsAnnotation","tokens","calloutData","ChartTypes","getXAxisType","XAxisTypes","tooltipOfAxislabels","Points","pointTypes","getTypeOfAxis","getNextColor","getColorFromToken","findNumericMinMaxOfY","createNumericYAxis","domainRangeOfDateForAreaLineScatterVerticalBarCharts","domainRangeOfNumericForAreaLineScatterCharts","createStringYAxis","useRtl","getCurveFactory","isScatterPolarSeries","getDomainPaddingForMarkers","isPlottable","getRangeForScatterMarkerSize","renderScatterPolarCategoryLabels","formatDateToLocaleString","useImageExport","PointSize","bisect","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","LineChart","forwardRef","isCalloutForStack","restProps","forwardedRef","props","_hasMarkersMode","_isXAxisDateType","_isScatterPolar","_points","_injectIndexPropertyInLineChartData","data","lineChartData","_xAxisScale","_yScalePrimary","_circleId","_lineId","_borderId","_verticalLine","_colorFillBarPatternId","_uniqueCallOutID","_refArray","margins","eventLabelHeight","lines","_renderedColorFillBars","_colorFillBars","useRef","_tooltipId","_rectId","_staticHighlightCircle","_firstRenderOptimization","_emptyChartId","_colorFillBarId","_isRTL","xAxisCalloutAccessibilityData","cartesianChartRef","legendsRef","_legendsRef","componentRef","hideLegend","_yScaleSecondary","eventAnnotationProps","labelHeight","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","yValueHover","setYValueHover","selectedLegend","setSelectedLegend","selectedLegendPoints","setSelectedLegendPoints","selectedColorBarLegend","setSelectedColorBarLegend","isSelectedLegend","setIsSelectedLegend","legendProps","selectedLegends","length","activePoint","setActivePoint","nearestCircleToHighlight","setNearestCircleToHighlight","dataPointCalloutProps","setDataPointCalloutProps","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","isPopoverOpen","setPopoverOpen","YValue","setYValue","legendVal","setLegendVal","lineColor","setLineColor","refSelected","setRefSelected","pointsRef","calloutPointsRef","classes","useEffect","current","height","width","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","barWidth","tickValues","domainNRangeValue","NumericAxis","xScaleType","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","isFilterSelectedLegends","allowMultipleShapesForPoints","filteredData","filter","item","includes","legend","some","lineOptions","mode","map","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getNumericMinMaxOfY","yAxisType","useSecondaryYScale","startValue","endValue","secondaryYScaleType","yScaleType","yPadding","start","end","_getMargins","_margins","_initializeLineChartData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","colorFillBars","_createColorFillBars","_createLines","_handleSingleLegendSelectionAction","lineChartItem","_handleLegendClick","_onHoverCardHide","onLegendClick","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","mapLegendToPoints","forEach","point","push","legendDataItems","Object","entries","legendTitle","representativePoint","title","action","p","_handleMultipleLineLegendSelectionAction","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","keys","colorFillBarsLegendDataItems","colorFillBar","_handleMultipleColorFillBarLegendSelectionAction","opacity","_getColorFillBarOpacity","stripePattern","applyPattern","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","legendRef","_getBoxWidthOfShape","pointId","pointIndex","isLastPoint","strokeWidth","_getPath","xPos","yPos","pointOftheLine","widthRatio","_getPointFill","colorNeutralBackground1","maxMarkerSize","markerSize","i","linesForLine","bordersForLine","pointsForLine","verticaLineHeight","bottom","yScale","extraMaxPixels","x1","y1","xAxisCalloutData","xPoint","yPoint","circleId","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentMarkerSize","supportsTextMode","text","targetElement","document","getElementById","Fragment","key","circle","id","r","cx","cy","fill","tabIndex","undefined","onMouseOver","event","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","stroke","role","aria-label","_getAriaLabel","data-is-focusable","ref","e","_refCallback","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","className","markerLabel","gapIndex","gaps","sort","a","b","startIndex","lineCurve","curve","optimizeLargeData","defined","lineId","borderId","lineData","k","Date","getTime","lineMode","shouldDrawLines","lineBorderWidth","Number","parseFloat","toString","path","strokeLinecap","lineBorderColor","strokeDasharray","_onMouseOverLargeDataset","onLineClick","visibility","showMarkers","perPointColor","markerColor","bind","j","gapResult","_checkInGap","isInGap","x2","y2","xPoint1","yPoint1","xPoint2","yPoint2","currentPointHidden","hideNonActiveDots","lastCircleId","hiddenHoverCircleId","lastPointHidden","lastCirlceXCallout","lastCirlceXCalloutAccessibilityData","lastSupportsTextMode","lastText","focusable","strokeDashoffset","fillMode","getScaledXValue","dataPoint","fillPathGenerator","fillPath","fillOpacity","strokeOpacity","pointerEvents","xAxisScale","yAxisScale","g","showXAxisLablesTooltip","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","yMinMaxValues","FILL_Y_PADDING","colorFillBarId","_getStripePattern","startX","endX","rect","abs","yMinValue","stripePath","pattern","patternUnits","currentGapIndex","endIndex","element","refElement","linenumber","lineHeight","mouseEvent","persist","xOffset","invert","d0","d1","axisType","xPointToHighlight","x0","point0","point1","formattedDate","culture","useUTC","found","pointToHighlight","pointToHighlightUpdated","attr","getBoundingClientRect","values","formattedData","obj","hoverDp","dp","val","func","onClick","selectedLine","selectedLineIndex","reduce","acc","selectedLines","slice","concat","areAllLineLegendsSelected","_clearMultipleLegendSelections","selectedLegendTitlesToPass","selectedColorFillBar","selectedColorFillBarIndex","selectedColorFillBars","areAllColorFillBarLegendsSelected","lineIndex","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","tickFormat","legendBars","calloutProps","YValueHover","XValue","descriptionMessage","getCalloutDescriptionMessage","positioning","target","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","chartTitle","createYAxis","getmargins","getMinMaxOfYAxis","getGraphData","yMaxValue","getDomainNRangeValues","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","scale","chartYTop","top","chartYBottom","div","style","displayName"],"mappings":"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"}
|