@fluentui/react-charts 9.1.2 → 9.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +16 -2
  2. package/dist/index.d.ts +23 -1
  3. package/lib/components/AreaChart/AreaChart.js +18 -8
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +17 -13
  6. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  8. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +50 -35
  9. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  10. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +44 -18
  11. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  12. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  13. package/lib/components/HeatMapChart/HeatMapChart.js +1 -1
  14. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  15. package/lib/components/LineChart/LineChart.js +40 -36
  16. package/lib/components/LineChart/LineChart.js.map +1 -1
  17. package/lib/components/ScatterChart/ScatterChart.js +1 -1
  18. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  19. package/lib/components/VerticalBarChart/VerticalBarChart.js +4 -4
  20. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  21. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +61 -23
  22. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  23. package/lib/types/DataPoint.js.map +1 -1
  24. package/lib/utilities/utilities.js +25 -34
  25. package/lib/utilities/utilities.js.map +1 -1
  26. package/lib-commonjs/components/AreaChart/AreaChart.js +16 -7
  27. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  28. package/lib-commonjs/components/CommonComponents/CartesianChart.js +17 -13
  29. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  30. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  31. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +50 -35
  32. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  33. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +43 -17
  34. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  35. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  36. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -1
  37. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  38. package/lib-commonjs/components/LineChart/LineChart.js +40 -36
  39. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  40. package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -1
  41. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  42. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +4 -4
  43. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  44. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +60 -22
  45. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  46. package/lib-commonjs/types/DataPoint.js.map +1 -1
  47. package/lib-commonjs/utilities/utilities.js +25 -34
  48. package/lib-commonjs/utilities/utilities.js.map +1 -1
  49. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,12 +1,26 @@
1
1
  # Change Log - @fluentui/react-charts
2
2
 
