@fluentui/react-charts 9.1.1 → 9.1.2

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 (73) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/dist/index.d.ts +66 -5
  3. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  4. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +4 -4
  5. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  6. package/lib/components/DeclarativeChart/DeclarativeChart.js +25 -13
  7. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  8. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +7 -1
  9. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  10. package/lib/components/DonutChart/useDonutChartStyles.styles.js +3 -3
  11. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  12. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +4 -4
  13. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  14. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
  15. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  16. package/lib/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  17. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  18. package/lib/components/ResponsiveContainer/ResponsiveContainer.js +51 -22
  19. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  20. package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  21. package/lib/components/ResponsiveContainer/index.js +2 -0
  22. package/lib/components/ResponsiveContainer/index.js.map +1 -1
  23. package/lib/components/ResponsiveContainer/withResponsiveContainer.js +19 -0
  24. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  25. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +3 -3
  26. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  27. package/lib/components/VerticalBarChart/VerticalBarChart.js +1 -1
  28. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  29. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
  30. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  31. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  32. package/lib/utilities/SVGTooltipText.js +3 -3
  33. package/lib/utilities/SVGTooltipText.js.map +1 -1
  34. package/lib/utilities/utilities.js +2 -2
  35. package/lib/utilities/utilities.js.map +1 -1
  36. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  37. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +5 -5
  38. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  39. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +25 -13
  40. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  41. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +7 -1
  42. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  43. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +4 -4
  44. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  45. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +6 -4
  46. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  47. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
  48. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  49. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  50. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  51. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +47 -21
  52. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  53. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  54. package/lib-commonjs/components/ResponsiveContainer/index.js +2 -0
  55. package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -1
  56. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js +27 -0
  57. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  58. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +4 -4
  59. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  60. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -1
  61. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  62. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
  63. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  64. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  65. package/lib-commonjs/utilities/SVGTooltipText.js +3 -3
  66. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  67. package/lib-commonjs/utilities/utilities.js +2 -2
  68. package/lib-commonjs/utilities/utilities.js.map +1 -1
  69. package/package.json +10 -10
  70. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -23
  71. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
  72. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -47
  73. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["GroupedVerticalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { max as d3Max } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from 'd3-scale';\n\nimport { useId } from '@fluentui/react-utilities';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfXAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n RefArrayData,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n DataVizPalette,\n getColorFromToken,\n ChartPopoverProps,\n Chart,\n} from '../../index';\n\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface GVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface GVSingleDataPoint {\n [key: string]: GVDataPoint;\n}\n\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((props = { maxBarWidth: 24 }, forwardedRef) => {\n const _tooltipId: string = useId('GVBCTooltipId_');\n const _emptyChartId: string = useId('_GVBC_empty');\n const _useRtl: boolean = useRtl();\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _dataset: GVDataPoint[] = [];\n let _keys: string[] = [];\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSX.Element[] = [];\n let _refArray: RefArrayData[] = [];\n let _yMax: number = 0;\n let _calloutAnchorPoint: GVBarChartSeriesPoint | null = null;\n let _barWidth: number = 0;\n let _groupWidth: number = 0;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [color, setColor] = React.useState<string>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [hoverXValue, setHoverXValue] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps | undefined>(\n undefined,\n );\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const classes = useGroupedVerticalBarChartStyles_unstable(props);\n\n React.useEffect(() => {\n if (!areArraysEqual(props.legendProps?.selectedLegends, selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }, [props.legendProps?.selectedLegends]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const _adjustProps = () => {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = keys.length * bar_width + (keys.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + keys.length + (keys.length - 1) * BAR_GAP_RATE),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (points: GroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n const dataset: GVDataPoint[] = [];\n\n points.forEach((point: GroupedVerticalBarChartData, index: number) => {\n const singleDatasetPoint: GVDataPoint = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const singleDataSeries: GVBarChartSeriesPoint[] = [];\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint, seriesIndex) => {\n singleDatasetPoint[seriesPoint.key] = seriesPoint.data;\n singleDatasetPointForBars[seriesPoint.key] = {\n ...seriesPoint,\n };\n singleDataSeries.push(seriesPoint);\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = singleDataSeries;\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n dataset.push(singleDatasetPoint);\n });\n _dataset = dataset;\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (points: GroupedVerticalBarChartData[]) => {\n const keys: string[] = [];\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points[0].series.forEach((singleKey: GVBarChartSeriesPoint) => {\n keys.push(singleKey.key);\n });\n const datasetForBars = _createDataset(points);\n return {\n keys,\n xAxisLabels,\n datasetForBars,\n };\n };\n\n const onLegendSelectionChange = (\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void => {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n };\n\n const _getLegendData = (points: GroupedVerticalBarChartData[]): JSX.Element => {\n const data = points;\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n getColorFromToken(DataVizPalette.color4),\n getColorFromToken(DataVizPalette.color5),\n ];\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: GroupedVerticalBarChartData) => {\n singleChartData.series.forEach((point: GVBarChartSeriesPoint) => {\n let color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n />\n );\n };\n\n const points = props.data;\n const { keys, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(points!);\n _keys = keys;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const _xAxisType: XAxisTypes = getTypeOfAxis(points![0].name, true) as XAxisTypes;\n const legends: JSX.Element = _getLegendData(points!);\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = d3Max(_dataset, (point: any) => d3Max(_keys, (key: string) => point[key]));\n _yMax = Math.max(yMax, props.yMaxValue || 0);\n\n const calloutProps: ChartPopoverProps = {\n clickPosition,\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover,\n hoverXValue,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: props.tickValues!,\n tickFormat: props.tickFormat!,\n };\n\n const _getGraphData = (\n xScale: StringAxis | NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) => {\n const xScale0 = _createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n xScale0.bandwidth() / (_keys.length + (_keys.length - 1) * BAR_GAP_RATE),\n );\n _groupWidth = (_keys.length + (_keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\n _datasetForBars.forEach((singleSet: GVSingleDataPoint) => {\n allGroupsBars.push(_buildGraph(singleSet, xScale0, xScale1, containerHeight, xElement!));\n });\n _groupedVerticalBarGraph = allGroupsBars;\n };\n\n const _getMargins = (margins: Margins) => {\n _margins = margins;\n };\n\n const _getOpacity = (legendTitle: string): string => {\n const opacity = _legendHighlighted(legendTitle) || _noLegendHighlighted() ? '' : '0.1';\n return opacity;\n };\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n const onBarHover = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint !== pointData) {\n _calloutAnchorPoint = pointData;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\n }\n };\n\n const _onBarLeave = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n };\n\n const onBarFocus = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n refArrayIndexNumber: number,\n ): void => {\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (obj.index === pointData.legend && refArrayIndexNumber === index) {\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\n }\n });\n };\n\n const _refCallback = (element: SVGRectElement, legendTitle: string, refIndexNumber: number): void => {\n _refArray[refIndexNumber] = { index: legendTitle, refElement: element };\n };\n\n const _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([0, containerHeight! - _margins.bottom! - _margins.top!]);\n\n const tempDataSet = Object.keys(datasetForBars[0]).splice(0, keys.length);\n tempDataSet.forEach((datasetKey: string, index: number) => {\n const refIndexNumber = singleSet.indexNum * tempDataSet.length + index;\n const pointData = singleSet[datasetKey];\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(datasetKey) + (xScale1.bandwidth() - _barWidth) / 2;\n const yPoint = Math.max(containerHeight! - _margins.bottom! - yBarScale(pointData.data), 0);\n const startColor = pointData.color ? pointData.color : getNextColor(index, 0);\n\n // Not rendering data with 0.\n pointData.data &&\n singleGroup.push(\n <React.Fragment key={`${singleSet.indexNum}-${index}`}>\n <rect\n className={classes.opacityChangeOnHover}\n height={Math.max(yBarScale(pointData.data), 0)}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!props.hideTooltip && (_legendHighlighted(pointData.legend) || _noLegendHighlighted())}\n opacity={_getOpacity(pointData.legend)}\n ref={(e: SVGRectElement | null) => {\n _refCallback(e!, pointData.legend, refIndexNumber);\n }}\n fill={startColor}\n rx={0}\n onMouseOver={onBarHover.bind(null, pointData, singleSet)}\n onMouseMove={onBarHover.bind(null, pointData, singleSet)}\n onMouseOut={_onBarLeave}\n onFocus={onBarFocus.bind(null, pointData, singleSet, refIndexNumber)}\n onBlur={_onBarLeave}\n onClick={pointData.onClick}\n aria-label={getAriaLabel(pointData, singleSet.xAxisPoint)}\n tabIndex={_legendHighlighted(pointData.legend) || _noLegendHighlighted() ? 0 : undefined}\n role=\"img\"\n />\n </React.Fragment>,\n );\n if (\n pointData.data &&\n !props.hideLabels &&\n _barWidth >= 16 &&\n (_legendHighlighted(pointData.legend) || _noLegendHighlighted())\n ) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${index}`}\n x={xPoint + _barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n >\n {formatScientificLimitWidth(pointData.data)}\n </text>,\n );\n }\n });\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - _groupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n const _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(xAxisLabels)\n .range(\n _useRtl\n ? [containerWidth! - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth! - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(keys)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(_useRtl ? [_groupWidth, 0] : [0, _groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n\n const _getAxisData = React.useCallback(\n (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || 0);\n }\n },\n [props.yMaxValue],\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 const _legendHighlighted = (legendTitle: string) => {\n return _getHighlightedLegend().includes(legendTitle!);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n const _noLegendHighlighted = () => {\n return _getHighlightedLegend().length === 0;\n };\n\n const _getHighlightedLegend = () => {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n };\n\n const getAriaLabel = (point: GVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n const _getDomainMargins = (containerWidth: number): Margins => {\n /** Total width available to render the bars */\n const totalWidth = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first group and after the last group.\n _domainMargin = 0;\n } else if (props.barWidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const groupWidth = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n _domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (props.mode === 'plotly' && xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering groups at their maximum allowable width\n const groupBandwidth = totalWidth / (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate);\n const barBandwidth = groupBandwidth / (keys.length + (keys.length - 1) * BAR_GAP_RATE);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * barWidth;\n let reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(xAxisLabels) + 20;\n reqWidth = (xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_xAxisLabels.length} groups of ${_keys.length} bars each. `\n );\n };\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={_xAxisType}\n datasetForXAxisDomain={_xAxisLabels}\n tickParams={tickParams}\n tickPadding={props.tickPadding || 5}\n maxOfYVal={_yMax}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n barwidth={_barWidth}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={() => {\n return <g>{_groupedVerticalBarGraph}</g>;\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nGroupedVerticalBarChart.displayName = 'GroupedVerticalBarChart';\n"],"names":["React","useGroupedVerticalBarChartStyles_unstable","max","d3Max","select","d3Select","scaleBand","d3ScaleBand","scaleLinear","d3ScaleLinear","useId","ChartTypes","getAccessibleDataObject","tooltipOfXAxislabels","XAxisTypes","getTypeOfAxis","formatScientificLimitWidth","getScalePadding","getBarWidth","isScalePaddingDefined","getNextColor","areArraysEqual","calculateLongestLabelWidth","useRtl","CartesianChart","Legends","DataVizPalette","getColorFromToken","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","BAR_GAP_RATE","GroupedVerticalBarChart","forwardRef","props","maxBarWidth","forwardedRef","_tooltipId","_emptyChartId","_useRtl","_domainMargin","_dataset","_keys","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_refArray","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","YValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","classes","useEffect","useImperativeHandle","componentRef","chartContainer","current","_adjustProps","barWidth","xAxisInnerPadding","keys","length","xAxisOuterPadding","_createDataset","points","datasetForBars","dataset","forEach","point","index","singleDatasetPoint","singleDatasetPointForBars","singleDataSeries","series","seriesPoint","seriesIndex","key","data","push","xAxisPoint","name","indexNum","groupSeries","stackCallOutAccessibilityData","_createDataSetOfGVBC","xAxisLabels","map","singlePoint","singleKey","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","defaultPalette","color1","color2","color3","color4","color5","actions","singleChartData","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","_xAxisType","yMax","yMaxValue","calloutProps","XValue","YValue","culture","isCartesian","tickParams","tickValues","tickFormat","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","margins","_getOpacity","legendTitle","opacity","_legendHighlighted","_noLegendHighlighted","updatePosition","newX","newY","threshold","distance","sqrt","pow","onBarHover","pointData","groupData","mouseEvent","persist","clientX","clientY","xAxisCalloutData","yAxisCalloutData","isCalloutForStack","_onBarLeave","onBarFocus","refArrayIndexNumber","obj","_refCallback","element","refIndexNumber","refElement","singleGroup","barLabelsForGroup","yBarScale","domain","range","tempDataSet","Object","splice","datasetKey","xPoint","yPoint","startColor","Fragment","rect","className","opacityChangeOnHover","height","width","data-is-focusable","hideTooltip","ref","e","fill","rx","onMouseOver","bind","onMouseMove","onMouseOut","onFocus","onBlur","onClick","aria-label","getAriaLabel","tabIndex","role","hideLabels","text","textAnchor","barLabel","aria-hidden","wrapXAxisLables","showXAxisLablesTooltip","xAxisElement","call","document","getElementById","remove","tooltipProps","tooltipCls","tooltip","id","xAxis","g","transform","x0Axis","paddingInner","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupGapRate","StringAxis","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","step","margin2","min","_isChartEmpty","item","_getChartTitle","chartTitle","chartType","legendBars","xAxisType","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["GroupedVerticalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { max as d3Max } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from 'd3-scale';\n\nimport { useId } from '@fluentui/react-utilities';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfXAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n RefArrayData,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n DataVizPalette,\n getColorFromToken,\n ChartPopoverProps,\n Chart,\n} from '../../index';\n\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface GVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface GVSingleDataPoint {\n [key: string]: GVDataPoint;\n}\n\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((props = { maxBarWidth: 24 }, forwardedRef) => {\n const _tooltipId: string = useId('GVBCTooltipId_');\n const _emptyChartId: string = useId('_GVBC_empty');\n const _useRtl: boolean = useRtl();\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _dataset: GVDataPoint[] = [];\n let _keys: string[] = [];\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSX.Element[] = [];\n let _refArray: RefArrayData[] = [];\n let _yMax: number = 0;\n let _calloutAnchorPoint: GVBarChartSeriesPoint | null = null;\n let _barWidth: number = 0;\n let _groupWidth: number = 0;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [color, setColor] = React.useState<string>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [hoverXValue, setHoverXValue] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps | undefined>(\n undefined,\n );\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const classes = useGroupedVerticalBarChartStyles_unstable(props);\n\n React.useEffect(() => {\n if (!areArraysEqual(props.legendProps?.selectedLegends, selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }, [props.legendProps?.selectedLegends]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const _adjustProps = () => {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = keys.length * bar_width + (keys.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + keys.length + (keys.length - 1) * BAR_GAP_RATE),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (points: GroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n const dataset: GVDataPoint[] = [];\n\n points.forEach((point: GroupedVerticalBarChartData, index: number) => {\n const singleDatasetPoint: GVDataPoint = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const singleDataSeries: GVBarChartSeriesPoint[] = [];\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint, seriesIndex) => {\n singleDatasetPoint[seriesPoint.key] = seriesPoint.data;\n singleDatasetPointForBars[seriesPoint.key] = {\n ...seriesPoint,\n };\n singleDataSeries.push(seriesPoint);\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = singleDataSeries;\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n dataset.push(singleDatasetPoint);\n });\n _dataset = dataset;\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (points: GroupedVerticalBarChartData[]) => {\n const keys: string[] = [];\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points[0].series.forEach((singleKey: GVBarChartSeriesPoint) => {\n keys.push(singleKey.key);\n });\n const datasetForBars = _createDataset(points);\n return {\n keys,\n xAxisLabels,\n datasetForBars,\n };\n };\n\n const onLegendSelectionChange = (\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void => {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n };\n\n const _getLegendData = (points: GroupedVerticalBarChartData[]): JSX.Element => {\n const data = points;\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n getColorFromToken(DataVizPalette.color4),\n getColorFromToken(DataVizPalette.color5),\n ];\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: GroupedVerticalBarChartData) => {\n singleChartData.series.forEach((point: GVBarChartSeriesPoint) => {\n let color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n />\n );\n };\n\n const points = props.data;\n const { keys, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(points!);\n _keys = keys;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const _xAxisType: XAxisTypes = getTypeOfAxis(points![0].name, true) as XAxisTypes;\n const legends: JSX.Element = _getLegendData(points!);\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = d3Max(_dataset, (point: any) => d3Max(_keys, (key: string) => point[key]));\n _yMax = Math.max(yMax, props.yMaxValue || 0);\n\n const calloutProps: ChartPopoverProps = {\n clickPosition,\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover,\n hoverXValue,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: props.tickValues!,\n tickFormat: props.tickFormat!,\n };\n\n const _getGraphData = (\n xScale: StringAxis | NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) => {\n const xScale0 = _createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n xScale0.bandwidth() / (_keys.length + (_keys.length - 1) * BAR_GAP_RATE),\n );\n _groupWidth = (_keys.length + (_keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\n _datasetForBars.forEach((singleSet: GVSingleDataPoint) => {\n allGroupsBars.push(_buildGraph(singleSet, xScale0, xScale1, containerHeight, xElement!));\n });\n _groupedVerticalBarGraph = allGroupsBars;\n };\n\n const _getMargins = (margins: Margins) => {\n _margins = margins;\n };\n\n const _getOpacity = (legendTitle: string): string => {\n const opacity = _legendHighlighted(legendTitle) || _noLegendHighlighted() ? '' : '0.1';\n return opacity;\n };\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n const onBarHover = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint !== pointData) {\n _calloutAnchorPoint = pointData;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\n }\n };\n\n const _onBarLeave = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n };\n\n const onBarFocus = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n refArrayIndexNumber: number,\n ): void => {\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (obj.index === pointData.legend && refArrayIndexNumber === index) {\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\n }\n });\n };\n\n const _refCallback = (element: SVGRectElement, legendTitle: string, refIndexNumber: number): void => {\n _refArray[refIndexNumber] = { index: legendTitle, refElement: element };\n };\n\n const _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([0, containerHeight! - _margins.bottom! - _margins.top!]);\n\n const tempDataSet = Object.keys(datasetForBars[0]).splice(0, keys.length);\n tempDataSet.forEach((datasetKey: string, index: number) => {\n const refIndexNumber = singleSet.indexNum * tempDataSet.length + index;\n const pointData = singleSet[datasetKey];\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(datasetKey) + (xScale1.bandwidth() - _barWidth) / 2;\n const yPoint = Math.max(containerHeight! - _margins.bottom! - yBarScale(pointData.data), 0);\n const startColor = pointData.color ? pointData.color : getNextColor(index, 0);\n\n // Not rendering data with 0.\n pointData.data &&\n singleGroup.push(\n <React.Fragment key={`${singleSet.indexNum}-${index}`}>\n <rect\n className={classes.opacityChangeOnHover}\n height={Math.max(yBarScale(pointData.data), 0)}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!props.hideTooltip && (_legendHighlighted(pointData.legend) || _noLegendHighlighted())}\n opacity={_getOpacity(pointData.legend)}\n ref={(e: SVGRectElement | null) => {\n _refCallback(e!, pointData.legend, refIndexNumber);\n }}\n fill={startColor}\n rx={0}\n onMouseOver={onBarHover.bind(null, pointData, singleSet)}\n onMouseMove={onBarHover.bind(null, pointData, singleSet)}\n onMouseOut={_onBarLeave}\n onFocus={onBarFocus.bind(null, pointData, singleSet, refIndexNumber)}\n onBlur={_onBarLeave}\n onClick={pointData.onClick}\n aria-label={getAriaLabel(pointData, singleSet.xAxisPoint)}\n tabIndex={_legendHighlighted(pointData.legend) || _noLegendHighlighted() ? 0 : undefined}\n role=\"img\"\n />\n </React.Fragment>,\n );\n if (\n pointData.data &&\n !props.hideLabels &&\n _barWidth >= 16 &&\n (_legendHighlighted(pointData.legend) || _noLegendHighlighted())\n ) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${index}`}\n x={xPoint + _barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(pointData.data)\n : formatScientificLimitWidth(pointData.data)}\n </text>,\n );\n }\n });\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - _groupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n const _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(xAxisLabels)\n .range(\n _useRtl\n ? [containerWidth! - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth! - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(keys)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(_useRtl ? [_groupWidth, 0] : [0, _groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n\n const _getAxisData = React.useCallback(\n (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || 0);\n }\n },\n [props.yMaxValue],\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 const _legendHighlighted = (legendTitle: string) => {\n return _getHighlightedLegend().includes(legendTitle!);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n const _noLegendHighlighted = () => {\n return _getHighlightedLegend().length === 0;\n };\n\n const _getHighlightedLegend = () => {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n };\n\n const getAriaLabel = (point: GVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n const _getDomainMargins = (containerWidth: number): Margins => {\n /** Total width available to render the bars */\n const totalWidth = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first group and after the last group.\n _domainMargin = 0;\n } else if (props.barWidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const groupWidth = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n _domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (props.mode === 'plotly' && xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering groups at their maximum allowable width\n const groupBandwidth = totalWidth / (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate);\n const barBandwidth = groupBandwidth / (keys.length + (keys.length - 1) * BAR_GAP_RATE);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * barWidth;\n let reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(xAxisLabels) + 20;\n reqWidth = (xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_xAxisLabels.length} groups of ${_keys.length} bars each. `\n );\n };\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={_xAxisType}\n datasetForXAxisDomain={_xAxisLabels}\n tickParams={tickParams}\n tickPadding={props.tickPadding || 5}\n maxOfYVal={_yMax}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n barwidth={_barWidth}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={() => {\n return <g>{_groupedVerticalBarGraph}</g>;\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nGroupedVerticalBarChart.displayName = 'GroupedVerticalBarChart';\n"],"names":["React","useGroupedVerticalBarChartStyles_unstable","max","d3Max","select","d3Select","scaleBand","d3ScaleBand","scaleLinear","d3ScaleLinear","useId","ChartTypes","getAccessibleDataObject","tooltipOfXAxislabels","XAxisTypes","getTypeOfAxis","formatScientificLimitWidth","getScalePadding","getBarWidth","isScalePaddingDefined","getNextColor","areArraysEqual","calculateLongestLabelWidth","useRtl","CartesianChart","Legends","DataVizPalette","getColorFromToken","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","BAR_GAP_RATE","GroupedVerticalBarChart","forwardRef","props","maxBarWidth","forwardedRef","_tooltipId","_emptyChartId","_useRtl","_domainMargin","_dataset","_keys","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_refArray","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","YValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","classes","useEffect","useImperativeHandle","componentRef","chartContainer","current","_adjustProps","barWidth","xAxisInnerPadding","keys","length","xAxisOuterPadding","_createDataset","points","datasetForBars","dataset","forEach","point","index","singleDatasetPoint","singleDatasetPointForBars","singleDataSeries","series","seriesPoint","seriesIndex","key","data","push","xAxisPoint","name","indexNum","groupSeries","stackCallOutAccessibilityData","_createDataSetOfGVBC","xAxisLabels","map","singlePoint","singleKey","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","defaultPalette","color1","color2","color3","color4","color5","actions","singleChartData","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","_xAxisType","yMax","yMaxValue","calloutProps","XValue","YValue","culture","isCartesian","tickParams","tickValues","tickFormat","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","margins","_getOpacity","legendTitle","opacity","_legendHighlighted","_noLegendHighlighted","updatePosition","newX","newY","threshold","distance","sqrt","pow","onBarHover","pointData","groupData","mouseEvent","persist","clientX","clientY","xAxisCalloutData","yAxisCalloutData","isCalloutForStack","_onBarLeave","onBarFocus","refArrayIndexNumber","obj","_refCallback","element","refIndexNumber","refElement","singleGroup","barLabelsForGroup","yBarScale","domain","range","tempDataSet","Object","splice","datasetKey","xPoint","yPoint","startColor","Fragment","rect","className","opacityChangeOnHover","height","width","data-is-focusable","hideTooltip","ref","e","fill","rx","onMouseOver","bind","onMouseMove","onMouseOut","onFocus","onBlur","onClick","aria-label","getAriaLabel","tabIndex","role","hideLabels","text","textAnchor","barLabel","aria-hidden","yAxisTickFormat","wrapXAxisLables","showXAxisLablesTooltip","xAxisElement","call","document","getElementById","remove","tooltipProps","tooltipCls","tooltip","id","xAxis","g","transform","x0Axis","paddingInner","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupGapRate","StringAxis","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","step","margin2","min","_isChartEmpty","item","_getChartTitle","chartTitle","chartType","legendBars","xAxisType","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -43,7 +43,8 @@ export const LabelLink = (props)=>{
43
43
  "data-is-focusable": false,
44
44
  style: {
45
45
  cursor: 'pointer'
46
- }
46
+ },
47
+ role: "button"
47
48
  }, /*#__PURE__*/ React.createElement(Textbox, {
48
49
  text: text,
49
50
  x: props.labelDef.x,
@@ -1 +1 @@
1
- {"version":3,"sources":["LabelLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport { EventAnnotation } from '../../../types/EventAnnotation';\nimport { Textbox } from './Textbox';\nimport { getColorFromToken } from '../../../utilities/colors';\nimport { tokens } from '@fluentui/react-theme';\n\nexport interface LineDef extends EventAnnotation {\n x: number;\n}\n\nexport interface LabelDef {\n x: number;\n aggregatedIdx: number[];\n anchor: 'start' | 'end';\n}\n\ninterface LabelLinkProps {\n lineDefs: LineDef[];\n labelDef: LabelDef;\n textY: number;\n textWidth: number;\n textLineHeight: number;\n textFontSize: string;\n textColor: string | undefined;\n mergedLabel: (count: number) => string;\n}\n\nexport const LabelLink: React.FunctionComponent<LabelLinkProps> = props => {\n const gRef = React.useRef<SVGGElement>(null);\n const [showCard, setShowCard] = React.useState(false);\n const onClick = () => setShowCard(true);\n\n let callout: React.ReactNode = null;\n if (showCard) {\n const cards = props.labelDef.aggregatedIdx.map(i => props.lineDefs[i].onRenderCard!).filter(c => !!c);\n if (cards.length > 0) {\n callout = null;\n // TODO - need to replace callout with popover\n /*callout = {\n /* <Callout\n target={gRef.current}\n // eslint-disable-next-line react/jsx-no-bind\n onDismiss={onDismiss}\n setInitialFocus={true}\n role=\"dialog\"\n >\n <FocusZone isCircularNavigation={true} direction={FocusZoneDirection.vertical}>\n <List<() => React.ReactNode>\n items={cards}\n // eslint-disable-next-line react/jsx-no-bind\n onRenderCell={onRenderCell}\n />\n </FocusZone>\n </Callout>\n };*/\n }\n }\n\n let text: string;\n const fill: string | undefined = props.textColor\n ? getColorFromToken(props.textColor, false)\n : tokens.colorNeutralForeground1;\n\n if (props.labelDef.aggregatedIdx.length === 1) {\n text = props.lineDefs[props.labelDef.aggregatedIdx[0]].event;\n } else {\n text = props.mergedLabel(props.labelDef.aggregatedIdx.length);\n }\n\n return (\n <>\n <g ref={gRef} onClick={onClick} data-is-focusable={false} style={{ cursor: 'pointer' }}>\n <Textbox\n text={text}\n x={props.labelDef.x}\n y={props.textY}\n width={props.textWidth}\n lineHeight={props.textLineHeight}\n textAnchor={props.labelDef.anchor}\n fontSize={props.textFontSize}\n fill={fill}\n />\n </g>\n {callout}\n </>\n );\n};\n"],"names":["React","Textbox","getColorFromToken","tokens","LabelLink","props","gRef","useRef","showCard","setShowCard","useState","onClick","callout","cards","labelDef","aggregatedIdx","map","i","lineDefs","onRenderCard","filter","c","length","text","fill","textColor","colorNeutralForeground1","event","mergedLabel","g","ref","data-is-focusable","style","cursor","x","y","textY","width","textWidth","lineHeight","textLineHeight","textAnchor","anchor","fontSize","textFontSize"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,MAAM,QAAQ,wBAAwB;AAuB/C,OAAO,MAAMC,YAAqDC,CAAAA;IAChE,MAAMC,OAAON,MAAMO,MAAM,CAAc;IACvC,MAAM,CAACC,UAAUC,YAAY,GAAGT,MAAMU,QAAQ,CAAC;IAC/C,MAAMC,UAAU,IAAMF,YAAY;IAElC,IAAIG,UAA2B;IAC/B,IAAIJ,UAAU;QACZ,MAAMK,QAAQR,MAAMS,QAAQ,CAACC,aAAa,CAACC,GAAG,CAACC,CAAAA,IAAKZ,MAAMa,QAAQ,CAACD,EAAE,CAACE,YAAY,EAAGC,MAAM,CAACC,CAAAA,IAAK,CAAC,CAACA;QACnG,IAAIR,MAAMS,MAAM,GAAG,GAAG;YACpBV,UAAU;QACV,8CAA8C;QAC9C;;;;;;;;;;;;;;;;QAgBE,GACJ;IACF;IAEA,IAAIW;IACJ,MAAMC,OAA2BnB,MAAMoB,SAAS,GAC5CvB,kBAAkBG,MAAMoB,SAAS,EAAE,SACnCtB,OAAOuB,uBAAuB;IAElC,IAAIrB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM,KAAK,GAAG;QAC7CC,OAAOlB,MAAMa,QAAQ,CAACb,MAAMS,QAAQ,CAACC,aAAa,CAAC,EAAE,CAAC,CAACY,KAAK;IAC9D,OAAO;QACLJ,OAAOlB,MAAMuB,WAAW,CAACvB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM;IAC9D;IAEA,qBACE,wDACE,oBAACO;QAAEC,KAAKxB;QAAMK,SAASA;QAASoB,qBAAmB;QAAOC,OAAO;YAAEC,QAAQ;QAAU;qBACnF,oBAAChC;QACCsB,MAAMA;QACNW,GAAG7B,MAAMS,QAAQ,CAACoB,CAAC;QACnBC,GAAG9B,MAAM+B,KAAK;QACdC,OAAOhC,MAAMiC,SAAS;QACtBC,YAAYlC,MAAMmC,cAAc;QAChCC,YAAYpC,MAAMS,QAAQ,CAAC4B,MAAM;QACjCC,UAAUtC,MAAMuC,YAAY;QAC5BpB,MAAMA;SAGTZ;AAGP,EAAE"}
1
+ {"version":3,"sources":["LabelLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport { EventAnnotation } from '../../../types/EventAnnotation';\nimport { Textbox } from './Textbox';\nimport { getColorFromToken } from '../../../utilities/colors';\nimport { tokens } from '@fluentui/react-theme';\n\nexport interface LineDef extends EventAnnotation {\n x: number;\n}\n\nexport interface LabelDef {\n x: number;\n aggregatedIdx: number[];\n anchor: 'start' | 'end';\n}\n\ninterface LabelLinkProps {\n lineDefs: LineDef[];\n labelDef: LabelDef;\n textY: number;\n textWidth: number;\n textLineHeight: number;\n textFontSize: string;\n textColor: string | undefined;\n mergedLabel: (count: number) => string;\n}\n\nexport const LabelLink: React.FunctionComponent<LabelLinkProps> = props => {\n const gRef = React.useRef<SVGGElement>(null);\n const [showCard, setShowCard] = React.useState(false);\n const onClick = () => setShowCard(true);\n\n let callout: React.ReactNode = null;\n if (showCard) {\n const cards = props.labelDef.aggregatedIdx.map(i => props.lineDefs[i].onRenderCard!).filter(c => !!c);\n if (cards.length > 0) {\n callout = null;\n // TODO - need to replace callout with popover\n /*callout = {\n /* <Callout\n target={gRef.current}\n // eslint-disable-next-line react/jsx-no-bind\n onDismiss={onDismiss}\n setInitialFocus={true}\n role=\"dialog\"\n >\n <FocusZone isCircularNavigation={true} direction={FocusZoneDirection.vertical}>\n <List<() => React.ReactNode>\n items={cards}\n // eslint-disable-next-line react/jsx-no-bind\n onRenderCell={onRenderCell}\n />\n </FocusZone>\n </Callout>\n };*/\n }\n }\n\n let text: string;\n const fill: string | undefined = props.textColor\n ? getColorFromToken(props.textColor, false)\n : tokens.colorNeutralForeground1;\n\n if (props.labelDef.aggregatedIdx.length === 1) {\n text = props.lineDefs[props.labelDef.aggregatedIdx[0]].event;\n } else {\n text = props.mergedLabel(props.labelDef.aggregatedIdx.length);\n }\n\n return (\n <>\n <g ref={gRef} onClick={onClick} data-is-focusable={false} style={{ cursor: 'pointer' }} role=\"button\">\n <Textbox\n text={text}\n x={props.labelDef.x}\n y={props.textY}\n width={props.textWidth}\n lineHeight={props.textLineHeight}\n textAnchor={props.labelDef.anchor}\n fontSize={props.textFontSize}\n fill={fill}\n />\n </g>\n {callout}\n </>\n );\n};\n"],"names":["React","Textbox","getColorFromToken","tokens","LabelLink","props","gRef","useRef","showCard","setShowCard","useState","onClick","callout","cards","labelDef","aggregatedIdx","map","i","lineDefs","onRenderCard","filter","c","length","text","fill","textColor","colorNeutralForeground1","event","mergedLabel","g","ref","data-is-focusable","style","cursor","role","x","y","textY","width","textWidth","lineHeight","textLineHeight","textAnchor","anchor","fontSize","textFontSize"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,MAAM,QAAQ,wBAAwB;AAuB/C,OAAO,MAAMC,YAAqDC,CAAAA;IAChE,MAAMC,OAAON,MAAMO,MAAM,CAAc;IACvC,MAAM,CAACC,UAAUC,YAAY,GAAGT,MAAMU,QAAQ,CAAC;IAC/C,MAAMC,UAAU,IAAMF,YAAY;IAElC,IAAIG,UAA2B;IAC/B,IAAIJ,UAAU;QACZ,MAAMK,QAAQR,MAAMS,QAAQ,CAACC,aAAa,CAACC,GAAG,CAACC,CAAAA,IAAKZ,MAAMa,QAAQ,CAACD,EAAE,CAACE,YAAY,EAAGC,MAAM,CAACC,CAAAA,IAAK,CAAC,CAACA;QACnG,IAAIR,MAAMS,MAAM,GAAG,GAAG;YACpBV,UAAU;QACV,8CAA8C;QAC9C;;;;;;;;;;;;;;;;QAgBE,GACJ;IACF;IAEA,IAAIW;IACJ,MAAMC,OAA2BnB,MAAMoB,SAAS,GAC5CvB,kBAAkBG,MAAMoB,SAAS,EAAE,SACnCtB,OAAOuB,uBAAuB;IAElC,IAAIrB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM,KAAK,GAAG;QAC7CC,OAAOlB,MAAMa,QAAQ,CAACb,MAAMS,QAAQ,CAACC,aAAa,CAAC,EAAE,CAAC,CAACY,KAAK;IAC9D,OAAO;QACLJ,OAAOlB,MAAMuB,WAAW,CAACvB,MAAMS,QAAQ,CAACC,aAAa,CAACO,MAAM;IAC9D;IAEA,qBACE,wDACE,oBAACO;QAAEC,KAAKxB;QAAMK,SAASA;QAASoB,qBAAmB;QAAOC,OAAO;YAAEC,QAAQ;QAAU;QAAGC,MAAK;qBAC3F,oBAACjC;QACCsB,MAAMA;QACNY,GAAG9B,MAAMS,QAAQ,CAACqB,CAAC;QACnBC,GAAG/B,MAAMgC,KAAK;QACdC,OAAOjC,MAAMkC,SAAS;QACtBC,YAAYnC,MAAMoC,cAAc;QAChCC,YAAYrC,MAAMS,QAAQ,CAAC6B,MAAM;QACjCC,UAAUvC,MAAMwC,YAAY;QAC5BrB,MAAMA;SAGTZ;AAGP,EAAE"}
@@ -1,17 +1,16 @@
1
1
  import * as React from 'react';
2
- import { useFluent_unstable } from '@fluentui/react-shared-contexts';
3
- import { useResponsiveContainerStyles } from './useResponsiveContainerStyles.styles';
4
- export const ResponsiveContainer = (props)=>{
2
+ import { getWindow } from '../../utilities/getWindow';
3
+ /**
4
+ * Responsive Container component
5
+ * {@docCategory ResponsiveContainer}
6
+ */ export const ResponsiveContainer = (props)=>{
5
7
  const containerRef = React.useRef(null);
6
8
  const onResizeRef = React.useRef();
7
- const { targetDocument } = useFluent_unstable();
8
- const classes = useResponsiveContainerStyles(props);
9
9
  const [size, setSize] = React.useState({});
10
10
  onResizeRef.current = props.onResize;
11
- const _window = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
12
11
  React.useEffect(()=>{
12
+ const _window = getWindow(containerRef.current);
13
13
  let animationFrameId;
14
- // eslint-disable-next-line no-restricted-globals
15
14
  let resizeObserver;
16
15
  const resizeCallback = (entries)=>{
17
16
  var _onResizeRef_current;
@@ -33,7 +32,7 @@ export const ResponsiveContainer = (props)=>{
33
32
  });
34
33
  (_onResizeRef_current = onResizeRef.current) === null || _onResizeRef_current === void 0 ? void 0 : _onResizeRef_current.call(onResizeRef, containerWidth, containerHeight);
35
34
  };
36
- if (_window === null || _window === void 0 ? void 0 : _window.ResizeObserver) {
35
+ if (_window && _window.ResizeObserver) {
37
36
  resizeObserver = new _window.ResizeObserver(resizeCallback);
38
37
  if (containerRef.current) {
39
38
  resizeObserver.observe(containerRef.current);
@@ -45,21 +44,51 @@ export const ResponsiveContainer = (props)=>{
45
44
  }
46
45
  resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
47
46
  };
47
+ }, []);
48
+ const chartContent = React.useMemo(()=>{
49
+ let calculatedWidth = size.containerWidth;
50
+ let calculatedHeight = size.containerHeight;
51
+ if (typeof props.aspect === 'number' && props.aspect > 0) {
52
+ if (calculatedWidth) {
53
+ calculatedHeight = calculatedWidth / props.aspect;
54
+ } else if (calculatedHeight) {
55
+ calculatedWidth = calculatedHeight * props.aspect;
56
+ }
57
+ if (typeof props.maxHeight === 'number' && calculatedHeight && calculatedHeight > props.maxHeight) {
58
+ calculatedHeight = props.maxHeight;
59
+ }
60
+ }
61
+ var _props_width, _props_height;
62
+ return /*#__PURE__*/ React.createElement("div", {
63
+ ref: containerRef,
64
+ style: {
65
+ width: (_props_width = props.width) !== null && _props_width !== void 0 ? _props_width : '100%',
66
+ height: (_props_height = props.height) !== null && _props_height !== void 0 ? _props_height : '100%',
67
+ minWidth: props.minWidth,
68
+ minHeight: props.minHeight,
69
+ maxHeight: props.maxHeight,
70
+ // Ensure the child element fills the parent container
71
+ // https://stackoverflow.com/questions/8468066/child-inside-parent-with-min-height-100-not-inheriting-height
72
+ '--root-width': calculatedWidth + 'px',
73
+ '--root-height': calculatedHeight + 'px'
74
+ }
75
+ }, React.Children.map(props.children, (child)=>{
76
+ return /*#__PURE__*/ React.cloneElement(child, {
77
+ width: calculatedWidth,
78
+ height: calculatedHeight,
79
+ shouldResize: (calculatedWidth !== null && calculatedWidth !== void 0 ? calculatedWidth : 0) + (calculatedHeight !== null && calculatedHeight !== void 0 ? calculatedHeight : 0)
80
+ });
81
+ }));
48
82
  }, [
49
- _window
83
+ size,
84
+ props.aspect,
85
+ props.maxHeight,
86
+ props.children,
87
+ props.width,
88
+ props.height,
89
+ props.minHeight,
90
+ props.minWidth
50
91
  ]);
51
- return /*#__PURE__*/ React.createElement("div", {
52
- ref: containerRef,
53
- className: classes.root,
54
- style: {
55
- width: props.width,
56
- height: props.height
57
- }
58
- }, React.Children.map(props.children, (child)=>{
59
- return /*#__PURE__*/ React.cloneElement(child, {
60
- width: size.containerWidth,
61
- height: size.containerHeight
62
- });
63
- }));
92
+ return chartContent;
64
93
  };
65
94
  ResponsiveContainer.displayName = 'ResponsiveContainer';
@@ -1 +1 @@
1
- {"version":3,"sources":["ResponsiveContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { ResponsiveContainerProps } from './ResponsiveContainer.types';\nimport { useResponsiveContainerStyles } from './useResponsiveContainerStyles.styles';\n\nexport const ResponsiveContainer: React.FC<ResponsiveContainerProps> = props => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const onResizeRef = React.useRef<ResponsiveContainerProps['onResize']>();\n const { targetDocument } = useFluent_unstable();\n const classes = useResponsiveContainerStyles(props);\n\n const [size, setSize] = React.useState<{ containerWidth?: number; containerHeight?: number }>({});\n\n onResizeRef.current = props.onResize;\n const _window = targetDocument?.defaultView;\n\n React.useEffect(() => {\n let animationFrameId: number | undefined;\n // eslint-disable-next-line no-restricted-globals\n let resizeObserver: ResizeObserver | undefined;\n\n const resizeCallback = (entries: ResizeObserverEntry[]) => {\n const { width: containerWidth, height: containerHeight } = entries[0].contentRect;\n // rAF is an alternative to the throttle function. For more info, see:\n // https://css-tricks.com/debouncing-throttling-explained-examples/#aa-requestanimationframe-raf\n animationFrameId = _window?.requestAnimationFrame(() => {\n setSize(prevSize => {\n const roundedWidth = Math.floor(containerWidth);\n const roundedHeight = Math.floor(containerHeight);\n if (prevSize.containerWidth === roundedWidth && prevSize.containerHeight === roundedHeight) {\n return prevSize;\n }\n\n return { containerWidth: roundedWidth, containerHeight: roundedHeight };\n });\n });\n onResizeRef.current?.(containerWidth, containerHeight);\n };\n\n if (_window?.ResizeObserver) {\n resizeObserver = new _window.ResizeObserver(resizeCallback);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n }\n\n return () => {\n if (animationFrameId) {\n _window?.cancelAnimationFrame(animationFrameId);\n }\n\n resizeObserver?.disconnect();\n };\n }, [_window]);\n\n return (\n <div ref={containerRef} className={classes.root} style={{ width: props.width, height: props.height }}>\n {React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n width: size.containerWidth,\n height: size.containerHeight,\n });\n })}\n </div>\n );\n};\nResponsiveContainer.displayName = 'ResponsiveContainer';\n"],"names":["React","useFluent_unstable","useResponsiveContainerStyles","ResponsiveContainer","props","containerRef","useRef","onResizeRef","targetDocument","classes","size","setSize","useState","current","onResize","_window","defaultView","useEffect","animationFrameId","resizeObserver","resizeCallback","entries","width","containerWidth","height","containerHeight","contentRect","requestAnimationFrame","prevSize","roundedWidth","Math","floor","roundedHeight","ResizeObserver","observe","cancelAnimationFrame","disconnect","div","ref","className","root","style","Children","map","children","child","cloneElement","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ,kCAAkC;AAErE,SAASC,4BAA4B,QAAQ,wCAAwC;AAErF,OAAO,MAAMC,sBAA0DC,CAAAA;IACrE,MAAMC,eAAeL,MAAMM,MAAM,CAAiB;IAClD,MAAMC,cAAcP,MAAMM,MAAM;IAChC,MAAM,EAAEE,cAAc,EAAE,GAAGP;IAC3B,MAAMQ,UAAUP,6BAA6BE;IAE7C,MAAM,CAACM,MAAMC,QAAQ,GAAGX,MAAMY,QAAQ,CAAwD,CAAC;IAE/FL,YAAYM,OAAO,GAAGT,MAAMU,QAAQ;IACpC,MAAMC,UAAUP,2BAAAA,qCAAAA,eAAgBQ,WAAW;IAE3ChB,MAAMiB,SAAS,CAAC;QACd,IAAIC;QACJ,iDAAiD;QACjD,IAAIC;QAEJ,MAAMC,iBAAiB,CAACC;gBAetBd;YAdA,MAAM,EAAEe,OAAOC,cAAc,EAAEC,QAAQC,eAAe,EAAE,GAAGJ,OAAO,CAAC,EAAE,CAACK,WAAW;YACjF,sEAAsE;YACtE,gGAAgG;YAChGR,mBAAmBH,oBAAAA,8BAAAA,QAASY,qBAAqB,CAAC;gBAChDhB,QAAQiB,CAAAA;oBACN,MAAMC,eAAeC,KAAKC,KAAK,CAACR;oBAChC,MAAMS,gBAAgBF,KAAKC,KAAK,CAACN;oBACjC,IAAIG,SAASL,cAAc,KAAKM,gBAAgBD,SAASH,eAAe,KAAKO,eAAe;wBAC1F,OAAOJ;oBACT;oBAEA,OAAO;wBAAEL,gBAAgBM;wBAAcJ,iBAAiBO;oBAAc;gBACxE;YACF;aACAzB,uBAAAA,YAAYM,OAAO,cAAnBN,2CAAAA,0BAAAA,aAAsBgB,gBAAgBE;QACxC;QAEA,IAAIV,oBAAAA,8BAAAA,QAASkB,cAAc,EAAE;YAC3Bd,iBAAiB,IAAIJ,QAAQkB,cAAc,CAACb;YAC5C,IAAIf,aAAaQ,OAAO,EAAE;gBACxBM,eAAee,OAAO,CAAC7B,aAAaQ,OAAO;YAC7C;QACF;QAEA,OAAO;YACL,IAAIK,kBAAkB;gBACpBH,oBAAAA,8BAAAA,QAASoB,oBAAoB,CAACjB;YAChC;YAEAC,2BAAAA,qCAAAA,eAAgBiB,UAAU;QAC5B;IACF,GAAG;QAACrB;KAAQ;IAEZ,qBACE,oBAACsB;QAAIC,KAAKjC;QAAckC,WAAW9B,QAAQ+B,IAAI;QAAEC,OAAO;YAAEnB,OAAOlB,MAAMkB,KAAK;YAAEE,QAAQpB,MAAMoB,MAAM;QAAC;OAChGxB,MAAM0C,QAAQ,CAACC,GAAG,CAACvC,MAAMwC,QAAQ,EAAEC,CAAAA;QAClC,qBAAO7C,MAAM8C,YAAY,CAACD,OAAO;YAC/BvB,OAAOZ,KAAKa,cAAc;YAC1BC,QAAQd,KAAKe,eAAe;QAC9B;IACF;AAGN,EAAE;AACFtB,oBAAoB4C,WAAW,GAAG"}
1
+ {"version":3,"sources":["ResponsiveContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getWindow } from '../../utilities/getWindow';\nimport { ResponsiveChildProps, ResponsiveContainerProps } from './ResponsiveContainer.types';\n\n/**\n * Responsive Container component\n * {@docCategory ResponsiveContainer}\n */\nexport const ResponsiveContainer: React.FC<ResponsiveContainerProps> = props => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const onResizeRef = React.useRef<ResponsiveContainerProps['onResize']>();\n\n const [size, setSize] = React.useState<{ containerWidth?: number; containerHeight?: number }>({});\n\n onResizeRef.current = props.onResize;\n\n React.useEffect(() => {\n const _window = getWindow(containerRef.current) as (Window & typeof globalThis) | undefined;\n let animationFrameId: number | undefined;\n let resizeObserver: ResizeObserver | undefined;\n\n const resizeCallback = (entries: ResizeObserverEntry[]) => {\n const { width: containerWidth, height: containerHeight } = entries[0].contentRect;\n // rAF is an alternative to the throttle function. For more info, see:\n // https://css-tricks.com/debouncing-throttling-explained-examples/#aa-requestanimationframe-raf\n animationFrameId = _window?.requestAnimationFrame(() => {\n setSize(prevSize => {\n const roundedWidth = Math.floor(containerWidth);\n const roundedHeight = Math.floor(containerHeight);\n if (prevSize.containerWidth === roundedWidth && prevSize.containerHeight === roundedHeight) {\n return prevSize;\n }\n\n return { containerWidth: roundedWidth, containerHeight: roundedHeight };\n });\n });\n onResizeRef.current?.(containerWidth, containerHeight);\n };\n\n if (_window && _window.ResizeObserver) {\n resizeObserver = new _window.ResizeObserver(resizeCallback);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n }\n\n return () => {\n if (animationFrameId) {\n _window?.cancelAnimationFrame(animationFrameId);\n }\n\n resizeObserver?.disconnect();\n };\n }, []);\n\n const chartContent = React.useMemo(() => {\n let calculatedWidth = size.containerWidth;\n let calculatedHeight = size.containerHeight;\n\n if (typeof props.aspect === 'number' && props.aspect > 0) {\n if (calculatedWidth) {\n calculatedHeight = calculatedWidth / props.aspect;\n } else if (calculatedHeight) {\n calculatedWidth = calculatedHeight * props.aspect;\n }\n\n if (typeof props.maxHeight === 'number' && calculatedHeight && calculatedHeight > props.maxHeight) {\n calculatedHeight = props.maxHeight;\n }\n }\n\n return (\n <div\n ref={containerRef}\n style={\n {\n width: props.width ?? '100%',\n height: props.height ?? '100%',\n minWidth: props.minWidth,\n minHeight: props.minHeight,\n maxHeight: props.maxHeight,\n // Ensure the child element fills the parent container\n // https://stackoverflow.com/questions/8468066/child-inside-parent-with-min-height-100-not-inheriting-height\n '--root-width': calculatedWidth + 'px',\n '--root-height': calculatedHeight + 'px',\n } as React.CSSProperties\n }\n >\n {React.Children.map(props.children, child => {\n return React.cloneElement<ResponsiveChildProps>(child, {\n width: calculatedWidth,\n height: calculatedHeight,\n shouldResize: (calculatedWidth ?? 0) + (calculatedHeight ?? 0),\n });\n })}\n </div>\n );\n }, [size, props.aspect, props.maxHeight, props.children, props.width, props.height, props.minHeight, props.minWidth]);\n\n return chartContent;\n};\nResponsiveContainer.displayName = 'ResponsiveContainer';\n"],"names":["React","getWindow","ResponsiveContainer","props","containerRef","useRef","onResizeRef","size","setSize","useState","current","onResize","useEffect","_window","animationFrameId","resizeObserver","resizeCallback","entries","width","containerWidth","height","containerHeight","contentRect","requestAnimationFrame","prevSize","roundedWidth","Math","floor","roundedHeight","ResizeObserver","observe","cancelAnimationFrame","disconnect","chartContent","useMemo","calculatedWidth","calculatedHeight","aspect","maxHeight","div","ref","style","minWidth","minHeight","Children","map","children","child","cloneElement","shouldResize","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["ResponsiveContainer.types.ts"],"sourcesContent":["import * as React from 'react';\n\nexport interface ResponsiveContainerProps {\n children: React.ReactElement;\n onResize?: (width: number, height: number) => void;\n width?: number | string;\n height?: number | string;\n}\n\nexport interface ResponsiveContainerStyles {\n root: string;\n}\n"],"names":["React"],"rangeMappings":"","mappings":"AAAA,YAAYA,WAAW,QAAQ"}
1
+ {"version":3,"sources":["ResponsiveContainer.types.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Responsive Child props\n * {@docCategory ResponsiveContainer}\n */\nexport interface ResponsiveChildProps {\n width?: number;\n height?: number;\n shouldResize?: number;\n}\n\n/**\n * Responsive Container props\n * {@docCategory ResponsiveContainer}\n */\nexport interface ResponsiveContainerProps {\n /**\n * Aspect ratio (width / height) of the container. If specified, the height will be calculated by width / aspect.\n */\n aspect?: number;\n\n /**\n * Width of the container\n */\n width?: number | string;\n\n /**\n * Height of the container\n */\n height?: number | string;\n\n /**\n * Minimum width of the container\n */\n minWidth?: number | string;\n\n /**\n * Minimum height of the container\n */\n minHeight?: number | string;\n\n /**\n * Maximum height of the container\n */\n maxHeight?: number;\n\n /**\n * Callback providing the updated chart width and height values when the container is resized\n */\n onResize?: (width: number, height: number) => void;\n\n /**\n * Child component to be rendered within the container\n */\n children: React.ReactElement<ResponsiveChildProps>;\n}\n"],"names":["React"],"rangeMappings":"","mappings":"AAAA,YAAYA,WAAW,QAAQ"}
@@ -1 +1,3 @@
1
1
  export * from './ResponsiveContainer';
2
+ export * from './ResponsiveContainer.types';
3
+ export * from './withResponsiveContainer';
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './ResponsiveContainer';\n"],"names":[],"rangeMappings":"","mappings":"AAAA,cAAc,wBAAwB"}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './ResponsiveContainer';\nexport * from './ResponsiveContainer.types';\nexport * from './withResponsiveContainer';\n"],"names":[],"rangeMappings":";;","mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,8BAA8B;AAC5C,cAAc,4BAA4B"}
@@ -0,0 +1,19 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */ import * as React from 'react';
2
+ import { ResponsiveContainer } from './ResponsiveContainer';
3
+ /**
4
+ * An HOC to update wrapped component on container resize.
5
+ * {@docCategory ResponsiveContainer}
6
+ */ export function withResponsiveContainer(WrappedComponent) {
7
+ const ComponentWithResponsiveContainer = ({ aspect, width, height, minWidth, minHeight, maxHeight, onResize, ...restProps })=>{
8
+ return /*#__PURE__*/ React.createElement(ResponsiveContainer, {
9
+ aspect: aspect,
10
+ width: width,
11
+ height: height,
12
+ minWidth: minWidth,
13
+ minHeight: minHeight,
14
+ maxHeight: maxHeight,
15
+ onResize: onResize
16
+ }, /*#__PURE__*/ React.createElement(WrappedComponent, restProps));
17
+ };
18
+ return ComponentWithResponsiveContainer;
19
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["withResponsiveContainer.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport { ResponsiveContainer } from './ResponsiveContainer';\nimport { ResponsiveContainerProps } from './ResponsiveContainer.types';\n\n/**\n * An HOC to update wrapped component on container resize.\n * {@docCategory ResponsiveContainer}\n */\nexport function withResponsiveContainer<TProps extends Omit<ResponsiveContainerProps, 'children'>>(\n WrappedComponent: React.ComponentType<TProps>,\n) {\n const ComponentWithResponsiveContainer: React.FC<TProps> = ({\n aspect,\n width,\n height,\n minWidth,\n minHeight,\n maxHeight,\n onResize,\n ...restProps\n }) => {\n return (\n <ResponsiveContainer\n aspect={aspect}\n width={width}\n height={height}\n minWidth={minWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n onResize={onResize}\n >\n <WrappedComponent {...(restProps as any)} />\n </ResponsiveContainer>\n );\n };\n\n return ComponentWithResponsiveContainer;\n}\n"],"names":["React","ResponsiveContainer","withResponsiveContainer","WrappedComponent","ComponentWithResponsiveContainer","aspect","width","height","minWidth","minHeight","maxHeight","onResize","restProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAAA,qDAAqD,GACrD,YAAYA,WAAW,QAAQ;AAC/B,SAASC,mBAAmB,QAAQ,wBAAwB;AAG5D;;;CAGC,GACD,OAAO,SAASC,wBACdC,gBAA6C;IAE7C,MAAMC,mCAAqD,CAAC,EAC1DC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACR,GAAGC,WACJ;QACC,qBACE,oBAACX;YACCI,QAAQA;YACRC,OAAOA;YACPC,QAAQA;YACRC,UAAUA;YACVC,WAAWA;YACXC,WAAWA;YACXC,UAAUA;yBAEV,oBAACR,kBAAsBS;IAG7B;IAEA,OAAOR;AACT"}
@@ -16,8 +16,8 @@ const useStyles = /*#__PURE__*/__styles({
16
16
  Bhrd7zp: "figsok6",
17
17
  Bg96gwp: "f1i3iumi",
18
18
  mc9l5x: "f22iagw",
19
- a9b677: "fly5x3f",
20
- Bqenvij: "f1l02sjl",
19
+ a9b677: "fsr8r2d",
20
+ Bqenvij: "f50j5g9",
21
21
  Beiy3e4: "f1vx9l62",
22
22
  B68tc82: 0,
23
23
  Bmxbyg5: 0,
@@ -78,7 +78,7 @@ const useStyles = /*#__PURE__*/__styles({
78
78
  Bpg54ce: "f1enuhaj"
79
79
  }
80
80
  }, {
81
- d: [".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f22iagw{display:flex;}", ".fly5x3f{width:100%;}", ".f1l02sjl{height:100%;}", ".f1vx9l62{flex-direction:column;}", [".f1a3p1vp{overflow:hidden;}", {
81
+ d: [".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f22iagw{display:flex;}", ".fsr8r2d{width:var(--root-width, 100%);}", ".f50j5g9{height:var(--root-height, 100%);}", ".f1vx9l62{flex-direction:column;}", [".f1a3p1vp{overflow:hidden;}", {
82
82
  p: -1
83
83
  }], ".f5q6cfr{fill:var(--colorNeutralBackground1);}", ".fu2q8de{stroke-width:3px;}", ".f1yc5x8p{fill:#F5F5F5;}", [".f1t756mo{padding:8px;}", {
84
84
  p: -1
@@ -1 +1 @@
1
- {"version":3,"names":["__styles","mergeClasses","tokens","typographyStyles","HighContrastSelectorBlack","sankeyChartClassNames","root","nodes","links","nodeTextContainer","toolTip","chartWrapper","useStyles","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","useSankeyChartStyles","props","baseStyles","enableReflow"],"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: '100%',\n 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"],"mappings":"AAAA,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChE,SAASC,yBAAyB,QAAQ,uBAAuB;AACjE,OAAO,MAAMC,qBAAqB,GAAG;EACjCC,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAE,eAAe;EACtBC,KAAK,EAAE,eAAe;EACtBC,iBAAiB,EAAE,2BAA2B;EAC9CC,OAAO,EAAE,iBAAiB;EAC1BC,YAAY,EAAE;AAClB,CAAC;AACD,MAAMC,SAAS,gBAAGZ,QAAA;EAAAM,IAAA;IAAAO,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAf,KAAA;IAAAgB,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAnB,KAAA;IAAAiB,OAAA;IAAAE,OAAA;EAAA;EAAAhB,OAAA;IAAAG,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAG,OAAA;IAAAO,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;EAAA;EAAA1C,iBAAA;IAAA2C,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;EAAA;EAAA7C,YAAA;IAAAU,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAkC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;EAAAC,CAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CAgDjB,CAAC;AACF,OAAO,MAAMC,oBAAoB,GAAIC,KAAK,IAAG;EACzC,MAAMC,UAAU,GAAGlD,SAAS,CAAC,CAAC;EAC9B,OAAO;IACHN,IAAI,EAAEL,YAAY,CAACI,qBAAqB,CAACC,IAAI,EAAEwD,UAAU,CAACxD,IAAI,CAAC,wBAAyB,CAAC;IACzFC,KAAK,EAAEN,YAAY,CAACI,qBAAqB,CAACE,KAAK,EAAEuD,UAAU,CAACvD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,KAAK,EAAEP,YAAY,CAACI,qBAAqB,CAACG,KAAK,EAAEsD,UAAU,CAACtD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,iBAAiB,EAAER,YAAY,CAACI,qBAAqB,CAACI,iBAAiB,EAAEqD,UAAU,CAACrD,iBAAiB,CAAC,qCAAsC,CAAC;IAC7IC,OAAO,EAAET,YAAY,CAACI,qBAAqB,CAACK,OAAO,EAAEoD,UAAU,CAACpD,OAAO,CAAC,2BAA4B,CAAC;IACrGC,YAAY,EAAEV,YAAY,CAACI,qBAAqB,CAACM,YAAY,EAAEkD,KAAK,CAACE,YAAY,GAAGD,UAAU,CAACnD,YAAY,GAAG,EAAE,CAAC,gCAAiC;EACtJ,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__styles","mergeClasses","tokens","typographyStyles","HighContrastSelectorBlack","sankeyChartClassNames","root","nodes","links","nodeTextContainer","toolTip","chartWrapper","useStyles","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","useSankeyChartStyles","props","baseStyles","enableReflow"],"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"],"mappings":"AAAA,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChE,SAASC,yBAAyB,QAAQ,uBAAuB;AACjE,OAAO,MAAMC,qBAAqB,GAAG;EACjCC,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAE,eAAe;EACtBC,KAAK,EAAE,eAAe;EACtBC,iBAAiB,EAAE,2BAA2B;EAC9CC,OAAO,EAAE,iBAAiB;EAC1BC,YAAY,EAAE;AAClB,CAAC;AACD,MAAMC,SAAS,gBAAGZ,QAAA;EAAAM,IAAA;IAAAO,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAf,KAAA;IAAAgB,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAnB,KAAA;IAAAiB,OAAA;IAAAE,OAAA;EAAA;EAAAhB,OAAA;IAAAG,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAG,OAAA;IAAAO,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;EAAA;EAAA1C,iBAAA;IAAA2C,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;EAAA;EAAA7C,YAAA;IAAAU,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAkC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;EAAAC,CAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CAgDjB,CAAC;AACF,OAAO,MAAMC,oBAAoB,GAAIC,KAAK,IAAG;EACzC,MAAMC,UAAU,GAAGlD,SAAS,CAAC,CAAC;EAC9B,OAAO;IACHN,IAAI,EAAEL,YAAY,CAACI,qBAAqB,CAACC,IAAI,EAAEwD,UAAU,CAACxD,IAAI,CAAC,wBAAyB,CAAC;IACzFC,KAAK,EAAEN,YAAY,CAACI,qBAAqB,CAACE,KAAK,EAAEuD,UAAU,CAACvD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,KAAK,EAAEP,YAAY,CAACI,qBAAqB,CAACG,KAAK,EAAEsD,UAAU,CAACtD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,iBAAiB,EAAER,YAAY,CAACI,qBAAqB,CAACI,iBAAiB,EAAEqD,UAAU,CAACrD,iBAAiB,CAAC,qCAAsC,CAAC;IAC7IC,OAAO,EAAET,YAAY,CAACI,qBAAqB,CAACK,OAAO,EAAEoD,UAAU,CAACpD,OAAO,CAAC,2BAA4B,CAAC;IACrGC,YAAY,EAAEV,YAAY,CAACI,qBAAqB,CAACM,YAAY,EAAEkD,KAAK,CAACE,YAAY,GAAGD,UAAU,CAACnD,YAAY,GAAG,EAAE,CAAC,gCAAiC;EACtJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -787,7 +787,7 @@ const MIN_DOMAIN_MARGIN = 8;
787
787
  textAnchor: "middle",
788
788
  className: classes.barLabel,
789
789
  "aria-hidden": true
790
- }, formatScientificLimitWidth(barValue));
790
+ }, typeof props.yAxisTickFormat === 'function' ? props.yAxisTickFormat(barValue) : formatScientificLimitWidth(barValue));
791
791
  }
792
792
  function _getDomainMargins(containerWidth) {
793
793
  _domainMargin = MIN_DOMAIN_MARGIN;