@fluentui/react-charts 9.0.2 → 9.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -7
- package/dist/index.d.ts +767 -0
- package/lib/AreaChart.js +1 -0
- package/lib/AreaChart.js.map +1 -0
- package/lib/HeatMapChart.js +1 -0
- package/lib/HeatMapChart.js.map +1 -0
- package/lib/HorizontalBarChartWithAxis.js +1 -0
- package/lib/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib/SankeyChart.js +1 -0
- package/lib/SankeyChart.js.map +1 -0
- package/lib/VerticalStackedBarChart.js +1 -0
- package/lib/VerticalStackedBarChart.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.js +775 -0
- package/lib/components/AreaChart/AreaChart.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.types.js +4 -0
- package/lib/components/AreaChart/AreaChart.types.js.map +1 -0
- package/lib/components/AreaChart/index.js +3 -0
- package/lib/components/AreaChart/index.js.map +1 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +64 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +30 -14
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +112 -65
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +570 -159
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.js +1 -1
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +1 -1
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +3 -0
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +9 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +588 -0
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -0
- package/lib/components/HeatMapChart/HeatMapChart.types.js +4 -0
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -0
- package/lib/components/HeatMapChart/index.js +3 -0
- package/lib/components/HeatMapChart/index.js.map +1 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +46 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +571 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js +4 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/index.js +3 -0
- package/lib/components/HorizontalBarChartWithAxis/index.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +76 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -0
- package/lib/components/Legends/Legends.js +38 -37
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +43 -35
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +1022 -0
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -0
- package/lib/components/SankeyChart/SankeyChart.types.js +3 -0
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -0
- package/lib/components/SankeyChart/index.js +3 -0
- package/lib/components/SankeyChart/index.js.map +1 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +109 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -0
- package/lib/components/ScatterChart/ScatterChart.js +46 -59
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +165 -88
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +904 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/index.js +3 -0
- package/lib/components/VerticalStackedBarChart/index.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +73 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -1
- package/lib/types/DataPoint.js +1 -3
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/SVGTooltipText.js +49 -4
- package/lib/utilities/SVGTooltipText.js.map +1 -1
- package/lib/utilities/colors.js +20 -0
- package/lib/utilities/colors.js.map +1 -1
- package/lib/utilities/string.js +32 -0
- package/lib/utilities/string.js.map +1 -0
- package/lib/utilities/test-data.js +53 -0
- package/lib/utilities/test-data.js.map +1 -1
- package/lib/utilities/utilities.js +90 -18
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/AreaChart.js +6 -0
- package/lib-commonjs/AreaChart.js.map +1 -0
- package/lib-commonjs/HeatMapChart.js +6 -0
- package/lib-commonjs/HeatMapChart.js.map +1 -0
- package/lib-commonjs/HorizontalBarChartWithAxis.js +6 -0
- package/lib-commonjs/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib-commonjs/SankeyChart.js +6 -0
- package/lib-commonjs/SankeyChart.js.map +1 -0
- package/lib-commonjs/VerticalStackedBarChart.js +6 -0
- package/lib-commonjs/VerticalStackedBarChart.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js +781 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.types.js +7 -0
- package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -0
- package/lib-commonjs/components/AreaChart/index.js +8 -0
- package/lib-commonjs/components/AreaChart/index.js.map +1 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +104 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +29 -14
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +120 -73
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +592 -178
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +3 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +9 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +599 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js +7 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/index.js +8 -0
- package/lib-commonjs/components/HeatMapChart/index.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +68 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +580 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js +7 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js +8 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +116 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -0
- package/lib-commonjs/components/Legends/Legends.js +37 -37
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +41 -33
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +1038 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js +6 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/index.js +8 -0
- package/lib-commonjs/components/SankeyChart/index.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +179 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +45 -58
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +164 -87
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +915 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js +6 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/index.js +8 -0
- package/lib-commonjs/components/VerticalStackedBarChart/index.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +120 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -0
- package/lib-commonjs/index.js +5 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js +1 -3
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/SVGTooltipText.js +49 -4
- package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/colors.js +23 -0
- package/lib-commonjs/utilities/colors.js.map +1 -1
- package/lib-commonjs/utilities/string.js +29 -0
- package/lib-commonjs/utilities/string.js.map +1 -0
- package/lib-commonjs/utilities/test-data.js +59 -0
- package/lib-commonjs/utilities/test-data.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +94 -17
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +11 -8
- package/lib/components/DeclarativeChart/PlotlySchema.js +0 -7
- package/lib/components/DeclarativeChart/PlotlySchema.js.map +0 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchema.js +0 -10
- package/lib-commonjs/components/DeclarativeChart/PlotlySchema.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles_unstable } from './useScatterChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { Legend, Legends } from '../Legends/index';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport { find } from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ColorFillBarsProps,\n ScatterChartDataPoint,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfXAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\ntype ScatterChartDataWithIndex = LineChartPoints & { index: number };\n\n// Create a ScatterChart variant which uses these default styles and this styled subcomponent.\n/**\n * ScatterChart component\n * {@docCategory ScatterChart}\n */\nexport const ScatterChart: React.FunctionComponent<ScatterChartProps> = React.forwardRef<\n HTMLDivElement,\n ScatterChartProps\n>((props, forwardedRef) => {\n const _circleId: string = useId('circle');\n const _seriesId: string = useId('seriesID');\n const _verticalLine: string = useId('verticalLine');\n const _tooltipId: string = useId('ScatterChartTooltipId_');\n const _firstRenderOptimization = true;\n const _emptyChartId: string = useId('_ScatterChart_empty');\n let _points: ScatterChartDataWithIndex[] = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _yAxisScale: any = '';\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let renderSeries: JSX.Element[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<[]>([]);\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(false);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n\n const _xAxisType: XAxisTypes =\n props.data.lineChartData! &&\n props.data.lineChartData!.length > 0 &&\n props.data.lineChartData![0].data &&\n props.data.lineChartData![0].data.length > 0\n ? (getTypeOfAxis(props.data.lineChartData![0].data[0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n\n const pointsRef = React.useRef<ScatterChartDataWithIndex[] | []>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const calloutPointsRef = React.useRef<any[]>([]);\n React.useEffect(() => {\n /** note that height and width are not used to resize or set as dimesions of the chart,\n * fitParentContainer is responisble for setting the height and width or resizing of the svg/chart\n */\n\n if (_points !== _injectIndexPropertyInScatterChartData(props.data.lineChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data, _points]);\n\n function _injectIndexPropertyInScatterChartData(\n scatterChartData?: LineChartPoints[],\n ): ScatterChartDataWithIndex[] | [] {\n return scatterChartData\n ? scatterChartData.map((item: LineChartPoints, index: number) => {\n let color: string;\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n return {\n ...item,\n index: -1,\n color,\n };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeScatterChartData(\n xScale: NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _xAxisScale = xScale;\n _yAxisScale = yScale;\n renderSeries = _createPlot(xElement!, containerHeight!);\n }\n\n function _handleSingleLegendSelectionAction(scatterChartItem: ScatterChartDataWithIndex | ColorFillBarsProps) {\n if (selectedLegend === scatterChartItem.legend) {\n setSelectedLegend('');\n _handleLegendClick(scatterChartItem, null);\n } else {\n setSelectedLegend(scatterChartItem.legend);\n _handleLegendClick(scatterChartItem, scatterChartItem.legend);\n }\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n function _handleLegendClick(\n scatterChartItem: ScatterChartDataWithIndex | ColorFillBarsProps,\n selectedLegend: string | null | string[],\n ): void {\n if (scatterChartItem.onLegendClick) {\n scatterChartItem.onLegendClick(selectedLegend);\n }\n }\n\n function _createLegends(data: ScatterChartDataWithIndex[]): JSX.Element {\n const { legendProps } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: ScatterChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n action: () => {\n if (isLegendMultiSelectEnabled) {\n _handleMultipleSeriesLegendSelectionAction(point);\n } else {\n _handleSingleLegendSelectionAction(point);\n }\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n };\n return legend;\n });\n\n return (\n <Legends\n legends={[...legendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n />\n );\n }\n\n function _getPointFill(seriesColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return seriesColor;\n }\n }\n\n function _createPlot(xElement: SVGElement, containerHeight: number): JSX.Element[] {\n const series: JSX.Element[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n }\n\n const yMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yPadding = (yMax - yMin) * 0.1;\n const yPaddingRange = Math.abs(_yAxisScale(yMin + yPadding) - _yAxisScale(yMin));\n\n let maxMarkerRange = 40;\n let xPaddingRange = 0;\n if (_xAxisType === XAxisTypes.StringAxis) {\n _xBandwidth = _xAxisScale.bandwidth() / 2;\n xPaddingRange = _xBandwidth;\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as Date)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n const xPadding = (xMax.getTime() - xMin.getTime()) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(new Date(xMin.getTime() + xPadding)) - _xAxisScale(xMin));\n } else {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const xPadding = (xMax - xMin) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(xMin + xPadding) - _xAxisScale(xMin));\n }\n maxMarkerRange = Math.min(maxMarkerRange, Math.min(xPaddingRange, yPaddingRange));\n\n const maxMarkerSize = d3Max(_points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n\n for (let i = _points.length - 1; i >= 0; i--) {\n const pointsForSeries: JSX.Element[] = [];\n\n const legendVal: string = _points[i].legend;\n const seriesColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n\n for (let j = 0; j < _points[i].data.length; j++) {\n const seriesId = `${_seriesId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const { x, y, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[j];\n let circleRadius = 3.5;\n const pointMarkerSize = (_points[i].data[j] as ScatterChartDataPoint).markerSize;\n if ((pointMarkerSize as number) !== undefined) {\n circleRadius = Math.min((pointMarkerSize! * maxMarkerRange) / maxMarkerSize, pointMarkerSize!);\n }\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n pointsForSeries.push(\n <circle\n id={circleId}\n key={circleId}\n r={circleRadius}\n cx={_xAxisScale(x) + _xBandwidth}\n cy={_yAxisScale(y)}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseOut={_handleMouseOut}\n onFocus={() => _handleFocus(seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.1}\n fill={_getPointFill(seriesColor, circleId, j, false)}\n stroke={seriesColor}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={_points[i].legend !== '' ? 0 : undefined}\n />,\n );\n }\n\n series.push(\n <g\n key={`series_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, series ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {pointsForSeries}\n </g>,\n );\n }\n const classes = useScatterChartStyles_unstable(props);\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(_xAxisScale);\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 series;\n }\n\n function _handleFocus(\n seriesId: string,\n x: number | Date | string,\n\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === seriesId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date | string,\n y: number | Date,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, ${_yAxisScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - _yAxisScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n } else {\n setActivePoint(circleId);\n }\n }\n\n /**\n * Screen readers announce an element as clickable if the onClick attribute is set.\n * This function sets the attribute only when a click event handler is provided.*/\n\n function _getClickHandler(func?: () => void): { onClick?: () => void } {\n if (func) {\n return {\n onClick: func,\n };\n }\n\n return {};\n }\n\n function _handleMouseOut() {\n d3Select(`#${_verticalLine}`).attr('visibility', 'hidden');\n }\n\n function _handleChartMouseLeave() {\n _uniqueCallOutID = null;\n setActivePoint('');\n if (isPopoverOpen) {\n setPopoverOpen(false);\n }\n }\n\n function _handleMultipleSeriesLegendSelectionAction(selectedSeries: ScatterChartDataWithIndex) {\n const selectedSeriesIndex = selectedLegendPoints.reduce((acc, series, index) => {\n if (acc > -1 || series.legend !== selectedSeries.legend) {\n return acc;\n } else {\n return index;\n }\n }, -1);\n\n let selectedSerieses: ScatterChartDataWithIndex[];\n if (selectedSeriesIndex === -1) {\n selectedSerieses = [...selectedLegendPoints, selectedSeries];\n } else {\n selectedSerieses = selectedLegendPoints\n .slice(0, selectedSeriesIndex)\n .concat(selectedLegendPoints.slice(selectedSeriesIndex + 1));\n }\n\n const areAllSeriesLegendsSelected = props.data && selectedSerieses.length === props.data.lineChartData!.length;\n\n if (areAllSeriesLegendsSelected || !selectedSerieses.length) {\n // Clear all legends if no legends including color fill bar legends are selected\n _clearMultipleLegendSelections();\n } else {\n // Otherwise, set state when one or more legends are selected, including color fill bar legends\n setSelectedLegendPoints(selectedSerieses);\n setIsSelectedLegend(true);\n }\n\n const selectedLegendTitlesToPass = selectedSerieses.map((series: ScatterChartDataWithIndex) => series.legend);\n _handleLegendClick(selectedSeries, selectedLegendTitlesToPass);\n }\n\n function _clearMultipleLegendSelections() {\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string) {\n return selectedLegend === legend || (selectedLegend === '' && activeLegend === legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted() {\n return selectedLegend === '' && activeLegend === '';\n }\n\n function _getAriaLabel(seriesIndex: number, pointIndex: number): string {\n const series = _points[seriesIndex];\n const point = series.data[pointIndex];\n const formattedDate = point.x instanceof Date ? formatDate(point.x, props.useUTC) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = series.legend;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n props.data.lineChartData.filter((item: LineChartPoints) => item.data.length).length > 0\n );\n }\n\n const { legendProps, tickValues, tickFormat } = props;\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover,\n hoverXValue,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCalloutForStack: true,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n const xAxisLabels: string[] = _points\n .map((point: ScatterChartDataWithIndex) => point.data.map((dp: ScatterChartDataPoint) => dp.x as string))\n .flat();\n\n _xAxisLabels = [...new Set(xAxisLabels)];\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.ScatterChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n getmargins={_getMargins}\n getGraphData={_initializeScatterChartData}\n xAxisType={_xAxisType}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={_firstRenderOptimization}\n datasetForXAxisDomain={_xAxisLabels}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n _xAxisScale = props.xScale!;\n _yAxisScale = props.yScale!;\n return (\n <>\n <g>\n <line\n x1={0}\n y1={0}\n x2={0}\n y2={props.containerHeight}\n stroke={'#323130'}\n id={_verticalLine}\n visibility={'hidden'}\n strokeDasharray={'5,5'}\n />\n <g>{renderSeries}</g>\n </g>\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nScatterChart.displayName = 'ScatterChart';\n"],"names":["ScatterChart","React","forwardRef","props","forwardedRef","_circleId","useId","_seriesId","_verticalLine","_tooltipId","_firstRenderOptimization","_emptyChartId","_points","_injectIndexPropertyInScatterChartData","data","lineChartData","_calloutPoints","calloutData","_xAxisScale","_yAxisScale","_uniqueCallOutID","_refArray","margins","renderSeries","_xAxisLabels","xAxisCalloutAccessibilityData","_xBandwidth","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegend","setSelectedLegend","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","_xAxisType","length","getTypeOfAxis","XAxisTypes","StringAxis","pointsRef","useRef","calloutPointsRef","useEffect","current","height","width","scatterChartData","map","item","index","color","getNextColor","getColorFromToken","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getMargins","_margins","_initializeScatterChartData","xScale","yScale","containerHeight","containerWidth","xElement","_createPlot","_handleSingleLegendSelectionAction","scatterChartItem","legend","_handleLegendClick","_onHoverCardHide","onLegendClick","_createLegends","legendProps","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","title","action","_handleMultipleSeriesLegendSelectionAction","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","tokens","colorNeutralBackground1","series","yMax","d3Max","points","yMin","d3Min","yPadding","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","DateAxis","xMin","xMax","xPadding","getTime","Date","min","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","undefined","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentPointHidden","hideNonActiveDots","push","circle","id","key","r","cx","cy","data-is-focusable","onMouseOver","event","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","opacity","fill","stroke","role","aria-label","_getAriaLabel","tabIndex","g","classes","useScatterChartStyles_unstable","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","xAxis","tooltipOfXAxislabels","formattedData","formatDate","useUTC","xVal","found","find","element","attr","forEach","obj","values","lineHeight","mouseEvent","persist","clientX","clientY","func","onClick","selectedSeries","selectedSeriesIndex","reduce","acc","selectedSerieses","slice","concat","areAllSeriesLegendsSelected","_clearMultipleLegendSelections","selectedLegendTitlesToPass","seriesIndex","formattedDate","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","filter","tickValues","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","CartesianChart","chartTitle","chartType","ChartTypes","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","Fragment","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles_unstable } from './useScatterChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { Legend, Legends } from '../Legends/index';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport { areArraysEqual, find } from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ScatterChartDataPoint,\n Chart,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfXAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\ntype ScatterChartDataWithIndex = LineChartPoints & { index: number };\n\n// Create a ScatterChart variant which uses these default styles and this styled subcomponent.\n/**\n * ScatterChart component\n * {@docCategory ScatterChart}\n */\nexport const ScatterChart: React.FunctionComponent<ScatterChartProps> = React.forwardRef<\n HTMLDivElement,\n ScatterChartProps\n>((props, forwardedRef) => {\n const _circleId: string = useId('circle');\n const _seriesId: string = useId('seriesID');\n const _verticalLine: string = useId('verticalLine');\n const _tooltipId: string = useId('ScatterChartTooltipId_');\n const _firstRenderOptimization = true;\n const _emptyChartId: string = useId('_ScatterChart_empty');\n let _points: ScatterChartDataWithIndex[] = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _yAxisScale: any = '';\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let renderSeries: JSX.Element[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<[]>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(false);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>([]);\n const prevPropsRef = React.useRef<ScatterChartProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const _xAxisType: XAxisTypes =\n props.data.lineChartData! &&\n props.data.lineChartData!.length > 0 &&\n props.data.lineChartData![0].data &&\n props.data.lineChartData![0].data.length > 0\n ? (getTypeOfAxis(props.data.lineChartData![0].data[0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n\n const pointsRef = React.useRef<ScatterChartDataWithIndex[] | []>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const calloutPointsRef = React.useRef<any[]>([]);\n React.useEffect(() => {\n /** note that height and width are not used to resize or set as dimesions of the chart,\n * fitParentContainer is responisble for setting the height and width or resizing of the svg/chart\n */\n\n if (_points !== _injectIndexPropertyInScatterChartData(props.data.lineChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data, _points]);\n\n function _injectIndexPropertyInScatterChartData(\n scatterChartData?: LineChartPoints[],\n ): ScatterChartDataWithIndex[] | [] {\n return scatterChartData\n ? scatterChartData.map((item: LineChartPoints, index: number) => {\n let color: string;\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n return {\n ...item,\n index: -1,\n color,\n };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeScatterChartData(\n xScale: NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _xAxisScale = xScale;\n _yAxisScale = yScale;\n renderSeries = _createPlot(xElement!, containerHeight!);\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n function _createLegends(data: ScatterChartDataWithIndex[]): JSX.Element {\n const { legendProps } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: ScatterChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n };\n return legend;\n });\n\n return (\n <Legends\n legends={[...legendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n selectedLegends={selectedLegends}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n function _getPointFill(seriesColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return seriesColor;\n }\n }\n\n function _createPlot(xElement: SVGElement, containerHeight: number): JSX.Element[] {\n const series: JSX.Element[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n }\n\n const yMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yPadding = (yMax - yMin) * 0.1;\n const yPaddingRange = Math.abs(_yAxisScale(yMin + yPadding) - _yAxisScale(yMin));\n\n let maxMarkerRange = 40;\n let xPaddingRange = 0;\n if (_xAxisType === XAxisTypes.StringAxis) {\n _xBandwidth = _xAxisScale.bandwidth() / 2;\n xPaddingRange = _xBandwidth;\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as Date)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n const xPadding = (xMax.getTime() - xMin.getTime()) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(new Date(xMin.getTime() + xPadding)) - _xAxisScale(xMin));\n } else {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const xPadding = (xMax - xMin) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(xMin + xPadding) - _xAxisScale(xMin));\n }\n maxMarkerRange = Math.min(maxMarkerRange, Math.min(xPaddingRange, yPaddingRange));\n\n const maxMarkerSize = d3Max(_points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n\n for (let i = _points.length - 1; i >= 0; i--) {\n const pointsForSeries: JSX.Element[] = [];\n\n const legendVal: string = _points[i].legend;\n const seriesColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n\n for (let j = 0; j < _points[i].data.length; j++) {\n const seriesId = `${_seriesId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const { x, y, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[j];\n let circleRadius = 3.5;\n const pointMarkerSize = (_points[i].data[j] as ScatterChartDataPoint).markerSize;\n if ((pointMarkerSize as number) !== undefined) {\n circleRadius = Math.min((pointMarkerSize! * maxMarkerRange) / maxMarkerSize, pointMarkerSize!);\n }\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n pointsForSeries.push(\n <circle\n id={circleId}\n key={circleId}\n r={circleRadius}\n cx={_xAxisScale(x) + _xBandwidth}\n cy={_yAxisScale(y)}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseOut={_handleMouseOut}\n onFocus={() => _handleFocus(seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.1}\n fill={_getPointFill(seriesColor, circleId, j, false)}\n stroke={seriesColor}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={_points[i].legend !== '' ? 0 : undefined}\n />,\n );\n }\n\n series.push(\n <g\n key={`series_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, series ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {pointsForSeries}\n </g>,\n );\n }\n const classes = useScatterChartStyles_unstable(props);\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(_xAxisScale);\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 series;\n }\n\n function _handleFocus(\n seriesId: string,\n x: number | Date | string,\n\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === seriesId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date | string,\n y: number | Date,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, ${_yAxisScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - _yAxisScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n } else {\n setActivePoint(circleId);\n }\n }\n\n /**\n * Screen readers announce an element as clickable if the onClick attribute is set.\n * This function sets the attribute only when a click event handler is provided.*/\n\n function _getClickHandler(func?: () => void): { onClick?: () => void } {\n if (func) {\n return {\n onClick: func,\n };\n }\n\n return {};\n }\n\n function _handleMouseOut() {\n d3Select(`#${_verticalLine}`).attr('visibility', 'hidden');\n }\n\n function _handleChartMouseLeave() {\n _uniqueCallOutID = null;\n setActivePoint('');\n if (isPopoverOpen) {\n setPopoverOpen(false);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string): boolean {\n return _getHighlightedLegend().includes(legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted(): boolean {\n return selectedLegends.length === 0;\n }\n\n function _getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _getAriaLabel(seriesIndex: number, pointIndex: number): string {\n const series = _points[seriesIndex];\n const point = series.data[pointIndex];\n const formattedDate = point.x instanceof Date ? formatDate(point.x, props.useUTC) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = series.legend;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n props.data.lineChartData.filter((item: LineChartPoints) => item.data.length).length > 0\n );\n }\n\n const { legendProps, tickValues, tickFormat } = props;\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover,\n hoverXValue,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCalloutForStack: true,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n const xAxisLabels: string[] = _points\n .map((point: ScatterChartDataWithIndex) => point.data.map((dp: ScatterChartDataPoint) => dp.x as string))\n .flat();\n\n _xAxisLabels = [...new Set(xAxisLabels)];\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.ScatterChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n getmargins={_getMargins}\n getGraphData={_initializeScatterChartData}\n xAxisType={_xAxisType}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={_firstRenderOptimization}\n datasetForXAxisDomain={_xAxisLabels}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n _xAxisScale = props.xScale!;\n _yAxisScale = props.yScale!;\n return (\n <>\n <g>\n <line\n x1={0}\n y1={0}\n x2={0}\n y2={props.containerHeight}\n stroke={'#323130'}\n id={_verticalLine}\n visibility={'hidden'}\n strokeDasharray={'5,5'}\n />\n <g>{renderSeries}</g>\n </g>\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nScatterChart.displayName = 'ScatterChart';\n"],"names":["ScatterChart","React","forwardRef","props","forwardedRef","_circleId","useId","_seriesId","_verticalLine","_tooltipId","_firstRenderOptimization","_emptyChartId","_points","_injectIndexPropertyInScatterChartData","data","lineChartData","_calloutPoints","calloutData","_xAxisScale","_yAxisScale","_uniqueCallOutID","_refArray","margins","renderSeries","_xAxisLabels","xAxisCalloutAccessibilityData","_xBandwidth","cartesianChartRef","useRef","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","prevPropsRef","useEffect","current","prevProps","areArraysEqual","legendProps","useImperativeHandle","componentRef","chartContainer","_xAxisType","length","getTypeOfAxis","XAxisTypes","StringAxis","pointsRef","calloutPointsRef","height","width","scatterChartData","map","item","index","color","getNextColor","getColorFromToken","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getMargins","_margins","_initializeScatterChartData","xScale","yScale","containerHeight","containerWidth","xElement","_createPlot","_onHoverCardHide","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","legend","title","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","onChange","_onLegendSelectionChange","legendsSelected","event","currentLegend","slice","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","tokens","colorNeutralBackground1","series","yMax","d3Max","points","yMin","d3Min","yPadding","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","DateAxis","xMin","xMax","xPadding","getTime","Date","min","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","undefined","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentPointHidden","hideNonActiveDots","push","circle","id","key","r","cx","cy","data-is-focusable","onMouseOver","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","opacity","fill","stroke","role","aria-label","_getAriaLabel","tabIndex","g","classes","useScatterChartStyles_unstable","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","xAxis","tooltipOfXAxislabels","formattedData","formatDate","useUTC","xVal","found","find","element","attr","forEach","obj","values","lineHeight","mouseEvent","persist","clientX","clientY","func","onClick","_getHighlightedLegend","includes","seriesIndex","formattedDate","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","filter","tickValues","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","CartesianChart","chartTitle","chartType","ChartTypes","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","Fragment","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|