@fluentui/react-charts 9.0.7 → 9.1.0

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 (61) hide show
  1. package/CHANGELOG.md +21 -2
  2. package/dist/index.d.ts +12 -0
  3. package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -1
  4. package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +6 -3
  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 +16 -4
  9. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  10. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -1
  11. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  12. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +2 -1
  13. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
  14. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +2 -1
  15. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  16. package/lib/components/LineChart/LineChart.js +10 -7
  17. package/lib/components/LineChart/LineChart.js.map +1 -1
  18. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  19. package/lib/components/LineChart/useLineChartStyles.styles.js +14 -3
  20. package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  21. package/lib/components/ScatterChart/useScatterChartStyles.styles.js +2 -1
  22. package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  23. package/lib/components/VerticalBarChart/VerticalBarChart.js +1 -1
  24. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  25. package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
  26. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +14 -3
  27. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  28. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -1
  29. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  30. package/lib/utilities/SVGTooltipText.js +2 -4
  31. package/lib/utilities/SVGTooltipText.js.map +1 -1
  32. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +2 -1
  33. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  34. package/lib-commonjs/components/CommonComponents/CartesianChart.js +6 -3
  35. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  36. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  37. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +25 -3
  38. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  39. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -1
  40. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  41. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +2 -1
  42. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
  43. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +2 -1
  44. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  45. package/lib-commonjs/components/LineChart/LineChart.js +10 -7
  46. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  47. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  48. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +19 -3
  49. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  50. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +2 -1
  51. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  52. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -1
  53. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  54. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
  55. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +19 -3
  56. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  57. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -1
  58. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  59. package/lib-commonjs/utilities/SVGTooltipText.js +2 -4
  60. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  61. package/package.json +9 -9
