@fluentui/react-charts 0.0.0-nightly-20250625-0407.1 → 0.0.0-nightly-20250627-0405.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +33 -15
  2. package/dist/index.d.ts +2 -0
  3. package/lib/components/CommonComponents/CartesianChart.js +1 -1
  4. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  6. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +3 -6
  7. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  8. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +4 -2
  9. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  10. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +3 -2
  11. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  12. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +79 -10
  13. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  14. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +8 -8
  15. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  16. package/lib/utilities/utilities.js +9 -6
  17. package/lib/utilities/utilities.js.map +1 -1
  18. package/lib-commonjs/components/CommonComponents/CartesianChart.js +1 -1
  19. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  20. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  21. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +3 -6
  22. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  23. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +4 -2
  24. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  25. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +4 -2
  26. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  27. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +77 -8
  28. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  29. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +7 -7
  30. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  31. package/lib-commonjs/utilities/utilities.js +12 -6
  32. package/lib-commonjs/utilities/utilities.js.map +1 -1
  33. package/package.json +12 -12
@@ -19,6 +19,7 @@ const _useHorizontalBarChartWithAxisStylesstyles = require("./useHorizontalBarCh
19
19
  const _CartesianChart = require("../CommonComponents/CartesianChart");
20
20
  const _ChartPopover = require("../CommonComponents/ChartPopover");
21
21
  const _index = require("../../utilities/index");
22
+ const _vbcutils = require("../../utilities/vbc-utils");
22
23
  const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
23
24
  var _props_legendProps, _props_legendProps1, _props_legendProps2, _props_legendProps3;
24
25
  const _refArray = [];
@@ -40,6 +41,9 @@ const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwa
40
41
  let tooltipElement;
41
42
  let _longestBarPositiveTotalValue;
42
43
  let _longestBarNegativeTotalValue;
44
+ let _domainMargin = _index.MIN_DOMAIN_MARGIN;
45
+ var _props_yAxisPadding;
46
+ let _yAxisPadding = (_props_yAxisPadding = props.yAxisPadding) !== null && _props_yAxisPadding !== void 0 ? _props_yAxisPadding : 0.5;
43
47
  const cartesianChartRef = _react.useRef(null);
44
48
  const X_ORIGIN = 0;
45
49
  const [color, setColor] = _react.useState('');
@@ -135,7 +139,12 @@ const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwa
135
139
  _longestBarPositiveTotalValue = longestBars.longestPositiveBar;
136
140
  _longestBarNegativeTotalValue = longestBars.longestNegativeBar;
137
141
  const { xBarScale, yBarScale } = _yAxisType === _index.YAxisType.NumericAxis ? _getScales(containerHeight, containerWidth, true) : _getScales(containerHeight, containerWidth, false);
138
- const allBars = stackedChartData.map((singleBarData)=>_yAxisType === _index.YAxisType.NumericAxis ? _createNumericBars(containerHeight, containerWidth, xElement, yElement, singleBarData, xBarScale, yBarScale) : _createStringBars(containerHeight, containerWidth, xElement, yElement, singleBarData, xBarScale, yBarScale)).flat();
142
+ const xRange = xBarScale.range();
143
+ let allBars = [];
144
+ // when the chart mounts, the xRange[1] is sometimes seen to be < 0 (like -40) while xRange[0] > 0.
145
+ if (xRange[0] < xRange[1]) {
146
+ allBars = stackedChartData.map((singleBarData)=>_yAxisType === _index.YAxisType.NumericAxis ? _createNumericBars(containerHeight, containerWidth, xElement, yElement, singleBarData, xBarScale, yBarScale) : _createStringBars(containerHeight, containerWidth, xElement, yElement, singleBarData, xBarScale, yBarScale)).flat();
147
+ }
139
148
  return _bars = allBars;
140
149
  }
141
150
  function _createColors() {
@@ -211,16 +220,21 @@ const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwa
211
220
  ];
212
221
  if (isNumericScale) {
213
222
  const yMax = (0, _d3array.max)(_points, (point)=>point.y);
223
+ const yMin = (0, _d3array.min)(_points, (point)=>point.y);
224
+ const yDomainMax = Math.max(yMax, props.yMaxValue || 0);
225
+ // Default to 0 if yMinValue is not provided.
226
+ const yMinProp = props.yMinValue || 0;
227
+ const yDomainMin = Math.min(yMin, yMinProp);
214
228
  const xBarScale = (0, _d3scale.scaleLinear)().domain(xDomain).nice().range([
215
229
  _margins.left,
216
230
  containerWidth - _margins.right
217
231
  ]);
218
232
  const yBarScale = (0, _d3scale.scaleLinear)().domain([
219
- 0,
220
- yMax
233
+ yDomainMin,
234
+ yDomainMax
221
235
  ]).range([
222
- containerHeight - _margins.bottom,
223
- _margins.top
236
+ containerHeight - (_margins.bottom + _domainMargin),
237
+ _margins.top + _domainMargin
224
238
  ]);
225
239
  return {
226
240
  xBarScale,
@@ -231,9 +245,9 @@ const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwa
231
245
  // and CatrtesianChartBase w for more details refer example
232
246
  // http://using-d3js.com/04_07_ordinal_scales.html
233
247
  const yBarScale = (0, _d3scale.scaleBand)().domain(_yAxisLabels).range([
234
- containerHeight - _margins.bottom - _barHeight / 2,
235
- _margins.top + _barHeight / 2
236
- ]).padding(props.yAxisPadding || 0);
248
+ containerHeight - (_margins.bottom + _domainMargin),
249
+ _margins.top + _domainMargin
250
+ ]).padding(_yAxisPadding);
237
251
  const xBarScale = (0, _d3scale.scaleLinear)().domain(xDomain).nice().range([
238
252
  _margins.left,
239
253
  containerWidth - _margins.right
@@ -328,6 +342,59 @@ const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwa
328
342
  });
329
343
  return bars;
330
344
  }
