@fluentui/react-charts 0.0.0-nightly-20260113-0406.1 → 0.0.0-nightly-20260115-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.
- package/CHANGELOG.md +13 -13
- package/dist/index.d.ts +4 -0
- package/lib/components/DonutChart/DonutChart.js +4 -2
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +2 -1
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +25 -16
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +23 -15
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
- package/lib/components/PolarChart/PolarChart.js +3 -2
- package/lib/components/PolarChart/PolarChart.js.map +1 -1
- package/lib/utilities/utilities.js +1 -1
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +4 -2
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +2 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +29 -14
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +22 -14
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/PolarChart/PolarChart.js +3 -2
- package/lib-commonjs/components/PolarChart/PolarChart.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +1 -1
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
# Change Log - @fluentui/react-charts
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Thu, 15 Jan 2026 04:21:22 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
-
## [0.0.0-nightly-
|
|
7
|
+
## [0.0.0-nightly-20260115-0406.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v0.0.0-nightly-20260115-0406.1)
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.3.8..@fluentui/react-charts_v0.0.0-nightly-
|
|
9
|
+
Thu, 15 Jan 2026 04:21:22 GMT
|
|
10
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.3.8..@fluentui/react-charts_v0.0.0-nightly-20260115-0406.1)
|
|
11
11
|
|
|
12
12
|
### Changes
|
|
13
13
|
|
|
14
14
|
- Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/not available) by fluentui-internal@service.microsoft.com)
|
|
15
|
-
- Bump @fluentui/react-button to v0.0.0-nightly-
|
|
16
|
-
- Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-
|
|
17
|
-
- Bump @fluentui/react-overflow to v0.0.0-nightly-
|
|
18
|
-
- Bump @fluentui/react-popover to v0.0.0-nightly-
|
|
19
|
-
- Bump @fluentui/react-shared-contexts to v0.0.0-nightly-
|
|
20
|
-
- Bump @fluentui/react-tabster to v0.0.0-nightly-
|
|
21
|
-
- Bump @fluentui/react-theme to v0.0.0-nightly-
|
|
22
|
-
- Bump @fluentui/react-tooltip to v0.0.0-nightly-
|
|
23
|
-
- Bump @fluentui/react-utilities to v0.0.0-nightly-
|
|
15
|
+
- Bump @fluentui/react-button to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
16
|
+
- Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
17
|
+
- Bump @fluentui/react-overflow to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
18
|
+
- Bump @fluentui/react-popover to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
19
|
+
- Bump @fluentui/react-shared-contexts to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
20
|
+
- Bump @fluentui/react-tabster to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
21
|
+
- Bump @fluentui/react-theme to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
22
|
+
- Bump @fluentui/react-tooltip to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
23
|
+
- Bump @fluentui/react-utilities to v0.0.0-nightly-20260115-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/378590c5301ed49002fcfc82e88222d733fdec98) by beachball)
|
|
24
24
|
|
|
25
25
|
## [9.3.8](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.3.8)
|
|
26
26
|
|
package/dist/index.d.ts
CHANGED
|
@@ -281,7 +281,9 @@ const MIN_LEGEND_CONTAINER_HEIGHT = 40;
|
|
|
281
281
|
className: classes.chartTitle,
|
|
282
282
|
titleStyles: props.titleStyles,
|
|
283
283
|
tooltipClassName: classes.svgTooltip
|
|
284
|
-
}), /*#__PURE__*/ React.createElement(
|
|
284
|
+
}), /*#__PURE__*/ React.createElement("g", {
|
|
285
|
+
transform: `translate(0, ${titleHeight})`
|
|
286
|
+
}, /*#__PURE__*/ React.createElement(Pie, {
|
|
285
287
|
width: _width,
|
|
286
288
|
height: _height,
|
|
287
289
|
outerRadius: outerRadius,
|
|
@@ -298,7 +300,7 @@ const MIN_LEGEND_CONTAINER_HEIGHT = 40;
|
|
|
298
300
|
valueInsideDonut: _toLocaleString(valueInsideDonut),
|
|
299
301
|
showLabelsInPercent: props.showLabelsInPercent,
|
|
300
302
|
hideLabels: props.hideLabels
|
|
301
|
-
}))), /*#__PURE__*/ React.createElement(ChartPopover, {
|
|
303
|
+
})))), /*#__PURE__*/ React.createElement(ChartPopover, {
|
|
302
304
|
xCalloutValue: xCalloutValue,
|
|
303
305
|
yCalloutValue: yCalloutValue,
|
|
304
306
|
culture: props.culture,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/DonutChart/DonutChart.tsx"],"sourcesContent":["'use client';\n\n/* 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 {\n areArraysEqual,\n getColorFromToken,\n getNextColor,\n MIN_DONUT_RADIUS,\n ChartTitle,\n CHART_TITLE_PADDING,\n} from '../../utilities/index';\nimport { Legend, Legends } from '../../index';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { useImageExport } from '../../utilities/hooks';\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 ({ innerRadius = 0, hideLabels = true, ...restProps }, forwardedRef) => {\n const props = { innerRadius, hideLabels, ...restProps };\n const { chartContainerRef: _rootElem, legendsRef: _legendsRef } = useImageExport(\n props.componentRef,\n props.hideLegend,\n false,\n );\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 | undefined>(undefined);\n const [color, setColor] = React.useState<string | undefined>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [focusedArcId, setFocusedArcId] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<ChartDataPoint | undefined>();\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<DonutChartProps | null>(null);\n\n React.useEffect(() => {\n _fitParentContainer();\n }, []);\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.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 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[]): JSXElement {\n if (props.order === 'sorted') {\n chartData.sort((a: ChartDataPoint, b: ChartDataPoint) => {\n return b.data! - a.data!;\n });\n }\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 hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend(undefined);\n },\n };\n return legend;\n });\n const legends = (\n <Legends\n legends={legendDataItems}\n centerLegends\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n return legends;\n }\n function _onLegendSelectionChange(\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps && 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 _focusCallback(\n data: ChartDataPoint,\n id: string,\n e: React.FocusEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ): void {\n setPopoverOpen(_noLegendsHighlighted() || _isLegendHighlighted(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 setRefSelected(targetElement!);\n }\n\n function _hoverCallback(\n data: ChartDataPoint,\n e: React.MouseEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ): void {\n if (_calloutAnchorPoint !== data) {\n _calloutAnchorPoint = data;\n setPopoverOpen(_noLegendsHighlighted() || _isLegendHighlighted(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 setRefSelected(targetElement!);\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 highlightedLegends = _getHighlightedLegend();\n if (valueInsideDonut !== undefined && (highlightedLegends.length === 1 || isPopoverOpen)) {\n const pointValue = data.find(point => _isLegendHighlighted(point.legend));\n return pointValue\n ? pointValue.yAxisCalloutData\n ? pointValue.yAxisCalloutData\n : pointValue.data!\n : valueInsideDonut;\n } else if (highlightedLegends.length > 0) {\n let totalValue = 0;\n data.forEach(point => {\n if (highlightedLegends.includes(point.legend!)) {\n totalValue += point.data!;\n }\n });\n return totalValue;\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 */\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _isLegendHighlighted(legend: string | undefined): boolean {\n return _getHighlightedLegend().includes(legend!);\n }\n\n function _noLegendsHighlighted(): boolean {\n return _getHighlightedLegend().length === 0;\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 /**\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.filter(d => d.data! >= 0));\n const donutMarginHorizontal = props.hideLabels ? 0 : 80;\n const donutMarginVertical = props.hideLabels ? 0 : 40;\n const titleHeight = data?.chartTitle\n ? Math.max(\n (typeof props.titleStyles?.titleFont?.size === 'number' ? props.titleStyles.titleFont.size : 13) +\n CHART_TITLE_PADDING,\n 36,\n )\n : 0;\n const outerRadius = Math.min(_width! - donutMarginHorizontal, _height! - donutMarginVertical - titleHeight) / 2;\n const chartData = _elevateToMinimums(points);\n const valueInsideDonut =\n props.innerRadius! > MIN_DONUT_RADIUS ? _valueInsideDonut(props.valueInsideDonut!, chartData!) : '';\n const arrowAttributes = useArrowNavigationGroup({ circular: true, axis: 'horizontal' });\n return !_isChartEmpty() ? (\n <div\n className={classes.root}\n ref={(rootElem: HTMLDivElement | null) => {\n _rootElem.current = rootElem;\n }}\n onMouseLeave={_handleChartMouseLeave}\n >\n {props.xAxisAnnotation && (\n <text className={classes.axisAnnotation} x={_width! / 2} y={_height! - 10} textAnchor=\"middle\">\n {props.xAxisAnnotation}\n </text>\n )}\n <div className={classes.chartWrapper} {...arrowAttributes}>\n <svg className={classes.chart} aria-label={data?.chartTitle} width={_width} height={_height}>\n {!hideLegend && data?.chartTitle && (\n <ChartTitle\n title={data.chartTitle}\n x={_width! / 2}\n maxWidth={_width! - 20}\n className={classes.chartTitle}\n titleStyles={props.titleStyles}\n tooltipClassName={classes.svgTooltip}\n />\n )}\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}\n positioning={{\n target: refSelected,\n }}\n isPopoverOpen={\n !props.hideTooltip && isPopoverOpen && (_noLegendsHighlighted() || _isLegendHighlighted(legend))\n }\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\n ref={(e: HTMLDivElement) => {\n legendContainer.current = e;\n }}\n className={classes.legendContainer}\n >\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';\n"],"names":["React","Pie","useDonutChartStyles","formatToLocaleString","areArraysEqual","getColorFromToken","getNextColor","MIN_DONUT_RADIUS","ChartTitle","CHART_TITLE_PADDING","Legends","useId","useArrowNavigationGroup","ChartPopover","useImageExport","MIN_LEGEND_CONTAINER_HEIGHT","DonutChart","forwardRef","innerRadius","hideLabels","restProps","forwardedRef","props","chartContainerRef","_rootElem","legendsRef","_legendsRef","componentRef","hideLegend","_uniqText","_calloutAnchorPoint","_emptyChartId","legendContainer","useRef","prevSize","value","setValue","useState","legend","setLegend","_width","setWidth","width","_height","setHeight","height","activeLegend","setActiveLegend","undefined","color","setColor","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegends","setSelectedLegends","legendProps","focusedArcId","setFocusedArcId","dataPointCalloutProps","setDataPointCalloutProps","refSelected","setRefSelected","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","_fitParentContainer","current","prevProps","_elevateToMinimums","data","sumOfData","minPercent","elevatedData","forEach","item","push","yAxisCalloutData","toLocaleString","_createLegends","chartData","order","sort","a","b","legendDataItems","map","point","index","title","hoverAction","_handleChartMouseLeave","onMouseOutAction","legends","centerLegends","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","legendRef","event","currentLegend","canSelectMultipleLegends","slice","_focusCallback","id","e","targetElement","_noLegendsHighlighted","_isLegendHighlighted","toString","xAxisCalloutData","_hoverCallback","_onBlur","_hoverLeave","_valueInsideDonut","valueInsideDonut","highlightedLegends","_getHighlightedLegend","length","pointValue","find","totalValue","includes","_toLocaleString","localeString","culture","_isChartEmpty","filter","d","_addDefaultColors","donutChartDataPoint","defaultColor","legendContainerHeight","legendContainerComputedStyles","getComputedStyle","getBoundingClientRect","parseFloat","marginTop","marginBottom","parentRef","container","currentContainerWidth","currentContainerHeight","shouldResize","points","classes","legendBars","donutMarginHorizontal","donutMarginVertical","titleHeight","chartTitle","Math","max","titleStyles","titleFont","size","outerRadius","min","arrowAttributes","circular","axis","div","className","root","ref","rootElem","onMouseLeave","xAxisAnnotation","text","axisAnnotation","x","y","textAnchor","chartWrapper","svg","chart","aria-label","maxWidth","tooltipClassName","svgTooltip","onFocusCallback","hoverOnCallback","hoverLeaveCallback","uniqText","onBlurCallback","activeArc","href","showLabelsInPercent","positioning","target","hideTooltip","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerDataPoint","customCalloutProps","calloutPropsPerDataPoint","isCartesian","role","style","opacity","displayName"],"mappings":"AAAA;AAEA,oCAAoC,GACpC,YAAYA,WAAW,QAAQ;AAC/B,SAASC,GAAG,QAAQ,cAAc;AAElC,SAASC,mBAAmB,QAAQ,+BAA+B;AAEnE,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SACEC,cAAc,EACdC,iBAAiB,EACjBC,YAAY,EACZC,gBAAgB,EAChBC,UAAU,EACVC,mBAAmB,QACd,wBAAwB;AAC/B,SAAiBC,OAAO,QAAQ,cAAc;AAC9C,SAASC,KAAK,QAAQ,4BAA4B;AAElD,SAASC,uBAAuB,QAAQ,0BAA0B;AAClE,SAASC,YAAY,QAAQ,mCAAmC;AAChE,SAASC,cAAc,QAAQ,wBAAwB;AAEvD,MAAMC,8BAA8B;AAEpC,4FAA4F;AAC5F;;;CAGC,GACD,OAAO,MAAMC,2BAAuDhB,MAAMiB,UAAU,CAClF,CAAC,EAAEC,cAAc,CAAC,EAAEC,aAAa,IAAI,EAAE,GAAGC,WAAW,EAAEC;QAsBkBC,oBAqQzDA,8BAAAA;IA1Rd,MAAMA,QAAQ;QAAEJ;QAAaC;QAAY,GAAGC,SAAS;IAAC;IACtD,MAAM,EAAEG,mBAAmBC,SAAS,EAAEC,YAAYC,WAAW,EAAE,GAAGZ,eAChEQ,MAAMK,YAAY,EAClBL,MAAMM,UAAU,EAChB;IAEF,MAAMC,YAAoBlB,MAAM;IAChC,qDAAqD,GACrD,IAAImB;IACJ,IAAIC;IACJ,MAAMC,kBAAkBhC,MAAMiC,MAAM,CAAwB;IAC5D,MAAMC,WAAWlC,MAAMiC,MAAM,CAAsC,CAAC;IAEpE,MAAM,CAACE,OAAOC,SAAS,GAAGpC,MAAMqC,QAAQ,CAAqB;IAC7D,MAAM,CAACC,QAAQC,UAAU,GAAGvC,MAAMqC,QAAQ,CAAqB;IAC/D,MAAM,CAACG,QAAQC,SAAS,GAAGzC,MAAMqC,QAAQ,CAAqBf,MAAMoB,KAAK,IAAI;IAC7E,MAAM,CAACC,SAASC,UAAU,GAAG5C,MAAMqC,QAAQ,CAAqBf,MAAMuB,MAAM,IAAI;IAChF,MAAM,CAACC,cAAcC,gBAAgB,GAAG/C,MAAMqC,QAAQ,CAAqBW;IAC3E,MAAM,CAACC,OAAOC,SAAS,GAAGlD,MAAMqC,QAAQ,CAAqB;IAC7D,MAAM,CAACc,eAAeC,iBAAiB,GAAGpD,MAAMqC,QAAQ,CAAS;IACjE,MAAM,CAACgB,eAAeC,iBAAiB,GAAGtD,MAAMqC,QAAQ,CAAS;IACjE,MAAM,CAACkB,iBAAiBC,mBAAmB,GAAGxD,MAAMqC,QAAQ,CAAWf,EAAAA,qBAAAA,MAAMmC,WAAW,cAAjBnC,yCAAAA,mBAAmBiC,eAAe,KAAI,EAAE;IAC/G,MAAM,CAACG,cAAcC,gBAAgB,GAAG3D,MAAMqC,QAAQ,CAAS;IAC/D,MAAM,CAACuB,uBAAuBC,yBAAyB,GAAG7D,MAAMqC,QAAQ;IACxE,MAAM,CAACyB,aAAaC,eAAe,GAAG/D,MAAMqC,QAAQ,CAAqB;IACzE,MAAM,CAAC2B,eAAeC,eAAe,GAAGjE,MAAMqC,QAAQ,CAAC;IACvD,MAAM6B,eAAelE,MAAMiC,MAAM,CAAyB;IAE1DjC,MAAMmE,SAAS,CAAC;QACdC;IACF,GAAG,EAAE;IAELpE,MAAMmE,SAAS,CAAC;QACd,IAAID,aAAaG,OAAO,EAAE;gBAEJC,wBAAwChD;YAD5D,MAAMgD,YAAYJ,aAAaG,OAAO;YACtC,IAAI,CAACjE,gBAAekE,yBAAAA,UAAUb,WAAW,cAArBa,6CAAAA,uBAAuBf,eAAe,GAAEjC,qBAAAA,MAAMmC,WAAW,cAAjBnC,yCAAAA,mBAAmBiC,eAAe,GAAG;oBAC5EjC;gBAAnBkC,mBAAmBlC,EAAAA,sBAAAA,MAAMmC,WAAW,cAAjBnC,0CAAAA,oBAAmBiC,eAAe,KAAI,EAAE;YAC7D;QACF;QACAW,aAAaG,OAAO,GAAG/C;IACzB,GAAG;QAACA;KAAM;IAEVtB,MAAMmE,SAAS,CAAC;QACd,IAAIjC,SAASmC,OAAO,CAACxB,MAAM,KAAKvB,MAAMuB,MAAM,IAAIX,SAASmC,OAAO,CAAC3B,KAAK,KAAKpB,MAAMoB,KAAK,EAAE;YACtF0B;QACF;QACAlC,SAASmC,OAAO,CAACxB,MAAM,GAAGvB,MAAMuB,MAAM;QACtCX,SAASmC,OAAO,CAAC3B,KAAK,GAAGpB,MAAMoB,KAAK;IACtC,GAAG;QAACpB,MAAMoB,KAAK;QAAEpB,MAAMuB,MAAM;KAAC;IAE9B,SAAS0B,mBAAmBC,IAAsB;QAChD,IAAIC,YAAY;QAChB,MAAMC,aAAa;QACnB,MAAMC,eAAiC,EAAE;QACzCH,KAAKI,OAAO,CAACC,CAAAA;YACXJ,aAAaI,KAAKL,IAAI;QACxB;QACAA,KAAKI,OAAO,CAACC,CAAAA;YACXF,aAAaG,IAAI,CACfJ,aAAaD,YAAYI,KAAKL,IAAI,IAAKK,KAAKL,IAAI,GAAI,IAChD;gBACE,GAAGK,IAAI;gBACPL,MAAME,aAAaD;gBACnBM,kBACEF,KAAKE,gBAAgB,KAAK/B,YAAY6B,KAAKL,IAAI,CAAEQ,cAAc,KAAKH,KAAKE,gBAAgB;YAC7F,IACAF;QAER;QACA,OAAOF;IACT;IACA,SAASM,eAAeC,SAA2B;QACjD,IAAI5D,MAAM6D,KAAK,KAAK,UAAU;YAC5BD,UAAUE,IAAI,CAAC,CAACC,GAAmBC;gBACjC,OAAOA,EAAEd,IAAI,GAAIa,EAAEb,IAAI;YACzB;QACF;QACA,MAAMe,kBAAkBL,UAAUM,GAAG,CAAC,CAACC,OAAuBC;YAC5D,MAAMzC,QAAgBwC,MAAMxC,KAAK;YACjC,qDAAqD;YACrD,MAAMX,SAAiB;gBACrBqD,OAAOF,MAAMnD,MAAM;gBACnBW;gBACA2C,aAAa;oBACXC;oBACA9C,gBAAgB0C,MAAMnD,MAAM;gBAC9B;gBACAwD,kBAAkB;oBAChB/C,gBAAgBC;gBAClB;YACF;YACA,OAAOV;QACT;QACA,MAAMyD,wBACJ,oBAACrF;YACCqF,SAASR;YACTS,eAAAA;YACAC,cAAc3E,MAAM4E,mBAAmB;YACtC,GAAG5E,MAAMmC,WAAW;YACrB,6CAA6C;YAC7C0C,UAAUC;YACVC,WAAW3E;;QAGf,OAAOqE;IACT;IACA,SAASK,yBACP7C,eAAyB,EACzB+C,KAA0C,EAC1CC,aAAsB;YAEGjF,oBAKrBA;QALJ,IAAIA,MAAMmC,WAAW,MAAInC,qBAAAA,MAAMmC,WAAW,cAAjBnC,yCAAAA,mBAAmBkF,wBAAwB,GAAE;YACpEhD,mBAAmBD;QACrB,OAAO;YACLC,mBAAmBD,gBAAgBkD,KAAK,CAAC,CAAC;QAC5C;QACA,KAAInF,sBAAAA,MAAMmC,WAAW,cAAjBnC,0CAAAA,oBAAmB6E,QAAQ,EAAE;YAC/B7E,MAAMmC,WAAW,CAAC0C,QAAQ,CAAC5C,iBAAiB+C,OAAOC;QACrD;IACF;IAEA,SAASG,eACPlC,IAAoB,EACpBmC,EAAU,EACVC,CAAmC,EACnCC,aAAkC;QAElC5C,eAAe6C,2BAA2BC,qBAAqBvC,KAAKlC,MAAM;QAC1EF,SAASoC,KAAKA,IAAI,CAAEwC,QAAQ;QAC5BzE,UAAUiC,KAAKlC,MAAM;QACrBY,SAASsB,KAAKvB,KAAK;QACnBG,iBAAiBoB,KAAKyC,gBAAgB;QACtC3D,iBAAiBkB,KAAKO,gBAAgB;QACtCpB,gBAAgBgD;QAChB9C,yBAAyBW;QACzBT,eAAe8C;IACjB;IAEA,SAASK,eACP1C,IAAoB,EACpBoC,CAAmC,EACnCC,aAAkC;QAElC,IAAI/E,wBAAwB0C,MAAM;YAChC1C,sBAAsB0C;YACtBP,eAAe6C,2BAA2BC,qBAAqBvC,KAAKlC,MAAM;YAC1EF,SAASoC,KAAKA,IAAI,CAAEwC,QAAQ;YAC5BzE,UAAUiC,KAAKlC,MAAM;YACrBY,SAASsB,KAAKvB,KAAK;YACnBG,iBAAiBoB,KAAKyC,gBAAgB;YACtC3D,iBAAiBkB,KAAKO,gBAAgB;YACtClB,yBAAyBW;YACzBT,eAAe8C;QACjB;IACF;IACA,SAASM;QACPxD,gBAAgB;IAClB;IAEA,SAASyD;IACP,EAAE,GACJ;IAEA,SAASvB;QACP/D,sBAAsB;QACtBmC,eAAe;IACjB;IAEA,SAASoD,kBAAkBC,gBAA6C,EAAE9C,IAAsB;QAC9F,MAAM+C,qBAAqBC;QAC3B,IAAIF,qBAAqBtE,aAAcuE,CAAAA,mBAAmBE,MAAM,KAAK,KAAKzD,aAAY,GAAI;YACxF,MAAM0D,aAAalD,KAAKmD,IAAI,CAAClC,CAAAA,QAASsB,qBAAqBtB,MAAMnD,MAAM;YACvE,OAAOoF,aACHA,WAAW3C,gBAAgB,GACzB2C,WAAW3C,gBAAgB,GAC3B2C,WAAWlD,IAAI,GACjB8C;QACN,OAAO,IAAIC,mBAAmBE,MAAM,GAAG,GAAG;YACxC,IAAIG,aAAa;YACjBpD,KAAKI,OAAO,CAACa,CAAAA;gBACX,IAAI8B,mBAAmBM,QAAQ,CAACpC,MAAMnD,MAAM,GAAI;oBAC9CsF,cAAcnC,MAAMjB,IAAI;gBAC1B;YACF;YACA,OAAOoD;QACT,OAAO;YACL,OAAON;QACT;IACF;IAEA,SAASQ,gBAAgBtD,IAAiC;QACxD,MAAMuD,eAAe5H,qBAAqBqE,MAAMlD,MAAM0G,OAAO;QAC7D,IAAI,CAACD,cAAc;YACjB,OAAOvD;QACT;QACA,OAAOuD,yBAAAA,mCAAAA,aAAcf,QAAQ;IAC/B;IAEA;;;;KAIC,GACD,SAASQ;QACP,OAAOjE,gBAAgBkE,MAAM,GAAG,IAAIlE,kBAAkBT,eAAe;YAACA;SAAa,GAAG,EAAE;IAC1F;IAEA,SAASiE,qBAAqBzE,MAA0B;QACtD,OAAOkF,wBAAwBK,QAAQ,CAACvF;IAC1C;IAEA,SAASwE;QACP,OAAOU,wBAAwBC,MAAM,KAAK;IAC5C;IAEA,SAASQ;QACP,OAAO,CACL3G,CAAAA,MAAMkD,IAAI,IACVlD,MAAMkD,IAAI,CAACU,SAAS,IACpB5D,MAAMkD,IAAI,CAACU,SAAS,CAAEgD,MAAM,CAAC,CAACC,IAAsBA,EAAE3D,IAAI,GAAI,GAAGiD,MAAM,GAAG,CAAA;IAE9E;IAEA,SAASW,kBAAkBC,mBAAsC;QAC/D,OAAOA,sBACHA,oBAAoB7C,GAAG,CAAC,CAACX,MAAMa;YAC7B,IAAI4C;YACJ,IAAI,OAAOzD,KAAK5B,KAAK,KAAK,aAAa;gBACrCqF,eAAehI,aAAaoF,OAAO;YACrC,OAAO;gBACL4C,eAAejI,kBAAkBwE,KAAK5B,KAAK;YAC7C;YACA,OAAO;gBAAE,GAAG4B,IAAI;gBAAEyD;YAAa;QACjC,KACA,EAAE;IACR;IAEA;;;KAGC,GACD,SAASlE;QACP,wCAAwC;QACxC,IAAImE;QACJ,IAAIjH,MAAMM,UAAU,EAAE;YACpB,iFAAiF;YACjF2G,wBAAwB;QAC1B,OAAO;YACL,MAAMC,gCAAgCxG,gBAAgBqC,OAAO,IAAIoE,iBAAiBzG,gBAAgBqC,OAAO;YACzGkE,wBACE,AAAC,CAAA,AAACvG,gBAAgBqC,OAAO,IAAIrC,gBAAgBqC,OAAO,CAACqE,qBAAqB,GAAG7F,MAAM,IACjF9B,2BAA0B,IAC5B4H,WAAW,AAACH,iCAAiCA,8BAA8BI,SAAS,IAAK,OACzFD,WAAW,AAACH,iCAAiCA,8BAA8BK,YAAY,IAAK;QAChG;QACA,IAAIvH,MAAMwH,SAAS,IAAItH,UAAU6C,OAAO,EAAE;YACxC,MAAM0E,YAAYzH,MAAMwH,SAAS,GAAGxH,MAAMwH,SAAS,GAAGtH,UAAU6C,OAAO;YACvE,MAAM2E,wBAAwBD,UAAUL,qBAAqB,GAAGhG,KAAK;YACrE,MAAMuG,yBACJF,UAAUL,qBAAqB,GAAG7F,MAAM,GAAG0F,wBACvCQ,UAAUL,qBAAqB,GAAG7F,MAAM,GACxC;YACN,MAAMqG,eACJ1G,WAAWwG,yBAAyBrG,YAAYsG,yBAAyBV;YAC3E,IAAIW,cAAc;gBAChBzG,SAASuG;gBACTpG,UAAUqG,yBAAyBV;YACrC;QACF;IACA,KAAK;IACP;IAEA,MAAM,EAAE/D,IAAI,EAAE5C,aAAa,KAAK,EAAE,GAAGN;IACrC,MAAM6H,SAASf,kBAAkB5D,iBAAAA,2BAAAA,KAAMU,SAAS;IAEhD,MAAMkE,UAAUlJ,oBAAoBoB;IAEpC,MAAM+H,aAAapE,eAAekE,OAAOjB,MAAM,CAACC,CAAAA,IAAKA,EAAE3D,IAAI,IAAK;IAChE,MAAM8E,wBAAwBhI,MAAMH,UAAU,GAAG,IAAI;IACrD,MAAMoI,sBAAsBjI,MAAMH,UAAU,GAAG,IAAI;IACnD,MAAMqI,cAAchF,CAAAA,iBAAAA,2BAAAA,KAAMiF,UAAU,IAChCC,KAAKC,GAAG,CACN,AAAC,CAAA,SAAOrI,qBAAAA,MAAMsI,WAAW,cAAjBtI,0CAAAA,+BAAAA,mBAAmBuI,SAAS,cAA5BvI,mDAAAA,6BAA8BwI,IAAI,MAAK,WAAWxI,MAAMsI,WAAW,CAACC,SAAS,CAACC,IAAI,GAAG,EAAC,IAC5FrJ,qBACF,MAEF;IACJ,MAAMsJ,cAAcL,KAAKM,GAAG,CAACxH,SAAU8G,uBAAuB3G,UAAW4G,sBAAsBC,eAAe;IAC9G,MAAMtE,YAAYX,mBAAmB4E;IACrC,MAAM7B,mBACJhG,MAAMJ,WAAW,GAAIX,mBAAmB8G,kBAAkB/F,MAAMgG,gBAAgB,EAAGpC,aAAc;IACnG,MAAM+E,kBAAkBrJ,wBAAwB;QAAEsJ,UAAU;QAAMC,MAAM;IAAa;IACrF,OAAO,CAAClC,gCACN,oBAACmC;QACCC,WAAWjB,QAAQkB,IAAI;QACvBC,KAAK,CAACC;YACJhJ,UAAU6C,OAAO,GAAGmG;QACtB;QACAC,cAAc5E;OAEbvE,MAAMoJ,eAAe,kBACpB,oBAACC;QAAKN,WAAWjB,QAAQwB,cAAc;QAAEC,GAAGrI,SAAU;QAAGsI,GAAGnI,UAAW;QAAIoI,YAAW;OACnFzJ,MAAMoJ,eAAe,iBAG1B,oBAACN;QAAIC,WAAWjB,QAAQ4B,YAAY;QAAG,GAAGf,eAAe;qBACvD,oBAACgB;QAAIZ,WAAWjB,QAAQ8B,KAAK;QAAEC,YAAU,EAAE3G,iBAAAA,2BAAAA,KAAMiF,UAAU;QAAE/G,OAAOF;QAAQK,QAAQF;OACjF,CAACf,eAAc4C,iBAAAA,2BAAAA,KAAMiF,UAAU,mBAC9B,oBAACjJ;QACCmF,OAAOnB,KAAKiF,UAAU;QACtBoB,GAAGrI,SAAU;QACb4I,UAAU5I,SAAU;QACpB6H,WAAWjB,QAAQK,UAAU;QAC7BG,aAAatI,MAAMsI,WAAW;QAC9ByB,kBAAkBjC,QAAQkC,UAAU;sBAGxC,oBAACrL;QACCyC,OAAOF;QACPK,QAAQF;QACRoH,aAAaA;QACb7I,aAAaI,MAAMJ,WAAW;QAC9BsD,MAAMU;QACNqG,iBAAiB7E;QACjB8E,iBAAiBtE;QACjBuE,oBAAoBrE;QACpBsE,UAAU7J;QACV8J,gBAAgBxE;QAChByE,WAAWpE;QACX9D,cAAcA,gBAAgB;QAC9BmI,MAAMvK,MAAMuK,IAAI;QAChBvE,kBAAkBQ,gBAAgBR;QAClCwE,qBAAqBxK,MAAMwK,mBAAmB;QAC9C3K,YAAYG,MAAMH,UAAU;wBAIlC,oBAACN;QACCsC,eAAeA;QACfE,eAAeA;QACf2E,SAAS1G,MAAM0G,OAAO;QACtB+D,aAAa;YACXC,QAAQlI;QACV;QACAE,eACE,CAAC1C,MAAM2K,WAAW,IAAIjI,iBAAkB8C,CAAAA,2BAA2BC,qBAAqBzE,OAAM;QAEhGA,QAAQA;QACR4J,QAAQ/J;QACRc,OAAOA;QACPkJ,mBAAmB;QACnBC,eAAe;YACbC,mBAAmB/K,MAAMgL,2BAA2B,GAChDhL,MAAMgL,2BAA2B,CAAC1I,yBAClCZ;YACJuJ,oBAAoBjL,MAAMkL,wBAAwB,GAC9ClL,MAAMkL,wBAAwB,CAAC5I,yBAC/BZ;QACN;QACAyJ,aAAa;QAEd,CAAC7K,4BACA,oBAACwI;QACCG,KAAK,CAAC3D;YACJ5E,gBAAgBqC,OAAO,GAAGuC;QAC5B;QACAyD,WAAWjB,QAAQpH,eAAe;OAEjCqH,6BAKP,oBAACe;QAAIzD,IAAI5E;QAAgB2K,MAAM;QAASC,OAAO;YAAEC,SAAS;QAAI;QAAGzB,cAAY;;AAEjF,GACA;AAEFnK,WAAW6L,WAAW,GAAG"}
|
|
1
|
+
{"version":3,"sources":["../src/components/DonutChart/DonutChart.tsx"],"sourcesContent":["'use client';\n\n/* 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 {\n areArraysEqual,\n getColorFromToken,\n getNextColor,\n MIN_DONUT_RADIUS,\n ChartTitle,\n CHART_TITLE_PADDING,\n} from '../../utilities/index';\nimport { Legend, Legends } from '../../index';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { useImageExport } from '../../utilities/hooks';\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 ({ innerRadius = 0, hideLabels = true, ...restProps }, forwardedRef) => {\n const props = { innerRadius, hideLabels, ...restProps };\n const { chartContainerRef: _rootElem, legendsRef: _legendsRef } = useImageExport(\n props.componentRef,\n props.hideLegend,\n false,\n );\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 | undefined>(undefined);\n const [color, setColor] = React.useState<string | undefined>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [focusedArcId, setFocusedArcId] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<ChartDataPoint | undefined>();\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<DonutChartProps | null>(null);\n\n React.useEffect(() => {\n _fitParentContainer();\n }, []);\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.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 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[]): JSXElement {\n if (props.order === 'sorted') {\n chartData.sort((a: ChartDataPoint, b: ChartDataPoint) => {\n return b.data! - a.data!;\n });\n }\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 hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend(undefined);\n },\n };\n return legend;\n });\n const legends = (\n <Legends\n legends={legendDataItems}\n centerLegends\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n return legends;\n }\n function _onLegendSelectionChange(\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps && 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 _focusCallback(\n data: ChartDataPoint,\n id: string,\n e: React.FocusEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ): void {\n setPopoverOpen(_noLegendsHighlighted() || _isLegendHighlighted(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 setRefSelected(targetElement!);\n }\n\n function _hoverCallback(\n data: ChartDataPoint,\n e: React.MouseEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ): void {\n if (_calloutAnchorPoint !== data) {\n _calloutAnchorPoint = data;\n setPopoverOpen(_noLegendsHighlighted() || _isLegendHighlighted(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 setRefSelected(targetElement!);\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 highlightedLegends = _getHighlightedLegend();\n if (valueInsideDonut !== undefined && (highlightedLegends.length === 1 || isPopoverOpen)) {\n const pointValue = data.find(point => _isLegendHighlighted(point.legend));\n return pointValue\n ? pointValue.yAxisCalloutData\n ? pointValue.yAxisCalloutData\n : pointValue.data!\n : valueInsideDonut;\n } else if (highlightedLegends.length > 0) {\n let totalValue = 0;\n data.forEach(point => {\n if (highlightedLegends.includes(point.legend!)) {\n totalValue += point.data!;\n }\n });\n return totalValue;\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 */\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _isLegendHighlighted(legend: string | undefined): boolean {\n return _getHighlightedLegend().includes(legend!);\n }\n\n function _noLegendsHighlighted(): boolean {\n return _getHighlightedLegend().length === 0;\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 /**\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.filter(d => d.data! >= 0));\n const donutMarginHorizontal = props.hideLabels ? 0 : 80;\n const donutMarginVertical = props.hideLabels ? 0 : 40;\n const titleHeight = data?.chartTitle\n ? Math.max(\n (typeof props.titleStyles?.titleFont?.size === 'number' ? props.titleStyles.titleFont.size : 13) +\n CHART_TITLE_PADDING,\n 36,\n )\n : 0;\n const outerRadius = Math.min(_width! - donutMarginHorizontal, _height! - donutMarginVertical - titleHeight) / 2;\n const chartData = _elevateToMinimums(points);\n const valueInsideDonut =\n props.innerRadius! > MIN_DONUT_RADIUS ? _valueInsideDonut(props.valueInsideDonut!, chartData!) : '';\n const arrowAttributes = useArrowNavigationGroup({ circular: true, axis: 'horizontal' });\n return !_isChartEmpty() ? (\n <div\n className={classes.root}\n ref={(rootElem: HTMLDivElement | null) => {\n _rootElem.current = rootElem;\n }}\n onMouseLeave={_handleChartMouseLeave}\n >\n {props.xAxisAnnotation && (\n <text className={classes.axisAnnotation} x={_width! / 2} y={_height! - 10} textAnchor=\"middle\">\n {props.xAxisAnnotation}\n </text>\n )}\n <div className={classes.chartWrapper} {...arrowAttributes}>\n <svg className={classes.chart} aria-label={data?.chartTitle} width={_width} height={_height}>\n {!hideLegend && data?.chartTitle && (\n <ChartTitle\n title={data.chartTitle}\n x={_width! / 2}\n maxWidth={_width! - 20}\n className={classes.chartTitle}\n titleStyles={props.titleStyles}\n tooltipClassName={classes.svgTooltip}\n />\n )}\n <g transform={`translate(0, ${titleHeight})`}>\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 </g>\n </svg>\n </div>\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture}\n positioning={{\n target: refSelected,\n }}\n isPopoverOpen={\n !props.hideTooltip && isPopoverOpen && (_noLegendsHighlighted() || _isLegendHighlighted(legend))\n }\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\n ref={(e: HTMLDivElement) => {\n legendContainer.current = e;\n }}\n className={classes.legendContainer}\n >\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';\n"],"names":["React","Pie","useDonutChartStyles","formatToLocaleString","areArraysEqual","getColorFromToken","getNextColor","MIN_DONUT_RADIUS","ChartTitle","CHART_TITLE_PADDING","Legends","useId","useArrowNavigationGroup","ChartPopover","useImageExport","MIN_LEGEND_CONTAINER_HEIGHT","DonutChart","forwardRef","innerRadius","hideLabels","restProps","forwardedRef","props","chartContainerRef","_rootElem","legendsRef","_legendsRef","componentRef","hideLegend","_uniqText","_calloutAnchorPoint","_emptyChartId","legendContainer","useRef","prevSize","value","setValue","useState","legend","setLegend","_width","setWidth","width","_height","setHeight","height","activeLegend","setActiveLegend","undefined","color","setColor","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegends","setSelectedLegends","legendProps","focusedArcId","setFocusedArcId","dataPointCalloutProps","setDataPointCalloutProps","refSelected","setRefSelected","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","_fitParentContainer","current","prevProps","_elevateToMinimums","data","sumOfData","minPercent","elevatedData","forEach","item","push","yAxisCalloutData","toLocaleString","_createLegends","chartData","order","sort","a","b","legendDataItems","map","point","index","title","hoverAction","_handleChartMouseLeave","onMouseOutAction","legends","centerLegends","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","legendRef","event","currentLegend","canSelectMultipleLegends","slice","_focusCallback","id","e","targetElement","_noLegendsHighlighted","_isLegendHighlighted","toString","xAxisCalloutData","_hoverCallback","_onBlur","_hoverLeave","_valueInsideDonut","valueInsideDonut","highlightedLegends","_getHighlightedLegend","length","pointValue","find","totalValue","includes","_toLocaleString","localeString","culture","_isChartEmpty","filter","d","_addDefaultColors","donutChartDataPoint","defaultColor","legendContainerHeight","legendContainerComputedStyles","getComputedStyle","getBoundingClientRect","parseFloat","marginTop","marginBottom","parentRef","container","currentContainerWidth","currentContainerHeight","shouldResize","points","classes","legendBars","donutMarginHorizontal","donutMarginVertical","titleHeight","chartTitle","Math","max","titleStyles","titleFont","size","outerRadius","min","arrowAttributes","circular","axis","div","className","root","ref","rootElem","onMouseLeave","xAxisAnnotation","text","axisAnnotation","x","y","textAnchor","chartWrapper","svg","chart","aria-label","maxWidth","tooltipClassName","svgTooltip","g","transform","onFocusCallback","hoverOnCallback","hoverLeaveCallback","uniqText","onBlurCallback","activeArc","href","showLabelsInPercent","positioning","target","hideTooltip","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerDataPoint","customCalloutProps","calloutPropsPerDataPoint","isCartesian","role","style","opacity","displayName"],"mappings":"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"}
|
|
@@ -489,7 +489,8 @@ export const GaugeChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>
|
|
|
489
489
|
x: 0,
|
|
490
490
|
y: -(_outerRadius + TITLE_OFFSET),
|
|
491
491
|
className: classes.chartTitle,
|
|
492
|
-
titleStyles: props.titleStyles
|
|
492
|
+
titleStyles: props.titleStyles,
|
|
493
|
+
tooltipClassName: classes.svgTooltip
|
|
493
494
|
}), !props.hideMinMax && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("text", {
|
|
494
495
|
x: (_isRTL ? 1 : -1) * (_outerRadius + LABEL_OFFSET),
|
|
495
496
|
y: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/GaugeChart/GaugeChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useGaugeChartStyles } from './useGaugeChartStyles.styles';\nimport { select as d3Select } from 'd3-selection';\nimport { arc as d3Arc } from 'd3-shape';\nimport { YValueHover } from '../../index';\nimport {\n Points,\n areArraysEqual,\n formatScientificLimitWidth,\n getAccessibleDataObject,\n getColorFromToken,\n getNextColor,\n pointTypes,\n useRtl,\n ChartTitle,\n} from '../../utilities/index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { SVGTooltipText } from '../../utilities/SVGTooltipText';\nimport { Legend, LegendShape, Legends, Shape } from '../Legends/index';\nimport { GaugeChartVariant, GaugeValueFormat, GaugeChartProps, GaugeChartSegment } from './GaugeChart.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { useImageExport } from '../../utilities/hooks';\n\nconst GAUGE_MARGIN = 16;\nconst LABEL_WIDTH = 36;\nconst LABEL_HEIGHT = 16;\nconst LABEL_OFFSET = 4;\nconst TITLE_OFFSET = 11;\nconst EXTRA_NEEDLE_LENGTH = 4;\nexport const ARC_PADDING = 2;\nexport const BREAKPOINTS = [\n { minRadius: 52, arcWidth: 12, fontSize: 20 },\n { minRadius: 70, arcWidth: 16, fontSize: 24 },\n { minRadius: 88, arcWidth: 20, fontSize: 32 },\n { minRadius: 106, arcWidth: 24, fontSize: 32 },\n { minRadius: 124, arcWidth: 28, fontSize: 40 },\n { minRadius: 142, arcWidth: 32, fontSize: 40 },\n];\n\nexport const calcNeedleRotation = (chartValue: number, minValue: number, maxValue: number): number => {\n let needleRotation = ((chartValue - minValue) / (maxValue - minValue)) * 180;\n if (needleRotation < 0) {\n needleRotation = 0;\n } else if (needleRotation > 180) {\n needleRotation = 180;\n }\n\n return needleRotation;\n};\n\nexport const getSegmentLabel = (\n segment: ExtendedSegment,\n minValue: number,\n maxValue: number,\n variant?: GaugeChartVariant,\n isAriaLabel: boolean = false,\n): string => {\n if (isAriaLabel) {\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.legend}, ${segment.size} out of ${maxValue} or ${((segment.size / maxValue) * 100).toFixed()}%`\n : `${segment.legend}, ${segment.start} to ${segment.end}`;\n }\n\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.size} (${((segment.size / maxValue) * 100).toFixed()}%)`\n : `${segment.start} - ${segment.end}`;\n};\n\nexport const getChartValueLabel = (\n chartValue: number,\n minValue: number,\n maxValue: number,\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string),\n forCallout: boolean = false,\n): string => {\n if (forCallout) {\n // When displaying the chart value as a percentage, use fractions in the callout, and vice versa.\n // This helps clarify the actual value and avoid repetition.\n return minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${((chartValue / maxValue) * 100).toFixed()}%`\n : `${chartValue}/${maxValue}`;\n }\n\n return typeof chartValueFormat === 'function'\n ? chartValueFormat([chartValue - minValue, maxValue - minValue])\n : minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${chartValue}/${maxValue}`\n : `${((chartValue / maxValue) * 100).toFixed()}%`;\n};\n\ninterface YValue extends Omit<YValueHover, 'y'> {\n y?: string | number;\n}\nexport interface ExtendedSegment extends GaugeChartSegment {\n start: number;\n end: number;\n}\n\nexport const GaugeChart: React.FunctionComponent<GaugeChartProps> = React.forwardRef<HTMLDivElement, GaugeChartProps>(\n (props, forwardedRef) => {\n const _getMargins = () => {\n const { hideMinMax, chartTitle, sublabel } = props;\n return {\n left: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n right: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n top: (chartTitle ? TITLE_OFFSET + LABEL_HEIGHT : EXTRA_NEEDLE_LENGTH / 2) + GAUGE_MARGIN,\n bottom: (sublabel ? LABEL_OFFSET + LABEL_HEIGHT : 0) + GAUGE_MARGIN,\n };\n };\n const _margins: { left: number; right: number; top: number; bottom: number } = _getMargins();\n const _legendsHeight: number = !props.hideLegend ? 32 : 0;\n const { chartContainerRef: _rootElem, legendsRef: _legendsRef } = useImageExport(\n props.componentRef,\n props.hideLegend,\n false,\n );\n const _isRTL: boolean = useRtl();\n const [width, setWidth] = React.useState<number>(140 + _getMargins().left + _getMargins().right);\n const [height, setHeight] = React.useState<number>(70 + _getMargins().top + _getMargins().bottom + _legendsHeight);\n const [hoveredLegend, setHoveredLegend] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [focusedElement, setFocusedElement] = React.useState<string | undefined>('');\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [hoverYValues, setHoverYValues] = React.useState<YValue[]>([]);\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n const prevPropsRef = React.useRef<GaugeChartProps | null>(null);\n const _width = props.width || width;\n const _height = props.height || height;\n const _outerRadius: number = Math.min(\n (_width - (_margins.left + _margins.right)) / 2,\n _height - (_margins.top + _margins.bottom + _legendsHeight),\n );\n const { arcWidth, chartValueSize } = _getStylesBasedOnBreakpoint();\n const _innerRadius: number = _outerRadius - arcWidth;\n let _minValue!: number;\n let _maxValue!: number;\n let _segments!: ExtendedSegment[];\n let _calloutAnchor: string = '';\n\n React.useEffect(() => {\n if (_rootElem.current) {\n setWidth(_rootElem.current.clientWidth);\n setHeight(_rootElem.current.clientHeight);\n }\n }, []);\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 const classes = useGaugeChartStyles(props);\n function _getStylesBasedOnBreakpoint() {\n for (let index = BREAKPOINTS.length - 1; index >= 0; index -= 1) {\n if (_outerRadius >= BREAKPOINTS[index].minRadius) {\n return {\n arcWidth: BREAKPOINTS[index].arcWidth,\n chartValueSize: BREAKPOINTS[index].fontSize,\n };\n }\n }\n return {\n arcWidth: BREAKPOINTS[0].arcWidth,\n chartValueSize: BREAKPOINTS[0].fontSize,\n };\n }\n\n function _processProps() {\n const { minValue = 0, maxValue, segments, roundCorners } = props;\n\n let total = minValue;\n const processedSegments: ExtendedSegment[] = segments.map(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (segment: { size: number; legend: any; color: string; accessibilityData: any }, index: number) => {\n const size = Math.max(segment.size, 0);\n total += size;\n return {\n legend: segment.legend,\n size,\n color:\n typeof segment.color !== 'undefined'\n ? getColorFromToken(segment.color, false)\n : getNextColor(index, 0, false),\n accessibilityData: segment.accessibilityData,\n start: total - size,\n end: total,\n };\n },\n );\n if (typeof maxValue !== 'undefined' && total < maxValue) {\n processedSegments.push({\n legend: 'Unknown',\n size: maxValue - total,\n color: 'neutralLight',\n start: total,\n end: maxValue,\n });\n total = maxValue;\n }\n\n const arcGenerator = d3Arc()\n .cornerRadius(roundCorners ? 3 : 0)\n .padAngle(ARC_PADDING / _outerRadius)\n .padRadius(_outerRadius);\n const rtlSafeSegments = _isRTL ? Array.from(processedSegments).reverse() : processedSegments;\n let prevAngle = -Math.PI / 2;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const arcs = rtlSafeSegments.map((segment, index) => {\n const endAngle = prevAngle + (segment.size / (total - minValue)) * Math.PI;\n const d = arcGenerator({\n innerRadius: _innerRadius,\n outerRadius: _outerRadius,\n startAngle: prevAngle,\n endAngle,\n })!;\n prevAngle = endAngle;\n return {\n d,\n segmentIndex: _isRTL ? processedSegments.length - 1 - index : index,\n startAngle: prevAngle - (segment.size / (total - minValue)) * Math.PI,\n endAngle,\n };\n });\n\n _minValue = minValue;\n _maxValue = total;\n _segments = processedSegments;\n\n return {\n arcs,\n };\n }\n\n function _renderNeedle() {\n const needleRotation = calcNeedleRotation(props.chartValue, _minValue, _maxValue);\n const rtlSafeNeedleRotation = _isRTL ? 180 - needleRotation : needleRotation;\n const strokeWidth = 2;\n const halfStrokeWidth = strokeWidth / 2;\n const needleLength = _outerRadius - _innerRadius + EXTRA_NEEDLE_LENGTH;\n const needleId = `gauge-chart-needle`;\n return (\n <g transform={`rotate(${rtlSafeNeedleRotation}, 0, 0)`}>\n <path\n d={`\n M 0,${-halfStrokeWidth - 3}\n L ${-needleLength},${-halfStrokeWidth - 1}\n A ${halfStrokeWidth + 1},${halfStrokeWidth + 1},0,0,0,${-needleLength},${halfStrokeWidth + 1}\n L 0,${halfStrokeWidth + 3}\n A ${halfStrokeWidth + 3},${halfStrokeWidth + 3},0,0,0,0,${-halfStrokeWidth - 3}\n `}\n id={needleId}\n strokeWidth={strokeWidth}\n className={classes.needle}\n transform={`translate(${-_innerRadius + EXTRA_NEEDLE_LENGTH / 2})`}\n data-is-focusable={true}\n onFocus={e => _handleFocus(e, 'Needle', needleId)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, 'Needle', needleId)}\n onMouseMove={e => _handleMouseOver(e, 'Needle', needleId)}\n role=\"img\"\n aria-label={\n 'Current value: ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)\n }\n />\n </g>\n );\n }\n\n function _renderLegends() {\n if (props.hideLegend) {\n return null;\n }\n\n const legends: Legend[] = _segments.map((segment, index) => {\n const color: string = segment.color || getNextColor(index, 0, false);\n\n return {\n title: segment.legend,\n color,\n hoverAction: () => {\n setHoveredLegend(segment.legend);\n },\n onMouseOutAction: () => {\n setHoveredLegend('');\n },\n };\n });\n\n return (\n <div className={classes.legendsContainer}>\n <Legends\n legends={legends}\n centerLegends\n {...props.legendProps}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n </div>\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 /**\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 : hoveredLegend ? [hoveredLegend] : [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _handleFocus(focusEvent: React.FocusEvent<SVGElement>, focusedElement: string, elementId?: string) {\n _showCallout(focusEvent, focusedElement, true, elementId);\n }\n\n function _handleBlur() {\n _hideCallout(true);\n }\n\n function _handleMouseOver(mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string, elementId?: string) {\n _showCallout(mouseEvent, hoveredElement, false, elementId);\n }\n\n function _handleMouseOut() {\n _hideCallout(false);\n }\n\n function _handleCalloutDismiss() {\n _hideCallout(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _showCallout(\n event: React.MouseEvent<SVGElement, MouseEvent> | React.FocusEvent<SVGElement, Element>,\n legend: string,\n isFocusEvent: boolean,\n elementId?: string,\n ) {\n if (_calloutAnchor === legend) {\n return;\n }\n const targetElement = document.getElementById(elementId!);\n _calloutAnchor = legend;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverXValue: string =\n 'Current value is ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat, true);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverYValues: YValue[] = _segments\n .filter(segment => _noLegendHighlighted() || _legendHighlighted(segment.legend))\n .map(segment => {\n const yValue: YValue = {\n legend: segment.legend,\n y: getSegmentLabel(segment, _minValue, _maxValue, props.variant),\n color: segment.color,\n };\n return yValue;\n });\n setPopoverOpen(\n ['Needle', 'Chart value'].includes(legend) || _noLegendHighlighted() || _legendHighlighted(legend),\n );\n setRefSelected(targetElement);\n setHoverXValue(hoverXValue);\n setHoverYValues(hoverYValues);\n if (isFocusEvent) {\n setFocusedElement(legend);\n }\n }\n\n function _hideCallout(isBlurEvent?: boolean) {\n _calloutAnchor = '';\n setPopoverOpen(false);\n setHoverXValue('');\n setHoverYValues([]);\n if (isBlurEvent) {\n setFocusedElement('');\n }\n }\n\n function _wrapContent(content: string, id: string, maxWidth: number) {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n }\n\n // TO DO: Write a common functional component for Multi value callout and divide sub count method\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _multiValueCallout(calloutProps: any) {\n const yValueHoverSubCountsExists: boolean = _yValueHoverSubCountsExists(calloutProps.YValueHover);\n return (\n <div className={classes.calloutContentRoot}>\n <div\n className={classes.calloutDateTimeContainer}\n style={yValueHoverSubCountsExists ? { marginBottom: '11px' } : {}}\n >\n <div\n className={classes.calloutContentX}\n {...getAccessibleDataObject(calloutProps!.xAxisCalloutAccessibilityData, 'text', false)}\n >\n {formatToLocaleString(calloutProps!.hoverXValue, props.culture) as React.ReactNode}\n </div>\n </div>\n <div className={classes.calloutInfoContainer} style={yValueHoverSubCountsExists ? { display: 'flex' } : {}}>\n {calloutProps!.YValueHover &&\n calloutProps!.YValueHover.map((yValue: YValueHover, index: number, yValues: YValueHover[]) => {\n const isLast: boolean = index + 1 === yValues.length;\n const { shouldDrawBorderBottom = false } = yValue;\n return (\n <div\n {...getAccessibleDataObject(yValue.callOutAccessibilityData, 'text', false)}\n key={`callout-content-${index}`}\n style={\n yValueHoverSubCountsExists\n ? {\n display: 'inline-block',\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n : {\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n }\n >\n {_getCalloutContent(yValue, index, yValueHoverSubCountsExists, isLast)}\n </div>\n );\n })}\n {!!calloutProps.descriptionMessage && (\n <div className={classes.descriptionMessage}>{calloutProps.descriptionMessage}</div>\n )}\n </div>\n </div>\n );\n }\n\n function _yValueHoverSubCountsExists(yValueHover?: YValueHover[]) {\n if (yValueHover) {\n return yValueHover.some(\n (yValue: {\n legend?: string;\n y?: number;\n color?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n }) => yValue.yAxisCalloutData && typeof yValue.yAxisCalloutData !== 'string',\n );\n }\n return false;\n }\n\n function _getCalloutContent(\n xValue: YValueHover,\n index: number,\n yValueHoverSubCountsExists: boolean,\n isLast: boolean,\n ): React.ReactNode {\n const marginStyle: React.CSSProperties = isLast ? {} : { marginRight: '16px' };\n const toDrawShape = xValue.index !== undefined && xValue.index !== -1;\n const { culture } = props;\n const yValue = formatToLocaleString(xValue.y, culture) as React.ReactNode;\n if (!xValue.yAxisCalloutData || typeof xValue.yAxisCalloutData === 'string') {\n return (\n <div style={yValueHoverSubCountsExists ? marginStyle : {}}>\n {yValueHoverSubCountsExists && (\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n )}\n <div\n id={`${index}_${xValue.y}`}\n className={classes.calloutBlockContainer}\n style={{ borderInlineStart: `4px solid ${xValue.color}` }}\n >\n {toDrawShape && (\n <Shape\n svgProps={{\n className: classes.shapeStyles,\n }}\n pathProps={{ fill: xValue.color }}\n shape={Points[xValue.index! % Object.keys(pointTypes).length] as LegendShape}\n style={{ display: 'flex' }}\n />\n )}\n <div>\n <div className={classes.calloutlegendText}> {xValue.legend}</div>\n <div className={classes.calloutContentY}>\n {\n formatToLocaleString(\n xValue.yAxisCalloutData ? xValue.yAxisCalloutData : xValue.y || xValue.data,\n culture,\n ) as React.ReactNode\n }\n </div>\n </div>\n </div>\n </div>\n );\n } else {\n const subcounts: { [id: string]: number } = xValue.yAxisCalloutData as { [id: string]: number };\n return (\n <div style={marginStyle}>\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n {Object.keys(subcounts).map((subcountName: string) => {\n return (\n <div key={subcountName} className={classes.calloutBlockContainer}>\n <div className={classes.calloutlegendText}>\n {' '}\n {formatToLocaleString(subcountName, culture) as React.ReactNode}\n </div>\n <div className={classes.calloutContentY}>\n {formatToLocaleString(subcounts[subcountName], culture) as React.ReactNode}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n }\n\n function _getChartTitle(): string {\n const { chartTitle } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Gauge chart with ${_segments.length} segments. `;\n }\n const { arcs } = _processProps();\n const arrowAttributes = useArrowNavigationGroup({ circular: true, axis: 'horizontal' });\n return (\n <div\n className={classes.root}\n ref={el => {\n _rootElem.current = el;\n }}\n >\n <div className={classes.chartWrapper} {...arrowAttributes}>\n <svg\n className={classes.chart}\n width={_width}\n height={_height - _legendsHeight}\n role=\"region\"\n aria-label={_getChartTitle()}\n onMouseLeave={_handleMouseOut}\n >\n <g transform={`translate(${_width / 2}, ${_height - (_margins.bottom + _legendsHeight)})`}>\n {props.chartTitle && (\n <ChartTitle\n title={props.chartTitle}\n x={0}\n y={-(_outerRadius + TITLE_OFFSET)}\n className={classes.chartTitle}\n titleStyles={props.titleStyles}\n />\n )}\n {!props.hideMinMax && (\n <>\n <text\n x={(_isRTL ? 1 : -1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"end\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Min value: ${_minValue}`}\n >\n {formatScientificLimitWidth(_minValue)}\n </text>\n <text\n x={(_isRTL ? -1 : 1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"start\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Max value: ${_maxValue}`}\n >\n {formatScientificLimitWidth(_maxValue)}\n </text>\n </>\n )}\n {arcs.map((arc, index) => {\n const segment = _segments[arc.segmentIndex];\n const arcId = `gauge-chart-arc-${index}`;\n return (\n <React.Fragment key={index}>\n <path\n d={arc.d}\n id={arcId}\n strokeWidth={focusedElement === segment.legend ? ARC_PADDING : 0}\n className={classes.segment}\n fill={segment.color}\n opacity={_legendHighlighted(segment.legend) || _noLegendHighlighted() ? 1 : 0.1}\n {...getAccessibleDataObject(\n {\n ariaLabel: getSegmentLabel(segment, _minValue, _maxValue, props.variant, true),\n ...segment.accessibilityData,\n },\n 'img',\n true,\n )}\n onFocus={e => _handleFocus(e, segment.legend, arcId)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, segment.legend, arcId)}\n onMouseLeave={e => _handleCalloutDismiss()}\n onMouseMove={e => _handleMouseOver(e, segment.legend, arcId)}\n tabIndex={_legendHighlighted(segment.legend) || _noLegendHighlighted() ? 0 : undefined}\n />\n </React.Fragment>\n );\n })}\n {_renderNeedle()}\n <g\n onMouseEnter={e => _handleMouseOver(e, 'Chart value')}\n onMouseMove={e => _handleMouseOver(e, 'Chart value')}\n >\n <SVGTooltipText\n content={getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)}\n textProps={{\n x: 0,\n y: 0,\n textAnchor: 'middle',\n className: classes.chartValue,\n fontSize: chartValueSize,\n 'aria-hidden': 'true',\n }}\n maxWidth={_innerRadius * 2 - 24}\n wrapContent={_wrapContent}\n />\n </g>\n {props.sublabel && (\n <SVGTooltipText\n content={props.sublabel}\n textProps={{\n x: 0,\n y: 4,\n textAnchor: 'middle',\n dominantBaseline: 'hanging',\n className: classes.sublabel,\n }}\n maxWidth={_innerRadius * 2}\n wrapContent={_wrapContent}\n />\n )}\n </g>\n </svg>\n </div>\n {_renderLegends()}\n {!props.hideTooltip && isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n positioning={{\n target: refSelected,\n }}\n isPopoverOpen={isPopoverOpen}\n customCallout={{\n customizedCallout: _multiValueCallout({ hoverXValue: hoverXValue, YValueHover: hoverYValues }),\n }}\n />\n )}\n </div>\n );\n },\n);\nGaugeChart.displayName = 'GaugeChart';\n"],"names":["React","useGaugeChartStyles","select","d3Select","arc","d3Arc","Points","areArraysEqual","formatScientificLimitWidth","getAccessibleDataObject","getColorFromToken","getNextColor","pointTypes","useRtl","ChartTitle","formatToLocaleString","SVGTooltipText","Legends","Shape","useArrowNavigationGroup","ChartPopover","useImageExport","GAUGE_MARGIN","LABEL_WIDTH","LABEL_HEIGHT","LABEL_OFFSET","TITLE_OFFSET","EXTRA_NEEDLE_LENGTH","ARC_PADDING","BREAKPOINTS","minRadius","arcWidth","fontSize","calcNeedleRotation","chartValue","minValue","maxValue","needleRotation","getSegmentLabel","segment","variant","isAriaLabel","legend","size","toFixed","start","end","getChartValueLabel","chartValueFormat","forCallout","toString","GaugeChart","forwardRef","props","forwardedRef","_getMargins","hideMinMax","chartTitle","sublabel","left","right","top","bottom","_margins","_legendsHeight","hideLegend","chartContainerRef","_rootElem","legendsRef","_legendsRef","componentRef","_isRTL","width","setWidth","useState","height","setHeight","hoveredLegend","setHoveredLegend","selectedLegends","setSelectedLegends","legendProps","focusedElement","setFocusedElement","isPopoverOpen","setPopoverOpen","hoverXValue","setHoverXValue","hoverYValues","setHoverYValues","refSelected","setRefSelected","prevPropsRef","useRef","_width","_height","_outerRadius","Math","min","chartValueSize","_getStylesBasedOnBreakpoint","_innerRadius","_minValue","_maxValue","_segments","_calloutAnchor","useEffect","current","clientWidth","clientHeight","prevProps","classes","index","length","_processProps","segments","roundCorners","total","processedSegments","map","max","color","accessibilityData","push","arcGenerator","cornerRadius","padAngle","padRadius","rtlSafeSegments","Array","from","reverse","prevAngle","PI","arcs","endAngle","d","innerRadius","outerRadius","startAngle","segmentIndex","_renderNeedle","rtlSafeNeedleRotation","strokeWidth","halfStrokeWidth","needleLength","needleId","g","transform","path","id","className","needle","data-is-focusable","onFocus","e","_handleFocus","onBlur","_handleBlur","onMouseEnter","_handleMouseOver","onMouseMove","role","aria-label","_renderLegends","legends","title","hoverAction","onMouseOutAction","div","legendsContainer","centerLegends","onChange","_onLegendSelectionChange","legendRef","event","currentLegend","canSelectMultipleLegends","slice","_legendHighlighted","_getHighlightedLegend","includes","_noLegendHighlighted","focusEvent","elementId","_showCallout","_hideCallout","mouseEvent","hoveredElement","_handleMouseOut","_handleCalloutDismiss","isFocusEvent","targetElement","document","getElementById","filter","yValue","y","isBlurEvent","_wrapContent","content","maxWidth","textElement","text","node","isOverflowing","textLength","getComputedTextLength","_multiValueCallout","calloutProps","yValueHoverSubCountsExists","_yValueHoverSubCountsExists","YValueHover","calloutContentRoot","calloutDateTimeContainer","style","marginBottom","calloutContentX","xAxisCalloutAccessibilityData","culture","calloutInfoContainer","display","yValues","isLast","shouldDrawBorderBottom","callOutAccessibilityData","key","paddingBottom","_getCalloutContent","descriptionMessage","yValueHover","some","yAxisCalloutData","xValue","marginStyle","marginRight","toDrawShape","undefined","calloutBlockContainer","borderInlineStart","svgProps","shapeStyles","pathProps","fill","shape","Object","keys","calloutlegendText","calloutContentY","data","subcounts","subcountName","_getChartTitle","arrowAttributes","circular","axis","root","ref","el","chartWrapper","svg","chart","onMouseLeave","x","titleStyles","textAnchor","limits","arcId","Fragment","opacity","ariaLabel","tabIndex","textProps","wrapContent","dominantBaseline","hideTooltip","positioning","target","customCallout","customizedCallout","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/GaugeChart/GaugeChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useGaugeChartStyles } from './useGaugeChartStyles.styles';\nimport { select as d3Select } from 'd3-selection';\nimport { arc as d3Arc } from 'd3-shape';\nimport { YValueHover } from '../../index';\nimport {\n Points,\n areArraysEqual,\n formatScientificLimitWidth,\n getAccessibleDataObject,\n getColorFromToken,\n getNextColor,\n pointTypes,\n useRtl,\n ChartTitle,\n} from '../../utilities/index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { SVGTooltipText } from '../../utilities/SVGTooltipText';\nimport { Legend, LegendShape, Legends, Shape } from '../Legends/index';\nimport { GaugeChartVariant, GaugeValueFormat, GaugeChartProps, GaugeChartSegment } from './GaugeChart.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { useImageExport } from '../../utilities/hooks';\n\nconst GAUGE_MARGIN = 16;\nconst LABEL_WIDTH = 36;\nconst LABEL_HEIGHT = 16;\nconst LABEL_OFFSET = 4;\nconst TITLE_OFFSET = 11;\nconst EXTRA_NEEDLE_LENGTH = 4;\nexport const ARC_PADDING = 2;\nexport const BREAKPOINTS = [\n { minRadius: 52, arcWidth: 12, fontSize: 20 },\n { minRadius: 70, arcWidth: 16, fontSize: 24 },\n { minRadius: 88, arcWidth: 20, fontSize: 32 },\n { minRadius: 106, arcWidth: 24, fontSize: 32 },\n { minRadius: 124, arcWidth: 28, fontSize: 40 },\n { minRadius: 142, arcWidth: 32, fontSize: 40 },\n];\n\nexport const calcNeedleRotation = (chartValue: number, minValue: number, maxValue: number): number => {\n let needleRotation = ((chartValue - minValue) / (maxValue - minValue)) * 180;\n if (needleRotation < 0) {\n needleRotation = 0;\n } else if (needleRotation > 180) {\n needleRotation = 180;\n }\n\n return needleRotation;\n};\n\nexport const getSegmentLabel = (\n segment: ExtendedSegment,\n minValue: number,\n maxValue: number,\n variant?: GaugeChartVariant,\n isAriaLabel: boolean = false,\n): string => {\n if (isAriaLabel) {\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.legend}, ${segment.size} out of ${maxValue} or ${((segment.size / maxValue) * 100).toFixed()}%`\n : `${segment.legend}, ${segment.start} to ${segment.end}`;\n }\n\n return minValue === 0 && variant === 'single-segment'\n ? `${segment.size} (${((segment.size / maxValue) * 100).toFixed()}%)`\n : `${segment.start} - ${segment.end}`;\n};\n\nexport const getChartValueLabel = (\n chartValue: number,\n minValue: number,\n maxValue: number,\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string),\n forCallout: boolean = false,\n): string => {\n if (forCallout) {\n // When displaying the chart value as a percentage, use fractions in the callout, and vice versa.\n // This helps clarify the actual value and avoid repetition.\n return minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${((chartValue / maxValue) * 100).toFixed()}%`\n : `${chartValue}/${maxValue}`;\n }\n\n return typeof chartValueFormat === 'function'\n ? chartValueFormat([chartValue - minValue, maxValue - minValue])\n : minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === 'fraction'\n ? `${chartValue}/${maxValue}`\n : `${((chartValue / maxValue) * 100).toFixed()}%`;\n};\n\ninterface YValue extends Omit<YValueHover, 'y'> {\n y?: string | number;\n}\nexport interface ExtendedSegment extends GaugeChartSegment {\n start: number;\n end: number;\n}\n\nexport const GaugeChart: React.FunctionComponent<GaugeChartProps> = React.forwardRef<HTMLDivElement, GaugeChartProps>(\n (props, forwardedRef) => {\n const _getMargins = () => {\n const { hideMinMax, chartTitle, sublabel } = props;\n return {\n left: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n right: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n top: (chartTitle ? TITLE_OFFSET + LABEL_HEIGHT : EXTRA_NEEDLE_LENGTH / 2) + GAUGE_MARGIN,\n bottom: (sublabel ? LABEL_OFFSET + LABEL_HEIGHT : 0) + GAUGE_MARGIN,\n };\n };\n const _margins: { left: number; right: number; top: number; bottom: number } = _getMargins();\n const _legendsHeight: number = !props.hideLegend ? 32 : 0;\n const { chartContainerRef: _rootElem, legendsRef: _legendsRef } = useImageExport(\n props.componentRef,\n props.hideLegend,\n false,\n );\n const _isRTL: boolean = useRtl();\n const [width, setWidth] = React.useState<number>(140 + _getMargins().left + _getMargins().right);\n const [height, setHeight] = React.useState<number>(70 + _getMargins().top + _getMargins().bottom + _legendsHeight);\n const [hoveredLegend, setHoveredLegend] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [focusedElement, setFocusedElement] = React.useState<string | undefined>('');\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [hoverYValues, setHoverYValues] = React.useState<YValue[]>([]);\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n const prevPropsRef = React.useRef<GaugeChartProps | null>(null);\n const _width = props.width || width;\n const _height = props.height || height;\n const _outerRadius: number = Math.min(\n (_width - (_margins.left + _margins.right)) / 2,\n _height - (_margins.top + _margins.bottom + _legendsHeight),\n );\n const { arcWidth, chartValueSize } = _getStylesBasedOnBreakpoint();\n const _innerRadius: number = _outerRadius - arcWidth;\n let _minValue!: number;\n let _maxValue!: number;\n let _segments!: ExtendedSegment[];\n let _calloutAnchor: string = '';\n\n React.useEffect(() => {\n if (_rootElem.current) {\n setWidth(_rootElem.current.clientWidth);\n setHeight(_rootElem.current.clientHeight);\n }\n }, []);\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 const classes = useGaugeChartStyles(props);\n function _getStylesBasedOnBreakpoint() {\n for (let index = BREAKPOINTS.length - 1; index >= 0; index -= 1) {\n if (_outerRadius >= BREAKPOINTS[index].minRadius) {\n return {\n arcWidth: BREAKPOINTS[index].arcWidth,\n chartValueSize: BREAKPOINTS[index].fontSize,\n };\n }\n }\n return {\n arcWidth: BREAKPOINTS[0].arcWidth,\n chartValueSize: BREAKPOINTS[0].fontSize,\n };\n }\n\n function _processProps() {\n const { minValue = 0, maxValue, segments, roundCorners } = props;\n\n let total = minValue;\n const processedSegments: ExtendedSegment[] = segments.map(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (segment: { size: number; legend: any; color: string; accessibilityData: any }, index: number) => {\n const size = Math.max(segment.size, 0);\n total += size;\n return {\n legend: segment.legend,\n size,\n color:\n typeof segment.color !== 'undefined'\n ? getColorFromToken(segment.color, false)\n : getNextColor(index, 0, false),\n accessibilityData: segment.accessibilityData,\n start: total - size,\n end: total,\n };\n },\n );\n if (typeof maxValue !== 'undefined' && total < maxValue) {\n processedSegments.push({\n legend: 'Unknown',\n size: maxValue - total,\n color: 'neutralLight',\n start: total,\n end: maxValue,\n });\n total = maxValue;\n }\n\n const arcGenerator = d3Arc()\n .cornerRadius(roundCorners ? 3 : 0)\n .padAngle(ARC_PADDING / _outerRadius)\n .padRadius(_outerRadius);\n const rtlSafeSegments = _isRTL ? Array.from(processedSegments).reverse() : processedSegments;\n let prevAngle = -Math.PI / 2;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const arcs = rtlSafeSegments.map((segment, index) => {\n const endAngle = prevAngle + (segment.size / (total - minValue)) * Math.PI;\n const d = arcGenerator({\n innerRadius: _innerRadius,\n outerRadius: _outerRadius,\n startAngle: prevAngle,\n endAngle,\n })!;\n prevAngle = endAngle;\n return {\n d,\n segmentIndex: _isRTL ? processedSegments.length - 1 - index : index,\n startAngle: prevAngle - (segment.size / (total - minValue)) * Math.PI,\n endAngle,\n };\n });\n\n _minValue = minValue;\n _maxValue = total;\n _segments = processedSegments;\n\n return {\n arcs,\n };\n }\n\n function _renderNeedle() {\n const needleRotation = calcNeedleRotation(props.chartValue, _minValue, _maxValue);\n const rtlSafeNeedleRotation = _isRTL ? 180 - needleRotation : needleRotation;\n const strokeWidth = 2;\n const halfStrokeWidth = strokeWidth / 2;\n const needleLength = _outerRadius - _innerRadius + EXTRA_NEEDLE_LENGTH;\n const needleId = `gauge-chart-needle`;\n return (\n <g transform={`rotate(${rtlSafeNeedleRotation}, 0, 0)`}>\n <path\n d={`\n M 0,${-halfStrokeWidth - 3}\n L ${-needleLength},${-halfStrokeWidth - 1}\n A ${halfStrokeWidth + 1},${halfStrokeWidth + 1},0,0,0,${-needleLength},${halfStrokeWidth + 1}\n L 0,${halfStrokeWidth + 3}\n A ${halfStrokeWidth + 3},${halfStrokeWidth + 3},0,0,0,0,${-halfStrokeWidth - 3}\n `}\n id={needleId}\n strokeWidth={strokeWidth}\n className={classes.needle}\n transform={`translate(${-_innerRadius + EXTRA_NEEDLE_LENGTH / 2})`}\n data-is-focusable={true}\n onFocus={e => _handleFocus(e, 'Needle', needleId)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, 'Needle', needleId)}\n onMouseMove={e => _handleMouseOver(e, 'Needle', needleId)}\n role=\"img\"\n aria-label={\n 'Current value: ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)\n }\n />\n </g>\n );\n }\n\n function _renderLegends() {\n if (props.hideLegend) {\n return null;\n }\n\n const legends: Legend[] = _segments.map((segment, index) => {\n const color: string = segment.color || getNextColor(index, 0, false);\n\n return {\n title: segment.legend,\n color,\n hoverAction: () => {\n setHoveredLegend(segment.legend);\n },\n onMouseOutAction: () => {\n setHoveredLegend('');\n },\n };\n });\n\n return (\n <div className={classes.legendsContainer}>\n <Legends\n legends={legends}\n centerLegends\n {...props.legendProps}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n </div>\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 /**\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 : hoveredLegend ? [hoveredLegend] : [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _handleFocus(focusEvent: React.FocusEvent<SVGElement>, focusedElement: string, elementId?: string) {\n _showCallout(focusEvent, focusedElement, true, elementId);\n }\n\n function _handleBlur() {\n _hideCallout(true);\n }\n\n function _handleMouseOver(mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string, elementId?: string) {\n _showCallout(mouseEvent, hoveredElement, false, elementId);\n }\n\n function _handleMouseOut() {\n _hideCallout(false);\n }\n\n function _handleCalloutDismiss() {\n _hideCallout(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _showCallout(\n event: React.MouseEvent<SVGElement, MouseEvent> | React.FocusEvent<SVGElement, Element>,\n legend: string,\n isFocusEvent: boolean,\n elementId?: string,\n ) {\n if (_calloutAnchor === legend) {\n return;\n }\n const targetElement = document.getElementById(elementId!);\n _calloutAnchor = legend;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverXValue: string =\n 'Current value is ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat, true);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverYValues: YValue[] = _segments\n .filter(segment => _noLegendHighlighted() || _legendHighlighted(segment.legend))\n .map(segment => {\n const yValue: YValue = {\n legend: segment.legend,\n y: getSegmentLabel(segment, _minValue, _maxValue, props.variant),\n color: segment.color,\n };\n return yValue;\n });\n setPopoverOpen(\n ['Needle', 'Chart value'].includes(legend) || _noLegendHighlighted() || _legendHighlighted(legend),\n );\n setRefSelected(targetElement);\n setHoverXValue(hoverXValue);\n setHoverYValues(hoverYValues);\n if (isFocusEvent) {\n setFocusedElement(legend);\n }\n }\n\n function _hideCallout(isBlurEvent?: boolean) {\n _calloutAnchor = '';\n setPopoverOpen(false);\n setHoverXValue('');\n setHoverYValues([]);\n if (isBlurEvent) {\n setFocusedElement('');\n }\n }\n\n function _wrapContent(content: string, id: string, maxWidth: number) {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n }\n\n // TO DO: Write a common functional component for Multi value callout and divide sub count method\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _multiValueCallout(calloutProps: any) {\n const yValueHoverSubCountsExists: boolean = _yValueHoverSubCountsExists(calloutProps.YValueHover);\n return (\n <div className={classes.calloutContentRoot}>\n <div\n className={classes.calloutDateTimeContainer}\n style={yValueHoverSubCountsExists ? { marginBottom: '11px' } : {}}\n >\n <div\n className={classes.calloutContentX}\n {...getAccessibleDataObject(calloutProps!.xAxisCalloutAccessibilityData, 'text', false)}\n >\n {formatToLocaleString(calloutProps!.hoverXValue, props.culture) as React.ReactNode}\n </div>\n </div>\n <div className={classes.calloutInfoContainer} style={yValueHoverSubCountsExists ? { display: 'flex' } : {}}>\n {calloutProps!.YValueHover &&\n calloutProps!.YValueHover.map((yValue: YValueHover, index: number, yValues: YValueHover[]) => {\n const isLast: boolean = index + 1 === yValues.length;\n const { shouldDrawBorderBottom = false } = yValue;\n return (\n <div\n {...getAccessibleDataObject(yValue.callOutAccessibilityData, 'text', false)}\n key={`callout-content-${index}`}\n style={\n yValueHoverSubCountsExists\n ? {\n display: 'inline-block',\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n : {\n ...(shouldDrawBorderBottom && {\n paddingBottom: '10px',\n }),\n }\n }\n >\n {_getCalloutContent(yValue, index, yValueHoverSubCountsExists, isLast)}\n </div>\n );\n })}\n {!!calloutProps.descriptionMessage && (\n <div className={classes.descriptionMessage}>{calloutProps.descriptionMessage}</div>\n )}\n </div>\n </div>\n );\n }\n\n function _yValueHoverSubCountsExists(yValueHover?: YValueHover[]) {\n if (yValueHover) {\n return yValueHover.some(\n (yValue: {\n legend?: string;\n y?: number;\n color?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n }) => yValue.yAxisCalloutData && typeof yValue.yAxisCalloutData !== 'string',\n );\n }\n return false;\n }\n\n function _getCalloutContent(\n xValue: YValueHover,\n index: number,\n yValueHoverSubCountsExists: boolean,\n isLast: boolean,\n ): React.ReactNode {\n const marginStyle: React.CSSProperties = isLast ? {} : { marginRight: '16px' };\n const toDrawShape = xValue.index !== undefined && xValue.index !== -1;\n const { culture } = props;\n const yValue = formatToLocaleString(xValue.y, culture) as React.ReactNode;\n if (!xValue.yAxisCalloutData || typeof xValue.yAxisCalloutData === 'string') {\n return (\n <div style={yValueHoverSubCountsExists ? marginStyle : {}}>\n {yValueHoverSubCountsExists && (\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n )}\n <div\n id={`${index}_${xValue.y}`}\n className={classes.calloutBlockContainer}\n style={{ borderInlineStart: `4px solid ${xValue.color}` }}\n >\n {toDrawShape && (\n <Shape\n svgProps={{\n className: classes.shapeStyles,\n }}\n pathProps={{ fill: xValue.color }}\n shape={Points[xValue.index! % Object.keys(pointTypes).length] as LegendShape}\n style={{ display: 'flex' }}\n />\n )}\n <div>\n <div className={classes.calloutlegendText}> {xValue.legend}</div>\n <div className={classes.calloutContentY}>\n {\n formatToLocaleString(\n xValue.yAxisCalloutData ? xValue.yAxisCalloutData : xValue.y || xValue.data,\n culture,\n ) as React.ReactNode\n }\n </div>\n </div>\n </div>\n </div>\n );\n } else {\n const subcounts: { [id: string]: number } = xValue.yAxisCalloutData as { [id: string]: number };\n return (\n <div style={marginStyle}>\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n {Object.keys(subcounts).map((subcountName: string) => {\n return (\n <div key={subcountName} className={classes.calloutBlockContainer}>\n <div className={classes.calloutlegendText}>\n {' '}\n {formatToLocaleString(subcountName, culture) as React.ReactNode}\n </div>\n <div className={classes.calloutContentY}>\n {formatToLocaleString(subcounts[subcountName], culture) as React.ReactNode}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n }\n\n function _getChartTitle(): string {\n const { chartTitle } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Gauge chart with ${_segments.length} segments. `;\n }\n const { arcs } = _processProps();\n const arrowAttributes = useArrowNavigationGroup({ circular: true, axis: 'horizontal' });\n return (\n <div\n className={classes.root}\n ref={el => {\n _rootElem.current = el;\n }}\n >\n <div className={classes.chartWrapper} {...arrowAttributes}>\n <svg\n className={classes.chart}\n width={_width}\n height={_height - _legendsHeight}\n role=\"region\"\n aria-label={_getChartTitle()}\n onMouseLeave={_handleMouseOut}\n >\n <g transform={`translate(${_width / 2}, ${_height - (_margins.bottom + _legendsHeight)})`}>\n {props.chartTitle && (\n <ChartTitle\n title={props.chartTitle}\n x={0}\n y={-(_outerRadius + TITLE_OFFSET)}\n className={classes.chartTitle}\n titleStyles={props.titleStyles}\n tooltipClassName={classes.svgTooltip}\n />\n )}\n {!props.hideMinMax && (\n <>\n <text\n x={(_isRTL ? 1 : -1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"end\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Min value: ${_minValue}`}\n >\n {formatScientificLimitWidth(_minValue)}\n </text>\n <text\n x={(_isRTL ? -1 : 1) * (_outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"start\"\n className={classes.limits}\n role=\"img\"\n aria-label={`Max value: ${_maxValue}`}\n >\n {formatScientificLimitWidth(_maxValue)}\n </text>\n </>\n )}\n {arcs.map((arc, index) => {\n const segment = _segments[arc.segmentIndex];\n const arcId = `gauge-chart-arc-${index}`;\n return (\n <React.Fragment key={index}>\n <path\n d={arc.d}\n id={arcId}\n strokeWidth={focusedElement === segment.legend ? ARC_PADDING : 0}\n className={classes.segment}\n fill={segment.color}\n opacity={_legendHighlighted(segment.legend) || _noLegendHighlighted() ? 1 : 0.1}\n {...getAccessibleDataObject(\n {\n ariaLabel: getSegmentLabel(segment, _minValue, _maxValue, props.variant, true),\n ...segment.accessibilityData,\n },\n 'img',\n true,\n )}\n onFocus={e => _handleFocus(e, segment.legend, arcId)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, segment.legend, arcId)}\n onMouseLeave={e => _handleCalloutDismiss()}\n onMouseMove={e => _handleMouseOver(e, segment.legend, arcId)}\n tabIndex={_legendHighlighted(segment.legend) || _noLegendHighlighted() ? 0 : undefined}\n />\n </React.Fragment>\n );\n })}\n {_renderNeedle()}\n <g\n onMouseEnter={e => _handleMouseOver(e, 'Chart value')}\n onMouseMove={e => _handleMouseOver(e, 'Chart value')}\n >\n <SVGTooltipText\n content={getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat)}\n textProps={{\n x: 0,\n y: 0,\n textAnchor: 'middle',\n className: classes.chartValue,\n fontSize: chartValueSize,\n 'aria-hidden': 'true',\n }}\n maxWidth={_innerRadius * 2 - 24}\n wrapContent={_wrapContent}\n />\n </g>\n {props.sublabel && (\n <SVGTooltipText\n content={props.sublabel}\n textProps={{\n x: 0,\n y: 4,\n textAnchor: 'middle',\n dominantBaseline: 'hanging',\n className: classes.sublabel,\n }}\n maxWidth={_innerRadius * 2}\n wrapContent={_wrapContent}\n />\n )}\n </g>\n </svg>\n </div>\n {_renderLegends()}\n {!props.hideTooltip && isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n positioning={{\n target: refSelected,\n }}\n isPopoverOpen={isPopoverOpen}\n customCallout={{\n customizedCallout: _multiValueCallout({ hoverXValue: hoverXValue, YValueHover: hoverYValues }),\n }}\n />\n )}\n </div>\n );\n },\n);\nGaugeChart.displayName = 'GaugeChart';\n"],"names":["React","useGaugeChartStyles","select","d3Select","arc","d3Arc","Points","areArraysEqual","formatScientificLimitWidth","getAccessibleDataObject","getColorFromToken","getNextColor","pointTypes","useRtl","ChartTitle","formatToLocaleString","SVGTooltipText","Legends","Shape","useArrowNavigationGroup","ChartPopover","useImageExport","GAUGE_MARGIN","LABEL_WIDTH","LABEL_HEIGHT","LABEL_OFFSET","TITLE_OFFSET","EXTRA_NEEDLE_LENGTH","ARC_PADDING","BREAKPOINTS","minRadius","arcWidth","fontSize","calcNeedleRotation","chartValue","minValue","maxValue","needleRotation","getSegmentLabel","segment","variant","isAriaLabel","legend","size","toFixed","start","end","getChartValueLabel","chartValueFormat","forCallout","toString","GaugeChart","forwardRef","props","forwardedRef","_getMargins","hideMinMax","chartTitle","sublabel","left","right","top","bottom","_margins","_legendsHeight","hideLegend","chartContainerRef","_rootElem","legendsRef","_legendsRef","componentRef","_isRTL","width","setWidth","useState","height","setHeight","hoveredLegend","setHoveredLegend","selectedLegends","setSelectedLegends","legendProps","focusedElement","setFocusedElement","isPopoverOpen","setPopoverOpen","hoverXValue","setHoverXValue","hoverYValues","setHoverYValues","refSelected","setRefSelected","prevPropsRef","useRef","_width","_height","_outerRadius","Math","min","chartValueSize","_getStylesBasedOnBreakpoint","_innerRadius","_minValue","_maxValue","_segments","_calloutAnchor","useEffect","current","clientWidth","clientHeight","prevProps","classes","index","length","_processProps","segments","roundCorners","total","processedSegments","map","max","color","accessibilityData","push","arcGenerator","cornerRadius","padAngle","padRadius","rtlSafeSegments","Array","from","reverse","prevAngle","PI","arcs","endAngle","d","innerRadius","outerRadius","startAngle","segmentIndex","_renderNeedle","rtlSafeNeedleRotation","strokeWidth","halfStrokeWidth","needleLength","needleId","g","transform","path","id","className","needle","data-is-focusable","onFocus","e","_handleFocus","onBlur","_handleBlur","onMouseEnter","_handleMouseOver","onMouseMove","role","aria-label","_renderLegends","legends","title","hoverAction","onMouseOutAction","div","legendsContainer","centerLegends","onChange","_onLegendSelectionChange","legendRef","event","currentLegend","canSelectMultipleLegends","slice","_legendHighlighted","_getHighlightedLegend","includes","_noLegendHighlighted","focusEvent","elementId","_showCallout","_hideCallout","mouseEvent","hoveredElement","_handleMouseOut","_handleCalloutDismiss","isFocusEvent","targetElement","document","getElementById","filter","yValue","y","isBlurEvent","_wrapContent","content","maxWidth","textElement","text","node","isOverflowing","textLength","getComputedTextLength","_multiValueCallout","calloutProps","yValueHoverSubCountsExists","_yValueHoverSubCountsExists","YValueHover","calloutContentRoot","calloutDateTimeContainer","style","marginBottom","calloutContentX","xAxisCalloutAccessibilityData","culture","calloutInfoContainer","display","yValues","isLast","shouldDrawBorderBottom","callOutAccessibilityData","key","paddingBottom","_getCalloutContent","descriptionMessage","yValueHover","some","yAxisCalloutData","xValue","marginStyle","marginRight","toDrawShape","undefined","calloutBlockContainer","borderInlineStart","svgProps","shapeStyles","pathProps","fill","shape","Object","keys","calloutlegendText","calloutContentY","data","subcounts","subcountName","_getChartTitle","arrowAttributes","circular","axis","root","ref","el","chartWrapper","svg","chart","onMouseLeave","x","titleStyles","tooltipClassName","svgTooltip","textAnchor","limits","arcId","Fragment","opacity","ariaLabel","tabIndex","textProps","wrapContent","dominantBaseline","hideTooltip","positioning","target","customCallout","customizedCallout","displayName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/GaugeChart/GaugeChart.types.ts"],"sourcesContent":["import { LegendsProps } from '../Legends/index';\nimport { AccessibilityProps, Chart } from '../../types/index';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\nimport type { TitleStyles } from '../../utilities/Common.styles';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Gradient color of the segment\n */\n gradient?: [string, string];\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeValueFormat = 'percentage' | 'fraction';\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeChartVariant = 'single-segment' | 'multiple-segments';\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartProps {\n /**\n * Title styles configuration for the chart title\n */\n titleStyles?: TitleStyles;\n\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: GaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /*\n * Props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: GaugeChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ChartPopoverProps>;\n\n /**\n * Specifies the variant of GaugeChart to be rendered\n * @defaultvalue GaugeChartVariant.MultipleSegments\n */\n variant?: GaugeChartVariant;\n\n /**\n * Prop to enable the gradient in the chart\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * Prop to enable the round corners in the chart\n * @default false\n */\n roundCorners?: boolean;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<Chart>;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartStyles {\n /**\n * Styles for the root element\n */\n root?: string;\n\n /**\n * Styles for the chart\n */\n chart?: string;\n\n /**\n * Styles for the min and max values\n */\n limits?: string;\n\n /**\n * Styles for the chart value\n */\n chartValue?: string;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: string;\n\n /**\n * Styles for the needle\n */\n needle?: string;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: string;\n\n /**\n * Styles for the segments\n */\n segment?: string;\n\n /**\n * Styles for gradient segments\n */\n gradientSegment?: string;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: string;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: string;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: string;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: string;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: string;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: string;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: string;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: string;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: string;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: string;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: string;\n}\n"],"names":[],"mappings":"AAsKA;;;CAGC,GACD,
|
|
1
|
+
{"version":3,"sources":["../src/components/GaugeChart/GaugeChart.types.ts"],"sourcesContent":["import { LegendsProps } from '../Legends/index';\nimport { AccessibilityProps, Chart } from '../../types/index';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\nimport type { TitleStyles } from '../../utilities/Common.styles';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Gradient color of the segment\n */\n gradient?: [string, string];\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeValueFormat = 'percentage' | 'fraction';\n\n/**\n * {@docCategory GaugeChart}\n */\nexport type GaugeChartVariant = 'single-segment' | 'multiple-segments';\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartProps {\n /**\n * Title styles configuration for the chart title\n */\n titleStyles?: TitleStyles;\n\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: GaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /*\n * Props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: GaugeChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ChartPopoverProps>;\n\n /**\n * Specifies the variant of GaugeChart to be rendered\n * @defaultvalue GaugeChartVariant.MultipleSegments\n */\n variant?: GaugeChartVariant;\n\n /**\n * Prop to enable the gradient in the chart\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * Prop to enable the round corners in the chart\n * @default false\n */\n roundCorners?: boolean;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<Chart>;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface GaugeChartStyles {\n /**\n * Styles for the root element\n */\n root?: string;\n\n /**\n * Styles for the chart\n */\n chart?: string;\n\n /**\n * Styles for the min and max values\n */\n limits?: string;\n\n /**\n * Styles for the chart value\n */\n chartValue?: string;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: string;\n\n /**\n * Styles for the needle\n */\n needle?: string;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: string;\n\n /**\n * Style for SVG tooltip text\n */\n svgTooltip?: string;\n\n /**\n * Styles for the segments\n */\n segment?: string;\n\n /**\n * Styles for gradient segments\n */\n gradientSegment?: string;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: string;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: string;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: string;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: string;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: string;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: string;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: string;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: string;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: string;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: string;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: string;\n}\n"],"names":[],"mappings":"AAsKA;;;CAGC,GACD,WAyGC"}
|