@fluentui/react-charts 9.1.5 → 9.1.7
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 +30 -2
- package/dist/index.d.ts +46 -4
- package/lib/components/AreaChart/AreaChart.js +3 -3
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +42 -9
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.js +3 -2
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +37 -9
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +11 -5
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +13 -13
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.js +10 -3
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js +7 -2
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +7 -6
- package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +16 -17
- 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 +15 -13
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +3 -3
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +4 -1
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +9 -3
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js +14 -3
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +0 -61
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +6 -31
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.js +2 -1
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +3 -3
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +2 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js +25 -23
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +29 -0
- package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -0
- package/lib/components/SankeyChart/SankeyChart.js +29 -35
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +13 -7
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +15 -17
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +3 -2
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +19 -21
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +2 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +17 -14
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/utilities/utilities.js +11 -5
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +2 -2
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +2 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +41 -8
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.js +3 -2
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +55 -9
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +14 -5
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +13 -13
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js +10 -3
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +10 -2
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +8 -7
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +16 -17
- 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 +13 -23
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +2 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +4 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +10 -3
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +14 -3
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +0 -61
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +5 -54
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +2 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +2 -2
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +2 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +25 -23
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +49 -0
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +29 -35
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +15 -8
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +13 -15
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +5 -4
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +18 -20
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +2 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +16 -13
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +16 -7
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +5 -5
|
@@ -45,6 +45,11 @@ const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
45
45
|
const yValue = point.yAxisCalloutData || point.data || 0;
|
|
46
46
|
return ((_point_callOutAccessibilityData = point.callOutAccessibilityData) === null || _point_callOutAccessibilityData === void 0 ? void 0 : _point_callOutAccessibilityData.ariaLabel) || (legend ? `${legend}, ` : '') + `${yValue}.`;
|
|
47
47
|
}
|
|
48
|
+
function _shouldHighlightArc(legend) {
|
|
49
|
+
const { activeArc } = props;
|
|
50
|
+
// If no activeArc is provided, highlight all arcs. Otherwise, only highlight the arcs that are active.
|
|
51
|
+
return !activeArc || activeArc.length === 0 || legend === undefined || activeArc.includes(legend);
|
|
52
|
+
}
|
|
48
53
|
function _renderArcLabel(className) {
|
|
49
54
|
const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;
|
|
50
55
|
if (hideLabels || Math.abs(data.endAngle - data.startAngle) < Math.PI / 12 || activeArc !== data.data.legend && activeArc !== '') {
|
|
@@ -78,13 +83,14 @@ const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
78
83
|
//TO DO 'replace' is throwing error
|
|
79
84
|
const id = props.uniqText + (typeof props.data.data.legend === 'string' ? props.data.data.legend.replace(/\s+/g, '') : '') + props.data.data.data;
|
|
80
85
|
const opacity = props.activeArc === props.data.data.legend || props.activeArc === '' ? 1 : 0.1;
|
|
86
|
+
const cornerRadius = props.roundCorners ? 3 : 0;
|
|
81
87
|
return /*#__PURE__*/ _react.createElement("g", {
|
|
82
88
|
ref: currentRef
|
|
83
89
|
}, !!focusedArcId && focusedArcId === id && // TODO innerradius and outerradius were absent
|
|
84
90
|
/*#__PURE__*/ _react.createElement("path", {
|
|
85
91
|
id: id + 'focusRing',
|
|
86
|
-
d: arc({
|
|
87
|
-
...props.
|
|
92
|
+
d: arc.cornerRadius(cornerRadius)({
|
|
93
|
+
...props.data,
|
|
88
94
|
innerRadius: props.innerRadius,
|
|
89
95
|
outerRadius: props.outerRadius
|
|
90
96
|
}),
|
|
@@ -92,7 +98,7 @@ const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
92
98
|
}), /*#__PURE__*/ _react.createElement("path", {
|
|
93
99
|
// TODO innerradius and outerradius were absent
|
|
94
100
|
id: id,
|
|
95
|
-
d: arc({
|
|
101
|
+
d: arc.cornerRadius(cornerRadius)({
|
|
96
102
|
...props.data,
|
|
97
103
|
innerRadius: props.innerRadius,
|
|
98
104
|
outerRadius: props.outerRadius
|
|
@@ -107,6 +113,7 @@ const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
107
113
|
onMouseOver: _hoverOn.bind(void 0, props.data.data),
|
|
108
114
|
onMouseMove: _hoverOn.bind(void 0, props.data.data),
|
|
109
115
|
onMouseLeave: _hoverOff,
|
|
116
|
+
tabIndex: _shouldHighlightArc(props.data.data.legend) ? 0 : undefined,
|
|
110
117
|
onBlur: _onBlur,
|
|
111
118
|
opacity: opacity,
|
|
112
119
|
onClick: (_props_data = props.data) === null || _props_data === void 0 ? void 0 : _props_data.data.onClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatScientificLimitWidth, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string): void {\n props.onFocusCallback!(data, id, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatScientificLimitWidth(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id =\n props.uniqText! +\n (typeof props.data!.data.legend === 'string' ? props.data!.data.legend.replace(/\\s+/g, '') : '') +\n props.data!.data.data;\n const opacity: number = props.activeArc === props.data!.data.legend || props.activeArc === '' ? 1 : 0.1;\n return (\n <g ref={currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n // TODO innerradius and outerradius were absent\n <path\n id={id + 'focusRing'}\n d={arc({ ...props.focusData!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.focusRing}\n />\n )}\n <path\n // TODO innerradius and outerradius were absent\n id={id}\n d={arc({ ...props.data!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.root}\n style={{ fill: props.color, cursor: href ? 'pointer' : 'default' }}\n onFocus={_onFocus.bind(this, props.data!.data, id)}\n data-is-focusable={props.activeArc === props.data!.data.legend || props.activeArc === ''}\n onMouseOver={_hoverOn.bind(this, props.data!.data)}\n onMouseMove={_hoverOn.bind(this, props.data!.data)}\n onMouseLeave={_hoverOff}\n onBlur={_onBlur}\n opacity={opacity}\n onClick={props.data?.data.onClick}\n aria-label={_getAriaLabel()}\n role=\"img\"\n />\n {_renderArcLabel(classes.arcLabel)}\n </g>\n );\n },\n);\nArc.displayName = 'Arc';\n"],"names":["Arc","React","forwardRef","props","forwardedRef","arc","d3Arc","currentRef","createRef","_isRTL","useRtl","classes","useArcStyles","useEffect","_updateChart","_onFocus","data","id","onFocusCallback","current","_hoverOn","mouseEvent","persist","hoverOnCallback","_hoverOff","hoverLeaveCallback","_onBlur","onBlurCallback","_getAriaLabel","point","legend","xAxisCalloutData","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_renderArcLabel","className","innerRadius","outerRadius","showLabelsInPercent","totalValue","hideLabels","activeArc","Math","abs","endAngle","startAngle","PI","base","perp","centroid","hyp","sqrt","labelRadius","max","angle","arcValue","value","createElement","text","x","y","textAnchor","dominantBaseline","aria-hidden","d3Format","formatScientificLimitWidth","newProps","href","focusedArcId","uniqText","replace","opacity","g","ref","path","d","focusData","focusRing","root","style","fill","color","cursor","onFocus","bind","data-is-focusable","onMouseOver","onMouseMove","onMouseLeave","onBlur","onClick","aria-label","role","arcLabel","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatScientificLimitWidth, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string): void {\n props.onFocusCallback!(data, id, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _shouldHighlightArc(legend?: string): boolean {\n const { activeArc } = props;\n // If no activeArc is provided, highlight all arcs. Otherwise, only highlight the arcs that are active.\n return !activeArc || activeArc.length === 0 || legend === undefined || activeArc.includes(legend);\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatScientificLimitWidth(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id =\n props.uniqText! +\n (typeof props.data!.data.legend === 'string' ? props.data!.data.legend.replace(/\\s+/g, '') : '') +\n props.data!.data.data;\n const opacity: number = props.activeArc === props.data!.data.legend || props.activeArc === '' ? 1 : 0.1;\n const cornerRadius = props.roundCorners ? 3 : 0;\n return (\n <g ref={currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n // TODO innerradius and outerradius were absent\n <path\n id={id + 'focusRing'}\n d={\n arc.cornerRadius(cornerRadius)({\n ...props.data!,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n })!\n }\n className={classes.focusRing}\n />\n )}\n <path\n // TODO innerradius and outerradius were absent\n id={id}\n d={\n arc.cornerRadius(cornerRadius)({\n ...props.data!,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n })!\n }\n className={classes.root}\n style={{ fill: props.color, cursor: href ? 'pointer' : 'default' }}\n onFocus={_onFocus.bind(this, props.data!.data, id)}\n data-is-focusable={props.activeArc === props.data!.data.legend || props.activeArc === ''}\n onMouseOver={_hoverOn.bind(this, props.data!.data)}\n onMouseMove={_hoverOn.bind(this, props.data!.data)}\n onMouseLeave={_hoverOff}\n tabIndex={_shouldHighlightArc(props.data!.data.legend!) ? 0 : undefined}\n onBlur={_onBlur}\n opacity={opacity}\n onClick={props.data?.data.onClick}\n aria-label={_getAriaLabel()}\n role=\"img\"\n />\n {_renderArcLabel(classes.arcLabel)}\n </g>\n );\n },\n);\nArc.displayName = 'Arc';\n"],"names":["Arc","React","forwardRef","props","forwardedRef","arc","d3Arc","currentRef","createRef","_isRTL","useRtl","classes","useArcStyles","useEffect","_updateChart","_onFocus","data","id","onFocusCallback","current","_hoverOn","mouseEvent","persist","hoverOnCallback","_hoverOff","hoverLeaveCallback","_onBlur","onBlurCallback","_getAriaLabel","point","legend","xAxisCalloutData","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_shouldHighlightArc","activeArc","length","undefined","includes","_renderArcLabel","className","innerRadius","outerRadius","showLabelsInPercent","totalValue","hideLabels","Math","abs","endAngle","startAngle","PI","base","perp","centroid","hyp","sqrt","labelRadius","max","angle","arcValue","value","createElement","text","x","y","textAnchor","dominantBaseline","aria-hidden","d3Format","formatScientificLimitWidth","newProps","href","focusedArcId","uniqText","replace","opacity","cornerRadius","roundCorners","g","ref","path","d","focusRing","root","style","fill","color","cursor","onFocus","bind","data-is-focusable","onMouseOver","onMouseMove","onMouseLeave","tabIndex","onBlur","onClick","aria-label","role","arcLabel","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Arc.types.ts"],"sourcesContent":["import { ChartDataPoint } from '../index';\nexport interface ArcProps {\n /**\n * Data to render in the Arc.\n */\n data?: ArcData;\n\n /**\n * Data to render focused Arc\n */\n focusData?: ArcData;\n\n /**\n * id of the focused arc\n */\n focusedArcId?: string;\n /**\n * shape for Arc.\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n arc?: any;\n\n /**\n * innerRadius of the Arc.\n */\n innerRadius: number;\n\n /**\n * outerRadius of the Arc.\n */\n outerRadius: number;\n\n /**\n * Color for the Arc.\n */\n color: string;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n hoverOnCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n onFocusCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n onBlurCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n hoverLeaveCallback?: Function;\n\n /**\n * Uniq string for chart\n */\n uniqText?: string;\n\n /**\n * string for callout id\n */\n calloutId?: string;\n\n /**\n * Active Arc for chart\n */\n activeArc?: string;\n\n /**\n * internal prop for href\n */\n href?: string;\n\n /**\n * props for inside donut value\n */\n valueInsideDonut?: string | number;\n\n /**\n * Prop to show the arc labels in percentage format\n */\n showLabelsInPercent?: boolean;\n\n /**\n * Prop used to define the sum of all arc values\n */\n totalValue?: number;\n\n /**\n * Prop to hide the arc labels\n */\n hideLabels?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ArcStyles;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n}\n\nexport interface ArcData {\n /**\n * Data to render in the chart for individual arc.\n */\n data: ChartDataPoint;\n /**\n * endAngle of the Arc\n */\n endAngle: number;\n /**\n * index of the Arc\n */\n index: number;\n /**\n * padAngle of the Arc\n */\n padAngle: number;\n /**\n * startAngle of the Arc\n */\n startAngle: number;\n /**\n * value of the Arc\n */\n value: number;\n}\n\nexport interface ArcStyles {\n /**\n * Style set for the card header component root\n */\n root: string;\n\n /**\n * styles for the focus\n */\n focusRing: string;\n\n /**\n * Style for the arc labels\n */\n arcLabel: string;\n}\n"],"names":[],"rangeMappings":"","mappings":""}
|
|
1
|
+
{"version":3,"sources":["Arc.types.ts"],"sourcesContent":["import { ChartDataPoint } from '../index';\nexport interface ArcProps {\n /**\n * Data to render in the Arc.\n */\n data?: ArcData;\n\n /**\n * Data to render focused Arc\n */\n focusData?: ArcData;\n\n /**\n * id of the focused arc\n */\n focusedArcId?: string;\n /**\n * shape for Arc.\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n arc?: any;\n\n /**\n * innerRadius of the Arc.\n */\n innerRadius: number;\n\n /**\n * outerRadius of the Arc.\n */\n outerRadius: number;\n\n /**\n * Color for the Arc.\n */\n color: string;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n hoverOnCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n onFocusCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n onBlurCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n hoverLeaveCallback?: Function;\n\n /**\n * Uniq string for chart\n */\n uniqText?: string;\n\n /**\n * string for callout id\n */\n calloutId?: string;\n\n /**\n * Active Arc for chart\n */\n activeArc?: string;\n\n /**\n * internal prop for href\n */\n href?: string;\n\n /**\n * props for inside donut value\n */\n valueInsideDonut?: string | number;\n\n /**\n * Prop to show the arc labels in percentage format\n */\n showLabelsInPercent?: boolean;\n\n /**\n * Prop used to define the sum of all arc values\n */\n totalValue?: number;\n\n /**\n * Prop to hide the arc labels\n */\n hideLabels?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ArcStyles;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Prop to enable the round corners in the chart\n * @default false\n */\n roundCorners?: boolean;\n}\n\nexport interface ArcData {\n /**\n * Data to render in the chart for individual arc.\n */\n data: ChartDataPoint;\n /**\n * endAngle of the Arc\n */\n endAngle: number;\n /**\n * index of the Arc\n */\n index: number;\n /**\n * padAngle of the Arc\n */\n padAngle: number;\n /**\n * startAngle of the Arc\n */\n startAngle: number;\n /**\n * value of the Arc\n */\n value: number;\n}\n\nexport interface ArcStyles {\n /**\n * Style set for the card header component root\n */\n root: string;\n\n /**\n * styles for the focus\n */\n focusRing: string;\n\n /**\n * Style for the arc labels\n */\n arcLabel: string;\n}\n"],"names":[],"rangeMappings":"","mappings":""}
|
|
@@ -27,7 +27,10 @@ const donutArcClassNames = {
|
|
|
27
27
|
*/ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
|
|
28
28
|
root: {
|
|
29
29
|
Bceei9c: "f158kwzp",
|
|
30
|
-
|
|
30
|
+
Bw0xxkn: 0,
|
|
31
|
+
oeaueh: 0,
|
|
32
|
+
Bpd4iqm: 0,
|
|
33
|
+
Befb4lg: "f1391ufr",
|
|
31
34
|
ojy3ng: "f1yuyku4",
|
|
32
35
|
B4ncu3z: "f138xzbb",
|
|
33
36
|
zxy5zd: [
|
|
@@ -55,7 +58,12 @@ const donutArcClassNames = {
|
|
|
55
58
|
}, {
|
|
56
59
|
d: [
|
|
57
60
|
".f158kwzp{cursor:default;}",
|
|
58
|
-
|
|
61
|
+
[
|
|
62
|
+
".f1391ufr{outline:transparent;}",
|
|
63
|
+
{
|
|
64
|
+
p: -1
|
|
65
|
+
}
|
|
66
|
+
],
|
|
59
67
|
".f1yuyku4{stroke:var(--colorNeutralBackground1);}",
|
|
60
68
|
".f138xzbb selectors::-moz-focus-inner{border-top-width:0;}",
|
|
61
69
|
".fny96iz selectors::-moz-focus-inner{border-right-width:0;}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useArcStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const donutArcClassNames = {\n root: 'fui-donut-arc__root',\n focusRing: 'fui-donut-arc__focusRing',\n arcLabel: 'fui-donut-arc__arcLabel'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n cursor: 'default',\n
|
|
1
|
+
{"version":3,"sources":["useArcStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const donutArcClassNames = {\n root: 'fui-donut-arc__root',\n focusRing: 'fui-donut-arc__focusRing',\n arcLabel: 'fui-donut-arc__arcLabel'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n cursor: 'default',\n outline: 'transparent',\n stroke: tokens.colorNeutralBackground1,\n '& selectors': {\n '::-moz-focus-inner': {\n ...shorthands.border('0')\n }\n }\n },\n focusRing: {\n stroke: tokens.colorStrokeFocus2,\n strokeWidth: tokens.strokeWidthThickest,\n fill: 'transparent'\n },\n arcLabel: {\n ...typographyStyles.caption1Strong,\n fill: tokens.colorNeutralForeground1\n }\n});\n/**\n * Apply styling to the Arc components\n */ export const useArcStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2;\n const { className } = props;\n const baseStyles = useStyles();\n return {\n root: mergeClasses(donutArcClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n focusRing: mergeClasses(donutArcClassNames.focusRing, baseStyles.focusRing, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.focusRing),\n arcLabel: mergeClasses(donutArcClassNames.arcLabel, baseStyles.arcLabel, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.arcLabel)\n };\n};\n"],"names":["donutArcClassNames","useArcStyles","root","focusRing","arcLabel","useStyles","__styles","Bceei9c","Bw0xxkn","oeaueh","Bpd4iqm","Befb4lg","ojy3ng","B4ncu3z","zxy5zd","bkw2yb","Bjksbd0","Be5yapy","Bkfmm31","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","d","p","props","_props_styles","_props_styles1","_props_styles2","className","baseStyles","mergeClasses","styles"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAIiBA,kBAAkB;eAAlBA;;IA8BAC,YAAY;eAAZA;;;uBAlCoC;AAI1C,MAAMD,qBAAqB;IAClCE,MAAM;IACNC,WAAW;IACXC,UAAU;AACd;AACA;;CAEA,GAAI,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAAJ,MAAA;QAAAK,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,QAAA;QAAAC,SAAA;YAAA;YAAA;SAAA;IAAA;IAAAb,WAAA;QAAAS,QAAA;QAAAK,SAAA;QAAAC,SAAA;IAAA;IAAAd,UAAA;QAAAe,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAJ,SAAA;IAAA;AAAA,GAAA;IAAAK,GAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;KAAA;AAAA;AAuBX,MAAMvB,eAAgBwB,CAAAA;IAC7B,IAAIC,eAAeC,gBAAgBC;IACnC,MAAM,EAAEC,SAAAA,EAAW,GAAGJ;IACtB,MAAMK,aAAazB;IACnB,OAAO;QACHH,MAAM6B,IAAAA,mBAAY,EAAC/B,mBAAmBE,IAAI,EAAE4B,WAAW5B,IAAI,EAAE2B,WAAW,AAACH,CAAAA,gBAAgBD,MAAMO,MAAM,AAANA,MAAY,QAAQN,kBAAkB,KAAK,IAAI,KAAK,IAAIA,cAAcxB,IAAI;QACzKC,WAAW4B,IAAAA,mBAAY,EAAC/B,mBAAmBG,SAAS,EAAE2B,WAAW3B,SAAS,EAAE,AAACwB,CAAAA,iBAAiBF,MAAMO,MAAM,AAANA,MAAY,QAAQL,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAexB,SAAS;QACrLC,UAAU2B,IAAAA,mBAAY,EAAC/B,mBAAmBI,QAAQ,EAAE0B,WAAW1B,QAAQ,EAAE,AAACwB,CAAAA,iBAAiBH,MAAMO,MAAM,AAANA,MAAY,QAAQJ,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAexB,QAAQ;IACrL;AACJ"}
|
|
@@ -33,8 +33,8 @@ const donutClassNames = {
|
|
|
33
33
|
Bg96gwp: "f1i3iumi",
|
|
34
34
|
mc9l5x: "f22iagw",
|
|
35
35
|
Beiy3e4: "f1vx9l62",
|
|
36
|
-
a9b677: "
|
|
37
|
-
Bqenvij: "
|
|
36
|
+
a9b677: "fly5x3f",
|
|
37
|
+
Bqenvij: "f1l02sjl"
|
|
38
38
|
},
|
|
39
39
|
chart: {
|
|
40
40
|
B7ck84d: "f1e4lqlz",
|
|
@@ -45,7 +45,8 @@ const donutClassNames = {
|
|
|
45
45
|
Bpg54ce: "f1gl81tg"
|
|
46
46
|
},
|
|
47
47
|
legendContainer: {
|
|
48
|
-
z8tnut: "fikn0iw"
|
|
48
|
+
z8tnut: "fikn0iw",
|
|
49
|
+
a9b677: "fly5x3f"
|
|
49
50
|
}
|
|
50
51
|
}, {
|
|
51
52
|
d: [
|
|
@@ -55,8 +56,8 @@ const donutClassNames = {
|
|
|
55
56
|
".f1i3iumi{line-height:var(--lineHeightBase300);}",
|
|
56
57
|
".f22iagw{display:flex;}",
|
|
57
58
|
".f1vx9l62{flex-direction:column;}",
|
|
58
|
-
".
|
|
59
|
-
".
|
|
59
|
+
".fly5x3f{width:100%;}",
|
|
60
|
+
".f1l02sjl{height:100%;}",
|
|
60
61
|
".f1e4lqlz{box-sizing:content-box;}",
|
|
61
62
|
".fzm18in{alignment-adjust:center;}",
|
|
62
63
|
".ftgm304{display:block;}",
|
|
@@ -70,13 +71,13 @@ const donutClassNames = {
|
|
|
70
71
|
]
|
|
71
72
|
});
|
|
72
73
|
const useDonutChartStyles = (props)=>{
|
|
73
|
-
var _props_styles, _props_styles1, _props_styles2;
|
|
74
|
+
var _props_styles, _props_styles1, _props_styles2, _props_styles3;
|
|
74
75
|
const { className } = props;
|
|
75
76
|
const baseStyles = useStyles();
|
|
76
77
|
return {
|
|
77
78
|
root: (0, _react.mergeClasses)(donutClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),
|
|
78
79
|
chart: (0, _react.mergeClasses)(donutClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),
|
|
79
80
|
legendContainer: (0, _react.mergeClasses)(donutClassNames.legendContainer, baseStyles.legendContainer, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.legendContainer),
|
|
80
|
-
chartWrapper: donutClassNames.chartWrapper
|
|
81
|
+
chartWrapper: (0, _react.mergeClasses)(donutClassNames.chartWrapper, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.chartWrapper)
|
|
81
82
|
};
|
|
82
83
|
}; //# sourceMappingURL=useDonutChartStyles.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useDonutChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const donutClassNames = {\n root: 'fui-donut__root',\n chart: 'fui-donut__chart',\n legendContainer: 'fui-donut__legendContainer',\n chartWrapper: 'fui-donut__chartWrapper'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n // alignItems: 'center',\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n width: '
|
|
1
|
+
{"version":3,"sources":["useDonutChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const donutClassNames = {\n root: 'fui-donut__root',\n chart: 'fui-donut__chart',\n legendContainer: 'fui-donut__legendContainer',\n chartWrapper: 'fui-donut__chartWrapper'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n // alignItems: 'center',\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100%'\n },\n chart: {\n boxSizing: 'content-box',\n alignmentAdjust: 'center',\n display: 'block',\n overflow: 'visible'\n },\n legendContainer: {\n paddingTop: tokens.spacingVerticalL,\n width: '100%'\n }\n});\n/**\n * Apply styling to the DonutChart component\n */ export const useDonutChartStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2, _props_styles3;\n const { className } = props;\n const baseStyles = useStyles();\n return {\n root: mergeClasses(donutClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n chart: mergeClasses(donutClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),\n legendContainer: mergeClasses(donutClassNames.legendContainer, baseStyles.legendContainer, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.legendContainer),\n chartWrapper: mergeClasses(donutClassNames.chartWrapper, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.chartWrapper)\n };\n};\n"],"names":["donutClassNames","useDonutChartStyles","root","chart","legendContainer","chartWrapper","useStyles","__styles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","a9b677","Bqenvij","B7ck84d","ek0pe7","B68tc82","Bmxbyg5","Bpg54ce","z8tnut","d","p","props","_props_styles","_props_styles1","_props_styles2","_props_styles3","className","baseStyles","mergeClasses","styles"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAIiBA,eAAe;eAAfA;;IA8BAC,mBAAmB;eAAnBA;;;uBAlCwB;AAI9B,MAAMD,kBAAkB;IAC/BE,MAAM;IACNC,OAAO;IACPC,iBAAiB;IACjBC,cAAc;AAClB;AACA;;CAEA,GAAI,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAAL,MAAA;QAAAM,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;IAAA;IAAAZ,OAAA;QAAAa,SAAA;QAAAC,QAAA;QAAAL,QAAA;QAAAM,SAAA;QAAAC,SAAA;QAAAC,SAAA;IAAA;IAAAhB,iBAAA;QAAAiB,QAAA;QAAAP,QAAA;IAAA;AAAA,GAAA;IAAAQ,GAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,GAAA,CAAA;YAAA;SAAA;QAAA;KAAA;AAAA;AAsBX,MAAMtB,sBAAuBuB,CAAAA;IACpC,IAAIC,eAAeC,gBAAgBC,gBAAgBC;IACnD,MAAM,EAAEC,SAAAA,EAAW,GAAGL;IACtB,MAAMM,aAAaxB;IACnB,OAAO;QACHJ,MAAM6B,IAAAA,mBAAY,EAAC/B,gBAAgBE,IAAI,EAAE4B,WAAW5B,IAAI,EAAE2B,WAAW,AAACJ,CAAAA,gBAAgBD,MAAMQ,MAAM,AAANA,MAAY,QAAQP,kBAAkB,KAAK,IAAI,KAAK,IAAIA,cAAcvB,IAAI;QACtKC,OAAO4B,IAAAA,mBAAY,EAAC/B,gBAAgBG,KAAK,EAAE2B,WAAW3B,KAAK,EAAE,AAACuB,CAAAA,iBAAiBF,MAAMQ,MAAM,AAANA,MAAY,QAAQN,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAevB,KAAK;QAClKC,iBAAiB2B,IAAAA,mBAAY,EAAC/B,gBAAgBI,eAAe,EAAE0B,WAAW1B,eAAe,EAAE,AAACuB,CAAAA,iBAAiBH,MAAMQ,MAAM,AAANA,MAAY,QAAQL,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAevB,eAAe;QAC1MC,cAAc0B,IAAAA,mBAAY,EAAC/B,gBAAgBK,YAAY,EAAE,AAACuB,CAAAA,iBAAiBJ,MAAMQ,MAAM,AAANA,MAAY,QAAQJ,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAevB,YAAY;IACzK;AACJ"}
|
|
@@ -116,7 +116,7 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
116
116
|
};
|
|
117
117
|
};
|
|
118
118
|
const _margins = _getMargins();
|
|
119
|
-
const _legendsHeight = !props.hideLegend ?
|
|
119
|
+
const _legendsHeight = !props.hideLegend ? 32 : 0;
|
|
120
120
|
const _rootElem = _react.useRef(null);
|
|
121
121
|
const _isRTL = (0, _index.useRtl)();
|
|
122
122
|
const [width, setWidth] = _react.useState(140 + _getMargins().left + _getMargins().right);
|
|
@@ -142,6 +142,12 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
142
142
|
let _maxValue;
|
|
143
143
|
let _segments;
|
|
144
144
|
let _calloutAnchor = '';
|
|
145
|
+
_react.useEffect(()=>{
|
|
146
|
+
if (_rootElem.current) {
|
|
147
|
+
setWidth(_rootElem.current.clientWidth);
|
|
148
|
+
setHeight(_rootElem.current.clientHeight);
|
|
149
|
+
}
|
|
150
|
+
}, []);
|
|
145
151
|
_react.useEffect(()=>{
|
|
146
152
|
if (prevPropsRef.current) {
|
|
147
153
|
var _prevProps_legendProps, _props_legendProps;
|
|
@@ -150,10 +156,6 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
150
156
|
var _props_legendProps1;
|
|
151
157
|
setSelectedLegends(((_props_legendProps1 = props.legendProps) === null || _props_legendProps1 === void 0 ? void 0 : _props_legendProps1.selectedLegends) || []);
|
|
152
158
|
}
|
|
153
|
-
if (prevProps.height !== props.height || prevProps.width !== props.width) {
|
|
154
|
-
setWidth(props.width);
|
|
155
|
-
setHeight(props.height);
|
|
156
|
-
}
|
|
157
159
|
}
|
|
158
160
|
prevPropsRef.current = props;
|
|
159
161
|
}, [
|
|
@@ -275,10 +277,7 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
275
277
|
};
|
|
276
278
|
});
|
|
277
279
|
return /*#__PURE__*/ _react.createElement("div", {
|
|
278
|
-
className: classes.legendsContainer
|
|
279
|
-
style: {
|
|
280
|
-
width: props.width
|
|
281
|
-
}
|
|
280
|
+
className: classes.legendsContainer
|
|
282
281
|
}, /*#__PURE__*/ _react.createElement(_index1.Legends, {
|
|
283
282
|
legends: legends,
|
|
284
283
|
centerLegends: true,
|
|
@@ -497,7 +496,7 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
497
496
|
className: classes.calloutBlockContainer
|
|
498
497
|
}, /*#__PURE__*/ _react.createElement("div", {
|
|
499
498
|
className: classes.calloutlegendText
|
|
500
|
-
},
|
|
499
|
+
}, ' ', (0, _chartutilities.formatToLocaleString)(subcountName, culture)), /*#__PURE__*/ _react.createElement("div", {
|
|
501
500
|
className: classes.calloutContentY
|
|
502
501
|
}, (0, _chartutilities.formatToLocaleString)(subcounts[subcountName], culture)));
|
|
503
502
|
}));
|
|
@@ -525,19 +524,19 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
525
524
|
const focusAttributes = (0, _reacttabster.useFocusableGroup)();
|
|
526
525
|
return /*#__PURE__*/ _react.createElement("div", {
|
|
527
526
|
className: classes.root,
|
|
528
|
-
ref: (el)=>_rootElem.current = el
|
|
527
|
+
ref: (el)=>_rootElem.current = el
|
|
528
|
+
}, /*#__PURE__*/ _react.createElement("div", {
|
|
529
|
+
className: classes.chartWrapper,
|
|
529
530
|
...focusAttributes
|
|
530
531
|
}, /*#__PURE__*/ _react.createElement("svg", {
|
|
531
532
|
className: classes.chart,
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
height: props.height - _legendsHeight
|
|
535
|
-
},
|
|
533
|
+
width: _width,
|
|
534
|
+
height: _height - _legendsHeight,
|
|
536
535
|
role: "region",
|
|
537
536
|
"aria-label": _getChartTitle(),
|
|
538
537
|
onMouseLeave: _handleMouseOut
|
|
539
538
|
}, /*#__PURE__*/ _react.createElement("g", {
|
|
540
|
-
transform: `translate(${
|
|
539
|
+
transform: `translate(${_width / 2}, ${_height - (_margins.bottom + _legendsHeight)})`
|
|
541
540
|
}, props.chartTitle && /*#__PURE__*/ _react.createElement("text", {
|
|
542
541
|
x: 0,
|
|
543
542
|
y: -(_outerRadius + TITLE_OFFSET),
|
|
@@ -606,7 +605,7 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
606
605
|
},
|
|
607
606
|
maxWidth: _innerRadius * 2,
|
|
608
607
|
wrapContent: _wrapContent
|
|
609
|
-
}))), _renderLegends(), !props.hideTooltip && isPopoverOpen && /*#__PURE__*/ _react.createElement(_ChartPopover.ChartPopover, {
|
|
608
|
+
})))), _renderLegends(), !props.hideTooltip && isPopoverOpen && /*#__PURE__*/ _react.createElement(_ChartPopover.ChartPopover, {
|
|
610
609
|
...props.calloutProps,
|
|
611
610
|
clickPosition: clickPosition,
|
|
612
611
|
isPopoverOpen: isPopoverOpen,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GaugeChart.tsx"],"sourcesContent":["import * 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} 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 { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\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) => {\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) => {\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 ? 24 : 0;\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [hoverYValues, setHoverYValues] = React.useState<YValue[]>([]);\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 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 if (prevProps.height !== props.height || prevProps.width !== props.width) {\n setWidth(props.width!);\n setHeight(props.height!);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n }),\n [],\n );\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\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 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')}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, 'Needle')}\n onMouseMove={e => _handleMouseOver(e, 'Needle')}\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} style={{ width: props.width }}>\n <Legends\n legends={legends}\n centerLegends\n {...props.legendProps}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={_onLegendSelectionChange}\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) {\n _showCallout(focusEvent, focusedElement, true);\n }\n\n function _handleBlur() {\n _hideCallout(true);\n }\n\n function _handleMouseOver(mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string) {\n _showCallout(mouseEvent, hoveredElement, false);\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 ) {\n if (_calloutAnchor === legend) {\n return;\n }\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in event) {\n clientX = event.clientX;\n clientY = event.clientY;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const target = event.currentTarget as HTMLElement | SVGElement;\n if (target && 'getBoundingClientRect' in target) {\n const boundingRect = target.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n }\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.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 _updatePosition(clientX, clientY);\n setPopoverOpen(\n ['Needle', 'Chart value'].includes(legend) || _noLegendHighlighted() || _legendHighlighted(legend),\n );\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)}\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);\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 {formatToLocaleString(\n xValue.yAxisCalloutData ? xValue.yAxisCalloutData : xValue.y || xValue.data,\n culture,\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}> {formatToLocaleString(subcountName, culture)}</div>\n <div className={classes.calloutContentY}>\n {formatToLocaleString(subcounts[subcountName], culture)}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n }\n\n function _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getChartTitle(): string {\n const { chartTitle } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Gauge chart with ${_segments.length} segments. `;\n }\n const { arcs } = _processProps();\n const focusAttributes = useFocusableGroup();\n return (\n <div className={classes.root} ref={el => (_rootElem.current = el)} {...focusAttributes}>\n <svg\n className={classes.chart}\n style={{ width: props.width, height: props.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 <text\n x={0}\n y={-(_outerRadius + TITLE_OFFSET)}\n textAnchor=\"middle\"\n className={classes.chartTitle}\n aria-hidden={true}\n >\n {props.chartTitle}\n </text>\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 return (\n <React.Fragment key={index}>\n <path\n d={arc.d}\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)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, segment.legend)}\n onMouseLeave={e => _handleCalloutDismiss()}\n onMouseMove={e => _handleMouseOver(e, segment.legend)}\n data-is-focusable={_legendHighlighted(segment.legend) || _noLegendHighlighted()}\n tabIndex={segment.legend !== '' ? 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 {_renderLegends()}\n {!props.hideTooltip && isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n clickPosition={clickPosition}\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":["ARC_PADDING","BREAKPOINTS","GaugeChart","calcNeedleRotation","getChartValueLabel","getSegmentLabel","GAUGE_MARGIN","LABEL_WIDTH","LABEL_HEIGHT","LABEL_OFFSET","TITLE_OFFSET","EXTRA_NEEDLE_LENGTH","minRadius","arcWidth","fontSize","chartValue","minValue","maxValue","needleRotation","segment","variant","isAriaLabel","legend","size","toFixed","start","end","chartValueFormat","forCallout","toString","React","forwardRef","props","forwardedRef","_getMargins","hideMinMax","chartTitle","sublabel","left","right","top","bottom","_margins","_legendsHeight","hideLegend","_rootElem","useRef","_isRTL","useRtl","width","setWidth","useState","height","setHeight","hoveredLegend","setHoveredLegend","selectedLegends","setSelectedLegends","legendProps","focusedElement","setFocusedElement","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","hoverXValue","setHoverXValue","hoverYValues","setHoverYValues","prevPropsRef","_width","_height","_outerRadius","Math","min","chartValueSize","_getStylesBasedOnBreakpoint","_innerRadius","_minValue","_maxValue","_segments","_calloutAnchor","useEffect","current","prevProps","areArraysEqual","useImperativeHandle","componentRef","chartContainer","classes","useGaugeChartStyles","index","length","_processProps","segments","roundCorners","total","processedSegments","map","max","color","getColorFromToken","getNextColor","accessibilityData","push","arcGenerator","d3Arc","cornerRadius","padAngle","padRadius","rtlSafeSegments","Array","from","reverse","prevAngle","PI","arcs","endAngle","d","innerRadius","outerRadius","startAngle","segmentIndex","_renderNeedle","rtlSafeNeedleRotation","strokeWidth","halfStrokeWidth","needleLength","createElement","g","transform","path","className","needle","data-is-focusable","onFocus","e","_handleFocus","onBlur","_handleBlur","onMouseEnter","_handleMouseOver","onMouseMove","role","aria-label","_renderLegends","legends","title","hoverAction","onMouseOutAction","div","legendsContainer","style","Legends","centerLegends","onChange","_onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","_legendHighlighted","_getHighlightedLegend","includes","_noLegendHighlighted","focusEvent","_showCallout","_hideCallout","mouseEvent","hoveredElement","_handleMouseOut","_handleCalloutDismiss","isFocusEvent","clientX","clientY","target","currentTarget","boundingRect","getBoundingClientRect","yValue","_updatePosition","isBlurEvent","_wrapContent","content","id","maxWidth","textElement","d3Select","text","node","isOverflowing","textLength","getComputedTextLength","_multiValueCallout","calloutProps","yValueHoverSubCountsExists","_yValueHoverSubCountsExists","YValueHover","calloutContentRoot","calloutDateTimeContainer","marginBottom","calloutContentX","getAccessibleDataObject","xAxisCalloutAccessibilityData","formatToLocaleString","culture","calloutInfoContainer","display","yValues","isLast","shouldDrawBorderBottom","callOutAccessibilityData","key","paddingBottom","_getCalloutContent","descriptionMessage","yValueHover","some","yAxisCalloutData","xValue","marginStyle","marginRight","toDrawShape","undefined","calloutBlockContainer","borderInlineStart","Shape","svgProps","shapeStyles","pathProps","fill","shape","Points","Object","keys","pointTypes","calloutlegendText","calloutContentY","data","subcounts","subcountName","newX","newY","threshold","distance","sqrt","pow","_getChartTitle","focusAttributes","useFocusableGroup","root","ref","el","svg","chart","onMouseLeave","textAnchor","aria-hidden","Fragment","limits","formatScientificLimitWidth","arc","opacity","ariaLabel","tabIndex","SVGTooltipText","textProps","wrapContent","dominantBaseline","hideTooltip","ChartPopover","customCallout","customizedCallout","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IA4BaA,WAAAA;eAAAA;;IACAC,WAAAA;eAAAA;;IAwEAC,UAAAA;eAAAA;;IA/DAC,kBAAAA;eAAAA;;IA6BAC,kBAAAA;eAAAA;;IAlBAC,eAAAA;eAAAA;;;;iEAjDU;2CACa;6BACD;yBACN;uBAWtB;gCAC8B;gCACN;wBACqB;8BAElB;8BACL;AAE7B,MAAMC,eAAe;AACrB,MAAMC,cAAc;AACpB,MAAMC,eAAe;AACrB,MAAMC,eAAe;AACrB,MAAMC,eAAe;AACrB,MAAMC,sBAAsB;AACrB,MAAMX,cAAc;AACpB,MAAMC,cAAc;IACzB;QAAEW,WAAW;QAAIC,UAAU;QAAIC,UAAU;IAAG;IAC5C;QAAEF,WAAW;QAAIC,UAAU;QAAIC,UAAU;IAAG;IAC5C;QAAEF,WAAW;QAAIC,UAAU;QAAIC,UAAU;IAAG;IAC5C;QAAEF,WAAW;QAAKC,UAAU;QAAIC,UAAU;IAAG;IAC7C;QAAEF,WAAW;QAAKC,UAAU;QAAIC,UAAU;IAAG;IAC7C;QAAEF,WAAW;QAAKC,UAAU;QAAIC,UAAU;IAAG;CAC9C;AAEM,MAAMX,qBAAqB,CAACY,YAAoBC,UAAkBC;IACvE,IAAIC,iBAAiB,AAAEH,CAAAA,aAAaC,QAAAA,IAAaC,CAAAA,WAAWD,QAAAA,IAAa;IACzE,IAAIE,iBAAiB,GAAG;QACtBA,iBAAiB;IACnB,OAAO,IAAIA,iBAAiB,KAAK;QAC/BA,iBAAiB;IACnB;IAEA,OAAOA;AACT;AAEO,MAAMb,kBAAkB,CAC7Bc,SACAH,UACAC,UACAG,SACAC,cAAuB,KAAK;IAE5B,IAAIA,aAAa;QACf,OAAOL,aAAa,KAAKI,YAAY,mBACjC,CAAC,EAAED,QAAQG,MAAM,CAAC,EAAE,EAAEH,QAAQI,IAAI,CAAC,QAAQ,EAAEN,SAAS,IAAI,EAAE,AAACE,CAAAA,QAASI,IAAI,GAAGN,WAAY,GAAA,EAAKO,OAAO,GAAG,CAAC,CAAC,GAC1G,CAAC,EAAEL,QAAQG,MAAM,CAAC,EAAE,EAAEH,QAAQM,KAAK,CAAC,IAAI,EAAEN,QAAQO,GAAG,CAAC,CAAC;IAC7D;IAEA,OAAOV,aAAa,KAAKI,YAAY,mBACjC,CAAC,EAAED,QAAQI,IAAI,CAAC,EAAE,EAAE,AAACJ,CAAAA,QAASI,IAAI,GAAGN,WAAY,GAAA,EAAKO,OAAO,GAAG,EAAE,CAAC,GACnE,CAAC,EAAEL,QAAQM,KAAK,CAAC,GAAG,EAAEN,QAAQO,GAAG,CAAC,CAAC;AACzC;AAEO,MAAMtB,qBAAqB,CAChCW,YACAC,UACAC,UACAU,kBACAC,aAAsB,KAAK;IAE3B,IAAIA,YAAY;QACd,iGAAiG;QACjG,4DAA4D;QAC5D,OAAOZ,aAAa,IAChBD,WAAWc,QAAQ,KACnBF,qBAAqB,aACrB,CAAC,EAAE,AAACZ,CAAAA,aAAcE,WAAY,GAAA,EAAKO,OAAO,GAAG,CAAC,CAAC,GAC/C,CAAC,EAAET,WAAW,CAAC,EAAEE,SAAS,CAAC;IACjC;IAEA,OAAO,OAAOU,qBAAqB,aAC/BA,iBAAiB;QAACZ,aAAaC;QAAUC,WAAWD;KAAS,IAC7DA,aAAa,IACbD,WAAWc,QAAQ,KACnBF,qBAAqB,aACrB,CAAC,EAAEZ,WAAW,CAAC,EAAEE,SAAS,CAAC,GAC3B,CAAC,EAAE,AAACF,CAAAA,aAAcE,WAAY,GAAA,EAAKO,OAAO,GAAG,CAAC,CAAC;AACrD;AAUO,MAAMtB,aAAAA,WAAAA,GAAuD4B,OAAMC,UAAU,CAClF,CAACC,OAAOC;QAiBiED;IAhBvE,MAAME,cAAc;QAClB,MAAM,EAAEC,UAAU,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGL;QAC7C,OAAO;YACLM,MAAM,AAAC,CAAA,CAACH,aAAa1B,eAAeF,cAAc,CAAA,IAAKD;YACvDiC,OAAO,AAAC,CAAA,CAACJ,aAAa1B,eAAeF,cAAc,CAAA,IAAKD;YACxDkC,KAAK,AAACJ,CAAAA,aAAa1B,eAAeF,eAAeG,sBAAsB,CAAA,IAAKL;YAC5EmC,QAAQ,AAACJ,CAAAA,WAAW5B,eAAeD,eAAe,CAAA,IAAKF;QACzD;IACF;IACA,MAAMoC,WAAyER;IAC/E,MAAMS,iBAAyB,CAACX,MAAMY,UAAU,GAAG,KAAK;IACxD,MAAMC,YAAYf,OAAMgB,MAAM,CAAwB;IACtD,MAAMC,SAAkBC,IAAAA,aAAAA;IACxB,MAAM,CAACC,OAAOC,SAAS,GAAGpB,OAAMqB,QAAQ,CAAS,MAAMjB,cAAcI,IAAI,GAAGJ,cAAcK,KAAK;IAC/F,MAAM,CAACa,QAAQC,UAAU,GAAGvB,OAAMqB,QAAQ,CAAS,KAAKjB,cAAcM,GAAG,GAAGN,cAAcO,MAAM,GAAGE;IACnG,MAAM,CAACW,eAAeC,iBAAiB,GAAGzB,OAAMqB,QAAQ,CAAS;IACjE,MAAM,CAACK,iBAAiBC,mBAAmB,GAAG3B,OAAMqB,QAAQ,CAAWnB,CAAAA,CAAAA,qBAAAA,MAAM0B,WAAW,AAAXA,MAAW,QAAjB1B,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBwB,eAAe,AAAfA,KAAmB,EAAE;IAC/G,MAAM,CAACG,gBAAgBC,kBAAkB,GAAG9B,OAAMqB,QAAQ,CAAqB;IAC/E,8DAA8D;IAC9D,MAAM,CAACU,eAAeC,iBAAiB,GAAGhC,OAAMqB,QAAQ,CAAC;QAAEY,GAAG;QAAGC,GAAG;IAAE;IACtE,MAAM,CAACC,eAAeC,eAAe,GAAGpC,OAAMqB,QAAQ,CAAC;IACvD,MAAM,CAACgB,aAAaC,eAAe,GAAGtC,OAAMqB,QAAQ,CAAkB;IACtE,MAAM,CAACkB,cAAcC,gBAAgB,GAAGxC,OAAMqB,QAAQ,CAAW,EAAE;IACnE,MAAMoB,eAAezC,OAAMgB,MAAM,CAAyB;IAC1D,MAAM0B,SAASxC,MAAMiB,KAAK,IAAIA;IAC9B,MAAMwB,UAAUzC,MAAMoB,MAAM,IAAIA;IAChC,MAAMsB,eAAuBC,KAAKC,GAAG,CACnC,AAACJ,CAAAA,SAAU9B,CAAAA,SAASJ,IAAI,GAAGI,SAASH,KAAK,AAALA,CAAK,IAAK,GAC9CkC,UAAW/B,CAAAA,SAASF,GAAG,GAAGE,SAASD,MAAM,GAAGE,cAAAA;IAE9C,MAAM,EAAE9B,QAAQ,EAAEgE,cAAc,EAAE,GAAGC;IACrC,MAAMC,eAAuBL,eAAe7D;IAC5C,IAAImE;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC,iBAAyB;IAC7BrD,OAAMsD,SAAS,CAAC;QACd,IAAIb,aAAac,OAAO,EAAE;gBAEJC,wBAAwCtD;YAD5D,MAAMsD,YAAYf,aAAac,OAAO;YACtC,IAAI,CAACE,IAAAA,qBAAAA,EAAAA,AAAeD,CAAAA,yBAAAA,UAAU5B,WAAW,AAAXA,MAAW,QAArB4B,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uBAAuB9B,eAAe,EAAA,AAAExB,CAAAA,qBAAAA,MAAM0B,WAAW,AAAXA,MAAW,QAAjB1B,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBwB,eAAe,GAAG;oBAC5ExB;gBAAnByB,mBAAmBzB,CAAAA,CAAAA,sBAAAA,MAAM0B,WAAW,AAAXA,MAAW,QAAjB1B,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAmBwB,eAAe,AAAfA,KAAmB,EAAE;YAC7D;YACA,IAAI8B,UAAUlC,MAAM,KAAKpB,MAAMoB,MAAM,IAAIkC,UAAUrC,KAAK,KAAKjB,MAAMiB,KAAK,EAAE;gBACxEC,SAASlB,MAAMiB,KAAK;gBACpBI,UAAUrB,MAAMoB,MAAM;YACxB;QACF;QACAmB,aAAac,OAAO,GAAGrD;IACzB,GAAG;QAACA;KAAM;IAEVF,OAAM0D,mBAAmB,CACvBxD,MAAMyD,YAAY,EAClB,IAAO,CAAA;YACLC,gBAAgB7C,UAAUwC,OAAO;QACnC,CAAA,GACA,EAAE;IAGJ,MAAMM,UAAUC,IAAAA,8CAAAA,EAAoB5D;IACpC,SAAS8C;QACP,IAAK,IAAIe,QAAQ5F,YAAY6F,MAAM,GAAG,GAAGD,SAAS,GAAGA,SAAS,EAAG;YAC/D,IAAInB,gBAAgBzE,WAAW,CAAC4F,MAAM,CAACjF,SAAS,EAAE;gBAChD,OAAO;oBACLC,UAAUZ,WAAW,CAAC4F,MAAM,CAAChF,QAAQ;oBACrCgE,gBAAgB5E,WAAW,CAAC4F,MAAM,CAAC/E,QAAQ;gBAC7C;YACF;QACF;QACA,OAAO;YACLD,UAAUZ,WAAW,CAAC,EAAE,CAACY,QAAQ;YACjCgE,gBAAgB5E,WAAW,CAAC,EAAE,CAACa,QAAQ;QACzC;IACF;IAEA,SAASiF;QACP,MAAM,EAAE/E,WAAW,CAAC,EAAEC,QAAQ,EAAE+E,QAAQ,EAAEC,YAAY,EAAE,GAAGjE;QAE3D,IAAIkE,QAAQlF;QACZ,MAAMmF,oBAAuCH,SAASI,GAAG,CAEvD,CAACjF,SAA+E0E;YAC9E,MAAMtE,OAAOoD,KAAK0B,GAAG,CAAClF,QAAQI,IAAI,EAAE;YACpC2E,SAAS3E;YACT,OAAO;gBACLD,QAAQH,QAAQG,MAAM;gBACtBC;gBACA+E,OACE,OAAOnF,QAAQmF,KAAK,KAAK,cACrBC,IAAAA,wBAAAA,EAAkBpF,QAAQmF,KAAK,EAAE,SACjCE,IAAAA,mBAAAA,EAAaX,OAAO,GAAG;gBAC7BY,mBAAmBtF,QAAQsF,iBAAiB;gBAC5ChF,OAAOyE,QAAQ3E;gBACfG,KAAKwE;YACP;QACF;QAEF,IAAI,OAAOjF,aAAa,eAAeiF,QAAQjF,UAAU;YACvDkF,kBAAkBO,IAAI,CAAC;gBACrBpF,QAAQ;gBACRC,MAAMN,WAAWiF;gBACjBI,OAAO;gBACP7E,OAAOyE;gBACPxE,KAAKT;YACP;YACAiF,QAAQjF;QACV;QAEA,MAAM0F,eAAeC,IAAAA,YAAAA,IAClBC,YAAY,CAACZ,eAAe,IAAI,GAChCa,QAAQ,CAAC9G,cAAc0E,cACvBqC,SAAS,CAACrC;QACb,MAAMsC,kBAAkBjE,SAASkE,MAAMC,IAAI,CAACf,mBAAmBgB,OAAO,KAAKhB;QAC3E,IAAIiB,YAAY,CAACzC,KAAK0C,EAAE,GAAG;QAC3B,wDAAwD;QACxD,MAAMC,OAAON,gBAAgBZ,GAAG,CAAC,CAACjF,SAAS0E;YACzC,MAAM0B,WAAWH,YAAYjG,QAASI,IAAI,GAAI2E,CAAAA,QAAQlF,QAAAA,IAAa2D,KAAK0C,EAAE;YAC1E,MAAMG,IAAIb,aAAa;gBACrBc,aAAa1C;gBACb2C,aAAahD;gBACbiD,YAAYP;gBACZG;YACF;YACAH,YAAYG;YACZ,OAAO;gBACLC;gBACAI,cAAc7E,SAASoD,kBAAkBL,MAAM,GAAG,IAAID,QAAQA;gBAC9D8B,YAAYP,YAAYjG,QAASI,IAAI,GAAI2E,CAAAA,QAAQlF,QAAAA,IAAa2D,KAAK0C,EAAE;gBACrEE;YACF;QACF;QAEAvC,YAAYhE;QACZiE,YAAYiB;QACZhB,YAAYiB;QAEZ,OAAO;YACLmB;QACF;IACF;IAEA,SAASO;QACP,MAAM3G,iBAAiBf,mBAAmB6B,MAAMjB,UAAU,EAAEiE,WAAWC;QACvE,MAAM6C,wBAAwB/E,SAAS,MAAM7B,iBAAiBA;QAC9D,MAAM6G,cAAc;QACpB,MAAMC,kBAAkBD,cAAc;QACtC,MAAME,eAAevD,eAAeK,eAAepE;QAEnD,OAAA,WAAA,GACEmB,OAAAoG,aAAA,CAACC,KAAAA;YAAEC,WAAW,CAAC,OAAO,EAAEN,sBAAsB,OAAO,CAAC;yBACpDhG,OAAAoG,aAAA,CAACG,QAAAA;YACCb,GAAG,CAAC;gBACA,EAAE,CAACQ,kBAAkB,EAAE;cACzB,EAAE,CAACC,aAAa,CAAC,EAAE,CAACD,kBAAkB,EAAE;cACxC,EAAEA,kBAAkB,EAAE,CAAC,EAAEA,kBAAkB,EAAE,OAAO,EAAE,CAACC,aAAa,CAAC,EAAED,kBAAkB,EAAE;gBACzF,EAAEA,kBAAkB,EAAE;cACxB,EAAEA,kBAAkB,EAAE,CAAC,EAAEA,kBAAkB,EAAE,SAAS,EAAE,CAACA,kBAAkB,EAAE;UACjF,CAAC;YACCD,aAAaA;YACbO,WAAW3C,QAAQ4C,MAAM;YACzBH,WAAW,CAAC,UAAU,EAAE,CAACrD,eAAepE,sBAAsB,EAAE,CAAC,CAAC;YAClE6H,qBAAmB;YACnBC,SAASC,CAAAA,IAAKC,aAAaD,GAAG;YAC9BE,QAAQC;YACRC,cAAcJ,CAAAA,IAAKK,iBAAiBL,GAAG;YACvCM,aAAaN,CAAAA,IAAKK,iBAAiBL,GAAG;YACtCO,MAAK;YACLC,cACE,oBAAoB9I,mBAAmB4B,MAAMjB,UAAU,EAAEiE,WAAWC,WAAWjD,MAAML,gBAAgB;;IAK/G;IAEA,SAASwH;QACP,IAAInH,MAAMY,UAAU,EAAE;YACpB,OAAO;QACT;QAEA,MAAMwG,UAAoBlE,UAAUkB,GAAG,CAAC,CAACjF,SAAS0E;YAChD,MAAMS,QAAgBnF,QAAQmF,KAAK,IAAIE,IAAAA,mBAAAA,EAAaX,OAAO,GAAG;YAE9D,OAAO;gBACLwD,OAAOlI,QAAQG,MAAM;gBACrBgF;gBACAgD,aAAa;oBACX/F,iBAAiBpC,QAAQG,MAAM;gBACjC;gBACAiI,kBAAkB;oBAChBhG,iBAAiB;gBACnB;YACF;QACF;QAEA,OAAA,WAAA,GACEzB,OAAAoG,aAAA,CAACsB,OAAAA;YAAIlB,WAAW3C,QAAQ8D,gBAAgB;YAAEC,OAAO;gBAAEzG,OAAOjB,MAAMiB,KAAK;YAAC;yBACpEnB,OAAAoG,aAAA,CAACyB,eAAAA,EAAAA;YACCP,SAASA;YACTQ,eAAAA;YACC,GAAG5H,MAAM0B,WAAW;YACrB,6CAA6C;YAC7CmG,UAAUC;;IAIlB;IAEA,SAASA,yBAEPtG,eAAyB,EACzBuG,KAA0C,EAC1CC,aAAsB;YAElBhI,oBAKAA;QALJ,IAAA,AAAIA,CAAAA,qBAAAA,MAAM0B,WAAW,AAAXA,MAAW,QAAjB1B,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBiI,wBAAwB,EAAE;YAC/CxG,mBAAmBD;QACrB,OAAO;YACLC,mBAAmBD,gBAAgB0G,KAAK,CAAC,CAAC;QAC5C;QACA,IAAA,AAAIlI,CAAAA,sBAAAA,MAAM0B,WAAW,AAAXA,MAAW,QAAjB1B,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAmB6H,QAAQ,EAAE;YAC/B7H,MAAM0B,WAAW,CAACmG,QAAQ,CAACrG,iBAAiBuG,OAAOC;QACrD;IACF;IAEA;;;;;KAKC,GACD,SAASG,mBAAmB7I,MAAc;QACxC,OAAO8I,wBAAwBC,QAAQ,CAAC/I;IAC1C;IAEA;;KAEC,GACD,SAASgJ;QACP,OAAOF,wBAAwBtE,MAAM,KAAK;IAC5C;IAEA,SAASsE;QACP,OAAO5G,gBAAgBsC,MAAM,GAAG,IAAItC,kBAAkBF,gBAAgB;YAACA;SAAc,GAAG,EAAE;IAC5F;IAEA,wDAAwD;IACxD,SAASqF,aAAa4B,UAAwC,EAAE5G,cAAsB;QACpF6G,aAAaD,YAAY5G,gBAAgB;IAC3C;IAEA,SAASkF;QACP4B,aAAa;IACf;IAEA,SAAS1B,iBAAiB2B,UAAwC,EAAEC,cAAsB;QACxFH,aAAaE,YAAYC,gBAAgB;IAC3C;IAEA,SAASC;QACPH,aAAa;IACf;IAEA,SAASI;QACPJ,aAAa;IACf;IAEA,8DAA8D;IAC9D,SAASD,aACPT,KAAuF,EACvFzI,MAAc,EACdwJ,YAAqB;QAErB,IAAI3F,mBAAmB7D,QAAQ;YAC7B;QACF;QACA,IAAIyJ,UAAU;QACd,IAAIC,UAAU;QACd,IAAI,aAAajB,OAAO;YACtBgB,UAAUhB,MAAMgB,OAAO;YACvBC,UAAUjB,MAAMiB,OAAO;QACzB,OAAO;YACL,wDAAwD;YACxD,MAAMC,SAASlB,MAAMmB,aAAa;YAClC,IAAID,UAAU,2BAA2BA,QAAQ;gBAC/C,MAAME,eAAeF,OAAOG,qBAAqB;gBACjDL,UAAUI,aAAa7I,IAAI,GAAG6I,aAAalI,KAAK,GAAG;gBACnD+H,UAAUG,aAAa3I,GAAG,GAAG2I,aAAa/H,MAAM,GAAG;YACrD;QACF;QACA+B,iBAAiB7D;QACjB,wDAAwD;QACxD,MAAM6C,cACJ,sBAAsB/D,mBAAmB4B,MAAMjB,UAAU,EAAEiE,WAAWC,WAAWjD,MAAML,gBAAgB,EAAE;QAC3G,wDAAwD;QACxD,MAAM0C,eAAyBa,UAAUkB,GAAG,CAACjF,CAAAA;YAC3C,MAAMkK,SAAiB;gBACrB/J,QAAQH,QAAQG,MAAM;gBACtB0C,GAAG3D,gBAAgBc,SAAS6D,WAAWC,WAAWjD,MAAMZ,OAAO;gBAC/DkF,OAAOnF,QAAQmF,KAAK;YACtB;YACA,OAAO+E;QACT;QACAC,gBAAgBP,SAASC;QACzB9G,eACE;YAAC;YAAU;SAAc,CAACmG,QAAQ,CAAC/I,WAAWgJ,0BAA0BH,mBAAmB7I;QAE7F8C,eAAeD;QACfG,gBAAgBD;QAChB,IAAIyG,cAAc;YAChBlH,kBAAkBtC;QACpB;IACF;IAEA,SAASmJ,aAAac,WAAqB;QACzCpG,iBAAiB;QACjBjB,eAAe;QACfE,eAAe;QACfE,gBAAgB,EAAE;QAClB,IAAIiH,aAAa;YACf3H,kBAAkB;QACpB;IACF;IAEA,SAAS4H,aAAaC,OAAe,EAAEC,EAAU,EAAEC,QAAgB;QACjE,MAAMC,cAAcC,IAAAA,mBAAAA,EAA6B,CAAC,CAAC,EAAEH,GAAG,CAAC;QACzDE,YAAYE,IAAI,CAACL;QACjB,IAAI,CAACG,YAAYG,IAAI,IAAI;YACvB,OAAO;QACT;QAEA,IAAIC,gBAAgB;QACpB,IAAIC,aAAaL,YAAYG,IAAI,GAAIG,qBAAqB;QAC1D,MAAOD,aAAaN,YAAYF,QAAQ3F,MAAM,GAAG,EAAG;YAClD2F,UAAUA,QAAQvB,KAAK,CAAC,GAAG,CAAC;YAC5B0B,YAAYE,IAAI,CAACL,UAAU;YAC3BO,gBAAgB;YAChBC,aAAaL,YAAYG,IAAI,GAAIG,qBAAqB;QACxD;QACA,OAAOF;IACT;IAEA,iGAAiG;IACjG,8DAA8D;IAC9D,SAASG,mBAAmBC,YAAiB;QAC3C,MAAMC,6BAAsCC,4BAA4BF,aAAaG,WAAW;QAChG,OAAA,WAAA,GACEzK,OAAAoG,aAAA,CAACsB,OAAAA;YAAIlB,WAAW3C,QAAQ6G,kBAAkB;yBACxC1K,OAAAoG,aAAA,CAACsB,OAAAA;YACClB,WAAW3C,QAAQ8G,wBAAwB;YAC3C/C,OAAO2C,6BAA6B;gBAAEK,cAAc;YAAO,IAAI,CAAC;yBAEhE5K,OAAAoG,aAAA,CAACsB,OAAAA;YACClB,WAAW3C,QAAQgH,eAAe;YACjC,GAAGC,IAAAA,8BAAAA,EAAwBR,aAAcS,6BAA6B,EAAE,QAAQ,MAAM;WAEtFC,IAAAA,oCAAAA,EAAqBV,aAAcjI,WAAW,EAAEnC,MAAM+K,OAAO,KAAA,WAAA,GAGlEjL,OAAAoG,aAAA,CAACsB,OAAAA;YAAIlB,WAAW3C,QAAQqH,oBAAoB;YAAEtD,OAAO2C,6BAA6B;gBAAEY,SAAS;YAAO,IAAI,CAAC;WACtGb,aAAcG,WAAW,IACxBH,aAAcG,WAAW,CAACnG,GAAG,CAAC,CAACiF,QAAqBxF,OAAeqH;YACjE,MAAMC,SAAkBtH,QAAQ,MAAMqH,QAAQpH,MAAM;YACpD,MAAM,EAAEsH,yBAAyB,KAAK,EAAE,GAAG/B;YAC3C,OAAA,WAAA,GACEvJ,OAAAoG,aAAA,CAACsB,OAAAA;gBACE,GAAGoD,IAAAA,8BAAAA,EAAwBvB,OAAOgC,wBAAwB,EAAE,QAAQ,MAAM;gBAC3EC,KAAK,CAAC,gBAAgB,EAAEzH,MAAM,CAAC;gBAC/B6D,OACE2C,6BACI;oBACEY,SAAS;oBACT,GAAIG,0BAA0B;wBAC5BG,eAAe;oBACjB,CAAC;gBACH,IACA;oBACE,GAAIH,0BAA0B;wBAC5BG,eAAe;oBACjB,CAAC;gBACH;eAGLC,mBAAmBnC,QAAQxF,OAAOwG,4BAA4Bc;QAGrE,IACD,CAAC,CAACf,aAAaqB,kBAAkB,IAAA,WAAA,GAChC3L,OAAAoG,aAAA,CAACsB,OAAAA;YAAIlB,WAAW3C,QAAQ8H,kBAAkB;WAAGrB,aAAaqB,kBAAkB;IAKtF;IAEA,SAASnB,4BAA4BoB,WAA2B;QAC9D,IAAIA,aAAa;YACf,OAAOA,YAAYC,IAAI,CACrB,CAACtC,SAKKA,OAAOuC,gBAAgB,IAAI,OAAOvC,OAAOuC,gBAAgB,KAAK;QAExE;QACA,OAAO;IACT;IAEA,SAASJ,mBACPK,MAAmB,EACnBhI,KAAa,EACbwG,0BAAmC,EACnCc,MAAe;QAEf,MAAMW,cAAmCX,SAAS,CAAC,IAAI;YAAEY,aAAa;QAAO;QAC7E,MAAMC,cAAcH,OAAOhI,KAAK,KAAKoI,aAAaJ,OAAOhI,KAAK,KAAK,CAAC;QACpE,MAAM,EAAEkH,OAAO,EAAE,GAAG/K;QACpB,MAAMqJ,SAASyB,IAAAA,oCAAAA,EAAqBe,OAAO7J,CAAC,EAAE+I;QAC9C,IAAI,CAACc,OAAOD,gBAAgB,IAAI,OAAOC,OAAOD,gBAAgB,KAAK,UAAU;YAC3E,OAAA,WAAA,GACE9L,OAAAoG,aAAA,CAACsB,OAAAA;gBAAIE,OAAO2C,6BAA6ByB,cAAc,CAAC;eACrDzB,8BAAAA,WAAAA,GACCvK,OAAAoG,aAAA,CAACsB,OAAAA;gBAAIlB,WAAU;gBAAyBoB,OAAO;oBAAE5I,UAAU;gBAAO;eAC/D+M,OAAOvM,MAAM,EAAE,MAAG+J,QAAO,MAAA,WAAA,GAG9BvJ,OAAAoG,aAAA,CAACsB,OAAAA;gBACCkC,IAAI,CAAC,EAAE7F,MAAM,CAAC,EAAEgI,OAAO7J,CAAC,CAAC,CAAC;gBAC1BsE,WAAW3C,QAAQuI,qBAAqB;gBACxCxE,OAAO;oBAAEyE,mBAAmB,CAAC,UAAU,EAAEN,OAAOvH,KAAK,CAAC,CAAC;gBAAC;eAEvD0H,eAAAA,WAAAA,GACClM,OAAAoG,aAAA,CAACkG,aAAAA,EAAAA;gBACCC,UAAU;oBACR/F,WAAW3C,QAAQ2I,WAAW;gBAChC;gBACAC,WAAW;oBAAEC,MAAMX,OAAOvH,KAAK;gBAAC;gBAChCmI,OAAOC,aAAM,CAACb,OAAOhI,KAAK,GAAI8I,OAAOC,IAAI,CAACC,iBAAAA,EAAY/I,MAAM,CAAC;gBAC7D4D,OAAO;oBAAEuD,SAAS;gBAAO;8BAG7BnL,OAAAoG,aAAA,CAACsB,OAAAA,MAAAA,WAAAA,GACC1H,OAAAoG,aAAA,CAACsB,OAAAA;gBAAIlB,WAAW3C,QAAQmJ,iBAAiB;eAAE,KAAEjB,OAAOvM,MAAM,GAAA,WAAA,GAC1DQ,OAAAoG,aAAA,CAACsB,OAAAA;gBAAIlB,WAAW3C,QAAQoJ,eAAe;eACpCjC,IAAAA,oCAAAA,EACCe,OAAOD,gBAAgB,GAAGC,OAAOD,gBAAgB,GAAGC,OAAO7J,CAAC,IAAI6J,OAAOmB,IAAI,EAC3EjC;QAOd,OAAO;YACL,MAAMkC,YAAsCpB,OAAOD,gBAAgB;YACnE,OAAA,WAAA,GACE9L,OAAAoG,aAAA,CAACsB,OAAAA;gBAAIE,OAAOoE;6BACVhM,OAAAoG,aAAA,CAACsB,OAAAA;gBAAIlB,WAAU;gBAAyBoB,OAAO;oBAAE5I,UAAU;gBAAO;eAC/D+M,OAAOvM,MAAM,EAAE,MAAG+J,QAAO,MAE3BsD,OAAOC,IAAI,CAACK,WAAW7I,GAAG,CAAC,CAAC8I;gBAC3B,OAAA,WAAA,GACEpN,OAAAoG,aAAA,CAACsB,OAAAA;oBAAI8D,KAAK4B;oBAAc5G,WAAW3C,QAAQuI,qBAAqB;iCAC9DpM,OAAAoG,aAAA,CAACsB,OAAAA;oBAAIlB,WAAW3C,QAAQmJ,iBAAiB;mBAAE,KAAEhC,IAAAA,oCAAAA,EAAqBoC,cAAcnC,WAAAA,WAAAA,GAChFjL,OAAAoG,aAAA,CAACsB,OAAAA;oBAAIlB,WAAW3C,QAAQoJ,eAAe;mBACpCjC,IAAAA,oCAAAA,EAAqBmC,SAAS,CAACC,aAAa,EAAEnC;YAIvD;QAGN;IACF;IAEA,SAASzB,gBAAgB6D,IAAY,EAAEC,IAAY;QACjD,MAAMC,YAAY,GAAG,+BAA+B;QACpD,MAAM,EAAEtL,CAAC,EAAEC,CAAC,EAAE,GAAGH;QACjB,+BAA+B;QAC/B,MAAMyL,WAAW3K,KAAK4K,IAAI,CAAC5K,KAAK6K,GAAG,CAACL,OAAOpL,GAAG,KAAKY,KAAK6K,GAAG,CAACJ,OAAOpL,GAAG;QACtE,+EAA+E;QAC/E,IAAIsL,WAAWD,WAAW;YACxBvL,iBAAiB;gBAAEC,GAAGoL;gBAAMnL,GAAGoL;YAAK;YACpClL,eAAe;QACjB;IACF;IAEA,SAASuL;QACP,MAAM,EAAErN,UAAU,EAAE,GAAGJ;QACvB,OAAO,AAACI,CAAAA,aAAa,CAAC,EAAEA,WAAW,EAAE,CAAC,GAAG,EAAA,IAAM,CAAC,iBAAiB,EAAE8C,UAAUY,MAAM,CAAC,WAAW,CAAC;IAClG;IACA,MAAM,EAAEwB,IAAI,EAAE,GAAGvB;IACjB,MAAM2J,kBAAkBC,IAAAA,+BAAAA;IACxB,OAAA,WAAA,GACE7N,OAAAoG,aAAA,CAACsB,OAAAA;QAAIlB,WAAW3C,QAAQiK,IAAI;QAAEC,KAAKC,CAAAA,KAAOjN,UAAUwC,OAAO,GAAGyK;QAAM,GAAGJ,eAAe;qBACpF5N,OAAAoG,aAAA,CAAC6H,OAAAA;QACCzH,WAAW3C,QAAQqK,KAAK;QACxBtG,OAAO;YAAEzG,OAAOjB,MAAMiB,KAAK;YAAEG,QAAQpB,MAAMoB,MAAM,GAAIT;QAAe;QACpEsG,MAAK;QACLC,cAAYuG;QACZQ,cAAcrF;qBAEd9I,OAAAoG,aAAA,CAACC,KAAAA;QAAEC,WAAW,CAAC,UAAU,EAAEnF,QAAQ,EAAE,EAAE,EAAEG,SAAUV,CAAAA,SAASD,MAAM,GAAGE,cAAAA,EAAgB,CAAC,CAAC;OACpFX,MAAMI,UAAU,IAAA,WAAA,GACfN,OAAAoG,aAAA,CAAC4D,QAAAA;QACC/H,GAAG;QACHC,GAAG,CAAEU,CAAAA,eAAehE,YAAAA;QACpBwP,YAAW;QACX5H,WAAW3C,QAAQvD,UAAU;QAC7B+N,eAAa;OAEZnO,MAAMI,UAAU,GAGpB,CAACJ,MAAMG,UAAU,IAAA,WAAA,GAChBL,OAAAoG,aAAA,CAAApG,OAAAsO,QAAA,EAAA,MAAA,WAAA,GACEtO,OAAAoG,aAAA,CAAC4D,QAAAA;QACC/H,GAAG,AAAChB,CAAAA,SAAS,IAAI,CAAC,CAAA,IAAM2B,CAAAA,eAAejE,YAAAA;QACvCuD,GAAG;QACHkM,YAAW;QACX5H,WAAW3C,QAAQ0K,MAAM;QACzBpH,MAAK;QACLC,cAAY,CAAC,WAAW,EAAElE,UAAU,CAAC;OAEpCsL,IAAAA,iCAAAA,EAA2BtL,aAAAA,WAAAA,GAE9BlD,OAAAoG,aAAA,CAAC4D,QAAAA;QACC/H,GAAG,AAAChB,CAAAA,SAAS,CAAC,IAAI,CAAA,IAAM2B,CAAAA,eAAejE,YAAAA;QACvCuD,GAAG;QACHkM,YAAW;QACX5H,WAAW3C,QAAQ0K,MAAM;QACzBpH,MAAK;QACLC,cAAY,CAAC,WAAW,EAAEjE,UAAU,CAAC;OAEpCqL,IAAAA,iCAAAA,EAA2BrL,cAIjCqC,KAAKlB,GAAG,CAAC,CAACmK,KAAK1K;QACd,MAAM1E,UAAU+D,SAAS,CAACqL,IAAI3I,YAAY,CAAC;QAC3C,OAAA,WAAA,GACE9F,OAAAoG,aAAA,CAACpG,OAAMsO,QAAQ,EAAA;YAAC9C,KAAKzH;yBACnB/D,OAAAoG,aAAA,CAACG,QAAAA;YACCb,GAAG+I,IAAI/I,CAAC;YACRO,aAAapE,mBAAmBxC,QAAQG,MAAM,GAAGtB,cAAc;YAC/DsI,WAAW3C,QAAQxE,OAAO;YAC1BqN,MAAMrN,QAAQmF,KAAK;YACnBkK,SAASrG,mBAAmBhJ,QAAQG,MAAM,KAAKgJ,yBAAyB,IAAI;YAC3E,GAAGsC,IAAAA,8BAAAA,EACF;gBACE6D,WAAWpQ,gBAAgBc,SAAS6D,WAAWC,WAAWjD,MAAMZ,OAAO,EAAE;gBACzE,GAAGD,QAAQsF,iBAAiB;YAC9B,GACA,OACA,KACD;YACDgC,SAASC,CAAAA,IAAKC,aAAaD,GAAGvH,QAAQG,MAAM;YAC5CsH,QAAQC;YACRC,cAAcJ,CAAAA,IAAKK,iBAAiBL,GAAGvH,QAAQG,MAAM;YACrD2O,cAAcvH,CAAAA,IAAKmC;YACnB7B,aAAaN,CAAAA,IAAKK,iBAAiBL,GAAGvH,QAAQG,MAAM;YACpDkH,qBAAmB2B,mBAAmBhJ,QAAQG,MAAM,KAAKgJ;YACzDoG,UAAUvP,QAAQG,MAAM,KAAK,KAAK,IAAI2M;;IAI9C,IACCpG,iBAAAA,WAAAA,GACD/F,OAAAoG,aAAA,CAACC,KAAAA;QACCW,cAAcJ,CAAAA,IAAKK,iBAAiBL,GAAG;QACvCM,aAAaN,CAAAA,IAAKK,iBAAiBL,GAAG;qBAEtC5G,OAAAoG,aAAA,CAACyI,8BAAAA,EAAAA;QACClF,SAASrL,mBAAmB4B,MAAMjB,UAAU,EAAEiE,WAAWC,WAAWjD,MAAML,gBAAgB;QAC1FiP,WAAW;YACT7M,GAAG;YACHC,GAAG;YACHkM,YAAY;YACZ5H,WAAW3C,QAAQ5E,UAAU;YAC7BD,UAAU+D;YACV,eAAe;QACjB;QACA8G,UAAU5G,eAAe,IAAI;QAC7B8L,aAAarF;SAGhBxJ,MAAMK,QAAQ,IAAA,WAAA,GACbP,OAAAoG,aAAA,CAACyI,8BAAAA,EAAAA;QACClF,SAASzJ,MAAMK,QAAQ;QACvBuO,WAAW;YACT7M,GAAG;YACHC,GAAG;YACHkM,YAAY;YACZY,kBAAkB;YAClBxI,WAAW3C,QAAQtD,QAAQ;QAC7B;QACAsJ,UAAU5G,eAAe;QACzB8L,aAAarF;UAKpBrC,kBACA,CAACnH,MAAM+O,WAAW,IAAI9M,iBAAAA,WAAAA,GACrBnC,OAAAoG,aAAA,CAAC8I,0BAAAA,EAAAA;QACE,GAAGhP,MAAMoK,YAAY;QACtBvI,eAAeA;QACfI,eAAeA;QACfgN,eAAe;YACbC,mBAAmB/E,mBAAmB;gBAAEhI,aAAaA;gBAAaoI,aAAalI;YAAa;QAC9F;;AAKV;AAEFnE,WAAWiR,WAAW,GAAG"}
|
|
1
|
+
{"version":3,"sources":["GaugeChart.tsx"],"sourcesContent":["import * 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} 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 { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\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) => {\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) => {\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 _rootElem = React.useRef<HTMLDivElement | null>(null);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [hoverYValues, setHoverYValues] = React.useState<YValue[]>([]);\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 React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n }),\n [],\n );\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\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 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')}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, 'Needle')}\n onMouseMove={e => _handleMouseOver(e, 'Needle')}\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 />\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) {\n _showCallout(focusEvent, focusedElement, true);\n }\n\n function _handleBlur() {\n _hideCallout(true);\n }\n\n function _handleMouseOver(mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string) {\n _showCallout(mouseEvent, hoveredElement, false);\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 ) {\n if (_calloutAnchor === legend) {\n return;\n }\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in event) {\n clientX = event.clientX;\n clientY = event.clientY;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const target = event.currentTarget as HTMLElement | SVGElement;\n if (target && 'getBoundingClientRect' in target) {\n const boundingRect = target.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n }\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.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 _updatePosition(clientX, clientY);\n setPopoverOpen(\n ['Needle', 'Chart value'].includes(legend) || _noLegendHighlighted() || _legendHighlighted(legend),\n );\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 _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getChartTitle(): string {\n const { chartTitle } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Gauge chart with ${_segments.length} segments. `;\n }\n const { arcs } = _processProps();\n const focusAttributes = useFocusableGroup();\n return (\n <div className={classes.root} ref={el => (_rootElem.current = el)}>\n <div className={classes.chartWrapper} {...focusAttributes}>\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 <text\n x={0}\n y={-(_outerRadius + TITLE_OFFSET)}\n textAnchor=\"middle\"\n className={classes.chartTitle}\n aria-hidden={true}\n >\n {props.chartTitle}\n </text>\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 return (\n <React.Fragment key={index}>\n <path\n d={arc.d}\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)}\n onBlur={_handleBlur}\n onMouseEnter={e => _handleMouseOver(e, segment.legend)}\n onMouseLeave={e => _handleCalloutDismiss()}\n onMouseMove={e => _handleMouseOver(e, segment.legend)}\n data-is-focusable={_legendHighlighted(segment.legend) || _noLegendHighlighted()}\n tabIndex={segment.legend !== '' ? 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 clickPosition={clickPosition}\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":["ARC_PADDING","BREAKPOINTS","GaugeChart","calcNeedleRotation","getChartValueLabel","getSegmentLabel","GAUGE_MARGIN","LABEL_WIDTH","LABEL_HEIGHT","LABEL_OFFSET","TITLE_OFFSET","EXTRA_NEEDLE_LENGTH","minRadius","arcWidth","fontSize","chartValue","minValue","maxValue","needleRotation","segment","variant","isAriaLabel","legend","size","toFixed","start","end","chartValueFormat","forCallout","toString","React","forwardRef","props","forwardedRef","_getMargins","hideMinMax","chartTitle","sublabel","left","right","top","bottom","_margins","_legendsHeight","hideLegend","_rootElem","useRef","_isRTL","useRtl","width","setWidth","useState","height","setHeight","hoveredLegend","setHoveredLegend","selectedLegends","setSelectedLegends","legendProps","focusedElement","setFocusedElement","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","hoverXValue","setHoverXValue","hoverYValues","setHoverYValues","prevPropsRef","_width","_height","_outerRadius","Math","min","chartValueSize","_getStylesBasedOnBreakpoint","_innerRadius","_minValue","_maxValue","_segments","_calloutAnchor","useEffect","current","clientWidth","clientHeight","prevProps","areArraysEqual","useImperativeHandle","componentRef","chartContainer","classes","useGaugeChartStyles","index","length","_processProps","segments","roundCorners","total","processedSegments","map","max","color","getColorFromToken","getNextColor","accessibilityData","push","arcGenerator","d3Arc","cornerRadius","padAngle","padRadius","rtlSafeSegments","Array","from","reverse","prevAngle","PI","arcs","endAngle","d","innerRadius","outerRadius","startAngle","segmentIndex","_renderNeedle","rtlSafeNeedleRotation","strokeWidth","halfStrokeWidth","needleLength","createElement","g","transform","path","className","needle","data-is-focusable","onFocus","e","_handleFocus","onBlur","_handleBlur","onMouseEnter","_handleMouseOver","onMouseMove","role","aria-label","_renderLegends","legends","title","hoverAction","onMouseOutAction","div","legendsContainer","Legends","centerLegends","onChange","_onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","_legendHighlighted","_getHighlightedLegend","includes","_noLegendHighlighted","focusEvent","_showCallout","_hideCallout","mouseEvent","hoveredElement","_handleMouseOut","_handleCalloutDismiss","isFocusEvent","clientX","clientY","target","currentTarget","boundingRect","getBoundingClientRect","yValue","_updatePosition","isBlurEvent","_wrapContent","content","id","maxWidth","textElement","d3Select","text","node","isOverflowing","textLength","getComputedTextLength","_multiValueCallout","calloutProps","yValueHoverSubCountsExists","_yValueHoverSubCountsExists","YValueHover","calloutContentRoot","calloutDateTimeContainer","style","marginBottom","calloutContentX","getAccessibleDataObject","xAxisCalloutAccessibilityData","formatToLocaleString","culture","calloutInfoContainer","display","yValues","isLast","shouldDrawBorderBottom","callOutAccessibilityData","key","paddingBottom","_getCalloutContent","descriptionMessage","yValueHover","some","yAxisCalloutData","xValue","marginStyle","marginRight","toDrawShape","undefined","calloutBlockContainer","borderInlineStart","Shape","svgProps","shapeStyles","pathProps","fill","shape","Points","Object","keys","pointTypes","calloutlegendText","calloutContentY","data","subcounts","subcountName","newX","newY","threshold","distance","sqrt","pow","_getChartTitle","focusAttributes","useFocusableGroup","root","ref","el","chartWrapper","svg","chart","onMouseLeave","textAnchor","aria-hidden","Fragment","limits","formatScientificLimitWidth","arc","opacity","ariaLabel","tabIndex","SVGTooltipText","textProps","wrapContent","dominantBaseline","hideTooltip","ChartPopover","customCallout","customizedCallout","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|