@fluentui/react-charts 0.0.0-nightly-20250717-0406.1 → 0.0.0-nightly-20250721-0406.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +28 -15
  2. package/lib/components/AreaChart/AreaChart.js +10 -2
  3. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  4. package/lib/components/DonutChart/Arc/Arc.js +5 -5
  5. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  6. package/lib/components/DonutChart/DonutChart.js +7 -1
  7. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  8. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  9. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +10 -5
  10. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  11. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +9 -3
  12. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  13. package/lib/components/LineChart/LineChart.js +11 -4
  14. package/lib/components/LineChart/LineChart.js.map +1 -1
  15. package/lib/components/ScatterChart/ScatterChart.js +8 -2
  16. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  17. package/lib/components/VerticalBarChart/VerticalBarChart.js +6 -0
  18. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  19. package/lib-commonjs/components/AreaChart/AreaChart.js +10 -2
  20. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  21. package/lib-commonjs/components/DonutChart/Arc/Arc.js +5 -5
  22. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  23. package/lib-commonjs/components/DonutChart/DonutChart.js +7 -1
  24. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  25. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  26. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +10 -5
  27. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  28. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +9 -3
  29. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  30. package/lib-commonjs/components/LineChart/LineChart.js +11 -4
  31. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  32. package/lib-commonjs/components/ScatterChart/ScatterChart.js +8 -2
  33. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  34. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +6 -0
  35. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  36. package/package.json +13 -13
