@fluentui/react-charts 0.0.0-nightly-20250825-0406.1 → 0.0.0-nightly-20250826-0412.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/CHANGELOG.md +15 -15
  2. package/dist/index.d.ts +6 -0
  3. package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -2
  4. package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  5. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -15
  6. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.js +16 -20
  8. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  9. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +17 -14
  10. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  11. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +6 -33
  12. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  13. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +1 -0
  14. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  15. package/lib/components/DonutChart/useDonutChartStyles.styles.js +3 -3
  16. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  17. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +2 -11
  18. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  19. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +4 -17
  20. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  21. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +4 -21
  22. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  23. package/lib/components/LineChart/LineChart.js +111 -81
  24. package/lib/components/LineChart/LineChart.js.map +1 -1
  25. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  26. package/lib/components/LineChart/useLineChartStyles.styles.js +23 -10
  27. package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  28. package/lib/components/LineChart/useLineChartStyles.styles.raw.js +4 -21
  29. package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  30. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +12 -25
  31. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  32. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +2 -12
  33. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  34. package/lib/components/ScatterChart/useScatterChartStyles.styles.js +11 -7
  35. package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  36. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +4 -22
  37. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  38. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +8 -6
  39. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  40. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +5 -19
  41. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  42. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +7 -6
  43. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  44. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +4 -19
  45. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  46. package/lib/utilities/Common.styles.js +47 -0
  47. package/lib/utilities/Common.styles.js.map +1 -0
  48. package/lib/utilities/Common.styles.raw.js +47 -0
  49. package/lib/utilities/Common.styles.raw.js.map +1 -0
  50. package/lib/utilities/SVGTooltipText.js.map +1 -1
  51. package/lib/utilities/index.js +1 -0
  52. package/lib/utilities/index.js.map +1 -1
  53. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  54. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +2 -14
  55. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  56. package/lib-commonjs/components/CommonComponents/CartesianChart.js +16 -20
  57. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  58. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +15 -13
  59. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  60. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -32
  61. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  62. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +1 -0
  63. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  64. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +2 -2
  65. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  66. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +2 -11
  67. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  68. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -19
  69. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  70. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +3 -20
  71. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  72. package/lib-commonjs/components/LineChart/LineChart.js +111 -81
  73. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  74. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  75. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +30 -9
  76. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  77. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +2 -20
  78. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  79. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +23 -33
  80. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  81. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +1 -12
  82. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  83. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +13 -7
  84. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  85. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +2 -20
  86. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  87. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +5 -3
  88. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  89. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +3 -17
  90. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  91. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +5 -3
  92. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  93. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +3 -18
  94. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  95. package/lib-commonjs/utilities/Common.styles.js +71 -0
  96. package/lib-commonjs/utilities/Common.styles.js.map +1 -0
  97. package/lib-commonjs/utilities/Common.styles.raw.js +71 -0
  98. package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -0
  99. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  100. package/lib-commonjs/utilities/index.js +1 -0
  101. package/lib-commonjs/utilities/index.js.map +1 -1
  102. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/LineChart/LineChart.tsx"],"sourcesContent":["import * 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, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { find } from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ColorFillBarsProps,\n LineChartGap,\n LineChartDataPoint,\n Chart,\n ImageExportOptions,\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 domainRangeOfDateForAreaLineVerticalBarChart,\n domainRangeOfNumericForAreaChart,\n createStringYAxis,\n useRtl,\n formatDate,\n getCurveFactory,\n} from '../../utilities/index';\nimport { ScaleLinear } from 'd3-scale';\nimport { toImage } from '../../utilities/image-export-utils';\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 (props, forwardedRef) => {\n let _hasMarkersMode: boolean = false;\n let _points: LineChartDataWithIndex[] = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _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 _xMin: number = Number.NEGATIVE_INFINITY;\n let _yMin: number = Number.NEGATIVE_INFINITY;\n let _xMax: number = Number.POSITIVE_INFINITY;\n let _xPadding: number = 0;\n let _yPadding: number = 0;\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<[]>([]);\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\n const pointsRef = React.useRef<LineChartDataWithIndex[] | []>([]);\n const calloutPointsRef = React.useRef<any[]>([]);\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 (_hasMarkersMode && xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = _getDomainNRangeValuesWithPadding(points, margins, width, isRTL);\n } else if (_hasMarkersMode && xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = _getDomainNRangeValuesOfDateWithPadding(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\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 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(points: LineChartPoints[]): { startValue: number; endValue: number } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { startValue, endValue } = findNumericMinMaxOfY(points);\n _yMin = startValue;\n if (_hasMarkersMode) {\n _yPadding = (endValue - startValue) * 0.1;\n }\n return {\n startValue: startValue - _yPadding,\n endValue: endValue + _yPadding,\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 _getRangeForScatterMarkerSize(yScale: any, yPadding: number): number {\n const extraXPixels = _isRTL\n ? _xAxisScale(_xMax - _xPadding) - _xAxisScale(_xMax)\n : _xAxisScale(_xMin + _xPadding) - _xAxisScale(_xMin);\n\n const extraYPixels = yScale(_yMin) - yScale(_yMin + _yPadding);\n return Math.min(extraXPixels, extraYPixels);\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 extraMaxPixels = _hasMarkersMode ? _getRangeForScatterMarkerSize(_yScalePrimary, _yPadding) : 0;\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 yScale = _points[i].useSecondaryYScale && _yScaleSecondary ? _yScaleSecondary : _yScalePrimary;\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 circleId = `${_circleId}_${i}`;\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n const currentMarkerSize = _points[i].data[0].markerSize!;\n pointsForLine.push(\n <>\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={_xAxisScale(x1)}\n cy={yScale(y1)}\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 )\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 )\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(event, circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[0].onDataPointClick)}\n />\n {_points[i].data[0].text && (\n <text\n key={`${circleId}-label`}\n x={_xAxisScale(x1)}\n y={\n yScale(y1) +\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 {_points[i].data[0].text}\n </text>\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\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 if (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 onMouseMove={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\n {..._getClickHandler(_points[i].onLineClick)}\n opacity={1}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n } else {\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 opacity={0.1}\n />,\n );\n }\n\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.bind(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\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 let path = _getPath(_xAxisScale(x1), yScale(y1), circleId, j, false, _points[i].index);\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 let currentMarkerSize = _points[i].data[j - 1].markerSize!;\n pointsForLine.push(\n _points[i].lineOptions?.mode?.includes('markers') ? (\n <>\n <circle\n id={circleId}\n key={circleId}\n r={currentMarkerSize ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize : 4}\n cx={_xAxisScale(x1)}\n cy={yScale(y1)}\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 )\n }\n onMouseMove={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_getPointFill(lineColor, circleId, j, false)}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_points[i].data[j - 1].text ?? _getAriaLabel(i, j - 1)}\n />\n {_points[i].data[j - 1].text && (\n <text\n key={`${circleId}-label`}\n x={_xAxisScale(x1)}\n y={yScale(y1) + 12}\n fontSize={12}\n className={classes.markerLabel}\n >\n {_points[i].data[j - 1].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 )\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 )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_getPointFill(lineColor, circleId, j, false)}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_getAriaLabel(i, j - 1)}\n tabIndex={isLegendSelected ? 0 : undefined}\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 path = _getPath(_xAxisScale(x2), yScale(y2), lastCircleId, j, true, _points[i].index);\n const {\n xAxisCalloutData: lastCirlceXCallout,\n xAxisCalloutAccessibilityData: lastCirlceXCalloutAccessibilityData,\n } = _points[i].data[j];\n currentMarkerSize = _points[i].data[j].markerSize!;\n pointsForLine.push(\n <React.Fragment key={`${lastCircleId}_container`}>\n {_points[i].lineOptions?.mode?.includes('markers') ? (\n <>\n <circle\n id={lastCircleId}\n key={lastCircleId}\n r={currentMarkerSize ? (currentMarkerSize! * extraMaxPixels) / maxMarkerSize : 4}\n cx={_xAxisScale(x2)}\n cy={yScale(y2)}\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 )\n }\n onMouseMove={event =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n yScale,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\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 {_points[i].data[j].text && (\n <text\n key={`${lastCircleId}-label`}\n x={_xAxisScale(x2)}\n y={yScale(y2) + 12}\n fontSize={12}\n className={classes.markerLabel}\n >\n {_points[i].data[j].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 )\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 )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\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={_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={_xAxisScale(x2)}\n cy={yScale(y2)}\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 )\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 )\n }\n onFocus={event =>\n _handleFocus(event, circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onMouseOut={_handleMouseOut}\n strokeWidth={0}\n focusable={false}\n onBlur={_handleMouseOut}\n />\n </React.Fragment>,\n );\n }\n\n if (!_hasMarkersMode || _points[i].lineOptions?.mode?.includes('lines')) {\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 if (lineBorderWidth > 0) {\n bordersForLine.push(\n <line\n id={borderId}\n key={borderId}\n x1={_xAxisScale(x1)}\n y1={yScale(y1)}\n x2={_xAxisScale(x2)}\n y2={yScale(y2)}\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={_xAxisScale(x1)}\n y1={yScale(y1)}\n x2={_xAxisScale(x2)}\n y2={yScale(y2)}\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 )\n }\n onMouseMove={event =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n yScale,\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={_xAxisScale(x1)}\n y1={yScale(y1)}\n x2={_xAxisScale(x2)}\n y2={yScale(y2)}\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 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 ? formatDate(xPointToHighlight, props.useUTC) : xPointToHighlight;\n const modifiedXVal = xPointToHighlight instanceof Date ? xPointToHighlight.getTime() : xPointToHighlight;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = find(_calloutPoints, (element: { x: string | number }) => {\n return element.x === modifiedXVal;\n });\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 setNearestCircleToHighlight(pointToHighlight);\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\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\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (event.target as SVGCircleElement | SVGPathElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n updatePosition(cx, cy);\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x)}, 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 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 | Date,\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 ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x)}, ${yScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - 5 - yScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setDataPointCalloutProps(found!);\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 = point.x instanceof Date ? formatDate(point.x, props.useUTC) : 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 _getDomainNRangeValuesOfDateWithPadding(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n isRTL: boolean,\n tickValues: Date[] = [],\n chartType: ChartTypes,\n barWidth?: number,\n ): IDomainNRange {\n let sDate: Date;\n let lDate: Date;\n\n sDate = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data, (item: LineChartDataPoint) => item.x as Date);\n })!;\n\n lDate = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data, (item: LineChartDataPoint) => item.x as Date);\n })!;\n\n // Include tickValues if present\n sDate = d3Min([...tickValues, sDate])!;\n lDate = d3Max([...tickValues, lDate])!;\n\n // Calculate time-based padding (e.g. 10% of the date range)\n const dateRange = lDate.getTime() - sDate.getTime();\n const datePadding = _hasMarkersMode ? dateRange * 0.1 : 0;\n\n const paddedSDate = new Date(sDate.getTime() - datePadding);\n const paddedLDate = new Date(lDate.getTime() + datePadding);\n\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? {\n dStartValue: paddedLDate,\n dEndValue: paddedSDate,\n rStartValue,\n rEndValue,\n }\n : {\n dStartValue: paddedSDate,\n dEndValue: paddedLDate,\n rStartValue,\n rEndValue,\n };\n }\n\n function _getDomainNRangeValuesWithPadding(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n isRTL: boolean,\n ): IDomainNRange {\n _xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data, (item: LineChartDataPoint) => item.x as number)!;\n })!;\n\n _xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data, (item: LineChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n if (_hasMarkersMode) {\n _xPadding = (_xMax - _xMin) * 0.1;\n }\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? {\n dStartValue: _xMax + _xPadding,\n dEndValue: _xMin - _xPadding,\n rStartValue,\n rEndValue,\n }\n : {\n dStartValue: _xMin - _xPadding,\n dEndValue: _xMax + _xPadding,\n rStartValue,\n rEndValue,\n };\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 const isXAxisDateType = getXAxisType(_points);\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover: YValueHover,\n hoverXValue: hoverXValue,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData: xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack: true,\n culture: props.culture ?? 'en-us',\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 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","min","d3Min","useId","find","CartesianChart","EventsAnnotation","tokens","calloutData","ChartTypes","getXAxisType","XAxisTypes","tooltipOfAxislabels","Points","pointTypes","getTypeOfAxis","getNextColor","getColorFromToken","findNumericMinMaxOfY","createNumericYAxis","domainRangeOfDateForAreaLineVerticalBarChart","domainRangeOfNumericForAreaChart","createStringYAxis","useRtl","formatDate","getCurveFactory","toImage","PointSize","bisect","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","LineChart","forwardRef","props","forwardedRef","_hasMarkersMode","_points","_injectIndexPropertyInLineChartData","data","lineChartData","_calloutPoints","_xAxisScale","_yScalePrimary","_circleId","_lineId","_borderId","_verticalLine","_colorFillBarPatternId","_uniqueCallOutID","_refArray","margins","eventLabelHeight","lines","_renderedColorFillBars","_colorFillBars","useRef","_tooltipId","_rectId","_staticHighlightCircle","_firstRenderOptimization","_emptyChartId","_colorFillBarId","_isRTL","xAxisCalloutAccessibilityData","cartesianChartRef","_xMin","Number","NEGATIVE_INFINITY","_yMin","_xMax","POSITIVE_INFINITY","_xPadding","_yPadding","_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","pointsRef","calloutPointsRef","classes","useEffect","current","height","width","useImperativeHandle","componentRef","chartContainer","opts","toSVG","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","_getDomainNRangeValuesWithPadding","DateAxis","_getDomainNRangeValuesOfDateWithPadding","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","startValue","endValue","_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","lineColor","colorNeutralBackground1","_getRangeForScatterMarkerSize","yScale","yPadding","extraXPixels","extraYPixels","extraMaxPixels","maxMarkerSize","markerSize","i","linesForLine","bordersForLine","pointsForLine","legendVal","verticaLineHeight","bottom","useSecondaryYScale","x1","y1","xAxisCalloutData","circleId","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentMarkerSize","circle","id","key","r","cx","cy","fill","tabIndex","undefined","onMouseOver","event","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","stroke","role","aria-label","text","_getAriaLabel","data-is-focusable","ref","e","_refCallback","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","className","markerLabel","gapIndex","gaps","sort","a","b","startIndex","lineCurve","curve","optimizeLargeData","lineId","borderId","lineData","k","Date","getTime","lineBorderWidth","parseFloat","toString","path","strokeLinecap","lineBorderColor","_onMouseOverLargeDataset","bind","onLineClick","visibility","j","gapResult","_checkInGap","isInGap","x2","y2","currentPointHidden","hideNonActiveDots","fontSize","lastCircleId","hiddenHoverCircleId","lastPointHidden","lastCirlceXCallout","lastCirlceXCalloutAccessibilityData","Fragment","focusable","strokeDasharray","strokeDashoffset","g","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","yMinMaxValues","FILL_Y_PADDING","colorFillBarId","_getStripePattern","startX","endX","rect","fillOpacity","abs","yMinValue","stripePath","pattern","patternUnits","currentGapIndex","endIndex","element","refElement","linenumber","lineHeight","mouseEvent","persist","xOffset","invert","d0","d1","axisType","xPointToHighlight","x0","point0","point1","formattedDate","useUTC","modifiedXVal","found","pointToHighlight","pointToHighlightUpdated","attr","clientX","clientY","values","targetRect","target","getBoundingClientRect","top","formattedData","xVal","obj","func","onClick","selectedLine","selectedLineIndex","reduce","acc","selectedLines","slice","concat","areAllLineLegendsSelected","_clearMultipleLegendSelections","selectedLegendTitlesToPass","selectedColorFillBar","selectedColorFillBarIndex","selectedColorFillBars","areAllColorFillBarLegendsSelected","lineIndex","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","sDate","lDate","dateRange","datePadding","paddedSDate","paddedLDate","right","_isChartEmpty","tickFormat","isXAxisDateType","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","chartTitle","createYAxis","getmargins","getMinMaxOfYAxis","getGraphData","getDomainNRangeValues","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","scale","chartYTop","chartYBottom","div","style","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/LineChart/LineChart.tsx"],"sourcesContent":["import * 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, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { find } 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} 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 domainRangeOfDateForAreaLineVerticalBarChart,\n domainRangeOfNumericForAreaChart,\n createStringYAxis,\n useRtl,\n formatDate,\n getCurveFactory,\n} from '../../utilities/index';\nimport { ScaleLinear } from 'd3-scale';\nimport { toImage } from '../../utilities/image-export-utils';\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 (props, forwardedRef) => {\n let _hasMarkersMode: boolean = false;\n let _isXAxisDateType: boolean = false;\n let _points: LineChartDataWithIndex[] = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _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 _xMin: number = Number.NEGATIVE_INFINITY;\n let _yMin: number = Number.NEGATIVE_INFINITY;\n let _xMax: number = Number.POSITIVE_INFINITY;\n let _xPadding: number = 0;\n let _yPadding: number = 0;\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<[]>([]);\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\n const pointsRef = React.useRef<LineChartDataWithIndex[] | []>([]);\n const calloutPointsRef = React.useRef<any[]>([]);\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 (_hasMarkersMode && xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = _getDomainNRangeValuesWithPadding(points, margins, width, isRTL);\n } else if (_hasMarkersMode && xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = _getDomainNRangeValuesOfDateWithPadding(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\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 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(points: LineChartPoints[]): { startValue: number; endValue: number } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { startValue, endValue } = findNumericMinMaxOfY(points);\n _yMin = startValue;\n if (_hasMarkersMode) {\n _yPadding = (endValue - startValue) * 0.1;\n }\n return {\n startValue: startValue - _yPadding,\n endValue: endValue + _yPadding,\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 _getRangeForScatterMarkerSize(yScale: any, yPadding: number): number {\n const extraXPixels = _isRTL\n ? _xAxisScale(_xMax - _xPadding) - _xAxisScale(_xMax)\n : _xAxisScale(_xMin + _xPadding) - _xAxisScale(_xMin);\n\n const extraYPixels = yScale(_yMin) - yScale(_yMin + _yPadding);\n return Math.min(extraXPixels, extraYPixels);\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 extraMaxPixels = _hasMarkersMode ? _getRangeForScatterMarkerSize(_yScalePrimary, _yPadding) : 0;\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 yScale = _points[i].useSecondaryYScale && _yScaleSecondary ? _yScaleSecondary : _yScalePrimary;\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 circleId = `${_circleId}_${i}`;\n const isLegendSelected: boolean = _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 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={_xAxisScale(x1)}\n cy={yScale(y1)}\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 )\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 )\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(event, circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[0].onDataPointClick)}\n />\n {supportsTextMode && text && (\n <text\n key={`${circleId}-label`}\n x={_xAxisScale(x1)}\n y={\n yScale(y1) +\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 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\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 if (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 onMouseMove={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\n {..._getClickHandler(_points[i].onLineClick)}\n opacity={1}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n } else {\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 opacity={0.1}\n />,\n );\n }\n\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.bind(i, verticaLineHeight, event, yScale)}\n onMouseOver={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale)}\n onMouseOut={_handleMouseOut}\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 let path = _getPath(_xAxisScale(x1), yScale(y1), circleId, j, false, _points[i].index);\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 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={_xAxisScale(x1)}\n cy={yScale(y1)}\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 )\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 )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_getPointFill(lineColor, circleId, j, false)}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_points[i].data[j - 1].text ?? _getAriaLabel(i, j - 1)}\n />\n {supportsTextMode && text && (\n <text\n key={`${circleId}-label`}\n x={_xAxisScale(x1)}\n y={\n yScale(y1) +\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 )\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 )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j - 1].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.01}\n fill={_getPointFill(lineColor, circleId, j, false)}\n stroke={lineColor}\n strokeWidth={strokeWidth}\n role=\"img\"\n aria-label={_getAriaLabel(i, j - 1)}\n tabIndex={isLegendSelected ? 0 : undefined}\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 path = _getPath(_xAxisScale(x2), yScale(y2), lastCircleId, j, true, _points[i].index);\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 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={_xAxisScale(x2)}\n cy={yScale(y2)}\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 )\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 )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\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 {lastSupportsTextMode && lastText && (\n <text\n key={`${lastCircleId}-label`}\n x={_xAxisScale(x2)}\n y={\n yScale(y2) +\n Math.max(currentMarkerSize ? (currentMarkerSize * extraMaxPixels) / maxMarkerSize : 4, 4) +\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 )\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 )\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(\n event,\n lineId,\n x2,\n lastCirlceXCallout,\n lastCircleId,\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={_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={_xAxisScale(x2)}\n cy={yScale(y2)}\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 )\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 )\n }\n onFocus={event =>\n _handleFocus(event, circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onMouseOut={_handleMouseOut}\n strokeWidth={0}\n focusable={false}\n onBlur={_handleMouseOut}\n />\n </React.Fragment>,\n );\n }\n\n if (!_hasMarkersMode || _points[i].lineOptions?.mode?.includes('lines')) {\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 if (lineBorderWidth > 0) {\n bordersForLine.push(\n <line\n id={borderId}\n key={borderId}\n x1={_xAxisScale(x1)}\n y1={yScale(y1)}\n x2={_xAxisScale(x2)}\n y2={yScale(y2)}\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={_xAxisScale(x1)}\n y1={yScale(y1)}\n x2={_xAxisScale(x2)}\n y2={yScale(y2)}\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 )\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 )\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={_xAxisScale(x1)}\n y1={yScale(y1)}\n x2={_xAxisScale(x2)}\n y2={yScale(y2)}\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 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 ? formatDate(xPointToHighlight, props.useUTC) : xPointToHighlight;\n const modifiedXVal = xPointToHighlight instanceof Date ? xPointToHighlight.getTime() : xPointToHighlight;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = find(_calloutPoints, (element: { x: string | number }) => {\n return element.x === modifiedXVal;\n });\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 setNearestCircleToHighlight(pointToHighlight);\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\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\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (event.target as SVGCircleElement | SVGPathElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n updatePosition(cx, cy);\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x)}, 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 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 | Date,\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 ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const yVal = y instanceof Date ? y.getTime() : y;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n let hoverDp: CustomizedCalloutData | undefined = undefined;\n\n if (props.isCalloutForStack === false && found?.values) {\n const dp = find(found.values, (val: CustomizedCalloutDataPoint) => val?.y === yVal);\n if (dp) {\n hoverDp = {\n x: xVal,\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\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 updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setYValue(yVal);\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 = point.x instanceof Date ? formatDate(point.x, props.useUTC) : 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 _getDomainNRangeValuesOfDateWithPadding(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n isRTL: boolean,\n tickValues: Date[] = [],\n chartType: ChartTypes,\n barWidth?: number,\n ): IDomainNRange {\n _setXMinMaxValues(points);\n\n // Include tickValues if present\n const sDate =\n tickValues && tickValues.length > 0 ? (d3Min([...tickValues, new Date(_xMin)])! as Date) : new Date(_xMin);\n const lDate =\n tickValues && tickValues.length > 0 ? (d3Max([...tickValues, new Date(_xMax)])! as Date) : new Date(_xMax);\n\n // Calculate time-based padding (e.g. 10% of the date range)\n const dateRange = lDate.getTime() - sDate.getTime();\n const datePadding = _hasMarkersMode ? dateRange * 0.1 : 0;\n\n const paddedSDate = new Date(sDate.getTime() - datePadding);\n const paddedLDate = new Date(lDate.getTime() + datePadding);\n\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? {\n dStartValue: paddedLDate,\n dEndValue: paddedSDate,\n rStartValue,\n rEndValue,\n }\n : {\n dStartValue: paddedSDate,\n dEndValue: paddedLDate,\n rStartValue,\n rEndValue,\n };\n }\n\n function _getDomainNRangeValuesWithPadding(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n isRTL: boolean,\n ): IDomainNRange {\n _setXMinMaxValues(points);\n\n if (_hasMarkersMode) {\n _xPadding = (_xMax - _xMin) * 0.1;\n }\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? {\n dStartValue: _xMax + _xPadding,\n dEndValue: _xMin - _xPadding,\n rStartValue,\n rEndValue,\n }\n : {\n dStartValue: _xMin - _xPadding,\n dEndValue: _xMax + _xPadding,\n rStartValue,\n rEndValue,\n };\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 function _setXMinMaxValues(points: LineChartPoints[]) {\n const getX = (item: LineChartDataPoint) => (_isXAxisDateType ? (item.x as Date) : (item.x as number));\n\n const minVal = d3Min(points, (point: LineChartPoints) => d3Min(point.data as LineChartDataPoint[], getX));\n const maxVal = d3Max(points, (point: LineChartPoints) => d3Max(point.data as LineChartDataPoint[], getX));\n\n _xMin = _isXAxisDateType ? (minVal as Date).getTime() : (minVal as number);\n _xMax = _isXAxisDateType ? (maxVal as Date).getTime() : (maxVal as number);\n _xMin = _xMin === Number.NEGATIVE_INFINITY || !_xMin ? 0 : _xMin;\n _xMax = _xMax === Number.POSITIVE_INFINITY || !_xMax ? 0 : _xMax;\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 _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover: 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 clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack: props.isCalloutForStack,\n culture: props.culture ?? 'en-us',\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 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';\nLineChart.defaultProps = {\n isCalloutForStack: true,\n};\n"],"names":["React","useLineChartStyles","select","d3Select","pointer","bisector","Legends","line","d3Line","max","d3Max","min","d3Min","useId","find","CartesianChart","EventsAnnotation","tokens","calloutData","ChartTypes","getXAxisType","XAxisTypes","tooltipOfAxislabels","Points","pointTypes","getTypeOfAxis","getNextColor","getColorFromToken","findNumericMinMaxOfY","createNumericYAxis","domainRangeOfDateForAreaLineVerticalBarChart","domainRangeOfNumericForAreaChart","createStringYAxis","useRtl","formatDate","getCurveFactory","toImage","PointSize","bisect","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","LineChart","forwardRef","props","forwardedRef","_hasMarkersMode","_isXAxisDateType","_points","_injectIndexPropertyInLineChartData","data","lineChartData","_calloutPoints","_xAxisScale","_yScalePrimary","_circleId","_lineId","_borderId","_verticalLine","_colorFillBarPatternId","_uniqueCallOutID","_refArray","margins","eventLabelHeight","lines","_renderedColorFillBars","_colorFillBars","useRef","_tooltipId","_rectId","_staticHighlightCircle","_firstRenderOptimization","_emptyChartId","_colorFillBarId","_isRTL","xAxisCalloutAccessibilityData","cartesianChartRef","_xMin","Number","NEGATIVE_INFINITY","_yMin","_xMax","POSITIVE_INFINITY","_xPadding","_yPadding","_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","pointsRef","calloutPointsRef","classes","useEffect","current","height","width","useImperativeHandle","componentRef","chartContainer","opts","toSVG","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","_getDomainNRangeValuesWithPadding","DateAxis","_getDomainNRangeValuesOfDateWithPadding","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","startValue","endValue","_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","_getRangeForScatterMarkerSize","yScale","yPadding","extraXPixels","extraYPixels","extraMaxPixels","maxMarkerSize","markerSize","i","linesForLine","bordersForLine","pointsForLine","verticaLineHeight","bottom","useSecondaryYScale","x1","y1","xAxisCalloutData","circleId","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentMarkerSize","supportsTextMode","text","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","lineId","borderId","lineData","k","Date","getTime","lineBorderWidth","parseFloat","toString","path","strokeLinecap","lineBorderColor","_onMouseOverLargeDataset","bind","onLineClick","visibility","j","gapResult","_checkInGap","isInGap","x2","y2","currentPointHidden","hideNonActiveDots","lastCircleId","hiddenHoverCircleId","lastPointHidden","lastCirlceXCallout","lastCirlceXCalloutAccessibilityData","lastSupportsTextMode","lastText","focusable","strokeDasharray","strokeDashoffset","g","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","yMinMaxValues","FILL_Y_PADDING","colorFillBarId","_getStripePattern","startX","endX","rect","fillOpacity","abs","yMinValue","stripePath","pattern","patternUnits","currentGapIndex","endIndex","element","refElement","linenumber","lineHeight","mouseEvent","persist","xOffset","invert","d0","d1","axisType","xPointToHighlight","x0","point0","point1","formattedDate","useUTC","modifiedXVal","found","pointToHighlight","pointToHighlightUpdated","attr","clientX","clientY","values","targetRect","target","getBoundingClientRect","top","formattedData","xVal","obj","yVal","hoverDp","isCalloutForStack","dp","val","func","onClick","selectedLine","selectedLineIndex","reduce","acc","selectedLines","slice","concat","areAllLineLegendsSelected","_clearMultipleLegendSelections","selectedLegendTitlesToPass","selectedColorFillBar","selectedColorFillBarIndex","selectedColorFillBars","areAllColorFillBarLegendsSelected","lineIndex","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_setXMinMaxValues","sDate","lDate","dateRange","datePadding","paddedSDate","paddedLDate","right","_isChartEmpty","getX","minVal","maxVal","tickFormat","legendBars","hideLegend","calloutProps","XValue","descriptionMessage","getCalloutDescriptionMessage","culture","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","chartTitle","createYAxis","getmargins","getMinMaxOfYAxis","getGraphData","getDomainNRangeValues","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","scale","chartYTop","chartYBottom","div","style","displayName","defaultProps"],"mappings":"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"}