3
- This log was last generated on Wed, 18 Jun 2025 17:29:27 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 23 Jun 2025 15:47:17 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.1.3](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.1.3)
8
+
9
+ Mon, 23 Jun 2025 15:47:17 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.1.2..@fluentui/react-charts_v9.1.3)
11
+
12
+ ### Patches
13
+
14
+ - Add negative y value support in GVBC ([PR #34687](https://github.com/microsoft/fluentui/pull/34687) by anushgupta@microsoft.com)
15
+ - add support for negative vsbc ([PR #34668](https://github.com/microsoft/fluentui/pull/34668) by anushgupta@microsoft.com)
16
+ - port v8 changes to v9 ([PR #34665](https://github.com/microsoft/fluentui/pull/34665) by anushgupta@microsoft.com)
17
+ - Bump @fluentui/react-overflow to v9.4.3 ([PR #34677](https://github.com/microsoft/fluentui/pull/34677) by beachball)
18
+ - Bump @fluentui/react-popover to v9.11.3 ([PR #34677](https://github.com/microsoft/fluentui/pull/34677) by beachball)
19
+ - Bump @fluentui/react-tooltip to v9.7.3 ([PR #34677](https://github.com/microsoft/fluentui/pull/34677) by beachball)
20
+
7
21
  ## [9.1.2](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.1.2)
8
22
 
9
- Wed, 18 Jun 2025 17:29:27 GMT
23
+ Wed, 18 Jun 2025 17:33:57 GMT
10
24
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.1.1..@fluentui/react-charts_v9.1.2)
11
25
 
12
26
  ### Patches
package/dist/index.d.ts CHANGED
@@ -653,7 +653,7 @@ declare enum ChartTypes {
653
653
 
654
654
  export declare interface ChildProps {
655
655
  xScale?: any;
656
- yScale?: any;
656
+ yScalePrimary?: any;
657
657
  yScaleSecondary?: any;
658
658
  containerHeight?: number;
659
659
  containerWidth?: number;
@@ -1274,6 +1274,11 @@ export declare interface GroupedVerticalBarChartProps extends CartesianChartProp
1274
1274
  * @default 'default'
1275
1275
  */
1276
1276
  mode?: 'default' | 'plotly';
1277
+ /**
1278
+ * @default false
1279
+ * The prop used to enable rounded corners for the chart.
1280
+ */
1281
+ roundCorners?: boolean;
1277
1282
  }
1278
1283
 
1279
1284
  /**
@@ -1337,6 +1342,11 @@ export declare interface GVBarChartSeriesPoint {
1337
1342
  * Accessibility data for callout
1338
1343
  */
1339
1344
  callOutAccessibilityData?: AccessibilityProps;
1345
+ /**
1346
+ * Whether to use the secondary y scale or not
1347
+ * False by default.
1348
+ */
1349
+ useSecondaryYScale?: boolean;
1340
1350
  }
1341
1351
 
1342
1352
  export declare interface GVDataPoint {
@@ -2233,6 +2243,11 @@ export declare interface LineChartPoints {
2233
2243
  * Defines the function that is executed on clicking line
2234
2244
  */
2235
2245
  onLineClick?: () => void;
2246
+ /**
2247
+ * Whether to use the secondary y scale or not
2248
+ * False by default.
2249
+ */
2250
+ useSecondaryYScale?: boolean;
2236
2251
  }
2237
2252
 
2238
2253
  /**
@@ -2486,6 +2501,13 @@ export declare interface ModifiedCartesianChartProps extends CartesianChartProps
2486
2501
  * Used to control the first render cycle Performance optimization code.
2487
2502
  */
2488
2503
  enableFirstRenderOptimization?: boolean;
2504
+ /**
2505
+ * Get the min and max values of the y-axis
2506
+ */
2507
+ getMinMaxOfYAxis?: (points: DataPoint[], yAxisType: YAxisType | undefined, useSecondaryYScale?: boolean) => {
2508
+ startValue: number;
2509
+ endValue: number;
2510
+ };
2489
2511
  }
2490
2512
 
2491
2513
  declare type NodesInColumns = {
@@ -6,7 +6,7 @@ import { select as d3Select } from 'd3-selection';
6
6
  import { tokens } from '@fluentui/react-theme';
7
7
  import { area as d3Area, stack as d3Stack, curveMonotoneX as d3CurveBasis, line as d3Line } from 'd3-shape';
8
8
  import { CartesianChart } from '../../index';
9
- import { calloutData, getXAxisType, ChartTypes, XAxisTypes, getTypeOfAxis, tooltipOfXAxislabels, getNextColor, getColorFromToken, formatDate, getSecureProps, areArraysEqual, getCurveFactory, find } from '../../utilities/index';
9
+ import { calloutData, getXAxisType, ChartTypes, XAxisTypes, getTypeOfAxis, tooltipOfXAxislabels, getNextColor, getColorFromToken, formatDate, getSecureProps, areArraysEqual, getCurveFactory, find, findNumericMinMaxOfY } from '../../utilities/index';
10
10
  import { useId } from '@fluentui/react-utilities';
11
11
  import { Legends } from '../Legends/index';
12
12
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -29,6 +29,7 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
29
29
  const _enableComputationOptimization = true;
30
30
  const _firstRenderOptimization = true;
31
31
  const _emptyChartId = useId('_AreaChart_empty');
32
+ let _containsSecondaryYAxis = false;
32
33
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
34
  let _calloutPoints;
34
35
  let _createSet;
@@ -199,7 +200,7 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
199
200
  var _props_legendProps;
200
201
  const renderPoints = [];
201
202
  let maxOfYVal = 0;
202
- if (props.mode === 'tozeroy') {
203
+ if (_shouldFillToZeroY()) {
203
204
  keys.forEach((key, index)=>{
204
205
  const currentLayer = [];
205
206
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -236,7 +237,10 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
236
237
  _isMultiStackChart = !!(((_props_legendProps = props.legendProps) === null || _props_legendProps === void 0 ? void 0 : _props_legendProps.selectedLegends) ? (renderPoints === null || renderPoints === void 0 ? void 0 : renderPoints.length) >= 1 : (renderPoints === null || renderPoints === void 0 ? void 0 : renderPoints.length) > 1);
237
238
  return {
238
239
  renderData: renderPoints,
239
- maxOfYVal
240
+ // The maxOfYVal prop is only required for the primary y-axis. When the data includes
241
+ // a secondary y-axis, the mode defaults to tozeroy, so maxOfYVal should be calculated using
242
+ // only the data points associated with the primary y-axis.
243
+ maxOfYVal: _containsSecondaryYAxis ? findNumericMinMaxOfY(props.data.lineChartData).endValue : maxOfYVal
240
244
  };
241
245
  }
242
246
  function _createDataSet(points) {
@@ -338,8 +342,8 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
338
342
  }
339
343
  function _getGraphData(// eslint-disable-next-line @typescript-eslint/no-explicit-any
340
344
  xAxis, // eslint-disable-next-line @typescript-eslint/no-explicit-any
341
- yAxis, containerHeight, containerWidth, xElement) {
342
- _chart = _drawGraph(containerHeight, xAxis, yAxis, xElement);
345
+ yAxis, containerHeight, containerWidth, xElement, yAxisElement, yScaleSecondary) {
346
+ _chart = _drawGraph(containerHeight, xAxis, yAxis, yScaleSecondary, xElement);
343
347
  }
344
348
  function _onLegendHover(legend) {
345
349
  setActiveLegend(legend);
@@ -425,8 +429,8 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
425
429
  }
426
430
  return fillColor;
427
431
  }
428
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
429
- function _drawGraph(containerHeight, xScale, yScale, xElement) {
432
+ function _drawGraph(containerHeight, // eslint-disable-next-line @typescript-eslint/no-explicit-any
433
+ xScale, yScalePrimary, yScaleSecondary, xElement) {
430
434
  const points = _addDefaultColors(props.data.lineChartData);
431
435
  const { pointOptions, pointLineOptions } = props.data;
432
436
  const graph = [];
@@ -434,6 +438,7 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
434
438
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
435
439
  _data.forEach((singleStackedData, index)=>{
436
440
  var _points_index_lineOptions, _points_index_lineOptions1, _points_index_lineOptions2, _points_index_lineOptions3, _points_index_lineOptions4;
441
+ const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;
437
442
  const curveFactory = getCurveFactory((_points_index_lineOptions = points[index].lineOptions) === null || _points_index_lineOptions === void 0 ? void 0 : _points_index_lineOptions.curve, d3CurveBasis);
438
443
  const area = d3Area()// eslint-disable-next-line @typescript-eslint/no-explicit-any
439
444
  .x((d)=>xScale(d.xVal))// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -442,7 +447,7 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
442
447
  const line = d3Line()// eslint-disable-next-line @typescript-eslint/no-explicit-any
443
448
  .x((d)=>xScale(d.xVal))// eslint-disable-next-line @typescript-eslint/no-explicit-any
444
449
  .y((d)=>yScale(d.values[1])).curve(curveFactory);
445
- const layerOpacity = props.mode === 'tozeroy' ? 0.8 : _opacity[index];
450
+ const layerOpacity = _shouldFillToZeroY() ? 0.8 : _opacity[index];
446
451
  var _points_index_lineOptions_strokeWidth;
447
452
  graph.push(/*#__PURE__*/ React.createElement(React.Fragment, {
448
453
  key: `${index}-graph-${_uniqueIdForGraph}`
@@ -506,6 +511,7 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
506
511
  if (points.length === index) {
507
512
  return;
508
513
  }
514
+ const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;
509
515
  if (!props.optimizeLargeData || singleStackedData.length === 1) {
510
516
  // Render circles for all data points
511
517
  graph.push(/*#__PURE__*/ React.createElement("g", {
@@ -701,9 +707,13 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
701
707
  const { chartTitle, lineChartData } = props.data;
702
708
  return (chartTitle ? `${chartTitle}. ` : '') + `Area chart with ${(lineChartData === null || lineChartData === void 0 ? void 0 : lineChartData.length) || 0} data series. `;
703
709
  }
710
+ function _shouldFillToZeroY() {
711
+ return props.mode === 'tozeroy' || _containsSecondaryYAxis;
712
+ }
704
713
  if (!_isChartEmpty()) {
705
714
  const { lineChartData } = props.data;
706
715
  const points = _addDefaultColors(lineChartData);
716
+ _containsSecondaryYAxis = !!props.secondaryYScaleOptions && points.some((point)=>point.useSecondaryYScale);
707
717
  _createSet = _createDataSet;
708
718
  const { colors, opacity, data, calloutPoints } = _createSet(points);
709
719
  _calloutPoints = calloutPoints;
@@ -1 +1 @@
1
- {"version":3,"sources":["AreaChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAreaChartStyles } from './useAreaChartStyles.styles';\nimport { max as d3Max, bisector } from 'd3-array';\nimport { pointer } from 'd3-selection';\nimport { select as d3Select } from 'd3-selection';\nimport { tokens } from '@fluentui/react-theme';\nimport { area as d3Area, stack as d3Stack, curveMonotoneX as d3CurveBasis, line as d3Line } from 'd3-shape';\nimport {\n AccessibilityProps,\n CartesianChart,\n CustomizedCalloutData,\n AreaChartProps,\n LineChartDataPoint,\n LineChartPoints,\n ChildProps,\n Margins,\n YValueHover,\n ChartPopoverProps,\n Chart,\n} from '../../index';\nimport {\n calloutData,\n getXAxisType,\n ChartTypes,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n getNextColor,\n getColorFromToken,\n formatDate,\n getSecureProps,\n areArraysEqual,\n getCurveFactory,\n find,\n} from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport { Legend, Legends } from '../Legends/index';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nenum InterceptVisibility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface AreaChartAreaPoint {\n xVal: string | number;\n values: AreaChartDataSetPoint;\n}\nexport interface AreaChartDataSetPoint {\n [key: string]: number | string | number[];\n}\nexport interface DPointType {\n values: { 0: number; 1: number; data: {} };\n xVal: number | Date;\n}\nexport interface MapXToDataSet {\n [key: string]: LineChartDataPoint[];\n [key: number]: LineChartDataPoint[];\n}\n\n//by default d3-shape 3.2.0 limits the< path> data point precision to 3 digits(d3/d3-path#10)\n\nexport const AreaChart: React.FunctionComponent<AreaChartProps> = React.forwardRef<HTMLDivElement, AreaChartProps>(\n (props, forwardedRef) => {\n const _uniqueIdForGraph: string = useId('areaChart_');\n const _verticalLineId: string = useId('verticalLine_');\n const _circleId: string = useId('circle');\n const _rectId: string = useId('rectangle');\n const _tooltipId: string = useId('AreaChartTooltipID');\n //enableComputationOptimization is used for optimized code to group data points by x value\n //from O(n^2) to O(n) using a map.\n const _enableComputationOptimization: boolean = true;\n const _firstRenderOptimization: boolean = true;\n const _emptyChartId: string = useId('_AreaChart_empty');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any;\n let _createSet: (data: LineChartPoints[]) => {\n colors: string[];\n opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPoints: any;\n };\n let _colors: string[];\n let _opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _data: any;\n let _chart: JSX.Element[];\n let _margins: Margins;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisRectScale: any;\n // determines if the given area chart has multiple stacked bar charts\n let _isMultiStackChart: boolean;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [hoverXValue, setHoverXValue] = React.useState<string | number | undefined | null>('');\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const [YValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [lineXValue, setLineXValue] = React.useState<number>(0);\n const [displayOfLine, setDisplayOfLine] = React.useState<InterceptVisibility>(InterceptVisibility.hide);\n const [isCircleClicked, setIsCircleClicked] = React.useState<boolean>(false);\n const [nearestCircleToHighlight, setNearestCircleToHighlight] = React.useState<number | string | Date | null>(null);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<CustomizedCalloutData>();\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [xAxisCalloutAccessibilityData, setXAxisCalloutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<AreaChartProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const classes = useAreaChartStyles(props);\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _onRectMouseMove(mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>) {\n mouseEvent.persist();\n const { data } = props;\n const { lineChartData } = data;\n _updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n // This will get the value of the X when mouse is on the chart\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n const xOffset = _xAxisRectScale.invert(pointer(mouseEvent)[0], document.getElementById(_rectId)!);\n const i = bisect(lineChartData![0].data, xOffset);\n const d0 = lineChartData![0].data[i - 1] as LineChartDataPoint;\n const d1 = lineChartData![0].data[i] as LineChartDataPoint;\n let pointToHighlight: string | Date | number | null = null;\n let index: null | number = null;\n const axisType =\n lineChartData![0].data.length > 0 ? (getTypeOfAxis(lineChartData![0].data[0].x, true) as XAxisTypes) : null;\n if (d0 === undefined && d1 !== undefined) {\n pointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n pointToHighlight = d0.x;\n index = i - 1;\n } else {\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 pointToHighlight = 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 pointToHighlight = 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 // eslint-disable-next-line @typescript-eslint/no-shadow\n const { xAxisCalloutData, xAxisCalloutAccessibilityData } = lineChartData![0].data[index as number];\n const formattedDate =\n pointToHighlight instanceof Date ? formatDate(pointToHighlight, props.useUTC) : pointToHighlight;\n const modifiedXVal = pointToHighlight instanceof Date ? pointToHighlight.getTime() : pointToHighlight;\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 // eslint-disable-next-line @typescript-eslint/no-shadow\n const _nearestCircleToHighlight =\n axisType === XAxisTypes.DateAxis ? (pointToHighlight as Date).getTime() : pointToHighlight;\n // if no points need to be called out then don't show vertical line and callout card\n if (found) {\n const filteredValues = _getFilteredLegendValues(found.values);\n setNearestCircleToHighlight(_nearestCircleToHighlight);\n setLineXValue(_xAxisRectScale(pointToHighlight));\n setDisplayOfLine(InterceptVisibility.show);\n setIsCircleClicked(false);\n setStackCalloutProps({ ...found, values: filteredValues });\n setYValueHover(filteredValues);\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setXAxisCalloutAccessibilityData(xAxisCalloutAccessibilityData);\n setActivePoint('');\n } else {\n setPopoverOpen(false);\n setNearestCircleToHighlight(nearestCircleToHighlight);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n }\n }\n /**\n * just cleaning up the state which we have set in the mouse move event\n */\n function _onRectMouseOut() {\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 _handleChartMouseLeave() {\n setPopoverOpen(false);\n setNearestCircleToHighlight(null);\n setLineXValue(0);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setHoverXValue(undefined);\n setYValueHover([]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getDataPoints(keys: string[], dataSet: any) {\n const renderPoints: Array<AreaChartDataSetPoint[]> = [];\n let maxOfYVal = 0;\n\n if (props.mode === 'tozeroy') {\n keys.forEach((key, index) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSet.forEach((d: any) => {\n currentLayer.push({\n values: [0, d[key]], // Start from zero for \"tozeroy\" mode\n xVal: d.xVal,\n });\n if (d[key] > maxOfYVal) {\n maxOfYVal = d[key];\n }\n });\n renderPoints.push(currentLayer);\n });\n } else {\n const dataValues = d3Stack().keys(keys)(dataSet);\n maxOfYVal = d3Max(dataValues[dataValues.length - 1], dp => dp[1])!;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataValues.forEach((layer: any) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.forEach((d: any) => {\n currentLayer.push({\n values: d,\n xVal: d.data.xVal,\n });\n });\n renderPoints.push(currentLayer);\n });\n }\n\n _isMultiStackChart = !!(props.legendProps?.selectedLegends\n ? renderPoints?.length >= 1\n : renderPoints?.length > 1);\n return {\n renderData: renderPoints,\n maxOfYVal,\n };\n }\n\n function _createDataSet(points: LineChartPoints[]) {\n if (props.enablePerfOptimization && _enableComputationOptimization) {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n const mapOfXvalToListOfDataPoints: MapXToDataSet = {};\n allChartPoints.forEach((dataPoint: LineChartDataPoint) => {\n const xValue = dataPoint.x instanceof Date ? dataPoint.x.toLocaleString() : dataPoint.x;\n // map of x value to the list of data points which share the same x value .\n if (mapOfXvalToListOfDataPoints[xValue]) {\n mapOfXvalToListOfDataPoints[xValue].push(dataPoint);\n } else {\n mapOfXvalToListOfDataPoints[xValue] = [dataPoint];\n }\n });\n\n Object.keys(mapOfXvalToListOfDataPoints).forEach((key: number | string) => {\n const value: LineChartDataPoint[] = mapOfXvalToListOfDataPoints[key];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n value.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n });\n\n // get keys from dataset, used to render data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\n } else {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n let tempArr = allChartPoints;\n while (tempArr.length) {\n const valToCheck = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n const filteredChartPoints: LineChartDataPoint[] = tempArr.filter(\n (point: LineChartDataPoint) =>\n (point.x instanceof Date ? point.x.toLocaleString() : point.x) === valToCheck,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n filteredChartPoints.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n // removing compared objects from array\n const val = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n tempArr = tempArr.filter(\n (point: LineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) !== val,\n );\n }\n\n // get keys from dataset, used to create stacked data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\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 _getGraphData(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xAxis: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _chart = _drawGraph(containerHeight, xAxis, yAxis, xElement!);\n }\n\n function _onLegendHover(legend: string): void {\n setActiveLegend(legend);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _getLegendData(points: LineChartPoints[]): JSX.Element {\n const data = points;\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: LineChartPoints) => {\n const color: string = singleChartData.color!;\n const checkSimilarLegends = actions.filter(\n (leg: Legend) => leg.title === singleChartData.legend && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: singleChartData.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(singleChartData.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _onLegendSelectionChange(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n function _onDataPointClick(func: (() => void) | undefined) {\n if (func) {\n func();\n }\n setIsCircleClicked(true);\n }\n\n function _getOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 0.7;\n } else {\n const opacity = _legendHighlighted(legend) || _noLegendHighlighted() ? 0.7 : 0.1;\n return opacity;\n }\n }\n\n function _getLineOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 1;\n } else {\n let opacity = 0.3;\n if (isPopoverOpen) {\n opacity = 1;\n }\n if (!_noLegendHighlighted()) {\n opacity = _legendHighlighted(legend) ? 0 : 0.1;\n }\n return opacity;\n }\n }\n\n function _updateCircleFillColor(xDataPoint: number | Date, lineColor: string, circleId: string): string {\n let fillColor = lineColor;\n if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n if (!isCircleClicked) {\n fillColor = tokens.colorNeutralBackground1;\n }\n }\n\n return fillColor;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _drawGraph(containerHeight: number, xScale: any, yScale: any, xElement: SVGElement): JSX.Element[] {\n const points = _addDefaultColors(props.data.lineChartData);\n const { pointOptions, pointLineOptions } = props.data;\n\n const graph: JSX.Element[] = [];\n let lineColor: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n const curveFactory = getCurveFactory(points[index].lineOptions?.curve, d3CurveBasis);\n const area = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((d: any) => yScale(d.values[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const layerOpacity = props.mode === 'tozeroy' ? 0.8 : _opacity[index];\n graph.push(\n <React.Fragment key={`${index}-graph-${_uniqueIdForGraph}`}>\n {props.enableGradient && (\n <defs>\n <linearGradient id={`gradient_${index}`} x1=\"0%\" x2=\"0%\" y1=\"0%\" y2=\"100%\">\n <stop offset=\"0\" stopColor={_colors[index]} />\n <stop offset=\"100%\" stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n )}\n <path\n id={`${index}-line-${_uniqueIdForGraph}`}\n d={line(singleStackedData)!}\n fill={'transparent'}\n strokeWidth={points[index].lineOptions?.strokeWidth ?? 3}\n stroke={_colors[index]}\n opacity={_getLineOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n strokeDasharray={points[index].lineOptions?.strokeDasharray}\n strokeDashoffset={points[index].lineOptions?.strokeDashoffset}\n strokeLinecap={points[index].lineOptions?.strokeLinecap}\n />\n {singleStackedData.length === 1 ? (\n <circle\n id={`${index}-graph-${_uniqueIdForGraph}`}\n cx={xScale(singleStackedData[0].xVal)}\n cy={yScale(singleStackedData[0].values[1])}\n r={6}\n stroke={_colors[index]}\n strokeWidth={3}\n fill={_colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n ) : (\n <path\n id={`${index}-graph-${_uniqueIdForGraph}`}\n d={area(singleStackedData)!}\n fill={props.enableGradient ? `url(#gradient_${index})` : _colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n {...(props.optimizeLargeData && {\n tabIndex: _legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined,\n role: 'img',\n 'aria-label': `${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`,\n })}\n />\n )}\n </React.Fragment>,\n );\n });\n\n const circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n if (points.length === index) {\n return;\n }\n\n if (!props.optimizeLargeData || singleStackedData.length === 1) {\n // Render circles for all data points\n graph.push(\n <g\n key={`${index}-dots-${_uniqueIdForGraph}`}\n clipPath=\"url(#clip)\"\n role=\"region\"\n aria-label={`${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`}\n >\n {singleStackedData.map((singlePoint: DPointType, pointIndex: number) => {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n return (\n <circle\n key={circleId}\n id={circleId}\n tabIndex={_legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n onFocus={() => _handleFocus(index, pointIndex, circleId)}\n onBlur={_handleBlur}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n role=\"img\"\n aria-label={_getAriaLabel(index, pointIndex)}\n />\n );\n })}\n </g>,\n );\n } else {\n // Render circles for data points close to the mouse pointer only\n singleStackedData.forEach((singlePoint: DPointType, pointIndex: number) => {\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n if (nearestCircleToHighlight === xDataPoint) {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n graph.push(\n <circle\n key={circleId}\n id={circleId}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n />,\n );\n }\n });\n }\n });\n graph.push(\n <line\n id={_verticalLineId}\n key={_verticalLineId}\n x1={lineXValue}\n y1={0}\n x2={lineXValue}\n y2={containerHeight}\n strokeWidth={1}\n strokeDasharray={5.5}\n stroke={lineColor!}\n opacity={0.5}\n visibility={displayOfLine}\n {...getSecureProps(pointLineOptions)}\n />,\n );\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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(xScale);\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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 graph;\n }\n\n function _getCircleRadius(xDataPoint: number, circleRadius: number, circleId: string, legend: string): number {\n // Show the circle if no legends are selected or if the point's legend is in the selected legends\n if (!_noLegendHighlighted() && !_legendHighlighted(legend)) {\n return 0;\n }\n\n if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {\n return 1;\n } else if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n return circleRadius;\n } else {\n return 0;\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _legendHighlighted(legend: string) {\n return _getHighlightedLegend().includes(legend!);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _addDefaultColors(lineChartData?: LineChartPoints[]): LineChartPoints[] {\n return lineChartData\n ? lineChartData.map((item, index) => {\n let color: string;\n // isInverted property is applicable to v8 themes only\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n\n return { ...item, color };\n })\n : [];\n }\n\n function _handleFocus(lineIndex: number, pointIndex: number, circleId: string) {\n const { x, y, xAxisCalloutData } = props.data.lineChartData![lineIndex].data[pointIndex];\n const formattedDate = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const modifiedXVal = x instanceof Date ? x.getTime() : x;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = _calloutPoints.find((e: { x: string | number }) => e.x === modifiedXVal);\n // Show details in the callout for the focused point only\n found.values = found.values.filter((e: { y: number }) => e.y === y);\n const filteredValues = _getFilteredLegendValues(found.values);\n\n setPopoverOpen(true);\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setYValueHover(filteredValues!);\n setStackCalloutProps({ ...found, values: filteredValues });\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setActivePoint(circleId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getFilteredLegendValues(values: any) {\n return !_noLegendHighlighted()\n ? values.filter((value: { legend: string }) => _legendHighlighted(value.legend))\n : values;\n }\n\n function _handleBlur() {\n setPopoverOpen(false);\n setHoverXValue(undefined);\n setYValueHover([]);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setActivePoint('');\n }\n\n function _getAriaLabel(lineIndex: number, pointIndex: number): string {\n const line = props.data.lineChartData![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 (\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props.data.lineChartData.filter((item: { data: string | any[] }) => item.data.length === 0).length === 0\n )\n // if all the data sets have no data\n // filtering all items which have no data and checking if the length of the filtered array is 0\n // which means chart is not empty\n );\n }\n\n function _getChartTitle(): string {\n const { chartTitle, lineChartData } = props.data;\n return (chartTitle ? `${chartTitle}. ` : '') + `Area chart with ${lineChartData?.length || 0} data series. `;\n }\n\n if (!_isChartEmpty()) {\n const { lineChartData } = props.data;\n const points = _addDefaultColors(lineChartData);\n _createSet = _createDataSet;\n const { colors, opacity, data, calloutPoints } = _createSet(points);\n _calloutPoints = calloutPoints;\n const isXAxisDateType = getXAxisType(points);\n _colors = colors;\n _opacity = opacity;\n _data = data.renderData;\n const legends: JSX.Element = _getLegendData(points);\n\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n const calloutProps: ChartPopoverProps = {\n YValueHover: YValueHover!,\n hoverXValue: hoverXValue!,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n isCalloutForStack: true,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={points}\n chartType={ChartTypes.AreaChart}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={data.maxOfYVal}\n getGraphData={_getGraphData}\n getmargins={_getMargins}\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, @typescript-eslint/no-shadow\n children={(props: ChildProps) => {\n _xAxisRectScale = props.xScale;\n const ticks = _xAxisRectScale.ticks();\n const width1 = _xAxisRectScale(ticks[ticks.length - 1]);\n const rectHeight = props.containerHeight! - _margins.top!;\n return (\n <>\n <g>\n <rect\n id={_rectId}\n width={width1}\n height={rectHeight}\n fill={'transparent'}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n </g>\n <g>{_chart}</g>\n </>\n );\n }}\n />\n );\n }\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\nAreaChart.displayName = 'AreaChart';\n"],"names":["React","useAreaChartStyles","max","d3Max","bisector","pointer","select","d3Select","tokens","area","d3Area","stack","d3Stack","curveMonotoneX","d3CurveBasis","line","d3Line","CartesianChart","calloutData","getXAxisType","ChartTypes","XAxisTypes","getTypeOfAxis","tooltipOfXAxislabels","getNextColor","getColorFromToken","formatDate","getSecureProps","areArraysEqual","getCurveFactory","find","useId","Legends","bisect","d","x","left","InterceptVisibility","AreaChart","forwardRef","props","forwardedRef","_uniqueIdForGraph","_verticalLineId","_circleId","_rectId","_tooltipId","_enableComputationOptimization","_firstRenderOptimization","_emptyChartId","_calloutPoints","_createSet","_colors","_opacity","_data","_chart","_margins","_xAxisRectScale","_isMultiStackChart","cartesianChartRef","useRef","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","hoverXValue","setHoverXValue","YValueHover","setYValueHover","lineXValue","setLineXValue","displayOfLine","setDisplayOfLine","isCircleClicked","setIsCircleClicked","nearestCircleToHighlight","setNearestCircleToHighlight","activePoint","setActivePoint","dataPointCalloutProps","setDataPointCalloutProps","stackCalloutProps","setStackCalloutProps","xAxisCalloutAccessibilityData","setXAxisCalloutAccessibilityData","clickPosition","setClickPosition","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","useImperativeHandle","componentRef","chartContainer","classes","_getMargins","margins","_onRectMouseMove","mouseEvent","persist","data","lineChartData","_updatePosition","clientX","clientY","xOffset","invert","document","getElementById","i","d0","d1","pointToHighlight","index","axisType","length","x0","point0","point1","DateAxis","Date","getTime","Math","abs","NumericAxis","xAxisCalloutData","formattedDate","useUTC","modifiedXVal","found","element","_nearestCircleToHighlight","filteredValues","_getFilteredLegendValues","values","_onRectMouseOut","newX","newY","threshold","distance","sqrt","pow","_handleChartMouseLeave","_getDataPoints","keys","dataSet","renderPoints","maxOfYVal","mode","forEach","key","currentLayer","push","xVal","dataValues","dp","layer","renderData","_createDataSet","points","enablePerfOptimization","allChartPoints","colors","opacity","calloutPoints","singleChartPoint","color","mapOfXvalToListOfDataPoints","dataPoint","xValue","toLocaleString","Object","value","singleDataset","singleDataPoint","keysLength","keyVal","tempArr","valToCheck","filteredChartPoints","filter","point","val","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getGraphData","xAxis","yAxis","containerHeight","containerWidth","xElement","_drawGraph","_onLegendHover","legend","_onLegendLeave","_getLegendData","actions","singleChartData","checkSimilarLegends","leg","title","hoverAction","onMouseOutAction","legends","enabledWrapLines","enabledLegendsWrapLines","onChange","_onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","_onDataPointClick","func","_getOpacity","_legendHighlighted","_noLegendHighlighted","_getLineOpacity","_updateCircleFillColor","xDataPoint","lineColor","circleId","fillColor","colorNeutralBackground1","xScale","yScale","_addDefaultColors","pointOptions","pointLineOptions","graph","singleStackedData","curveFactory","lineOptions","curve","y0","y1","layerOpacity","Fragment","enableGradient","defs","linearGradient","id","x1","x2","y2","stop","offset","stopColor","path","fill","strokeWidth","stroke","onMouseMove","onMouseOut","onMouseOver","strokeDasharray","strokeDashoffset","strokeLinecap","circle","cx","cy","r","fillOpacity","optimizeLargeData","tabIndex","role","circleRadius","Number","g","clipPath","aria-label","map","singlePoint","pointIndex","onClick","onDataPointClick","onFocus","_handleFocus","onBlur","_handleBlur","_getCircleRadius","_getAriaLabel","visibility","showXAxisLablesTooltip","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","_getHighlightedLegend","includes","item","lineIndex","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","isXAxisDateType","tickParams","tickValues","tickFormat","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCalloutForStack","chartType","legendBars","xAxisType","getGraphData","getmargins","onChartMouseLeave","enableFirstRenderOptimization","children","ticks","width1","rectHeight","top","rect","width","height","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["AreaChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAreaChartStyles } from './useAreaChartStyles.styles';\nimport { max as d3Max, bisector } from 'd3-array';\nimport { pointer } from 'd3-selection';\nimport { select as d3Select } from 'd3-selection';\nimport { tokens } from '@fluentui/react-theme';\nimport { area as d3Area, stack as d3Stack, curveMonotoneX as d3CurveBasis, line as d3Line } from 'd3-shape';\nimport {\n AccessibilityProps,\n CartesianChart,\n CustomizedCalloutData,\n AreaChartProps,\n LineChartDataPoint,\n LineChartPoints,\n ChildProps,\n Margins,\n YValueHover,\n ChartPopoverProps,\n Chart,\n} from '../../index';\nimport {\n calloutData,\n getXAxisType,\n ChartTypes,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n getNextColor,\n getColorFromToken,\n formatDate,\n getSecureProps,\n areArraysEqual,\n getCurveFactory,\n find,\n findNumericMinMaxOfY,\n} from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport { Legend, Legends } from '../Legends/index';\nimport { ScaleLinear } from 'd3-scale';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nenum InterceptVisibility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface AreaChartAreaPoint {\n xVal: string | number;\n values: AreaChartDataSetPoint;\n}\nexport interface AreaChartDataSetPoint {\n [key: string]: number | string | number[];\n}\nexport interface DPointType {\n values: { 0: number; 1: number; data: {} };\n xVal: number | Date;\n}\nexport interface MapXToDataSet {\n [key: string]: LineChartDataPoint[];\n [key: number]: LineChartDataPoint[];\n}\n\n//by default d3-shape 3.2.0 limits the< path> data point precision to 3 digits(d3/d3-path#10)\n\nexport const AreaChart: React.FunctionComponent<AreaChartProps> = React.forwardRef<HTMLDivElement, AreaChartProps>(\n (props, forwardedRef) => {\n const _uniqueIdForGraph: string = useId('areaChart_');\n const _verticalLineId: string = useId('verticalLine_');\n const _circleId: string = useId('circle');\n const _rectId: string = useId('rectangle');\n const _tooltipId: string = useId('AreaChartTooltipID');\n //enableComputationOptimization is used for optimized code to group data points by x value\n //from O(n^2) to O(n) using a map.\n const _enableComputationOptimization: boolean = true;\n const _firstRenderOptimization: boolean = true;\n const _emptyChartId: string = useId('_AreaChart_empty');\n let _containsSecondaryYAxis = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any;\n let _createSet: (data: LineChartPoints[]) => {\n colors: string[];\n opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPoints: any;\n };\n let _colors: string[];\n let _opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _data: any;\n let _chart: JSX.Element[];\n let _margins: Margins;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisRectScale: any;\n // determines if the given area chart has multiple stacked bar charts\n let _isMultiStackChart: boolean;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [hoverXValue, setHoverXValue] = React.useState<string | number | undefined | null>('');\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const [YValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [lineXValue, setLineXValue] = React.useState<number>(0);\n const [displayOfLine, setDisplayOfLine] = React.useState<InterceptVisibility>(InterceptVisibility.hide);\n const [isCircleClicked, setIsCircleClicked] = React.useState<boolean>(false);\n const [nearestCircleToHighlight, setNearestCircleToHighlight] = React.useState<number | string | Date | null>(null);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<CustomizedCalloutData>();\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [xAxisCalloutAccessibilityData, setXAxisCalloutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<AreaChartProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const classes = useAreaChartStyles(props);\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _onRectMouseMove(mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>) {\n mouseEvent.persist();\n const { data } = props;\n const { lineChartData } = data;\n _updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n // This will get the value of the X when mouse is on the chart\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n const xOffset = _xAxisRectScale.invert(pointer(mouseEvent)[0], document.getElementById(_rectId)!);\n const i = bisect(lineChartData![0].data, xOffset);\n const d0 = lineChartData![0].data[i - 1] as LineChartDataPoint;\n const d1 = lineChartData![0].data[i] as LineChartDataPoint;\n let pointToHighlight: string | Date | number | null = null;\n let index: null | number = null;\n const axisType =\n lineChartData![0].data.length > 0 ? (getTypeOfAxis(lineChartData![0].data[0].x, true) as XAxisTypes) : null;\n if (d0 === undefined && d1 !== undefined) {\n pointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n pointToHighlight = d0.x;\n index = i - 1;\n } else {\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 pointToHighlight = 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 pointToHighlight = 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 // eslint-disable-next-line @typescript-eslint/no-shadow\n const { xAxisCalloutData, xAxisCalloutAccessibilityData } = lineChartData![0].data[index as number];\n const formattedDate =\n pointToHighlight instanceof Date ? formatDate(pointToHighlight, props.useUTC) : pointToHighlight;\n const modifiedXVal = pointToHighlight instanceof Date ? pointToHighlight.getTime() : pointToHighlight;\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 // eslint-disable-next-line @typescript-eslint/no-shadow\n const _nearestCircleToHighlight =\n axisType === XAxisTypes.DateAxis ? (pointToHighlight as Date).getTime() : pointToHighlight;\n // if no points need to be called out then don't show vertical line and callout card\n if (found) {\n const filteredValues = _getFilteredLegendValues(found.values);\n setNearestCircleToHighlight(_nearestCircleToHighlight);\n setLineXValue(_xAxisRectScale(pointToHighlight));\n setDisplayOfLine(InterceptVisibility.show);\n setIsCircleClicked(false);\n setStackCalloutProps({ ...found, values: filteredValues });\n setYValueHover(filteredValues);\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setXAxisCalloutAccessibilityData(xAxisCalloutAccessibilityData);\n setActivePoint('');\n } else {\n setPopoverOpen(false);\n setNearestCircleToHighlight(nearestCircleToHighlight);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n }\n }\n /**\n * just cleaning up the state which we have set in the mouse move event\n */\n function _onRectMouseOut() {\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 _handleChartMouseLeave() {\n setPopoverOpen(false);\n setNearestCircleToHighlight(null);\n setLineXValue(0);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setHoverXValue(undefined);\n setYValueHover([]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getDataPoints(keys: string[], dataSet: any) {\n const renderPoints: Array<AreaChartDataSetPoint[]> = [];\n let maxOfYVal = 0;\n\n if (_shouldFillToZeroY()) {\n keys.forEach((key, index) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSet.forEach((d: any) => {\n currentLayer.push({\n values: [0, d[key]], // Start from zero for \"tozeroy\" mode\n xVal: d.xVal,\n });\n if (d[key] > maxOfYVal) {\n maxOfYVal = d[key];\n }\n });\n renderPoints.push(currentLayer);\n });\n } else {\n const dataValues = d3Stack().keys(keys)(dataSet);\n maxOfYVal = d3Max(dataValues[dataValues.length - 1], dp => dp[1])!;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataValues.forEach((layer: any) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.forEach((d: any) => {\n currentLayer.push({\n values: d,\n xVal: d.data.xVal,\n });\n });\n renderPoints.push(currentLayer);\n });\n }\n\n _isMultiStackChart = !!(props.legendProps?.selectedLegends\n ? renderPoints?.length >= 1\n : renderPoints?.length > 1);\n return {\n renderData: renderPoints,\n // The maxOfYVal prop is only required for the primary y-axis. When the data includes\n // a secondary y-axis, the mode defaults to tozeroy, so maxOfYVal should be calculated using\n // only the data points associated with the primary y-axis.\n maxOfYVal: _containsSecondaryYAxis ? findNumericMinMaxOfY(props.data.lineChartData!).endValue : maxOfYVal,\n };\n }\n\n function _createDataSet(points: LineChartPoints[]) {\n if (props.enablePerfOptimization && _enableComputationOptimization) {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n const mapOfXvalToListOfDataPoints: MapXToDataSet = {};\n allChartPoints.forEach((dataPoint: LineChartDataPoint) => {\n const xValue = dataPoint.x instanceof Date ? dataPoint.x.toLocaleString() : dataPoint.x;\n // map of x value to the list of data points which share the same x value .\n if (mapOfXvalToListOfDataPoints[xValue]) {\n mapOfXvalToListOfDataPoints[xValue].push(dataPoint);\n } else {\n mapOfXvalToListOfDataPoints[xValue] = [dataPoint];\n }\n });\n\n Object.keys(mapOfXvalToListOfDataPoints).forEach((key: number | string) => {\n const value: LineChartDataPoint[] = mapOfXvalToListOfDataPoints[key];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n value.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n });\n\n // get keys from dataset, used to render data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\n } else {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n let tempArr = allChartPoints;\n while (tempArr.length) {\n const valToCheck = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n const filteredChartPoints: LineChartDataPoint[] = tempArr.filter(\n (point: LineChartDataPoint) =>\n (point.x instanceof Date ? point.x.toLocaleString() : point.x) === valToCheck,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n filteredChartPoints.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n // removing compared objects from array\n const val = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n tempArr = tempArr.filter(\n (point: LineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) !== val,\n );\n }\n\n // get keys from dataset, used to create stacked data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\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 _getGraphData(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xAxis: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) {\n _chart = _drawGraph(containerHeight, xAxis, yAxis, yScaleSecondary, xElement!);\n }\n\n function _onLegendHover(legend: string): void {\n setActiveLegend(legend);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _getLegendData(points: LineChartPoints[]): JSX.Element {\n const data = points;\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: LineChartPoints) => {\n const color: string = singleChartData.color!;\n const checkSimilarLegends = actions.filter(\n (leg: Legend) => leg.title === singleChartData.legend && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: singleChartData.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(singleChartData.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _onLegendSelectionChange(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n function _onDataPointClick(func: (() => void) | undefined) {\n if (func) {\n func();\n }\n setIsCircleClicked(true);\n }\n\n function _getOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 0.7;\n } else {\n const opacity = _legendHighlighted(legend) || _noLegendHighlighted() ? 0.7 : 0.1;\n return opacity;\n }\n }\n\n function _getLineOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 1;\n } else {\n let opacity = 0.3;\n if (isPopoverOpen) {\n opacity = 1;\n }\n if (!_noLegendHighlighted()) {\n opacity = _legendHighlighted(legend) ? 0 : 0.1;\n }\n return opacity;\n }\n }\n\n function _updateCircleFillColor(xDataPoint: number | Date, lineColor: string, circleId: string): string {\n let fillColor = lineColor;\n if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n if (!isCircleClicked) {\n fillColor = tokens.colorNeutralBackground1;\n }\n }\n\n return fillColor;\n }\n\n function _drawGraph(\n containerHeight: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n xElement: SVGElement,\n ): JSX.Element[] {\n const points = _addDefaultColors(props.data.lineChartData);\n const { pointOptions, pointLineOptions } = props.data;\n\n const graph: JSX.Element[] = [];\n let lineColor: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n const curveFactory = getCurveFactory(points[index].lineOptions?.curve, d3CurveBasis);\n const area = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((d: any) => yScale(d.values[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const layerOpacity = _shouldFillToZeroY() ? 0.8 : _opacity[index];\n graph.push(\n <React.Fragment key={`${index}-graph-${_uniqueIdForGraph}`}>\n {props.enableGradient && (\n <defs>\n <linearGradient id={`gradient_${index}`} x1=\"0%\" x2=\"0%\" y1=\"0%\" y2=\"100%\">\n <stop offset=\"0\" stopColor={_colors[index]} />\n <stop offset=\"100%\" stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n )}\n <path\n id={`${index}-line-${_uniqueIdForGraph}`}\n d={line(singleStackedData)!}\n fill={'transparent'}\n strokeWidth={points[index].lineOptions?.strokeWidth ?? 3}\n stroke={_colors[index]}\n opacity={_getLineOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n strokeDasharray={points[index].lineOptions?.strokeDasharray}\n strokeDashoffset={points[index].lineOptions?.strokeDashoffset}\n strokeLinecap={points[index].lineOptions?.strokeLinecap}\n />\n {singleStackedData.length === 1 ? (\n <circle\n id={`${index}-graph-${_uniqueIdForGraph}`}\n cx={xScale(singleStackedData[0].xVal)}\n cy={yScale(singleStackedData[0].values[1])}\n r={6}\n stroke={_colors[index]}\n strokeWidth={3}\n fill={_colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n ) : (\n <path\n id={`${index}-graph-${_uniqueIdForGraph}`}\n d={area(singleStackedData)!}\n fill={props.enableGradient ? `url(#gradient_${index})` : _colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n {...(props.optimizeLargeData && {\n tabIndex: _legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined,\n role: 'img',\n 'aria-label': `${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`,\n })}\n />\n )}\n </React.Fragment>,\n );\n });\n\n const circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n if (points.length === index) {\n return;\n }\n const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n if (!props.optimizeLargeData || singleStackedData.length === 1) {\n // Render circles for all data points\n graph.push(\n <g\n key={`${index}-dots-${_uniqueIdForGraph}`}\n clipPath=\"url(#clip)\"\n role=\"region\"\n aria-label={`${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`}\n >\n {singleStackedData.map((singlePoint: DPointType, pointIndex: number) => {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n return (\n <circle\n key={circleId}\n id={circleId}\n tabIndex={_legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n onFocus={() => _handleFocus(index, pointIndex, circleId)}\n onBlur={_handleBlur}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n role=\"img\"\n aria-label={_getAriaLabel(index, pointIndex)}\n />\n );\n })}\n </g>,\n );\n } else {\n // Render circles for data points close to the mouse pointer only\n singleStackedData.forEach((singlePoint: DPointType, pointIndex: number) => {\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n if (nearestCircleToHighlight === xDataPoint) {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n graph.push(\n <circle\n key={circleId}\n id={circleId}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n />,\n );\n }\n });\n }\n });\n graph.push(\n <line\n id={_verticalLineId}\n key={_verticalLineId}\n x1={lineXValue}\n y1={0}\n x2={lineXValue}\n y2={containerHeight}\n strokeWidth={1}\n strokeDasharray={5.5}\n stroke={lineColor!}\n opacity={0.5}\n visibility={displayOfLine}\n {...getSecureProps(pointLineOptions)}\n />,\n );\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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(xScale);\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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 graph;\n }\n\n function _getCircleRadius(xDataPoint: number, circleRadius: number, circleId: string, legend: string): number {\n // Show the circle if no legends are selected or if the point's legend is in the selected legends\n if (!_noLegendHighlighted() && !_legendHighlighted(legend)) {\n return 0;\n }\n\n if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {\n return 1;\n } else if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n return circleRadius;\n } else {\n return 0;\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _legendHighlighted(legend: string) {\n return _getHighlightedLegend().includes(legend!);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _addDefaultColors(lineChartData?: LineChartPoints[]): LineChartPoints[] {\n return lineChartData\n ? lineChartData.map((item, index) => {\n let color: string;\n // isInverted property is applicable to v8 themes only\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n\n return { ...item, color };\n })\n : [];\n }\n\n function _handleFocus(lineIndex: number, pointIndex: number, circleId: string) {\n const { x, y, xAxisCalloutData } = props.data.lineChartData![lineIndex].data[pointIndex];\n const formattedDate = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const modifiedXVal = x instanceof Date ? x.getTime() : x;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = _calloutPoints.find((e: { x: string | number }) => e.x === modifiedXVal);\n // Show details in the callout for the focused point only\n found.values = found.values.filter((e: { y: number }) => e.y === y);\n const filteredValues = _getFilteredLegendValues(found.values);\n\n setPopoverOpen(true);\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setYValueHover(filteredValues!);\n setStackCalloutProps({ ...found, values: filteredValues });\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setActivePoint(circleId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getFilteredLegendValues(values: any) {\n return !_noLegendHighlighted()\n ? values.filter((value: { legend: string }) => _legendHighlighted(value.legend))\n : values;\n }\n\n function _handleBlur() {\n setPopoverOpen(false);\n setHoverXValue(undefined);\n setYValueHover([]);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setActivePoint('');\n }\n\n function _getAriaLabel(lineIndex: number, pointIndex: number): string {\n const line = props.data.lineChartData![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 (\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props.data.lineChartData.filter((item: { data: string | any[] }) => item.data.length === 0).length === 0\n )\n // if all the data sets have no data\n // filtering all items which have no data and checking if the length of the filtered array is 0\n // which means chart is not empty\n );\n }\n\n function _getChartTitle(): string {\n const { chartTitle, lineChartData } = props.data;\n return (chartTitle ? `${chartTitle}. ` : '') + `Area chart with ${lineChartData?.length || 0} data series. `;\n }\n\n function _shouldFillToZeroY() {\n return props.mode === 'tozeroy' || _containsSecondaryYAxis;\n }\n\n if (!_isChartEmpty()) {\n const { lineChartData } = props.data;\n const points = _addDefaultColors(lineChartData);\n _containsSecondaryYAxis = !!props.secondaryYScaleOptions && points.some(point => point.useSecondaryYScale);\n _createSet = _createDataSet;\n const { colors, opacity, data, calloutPoints } = _createSet(points);\n _calloutPoints = calloutPoints;\n const isXAxisDateType = getXAxisType(points);\n _colors = colors;\n _opacity = opacity;\n _data = data.renderData;\n const legends: JSX.Element = _getLegendData(points);\n\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n const calloutProps: ChartPopoverProps = {\n YValueHover: YValueHover!,\n hoverXValue: hoverXValue!,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n isCalloutForStack: true,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={points}\n chartType={ChartTypes.AreaChart}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={data.maxOfYVal}\n getGraphData={_getGraphData}\n getmargins={_getMargins}\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, @typescript-eslint/no-shadow\n children={(props: ChildProps) => {\n _xAxisRectScale = props.xScale;\n const ticks = _xAxisRectScale.ticks();\n const width1 = _xAxisRectScale(ticks[ticks.length - 1]);\n const rectHeight = props.containerHeight! - _margins.top!;\n return (\n <>\n <g>\n <rect\n id={_rectId}\n width={width1}\n height={rectHeight}\n fill={'transparent'}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n </g>\n <g>{_chart}</g>\n </>\n );\n }}\n />\n );\n }\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\nAreaChart.displayName = 'AreaChart';\n"],"names":["React","useAreaChartStyles","max","d3Max","bisector","pointer","select","d3Select","tokens","area","d3Area","stack","d3Stack","curveMonotoneX","d3CurveBasis","line","d3Line","CartesianChart","calloutData","getXAxisType","ChartTypes","XAxisTypes","getTypeOfAxis","tooltipOfXAxislabels","getNextColor","getColorFromToken","formatDate","getSecureProps","areArraysEqual","getCurveFactory","find","findNumericMinMaxOfY","useId","Legends","bisect","d","x","left","InterceptVisibility","AreaChart","forwardRef","props","forwardedRef","_uniqueIdForGraph","_verticalLineId","_circleId","_rectId","_tooltipId","_enableComputationOptimization","_firstRenderOptimization","_emptyChartId","_containsSecondaryYAxis","_calloutPoints","_createSet","_colors","_opacity","_data","_chart","_margins","_xAxisRectScale","_isMultiStackChart","cartesianChartRef","useRef","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","hoverXValue","setHoverXValue","YValueHover","setYValueHover","lineXValue","setLineXValue","displayOfLine","setDisplayOfLine","isCircleClicked","setIsCircleClicked","nearestCircleToHighlight","setNearestCircleToHighlight","activePoint","setActivePoint","dataPointCalloutProps","setDataPointCalloutProps","stackCalloutProps","setStackCalloutProps","xAxisCalloutAccessibilityData","setXAxisCalloutAccessibilityData","clickPosition","setClickPosition","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","useImperativeHandle","componentRef","chartContainer","classes","_getMargins","margins","_onRectMouseMove","mouseEvent","persist","data","lineChartData","_updatePosition","clientX","clientY","xOffset","invert","document","getElementById","i","d0","d1","pointToHighlight","index","axisType","length","x0","point0","point1","DateAxis","Date","getTime","Math","abs","NumericAxis","xAxisCalloutData","formattedDate","useUTC","modifiedXVal","found","element","_nearestCircleToHighlight","filteredValues","_getFilteredLegendValues","values","_onRectMouseOut","newX","newY","threshold","distance","sqrt","pow","_handleChartMouseLeave","_getDataPoints","keys","dataSet","renderPoints","maxOfYVal","_shouldFillToZeroY","forEach","key","currentLayer","push","xVal","dataValues","dp","layer","renderData","endValue","_createDataSet","points","enablePerfOptimization","allChartPoints","colors","opacity","calloutPoints","singleChartPoint","color","mapOfXvalToListOfDataPoints","dataPoint","xValue","toLocaleString","Object","value","singleDataset","singleDataPoint","keysLength","keyVal","tempArr","valToCheck","filteredChartPoints","filter","point","val","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getGraphData","xAxis","yAxis","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","_drawGraph","_onLegendHover","legend","_onLegendLeave","_getLegendData","actions","singleChartData","checkSimilarLegends","leg","title","hoverAction","onMouseOutAction","legends","enabledWrapLines","enabledLegendsWrapLines","onChange","_onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","_onDataPointClick","func","_getOpacity","_legendHighlighted","_noLegendHighlighted","_getLineOpacity","_updateCircleFillColor","xDataPoint","lineColor","circleId","fillColor","colorNeutralBackground1","xScale","yScalePrimary","_addDefaultColors","pointOptions","pointLineOptions","graph","singleStackedData","yScale","useSecondaryYScale","curveFactory","lineOptions","curve","y0","y1","layerOpacity","Fragment","enableGradient","defs","linearGradient","id","x1","x2","y2","stop","offset","stopColor","path","fill","strokeWidth","stroke","onMouseMove","onMouseOut","onMouseOver","strokeDasharray","strokeDashoffset","strokeLinecap","circle","cx","cy","r","fillOpacity","optimizeLargeData","tabIndex","role","circleRadius","Number","g","clipPath","aria-label","map","singlePoint","pointIndex","onClick","onDataPointClick","onFocus","_handleFocus","onBlur","_handleBlur","_getCircleRadius","_getAriaLabel","visibility","showXAxisLablesTooltip","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","_getHighlightedLegend","includes","item","lineIndex","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","mode","secondaryYScaleOptions","some","isXAxisDateType","tickParams","tickValues","tickFormat","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCalloutForStack","chartType","legendBars","xAxisType","getGraphData","getmargins","onChartMouseLeave","enableFirstRenderOptimization","children","ticks","width1","rectHeight","top","rect","width","height","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -195,7 +195,7 @@ import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabs
195
195
  yMaxValue: props.yMaxValue || 0,
196
196
  tickPadding: 10,
197
197
  maxOfYVal: props.maxOfYVal,
198
- yMinMaxValues: getMinMaxOfYAxis(points, chartType, props.yAxisType),
198
+ yMinMaxValues: props.getMinMaxOfYAxis ? props.getMinMaxOfYAxis(points, props.yAxisType) : getMinMaxOfYAxis(points, chartType, props.yAxisType),
199
199
  // please note these padding default values must be consistent in here
200
200
  // and the parent chart(HBWA/Vertical etc..) for more details refer example
201
201
  // http://using-d3js.com/04_07_ordinal_scales.html
@@ -249,18 +249,23 @@ import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabs
249
249
  * 2. To draw the graph.
250
250
  * For area/line chart using same scales. For other charts, creating their own scales to draw the graph.
251
251
  */ // eslint-disable-next-line @typescript-eslint/no-explicit-any
252
- let yScale;
252
+ let yScalePrimary;
253
253
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
254
254
  let yScaleSecondary;
255
255
  const axisData = {
256
256
  yAxisDomainValues: []
257
257
  };
258
258
  if (props.yAxisType && props.yAxisType === YAxisType.StringAxis) {
259
- yScale = createStringYAxis(YAxisParams, props.stringDatasetForYAxisDomain, _useRtl, props.chartType, props.barwidth, culture);
259
+ yScalePrimary = createStringYAxis(YAxisParams, props.stringDatasetForYAxisDomain, _useRtl, props.chartType, props.barwidth, culture);
260
260
  } else {
261
+ // TODO: Since the scale domain values are now computed independently for both the primary and
262
+ // secondary y-axes, the yMinValue and yMaxValue props are no longer necessary for accurately
263
+ // rendering the secondary y-axis. Therefore, rather than checking the secondaryYScaleOptions
264
+ // prop to determine whether to create a secondary y-axis, it's more appropriate to check if any
265
+ // data points are assigned to use the secondary y-scale.
261
266
  if (props === null || props === void 0 ? void 0 : props.secondaryYScaleOptions) {
262
- var _props_secondaryYScaleOptions, _props_secondaryYScaleOptions1, _props_secondaryYScaleOptions2;
263
- var _props_secondaryYScaleOptions_yMaxValue, _props_secondaryYScaleOptions_yMaxValue1;
267
+ var _props_secondaryYScaleOptions, _props_secondaryYScaleOptions1;
268
+ var _props_secondaryYScaleOptions_yMaxValue;
264
269
  const YAxisParamsSecondary = {
265
270
  margins: margins,
266
271
  containerWidth: containerWidth,
@@ -271,30 +276,29 @@ import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabs
271
276
  yMinValue: ((_props_secondaryYScaleOptions = props.secondaryYScaleOptions) === null || _props_secondaryYScaleOptions === void 0 ? void 0 : _props_secondaryYScaleOptions.yMinValue) || 0,
272
277
  yMaxValue: (_props_secondaryYScaleOptions_yMaxValue = (_props_secondaryYScaleOptions1 = props.secondaryYScaleOptions) === null || _props_secondaryYScaleOptions1 === void 0 ? void 0 : _props_secondaryYScaleOptions1.yMaxValue) !== null && _props_secondaryYScaleOptions_yMaxValue !== void 0 ? _props_secondaryYScaleOptions_yMaxValue : 100,
273
278
  tickPadding: 10,
274
- maxOfYVal: (_props_secondaryYScaleOptions_yMaxValue1 = (_props_secondaryYScaleOptions2 = props.secondaryYScaleOptions) === null || _props_secondaryYScaleOptions2 === void 0 ? void 0 : _props_secondaryYScaleOptions2.yMaxValue) !== null && _props_secondaryYScaleOptions_yMaxValue1 !== void 0 ? _props_secondaryYScaleOptions_yMaxValue1 : 100,
275
- yMinMaxValues: getMinMaxOfYAxis(points, chartType),
279
+ yMinMaxValues: props.getMinMaxOfYAxis ? props.getMinMaxOfYAxis(points, props.yAxisType, true) : getMinMaxOfYAxis(points, props.chartType, props.yAxisType, true),
276
280
  yAxisPadding: props.yAxisPadding
277
281
  };
278
282
  yScaleSecondary = createYAxis(YAxisParamsSecondary, _useRtl, axisData, chartType, props.barwidth, isIntegralDataset, true, props.roundedTicks);
279
283
  }
280
- yScale = createYAxis(YAxisParams, _useRtl, axisData, chartType, props.barwidth, isIntegralDataset, false, props.roundedTicks);
284
+ yScalePrimary = createYAxis(YAxisParams, _useRtl, axisData, chartType, props.barwidth, isIntegralDataset, false, props.roundedTicks);
281
285
  }
282
286
  /*
283
287
  * To create y axis tick values by if specified
284
288
  truncating the rest of the text and showing elipsis
285
289
  or showing the whole string,
286
- * */ chartTypesToCheck.includes(props.chartType) && yScale && createYAxisLabels(yAxisElement.current, yScale, props.noOfCharsToTruncate || 4, props.showYAxisLablesTooltip || false, startFromX, _useRtl);
290
+ * */ chartTypesToCheck.includes(props.chartType) && yScalePrimary && createYAxisLabels(yAxisElement.current, yScalePrimary, props.noOfCharsToTruncate || 4, props.showYAxisLablesTooltip || false, startFromX, _useRtl);
287
291
  // Call back to the chart.
288
292
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
289
- const _getData = (xScale, yScale)=>{
290
- props.getGraphData && props.getGraphData(xScale, yScale, containerHeight - removalValueForTextTuncate, containerWidth, xAxisElement.current, yAxisElement.current);
293
+ const _getData = (xScale, yScalePrimary, yScaleSecondary)=>{
294
+ props.getGraphData && props.getGraphData(xScale, yScalePrimary, containerHeight - removalValueForTextTuncate, containerWidth, xAxisElement.current, yAxisElement.current, yScaleSecondary);
291
295
  };
292
296
  props.getAxisData && props.getAxisData(axisData);
293
297
  // Callback function for chart, returns axis
294
- _getData(xScale, yScale);
298
+ _getData(xScale, yScalePrimary, yScaleSecondary);
295
299
  children = props.children({
296
300
  xScale,
297
- yScale,
301
+ yScalePrimary,
298
302
  yScaleSecondary,
299
303
  containerHeight,
300
304
  containerWidth