@@ -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 tooltipOfAxislabels,\n getNextColor,\n getColorFromToken,\n formatDate,\n getSecureProps,\n areArraysEqual,\n getCurveFactory,\n find,\n findNumericMinMaxOfY,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfNumericForAreaChart,\n domainRangeOfDateForAreaLineVerticalBarChart,\n createStringYAxis,\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 _getDomainNRangeValues(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n function _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 createYAxis={createNumericYAxis}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={data.maxOfYVal}\n getGraphData={_getGraphData}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n getmargins={_getMargins}\n onChartMouseLeave={_handleChartMouseLeave}\n getMinMaxOfYAxis={findNumericMinMaxOfY}\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":["AreaChart","bisect","bisector","d","x","left","InterceptVisibility","React","forwardRef","props","forwardedRef","_uniqueIdForGraph","useId","_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","areArraysEqual","useImperativeHandle","componentRef","chartContainer","classes","useAreaChartStyles","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","barWidth","tickValues","domainNRangeValue","XAxisTypes","NumericAxis","domainRangeOfNumericForAreaChart","DateAxis","domainRangeOfDateForAreaLineVerticalBarChart","dStartValue","dEndValue","rStartValue","rEndValue","_getMargins","_onRectMouseMove","mouseEvent","persist","data","lineChartData","_updatePosition","clientX","clientY","xOffset","invert","pointer","document","getElementById","i","d0","d1","pointToHighlight","index","axisType","length","getTypeOfAxis","x0","point0","point1","Date","getTime","Math","abs","xAxisCalloutData","formattedDate","formatDate","useUTC","modifiedXVal","found","find","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","d3Stack","d3Max","dp","layer","renderData","findNumericMinMaxOfY","endValue","_createDataSet","enablePerfOptimization","allChartPoints","colors","opacity","calloutPoints","calloutData","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","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","onChange","_onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","_onDataPointClick","func","_getOpacity","_legendHighlighted","_noLegendHighlighted","_getLineOpacity","_updateCircleFillColor","xDataPoint","lineColor","circleId","fillColor","tokens","colorNeutralBackground1","xScale","yScalePrimary","_addDefaultColors","pointOptions","pointLineOptions","graph","singleStackedData","yScale","useSecondaryYScale","curveFactory","getCurveFactory","lineOptions","curve","d3CurveBasis","area","d3Area","y0","y1","line","d3Line","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","getSecureProps","_getCircleRadius","_getAriaLabel","visibility","showXAxisLablesTooltip","remove","e","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","axis","tooltipOfAxislabels","_getHighlightedLegend","includes","item","getNextColor","getColorFromToken","lineIndex","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","mode","secondaryYScaleOptions","some","isXAxisDateType","getXAxisType","tickParams","tickFormat","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCalloutForStack","CartesianChart","ChartTypes","legendBars","createYAxis","createNumericYAxis","getGraphData","getDomainNRangeValues","createStringYAxis","getmargins","onChartMouseLeave","getMinMaxOfYAxis","enableFirstRenderOptimization","children","ticks","width1","rectHeight","top","rect","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 createNumericYAxis,\n IDomainNRange,\n domainRangeOfNumericForAreaChart,\n domainRangeOfDateForAreaLineVerticalBarChart,\n createStringYAxis,\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 _getDomainNRangeValues(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n function _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 onFocus={event => _handleFocus(event, index, 0, `${_circleId}_${index}`)}\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={event => _handleFocus(event, 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 onFocus={event => _handleFocus(event, index, pointIndex, circleId)}\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(\n event: React.FocusEvent<SVGCircleElement, Element>,\n lineIndex: number,\n pointIndex: number,\n circleId: string,\n ) {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (event.target as SVGCircleElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n _updatePosition(cx, cy);\n\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 createYAxis={createNumericYAxis}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={data.maxOfYVal}\n getGraphData={_getGraphData}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n getmargins={_getMargins}\n onChartMouseLeave={_handleChartMouseLeave}\n getMinMaxOfYAxis={findNumericMinMaxOfY}\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":["AreaChart","bisect","bisector","d","x","left","InterceptVisibility","React","forwardRef","props","forwardedRef","_uniqueIdForGraph","useId","_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","areArraysEqual","useImperativeHandle","componentRef","chartContainer","classes","useAreaChartStyles","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","barWidth","tickValues","domainNRangeValue","XAxisTypes","NumericAxis","domainRangeOfNumericForAreaChart","DateAxis","domainRangeOfDateForAreaLineVerticalBarChart","dStartValue","dEndValue","rStartValue","rEndValue","_getMargins","_onRectMouseMove","mouseEvent","persist","data","lineChartData","_updatePosition","clientX","clientY","xOffset","invert","pointer","document","getElementById","i","d0","d1","pointToHighlight","index","axisType","length","getTypeOfAxis","x0","point0","point1","Date","getTime","Math","abs","xAxisCalloutData","formattedDate","formatDate","useUTC","modifiedXVal","found","find","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","d3Stack","d3Max","dp","layer","renderData","findNumericMinMaxOfY","endValue","_createDataSet","enablePerfOptimization","allChartPoints","colors","opacity","calloutPoints","calloutData","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","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","onChange","_onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","_onDataPointClick","func","_getOpacity","_legendHighlighted","_noLegendHighlighted","_getLineOpacity","_updateCircleFillColor","xDataPoint","lineColor","circleId","fillColor","tokens","colorNeutralBackground1","xScale","yScalePrimary","_addDefaultColors","pointOptions","pointLineOptions","graph","singleStackedData","yScale","useSecondaryYScale","curveFactory","getCurveFactory","lineOptions","curve","d3CurveBasis","area","d3Area","y0","y1","line","d3Line","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","onFocus","_handleFocus","optimizeLargeData","tabIndex","role","circleRadius","Number","g","clipPath","aria-label","map","singlePoint","pointIndex","onClick","onDataPointClick","onBlur","_handleBlur","getSecureProps","_getCircleRadius","_getAriaLabel","visibility","showXAxisLablesTooltip","remove","e","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","axis","tooltipOfAxislabels","_getHighlightedLegend","includes","item","getNextColor","getColorFromToken","lineIndex","targetRect","target","getBoundingClientRect","top","height","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","mode","secondaryYScaleOptions","some","isXAxisDateType","getXAxisType","tickParams","tickFormat","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCalloutForStack","CartesianChart","ChartTypes","legendBars","createYAxis","createNumericYAxis","getGraphData","getDomainNRangeValues","createStringYAxis","getmargins","onChartMouseLeave","getMinMaxOfYAxis","enableFirstRenderOptimization","children","ticks","width1","rectHeight","rect","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -25,8 +25,8 @@ const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
25
25
  }, [
26
26
  props
27
27
  ]);
28
- function _onFocus(data, id) {
29
- props.onFocusCallback(data, id, currentRef.current);
28
+ function _onFocus(data, id, event) {
29
+ props.onFocusCallback(data, id, event, currentRef.current);
30
30
  }
31
31
  function _hoverOn(data, mouseEvent) {
32
32
  mouseEvent.persist();
@@ -108,10 +108,10 @@ const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
108
108
  fill: props.color,
109
109
  cursor: href ? 'pointer' : 'default'
110
110
  },
111
- onFocus: _onFocus.bind(void 0, props.data.data, id),
111
+ onFocus: (event)=>_onFocus(props.data.data, id, event),
112
112
  "data-is-focusable": props.activeArc === props.data.data.legend || props.activeArc === '',
113
- onMouseOver: _hoverOn.bind(void 0, props.data.data),
114
- onMouseMove: _hoverOn.bind(void 0, props.data.data),
113
+ onMouseOver: (event)=>_hoverOn(props.data.data, event),
114
+ onMouseMove: (event)=>_hoverOn(props.data.data, event),
115
115
  onMouseLeave: _hoverOff,
116
116
  tabIndex: _shouldHighlightArc(props.data.data.legend) ? 0 : undefined,
117
117
  onBlur: _onBlur,
@@ -1 +1 @@
1
- {"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatScientificLimitWidth, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string): void {\n props.onFocusCallback!(data, id, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _shouldHighlightArc(legend?: string): boolean {\n const { activeArc } = props;\n // If no activeArc is provided, highlight all arcs. Otherwise, only highlight the arcs that are active.\n return !activeArc || activeArc.length === 0 || legend === undefined || activeArc.includes(legend);\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatScientificLimitWidth(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id =\n props.uniqText! +\n (typeof props.data!.data.legend === 'string' ? props.data!.data.legend.replace(/\\s+/g, '') : '') +\n props.data!.data.data;\n const opacity: number = props.activeArc === props.data!.data.legend || props.activeArc === '' ? 1 : 0.1;\n const cornerRadius = props.roundCorners ? 3 : 0;\n return (\n <g ref={currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n // TODO innerradius and outerradius were absent\n <path\n id={id + 'focusRing'}\n d={\n arc.cornerRadius(cornerRadius)({\n ...props.data!,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n })!\n }\n className={classes.focusRing}\n />\n )}\n <path\n // TODO innerradius and outerradius were absent\n id={id}\n d={\n arc.cornerRadius(cornerRadius)({\n ...props.data!,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n })!\n }\n className={classes.root}\n style={{ fill: props.color, cursor: href ? 'pointer' : 'default' }}\n onFocus={_onFocus.bind(this, props.data!.data, id)}\n data-is-focusable={props.activeArc === props.data!.data.legend || props.activeArc === ''}\n onMouseOver={_hoverOn.bind(this, props.data!.data)}\n onMouseMove={_hoverOn.bind(this, props.data!.data)}\n onMouseLeave={_hoverOff}\n tabIndex={_shouldHighlightArc(props.data!.data.legend!) ? 0 : undefined}\n onBlur={_onBlur}\n opacity={opacity}\n onClick={props.data?.data.onClick}\n aria-label={_getAriaLabel()}\n role=\"img\"\n />\n {_renderArcLabel(classes.arcLabel)}\n </g>\n );\n },\n);\nArc.displayName = 'Arc';\n"],"names":["Arc","React","forwardRef","props","forwardedRef","arc","d3Arc","currentRef","createRef","_isRTL","useRtl","classes","useArcStyles","useEffect","_updateChart","_onFocus","data","id","onFocusCallback","current","_hoverOn","mouseEvent","persist","hoverOnCallback","_hoverOff","hoverLeaveCallback","_onBlur","onBlurCallback","_getAriaLabel","point","legend","xAxisCalloutData","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_shouldHighlightArc","activeArc","length","undefined","includes","_renderArcLabel","className","innerRadius","outerRadius","showLabelsInPercent","totalValue","hideLabels","Math","abs","endAngle","startAngle","PI","base","perp","centroid","hyp","sqrt","labelRadius","max","angle","arcValue","value","createElement","text","x","y","textAnchor","dominantBaseline","aria-hidden","d3Format","formatScientificLimitWidth","newProps","href","focusedArcId","uniqText","replace","opacity","cornerRadius","roundCorners","g","ref","path","d","focusRing","root","style","fill","color","cursor","onFocus","bind","data-is-focusable","onMouseOver","onMouseMove","onMouseLeave","tabIndex","onBlur","onClick","aria-label","role","arcLabel","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAaaA;;;eAAAA;;;;iEAbU;yBACM;oCACA;0BAGM;uBACgB;AAO5C,MAAMA,MAAAA,WAAAA,GAAyCC,OAAMC,UAAU,CACpE,CAACC,OAAOC;QA4HSD;IA3Hf,MAAME,MAAMC,IAAAA,YAAAA;IACZ,MAAMC,aAAAA,WAAAA,GAAaN,OAAMO,SAAS;IAClC,MAAMC,SAAkBC,IAAAA,aAAAA;IACxB,MAAMC,UAAUC,IAAAA,gCAAAA,EAAaT;IAE7BF,OAAMY,SAAS,CAAC;QACdC,aAAaX;IACf,GAAG;QAACA;KAAM;IAEV,SAASY,SAASC,IAAoB,EAAEC,EAAU;QAChDd,MAAMe,eAAe,CAAEF,MAAMC,IAAIV,WAAWY,OAAO;IACrD;IAEA,SAASC,SAASJ,IAAoB,EAAEK,UAA4C;QAClFA,WAAWC,OAAO;QAClBnB,MAAMoB,eAAe,CAAEP,MAAMK;IAC/B;IAEA,SAASG;QACPrB,MAAMsB,kBAAkB;IAC1B;IAEA,SAASC;QACPvB,MAAMwB,cAAc;IACtB;IAEA,SAASC;YAIAC;QAHP,MAAMA,QAAQ1B,MAAMa,IAAI,CAAEA,IAAI;QAC9B,MAAMc,SAASD,MAAME,gBAAgB,IAAIF,MAAMC,MAAM;QACrD,MAAME,SAASH,MAAMI,gBAAgB,IAAIJ,MAAMb,IAAI,IAAI;QACvD,OAAOa,CAAAA,CAAAA,kCAAAA,MAAMK,wBAAwB,AAAxBA,MAAwB,QAA9BL,oCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gCAAgCM,SAAS,AAATA,KAAa,AAACL,CAAAA,SAAS,CAAC,EAAEA,OAAO,EAAE,CAAC,GAAG,EAAA,IAAM,CAAC,EAAEE,OAAO,CAAC,CAAC;IAClG;IAEA,SAASI,oBAAoBN,MAAe;QAC1C,MAAM,EAAEO,SAAS,EAAE,GAAGlC;QACtB,uGAAuG;QACvG,OAAO,CAACkC,aAAaA,UAAUC,MAAM,KAAK,KAAKR,WAAWS,aAAaF,UAAUG,QAAQ,CAACV;IAC5F;IAEA,SAASW,gBAAgBC,SAAiB;QACxC,MAAM,EAAE1B,IAAI,EAAE2B,WAAW,EAAEC,WAAW,EAAEC,mBAAmB,EAAEC,UAAU,EAAEC,UAAU,EAAEV,SAAS,EAAE,GAAGlC;QAEnG,IACE4C,cACAC,KAAKC,GAAG,CAACjC,KAAMkC,QAAQ,GAAGlC,KAAMmC,UAAU,IAAIH,KAAKI,EAAE,GAAG,MACvDf,cAAcrB,KAAMA,IAAI,CAACc,MAAM,IAAIO,cAAc,IAClD;YACA,OAAO;QACT;QAEA,MAAM,CAACgB,MAAMC,KAAK,GAAGjD,IAAIkD,QAAQ,CAAC;YAAE,GAAGvC,IAAI;YAAG2B;YAAaC;QAAY;QACvE,MAAMY,MAAMR,KAAKS,IAAI,CAACJ,OAAOA,OAAOC,OAAOA;QAC3C,MAAMI,cAAcV,KAAKW,GAAG,CAAChB,aAAcC,eAAgB;QAC3D,MAAMgB,QAAQ,AAAC5C,CAAAA,KAAMmC,UAAU,GAAGnC,KAAMkC,QAAQ,AAARA,IAAY;QACpD,MAAMW,WAAW7C,KAAM8C,KAAK;QAE5B,OAAA,WAAA,GACE7D,OAAA8D,aAAA,CAACC,QAAAA;YACCC,GAAG,AAACT,CAAAA,QAAQ,IAAI,IAAIH,OAAOG,GAAAA,IAAOE;YAClCQ,GAAG,AAACV,CAAAA,QAAQ,IAAI,IAAIF,OAAOE,GAAAA,IAAOE;YAClCS,YAAYP,QAAQZ,KAAKI,EAAE,KAAK3C,SAAS,QAAQ;YACjD2D,kBAAkBR,QAAQZ,KAAKI,EAAE,GAAG,KAAKQ,QAAQ,IAAKZ,KAAKI,EAAE,GAAI,IAAI,YAAY;YACjFV,WAAWA;YACX2B,eAAa;WAEZxB,sBACGyB,IAAAA,gBAAAA,EAAS,OAAOxB,eAAgB,IAAI,IAAIe,WAAWf,cACnDyB,IAAAA,iCAAAA,EAA2BV;IAGrC;IAEA,SAAS/C,aAAa0D,QAAkB;QACtC,IAAIA,SAASnE,GAAG,IAAImE,SAAS7B,WAAW,IAAI6B,SAAS5B,WAAW,EAAE;YAChE4B,SAASnE,GAAG,CAACsC,WAAW,CAAC6B,SAAS7B,WAAW;YAC7C6B,SAASnE,GAAG,CAACuC,WAAW,CAAC4B,SAAS5B,WAAW;QAC/C;IACF;IAEA,MAAM,EAAE6B,IAAI,EAAEC,YAAY,EAAE,GAAGvE;IAC/B,mCAAmC;IACnC,MAAMc,KACJd,MAAMwE,QAAQ,GACb,CAAA,OAAOxE,MAAMa,IAAI,CAAEA,IAAI,CAACc,MAAM,KAAK,WAAW3B,MAAMa,IAAI,CAAEA,IAAI,CAACc,MAAM,CAAC8C,OAAO,CAAC,QAAQ,MAAM,EAAA,IAC7FzE,MAAMa,IAAI,CAAEA,IAAI,CAACA,IAAI;IACvB,MAAM6D,UAAkB1E,MAAMkC,SAAS,KAAKlC,MAAMa,IAAI,CAAEA,IAAI,CAACc,MAAM,IAAI3B,MAAMkC,SAAS,KAAK,KAAK,IAAI;IACpG,MAAMyC,eAAe3E,MAAM4E,YAAY,GAAG,IAAI;IAC9C,OAAA,WAAA,GACE9E,OAAA8D,aAAA,CAACiB,KAAAA;QAAEC,KAAK1E;OACL,CAAC,CAACmE,gBAAgBA,iBAAiBzD,MAClC,+CAA+C;kBAC/ChB,OAAA8D,aAAA,CAACmB,QAAAA;QACCjE,IAAIA,KAAK;QACTkE,GACE9E,IAAIyE,YAAY,CAACA,cAAc;YAC7B,GAAG3E,MAAMa,IAAI;YACb2B,aAAaxC,MAAMwC,WAAW;YAC9BC,aAAazC,MAAMyC,WAAW;QAChC;QAEFF,WAAW/B,QAAQyE,SAAS;sBAGhCnF,OAAA8D,aAAA,CAACmB,QAAAA;QACC,+CAA+C;QAC/CjE,IAAIA;QACJkE,GACE9E,IAAIyE,YAAY,CAACA,cAAc;YAC7B,GAAG3E,MAAMa,IAAI;YACb2B,aAAaxC,MAAMwC,WAAW;YAC9BC,aAAazC,MAAMyC,WAAW;QAChC;QAEFF,WAAW/B,QAAQ0E,IAAI;QACvBC,OAAO;YAAEC,MAAMpF,MAAMqF,KAAK;YAAEC,QAAQhB,OAAO,YAAY;QAAU;QACjEiB,SAAS3E,SAAS4E,IAAI,CAAC,QAAMxF,MAAMa,IAAI,CAAEA,IAAI,EAAEC;QAC/C2E,qBAAmBzF,MAAMkC,SAAS,KAAKlC,MAAMa,IAAI,CAAEA,IAAI,CAACc,MAAM,IAAI3B,MAAMkC,SAAS,KAAK;QACtFwD,aAAazE,SAASuE,IAAI,CAAC,QAAMxF,MAAMa,IAAI,CAAEA,IAAI;QACjD8E,aAAa1E,SAASuE,IAAI,CAAC,QAAMxF,MAAMa,IAAI,CAAEA,IAAI;QACjD+E,cAAcvE;QACdwE,UAAU5D,oBAAoBjC,MAAMa,IAAI,CAAEA,IAAI,CAACc,MAAM,IAAK,IAAIS;QAC9D0D,QAAQvE;QACRmD,SAASA;QACTqB,SAAO,AAAE/F,CAAAA,cAAAA,MAAMa,IAAI,AAAJA,MAAI,QAAVb,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAYa,IAAI,CAACkF,OAAO;QACjCC,cAAYvE;QACZwE,MAAK;QAEN3D,gBAAgB9B,QAAQ0F,QAAQ;AAGvC;AAEFrG,IAAIsG,WAAW,GAAG"}
1
+ {"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatScientificLimitWidth, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string, event: React.FocusEvent<SVGPathElement, Element>): void {\n props.onFocusCallback!(data, id, event, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _shouldHighlightArc(legend?: string): boolean {\n const { activeArc } = props;\n // If no activeArc is provided, highlight all arcs. Otherwise, only highlight the arcs that are active.\n return !activeArc || activeArc.length === 0 || legend === undefined || activeArc.includes(legend);\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatScientificLimitWidth(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id =\n props.uniqText! +\n (typeof props.data!.data.legend === 'string' ? props.data!.data.legend.replace(/\\s+/g, '') : '') +\n props.data!.data.data;\n const opacity: number = props.activeArc === props.data!.data.legend || props.activeArc === '' ? 1 : 0.1;\n const cornerRadius = props.roundCorners ? 3 : 0;\n return (\n <g ref={currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n // TODO innerradius and outerradius were absent\n <path\n id={id + 'focusRing'}\n d={\n arc.cornerRadius(cornerRadius)({\n ...props.data!,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n })!\n }\n className={classes.focusRing}\n />\n )}\n <path\n // TODO innerradius and outerradius were absent\n id={id}\n d={\n arc.cornerRadius(cornerRadius)({\n ...props.data!,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n })!\n }\n className={classes.root}\n style={{ fill: props.color, cursor: href ? 'pointer' : 'default' }}\n onFocus={event => _onFocus(props.data!.data, id, event)}\n data-is-focusable={props.activeArc === props.data!.data.legend || props.activeArc === ''}\n onMouseOver={event => _hoverOn(props.data!.data, event)}\n onMouseMove={event => _hoverOn(props.data!.data, event)}\n onMouseLeave={_hoverOff}\n tabIndex={_shouldHighlightArc(props.data!.data.legend!) ? 0 : undefined}\n onBlur={_onBlur}\n opacity={opacity}\n onClick={props.data?.data.onClick}\n aria-label={_getAriaLabel()}\n role=\"img\"\n />\n {_renderArcLabel(classes.arcLabel)}\n </g>\n );\n },\n);\nArc.displayName = 'Arc';\n"],"names":["Arc","React","forwardRef","props","forwardedRef","arc","d3Arc","currentRef","createRef","_isRTL","useRtl","classes","useArcStyles","useEffect","_updateChart","_onFocus","data","id","event","onFocusCallback","current","_hoverOn","mouseEvent","persist","hoverOnCallback","_hoverOff","hoverLeaveCallback","_onBlur","onBlurCallback","_getAriaLabel","point","legend","xAxisCalloutData","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_shouldHighlightArc","activeArc","length","undefined","includes","_renderArcLabel","className","innerRadius","outerRadius","showLabelsInPercent","totalValue","hideLabels","Math","abs","endAngle","startAngle","PI","base","perp","centroid","hyp","sqrt","labelRadius","max","angle","arcValue","value","createElement","text","x","y","textAnchor","dominantBaseline","aria-hidden","d3Format","formatScientificLimitWidth","newProps","href","focusedArcId","uniqText","replace","opacity","cornerRadius","roundCorners","g","ref","path","d","focusRing","root","style","fill","color","cursor","onFocus","data-is-focusable","onMouseOver","onMouseMove","onMouseLeave","tabIndex","onBlur","onClick","aria-label","role","arcLabel","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -106,7 +106,13 @@ const DonutChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
106
106
  });
107
107
  return legends;
108
108
  }
109
- function _focusCallback(data, id, element) {
109
+ function _focusCallback(data, id, e) {
110
+ let cx = 0;
111
+ let cy = 0;
112
+ const targetRect = e.target.getBoundingClientRect();
113
+ cx = targetRect.left + targetRect.width / 2;
114
+ cy = targetRect.top + targetRect.height / 2;
115
+ updatePosition(cx, cy);
110
116
  setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);
111
117
  setValue(data.data.toString());
112
118
  setLegend(data.legend);
@@ -1 +1 @@
1
- {"version":3,"sources":["DonutChart.tsx"],"sourcesContent":["/* eslint-disable react/jsx-no-bind */\nimport * as React from 'react';\nimport { Pie } from './Pie/index';\nimport { DonutChartProps } from './DonutChart.types';\nimport { useDonutChartStyles } from './useDonutChartStyles.styles';\nimport { ChartDataPoint } from '../../DonutChart';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { getColorFromToken, getNextColor } from '../../utilities/index';\nimport { Legend, Legends } from '../../index';\nimport { useId } from '@fluentui/react-utilities';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\n\nconst MIN_LEGEND_CONTAINER_HEIGHT = 40;\n\n// Create a DonutChart variant which uses these default styles and this styled subcomponent.\n/**\n * Donutchart component.\n * {@docCategory DonutChart}\n */\nexport const DonutChart: React.FunctionComponent<DonutChartProps> = React.forwardRef<HTMLDivElement, DonutChartProps>(\n (props, forwardedRef) => {\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\n const _uniqText: string = useId('_Pie_');\n /* eslint-disable @typescript-eslint/no-explicit-any */\n let _calloutAnchorPoint: ChartDataPoint | null;\n let _emptyChartId: string | null;\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const prevSize = React.useRef<{ width?: number; height?: number }>({});\n\n const [value, setValue] = React.useState<string | undefined>('');\n const [legend, setLegend] = React.useState<string | undefined>('');\n const [_width, setWidth] = React.useState<number | undefined>(props.width || 200);\n const [_height, setHeight] = React.useState<number | undefined>(props.height || 200);\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [color, setColor] = React.useState<string | undefined>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [focusedArcId, setFocusedArcId] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<ChartDataPoint | undefined>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n\n React.useEffect(() => {\n _fitParentContainer();\n }, []);\n\n React.useEffect(() => {\n if (prevSize.current.height !== props.height || prevSize.current.width !== props.width) {\n _fitParentContainer();\n }\n prevSize.current.height = props.height;\n prevSize.current.width = props.width;\n }, [props.width, props.height]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n }),\n [],\n );\n\n function _elevateToMinimums(data: ChartDataPoint[]) {\n let sumOfData = 0;\n const minPercent = 0.01;\n const elevatedData: ChartDataPoint[] = [];\n data.forEach(item => {\n sumOfData += item.data!;\n });\n data.forEach(item => {\n elevatedData.push(\n minPercent * sumOfData > item.data! && item.data! > 0\n ? {\n ...item,\n data: minPercent * sumOfData,\n yAxisCalloutData:\n item.yAxisCalloutData === undefined ? item.data!.toLocaleString() : item.yAxisCalloutData,\n }\n : item,\n );\n });\n return elevatedData;\n }\n function _createLegends(chartData: ChartDataPoint[]): JSX.Element {\n const legendDataItems = chartData.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n action: () => {\n if (selectedLegend === point.legend) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(point.legend!);\n }\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n };\n return legend;\n });\n const legends = (\n <Legends\n legends={legendDataItems}\n centerLegends\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n />\n );\n return legends;\n }\n\n function _focusCallback(data: ChartDataPoint, id: string, element: SVGPathElement): void {\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setFocusedArcId(id);\n setDataPointCalloutProps(data);\n }\n\n function _hoverCallback(data: ChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n if (_calloutAnchorPoint !== data) {\n _calloutAnchorPoint = data;\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setDataPointCalloutProps(data);\n updatePosition(e.clientX, e.clientY);\n }\n }\n function _onBlur(): void {\n setFocusedArcId('');\n }\n\n function _hoverLeave(): void {\n /**/\n }\n\n function _handleChartMouseLeave() {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n }\n\n function _valueInsideDonut(valueInsideDonut: string | number | undefined, data: ChartDataPoint[]) {\n const highlightedLegend = _getHighlightedLegend();\n if (valueInsideDonut !== undefined && (highlightedLegend !== '' || isPopoverOpen)) {\n let legendValue = valueInsideDonut;\n data!.map((point: ChartDataPoint, index: number) => {\n if (point.legend === highlightedLegend || (isPopoverOpen && point.legend === legend)) {\n legendValue = point.yAxisCalloutData ? point.yAxisCalloutData : point.data!;\n }\n return;\n });\n return legendValue;\n } else {\n return valueInsideDonut;\n }\n }\n\n function _toLocaleString(data: string | number | undefined) {\n const localeString = formatToLocaleString(data, props.culture);\n if (!localeString) {\n return data;\n }\n return localeString?.toString();\n }\n\n /**\n * This function returns\n * the selected legend if there is one\n * or the hovered legend if none of the legends is selected.\n * Note: This won't work in case of multiple legends selection.\n */\n function _getHighlightedLegend() {\n return selectedLegend || activeLegend;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.chartData &&\n props.data.chartData!.filter((d: ChartDataPoint) => d.data! > 0).length > 0\n );\n }\n\n function _addDefaultColors(donutChartDataPoint?: ChartDataPoint[]): ChartDataPoint[] {\n return donutChartDataPoint\n ? donutChartDataPoint.map((item, index) => {\n let defaultColor: string;\n if (typeof item.color === 'undefined') {\n defaultColor = getNextColor(index, 0);\n } else {\n defaultColor = getColorFromToken(item.color);\n }\n return { ...item, defaultColor };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n /**\n * When screen resizes, along with screen, chart also auto adjusted.\n * This method used to adjust height and width of the charts.\n */\n function _fitParentContainer(): void {\n //_reqID = requestAnimationFrame(() => {\n let legendContainerHeight;\n if (props.hideLegend) {\n // If there is no legend, need not to allocate some space from total chart space.\n legendContainerHeight = 0;\n } else {\n const legendContainerComputedStyles = legendContainer.current && getComputedStyle(legendContainer.current);\n legendContainerHeight =\n ((legendContainer.current && legendContainer.current.getBoundingClientRect().height) ||\n MIN_LEGEND_CONTAINER_HEIGHT) +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginTop) || '0') +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginBottom) || '0');\n }\n if (props.parentRef || _rootElem.current) {\n const container = props.parentRef ? props.parentRef : _rootElem.current!;\n const currentContainerWidth = container.getBoundingClientRect().width;\n const currentContainerHeight =\n container.getBoundingClientRect().height > legendContainerHeight\n ? container.getBoundingClientRect().height\n : 200;\n const shouldResize =\n _width !== currentContainerWidth || _height !== currentContainerHeight - legendContainerHeight;\n if (shouldResize) {\n setWidth(currentContainerWidth);\n setHeight(currentContainerHeight - legendContainerHeight);\n }\n }\n //});\n }\n\n const { data, hideLegend = false } = props;\n const points = _addDefaultColors(data?.chartData);\n\n const classes = useDonutChartStyles(props);\n\n const legendBars = _createLegends(points);\n const donutMarginHorizontal = props.hideLabels ? 0 : 80;\n const donutMarginVertical = props.hideLabels ? 0 : 40;\n const outerRadius = Math.min(_width! - donutMarginHorizontal, _height! - donutMarginVertical) / 2;\n const chartData = _elevateToMinimums(points.filter((d: ChartDataPoint) => d.data! >= 0));\n const valueInsideDonut = props.innerRadius !== 0 ? _valueInsideDonut(props.valueInsideDonut!, chartData!) : '';\n const focusAttributes = useFocusableGroup();\n return !_isChartEmpty() ? (\n <div\n className={classes.root}\n ref={(rootElem: HTMLDivElement | null) => (_rootElem.current = rootElem)}\n onMouseLeave={_handleChartMouseLeave}\n >\n <div className={classes.chartWrapper} {...focusAttributes}>\n <svg className={classes.chart} aria-label={data?.chartTitle} width={_width} height={_height}>\n <Pie\n width={_width!}\n height={_height!}\n outerRadius={outerRadius}\n innerRadius={props.innerRadius!}\n data={chartData!}\n onFocusCallback={_focusCallback}\n hoverOnCallback={_hoverCallback}\n hoverLeaveCallback={_hoverLeave}\n uniqText={_uniqText}\n onBlurCallback={_onBlur}\n activeArc={_getHighlightedLegend()}\n focusedArcId={focusedArcId || ''}\n href={props.href!}\n valueInsideDonut={_toLocaleString(valueInsideDonut)}\n showLabelsInPercent={props.showLabelsInPercent}\n hideLabels={props.hideLabels}\n />\n </svg>\n </div>\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={!props.hideTooltip && isPopoverOpen}\n legend={legend!}\n YValue={value!}\n color={color}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!hideLegend && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendBars}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId!} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\n\nDonutChart.displayName = 'DonutChart';\nDonutChart.defaultProps = {\n innerRadius: 0,\n hideLabels: true,\n};\n"],"names":["DonutChart","MIN_LEGEND_CONTAINER_HEIGHT","React","forwardRef","props","forwardedRef","_rootElem","useRef","_uniqText","useId","_calloutAnchorPoint","_emptyChartId","legendContainer","prevSize","value","setValue","useState","legend","setLegend","_width","setWidth","width","_height","setHeight","height","activeLegend","setActiveLegend","color","setColor","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegend","setSelectedLegend","focusedArcId","setFocusedArcId","dataPointCalloutProps","setDataPointCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","useEffect","_fitParentContainer","current","useImperativeHandle","componentRef","chartContainer","_elevateToMinimums","data","sumOfData","minPercent","elevatedData","forEach","item","push","yAxisCalloutData","undefined","toLocaleString","_createLegends","chartData","legendDataItems","map","point","index","title","action","hoverAction","_handleChartMouseLeave","onMouseOutAction","legends","createElement","Legends","centerLegends","overflowText","legendsOverflowText","legendProps","_focusCallback","id","element","toString","xAxisCalloutData","_hoverCallback","e","updatePosition","clientX","clientY","_onBlur","_hoverLeave","_valueInsideDonut","valueInsideDonut","highlightedLegend","_getHighlightedLegend","legendValue","_toLocaleString","localeString","formatToLocaleString","culture","_isChartEmpty","filter","d","length","_addDefaultColors","donutChartDataPoint","defaultColor","getNextColor","getColorFromToken","newX","newY","threshold","distance","Math","sqrt","pow","legendContainerHeight","hideLegend","legendContainerComputedStyles","getComputedStyle","getBoundingClientRect","parseFloat","marginTop","marginBottom","parentRef","container","currentContainerWidth","currentContainerHeight","shouldResize","points","classes","useDonutChartStyles","legendBars","donutMarginHorizontal","hideLabels","donutMarginVertical","outerRadius","min","innerRadius","focusAttributes","useFocusableGroup","div","className","root","ref","rootElem","onMouseLeave","chartWrapper","svg","chart","aria-label","chartTitle","Pie","onFocusCallback","hoverOnCallback","hoverLeaveCallback","uniqText","onBlurCallback","activeArc","href","showLabelsInPercent","ChartPopover","hideTooltip","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerDataPoint","customCalloutProps","calloutPropsPerDataPoint","isCartesian","role","style","opacity","displayName","defaultProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["DonutChart.tsx"],"sourcesContent":["/* eslint-disable react/jsx-no-bind */\nimport * as React from 'react';\nimport { Pie } from './Pie/index';\nimport { DonutChartProps } from './DonutChart.types';\nimport { useDonutChartStyles } from './useDonutChartStyles.styles';\nimport { ChartDataPoint } from '../../DonutChart';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { getColorFromToken, getNextColor } from '../../utilities/index';\nimport { Legend, Legends } from '../../index';\nimport { useId } from '@fluentui/react-utilities';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\n\nconst MIN_LEGEND_CONTAINER_HEIGHT = 40;\n\n// Create a DonutChart variant which uses these default styles and this styled subcomponent.\n/**\n * Donutchart component.\n * {@docCategory DonutChart}\n */\nexport const DonutChart: React.FunctionComponent<DonutChartProps> = React.forwardRef<HTMLDivElement, DonutChartProps>(\n (props, forwardedRef) => {\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\n const _uniqText: string = useId('_Pie_');\n /* eslint-disable @typescript-eslint/no-explicit-any */\n let _calloutAnchorPoint: ChartDataPoint | null;\n let _emptyChartId: string | null;\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const prevSize = React.useRef<{ width?: number; height?: number }>({});\n\n const [value, setValue] = React.useState<string | undefined>('');\n const [legend, setLegend] = React.useState<string | undefined>('');\n const [_width, setWidth] = React.useState<number | undefined>(props.width || 200);\n const [_height, setHeight] = React.useState<number | undefined>(props.height || 200);\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [color, setColor] = React.useState<string | undefined>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [focusedArcId, setFocusedArcId] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<ChartDataPoint | undefined>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n\n React.useEffect(() => {\n _fitParentContainer();\n }, []);\n\n React.useEffect(() => {\n if (prevSize.current.height !== props.height || prevSize.current.width !== props.width) {\n _fitParentContainer();\n }\n prevSize.current.height = props.height;\n prevSize.current.width = props.width;\n }, [props.width, props.height]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n }),\n [],\n );\n\n function _elevateToMinimums(data: ChartDataPoint[]) {\n let sumOfData = 0;\n const minPercent = 0.01;\n const elevatedData: ChartDataPoint[] = [];\n data.forEach(item => {\n sumOfData += item.data!;\n });\n data.forEach(item => {\n elevatedData.push(\n minPercent * sumOfData > item.data! && item.data! > 0\n ? {\n ...item,\n data: minPercent * sumOfData,\n yAxisCalloutData:\n item.yAxisCalloutData === undefined ? item.data!.toLocaleString() : item.yAxisCalloutData,\n }\n : item,\n );\n });\n return elevatedData;\n }\n function _createLegends(chartData: ChartDataPoint[]): JSX.Element {\n const legendDataItems = chartData.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n action: () => {\n if (selectedLegend === point.legend) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(point.legend!);\n }\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n };\n return legend;\n });\n const legends = (\n <Legends\n legends={legendDataItems}\n centerLegends\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n />\n );\n return legends;\n }\n\n function _focusCallback(data: ChartDataPoint, id: string, e: React.FocusEvent<SVGPathElement>): void {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (e.target as SVGPathElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n updatePosition(cx, cy);\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setFocusedArcId(id);\n setDataPointCalloutProps(data);\n }\n\n function _hoverCallback(data: ChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n if (_calloutAnchorPoint !== data) {\n _calloutAnchorPoint = data;\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setDataPointCalloutProps(data);\n updatePosition(e.clientX, e.clientY);\n }\n }\n function _onBlur(): void {\n setFocusedArcId('');\n }\n\n function _hoverLeave(): void {\n /**/\n }\n\n function _handleChartMouseLeave() {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n }\n\n function _valueInsideDonut(valueInsideDonut: string | number | undefined, data: ChartDataPoint[]) {\n const highlightedLegend = _getHighlightedLegend();\n if (valueInsideDonut !== undefined && (highlightedLegend !== '' || isPopoverOpen)) {\n let legendValue = valueInsideDonut;\n data!.map((point: ChartDataPoint, index: number) => {\n if (point.legend === highlightedLegend || (isPopoverOpen && point.legend === legend)) {\n legendValue = point.yAxisCalloutData ? point.yAxisCalloutData : point.data!;\n }\n return;\n });\n return legendValue;\n } else {\n return valueInsideDonut;\n }\n }\n\n function _toLocaleString(data: string | number | undefined) {\n const localeString = formatToLocaleString(data, props.culture);\n if (!localeString) {\n return data;\n }\n return localeString?.toString();\n }\n\n /**\n * This function returns\n * the selected legend if there is one\n * or the hovered legend if none of the legends is selected.\n * Note: This won't work in case of multiple legends selection.\n */\n function _getHighlightedLegend() {\n return selectedLegend || activeLegend;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.chartData &&\n props.data.chartData!.filter((d: ChartDataPoint) => d.data! > 0).length > 0\n );\n }\n\n function _addDefaultColors(donutChartDataPoint?: ChartDataPoint[]): ChartDataPoint[] {\n return donutChartDataPoint\n ? donutChartDataPoint.map((item, index) => {\n let defaultColor: string;\n if (typeof item.color === 'undefined') {\n defaultColor = getNextColor(index, 0);\n } else {\n defaultColor = getColorFromToken(item.color);\n }\n return { ...item, defaultColor };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n /**\n * When screen resizes, along with screen, chart also auto adjusted.\n * This method used to adjust height and width of the charts.\n */\n function _fitParentContainer(): void {\n //_reqID = requestAnimationFrame(() => {\n let legendContainerHeight;\n if (props.hideLegend) {\n // If there is no legend, need not to allocate some space from total chart space.\n legendContainerHeight = 0;\n } else {\n const legendContainerComputedStyles = legendContainer.current && getComputedStyle(legendContainer.current);\n legendContainerHeight =\n ((legendContainer.current && legendContainer.current.getBoundingClientRect().height) ||\n MIN_LEGEND_CONTAINER_HEIGHT) +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginTop) || '0') +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginBottom) || '0');\n }\n if (props.parentRef || _rootElem.current) {\n const container = props.parentRef ? props.parentRef : _rootElem.current!;\n const currentContainerWidth = container.getBoundingClientRect().width;\n const currentContainerHeight =\n container.getBoundingClientRect().height > legendContainerHeight\n ? container.getBoundingClientRect().height\n : 200;\n const shouldResize =\n _width !== currentContainerWidth || _height !== currentContainerHeight - legendContainerHeight;\n if (shouldResize) {\n setWidth(currentContainerWidth);\n setHeight(currentContainerHeight - legendContainerHeight);\n }\n }\n //});\n }\n\n const { data, hideLegend = false } = props;\n const points = _addDefaultColors(data?.chartData);\n\n const classes = useDonutChartStyles(props);\n\n const legendBars = _createLegends(points);\n const donutMarginHorizontal = props.hideLabels ? 0 : 80;\n const donutMarginVertical = props.hideLabels ? 0 : 40;\n const outerRadius = Math.min(_width! - donutMarginHorizontal, _height! - donutMarginVertical) / 2;\n const chartData = _elevateToMinimums(points.filter((d: ChartDataPoint) => d.data! >= 0));\n const valueInsideDonut = props.innerRadius !== 0 ? _valueInsideDonut(props.valueInsideDonut!, chartData!) : '';\n const focusAttributes = useFocusableGroup();\n return !_isChartEmpty() ? (\n <div\n className={classes.root}\n ref={(rootElem: HTMLDivElement | null) => (_rootElem.current = rootElem)}\n onMouseLeave={_handleChartMouseLeave}\n >\n <div className={classes.chartWrapper} {...focusAttributes}>\n <svg className={classes.chart} aria-label={data?.chartTitle} width={_width} height={_height}>\n <Pie\n width={_width!}\n height={_height!}\n outerRadius={outerRadius}\n innerRadius={props.innerRadius!}\n data={chartData!}\n onFocusCallback={_focusCallback}\n hoverOnCallback={_hoverCallback}\n hoverLeaveCallback={_hoverLeave}\n uniqText={_uniqText}\n onBlurCallback={_onBlur}\n activeArc={_getHighlightedLegend()}\n focusedArcId={focusedArcId || ''}\n href={props.href!}\n valueInsideDonut={_toLocaleString(valueInsideDonut)}\n showLabelsInPercent={props.showLabelsInPercent}\n hideLabels={props.hideLabels}\n />\n </svg>\n </div>\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={!props.hideTooltip && isPopoverOpen}\n legend={legend!}\n YValue={value!}\n color={color}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!hideLegend && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendBars}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId!} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\n\nDonutChart.displayName = 'DonutChart';\nDonutChart.defaultProps = {\n innerRadius: 0,\n hideLabels: true,\n};\n"],"names":["DonutChart","MIN_LEGEND_CONTAINER_HEIGHT","React","forwardRef","props","forwardedRef","_rootElem","useRef","_uniqText","useId","_calloutAnchorPoint","_emptyChartId","legendContainer","prevSize","value","setValue","useState","legend","setLegend","_width","setWidth","width","_height","setHeight","height","activeLegend","setActiveLegend","color","setColor","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegend","setSelectedLegend","focusedArcId","setFocusedArcId","dataPointCalloutProps","setDataPointCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","useEffect","_fitParentContainer","current","useImperativeHandle","componentRef","chartContainer","_elevateToMinimums","data","sumOfData","minPercent","elevatedData","forEach","item","push","yAxisCalloutData","undefined","toLocaleString","_createLegends","chartData","legendDataItems","map","point","index","title","action","hoverAction","_handleChartMouseLeave","onMouseOutAction","legends","createElement","Legends","centerLegends","overflowText","legendsOverflowText","legendProps","_focusCallback","id","e","cx","cy","targetRect","target","getBoundingClientRect","left","top","updatePosition","toString","xAxisCalloutData","_hoverCallback","clientX","clientY","_onBlur","_hoverLeave","_valueInsideDonut","valueInsideDonut","highlightedLegend","_getHighlightedLegend","legendValue","_toLocaleString","localeString","formatToLocaleString","culture","_isChartEmpty","filter","d","length","_addDefaultColors","donutChartDataPoint","defaultColor","getNextColor","getColorFromToken","newX","newY","threshold","distance","Math","sqrt","pow","legendContainerHeight","hideLegend","legendContainerComputedStyles","getComputedStyle","parseFloat","marginTop","marginBottom","parentRef","container","currentContainerWidth","currentContainerHeight","shouldResize","points","classes","useDonutChartStyles","legendBars","donutMarginHorizontal","hideLabels","donutMarginVertical","outerRadius","min","innerRadius","focusAttributes","useFocusableGroup","div","className","root","ref","rootElem","onMouseLeave","chartWrapper","svg","chart","aria-label","chartTitle","Pie","onFocusCallback","hoverOnCallback","hoverLeaveCallback","uniqText","onBlurCallback","activeArc","href","showLabelsInPercent","ChartPopover","hideTooltip","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerDataPoint","customCalloutProps","calloutPropsPerDataPoint","isCartesian","role","style","opacity","displayName","defaultProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}