@fluentui/react-charts 9.1.1 → 9.1.3

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 (97) hide show
  1. package/CHANGELOG.md +38 -2
  2. package/dist/index.d.ts +89 -6
  3. package/lib/components/AreaChart/AreaChart.js +18 -8
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +17 -13
  6. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  8. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +4 -4
  9. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  10. package/lib/components/DeclarativeChart/DeclarativeChart.js +25 -13
  11. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  12. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +57 -36
  13. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  14. package/lib/components/DonutChart/useDonutChartStyles.styles.js +3 -3
  15. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  16. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +4 -4
  17. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  18. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +45 -19
  19. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  20. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  21. package/lib/components/HeatMapChart/HeatMapChart.js +1 -1
  22. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  23. package/lib/components/LineChart/LineChart.js +40 -36
  24. package/lib/components/LineChart/LineChart.js.map +1 -1
  25. package/lib/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  26. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  27. package/lib/components/ResponsiveContainer/ResponsiveContainer.js +51 -22
  28. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  29. package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  30. package/lib/components/ResponsiveContainer/index.js +2 -0
  31. package/lib/components/ResponsiveContainer/index.js.map +1 -1
  32. package/lib/components/ResponsiveContainer/withResponsiveContainer.js +19 -0
  33. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  34. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +3 -3
  35. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  36. package/lib/components/ScatterChart/ScatterChart.js +1 -1
  37. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  38. package/lib/components/VerticalBarChart/VerticalBarChart.js +5 -5
  39. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  40. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +62 -24
  41. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  42. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  43. package/lib/types/DataPoint.js.map +1 -1
  44. package/lib/utilities/SVGTooltipText.js +3 -3
  45. package/lib/utilities/SVGTooltipText.js.map +1 -1
  46. package/lib/utilities/utilities.js +27 -36
  47. package/lib/utilities/utilities.js.map +1 -1
  48. package/lib-commonjs/components/AreaChart/AreaChart.js +16 -7
  49. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  50. package/lib-commonjs/components/CommonComponents/CartesianChart.js +17 -13
  51. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  52. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  53. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +5 -5
  54. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  55. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +25 -13
  56. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  57. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +57 -36
  58. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  59. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +4 -4
  60. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  61. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +6 -4
  62. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  63. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +44 -18
  64. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  65. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  66. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -1
  67. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  68. package/lib-commonjs/components/LineChart/LineChart.js +40 -36
  69. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  70. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  71. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  72. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +47 -21
  73. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  74. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  75. package/lib-commonjs/components/ResponsiveContainer/index.js +2 -0
  76. package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -1
  77. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js +27 -0
  78. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  79. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +4 -4
  80. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  81. package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -1
  82. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  83. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +5 -5
  84. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  85. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +61 -23
  86. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  87. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  88. package/lib-commonjs/types/DataPoint.js.map +1 -1
  89. package/lib-commonjs/utilities/SVGTooltipText.js +3 -3
  90. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  91. package/lib-commonjs/utilities/utilities.js +27 -36
  92. package/lib-commonjs/utilities/utilities.js.map +1 -1
  93. package/package.json +10 -10
  94. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -23
  95. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
  96. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -47
  97. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["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 } from '../Legends/index';\nimport { line as d3Line } from 'd3-shape';\nimport { useId } 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} from '../../index';\nimport { EventsAnnotation } from './eventAnnotation/EventAnnotation';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n getXAxisType,\n XAxisTypes,\n tooltipOfXAxislabels,\n Points,\n pointTypes,\n getMinMaxOfYAxis,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n useRtl,\n formatDate,\n getCurveFactory,\n} from '../../utilities/index';\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 _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 _yAxisScale: 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: JSX.Element[];\n let _renderedColorFillBars: JSX.Element[];\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\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 }),\n [],\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 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 _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeLineChartData(\n xScale: NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _xAxisScale = xScale;\n _yAxisScale = yScale;\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[]): JSX.Element {\n const { legendProps, allowMultipleShapesForPoints = false } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: LineChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n action: () => {\n if (isLegendMultiSelectEnabled) {\n _handleMultipleLineLegendSelectionAction(point);\n } else {\n _handleSingleLegendSelectionAction(point);\n }\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n ...(allowMultipleShapesForPoints && {\n shape: Points[point.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 />\n );\n }\n\n function _getBoxWidthOfShape(pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false, strokeWidth = DEFAULT_LINE_STROKE_SIZE } = props;\n if (allowMultipleShapesForPoints) {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else if (pointIndex === 1 || isLastPoint) {\n return strokeWidth * PATH_MULTIPLY_SIZE;\n } else {\n return PointSize.invisibleSize;\n }\n } else {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else {\n return PointSize.invisibleSize;\n }\n }\n }\n\n function _getPath(\n xPos: number,\n yPos: number,\n pointId: string,\n pointIndex: number,\n isLastPoint: boolean,\n pointOftheLine: number,\n ): string {\n const { allowMultipleShapesForPoints = false } = props;\n let w = _getBoxWidthOfShape(pointId, pointIndex, isLastPoint);\n const index: number = allowMultipleShapesForPoints ? pointOftheLine % Object.keys(pointTypes).length : 0;\n const widthRatio = pointTypes[index].widthRatio;\n w = widthRatio > 1 ? w / widthRatio : w;\n\n return _getPointPath(xPos, yPos, w, index);\n }\n function _getPointFill(lineColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false } = props;\n if (allowMultipleShapesForPoints) {\n if (pointIndex === 1 || isLastPoint) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n }\n\n function _createLines(xElement: SVGElement, containerHeight: number): JSX.Element[] {\n const lines: JSX.Element[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n }\n for (let i = _points.length - 1; i >= 0; i--) {\n const linesForLine: JSX.Element[] = [];\n const bordersForLine: JSX.Element[] = [];\n const pointsForLine: JSX.Element[] = [];\n\n const legendVal: string = _points[i].legend;\n const lineColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\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 pointsForLine.push(\n <circle\n id={circleId}\n key={circleId}\n r={activePoint === circleId ? 5.5 : 3.5}\n cx={_xAxisScale(x1)}\n cy={_yAxisScale(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 )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\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={_getAriaLabel(i, 0)}\n data-is-focusable={isLegendSelected}\n ref={(e: SVGCircleElement | null) => {\n _refCallback(e!, circleId);\n }}\n onFocus={() => _handleFocus(circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[0].onDataPointClick)}\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) => _yAxisScale(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)}\n onMouseOver={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event)}\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)}\n onMouseOver={event => _onMouseOverLargeDataset.bind(i, verticaLineHeight, event)}\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), _yAxisScale(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 pointsForLine.push(\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 )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={() => _handleFocus(lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\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 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), _yAxisScale(y2), lastCircleId, j, true, _points[i].index);\n const {\n xAxisCalloutData: lastCirlceXCallout,\n xAxisCalloutAccessibilityData: lastCirlceXCalloutAccessibilityData,\n } = _points[i].data[j];\n pointsForLine.push(\n <React.Fragment key={`${lastCircleId}_container`}>\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 )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n )\n }\n onMouseOut={_handleMouseOut}\n onFocus={() =>\n _handleFocus(lineId, x2, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData)\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 {/* 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={_yAxisScale(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 )\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x2,\n y2,\n verticaLineHeight,\n lastCirlceXCallout,\n lastCircleId,\n lastCirlceXCalloutAccessibilityData,\n event,\n )\n }\n onMouseOut={_handleMouseOut}\n strokeWidth={0}\n focusable={false}\n onBlur={_handleMouseOut}\n />\n </React.Fragment>,\n );\n /* eslint-enable react/jsx-no-bind */\n }\n\n if (isLegendSelected) {\n // don't draw line if it is in a gap\n if (!isInGap) {\n const lineBorderWidth = _points[i].lineOptions?.lineBorderWidth\n ? Number.parseFloat(_points[i].lineOptions!.lineBorderWidth!.toString())\n : 0;\n if (lineBorderWidth > 0) {\n bordersForLine.push(\n <line\n id={borderId}\n key={borderId}\n x1={_xAxisScale(x1)}\n y1={_yAxisScale(y1)}\n x2={_xAxisScale(x2)}\n y2={_yAxisScale(y2)}\n strokeLinecap={_points[i].lineOptions?.strokeLinecap ?? 'round'}\n strokeWidth={Number.parseFloat(strokeWidth.toString()) + lineBorderWidth}\n {...(_points[i].lineOptions?.lineBorderColor && {\n stroke: _points[i].lineOptions?.lineBorderColor,\n })}\n className={classes.lineBorder}\n opacity={1}\n />,\n );\n }\n\n linesForLine.push(\n <line\n id={lineId}\n key={lineId}\n x1={_xAxisScale(x1)}\n y1={_yAxisScale(y1)}\n x2={_xAxisScale(x2)}\n y2={_yAxisScale(y2)}\n strokeWidth={strokeWidth}\n ref={(e: SVGLineElement | null) => {\n _refCallback(e!, lineId);\n }}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(\n x1,\n y1,\n verticaLineHeight,\n xAxisCalloutData,\n circleId,\n xAxisCalloutAccessibilityData,\n event,\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 )\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={_yAxisScale(y1)}\n x2={_xAxisScale(x2)}\n y2={_yAxisScale(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 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 xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return lines;\n }\n\n function _createColorFillBars(containerHeight: number) {\n const colorFillBars: JSX.Element[] = [];\n if (isSelectedLegend) {\n _colorFillBars.current = selectedColorBarLegend;\n } else {\n _colorFillBars.current = props.colorFillBars!;\n }\n\n const yMinMaxValues = getMinMaxOfYAxis(_points, ChartTypes.LineChart);\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={_yAxisScale(yMinMaxValues.endValue) - FILL_Y_PADDING}\n width={Math.abs(_xAxisScale(endX) - _xAxisScale(startX))}\n height={_yAxisScale(props.yMinValue || 0) - _yAxisScale(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 ) => {\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', `${_yAxisScale(pointToHighlight.y)}`)\n .attr('visibility', 'visibility');\n\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(pointToHighlight.x)}, ${_yAxisScale(pointToHighlight.y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - 5 - _yAxisScale(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 lineId: string,\n x: number | Date,\n\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\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 ) {\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)}, ${_yAxisScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - 5 - _yAxisScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n 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 _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 getmargins={_getMargins}\n getGraphData={_initializeLineChartData}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\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 _yAxisScale = props.yScale!;\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","useId","find","CartesianChart","EventsAnnotation","tokens","calloutData","ChartTypes","getXAxisType","XAxisTypes","tooltipOfXAxislabels","Points","pointTypes","getMinMaxOfYAxis","getTypeOfAxis","getNextColor","getColorFromToken","useRtl","formatDate","getCurveFactory","PointSize","bisect","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","LineChart","forwardRef","props","forwardedRef","_points","_injectIndexPropertyInLineChartData","data","lineChartData","_calloutPoints","_xAxisScale","_yAxisScale","_circleId","_lineId","_borderId","_verticalLine","_colorFillBarPatternId","_uniqueCallOutID","_refArray","margins","eventLabelHeight","lines","_renderedColorFillBars","_colorFillBars","useRef","_tooltipId","_rectId","_staticHighlightCircle","_firstRenderOptimization","_emptyChartId","_colorFillBarId","_isRTL","xAxisCalloutAccessibilityData","cartesianChartRef","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","isFilterSelectedLegends","allowMultipleShapesForPoints","filteredData","filter","item","includes","legend","map","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getMargins","_margins","_initializeLineChartData","xScale","yScale","containerHeight","containerWidth","xElement","colorFillBars","_createColorFillBars","_createLines","_handleSingleLegendSelectionAction","lineChartItem","_handleLegendClick","_onHoverCardHide","onLegendClick","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","title","action","_handleMultipleLineLegendSelectionAction","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","Object","keys","colorFillBarsLegendDataItems","colorFillBar","_handleMultipleColorFillBarLegendSelectionAction","opacity","_getColorFillBarOpacity","stripePattern","applyPattern","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","_getBoxWidthOfShape","pointId","pointIndex","isLastPoint","strokeWidth","_getPath","xPos","yPos","pointOftheLine","widthRatio","_getPointFill","lineColor","colorNeutralBackground1","i","linesForLine","bordersForLine","pointsForLine","legendVal","verticaLineHeight","bottom","x1","y1","xAxisCalloutData","circleId","isLegendSelected","_legendHighlighted","_noLegendHighlighted","push","circle","id","key","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","gapIndex","gaps","sort","a","b","startIndex","lineCurve","lineOptions","curve","optimizeLargeData","lineId","borderId","lineData","k","Date","getTime","lineBorderWidth","Number","parseFloat","toString","path","strokeLinecap","lineBorderColor","_onMouseOverLargeDataset","bind","onLineClick","visibility","j","gapResult","_checkInGap","isInGap","x2","y2","currentPointHidden","hideNonActiveDots","lastCircleId","hiddenHoverCircleId","lastPointHidden","lastCirlceXCallout","lastCirlceXCalloutAccessibilityData","Fragment","focusable","className","lineBorder","strokeDasharray","strokeDashoffset","g","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","xAxis","yMinMaxValues","FILL_Y_PADDING","colorFillBarId","_getStripePattern","startX","endX","rect","fillOpacity","endValue","abs","yMinValue","stripePath","pattern","patternUnits","currentGapIndex","endIndex","element","legendTitle","refElement","linenumber","lineHeight","mouseEvent","persist","xOffset","invert","d0","d1","axisType","xPointToHighlight","x0","point0","point1","DateAxis","NumericAxis","formattedDate","useUTC","modifiedXVal","found","pointToHighlight","pointToHighlightUpdated","attr","clientX","clientY","values","formattedData","xVal","forEach","obj","func","onClick","selectedLine","selectedLineIndex","reduce","acc","selectedLines","slice","concat","areAllLineLegendsSelected","_clearMultipleLegendSelections","selectedLegendTitlesToPass","selectedColorFillBar","selectedColorFillBarIndex","selectedColorFillBars","areAllColorFillBarLegendsSelected","lineIndex","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","tickValues","tickFormat","isXAxisDateType","points","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","chartTitle","chartType","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","scale","chartYTop","top","chartYBottom","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["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 } from '../Legends/index';\nimport { line as d3Line } from 'd3-shape';\nimport { useId } 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} from '../../index';\nimport { EventsAnnotation } from './eventAnnotation/EventAnnotation';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n getXAxisType,\n XAxisTypes,\n tooltipOfXAxislabels,\n Points,\n pointTypes,\n getMinMaxOfYAxis,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n useRtl,\n formatDate,\n getCurveFactory,\n} from '../../utilities/index';\nimport { ScaleLinear } from 'd3-scale';\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 _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: JSX.Element[];\n let _renderedColorFillBars: JSX.Element[];\n const _colorFillBars = React.useRef<ColorFillBarsProps[]>([]);\n let _tooltipId: string = useId('LineChartTooltipId_');\n let _rectId: string = useId('containerRectLD');\n let _staticHighlightCircle: string = useId('staticHighlightCircle');\n let _firstRenderOptimization = true;\n let _emptyChartId: string = useId('_LineChart_empty');\n const _colorFillBarId = useId('_colorFillBarId');\n const _isRTL: boolean = useRtl();\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n const cartesianChartRef = React.useRef<Chart>(null);\n let _yScaleSecondary: ScaleLinear<number, number> | undefined;\n\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 }),\n [],\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 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 _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[]): JSX.Element {\n const { legendProps, allowMultipleShapesForPoints = false } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: LineChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n action: () => {\n if (isLegendMultiSelectEnabled) {\n _handleMultipleLineLegendSelectionAction(point);\n } else {\n _handleSingleLegendSelectionAction(point);\n }\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n ...(allowMultipleShapesForPoints && {\n shape: Points[point.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 />\n );\n }\n\n function _getBoxWidthOfShape(pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false, strokeWidth = DEFAULT_LINE_STROKE_SIZE } = props;\n if (allowMultipleShapesForPoints) {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else if (pointIndex === 1 || isLastPoint) {\n return strokeWidth * PATH_MULTIPLY_SIZE;\n } else {\n return PointSize.invisibleSize;\n }\n } else {\n if (activePoint === pointId) {\n return PointSize.hoverSize;\n } else {\n return PointSize.invisibleSize;\n }\n }\n }\n\n function _getPath(\n xPos: number,\n yPos: number,\n pointId: string,\n pointIndex: number,\n isLastPoint: boolean,\n pointOftheLine: number,\n ): string {\n const { allowMultipleShapesForPoints = false } = props;\n let w = _getBoxWidthOfShape(pointId, pointIndex, isLastPoint);\n const index: number = allowMultipleShapesForPoints ? pointOftheLine % Object.keys(pointTypes).length : 0;\n const widthRatio = pointTypes[index].widthRatio;\n w = widthRatio > 1 ? w / widthRatio : w;\n\n return _getPointPath(xPos, yPos, w, index);\n }\n function _getPointFill(lineColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n const { allowMultipleShapesForPoints = false } = props;\n if (allowMultipleShapesForPoints) {\n if (pointIndex === 1 || isLastPoint) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n } else {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return lineColor;\n }\n }\n }\n\n function _createLines(xElement: SVGElement, containerHeight: number): JSX.Element[] {\n const lines: JSX.Element[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);\n }\n for (let i = _points.length - 1; i >= 0; i--) {\n const linesForLine: JSX.Element[] = [];\n const bordersForLine: JSX.Element[] = [];\n const pointsForLine: JSX.Element[] = [];\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 pointsForLine.push(\n <circle\n id={circleId}\n key={circleId}\n r={activePoint === circleId ? 5.5 : 3.5}\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={_getAriaLabel(i, 0)}\n data-is-focusable={isLegendSelected}\n ref={(e: SVGCircleElement | null) => {\n _refCallback(e!, circleId);\n }}\n onFocus={() => _handleFocus(circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[0].onDataPointClick)}\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 pointsForLine.push(\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={() => _handleFocus(lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\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 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 pointsForLine.push(\n <React.Fragment key={`${lastCircleId}_container`}>\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={() =>\n _handleFocus(lineId, x2, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData)\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 {/* 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 onMouseOut={_handleMouseOut}\n strokeWidth={0}\n focusable={false}\n onBlur={_handleMouseOut}\n />\n </React.Fragment>,\n );\n /* eslint-enable react/jsx-no-bind */\n }\n\n if (isLegendSelected) {\n // don't draw line if it is in a gap\n if (!isInGap) {\n const lineBorderWidth = _points[i].lineOptions?.lineBorderWidth\n ? Number.parseFloat(_points[i].lineOptions!.lineBorderWidth!.toString())\n : 0;\n 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 {...(_points[i].lineOptions?.lineBorderColor && {\n stroke: _points[i].lineOptions?.lineBorderColor,\n })}\n className={classes.lineBorder}\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: 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 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 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 xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return lines;\n }\n\n function _createColorFillBars(containerHeight: number) {\n const colorFillBars: JSX.Element[] = [];\n if (isSelectedLegend) {\n _colorFillBars.current = selectedColorBarLegend;\n } else {\n _colorFillBars.current = props.colorFillBars!;\n }\n\n const yMinMaxValues = getMinMaxOfYAxis(_points, ChartTypes.LineChart);\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 lineId: string,\n x: number | Date,\n\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\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 _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 getmargins={_getMargins}\n getGraphData={_initializeLineChartData}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\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","useId","find","CartesianChart","EventsAnnotation","tokens","calloutData","ChartTypes","getXAxisType","XAxisTypes","tooltipOfXAxislabels","Points","pointTypes","getMinMaxOfYAxis","getTypeOfAxis","getNextColor","getColorFromToken","useRtl","formatDate","getCurveFactory","PointSize","bisect","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","LineChart","forwardRef","props","forwardedRef","_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","_yScaleSecondary","eventAnnotationProps","labelHeight","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegend","setSelectedLegend","selectedLegendPoints","setSelectedLegendPoints","selectedColorBarLegend","setSelectedColorBarLegend","isSelectedLegend","setIsSelectedLegend","legendProps","selectedLegends","length","activePoint","setActivePoint","nearestCircleToHighlight","setNearestCircleToHighlight","dataPointCalloutProps","setDataPointCalloutProps","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","isPopoverOpen","setPopoverOpen","pointsRef","calloutPointsRef","classes","useEffect","current","height","width","useImperativeHandle","componentRef","chartContainer","isFilterSelectedLegends","allowMultipleShapesForPoints","filteredData","filter","item","includes","legend","map","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getMargins","_margins","_initializeLineChartData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","colorFillBars","_createColorFillBars","_createLines","_handleSingleLegendSelectionAction","lineChartItem","_handleLegendClick","_onHoverCardHide","onLegendClick","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","title","action","_handleMultipleLineLegendSelectionAction","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","Object","keys","colorFillBarsLegendDataItems","colorFillBar","_handleMultipleColorFillBarLegendSelectionAction","opacity","_getColorFillBarOpacity","stripePattern","applyPattern","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","_getBoxWidthOfShape","pointId","pointIndex","isLastPoint","strokeWidth","_getPath","xPos","yPos","pointOftheLine","widthRatio","_getPointFill","lineColor","colorNeutralBackground1","i","linesForLine","bordersForLine","pointsForLine","legendVal","verticaLineHeight","bottom","yScale","useSecondaryYScale","x1","y1","xAxisCalloutData","circleId","isLegendSelected","_legendHighlighted","_noLegendHighlighted","push","circle","id","key","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","gapIndex","gaps","sort","a","b","startIndex","lineCurve","lineOptions","curve","optimizeLargeData","lineId","borderId","lineData","k","Date","getTime","lineBorderWidth","Number","parseFloat","toString","path","strokeLinecap","lineBorderColor","_onMouseOverLargeDataset","bind","onLineClick","visibility","j","gapResult","_checkInGap","isInGap","x2","y2","currentPointHidden","hideNonActiveDots","lastCircleId","hiddenHoverCircleId","lastPointHidden","lastCirlceXCallout","lastCirlceXCalloutAccessibilityData","Fragment","focusable","className","lineBorder","strokeDasharray","strokeDashoffset","g","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","xAxis","yMinMaxValues","FILL_Y_PADDING","colorFillBarId","_getStripePattern","startX","endX","rect","fillOpacity","endValue","abs","yMinValue","stripePath","pattern","patternUnits","currentGapIndex","endIndex","element","legendTitle","refElement","linenumber","lineHeight","mouseEvent","persist","xOffset","invert","d0","d1","axisType","xPointToHighlight","x0","point0","point1","DateAxis","NumericAxis","formattedDate","useUTC","modifiedXVal","found","pointToHighlight","pointToHighlightUpdated","attr","clientX","clientY","values","formattedData","xVal","forEach","obj","func","onClick","selectedLine","selectedLineIndex","reduce","acc","selectedLines","slice","concat","areAllLineLegendsSelected","_clearMultipleLegendSelections","selectedLegendTitlesToPass","selectedColorFillBar","selectedColorFillBarIndex","selectedColorFillBars","areAllColorFillBarLegendsSelected","lineIndex","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","tickValues","tickFormat","isXAxisDateType","points","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","chartTitle","chartType","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","scale","chartYTop","top","chartYBottom","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -43,7 +43,8 @@ export const LabelLink = (props)=>{
43
43
  "data-is-focusable": false,
44
44
  style: {
45
45
  cursor: 'pointer'
46
- }
46
+ },
47
+ role: "button"
47
48
  }, /*#__PURE__*/ React.createElement(Textbox, {
48
49
  text: text,
49
50
  x: props.labelDef.x,
@@ -1 +1 @@
1
- {"version":3,"sources":["LabelLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport { EventAnnotation } from '../../../types/EventAnnotation';\nimport { Textbox } from './Textbox';\nimport { getColorFromToken } from '../../../utilities/colors';\nimport { tokens } from '@fluentui/react-theme';\n\nexport interface LineDef extends EventAnnotation {\n x: number;\n}\n\nexport interface LabelDef {\n x: number;\n aggregatedIdx: number[];\n anchor: 'start' | 'end';\n}\n\ninterface LabelLinkProps {\n lineDefs: LineDef[];\n labelDef: LabelDef;\n textY: number;\n textWidth: number;\n textLineHeight: number;\n textFontSize: string;\n textColor: string | undefined;\n mergedLabel: (count: number) => string;\n}\n\nexport const LabelLink: React.FunctionComponent<LabelLinkProps> = props => {\n const gRef = React.useRef<SVGGElement>(null);\n const [showCard, setShowCard] = React.useState(false);\n const onClick = () => setShowCard(true);\n\n let callout: React.ReactNode = null;\n if (showCard) {\n const cards = props.labelDef.aggregatedIdx.map(i => props.lineDefs[i].onRenderCard!).filter(c => !!c);\n if (cards.length > 0) {\n callout = null;\n // TODO - need to replace callout with popover\n /*callout = {\n /* <Callout\n target={gRef.current}\n // eslint-disable-next-line react/jsx-no-bind\n onDismiss={onDismiss}\n setInitialFocus={true}\n role=\"dialog\"\n >\n <FocusZone isCircularNavigation={true} direction={FocusZoneDirection.vertical}>\n <List<() => React.ReactNode>\n items={cards}\n // eslint-disable-next-line react/jsx-no-bind\n onRenderCell={onRenderCell}\n />\n </FocusZone>\n </Callout>\n };*/\n }\n }\n\n let text: string;\n const fill: string | undefined = props.textColor\n ? getColorFromToken(props.textColor, false)\n : tokens.colorNeutralForeground1;\n\n if (props.labelDef.aggregatedIdx.length === 1) {\n text = props.lineDefs[props.labelDef.aggregatedIdx[0]].event;\n } else {\n text = props.mergedLabel(props.labelDef.aggregatedIdx.length);\n }\n\n return (\n <>\n <g ref={gRef} onClick={onClick} data-is-focusable={false} style={{ cursor: 'pointer' }}>\n <Textbox\n text={text}\n x={props.labelDef.x}\n y={props.textY}\n width={props.textWidth}\n lineHeight={props.textLineHeight}\n textAnchor={props.labelDef.anchor}\n fontSize={props.textFontSize}\n fill={fill}\n />\n </g>\n {callout}\n </>\n );\n};\n"],"names":["React","Textbox","getColorFromToken","tokens","LabelLink","props","gRef","useRef","showCard","setShowCard","useState","onClick","callout","cards","labelDef","aggregatedIdx","map","i","lineDefs","onRenderCard","filter","c","length","text","fill","textColor","colorNeutralForeground1","event","mergedLabel","g","ref","data-is-focusable","style","cursor","x","y","textY","width","textWidth","lineHeight","textLineHeight","textAnchor","anchor","fontSize","textFontSize"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,MAAM,QAAQ,wBAAwB;AAuB/C,OAAO,MAAMC,YAAqDC,CAAAA;IAChE,MAAMC,OAAON,MAAMO,MAAM,CAAc;IACvC,MAAM,CAACC,UAAUC,YAAY,GAAGT,MAAMU,QAAQ,CAAC;IAC/C,MAAMC,UAAU,IAAMF,YAAY;IAElC,IAAIG,UAA2B;IAC/B,IAAIJ,UAAU;QACZ,MAAMK,QAAQR,MAAMS,QAAQ,CAACC,aAAa,CAACC,GAAG,CAACC,CAAAA,IAAKZ,MAAMa,QAAQ,CAACD,EAAE,CAACE,YAAY,EAAGC,MAAM,CAACC,CAAAA,IAAK,CAAC,CAACA;QACnG,IAAIR,MAAMS,MAAM,GAAG,GAAG;YACpBV,UAAU;QACV,8CAA8C;QAC9C;;;;;;;;;;;;;;;;QAgBE,GACJ;IACF;IAEA,IAAIW;IACJ,MAAMC,OAA2BnB,MAAMoB,SAAS,GAC5CvB,kBAAkBG,MAAMoB,SAAS,EAAE,SACnCtB,OAAOuB,uBAAuB;IAElC,IAAIrB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM,KAAK,GAAG;QAC7CC,OAAOlB,MAAMa,QAAQ,CAACb,MAAMS,QAAQ,CAACC,aAAa,CAAC,EAAE,CAAC,CAACY,KAAK;IAC9D,OAAO;QACLJ,OAAOlB,MAAMuB,WAAW,CAACvB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM;IAC9D;IAEA,qBACE,wDACE,oBAACO;QAAEC,KAAKxB;QAAMK,SAASA;QAASoB,qBAAmB;QAAOC,OAAO;YAAEC,QAAQ;QAAU;qBACnF,oBAAChC;QACCsB,MAAMA;QACNW,GAAG7B,MAAMS,QAAQ,CAACoB,CAAC;QACnBC,GAAG9B,MAAM+B,KAAK;QACdC,OAAOhC,MAAMiC,SAAS;QACtBC,YAAYlC,MAAMmC,cAAc;QAChCC,YAAYpC,MAAMS,QAAQ,CAAC4B,MAAM;QACjCC,UAAUtC,MAAMuC,YAAY;QAC5BpB,MAAMA;SAGTZ;AAGP,EAAE"}
1
+ {"version":3,"sources":["LabelLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport { EventAnnotation } from '../../../types/EventAnnotation';\nimport { Textbox } from './Textbox';\nimport { getColorFromToken } from '../../../utilities/colors';\nimport { tokens } from '@fluentui/react-theme';\n\nexport interface LineDef extends EventAnnotation {\n x: number;\n}\n\nexport interface LabelDef {\n x: number;\n aggregatedIdx: number[];\n anchor: 'start' | 'end';\n}\n\ninterface LabelLinkProps {\n lineDefs: LineDef[];\n labelDef: LabelDef;\n textY: number;\n textWidth: number;\n textLineHeight: number;\n textFontSize: string;\n textColor: string | undefined;\n mergedLabel: (count: number) => string;\n}\n\nexport const LabelLink: React.FunctionComponent<LabelLinkProps> = props => {\n const gRef = React.useRef<SVGGElement>(null);\n const [showCard, setShowCard] = React.useState(false);\n const onClick = () => setShowCard(true);\n\n let callout: React.ReactNode = null;\n if (showCard) {\n const cards = props.labelDef.aggregatedIdx.map(i => props.lineDefs[i].onRenderCard!).filter(c => !!c);\n if (cards.length > 0) {\n callout = null;\n // TODO - need to replace callout with popover\n /*callout = {\n /* <Callout\n target={gRef.current}\n // eslint-disable-next-line react/jsx-no-bind\n onDismiss={onDismiss}\n setInitialFocus={true}\n role=\"dialog\"\n >\n <FocusZone isCircularNavigation={true} direction={FocusZoneDirection.vertical}>\n <List<() => React.ReactNode>\n items={cards}\n // eslint-disable-next-line react/jsx-no-bind\n onRenderCell={onRenderCell}\n />\n </FocusZone>\n </Callout>\n };*/\n }\n }\n\n let text: string;\n const fill: string | undefined = props.textColor\n ? getColorFromToken(props.textColor, false)\n : tokens.colorNeutralForeground1;\n\n if (props.labelDef.aggregatedIdx.length === 1) {\n text = props.lineDefs[props.labelDef.aggregatedIdx[0]].event;\n } else {\n text = props.mergedLabel(props.labelDef.aggregatedIdx.length);\n }\n\n return (\n <>\n <g ref={gRef} onClick={onClick} data-is-focusable={false} style={{ cursor: 'pointer' }} role=\"button\">\n <Textbox\n text={text}\n x={props.labelDef.x}\n y={props.textY}\n width={props.textWidth}\n lineHeight={props.textLineHeight}\n textAnchor={props.labelDef.anchor}\n fontSize={props.textFontSize}\n fill={fill}\n />\n </g>\n {callout}\n </>\n );\n};\n"],"names":["React","Textbox","getColorFromToken","tokens","LabelLink","props","gRef","useRef","showCard","setShowCard","useState","onClick","callout","cards","labelDef","aggregatedIdx","map","i","lineDefs","onRenderCard","filter","c","length","text","fill","textColor","colorNeutralForeground1","event","mergedLabel","g","ref","data-is-focusable","style","cursor","role","x","y","textY","width","textWidth","lineHeight","textLineHeight","textAnchor","anchor","fontSize","textFontSize"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,MAAM,QAAQ,wBAAwB;AAuB/C,OAAO,MAAMC,YAAqDC,CAAAA;IAChE,MAAMC,OAAON,MAAMO,MAAM,CAAc;IACvC,MAAM,CAACC,UAAUC,YAAY,GAAGT,MAAMU,QAAQ,CAAC;IAC/C,MAAMC,UAAU,IAAMF,YAAY;IAElC,IAAIG,UAA2B;IAC/B,IAAIJ,UAAU;QACZ,MAAMK,QAAQR,MAAMS,QAAQ,CAACC,aAAa,CAACC,GAAG,CAACC,CAAAA,IAAKZ,MAAMa,QAAQ,CAACD,EAAE,CAACE,YAAY,EAAGC,MAAM,CAACC,CAAAA,IAAK,CAAC,CAACA;QACnG,IAAIR,MAAMS,MAAM,GAAG,GAAG;YACpBV,UAAU;QACV,8CAA8C;QAC9C;;;;;;;;;;;;;;;;QAgBE,GACJ;IACF;IAEA,IAAIW;IACJ,MAAMC,OAA2BnB,MAAMoB,SAAS,GAC5CvB,kBAAkBG,MAAMoB,SAAS,EAAE,SACnCtB,OAAOuB,uBAAuB;IAElC,IAAIrB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM,KAAK,GAAG;QAC7CC,OAAOlB,MAAMa,QAAQ,CAACb,MAAMS,QAAQ,CAACC,aAAa,CAAC,EAAE,CAAC,CAACY,KAAK;IAC9D,OAAO;QACLJ,OAAOlB,MAAMuB,WAAW,CAACvB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM;IAC9D;IAEA,qBACE,wDACE,oBAACO;QAAEC,KAAKxB;QAAMK,SAASA;QAASoB,qBAAmB;QAAOC,OAAO;YAAEC,QAAQ;QAAU;QAAGC,MAAK;qBAC3F,oBAACjC;QACCsB,MAAMA;QACNY,GAAG9B,MAAMS,QAAQ,CAACqB,CAAC;QACnBC,GAAG/B,MAAMgC,KAAK;QACdC,OAAOjC,MAAMkC,SAAS;QACtBC,YAAYnC,MAAMoC,cAAc;QAChCC,YAAYrC,MAAMS,QAAQ,CAAC6B,MAAM;QACjCC,UAAUvC,MAAMwC,YAAY;QAC5BrB,MAAMA;SAGTZ;AAGP,EAAE"}
@@ -1,17 +1,16 @@
1
1
  import * as React from 'react';
2
- import { useFluent_unstable } from '@fluentui/react-shared-contexts';
3
- import { useResponsiveContainerStyles } from './useResponsiveContainerStyles.styles';
4
- export const ResponsiveContainer = (props)=>{
2
+ import { getWindow } from '../../utilities/getWindow';
3
+ /**
4
+ * Responsive Container component
5
+ * {@docCategory ResponsiveContainer}
6
+ */ export const ResponsiveContainer = (props)=>{
5
7
  const containerRef = React.useRef(null);
6
8
  const onResizeRef = React.useRef();
7
- const { targetDocument } = useFluent_unstable();
8
- const classes = useResponsiveContainerStyles(props);
9
9
  const [size, setSize] = React.useState({});
10
10
  onResizeRef.current = props.onResize;
11
- const _window = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
12
11
  React.useEffect(()=>{
12
+ const _window = getWindow(containerRef.current);
13
13
  let animationFrameId;
14
- // eslint-disable-next-line no-restricted-globals
15
14
  let resizeObserver;
16
15
  const resizeCallback = (entries)=>{
17
16
  var _onResizeRef_current;
@@ -33,7 +32,7 @@ export const ResponsiveContainer = (props)=>{
33
32
  });
34
33
  (_onResizeRef_current = onResizeRef.current) === null || _onResizeRef_current === void 0 ? void 0 : _onResizeRef_current.call(onResizeRef, containerWidth, containerHeight);
35
34
  };
36
- if (_window === null || _window === void 0 ? void 0 : _window.ResizeObserver) {
35
+ if (_window && _window.ResizeObserver) {
37
36
  resizeObserver = new _window.ResizeObserver(resizeCallback);
38
37
  if (containerRef.current) {
39
38
  resizeObserver.observe(containerRef.current);
@@ -45,21 +44,51 @@ export const ResponsiveContainer = (props)=>{
45
44
  }
46
45
  resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
47
46
  };
47
+ }, []);
48
+ const chartContent = React.useMemo(()=>{
49
+ let calculatedWidth = size.containerWidth;
50
+ let calculatedHeight = size.containerHeight;
51
+ if (typeof props.aspect === 'number' && props.aspect > 0) {
52
+ if (calculatedWidth) {
53
+ calculatedHeight = calculatedWidth / props.aspect;
54
+ } else if (calculatedHeight) {
55
+ calculatedWidth = calculatedHeight * props.aspect;
56
+ }
57
+ if (typeof props.maxHeight === 'number' && calculatedHeight && calculatedHeight > props.maxHeight) {
58
+ calculatedHeight = props.maxHeight;
59
+ }
60
+ }
61
+ var _props_width, _props_height;
62
+ return /*#__PURE__*/ React.createElement("div", {
63
+ ref: containerRef,
64
+ style: {
65
+ width: (_props_width = props.width) !== null && _props_width !== void 0 ? _props_width : '100%',
66
+ height: (_props_height = props.height) !== null && _props_height !== void 0 ? _props_height : '100%',
67
+ minWidth: props.minWidth,
68
+ minHeight: props.minHeight,
69
+ maxHeight: props.maxHeight,
70
+ // Ensure the child element fills the parent container
71
+ // https://stackoverflow.com/questions/8468066/child-inside-parent-with-min-height-100-not-inheriting-height
72
+ '--root-width': calculatedWidth + 'px',
73
+ '--root-height': calculatedHeight + 'px'
74
+ }
75
+ }, React.Children.map(props.children, (child)=>{
76
+ return /*#__PURE__*/ React.cloneElement(child, {
77
+ width: calculatedWidth,
78
+ height: calculatedHeight,
79
+ shouldResize: (calculatedWidth !== null && calculatedWidth !== void 0 ? calculatedWidth : 0) + (calculatedHeight !== null && calculatedHeight !== void 0 ? calculatedHeight : 0)
80
+ });
81
+ }));
48
82
  }, [
49
- _window
83
+ size,
84
+ props.aspect,
85
+ props.maxHeight,
86
+ props.children,
87
+ props.width,
88
+ props.height,
89
+ props.minHeight,
90
+ props.minWidth
50
91
  ]);
51
- return /*#__PURE__*/ React.createElement("div", {
52
- ref: containerRef,
53
- className: classes.root,
54
- style: {
55
- width: props.width,
56
- height: props.height
57
- }
58
- }, React.Children.map(props.children, (child)=>{
59
- return /*#__PURE__*/ React.cloneElement(child, {
60
- width: size.containerWidth,
61
- height: size.containerHeight
62
- });
63
- }));
92
+ return chartContent;
64
93
  };
65
94
  ResponsiveContainer.displayName = 'ResponsiveContainer';