@fluentui/react-charts 0.0.0-nightly-20250627-0405.1 → 0.0.0-nightly-20250630-0407.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -15
- package/dist/index.d.ts +5 -0
- package/lib/components/AreaChart/AreaChart.js +3 -3
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +41 -9
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +28 -3
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +8 -3
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +3 -3
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +0 -61
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +4 -30
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +3 -3
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +13 -15
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +7 -7
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +3 -3
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/utilities/utilities.js +11 -5
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +2 -2
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +40 -8
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +45 -2
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +8 -3
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +2 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +0 -61
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +3 -53
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +2 -2
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +12 -14
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +6 -6
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +2 -2
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +16 -7
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
# Change Log - @fluentui/react-charts
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Mon, 30 Jun 2025 04:22:56 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
-
## [0.0.0-nightly-
|
|
7
|
+
## [0.0.0-nightly-20250630-0407.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v0.0.0-nightly-20250630-0407.1)
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.1.
|
|
9
|
+
Mon, 30 Jun 2025 04:22:56 GMT
|
|
10
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.1.5..@fluentui/react-charts_v0.0.0-nightly-20250630-0407.1)
|
|
11
11
|
|
|
12
12
|
### Changes
|
|
13
13
|
|
|
14
14
|
- Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/not available) by fluentui-internal@service.microsoft.com)
|
|
15
|
-
- Bump @fluentui/react-button to v0.0.0-nightly-
|
|
16
|
-
- Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-
|
|
17
|
-
- Bump @fluentui/react-overflow to v0.0.0-nightly-
|
|
18
|
-
- Bump @fluentui/react-popover to v0.0.0-nightly-
|
|
19
|
-
- Bump @fluentui/react-shared-contexts to v0.0.0-nightly-
|
|
20
|
-
- Bump @fluentui/react-tabster to v0.0.0-nightly-
|
|
21
|
-
- Bump @fluentui/react-theme to v0.0.0-nightly-
|
|
22
|
-
- Bump @fluentui/react-tooltip to v0.0.0-nightly-
|
|
23
|
-
- Bump @fluentui/react-utilities to v0.0.0-nightly-
|
|
24
|
-
- Bump @fluentui/react-conformance to v0.0.0-nightly-
|
|
25
|
-
- Bump @fluentui/react-conformance-griffel to v0.0.0-nightly-
|
|
15
|
+
- Bump @fluentui/react-button to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
16
|
+
- Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
17
|
+
- Bump @fluentui/react-overflow to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
18
|
+
- Bump @fluentui/react-popover to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
19
|
+
- Bump @fluentui/react-shared-contexts to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
20
|
+
- Bump @fluentui/react-tabster to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
21
|
+
- Bump @fluentui/react-theme to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
22
|
+
- Bump @fluentui/react-tooltip to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
23
|
+
- Bump @fluentui/react-utilities to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
24
|
+
- Bump @fluentui/react-conformance to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
25
|
+
- Bump @fluentui/react-conformance-griffel to v0.0.0-nightly-20250630-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/82aeb392031c577e5aebacaef710bc3ee810503b) by beachball)
|
|
26
|
+
|
|
27
|
+
## [9.1.5](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.1.5)
|
|
28
|
+
|
|
29
|
+
Fri, 27 Jun 2025 13:39:41 GMT
|
|
30
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.1.4..@fluentui/react-charts_v9.1.5)
|
|
31
|
+
|
|
32
|
+
### Patches
|
|
33
|
+
|
|
34
|
+
- Bump @fluentui/react-button to v9.5.3 ([PR #34734](https://github.com/microsoft/fluentui/pull/34734) by beachball)
|
|
35
|
+
- Bump @fluentui/react-overflow to v9.4.5 ([PR #34734](https://github.com/microsoft/fluentui/pull/34734) by beachball)
|
|
36
|
+
- Bump @fluentui/react-popover to v9.11.5 ([PR #34734](https://github.com/microsoft/fluentui/pull/34734) by beachball)
|
|
37
|
+
- Bump @fluentui/react-tabster to v9.25.3 ([PR #34734](https://github.com/microsoft/fluentui/pull/34734) by beachball)
|
|
38
|
+
- Bump @fluentui/react-tooltip to v9.7.5 ([PR #34734](https://github.com/microsoft/fluentui/pull/34734) by beachball)
|
|
26
39
|
|
|
27
40
|
## [9.1.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.1.4)
|
|
28
41
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1517,6 +1517,11 @@ export declare interface HeatMapChartProps extends CartesianChartProps {
|
|
|
1517
1517
|
* @default alphabetical
|
|
1518
1518
|
* The prop used to decide order of string axis labels */
|
|
1519
1519
|
sortOrder?: 'none' | 'alphabetical';
|
|
1520
|
+
/**
|
|
1521
|
+
*@default false
|
|
1522
|
+
*Used for to elipse y axis labes and show tooltip on x axis labels
|
|
1523
|
+
*/
|
|
1524
|
+
showYAxisLablesTooltip?: boolean;
|
|
1520
1525
|
}
|
|
1521
1526
|
|
|
1522
1527
|
/**
|
|
@@ -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,
|
|
9
|
+
import { calloutData, getXAxisType, ChartTypes, XAxisTypes, getTypeOfAxis, tooltipOfAxislabels, 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
|
|
@@ -603,9 +603,9 @@ export const AreaChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
|
|
|
603
603
|
const tooltipProps = {
|
|
604
604
|
tooltipCls: classes.tooltip,
|
|
605
605
|
id: _tooltipId,
|
|
606
|
-
|
|
606
|
+
axis: xAxisElement
|
|
607
607
|
};
|
|
608
|
-
xAxisElement &&
|
|
608
|
+
xAxisElement && tooltipOfAxislabels(tooltipProps);
|
|
609
609
|
}
|
|
610
610
|
return graph;
|
|
611
611
|
}
|
|
@@ -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 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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"}
|
|
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 tooltipOfAxislabels,\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 axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(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","tooltipOfAxislabels","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","axis","_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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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useCartesianChartStyles } from './useCartesianChartStyles.styles';
|
|
3
|
-
import {
|
|
3
|
+
import { select as d3Select } from 'd3-selection';
|
|
4
|
+
import { createNumericXAxis, createStringXAxis, getDomainNRangeValues, createDateXAxis, createYAxis, createStringYAxis, getMinMaxOfYAxis, XAxisTypes, YAxisType, createWrapOfXLabels, rotateXAxisLabels, calculateLongestLabelWidth, createYAxisLabels, ChartTypes, wrapContent, useRtl, truncateString, tooltipOfAxislabels } from '../../utilities/index';
|
|
5
|
+
import { useId } from '@fluentui/react-utilities';
|
|
4
6
|
import { SVGTooltipText } from '../../utilities/SVGTooltipText';
|
|
5
7
|
import { ChartPopover } from './ChartPopover';
|
|
6
8
|
import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabster';
|
|
@@ -25,6 +27,7 @@ import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabs
|
|
|
25
27
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
28
|
let _xScale;
|
|
27
29
|
let isIntegralDataset = true;
|
|
30
|
+
let _tooltipId = useId('tooltip_');
|
|
28
31
|
const [containerWidth, setContainerWidth] = React.useState(0);
|
|
29
32
|
const [containerHeight, setContainerHeight] = React.useState(0);
|
|
30
33
|
const [isRemoveValCalculated, setIsRemoveValCalculated] = React.useState(true);
|
|
@@ -141,11 +144,17 @@ import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabs
|
|
|
141
144
|
}
|
|
142
145
|
function calculateMaxYAxisLabelLength(chartType, // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
146
|
points, className) {
|
|
147
|
+
const formatTickLabel = (str)=>{
|
|
148
|
+
if (props.showYAxisLablesTooltip) {
|
|
149
|
+
return truncateString(str, props.noOfCharsToTruncate || 4);
|
|
150
|
+
}
|
|
151
|
+
return str;
|
|
152
|
+
};
|
|
144
153
|
if (chartType === ChartTypes.HeatMapChart) {
|
|
145
154
|
var _points__data, _points_;
|
|
146
|
-
return calculateLongestLabelWidth((_points_ = points[0]) === null || _points_ === void 0 ? void 0 : (_points__data = _points_.data) === null || _points__data === void 0 ? void 0 : _points__data.map((point)=>point.y), `.${className} text`);
|
|
155
|
+
return calculateLongestLabelWidth((_points_ = points[0]) === null || _points_ === void 0 ? void 0 : (_points__data = _points_.data) === null || _points__data === void 0 ? void 0 : _points__data.map((point)=>formatTickLabel(`${point.y}`)), `.${className} text`);
|
|
147
156
|
} else {
|
|
148
|
-
return calculateLongestLabelWidth(points === null || points === void 0 ? void 0 : points.map((point)=>point.y), `.${className} text`);
|
|
157
|
+
return calculateLongestLabelWidth(points === null || points === void 0 ? void 0 : points.map((point)=>formatTickLabel(`${point.y}`)), `.${className} text`);
|
|
149
158
|
}
|
|
150
159
|
}
|
|
151
160
|
const { calloutProps, points, chartType, svgProps, culture, dateLocalizeOptions, timeFormatLocale, customDateTimeFormatter } = props;
|
|
@@ -194,7 +203,7 @@ import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabs
|
|
|
194
203
|
yAxisTickCount: props.yAxisTickCount,
|
|
195
204
|
yMinValue: props.yMinValue || 0,
|
|
196
205
|
yMaxValue: props.yMaxValue || 0,
|
|
197
|
-
tickPadding: 10,
|
|
206
|
+
tickPadding: props.showYAxisLablesTooltip ? 15 : 10,
|
|
198
207
|
maxOfYVal: props.maxOfYVal,
|
|
199
208
|
yMinMaxValues: props.getMinMaxOfYAxis ? props.getMinMaxOfYAxis(points, props.yAxisType) : getMinMaxOfYAxis(points, chartType, props.yAxisType),
|
|
200
209
|
// please note these padding default values must be consistent in here
|
|
@@ -284,11 +293,34 @@ import { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabs
|
|
|
284
293
|
}
|
|
285
294
|
yScalePrimary = createYAxis(YAxisParams, _useRtl, axisData, chartType, props.barwidth, isIntegralDataset, false, props.roundedTicks);
|
|
286
295
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
296
|
+
if (chartTypesToCheck.includes(props.chartType)) {
|
|
297
|
+
// To create y axis tick values by if specified truncating the rest of the text
|
|
298
|
+
// and showing elipsis or showing the whole string,
|
|
299
|
+
yScalePrimary && createYAxisLabels(yAxisElement.current, yScalePrimary, props.noOfCharsToTruncate || 4, props.showYAxisLablesTooltip || false, 0, _useRtl);
|
|
300
|
+
// Removing un wanted tooltip div from DOM, when prop not provided, for proper cleanup
|
|
301
|
+
// of unwanted DOM elements, to prevent flacky behaviour in tooltips , that might occur
|
|
302
|
+
// in creating tooltips when tooltips are enabled( as we try to recreate a tspan with _tooltipId)
|
|
303
|
+
if (!props.showYAxisLablesTooltip) {
|
|
304
|
+
try {
|
|
305
|
+
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
306
|
+
//eslint-disable-next-line no-empty
|
|
307
|
+
} catch (e) {}
|
|
308
|
+
}
|
|
309
|
+
// Used to display tooltip at y axis labels.
|
|
310
|
+
if (props.showYAxisLablesTooltip) {
|
|
311
|
+
const _yAxisElement = d3Select(yAxisElement.current).call(yScalePrimary);
|
|
312
|
+
try {
|
|
313
|
+
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
314
|
+
//eslint-disable-next-line no-empty
|
|
315
|
+
} catch (e) {}
|
|
316
|
+
const ytooltipProps = {
|
|
317
|
+
tooltipCls: classes.tooltip,
|
|
318
|
+
id: _tooltipId,
|
|
319
|
+
axis: _yAxisElement
|
|
320
|
+
};
|
|
321
|
+
_yAxisElement && tooltipOfAxislabels(ytooltipProps);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
292
324
|
// Call back to the chart.
|
|
293
325
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
294
326
|
const _getData = (xScale, yScalePrimary, yScaleSecondary)=>{
|