@@ -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 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 stroke={_points[i].lineOptions?.lineBorderColor || tokens.colorNeutralBackground1}\n opacity={1}\n />,\n );\n }\n\n linesForLine.push(\n <line\n id={lineId}\n key={lineId}\n x1={_xAxisScale(x1)}\n y1={_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 const classes = useLineChartStyles(props);\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":["LineChart","PointSize","bisect","bisector","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","React","forwardRef","props","forwardedRef","_points","_injectIndexPropertyInLineChartData","data","lineChartData","_calloutPoints","calloutData","_xAxisScale","_yAxisScale","_circleId","useId","_lineId","_borderId","_verticalLine","_colorFillBarPatternId","_uniqueCallOutID","_refArray","margins","eventLabelHeight","lines","_renderedColorFillBars","_colorFillBars","useRef","_tooltipId","_rectId","_staticHighlightCircle","_firstRenderOptimization","_emptyChartId","_colorFillBarId","_isRTL","useRtl","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","useEffect","current","height","width","useImperativeHandle","componentRef","chartContainer","isFilterSelectedLegends","allowMultipleShapesForPoints","filteredData","filter","item","includes","legend","map","color","getNextColor","getColorFromToken","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","Points","Object","keys","pointTypes","colorFillBarsLegendDataItems","colorFillBar","_handleMultipleColorFillBarLegendSelectionAction","opacity","_getColorFillBarOpacity","stripePattern","applyPattern","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","_getBoxWidthOfShape","pointId","pointIndex","isLastPoint","strokeWidth","_getPath","xPos","yPos","pointOftheLine","widthRatio","_getPointFill","lineColor","tokens","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","line","d3Line","getCurveFactory","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","strokeDasharray","strokeDashoffset","g","classes","useLineChartStyles","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","xAxis","tooltipOfXAxislabels","yMinMaxValues","getMinMaxOfYAxis","ChartTypes","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","pointer","d0","d1","axisType","xPointToHighlight","getTypeOfAxis","x0","point0","point1","XAxisTypes","DateAxis","NumericAxis","formattedDate","formatDate","useUTC","modifiedXVal","found","find","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","getXAxisType","points","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","CartesianChart","chartTitle","chartType","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","EventsAnnotation","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';\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":["LineChart","PointSize","bisect","bisector","d","x","left","DEFAULT_LINE_STROKE_SIZE","PATH_MULTIPLY_SIZE","_getPointPath","y","w","index","allPointPaths","React","forwardRef","props","forwardedRef","_points","_injectIndexPropertyInLineChartData","data","lineChartData","_calloutPoints","calloutData","_xAxisScale","_yAxisScale","_circleId","useId","_lineId","_borderId","_verticalLine","_colorFillBarPatternId","_uniqueCallOutID","_refArray","margins","eventLabelHeight","lines","_renderedColorFillBars","_colorFillBars","useRef","_tooltipId","_rectId","_staticHighlightCircle","_firstRenderOptimization","_emptyChartId","_colorFillBarId","_isRTL","useRtl","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","useLineChartStyles","useEffect","current","height","width","useImperativeHandle","componentRef","chartContainer","isFilterSelectedLegends","allowMultipleShapesForPoints","filteredData","filter","item","includes","legend","map","color","getNextColor","getColorFromToken","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","Points","Object","keys","pointTypes","colorFillBarsLegendDataItems","colorFillBar","_handleMultipleColorFillBarLegendSelectionAction","opacity","_getColorFillBarOpacity","stripePattern","applyPattern","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","_getBoxWidthOfShape","pointId","pointIndex","isLastPoint","strokeWidth","_getPath","xPos","yPos","pointOftheLine","widthRatio","_getPointFill","lineColor","tokens","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","line","d3Line","getCurveFactory","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","d3Select","call","tooltipProps","tooltipCls","tooltip","xAxis","tooltipOfXAxislabels","yMinMaxValues","getMinMaxOfYAxis","ChartTypes","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","pointer","d0","d1","axisType","xPointToHighlight","getTypeOfAxis","x0","point0","point1","XAxisTypes","DateAxis","NumericAxis","formattedDate","formatDate","useUTC","modifiedXVal","found","find","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","getXAxisType","points","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","CartesianChart","chartTitle","chartType","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","enablePerfOptimization","children","EventsAnnotation","scale","chartYTop","top","chartYBottom","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["LineChart.types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { RenderFunction } from '../../utilities/index';\nimport {\n ChartProps,\n LineChartPoints,\n Margins,\n Basestate,\n RefArrayData,\n CustomizedCalloutData,\n} from '../../types/index';\nimport { EventAnnotation } from '../../types/EventAnnotation';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n ChildProps,\n} from '../CommonComponents/index';\n\nexport type { ChildProps, LineChartPoints, Margins, Basestate, RefArrayData };\n\n/**\n * Line Chart properties\n * {@docCategory LineChart}\n */\nexport interface LineChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: ChartProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: LineChartStyles;\n\n /**\n * Show event annotation\n */\n eventAnnotationProps?: EventsAnnotationProps;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Callback for getting callout description message\n */\n getCalloutDescriptionMessage?: (calloutDataProps: CustomizedCalloutData) => string | undefined;\n\n /*\n * Color fill bars for the chart,\n */\n colorFillBars?: ColorFillBarsProps[];\n\n /**\n * if this is set to true, then for each line there will be a unique shape assigned to the point,\n * there are total 8 shapes which are as follow circle, square, triangele, diamond, pyramid,\n * hexagon, pentagon and octagon, which will get assigned as respectively, if there are more\n * than 8 lines in the line chart then it will again start from cicle to octagon.\n * setting this flag to true will also change the behavior of the points, like for a\n * line, last point shape and first point shape will be visible all the times, and all\n * other points will get enlarge only when hovered over them\n * if set to false default shape will be circle, with the existing behavior\n * @default false\n */\n allowMultipleShapesForPoints?: boolean;\n\n /*\n * Optimize line chart rendering for large data set. If this prop is enabled, line chart\n * can easily render over 10K datapoints with multiple lines smoothly.\n * This rendering mechanism does not support gaps in lines.\n */\n optimizeLargeData?: boolean;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * @default false\n * The prop used to enable the perf optimization\n */\n enablePerfOptimization?: boolean;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface EventsAnnotationProps {\n events: EventAnnotation[];\n strokeColor?: string;\n labelColor?: string;\n labelHeight?: number;\n labelWidth?: number;\n mergedLabel: (count: number) => string;\n}\n\n/**\n * Line Chart styles\n * {@docCategory LineChart}\n */\nexport interface LineChartStyles extends CartesianChartStyles {}\n\n/**\n * Line Chart style properties\n * {@docCategory LineChart}\n */\nexport interface LineChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarsProps {\n legend: string;\n color: string;\n data: ColorFillBarData[];\n applyPattern?: boolean;\n onLegendClick?: (selectedLegend: string | string[] | null) => void | undefined;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarData {\n startX: number | Date;\n endX: number | Date;\n}\n"],"names":[],"rangeMappings":";;","mappings":"AAAA,uDAAuD,GA+HvD;;CAEC"}
1
+ {"version":3,"sources":["LineChart.types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { RenderFunction } from '../../utilities/index';\nimport {\n ChartProps,\n LineChartPoints,\n Margins,\n Basestate,\n RefArrayData,\n CustomizedCalloutData,\n} from '../../types/index';\nimport { EventAnnotation } from '../../types/EventAnnotation';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n ChildProps,\n} from '../CommonComponents/index';\n\nexport type { ChildProps, LineChartPoints, Margins, Basestate, RefArrayData };\n\n/**\n * Line Chart properties\n * {@docCategory LineChart}\n */\nexport interface LineChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: ChartProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: LineChartStyles;\n\n /**\n * Show event annotation\n */\n eventAnnotationProps?: EventsAnnotationProps;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Callback for getting callout description message\n */\n getCalloutDescriptionMessage?: (calloutDataProps: CustomizedCalloutData) => string | undefined;\n\n /*\n * Color fill bars for the chart,\n */\n colorFillBars?: ColorFillBarsProps[];\n\n /**\n * if this is set to true, then for each line there will be a unique shape assigned to the point,\n * there are total 8 shapes which are as follow circle, square, triangele, diamond, pyramid,\n * hexagon, pentagon and octagon, which will get assigned as respectively, if there are more\n * than 8 lines in the line chart then it will again start from cicle to octagon.\n * setting this flag to true will also change the behavior of the points, like for a\n * line, last point shape and first point shape will be visible all the times, and all\n * other points will get enlarge only when hovered over them\n * if set to false default shape will be circle, with the existing behavior\n * @default false\n */\n allowMultipleShapesForPoints?: boolean;\n\n /*\n * Optimize line chart rendering for large data set. If this prop is enabled, line chart\n * can easily render over 10K datapoints with multiple lines smoothly.\n * This rendering mechanism does not support gaps in lines.\n */\n optimizeLargeData?: boolean;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * @default false\n * The prop used to enable the perf optimization\n */\n enablePerfOptimization?: boolean;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface EventsAnnotationProps {\n events: EventAnnotation[];\n strokeColor?: string;\n labelColor?: string;\n labelHeight?: number;\n labelWidth?: number;\n mergedLabel: (count: number) => string;\n}\n\n/**\n * Line Chart styles\n * {@docCategory LineChart}\n */\nexport interface LineChartStyles extends CartesianChartStyles {\n /**\n * styles for line border\n */\n lineBorder?: string;\n}\n\n/**\n * Line Chart style properties\n * {@docCategory LineChart}\n */\nexport interface LineChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarsProps {\n legend: string;\n color: string;\n data: ColorFillBarData[];\n applyPattern?: boolean;\n onLegendClick?: (selectedLegend: string | string[] | null) => void | undefined;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarData {\n startX: number | Date;\n endX: number | Date;\n}\n"],"names":[],"rangeMappings":";;","mappings":"AAAA,uDAAuD,GAoIvD;;CAEC"}
@@ -19,6 +19,7 @@ _export(exports, {
19
19
  const _react = require("@griffel/react");
20
20
  const linechartClassNames = {
21
21
  tooltip: 'fui-line__tooltip',
22
+ lineBorder: 'fui-line_lineBorder',
22
23
  root: 'fui-line__root',
23
24
  xAxis: 'fui-line__xAxis',
24
25
  yAxis: 'fui-line__yAxis',
@@ -29,7 +30,8 @@ const linechartClassNames = {
29
30
  chartTitle: 'fui-line__chartTitle',
30
31
  opacityChangeOnHover: 'fui-line__opacityChangeOnHover',
31
32
  shapeStyles: 'fui-line__shapeStyles',
32
- chartWrapper: 'fui-line__chartWrapper'
33
+ chartWrapper: 'fui-line__chartWrapper',
34
+ svgTooltip: ''
33
35
  };
34
36
  /**
35
37
  * Base Styles
@@ -57,6 +59,10 @@ const linechartClassNames = {
57
59
  B7oj6ja: 0,
58
60
  Dimara: "fq9zq91",
59
61
  Bkecrkj: "f1aehjj5"
62
+ },
63
+ lineBorder: {
64
+ ojy3ng: "f1yuyku4",
65
+ Bpvj6i6: "fdvt8h6"
60
66
  }
61
67
  }, {
62
68
  d: [
@@ -76,12 +82,22 @@ const linechartClassNames = {
76
82
  p: -1
77
83
  }
78
84
  ],
79
- ".f1aehjj5{pointer-events:none;}"
85
+ ".f1aehjj5{pointer-events:none;}",
86
+ ".f1yuyku4{stroke:var(--colorNeutralBackground1);}"
87
+ ],
88
+ m: [
89
+ [
90
+ "@media screen and (-ms-high-contrast: active),screen and (forced-colors: active){.fdvt8h6{stroke:Canvas;}}",
91
+ {
92
+ m: "screen and (-ms-high-contrast: active), screen and (forced-colors: active)"
93
+ }
94
+ ]
80
95
  ]
81
96
  });
82
97
  const useLineChartStyles = (props)=>{
83
98
  const baseStyles = useStyles();
84
99
  return {
85
- tooltip: (0, _react.mergeClasses)(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ )
100
+ tooltip: (0, _react.mergeClasses)(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ ),
101
+ lineBorder: (0, _react.mergeClasses)(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ )
86
102
  };
87
103
  }; //# sourceMappingURL=useLineChartStyles.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useLineChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const linechartClassNames = {\n tooltip: 'fui-line__tooltip',\n root: 'fui-line__root',\n xAxis: 'fui-line__xAxis',\n yAxis: 'fui-line__yAxis',\n legendContainer: 'fui-line__legendContainer',\n hover: 'fui-line__hover',\n descriptionMessage: 'fui-line__descriptionMessage',\n axisTitle: 'fui-line__axisTitle',\n chartTitle: 'fui-line__chartTitle',\n opacityChangeOnHover: 'fui-line__opacityChangeOnHover',\n shapeStyles: 'fui-line__shapeStyles',\n chartWrapper: 'fui-line__chartWrapper'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n fill: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none'\n }\n});\n/**\n * Apply styling to the Carousel slots based on the state\n */ export const useLineChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ )\n };\n};\n"],"names":["linechartClassNames","useLineChartStyles","tooltip","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","useStyles","__styles","mc9l5x","Beiy3e4","z8tnut","z189sj","Byoj8tv","uwmqm3","qhf8xq","fsow6f","Bhzewxz","Bkfmm31","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","d","p","props","baseStyles","mergeClasses"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAIiBA,mBAAmB;eAAnBA;;IA+BAC,kBAAkB;eAAlBA;;;uBAnCoC;AAI1C,MAAMD,sBAAsB;IACnCE,SAAS;IACTC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,iBAAiB;IACjBC,OAAO;IACPC,oBAAoB;IACpBC,WAAW;IACXC,YAAY;IACZC,sBAAsB;IACtBC,aAAa;IACbC,cAAc;AAClB;AACA;;CAEA,GAAI,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAAb,SAAA;QAAAc,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,SAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;IAAA;AAAA,GAAA;IAAAC,GAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,GAAA,CAAA;YAAA;SAAA;QAAA;KAAA;AAAA;AAeX,MAAMhC,qBAAsBiC,CAAAA;IACnC,MAAMC,aAAarB;IACnB,OAAO;QACHZ,SAASkC,IAAAA,mBAAY,EAACpC,oBAAoBE,OAAO,EAAEiC,WAAWjC,OAAO,CAAC,uBAAA;IAC1E;AACJ"}
1
+ {"version":3,"sources":["useLineChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { HighContrastSelector } from '../../utilities/index';\n/**\n * @internal\n */ export const linechartClassNames = {\n tooltip: 'fui-line__tooltip',\n lineBorder: 'fui-line_lineBorder',\n root: 'fui-line__root',\n xAxis: 'fui-line__xAxis',\n yAxis: 'fui-line__yAxis',\n legendContainer: 'fui-line__legendContainer',\n hover: 'fui-line__hover',\n descriptionMessage: 'fui-line__descriptionMessage',\n axisTitle: 'fui-line__axisTitle',\n chartTitle: 'fui-line__chartTitle',\n opacityChangeOnHover: 'fui-line__opacityChangeOnHover',\n shapeStyles: 'fui-line__shapeStyles',\n chartWrapper: 'fui-line__chartWrapper',\n svgTooltip: ''\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n fill: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none'\n },\n lineBorder: {\n stroke: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n stroke: 'Canvas'\n }\n }\n});\n/**\n * Apply styling to the Carousel slots based on the state\n */ export const useLineChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ ),\n lineBorder: mergeClasses(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ )\n };\n};\n"],"names":["linechartClassNames","useLineChartStyles","tooltip","lineBorder","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","useStyles","__styles","mc9l5x","Beiy3e4","z8tnut","z189sj","Byoj8tv","uwmqm3","qhf8xq","fsow6f","Bhzewxz","Bkfmm31","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","ojy3ng","Bpvj6i6","d","p","m","props","baseStyles","mergeClasses"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAKiBA,mBAAmB;eAAnBA;;IAuCAC,kBAAkB;eAAlBA;;;uBA5CoC;AAK1C,MAAMD,sBAAsB;IACnCE,SAAS;IACTC,YAAY;IACZC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,iBAAiB;IACjBC,OAAO;IACPC,oBAAoB;IACpBC,WAAW;IACXC,YAAY;IACZC,sBAAsB;IACtBC,aAAa;IACbC,cAAc;IACdC,YAAY;AAChB;AACA;;CAEA,GAAI,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAAf,SAAA;QAAAgB,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,SAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;IAAA;IAAA9B,YAAA;QAAA+B,QAAA;QAAAC,SAAA;IAAA;AAAA,GAAA;IAAAC,GAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;KAAA;IAAAC,GAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA;YAAA;SAAA;KAAA;AAAA;AAqBX,MAAMrC,qBAAsBsC,CAAAA;IACnC,MAAMC,aAAaxB;IACnB,OAAO;QACHd,SAASuC,IAAAA,mBAAY,EAACzC,oBAAoBE,OAAO,EAAEsC,WAAWtC,OAAO,CAAC,uBAAA;QACtEC,YAAYsC,IAAAA,mBAAY,EAACzC,oBAAoBG,UAAU,EAAEqC,WAAWrC,UAAU,CAAC,0BAAA;IACnF;AACJ"}
@@ -29,7 +29,8 @@ const scatterChartClassNames = {
29
29
  chartTitle: 'fui-line__chartTitle',
30
30
  opacityChangeOnHover: 'fui-line__opacityChangeOnHover',
31
31
  shapeStyles: 'fui-line__shapeStyles',
32
- chartWrapper: 'fui-line__chartWrapper'
32
+ chartWrapper: 'fui-line__chartWrapper',
33
+ svgTooltip: ''
33
34
  };
34
35
  /**
35
36
  * Base Styles