345
+ function _getUniqueYValues() {
346
+ var _props_data;
347
+ const mapY = {};
348
+ (_props_data = props.data) === null || _props_data === void 0 ? void 0 : _props_data.forEach((point)=>{
349
+ mapY[point.y] = point.y;
350
+ });
351
+ const uniqueY = Object.values(mapY);
352
+ return uniqueY;
353
+ }
354
+ function _calculateAppropriateBarHeight(data, totalWidth, innerPadding) {
355
+ const result = (0, _vbcutils.getClosestPairDiffAndRange)(data);
356
+ if (!result || result[1] === 0) {
357
+ return 16;
358
+ }
359
+ const closestPairDiff = result[0];
360
+ let range = result[1];
361
+ const yMax = (0, _d3array.max)(_points, (point)=>point.y);
362
+ // Since we are always rendering from 0 to yMax, we need to ensure that the range is at least yMax
363
+ // to calculate the bar height correctly.
364
+ range = Math.max(range, yMax);
365
+ // Refer to https://microsoft.github.io/fluentui-charting-contrib/docs/rfcs/fix-overlapping-bars-on-continuous-axes
366
+ // for the derivation of the following formula.
367
+ const barWidth = Math.floor(totalWidth * closestPairDiff * (1 - innerPadding) / (range + closestPairDiff * (1 - innerPadding)));
368
+ return barWidth;
369
+ }
370
+ function _getDomainMarginsForHorizontalBarChart(containerHeight) {
371
+ _domainMargin = _index.MIN_DOMAIN_MARGIN;
372
+ const uniqueY = _getUniqueYValues();
373
+ /** Rate at which the space between the bars changes wrt the bar height */ _yAxisPadding = _yAxisPadding === 1 ? 0.99 : _yAxisPadding;
374
+ const barGapRate = _yAxisPadding / (1 - _yAxisPadding);
375
+ const numBars = uniqueY.length + (uniqueY.length - 1) * barGapRate;
376
+ // Total height available to render the bars
377
+ const totalHeight = containerHeight - (_margins.top + _index.MIN_DOMAIN_MARGIN) - (_margins.bottom + _index.MIN_DOMAIN_MARGIN);
378
+ if (_yAxisType !== _index.YAxisType.StringAxis) {
379
+ // Calculate bar height dynamically
380
+ _barHeight = props.barHeight || _calculateAppropriateBarHeight(uniqueY, totalHeight, _yAxisPadding);
381
+ _barHeight = Math.max(_barHeight, 1);
382
+ _domainMargin += _barHeight / 2;
383
+ } else {
384
+ // Calculate the appropriate bar height
385
+ _barHeight = props.barHeight || totalHeight / numBars;
386
+ /** Total height required to render the bars. Directly proportional to bar height */ const reqHeight = numBars * _barHeight;
387
+ if (totalHeight >= reqHeight) {
388
+ // Center align the chart by setting equal left and right margins for domain
389
+ _domainMargin = _index.MIN_DOMAIN_MARGIN + (totalHeight - reqHeight) / 2;
390
+ }
391
+ }
392
+ return {
393
+ ..._margins,
394
+ top: _margins.top + _domainMargin,
395
+ bottom: _margins.bottom + _domainMargin
396
+ };
397
+ }
331
398
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
332
399
  function _tooltipOfYAxislabels(ytooltipProps) {
333
400
  const { tooltipCls, yAxis, id } = ytooltipProps;
@@ -614,6 +681,7 @@ const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwa
614
681
  _xMax = Math.max((0, _d3array.max)(_points, (point)=>point.x), props.xMaxValue || 0);
615
682
  const legendBars = _getLegendData(_points);
616
683
  return /*#__PURE__*/ _react.createElement(_CartesianChart.CartesianChart, {
684
+ yAxisPadding: _yAxisPadding,
617
685
  ...props,
618
686
  chartTitle: _getChartTitle(),
619
687
  points: _points,
@@ -627,6 +695,7 @@ const HorizontalBarChartWithAxis = /*#__PURE__*/ _react.forwardRef((props, forwa
627
695
  legendBars: legendBars,
628
696
  barwidth: _barHeight,
629
697
  getmargins: _getMargins,
698
+ getYDomainMargins: _getDomainMarginsForHorizontalBarChart,
630
699
  getGraphData: _getGraphData,
631
700
  getAxisData: _getAxisData,
632
701
  onChartMouseLeave: _handleChartMouseLeave,
@@ -1 +1 @@
1
- {"version":3,"sources":["HorizontalBarChartWithAxis.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear as D3ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { Legend } from '../../components/Legends/Legends.types';\nimport { Legends } from '../../components/Legends/Legends';\nimport { useId } from '@fluentui/react-utilities';\nimport { useHorizontalBarChartWithAxisStyles } from './useHorizontalBarChartWithAxisStyles.styles';\nimport {\n AccessibilityProps,\n HorizontalBarChartWithAxisDataPoint,\n RefArrayData,\n Margins,\n ChartPopoverProps,\n Chart,\n} from '../../index';\nimport { ChildProps } from '../CommonComponents/CartesianChart.types';\nimport { CartesianChart } from '../CommonComponents/CartesianChart';\nimport { HorizontalBarChartWithAxisProps } from './HorizontalBarChartWithAxis.types';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n YAxisType,\n XAxisTypes,\n NumericAxis,\n StringAxis,\n getTypeOfAxis,\n getNextColor,\n areArraysEqual,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n computeLongestBars,\n IDomainNRange,\n domainRangeOfNumericForHorizontalBarChartWithAxis,\n groupChartDataByYValue,\n} from '../../utilities/index';\ntype ColorScale = (_p?: number) => string;\n\nexport const HorizontalBarChartWithAxis: React.FunctionComponent<HorizontalBarChartWithAxisProps> = React.forwardRef<\n HTMLDivElement,\n HorizontalBarChartWithAxisProps\n>((props, forwardedRef) => {\n const _refArray: RefArrayData[] = [];\n const _calloutId: string = useId('callout');\n const _isRtl: boolean = useRtl();\n const _tooltipId: string = useId('HBCWATooltipID_');\n const _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].x, true) as XAxisTypes)\n : XAxisTypes.NumericAxis;\n const _yAxisType: YAxisType =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].y, false) as YAxisType)\n : YAxisType.StringAxis;\n const _emptyChartId: string = useId('_HBCWithAxis_empty');\n let _points: HorizontalBarChartWithAxisDataPoint[] = [];\n let _barHeight: number = 0;\n let _colors: string[] = [];\n let _margins: Margins;\n let _bars: JSX.Element[];\n let _yAxisLabels: string[];\n let _xMax: number;\n let _calloutAnchorPoint: HorizontalBarChartWithAxisDataPoint | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let tooltipElement: any;\n let _longestBarPositiveTotalValue: number;\n let _longestBarNegativeTotalValue: number;\n const cartesianChartRef = React.useRef<Chart>(null);\n const X_ORIGIN: number = 0;\n\n const [color, setColor] = React.useState<string>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [isLegendSelected, setIsLegendSelected] = React.useState<boolean>(\n (props.legendProps?.selectedLegends && props.legendProps.selectedLegends.length > 0) ||\n props.legendProps?.selectedLegend !== undefined,\n );\n const [isLegendHovered, setIsLegendHovered] = React.useState<boolean>(false);\n const [selectedLegendTitle, setSelectedLegendTitle] = React.useState<string>(props.legendProps?.selectedLegend ?? '');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<HorizontalBarChartWithAxisDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const prevPropsRef = React.useRef<HorizontalBarChartWithAxisProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const classes = useHorizontalBarChartWithAxisStyles(props);\n function _adjustProps(): void {\n _points = props.data || [];\n _barHeight = props.barHeight || 32;\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n ];\n _colors = props.colors! || defaultPalette;\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _renderContentForOnlyBars(point: HorizontalBarChartWithAxisDataPoint): JSX.Element {\n const { useSingleColor = false } = props;\n let selectedPointIndex = 0;\n props.data!.forEach((yDataPoint: HorizontalBarChartWithAxisDataPoint, index: number) => {\n if (yDataPoint.y === point.y) {\n selectedPointIndex = index;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-shadow\n let color: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n color = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n color = point.color ? point.color : props.colors ? _createColors()(point.x) : getNextColor(selectedPointIndex, 0);\n }\n return (\n <>\n <ChartPopover\n XValue={point.xAxisCalloutData || point.x.toString()}\n legend={point.legend}\n YValue={point.yAxisCalloutData || point.y}\n color={color}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n />\n </>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _renderCallout(props?: HorizontalBarChartWithAxisDataPoint): JSX.Element | null {\n return props ? _renderContentForOnlyBars(props) : null;\n }\n\n function _getCustomizedCallout() {\n return props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _getGraphData(\n xScale: NumericAxis,\n yScale: NumericAxis | StringAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yElement?: SVGElement | null,\n ) {\n const stackedChartData = groupChartDataByYValue(_points);\n const longestBars = computeLongestBars(stackedChartData, X_ORIGIN);\n _longestBarPositiveTotalValue = longestBars.longestPositiveBar;\n _longestBarNegativeTotalValue = longestBars.longestNegativeBar;\n\n const { xBarScale, yBarScale } =\n _yAxisType === YAxisType.NumericAxis\n ? _getScales(containerHeight, containerWidth, true)\n : _getScales(containerHeight, containerWidth, false);\n const allBars = stackedChartData\n .map(singleBarData =>\n _yAxisType === YAxisType.NumericAxis\n ? _createNumericBars(\n containerHeight,\n containerWidth,\n xElement!,\n yElement!,\n singleBarData,\n xBarScale,\n yBarScale,\n )\n : _createStringBars(\n containerHeight,\n containerWidth,\n xElement!,\n yElement!,\n singleBarData,\n xBarScale,\n yBarScale,\n ),\n )\n .flat();\n\n return (_bars = allBars);\n }\n\n function _createColors(): D3ScaleLinear<string, string> | ColorScale {\n const increment = _colors.length <= 1 ? 1 : 1 / (_colors.length - 1);\n const { useSingleColor = false } = props;\n if (useSingleColor) {\n return (_p?: number) => {\n const { colors } = props;\n return colors && colors.length > 0 ? colors[0] : getColorFromToken(DataVizPalette.color16);\n };\n }\n const domainValues = [];\n for (let i = 0; i < _colors.length; i++) {\n domainValues.push(increment * i * _xMax);\n }\n const colorScale = d3ScaleLinear<string>().domain(domainValues).range(_colors);\n return colorScale;\n }\n\n function _refCallback(element: SVGRectElement, legendTitle: string): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _onBarHover(\n point: HorizontalBarChartWithAxisDataPoint,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n color: string,\n mouseEvent: React.MouseEvent<SVGElement, MouseEvent>,\n ): void {\n mouseEvent.persist();\n // eslint-disable-next-line @typescript-eslint/no-shadow\n if ((isLegendSelected === false || _isLegendHighlighted(point.legend)) && _calloutAnchorPoint !== point) {\n _calloutAnchorPoint = point;\n setPopoverOpen(true);\n _updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setDataForHoverCard(point.x);\n setSelectedLegendTitle(point.legend!);\n setColor(props.useSingleColor || props.enableGradient ? color : point.color!);\n // To display callout value, if no callout value given, taking given point.x value as a string.\n setXCalloutValue(point.yAxisCalloutData! || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData || point.x.toString());\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _onBarLeave(): void {\n setPopoverOpen(false);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _onBarFocus(point: HorizontalBarChartWithAxisDataPoint, refArrayIndexNumber: number, color: string): void {\n if ((isLegendSelected === false || _isLegendHighlighted(point.legend)) && _calloutAnchorPoint !== point) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (refArrayIndexNumber === index) {\n setPopoverOpen(true);\n setSelectedLegendTitle(point.legend!);\n setDataForHoverCard(point.x);\n setColor(props.useSingleColor ? color : point.color!);\n setXCalloutValue(point.yAxisCalloutData || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData! || point.x.toString());\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n });\n }\n }\n\n function _getScales(\n containerHeight: number,\n containerWidth: number,\n isNumericScale: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): { xBarScale: any; yBarScale: any } {\n const xMax = _longestBarPositiveTotalValue;\n const xMin = _longestBarNegativeTotalValue;\n const xDomain = [Math.min(X_ORIGIN, xMin), Math.max(X_ORIGIN, xMax)];\n if (isNumericScale) {\n const yMax = d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n const xBarScale = d3ScaleLinear()\n .domain(xDomain)\n .nice()\n .range([_margins.left!, containerWidth - _margins.right!]);\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([containerHeight - _margins.bottom!, _margins.top!]);\n return { xBarScale, yBarScale };\n } else {\n // please note these padding default values must be consistent in here\n // and CatrtesianChartBase w for more details refer example\n // http://using-d3js.com/04_07_ordinal_scales.html\n const yBarScale = d3ScaleBand()\n .domain(_yAxisLabels)\n .range([containerHeight - _margins.bottom! - _barHeight / 2, _margins.top! + _barHeight / 2])\n .padding(props.yAxisPadding || 0);\n\n const xBarScale = d3ScaleLinear()\n .domain(xDomain)\n .nice()\n .range([_margins.left!, containerWidth - _margins.right!]);\n return { xBarScale, yBarScale };\n }\n }\n\n function _createNumericBars(\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n yElement: SVGElement,\n singleBarData: HorizontalBarChartWithAxisDataPoint[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xBarScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yBarScale: any,\n ): JSX.Element[] {\n const { useSingleColor = false } = props;\n const sortedBars: HorizontalBarChartWithAxisDataPoint[] = [...singleBarData];\n sortedBars.sort((a, b) => {\n const aValue = typeof a.y === 'number' ? a.y : parseFloat(a.y);\n const bValue = typeof b.y === 'number' ? b.y : parseFloat(b.y);\n return bValue - aValue;\n });\n\n let prevWidthPositive = 0;\n let prevWidthNegative = 0;\n let prevPoint = 0;\n\n const totalPositiveBars = singleBarData.filter(\n (point: HorizontalBarChartWithAxisDataPoint) => point.x >= X_ORIGIN,\n ).length;\n const totalNegativeBars = singleBarData.length - totalPositiveBars;\n let currPositiveCounter = 0;\n let currNegativeCounter = 0;\n\n const bars = sortedBars.map((point: HorizontalBarChartWithAxisDataPoint, index: number) => {\n let shouldHighlight = true;\n if (isLegendHovered || isLegendSelected) {\n shouldHighlight = _isLegendHighlighted(point.legend);\n }\n if (point.x >= X_ORIGIN) {\n ++currPositiveCounter;\n }\n if (point.x < X_ORIGIN) {\n ++currNegativeCounter;\n }\n const barStartX = _isRtl\n ? containerWidth -\n (_margins.right! + Math.max(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN)) - _margins.left!)\n : Math.min(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN));\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n let startColor: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n startColor = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n startColor = props.colors ? _createColors()(point.x) : getNextColor(index, 0);\n }\n\n startColor = point.color && !useSingleColor ? point.color : startColor;\n\n const prevBarWidth = Math.abs(xBarScale(prevPoint + X_ORIGIN) - xBarScale(X_ORIGIN));\n prevPoint > X_ORIGIN ? (prevWidthPositive += prevBarWidth) : (prevWidthNegative += prevBarWidth);\n const currentWidth = Math.abs(xBarScale(point.x + X_ORIGIN) - xBarScale(X_ORIGIN));\n const gapWidthLTR =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && currPositiveCounter !== totalPositiveBars) ||\n (point.x < X_ORIGIN && (totalPositiveBars !== 0 || currNegativeCounter > 1)))\n ? 2\n : 0;\n const gapWidthRTL =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && (totalNegativeBars !== 0 || currPositiveCounter > 1)) ||\n (point.x < X_ORIGIN && currNegativeCounter !== totalNegativeBars))\n ? 2\n : 0;\n let xStart = X_ORIGIN;\n if (_isRtl) {\n xStart = point.x > X_ORIGIN ? barStartX - prevWidthPositive : barStartX + prevWidthNegative;\n } else {\n xStart = point.x > X_ORIGIN ? barStartX + prevWidthPositive : barStartX - prevWidthNegative;\n }\n prevPoint = point.x;\n\n return (\n <React.Fragment key={`${index}_${point.x}`}>\n <rect\n key={point.y}\n x={xStart}\n y={yBarScale(point.y) - _barHeight / 2}\n data-is-focusable={shouldHighlight}\n width={currentWidth - (_isRtl ? gapWidthRTL : gapWidthLTR)}\n height={_barHeight}\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n rx={props.roundCorners ? 3 : 0}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement, MouseEvent>) => _onBarHover(point, startColor, event)}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n aria-labelledby={`toolTip${_calloutId}`}\n onMouseLeave={_onBarLeave}\n onFocus={() => _onBarFocus(point, index, startColor)}\n onBlur={_onBarLeave}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n });\n return bars;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _tooltipOfYAxislabels(ytooltipProps: any) {\n const { tooltipCls, yAxis, id } = ytooltipProps;\n if (yAxis === null) {\n return null;\n }\n const div = d3Select('body').append('div').attr('id', id).attr('class', tooltipCls).style('opacity', 0);\n const aa = yAxis!.selectAll('#BaseSpan')._groups[0];\n const baseSpanLength = aa && Object.keys(aa)!.length;\n const originalDataArray: string[] = [];\n for (let i = 0; i < baseSpanLength; i++) {\n const originalData = aa[i].dataset && (Object.values(aa[i].dataset)[0] as string);\n originalDataArray.push(originalData);\n }\n const tickObject = yAxis!.selectAll('.tick')._groups[0];\n const tickObjectLength = tickObject && Object.keys(tickObject)!.length;\n for (let i = 0; i < tickObjectLength; i++) {\n const d1 = tickObject[i];\n d3Select(d1)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .on('mouseover', (event: any, d) => {\n if (!tooltipElement) {\n div.style('opacity', 0.9);\n div\n .text(originalDataArray[i])\n .style('left', event.pageX + 'px')\n .style('top', event.pageY - 28 + 'px');\n }\n })\n .on('mouseout', d => {\n div.style('opacity', 0);\n });\n }\n }\n\n function _createStringBars(\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n yElement: SVGElement,\n singleBarData: HorizontalBarChartWithAxisDataPoint[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xBarScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yBarScale: any,\n ): JSX.Element[] {\n const { useSingleColor = false } = props;\n let prevWidthPositive = 0;\n let prevWidthNegative = 0;\n let prevPoint = 0;\n const totalPositiveBars = singleBarData.filter(\n (point: HorizontalBarChartWithAxisDataPoint) => point.x >= X_ORIGIN,\n ).length;\n const totalNegativeBars = singleBarData.length - totalPositiveBars;\n let currPositiveCounter = 0;\n let currNegativeCounter = 0;\n const bars = singleBarData.map((point: HorizontalBarChartWithAxisDataPoint, index: number) => {\n let shouldHighlight = true;\n if (isLegendHovered || isLegendSelected) {\n shouldHighlight = _isLegendHighlighted(point.legend);\n }\n if (point.x >= X_ORIGIN) {\n ++currPositiveCounter;\n }\n if (point.x < X_ORIGIN) {\n ++currNegativeCounter;\n }\n const barStartX = _isRtl\n ? containerWidth -\n (_margins.right! + Math.max(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN)) - _margins.left!)\n : Math.min(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN));\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n let startColor: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n startColor = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n startColor = props.colors ? _createColors()(point.x) : getNextColor(index, 0);\n }\n\n startColor = point.color && !useSingleColor ? point.color : startColor;\n const prevBarWidth = Math.abs(xBarScale(prevPoint + X_ORIGIN) - xBarScale(X_ORIGIN));\n prevPoint > 0 ? (prevWidthPositive += prevBarWidth) : (prevWidthNegative += prevBarWidth);\n const currentWidth = Math.abs(xBarScale(point.x + X_ORIGIN) - xBarScale(X_ORIGIN));\n const gapWidthLTR =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && currPositiveCounter !== totalPositiveBars) ||\n (point.x < X_ORIGIN && (totalPositiveBars !== 0 || currNegativeCounter > 1)))\n ? 2\n : 0;\n const gapWidthRTL =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && (totalNegativeBars !== 0 || currPositiveCounter > 1)) ||\n (point.x < X_ORIGIN && currNegativeCounter !== totalNegativeBars))\n ? 2\n : 0;\n prevPoint = point.x;\n let xStart = X_ORIGIN;\n if (_isRtl) {\n xStart = point.x > X_ORIGIN ? barStartX - prevWidthPositive : barStartX + prevWidthNegative;\n } else {\n xStart = point.x > X_ORIGIN ? barStartX + prevWidthPositive : barStartX - prevWidthNegative;\n }\n return (\n <React.Fragment key={`${index}_${point.x}`}>\n <rect\n transform={`translate(0,${0.5 * (yBarScale.bandwidth() - _barHeight)})`}\n key={point.x}\n x={xStart}\n y={yBarScale(point.y)}\n rx={props.roundCorners ? 3 : 0}\n width={currentWidth - (_isRtl ? gapWidthRTL : gapWidthLTR)}\n height={_barHeight}\n aria-labelledby={`toolTip${_calloutId}`}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement, MouseEvent>) => _onBarHover(point, startColor, event)}\n onMouseLeave={_onBarLeave}\n onBlur={_onBarLeave}\n data-is-focusable={shouldHighlight}\n opacity={shouldHighlight ? 1 : 0.1}\n onFocus={() => _onBarFocus(point, index, startColor)}\n fill={startColor}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n });\n\n // Removing un wanted tooltip div from DOM, when prop not provided, for proper cleanup\n // of unwanted DOM elements, to prevent flacky behaviour in tooltips , that might occur\n // in creating tooltips when tooltips are enabled( as we try to recreate a tspan with _tooltipId)\n if (!props.showYAxisLablesTooltip) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n //eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at y axis labels.\n if (props.showYAxisLablesTooltip) {\n const yAxisElement = d3Select(yElement).call(yBarScale);\n if (!tooltipElement) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n //eslint-disable-next-line no-empty\n } catch (e) {}\n }\n const ytooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n yAxis: yAxisElement,\n };\n yAxisElement && _tooltipOfYAxislabels(ytooltipProps);\n }\n return bars;\n }\n\n function _onLegendHover(customMessage: string): void {\n if (!_isLegendSelected()) {\n setIsLegendHovered(true);\n setSelectedLegendTitle(customMessage);\n }\n }\n\n function _onLegendLeave(isLegendFocused?: boolean): void {\n if (!!isLegendFocused || !_isLegendSelected()) {\n setIsLegendHovered(false);\n setSelectedLegendTitle('');\n setIsLegendSelected(isLegendFocused ? false : _isLegendSelected());\n }\n }\n\n function _getLegendData(data: HorizontalBarChartWithAxisDataPoint[]): JSX.Element {\n const { useSingleColor } = props;\n const actions: Legend[] = [];\n const mapLegendToColor: Record<string, string> = {};\n\n data.forEach((point: HorizontalBarChartWithAxisDataPoint, _index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const color: string = useSingleColor ? (props.colors ? _createColors()(1) : getNextColor(1, 0)) : point.color!;\n\n mapLegendToColor[point.legend!] = color;\n });\n Object.entries(mapLegendToColor).forEach(([legendTitle, color]) => {\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: legendTitle,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onMouseOutAction: (isLegendSelected?: boolean) => {\n _onLegendLeave(isLegendSelected);\n },\n };\n actions.push(legend);\n });\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n return legends;\n }\n\n function _isLegendSelected(): boolean {\n return isLegendSelected!;\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 _isLegendHighlighted(legend?: string) {\n return _getHighlightedLegend().includes(legend!);\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : selectedLegendTitle ? [selectedLegendTitle] : [];\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 setSelectedLegendTitle(currentLegend?.title!);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n setSelectedLegendTitle(currentLegend?.title!);\n }\n setIsLegendSelected(selectedLegends.length > 0);\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n function _getAxisData(yAxisData: IAxisData) {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n // For HBCWA x and y Values are swapped\n const { yAxisDomainValues: domainValue } = yAxisData;\n _xMax = Math.max(domainValue[domainValue.length - 1], props.xMaxValue || 0);\n }\n }\n function _getAriaLabel(point: HorizontalBarChartWithAxisDataPoint): string {\n const xValue = point.xAxisCalloutData || point.x;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ` + `${yValue}.`;\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Horizontal bar chart with ${data?.length || 0} bars. `;\n }\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n function _updatePosition(newX: number, newY: number): void {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n\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 _getDomainNRangeValues(\n points: HorizontalBarChartWithAxisDataPoint[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForHorizontalBarChartWithAxis(\n points,\n margins,\n width,\n isRTL,\n shiftX,\n X_ORIGIN,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const calloutProps: ChartPopoverProps = {\n color: color,\n legend: selectedLegendTitle,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n isCartesian: true,\n isPopoverOpen,\n clickPosition,\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n const reversedBars = [..._points].reverse();\n _yAxisLabels = reversedBars.map((point: HorizontalBarChartWithAxisDataPoint) => point.y as string);\n _xMax = Math.max(d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.x)!, props.xMaxValue || 0);\n const legendBars: JSX.Element = _getLegendData(_points);\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_points}\n chartType={ChartTypes.HorizontalBarChartWithAxis}\n xAxisType={_xAxisType}\n yAxisType={_yAxisType}\n getDomainNRangeValues={_getDomainNRangeValues}\n stringDatasetForYAxisDomain={_yAxisLabels}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n barwidth={_barHeight}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n </>\n );\n }}\n />\n );\n } else {\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n }\n});\nHorizontalBarChartWithAxis.displayName = 'HorizontalBarChartWithAxis';\n"],"names":["HorizontalBarChartWithAxis","React","forwardRef","props","forwardedRef","_refArray","_calloutId","useId","_isRtl","useRtl","_tooltipId","_xAxisType","data","length","getTypeOfAxis","x","XAxisTypes","NumericAxis","_yAxisType","y","YAxisType","StringAxis","_emptyChartId","_points","_barHeight","_colors","_margins","_bars","_yAxisLabels","_xMax","_calloutAnchorPoint","tooltipElement","_longestBarPositiveTotalValue","_longestBarNegativeTotalValue","cartesianChartRef","useRef","X_ORIGIN","color","setColor","useState","dataForHoverCard","setDataForHoverCard","isLegendSelected","setIsLegendSelected","legendProps","selectedLegends","selectedLegend","undefined","isLegendHovered","setIsLegendHovered","selectedLegendTitle","setSelectedLegendTitle","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","setSelectedLegends","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","isPopoverOpen","setPopoverOpen","clickPosition","setClickPosition","prevPropsRef","useEffect","current","prevProps","areArraysEqual","useImperativeHandle","componentRef","chartContainer","classes","useHorizontalBarChartWithAxisStyles","_adjustProps","barHeight","defaultPalette","getColorFromToken","DataVizPalette","color6","color1","color5","color7","colors","_getMargins","margins","_renderContentForOnlyBars","point","useSingleColor","selectedPointIndex","forEach","yDataPoint","index","_createColors","getNextColor","createElement","Fragment","ChartPopover","XValue","xAxisCalloutData","toString","legend","YValue","yAxisCalloutData","culture","_renderCallout","_getCustomizedCallout","onRenderCalloutPerDataPoint","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","yElement","stackedChartData","groupChartDataByYValue","longestBars","computeLongestBars","longestPositiveBar","longestNegativeBar","xBarScale","yBarScale","_getScales","allBars","map","singleBarData","_createNumericBars","_createStringBars","flat","increment","_p","color16","domainValues","i","push","colorScale","d3ScaleLinear","domain","range","_refCallback","element","legendTitle","refElement","_onBarHover","mouseEvent","persist","_isLegendHighlighted","_updatePosition","clientX","clientY","enableGradient","_onBarLeave","_handleChartMouseLeave","_onBarFocus","refArrayIndexNumber","obj","isNumericScale","xMax","xMin","xDomain","Math","min","max","yMax","d3Max","nice","left","right","bottom","top","d3ScaleBand","padding","yAxisPadding","sortedBars","sort","a","b","aValue","parseFloat","bValue","prevWidthPositive","prevWidthNegative","prevPoint","totalPositiveBars","filter","totalNegativeBars","currPositiveCounter","currNegativeCounter","bars","shouldHighlight","barStartX","key","startColor","prevBarWidth","abs","currentWidth","gapWidthLTR","gapWidthRTL","xStart","rect","data-is-focusable","width","height","ref","e","rx","roundCorners","onClick","onMouseOver","event","aria-label","_getAriaLabel","role","aria-labelledby","onMouseLeave","onFocus","onBlur","fill","opacity","tabIndex","_tooltipOfYAxislabels","ytooltipProps","tooltipCls","yAxis","id","div","d3Select","append","attr","style","aa","selectAll","_groups","baseSpanLength","Object","keys","originalDataArray","originalData","dataset","values","tickObject","tickObjectLength","d1","on","d","text","pageX","pageY","transform","bandwidth","showYAxisLablesTooltip","document","getElementById","remove","yAxisElement","call","tooltip","_onLegendHover","customMessage","_isLegendSelected","_onLegendLeave","isLegendFocused","_getLegendData","actions","mapLegendToColor","_index","entries","title","hoverAction","onMouseOutAction","legends","Legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","_getHighlightedLegend","includes","currentLegend","canSelectMultipleLegends","slice","_getAxisData","yAxisData","yAxisDomainValues","domainValue","xMaxValue","xValue","yValue","ariaLabel","_getChartTitle","chartTitle","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","domainRangeOfNumericForHorizontalBarChartWithAxis","dStartValue","dEndValue","rStartValue","rEndValue","calloutProps","getAccessibleDataObject","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCartesian","tickParams","tickFormat","reversedBars","reverse","legendBars","CartesianChart","ChartTypes","yAxisType","getDomainNRangeValues","stringDatasetForYAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","children","g","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["HorizontalBarChartWithAxis.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear as D3ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { Legend } from '../../components/Legends/Legends.types';\nimport { Legends } from '../../components/Legends/Legends';\nimport { useId } from '@fluentui/react-utilities';\nimport { useHorizontalBarChartWithAxisStyles } from './useHorizontalBarChartWithAxisStyles.styles';\nimport {\n AccessibilityProps,\n HorizontalBarChartWithAxisDataPoint,\n RefArrayData,\n Margins,\n ChartPopoverProps,\n Chart,\n} from '../../index';\nimport { ChildProps } from '../CommonComponents/CartesianChart.types';\nimport { CartesianChart } from '../CommonComponents/CartesianChart';\nimport { HorizontalBarChartWithAxisProps } from './HorizontalBarChartWithAxis.types';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n YAxisType,\n XAxisTypes,\n NumericAxis,\n StringAxis,\n getTypeOfAxis,\n getNextColor,\n areArraysEqual,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n computeLongestBars,\n IDomainNRange,\n domainRangeOfNumericForHorizontalBarChartWithAxis,\n groupChartDataByYValue,\n MIN_DOMAIN_MARGIN,\n} from '../../utilities/index';\nimport { getClosestPairDiffAndRange } from '../../utilities/vbc-utils';\ntype ColorScale = (_p?: number) => string;\n\nexport const HorizontalBarChartWithAxis: React.FunctionComponent<HorizontalBarChartWithAxisProps> = React.forwardRef<\n HTMLDivElement,\n HorizontalBarChartWithAxisProps\n>((props, forwardedRef) => {\n const _refArray: RefArrayData[] = [];\n const _calloutId: string = useId('callout');\n const _isRtl: boolean = useRtl();\n const _tooltipId: string = useId('HBCWATooltipID_');\n const _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].x, true) as XAxisTypes)\n : XAxisTypes.NumericAxis;\n const _yAxisType: YAxisType =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].y, false) as YAxisType)\n : YAxisType.StringAxis;\n const _emptyChartId: string = useId('_HBCWithAxis_empty');\n let _points: HorizontalBarChartWithAxisDataPoint[] = [];\n let _barHeight: number = 0;\n let _colors: string[] = [];\n let _margins: Margins;\n let _bars: JSX.Element[];\n let _yAxisLabels: string[];\n let _xMax: number;\n let _calloutAnchorPoint: HorizontalBarChartWithAxisDataPoint | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let tooltipElement: any;\n let _longestBarPositiveTotalValue: number;\n let _longestBarNegativeTotalValue: number;\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _yAxisPadding: number = props.yAxisPadding ?? 0.5;\n const cartesianChartRef = React.useRef<Chart>(null);\n const X_ORIGIN: number = 0;\n\n const [color, setColor] = React.useState<string>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [isLegendSelected, setIsLegendSelected] = React.useState<boolean>(\n (props.legendProps?.selectedLegends && props.legendProps.selectedLegends.length > 0) ||\n props.legendProps?.selectedLegend !== undefined,\n );\n const [isLegendHovered, setIsLegendHovered] = React.useState<boolean>(false);\n const [selectedLegendTitle, setSelectedLegendTitle] = React.useState<string>(props.legendProps?.selectedLegend ?? '');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<HorizontalBarChartWithAxisDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const prevPropsRef = React.useRef<HorizontalBarChartWithAxisProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const classes = useHorizontalBarChartWithAxisStyles(props);\n function _adjustProps(): void {\n _points = props.data || [];\n _barHeight = props.barHeight || 32;\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n ];\n _colors = props.colors! || defaultPalette;\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _renderContentForOnlyBars(point: HorizontalBarChartWithAxisDataPoint): JSX.Element {\n const { useSingleColor = false } = props;\n let selectedPointIndex = 0;\n props.data!.forEach((yDataPoint: HorizontalBarChartWithAxisDataPoint, index: number) => {\n if (yDataPoint.y === point.y) {\n selectedPointIndex = index;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-shadow\n let color: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n color = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n color = point.color ? point.color : props.colors ? _createColors()(point.x) : getNextColor(selectedPointIndex, 0);\n }\n return (\n <>\n <ChartPopover\n XValue={point.xAxisCalloutData || point.x.toString()}\n legend={point.legend}\n YValue={point.yAxisCalloutData || point.y}\n color={color}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n />\n </>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _renderCallout(props?: HorizontalBarChartWithAxisDataPoint): JSX.Element | null {\n return props ? _renderContentForOnlyBars(props) : null;\n }\n\n function _getCustomizedCallout() {\n return props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _getGraphData(\n xScale: NumericAxis,\n yScale: NumericAxis | StringAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yElement?: SVGElement | null,\n ) {\n const stackedChartData = groupChartDataByYValue(_points);\n const longestBars = computeLongestBars(stackedChartData, X_ORIGIN);\n _longestBarPositiveTotalValue = longestBars.longestPositiveBar;\n _longestBarNegativeTotalValue = longestBars.longestNegativeBar;\n\n const { xBarScale, yBarScale } =\n _yAxisType === YAxisType.NumericAxis\n ? _getScales(containerHeight, containerWidth, true)\n : _getScales(containerHeight, containerWidth, false);\n const xRange = xBarScale.range();\n let allBars: JSX.Element[] = [];\n // when the chart mounts, the xRange[1] is sometimes seen to be < 0 (like -40) while xRange[0] > 0.\n if (xRange[0] < xRange[1]) {\n allBars = stackedChartData\n .map(singleBarData =>\n _yAxisType === YAxisType.NumericAxis\n ? _createNumericBars(\n containerHeight,\n containerWidth,\n xElement!,\n yElement!,\n singleBarData,\n xBarScale,\n yBarScale,\n )\n : _createStringBars(\n containerHeight,\n containerWidth,\n xElement!,\n yElement!,\n singleBarData,\n xBarScale,\n yBarScale,\n ),\n )\n .flat();\n }\n\n return (_bars = allBars);\n }\n\n function _createColors(): D3ScaleLinear<string, string> | ColorScale {\n const increment = _colors.length <= 1 ? 1 : 1 / (_colors.length - 1);\n const { useSingleColor = false } = props;\n if (useSingleColor) {\n return (_p?: number) => {\n const { colors } = props;\n return colors && colors.length > 0 ? colors[0] : getColorFromToken(DataVizPalette.color16);\n };\n }\n const domainValues = [];\n for (let i = 0; i < _colors.length; i++) {\n domainValues.push(increment * i * _xMax);\n }\n const colorScale = d3ScaleLinear<string>().domain(domainValues).range(_colors);\n return colorScale;\n }\n\n function _refCallback(element: SVGRectElement, legendTitle: string): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _onBarHover(\n point: HorizontalBarChartWithAxisDataPoint,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n color: string,\n mouseEvent: React.MouseEvent<SVGElement, MouseEvent>,\n ): void {\n mouseEvent.persist();\n // eslint-disable-next-line @typescript-eslint/no-shadow\n if ((isLegendSelected === false || _isLegendHighlighted(point.legend)) && _calloutAnchorPoint !== point) {\n _calloutAnchorPoint = point;\n setPopoverOpen(true);\n _updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setDataForHoverCard(point.x);\n setSelectedLegendTitle(point.legend!);\n setColor(props.useSingleColor || props.enableGradient ? color : point.color!);\n // To display callout value, if no callout value given, taking given point.x value as a string.\n setXCalloutValue(point.yAxisCalloutData! || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData || point.x.toString());\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _onBarLeave(): void {\n setPopoverOpen(false);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _onBarFocus(point: HorizontalBarChartWithAxisDataPoint, refArrayIndexNumber: number, color: string): void {\n if ((isLegendSelected === false || _isLegendHighlighted(point.legend)) && _calloutAnchorPoint !== point) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (refArrayIndexNumber === index) {\n setPopoverOpen(true);\n setSelectedLegendTitle(point.legend!);\n setDataForHoverCard(point.x);\n setColor(props.useSingleColor ? color : point.color!);\n setXCalloutValue(point.yAxisCalloutData || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData! || point.x.toString());\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n });\n }\n }\n\n function _getScales(\n containerHeight: number,\n containerWidth: number,\n isNumericScale: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): { xBarScale: any; yBarScale: any } {\n const xMax = _longestBarPositiveTotalValue;\n const xMin = _longestBarNegativeTotalValue;\n const xDomain = [Math.min(X_ORIGIN, xMin), Math.max(X_ORIGIN, xMax)];\n if (isNumericScale) {\n const yMax = d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n const yMin = d3Min(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n const yDomainMax = Math.max(yMax, props.yMaxValue || 0);\n // Default to 0 if yMinValue is not provided.\n const yMinProp = props.yMinValue || 0;\n const yDomainMin = Math.min(yMin, yMinProp);\n const xBarScale = d3ScaleLinear()\n .domain(xDomain)\n .nice()\n .range([_margins.left!, containerWidth - _margins.right!]);\n const yBarScale = d3ScaleLinear()\n .domain([yDomainMin, yDomainMax])\n .range([containerHeight - (_margins.bottom! + _domainMargin), _margins.top! + _domainMargin]);\n return { xBarScale, yBarScale };\n } else {\n // please note these padding default values must be consistent in here\n // and CatrtesianChartBase w for more details refer example\n // http://using-d3js.com/04_07_ordinal_scales.html\n const yBarScale = d3ScaleBand()\n .domain(_yAxisLabels)\n .range([containerHeight - (_margins.bottom! + _domainMargin), _margins.top! + _domainMargin])\n .padding(_yAxisPadding);\n\n const xBarScale = d3ScaleLinear()\n .domain(xDomain)\n .nice()\n .range([_margins.left!, containerWidth - _margins.right!]);\n return { xBarScale, yBarScale };\n }\n }\n\n function _createNumericBars(\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n yElement: SVGElement,\n singleBarData: HorizontalBarChartWithAxisDataPoint[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xBarScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yBarScale: any,\n ): JSX.Element[] {\n const { useSingleColor = false } = props;\n const sortedBars: HorizontalBarChartWithAxisDataPoint[] = [...singleBarData];\n sortedBars.sort((a, b) => {\n const aValue = typeof a.y === 'number' ? a.y : parseFloat(a.y);\n const bValue = typeof b.y === 'number' ? b.y : parseFloat(b.y);\n return bValue - aValue;\n });\n\n let prevWidthPositive = 0;\n let prevWidthNegative = 0;\n let prevPoint = 0;\n\n const totalPositiveBars = singleBarData.filter(\n (point: HorizontalBarChartWithAxisDataPoint) => point.x >= X_ORIGIN,\n ).length;\n const totalNegativeBars = singleBarData.length - totalPositiveBars;\n let currPositiveCounter = 0;\n let currNegativeCounter = 0;\n\n const bars = sortedBars.map((point: HorizontalBarChartWithAxisDataPoint, index: number) => {\n let shouldHighlight = true;\n if (isLegendHovered || isLegendSelected) {\n shouldHighlight = _isLegendHighlighted(point.legend);\n }\n if (point.x >= X_ORIGIN) {\n ++currPositiveCounter;\n }\n if (point.x < X_ORIGIN) {\n ++currNegativeCounter;\n }\n const barStartX = _isRtl\n ? containerWidth -\n (_margins.right! + Math.max(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN)) - _margins.left!)\n : Math.min(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN));\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n let startColor: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n startColor = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n startColor = props.colors ? _createColors()(point.x) : getNextColor(index, 0);\n }\n\n startColor = point.color && !useSingleColor ? point.color : startColor;\n\n const prevBarWidth = Math.abs(xBarScale(prevPoint + X_ORIGIN) - xBarScale(X_ORIGIN));\n prevPoint > X_ORIGIN ? (prevWidthPositive += prevBarWidth) : (prevWidthNegative += prevBarWidth);\n const currentWidth = Math.abs(xBarScale(point.x + X_ORIGIN) - xBarScale(X_ORIGIN));\n const gapWidthLTR =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && currPositiveCounter !== totalPositiveBars) ||\n (point.x < X_ORIGIN && (totalPositiveBars !== 0 || currNegativeCounter > 1)))\n ? 2\n : 0;\n const gapWidthRTL =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && (totalNegativeBars !== 0 || currPositiveCounter > 1)) ||\n (point.x < X_ORIGIN && currNegativeCounter !== totalNegativeBars))\n ? 2\n : 0;\n let xStart = X_ORIGIN;\n if (_isRtl) {\n xStart = point.x > X_ORIGIN ? barStartX - prevWidthPositive : barStartX + prevWidthNegative;\n } else {\n xStart = point.x > X_ORIGIN ? barStartX + prevWidthPositive : barStartX - prevWidthNegative;\n }\n prevPoint = point.x;\n\n return (\n <React.Fragment key={`${index}_${point.x}`}>\n <rect\n key={point.y}\n x={xStart}\n y={yBarScale(point.y) - _barHeight / 2}\n data-is-focusable={shouldHighlight}\n width={currentWidth - (_isRtl ? gapWidthRTL : gapWidthLTR)}\n height={_barHeight}\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n rx={props.roundCorners ? 3 : 0}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement, MouseEvent>) => _onBarHover(point, startColor, event)}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n aria-labelledby={`toolTip${_calloutId}`}\n onMouseLeave={_onBarLeave}\n onFocus={() => _onBarFocus(point, index, startColor)}\n onBlur={_onBarLeave}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n });\n return bars;\n }\n\n function _getUniqueYValues() {\n const mapY: Record<string, number | string> = {};\n props.data?.forEach((point: HorizontalBarChartWithAxisDataPoint) => {\n mapY[point.y] = point.y;\n });\n const uniqueY = Object.values(mapY);\n return uniqueY;\n }\n\n function _calculateAppropriateBarHeight(data: number[] | Date[], totalWidth: number, innerPadding: number) {\n const result = getClosestPairDiffAndRange(data);\n if (!result || result[1] === 0) {\n return 16;\n }\n const closestPairDiff = result[0];\n let range = result[1];\n const yMax = d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n // Since we are always rendering from 0 to yMax, we need to ensure that the range is at least yMax\n // to calculate the bar height correctly.\n range = Math.max(range, yMax);\n // Refer to https://microsoft.github.io/fluentui-charting-contrib/docs/rfcs/fix-overlapping-bars-on-continuous-axes\n // for the derivation of the following formula.\n const barWidth = Math.floor(\n (totalWidth * closestPairDiff * (1 - innerPadding)) / (range + closestPairDiff * (1 - innerPadding)),\n );\n return barWidth;\n }\n\n function _getDomainMarginsForHorizontalBarChart(containerHeight: number): Margins {\n _domainMargin = MIN_DOMAIN_MARGIN;\n const uniqueY = _getUniqueYValues();\n /** Rate at which the space between the bars changes wrt the bar height */\n _yAxisPadding = _yAxisPadding === 1 ? 0.99 : _yAxisPadding;\n const barGapRate = _yAxisPadding / (1 - _yAxisPadding);\n const numBars = uniqueY.length + (uniqueY.length - 1) * barGapRate;\n // Total height available to render the bars\n const totalHeight = containerHeight - (_margins.top! + MIN_DOMAIN_MARGIN) - (_margins.bottom! + MIN_DOMAIN_MARGIN);\n if (_yAxisType !== YAxisType.StringAxis) {\n // Calculate bar height dynamically\n _barHeight =\n props.barHeight || _calculateAppropriateBarHeight(uniqueY as number[] | Date[], totalHeight, _yAxisPadding);\n _barHeight = Math.max(_barHeight, 1);\n _domainMargin += _barHeight / 2;\n } else {\n // Calculate the appropriate bar height\n _barHeight = props.barHeight || totalHeight / numBars;\n /** Total height required to render the bars. Directly proportional to bar height */\n const reqHeight = numBars * _barHeight;\n if (totalHeight >= reqHeight) {\n // Center align the chart by setting equal left and right margins for domain\n _domainMargin = MIN_DOMAIN_MARGIN + (totalHeight - reqHeight) / 2;\n }\n }\n\n return {\n ..._margins,\n top: _margins.top! + _domainMargin,\n bottom: _margins.bottom! + _domainMargin,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _tooltipOfYAxislabels(ytooltipProps: any) {\n const { tooltipCls, yAxis, id } = ytooltipProps;\n if (yAxis === null) {\n return null;\n }\n const div = d3Select('body').append('div').attr('id', id).attr('class', tooltipCls).style('opacity', 0);\n const aa = yAxis!.selectAll('#BaseSpan')._groups[0];\n const baseSpanLength = aa && Object.keys(aa)!.length;\n const originalDataArray: string[] = [];\n for (let i = 0; i < baseSpanLength; i++) {\n const originalData = aa[i].dataset && (Object.values(aa[i].dataset)[0] as string);\n originalDataArray.push(originalData);\n }\n const tickObject = yAxis!.selectAll('.tick')._groups[0];\n const tickObjectLength = tickObject && Object.keys(tickObject)!.length;\n for (let i = 0; i < tickObjectLength; i++) {\n const d1 = tickObject[i];\n d3Select(d1)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .on('mouseover', (event: any, d) => {\n if (!tooltipElement) {\n div.style('opacity', 0.9);\n div\n .text(originalDataArray[i])\n .style('left', event.pageX + 'px')\n .style('top', event.pageY - 28 + 'px');\n }\n })\n .on('mouseout', d => {\n div.style('opacity', 0);\n });\n }\n }\n\n function _createStringBars(\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n yElement: SVGElement,\n singleBarData: HorizontalBarChartWithAxisDataPoint[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xBarScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yBarScale: any,\n ): JSX.Element[] {\n const { useSingleColor = false } = props;\n let prevWidthPositive = 0;\n let prevWidthNegative = 0;\n let prevPoint = 0;\n const totalPositiveBars = singleBarData.filter(\n (point: HorizontalBarChartWithAxisDataPoint) => point.x >= X_ORIGIN,\n ).length;\n const totalNegativeBars = singleBarData.length - totalPositiveBars;\n let currPositiveCounter = 0;\n let currNegativeCounter = 0;\n const bars = singleBarData.map((point: HorizontalBarChartWithAxisDataPoint, index: number) => {\n let shouldHighlight = true;\n if (isLegendHovered || isLegendSelected) {\n shouldHighlight = _isLegendHighlighted(point.legend);\n }\n if (point.x >= X_ORIGIN) {\n ++currPositiveCounter;\n }\n if (point.x < X_ORIGIN) {\n ++currNegativeCounter;\n }\n const barStartX = _isRtl\n ? containerWidth -\n (_margins.right! + Math.max(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN)) - _margins.left!)\n : Math.min(xBarScale(point.x + X_ORIGIN), xBarScale(X_ORIGIN));\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n let startColor: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n startColor = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n startColor = props.colors ? _createColors()(point.x) : getNextColor(index, 0);\n }\n\n startColor = point.color && !useSingleColor ? point.color : startColor;\n const prevBarWidth = Math.abs(xBarScale(prevPoint + X_ORIGIN) - xBarScale(X_ORIGIN));\n prevPoint > 0 ? (prevWidthPositive += prevBarWidth) : (prevWidthNegative += prevBarWidth);\n const currentWidth = Math.abs(xBarScale(point.x + X_ORIGIN) - xBarScale(X_ORIGIN));\n const gapWidthLTR =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && currPositiveCounter !== totalPositiveBars) ||\n (point.x < X_ORIGIN && (totalPositiveBars !== 0 || currNegativeCounter > 1)))\n ? 2\n : 0;\n const gapWidthRTL =\n currentWidth > 2 &&\n ((point.x > X_ORIGIN && (totalNegativeBars !== 0 || currPositiveCounter > 1)) ||\n (point.x < X_ORIGIN && currNegativeCounter !== totalNegativeBars))\n ? 2\n : 0;\n prevPoint = point.x;\n let xStart = X_ORIGIN;\n if (_isRtl) {\n xStart = point.x > X_ORIGIN ? barStartX - prevWidthPositive : barStartX + prevWidthNegative;\n } else {\n xStart = point.x > X_ORIGIN ? barStartX + prevWidthPositive : barStartX - prevWidthNegative;\n }\n return (\n <React.Fragment key={`${index}_${point.x}`}>\n <rect\n transform={`translate(0,${0.5 * (yBarScale.bandwidth() - _barHeight)})`}\n key={point.x}\n x={xStart}\n y={yBarScale(point.y)}\n rx={props.roundCorners ? 3 : 0}\n width={currentWidth - (_isRtl ? gapWidthRTL : gapWidthLTR)}\n height={_barHeight}\n aria-labelledby={`toolTip${_calloutId}`}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement, MouseEvent>) => _onBarHover(point, startColor, event)}\n onMouseLeave={_onBarLeave}\n onBlur={_onBarLeave}\n data-is-focusable={shouldHighlight}\n opacity={shouldHighlight ? 1 : 0.1}\n onFocus={() => _onBarFocus(point, index, startColor)}\n fill={startColor}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n });\n\n // Removing un wanted tooltip div from DOM, when prop not provided, for proper cleanup\n // of unwanted DOM elements, to prevent flacky behaviour in tooltips , that might occur\n // in creating tooltips when tooltips are enabled( as we try to recreate a tspan with _tooltipId)\n if (!props.showYAxisLablesTooltip) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n //eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at y axis labels.\n if (props.showYAxisLablesTooltip) {\n const yAxisElement = d3Select(yElement).call(yBarScale);\n if (!tooltipElement) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n //eslint-disable-next-line no-empty\n } catch (e) {}\n }\n const ytooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n yAxis: yAxisElement,\n };\n yAxisElement && _tooltipOfYAxislabels(ytooltipProps);\n }\n return bars;\n }\n\n function _onLegendHover(customMessage: string): void {\n if (!_isLegendSelected()) {\n setIsLegendHovered(true);\n setSelectedLegendTitle(customMessage);\n }\n }\n\n function _onLegendLeave(isLegendFocused?: boolean): void {\n if (!!isLegendFocused || !_isLegendSelected()) {\n setIsLegendHovered(false);\n setSelectedLegendTitle('');\n setIsLegendSelected(isLegendFocused ? false : _isLegendSelected());\n }\n }\n\n function _getLegendData(data: HorizontalBarChartWithAxisDataPoint[]): JSX.Element {\n const { useSingleColor } = props;\n const actions: Legend[] = [];\n const mapLegendToColor: Record<string, string> = {};\n\n data.forEach((point: HorizontalBarChartWithAxisDataPoint, _index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const color: string = useSingleColor ? (props.colors ? _createColors()(1) : getNextColor(1, 0)) : point.color!;\n\n mapLegendToColor[point.legend!] = color;\n });\n Object.entries(mapLegendToColor).forEach(([legendTitle, color]) => {\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: legendTitle,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onMouseOutAction: (isLegendSelected?: boolean) => {\n _onLegendLeave(isLegendSelected);\n },\n };\n actions.push(legend);\n });\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n return legends;\n }\n\n function _isLegendSelected(): boolean {\n return isLegendSelected!;\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 _isLegendHighlighted(legend?: string) {\n return _getHighlightedLegend().includes(legend!);\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : selectedLegendTitle ? [selectedLegendTitle] : [];\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 setSelectedLegendTitle(currentLegend?.title!);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n setSelectedLegendTitle(currentLegend?.title!);\n }\n setIsLegendSelected(selectedLegends.length > 0);\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n function _getAxisData(yAxisData: IAxisData) {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n // For HBCWA x and y Values are swapped\n const { yAxisDomainValues: domainValue } = yAxisData;\n _xMax = Math.max(domainValue[domainValue.length - 1], props.xMaxValue || 0);\n }\n }\n function _getAriaLabel(point: HorizontalBarChartWithAxisDataPoint): string {\n const xValue = point.xAxisCalloutData || point.x;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ` + `${yValue}.`;\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Horizontal bar chart with ${data?.length || 0} bars. `;\n }\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n function _updatePosition(newX: number, newY: number): void {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n\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 _getDomainNRangeValues(\n points: HorizontalBarChartWithAxisDataPoint[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForHorizontalBarChartWithAxis(\n points,\n margins,\n width,\n isRTL,\n shiftX,\n X_ORIGIN,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const calloutProps: ChartPopoverProps = {\n color: color,\n legend: selectedLegendTitle,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n isCartesian: true,\n isPopoverOpen,\n clickPosition,\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n const reversedBars = [..._points].reverse();\n _yAxisLabels = reversedBars.map((point: HorizontalBarChartWithAxisDataPoint) => point.y as string);\n _xMax = Math.max(d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.x)!, props.xMaxValue || 0);\n const legendBars: JSX.Element = _getLegendData(_points);\n return (\n <CartesianChart\n yAxisPadding={_yAxisPadding}\n {...props}\n chartTitle={_getChartTitle()}\n points={_points}\n chartType={ChartTypes.HorizontalBarChartWithAxis}\n xAxisType={_xAxisType}\n yAxisType={_yAxisType}\n getDomainNRangeValues={_getDomainNRangeValues}\n stringDatasetForYAxisDomain={_yAxisLabels}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n barwidth={_barHeight}\n getmargins={_getMargins}\n getYDomainMargins={_getDomainMarginsForHorizontalBarChart}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n </>\n );\n }}\n />\n );\n } else {\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n }\n});\nHorizontalBarChartWithAxis.displayName = 'HorizontalBarChartWithAxis';\n"],"names":["HorizontalBarChartWithAxis","React","forwardRef","props","forwardedRef","_refArray","_calloutId","useId","_isRtl","useRtl","_tooltipId","_xAxisType","data","length","getTypeOfAxis","x","XAxisTypes","NumericAxis","_yAxisType","y","YAxisType","StringAxis","_emptyChartId","_points","_barHeight","_colors","_margins","_bars","_yAxisLabels","_xMax","_calloutAnchorPoint","tooltipElement","_longestBarPositiveTotalValue","_longestBarNegativeTotalValue","_domainMargin","MIN_DOMAIN_MARGIN","_yAxisPadding","yAxisPadding","cartesianChartRef","useRef","X_ORIGIN","color","setColor","useState","dataForHoverCard","setDataForHoverCard","isLegendSelected","setIsLegendSelected","legendProps","selectedLegends","selectedLegend","undefined","isLegendHovered","setIsLegendHovered","selectedLegendTitle","setSelectedLegendTitle","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","setSelectedLegends","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","isPopoverOpen","setPopoverOpen","clickPosition","setClickPosition","prevPropsRef","useEffect","current","prevProps","areArraysEqual","useImperativeHandle","componentRef","chartContainer","classes","useHorizontalBarChartWithAxisStyles","_adjustProps","barHeight","defaultPalette","getColorFromToken","DataVizPalette","color6","color1","color5","color7","colors","_getMargins","margins","_renderContentForOnlyBars","point","useSingleColor","selectedPointIndex","forEach","yDataPoint","index","_createColors","getNextColor","createElement","Fragment","ChartPopover","XValue","xAxisCalloutData","toString","legend","YValue","yAxisCalloutData","culture","_renderCallout","_getCustomizedCallout","onRenderCalloutPerDataPoint","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","yElement","stackedChartData","groupChartDataByYValue","longestBars","computeLongestBars","longestPositiveBar","longestNegativeBar","xBarScale","yBarScale","_getScales","xRange","range","allBars","map","singleBarData","_createNumericBars","_createStringBars","flat","increment","_p","color16","domainValues","i","push","colorScale","d3ScaleLinear","domain","_refCallback","element","legendTitle","refElement","_onBarHover","mouseEvent","persist","_isLegendHighlighted","_updatePosition","clientX","clientY","enableGradient","_onBarLeave","_handleChartMouseLeave","_onBarFocus","refArrayIndexNumber","obj","isNumericScale","xMax","xMin","xDomain","Math","min","max","yMax","d3Max","yMin","d3Min","yDomainMax","yMaxValue","yMinProp","yMinValue","yDomainMin","nice","left","right","bottom","top","d3ScaleBand","padding","sortedBars","sort","a","b","aValue","parseFloat","bValue","prevWidthPositive","prevWidthNegative","prevPoint","totalPositiveBars","filter","totalNegativeBars","currPositiveCounter","currNegativeCounter","bars","shouldHighlight","barStartX","key","startColor","prevBarWidth","abs","currentWidth","gapWidthLTR","gapWidthRTL","xStart","rect","data-is-focusable","width","height","ref","e","rx","roundCorners","onClick","onMouseOver","event","aria-label","_getAriaLabel","role","aria-labelledby","onMouseLeave","onFocus","onBlur","fill","opacity","tabIndex","_getUniqueYValues","mapY","uniqueY","Object","values","_calculateAppropriateBarHeight","totalWidth","innerPadding","result","getClosestPairDiffAndRange","closestPairDiff","barWidth","floor","_getDomainMarginsForHorizontalBarChart","barGapRate","numBars","totalHeight","reqHeight","_tooltipOfYAxislabels","ytooltipProps","tooltipCls","yAxis","id","div","d3Select","append","attr","style","aa","selectAll","_groups","baseSpanLength","keys","originalDataArray","originalData","dataset","tickObject","tickObjectLength","d1","on","d","text","pageX","pageY","transform","bandwidth","showYAxisLablesTooltip","document","getElementById","remove","yAxisElement","call","tooltip","_onLegendHover","customMessage","_isLegendSelected","_onLegendLeave","isLegendFocused","_getLegendData","actions","mapLegendToColor","_index","entries","title","hoverAction","onMouseOutAction","legends","Legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","_getHighlightedLegend","includes","currentLegend","canSelectMultipleLegends","slice","_getAxisData","yAxisData","yAxisDomainValues","domainValue","xMaxValue","xValue","yValue","ariaLabel","_getChartTitle","chartTitle","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","tickValues","shiftX","domainNRangeValue","domainRangeOfNumericForHorizontalBarChartWithAxis","dStartValue","dEndValue","rStartValue","rEndValue","calloutProps","getAccessibleDataObject","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCartesian","tickParams","tickFormat","reversedBars","reverse","legendBars","CartesianChart","ChartTypes","yAxisType","getDomainNRangeValues","stringDatasetForYAxisDomain","barwidth","getmargins","getYDomainMargins","getGraphData","getAxisData","onChartMouseLeave","children","g","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -42,11 +42,11 @@ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
42
42
  links: {
43
43
  Bkfmm31: "f5q6cfr",
44
44
  Be5yapy: "fu2q8de",
45
- Bcjfw9x: "fxb03r3"
45
+ a6j6cd: "f14egcv9"
46
46
  },
47
47
  nodes: {
48
48
  Bkfmm31: "f1yc5x8p",
49
- Bcjfw9x: "fxb03r3"
49
+ a6j6cd: "f14egcv9"
50
50
  },
51
51
  toolTip: {
52
52
  Bahqtrf: "fk6fouc",
@@ -82,7 +82,7 @@ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
82
82
  Bkecrkj: "f1aehjj5"
83
83
  },
84
84
  nodeTextContainer: {
85
- Dzfv0s: "f1ytiby9",
85
+ B3gqxw3: "fk6oafs",
86
86
  B6of3ja: "fvjh0tl",
87
87
  Frg6f3: [
88
88
  "ff9s3yw",
@@ -153,15 +153,15 @@ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
153
153
  ],
154
154
  m: [
155
155
  [
156
- "@media screen and (-ms-high-contrast: white-on-black),screen and (forced-colors: active) and (prefers-color-scheme: dark){.fxb03r3{fill:Canvas;}}",
156
+ "@media screen and (-ms-high-contrast: active),screen and (forced-colors: active){.f14egcv9{fill:Canvas;}}",
157
157
  {
158
- m: "screen and (-ms-high-contrast: white-on-black), screen and (forced-colors: active) and (prefers-color-scheme: dark)"
158
+ m: "screen and (-ms-high-contrast: active), screen and (forced-colors: active)"
159
159
  }
160
160
  ],
161
161
  [
162
- "@media screen and (-ms-high-contrast: white-on-black),screen and (forced-colors: active) and (prefers-color-scheme: dark){.f1ytiby9 text{fill:CanvasText;}}",
162
+ "@media screen and (-ms-high-contrast: active),screen and (forced-colors: active){.fk6oafs text{fill:CanvasText;}}",
163
163
  {
164
- m: "screen and (-ms-high-contrast: white-on-black), screen and (forced-colors: active) and (prefers-color-scheme: dark)"
164
+ m: "screen and (-ms-high-contrast: active), screen and (forced-colors: active)"
165
165
  }
166
166
  ]
167
167
  ]
@@ -1 +1 @@
1
- {"version":3,"sources":["useSankeyChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { HighContrastSelectorBlack } from '../../utilities/index';\nexport const sankeyChartClassNames = {\n root: 'fui-sc__root',\n nodes: 'fui-sc__nodes',\n links: 'fui-sc__links',\n nodeTextContainer: 'fui-sc__nodeTextContainer',\n toolTip: 'fui-sc__toolTip',\n chartWrapper: 'fui-sc__chartWrapper'\n};\nconst useStyles = makeStyles({\n root: {\n ...typographyStyles.body1,\n display: 'flex',\n width: 'var(--root-width, 100%)',\n height: 'var(--root-height, 100%)',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n links: {\n fill: tokens.colorNeutralBackground1,\n strokeWidth: '3px',\n [HighContrastSelectorBlack]: {\n fill: 'Canvas'\n }\n },\n nodes: {\n fill: '#F5F5F5',\n [HighContrastSelectorBlack]: {\n fill: 'Canvas'\n }\n },\n toolTip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n padding: '8px',\n position: 'absolute',\n textAlign: 'center',\n top: '0px',\n background: tokens.colorNeutralBackground1,\n borderRadius: '2px',\n pointerEvents: 'none'\n },\n nodeTextContainer: {\n '& text': {\n [HighContrastSelectorBlack]: {\n fill: 'CanvasText'\n }\n },\n marginTop: '4px',\n marginLeft: '8px',\n marginBottom: '4px',\n marginRight: '8px'\n },\n chartWrapper: {\n overflow: 'auto'\n }\n});\nexport const useSankeyChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n root: mergeClasses(sankeyChartClassNames.root, baseStyles.root /*, props.styles?.root*/ ),\n nodes: mergeClasses(sankeyChartClassNames.nodes, baseStyles.nodes /*, props.styles?.nodes*/ ),\n links: mergeClasses(sankeyChartClassNames.links, baseStyles.links /*, props.styles?.links*/ ),\n nodeTextContainer: mergeClasses(sankeyChartClassNames.nodeTextContainer, baseStyles.nodeTextContainer /*, props.styles?.nodeTextContainer*/ ),\n toolTip: mergeClasses(sankeyChartClassNames.toolTip, baseStyles.toolTip /*, props.styles?.toolTip*/ ),\n chartWrapper: mergeClasses(sankeyChartClassNames.chartWrapper, props.enableReflow ? baseStyles.chartWrapper : '' /*, props.styles?.chartWrapper*/ )\n };\n};\n"],"names":["sankeyChartClassNames","useSankeyChartStyles","root","nodes","links","nodeTextContainer","toolTip","chartWrapper","useStyles","__styles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","a9b677","Bqenvij","Beiy3e4","B68tc82","Bmxbyg5","Bpg54ce","Bkfmm31","Be5yapy","Bcjfw9x","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","Bhzewxz","Bgh53k4","B2eet1l","De3pzq","Bcmaq0h","gk0gix","B20660r","B8a6bjv","Bpptf2m","e5kdtc","Bkjc3bi","ayd6f0","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","Dzfv0s","B6of3ja","Frg6f3","jrapky","t21cq0","d","p","m","props","baseStyles","mergeClasses","enableReflow"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAGaA,qBAAqB;eAArBA;;IAyDAC,oBAAoB;eAApBA;;;uBA5D4B;AAGlC,MAAMD,wBAAwB;IACjCE,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,mBAAmB;IACnBC,SAAS;IACTC,cAAc;AAClB;AACA,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAAP,MAAA;QAAAQ,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;IAAA;IAAAhB,OAAA;QAAAiB,SAAA;QAAAC,SAAA;QAAAC,SAAA;IAAA;IAAApB,OAAA;QAAAkB,SAAA;QAAAE,SAAA;IAAA;IAAAjB,SAAA;QAAAI,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAG,SAAA;QAAAO,SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;IAAA;IAAA3C,mBAAA;QAAA4C,QAAA;QAAAC,SAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,QAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;IAAA;IAAA9C,cAAA;QAAAW,SAAA;QAAAC,SAAA;QAAAC,SAAA;IAAA;AAAA,GAAA;IAAAkC,GAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;KAAA;IAAAC,GAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA;YAAA;SAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA;YAAA;SAAA;KAAA;AAAA;AAiDX,MAAMvD,uBAAwBwD,CAAAA;IACjC,MAAMC,aAAalD;IACnB,OAAO;QACHN,MAAMyD,IAAAA,mBAAY,EAAC3D,sBAAsBE,IAAI,EAAEwD,WAAWxD,IAAI,CAAC,sBAAA;QAC/DC,OAAOwD,IAAAA,mBAAY,EAAC3D,sBAAsBG,KAAK,EAAEuD,WAAWvD,KAAK,CAAC,uBAAA;QAClEC,OAAOuD,IAAAA,mBAAY,EAAC3D,sBAAsBI,KAAK,EAAEsD,WAAWtD,KAAK,CAAC,uBAAA;QAClEC,mBAAmBsD,IAAAA,mBAAY,EAAC3D,sBAAsBK,iBAAiB,EAAEqD,WAAWrD,iBAAiB,CAAC,mCAAA;QACtGC,SAASqD,IAAAA,mBAAY,EAAC3D,sBAAsBM,OAAO,EAAEoD,WAAWpD,OAAO,CAAC,yBAAA;QACxEC,cAAcoD,IAAAA,mBAAY,EAAC3D,sBAAsBO,YAAY,EAAEkD,MAAMG,YAAY,GAAGF,WAAWnD,YAAY,GAAG,GAAG,8BAAA;IACrH;AACJ"}
1
+ {"version":3,"sources":["useSankeyChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { HighContrastSelector } from '../../utilities/index';\nexport const sankeyChartClassNames = {\n root: 'fui-sc__root',\n nodes: 'fui-sc__nodes',\n links: 'fui-sc__links',\n nodeTextContainer: 'fui-sc__nodeTextContainer',\n toolTip: 'fui-sc__toolTip',\n chartWrapper: 'fui-sc__chartWrapper'\n};\nconst useStyles = makeStyles({\n root: {\n ...typographyStyles.body1,\n display: 'flex',\n width: 'var(--root-width, 100%)',\n height: 'var(--root-height, 100%)',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n links: {\n fill: tokens.colorNeutralBackground1,\n strokeWidth: '3px',\n [HighContrastSelector]: {\n fill: 'Canvas'\n }\n },\n nodes: {\n fill: '#F5F5F5',\n [HighContrastSelector]: {\n fill: 'Canvas'\n }\n },\n toolTip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n padding: '8px',\n position: 'absolute',\n textAlign: 'center',\n top: '0px',\n background: tokens.colorNeutralBackground1,\n borderRadius: '2px',\n pointerEvents: 'none'\n },\n nodeTextContainer: {\n '& text': {\n [HighContrastSelector]: {\n fill: 'CanvasText'\n }\n },\n marginTop: '4px',\n marginLeft: '8px',\n marginBottom: '4px',\n marginRight: '8px'\n },\n chartWrapper: {\n overflow: 'auto'\n }\n});\nexport const useSankeyChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n root: mergeClasses(sankeyChartClassNames.root, baseStyles.root /*, props.styles?.root*/ ),\n nodes: mergeClasses(sankeyChartClassNames.nodes, baseStyles.nodes /*, props.styles?.nodes*/ ),\n links: mergeClasses(sankeyChartClassNames.links, baseStyles.links /*, props.styles?.links*/ ),\n nodeTextContainer: mergeClasses(sankeyChartClassNames.nodeTextContainer, baseStyles.nodeTextContainer /*, props.styles?.nodeTextContainer*/ ),\n toolTip: mergeClasses(sankeyChartClassNames.toolTip, baseStyles.toolTip /*, props.styles?.toolTip*/ ),\n chartWrapper: mergeClasses(sankeyChartClassNames.chartWrapper, props.enableReflow ? baseStyles.chartWrapper : '' /*, props.styles?.chartWrapper*/ )\n };\n};\n"],"names":["sankeyChartClassNames","useSankeyChartStyles","root","nodes","links","nodeTextContainer","toolTip","chartWrapper","useStyles","__styles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","a9b677","Bqenvij","Beiy3e4","B68tc82","Bmxbyg5","Bpg54ce","Bkfmm31","Be5yapy","a6j6cd","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","Bhzewxz","Bgh53k4","B2eet1l","De3pzq","Bcmaq0h","gk0gix","B20660r","B8a6bjv","Bpptf2m","e5kdtc","Bkjc3bi","ayd6f0","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","B3gqxw3","B6of3ja","Frg6f3","jrapky","t21cq0","d","p","m","props","baseStyles","mergeClasses","enableReflow"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAGaA,qBAAqB;eAArBA;;IAyDAC,oBAAoB;eAApBA;;;uBA5D4B;AAGlC,MAAMD,wBAAwB;IACjCE,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,mBAAmB;IACnBC,SAAS;IACTC,cAAc;AAClB;AACA,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAAP,MAAA;QAAAQ,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;IAAA;IAAAhB,OAAA;QAAAiB,SAAA;QAAAC,SAAA;QAAAC,QAAA;IAAA;IAAApB,OAAA;QAAAkB,SAAA;QAAAE,QAAA;IAAA;IAAAjB,SAAA;QAAAI,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAG,SAAA;QAAAO,SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;IAAA;IAAA3C,mBAAA;QAAA4C,SAAA;QAAAC,SAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,QAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;IAAA;IAAA9C,cAAA;QAAAW,SAAA;QAAAC,SAAA;QAAAC,SAAA;IAAA;AAAA,GAAA;IAAAkC,GAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA,CAAA;YAAA;SAAA;KAAA;IAAAC,GAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA;YAAA;SAAA;QAAA;YAAA;YAAA;gBAAAA,GAAA;YAAA;SAAA;KAAA;AAAA;AAiDX,MAAMvD,uBAAwBwD,CAAAA;IACjC,MAAMC,aAAalD;IACnB,OAAO;QACHN,MAAMyD,IAAAA,mBAAY,EAAC3D,sBAAsBE,IAAI,EAAEwD,WAAWxD,IAAI,CAAC,sBAAA;QAC/DC,OAAOwD,IAAAA,mBAAY,EAAC3D,sBAAsBG,KAAK,EAAEuD,WAAWvD,KAAK,CAAC,uBAAA;QAClEC,OAAOuD,IAAAA,mBAAY,EAAC3D,sBAAsBI,KAAK,EAAEsD,WAAWtD,KAAK,CAAC,uBAAA;QAClEC,mBAAmBsD,IAAAA,mBAAY,EAAC3D,sBAAsBK,iBAAiB,EAAEqD,WAAWrD,iBAAiB,CAAC,mCAAA;QACtGC,SAASqD,IAAAA,mBAAY,EAAC3D,sBAAsBM,OAAO,EAAEoD,WAAWpD,OAAO,CAAC,yBAAA;QACxEC,cAAcoD,IAAAA,mBAAY,EAAC3D,sBAAsBO,YAAY,EAAEkD,MAAMG,YAAY,GAAGF,WAAWnD,YAAY,GAAG,GAAG,8BAAA;IACrH;AACJ"}
@@ -24,6 +24,9 @@ _export(exports, {
24
24
  HighContrastSelectorWhite: function() {
25
25
  return HighContrastSelectorWhite;
26
26
  },
27
+ MIN_DOMAIN_MARGIN: function() {
28
+ return MIN_DOMAIN_MARGIN;
29
+ },
27
30
  Points: function() {
28
31
  return Points;
29
32
  },
@@ -203,6 +206,7 @@ const _d3time = require("d3-time");
203
206
  const _d3shape = require("d3-shape");
204
207
  const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
205
208
  const _chartutilities = require("@fluentui/chart-utilities");
209
+ const MIN_DOMAIN_MARGIN = 8;
206
210
  var ChartTypes;
207
211
  (function(ChartTypes) {
208
212
  ChartTypes[ChartTypes["AreaChart"] = 0] = "AreaChart";
@@ -647,10 +651,10 @@ function createYAxisForHorizontalBarChartWithAxis(yAxisParams, isRtl, axisData,
647
651
  startValue: 0,
648
652
  endValue: 0
649
653
  }, yAxisElement = null, yMaxValue = 0, yMinValue = 0, containerHeight, margins, tickPadding = 12, maxOfYVal = 0, yAxisTickFormat, yAxisTickCount = 4 } = yAxisParams;
650
- // maxOfYVal coming from only area chart and Grouped vertical bar chart(Calculation done at base file)
654
+ // maxOfYVal coming from horizontal bar chart with axis (Calculation done at base file)
651
655
  const tempVal = maxOfYVal || yMinMaxValues.endValue;
652
656
  const finalYmax = tempVal > yMaxValue ? tempVal : yMaxValue;
653
- const finalYmin = yMinMaxValues.startValue < yMinValue ? 0 : yMinValue;
657
+ const finalYmin = yMinMaxValues.startValue < yMinValue ? Math.min(0, yMinMaxValues.startValue) : yMinValue;
654
658
  const yAxisScale = (0, _d3scale.scaleLinear)().domain([
655
659
  finalYmin,
656
660
  finalYmax
@@ -704,11 +708,13 @@ const createStringYAxis = (yAxisParams, dataPoints, isRtl, chartType, barWidth,
704
708
  }
705
709
  };
706
710
  const createStringYAxisForHorizontalBarChartWithAxis = (yAxisParams, dataPoints, isRtl, barWidth, culture)=>{
707
- const { containerHeight, tickPadding = 12, margins, yAxisTickFormat, yAxisElement } = yAxisParams;
711
+ const { containerHeight, tickPadding = 12, margins, yAxisTickFormat, yAxisElement, yAxisPadding } = yAxisParams;
712
+ let yAxisPaddingValue = yAxisPadding !== null && yAxisPadding !== void 0 ? yAxisPadding : 0.5;
713
+ yAxisPaddingValue = yAxisPaddingValue === 1 ? 0.99 : yAxisPaddingValue;
708
714
  const yAxisScale = (0, _d3scale.scaleBand)().domain(dataPoints).range([
709
- containerHeight - margins.bottom - barWidth / 2,
710
- margins.top + barWidth / 2
711
- ]);
715
+ containerHeight - margins.bottom,
716
+ margins.top
717
+ ]).padding(yAxisPaddingValue);
712
718
  const axis = isRtl ? (0, _d3axis.axisRight)(yAxisScale) : (0, _d3axis.axisLeft)(yAxisScale);
713
719
  const yAxis = axis.tickPadding(tickPadding).ticks(dataPoints);
714
720
  if (yAxisTickFormat) {