@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":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport { bin as d3Bin, extent as d3Extent, sum as d3Sum, min as d3Min, max as d3Max, merge as d3Merge } from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format, precisionFixed as d3PrecisionFixed } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport { ChartDataPoint, ChartProps, LineChartPoints, VerticalBarChartDataPoint } from '../../types/DataPoint';\nimport { LineChartProps } from '../LineChart/index';\nimport { getNextColor } from '../../utilities/colors';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport { Layout, PlotlySchema, PieData, PlotData } from './PlotlySchema';\nimport type { Datum, TypedArray } from './PlotlySchema';\nimport { timeParse } from 'd3-time-format';\n\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst SUPPORTED_PLOT_TYPES = ['pie', 'bar', 'scatter', 'heatmap', 'sankey', 'indicator', 'histogram'];\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\nconst isDate = (value: any): boolean => {\n const parsedDate = new Date(Date.parse(value));\n if (isNaN(parsedDate.getTime())) {\n return false;\n }\n const parsedYear = parsedDate.getFullYear();\n const yearInString = /\\b\\d{4}\\b/.test(value);\n if (!yearInString && (parsedYear === 2000 || parsedYear === 2001)) {\n return false;\n }\n return true;\n};\n\nconst isNumber = (value: any): boolean => !isNaN(parseFloat(value)) && isFinite(value);\n\nconst isMonth = (possiblyMonthValue: any): boolean => {\n const parseFullMonth = timeParse('%B');\n const parseShortMonth = timeParse('%b');\n return parseFullMonth(possiblyMonthValue) !== null || parseShortMonth(possiblyMonthValue) !== null;\n};\n\nconst isArrayOfType = (\n plotCoordinates: Datum[] | Datum[][] | TypedArray | undefined,\n typeCheck: (datum: any, ...args: any[]) => boolean,\n ...args: any[]\n): boolean => {\n if (!isArrayOrTypedArray(plotCoordinates)) {\n return false;\n }\n\n if (plotCoordinates!.length === 0) {\n return false;\n }\n\n if (Array.isArray(plotCoordinates![0])) {\n // Handle 2D array\n return (plotCoordinates as Datum[][]).every(innerArray => innerArray.every(datum => typeCheck(datum, ...args)));\n } else {\n // Handle 1D array\n return (plotCoordinates as Datum[]).every(datum => typeCheck(datum, ...args));\n }\n};\n\nexport const isDateArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isDate);\n};\n\nexport const isNumberArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isNumber);\n};\n\nexport const isMonthArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isMonth);\n};\n\nexport const isLineData = (data: Partial<PlotData>): boolean => {\n return (\n !SUPPORTED_PLOT_TYPES.includes(`${data.type}`) &&\n Array.isArray(data.x) &&\n isArrayOfType(data.y, (value: any) => typeof value === 'number') &&\n data.x.length > 0 &&\n data.x.length === data.y!.length\n );\n};\n\nconst invalidate2Dseries = (series: PlotData, chartType: string): void => {\n if (series.x?.length > 0 && Array.isArray(series.x[0])) {\n throw new Error(`transform to ${chartType}:: 2D x array not supported`);\n }\n if (series.y?.length > 0 && Array.isArray(series.y[0])) {\n throw new Error(`transform to ${chartType}:: 2D y array not supported`);\n }\n};\n\nconst getLegend = (series: PlotData, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const updateXValues = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst getSecondaryYAxisValues = (series: PlotData, layout: Partial<Layout> | undefined) => {\n const secondaryYAxisValues: SecondaryYAxisValues = {};\n if (layout && layout.yaxis2 && series.yaxis === 'y2') {\n secondaryYAxisValues.secondaryYAxistitle =\n typeof layout.yaxis2.title === 'string'\n ? layout.yaxis2.title\n : typeof layout.yaxis2.title?.text === 'string'\n ? layout.yaxis2.title.text\n : '';\n if (layout.yaxis2.range) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: layout.yaxis2.range[0],\n yMaxValue: layout.yaxis2.range[1],\n };\n } else {\n const yValues = series.y as number[];\n if (yValues) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: Math.min(...yValues),\n yMaxValue: Math.max(...yValues),\n };\n }\n }\n }\n secondaryYAxisValues.secondaryYAxistitle =\n secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;\n secondaryYAxisValues.secondaryYScaleOptions =\n secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0\n ? secondaryYAxisValues.secondaryYScaleOptions\n : undefined;\n return secondaryYAxisValues;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const donutData = firstData.labels?.map((label: string, index: number): ChartDataPoint => {\n const color = getColor(label, colorMap, isDarkTheme);\n return {\n legend: label,\n data: firstData.values?.[index] as number, //ToDo how to handle string data?\n color,\n };\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: donutData,\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: PlotData, index: number) => {\n invalidate2Dseries(series, 'VBC');\n\n if (!series.x) {\n return;\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(series.x as number[]) as [number, number])\n .nice();\n let [xMin, xMax] = scale.domain();\n\n xMin = typeof series.xbins?.start === 'number' ? series.xbins.start : xMin;\n xMax = typeof series.xbins?.end === 'number' ? series.xbins.end : xMax;\n\n const bin = d3Bin().domain([xMin, xMax]);\n\n if (typeof series.xbins?.size === 'number') {\n const thresholds: number[] = [];\n let th = xMin;\n const precision = d3PrecisionFixed(series.xbins.size);\n const format = d3Format(`.${precision}f`);\n\n while (th < xMax + series.xbins.size) {\n thresholds.push(parseFloat(format(th)));\n th += series.xbins.size;\n }\n\n xMin = thresholds[0];\n xMax = thresholds[thresholds.length - 1];\n bin.domain([xMin, xMax]).thresholds(thresholds);\n }\n\n const buckets = bin(series.x as number[]);\n // If the start or end of xbins is specified, then the number of datapoints may become less than x.length\n const totalDataPoints = d3Merge(buckets).length;\n\n buckets.forEach(bucket => {\n const legend: string = getLegend(series, index);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n let y = bucket.length;\n\n if (series.histnorm === 'percent') {\n y = (bucket.length / totalDataPoints) * 100;\n } else if (series.histnorm === 'probability') {\n y = bucket.length / totalDataPoints;\n } else if (series.histnorm === 'density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (bucket.x1! - bucket.x0!);\n } else if (series.histnorm === 'probability density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (totalDataPoints * (bucket.x1! - bucket.x0!));\n } else if (series.histfunc === 'sum') {\n y = d3Sum(bucket);\n } else if (series.histfunc === 'avg') {\n y = bucket.length === 0 ? 0 : d3Sum(bucket) / bucket.length;\n } else if (series.histfunc === 'min') {\n y = d3Min(bucket)!;\n } else if (series.histfunc === 'max') {\n y = d3Max(bucket)!;\n }\n\n vbcData.push({\n x: (bucket.x1! + bucket.x0!) / 2,\n y,\n legend,\n color,\n xAxisCalloutData: `[${bucket.x0} - ${bucket.x1})`,\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n // width: layout?.width,\n // height: layout?.height,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps => {\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n invalidate2Dseries(series, 'Scatter');\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n\n return {\n legend,\n ...(series.line?.dash && dashOptions[series.line.dash]\n ? { lineOptions: { ...dashOptions[series.line.dash] } }\n : {}),\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n })),\n color: lineColor,\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n hideTickOverlap: true,\n } as LineChartProps;\n};\n\nconst MAX_DEPTH = 15;\nexport const sanitizeJson = (jsonObject: any, depth: number = 0): any => {\n if (depth > MAX_DEPTH) {\n throw new Error('Maximum json depth exceeded');\n }\n\n if (typeof jsonObject === 'object' && jsonObject !== null) {\n for (const key in jsonObject) {\n if (jsonObject.hasOwnProperty(key)) {\n if (typeof jsonObject[key] === 'string') {\n jsonObject[key] = jsonObject[key].replace(/</g, '<').replace(/>/g, '>');\n } else {\n jsonObject[key] = sanitizeJson(jsonObject[key], depth + 1);\n }\n }\n }\n }\n\n return jsonObject;\n};\n\nfunction isTypedArray(a: any) {\n return ArrayBuffer.isView(a) && !(a instanceof DataView);\n}\n\nexport function isArrayOrTypedArray(a: any) {\n return Array.isArray(a) || isTypedArray(a);\n}\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","merge","d3Merge","scaleLinear","d3ScaleLinear","format","d3Format","precisionFixed","d3PrecisionFixed","getNextColor","findNumericMinMaxOfY","timeParse","SUPPORTED_PLOT_TYPES","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","isDate","value","parsedDate","Date","parse","isNaN","getTime","parsedYear","getFullYear","yearInString","test","isNumber","parseFloat","isFinite","isMonth","possiblyMonthValue","parseFullMonth","parseShortMonth","isArrayOfType","plotCoordinates","typeCheck","args","isArrayOrTypedArray","length","Array","isArray","every","innerArray","datum","isDateArray","data","isNumberArray","isMonthArray","isLineData","includes","type","x","y","invalidate2Dseries","series","chartType","Error","getLegend","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","updateXValues","xValues","presentYear","dates","map","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","getColor","legendLabel","colorMap","isDarkTheme","current","has","nextColor","size","set","get","getSecondaryYAxisValues","secondaryYAxisValues","yaxis2","secondaryYAxistitle","range","secondaryYScaleOptions","yMinValue","yMaxValue","yValues","Math","undefined","Object","keys","transformPlotlyJsonToDonutProps","input","firstData","donutData","labels","label","color","legend","values","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","transformPlotlyJsonToVBCProps","vbcData","forEach","scale","domain","nice","xMin","xMax","xbins","start","end","thresholds","th","precision","push","buckets","totalDataPoints","bucket","histnorm","x0","x1","histfunc","xAxisCalloutData","hideTickOverlap","transformPlotlyJsonToScatterChartProps","isAreaChart","isString","isXDate","isXNumber","lineColor","line","lineOptions","yMinMaxValues","chartProps","lineChartData","supportNegativeData","roundedTicks","startValue","endValue","MAX_DEPTH","sanitizeJson","jsonObject","depth","key","hasOwnProperty","replace","isTypedArray","a","ArrayBuffer","isView","DataView","isPlainObject","obj","prototype","toString","call","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isLineData,\n} from '@fluentui/chart-utilities';\nimport { timeParse } from 'd3-time-format';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst isMonth = (possiblyMonthValue: any): boolean => {\n const parseFullMonth = timeParse('%B');\n const parseShortMonth = timeParse('%b');\n return parseFullMonth(possiblyMonthValue) !== null || parseShortMonth(possiblyMonthValue) !== null;\n};\n\nexport const isMonthArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isMonth);\n};\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst getSecondaryYAxisValues = (series: PlotData, layout: Partial<Layout> | undefined) => {\n const secondaryYAxisValues: SecondaryYAxisValues = {};\n if (layout && layout.yaxis2 && series.yaxis === 'y2') {\n secondaryYAxisValues.secondaryYAxistitle =\n typeof layout.yaxis2.title === 'string'\n ? layout.yaxis2.title\n : typeof layout.yaxis2.title?.text === 'string'\n ? layout.yaxis2.title.text\n : '';\n if (layout.yaxis2.range) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: layout.yaxis2.range[0],\n yMaxValue: layout.yaxis2.range[1],\n };\n } else {\n const yValues = series.y as number[];\n if (yValues) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: Math.min(...yValues),\n yMaxValue: Math.max(...yValues),\n };\n }\n }\n }\n secondaryYAxisValues.secondaryYAxistitle =\n secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;\n secondaryYAxisValues.secondaryYScaleOptions =\n secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0\n ? secondaryYAxisValues.secondaryYScaleOptions\n : undefined;\n return secondaryYAxisValues;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n } else if (series.type === 'scatter' || isLineData(series) || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n });\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n });\n }\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n let mode: string = 'tonexty';\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const color = getColor(yValue, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: yValue,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfBars = (input.data[0] as PlotData).y.length;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfBars);\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n // let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n // const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","DataVizPalette","getColorFromToken","getNextColor","findNumericMinMaxOfY","isArrayOfType","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isLineData","timeParse","curveCardinal","d3CurveCardinal","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","isMonth","possiblyMonthValue","parseFullMonth","parseShortMonth","isMonthArray","data","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","correctYearMonth","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","parsedDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","getColor","legendLabel","colorMap","isDarkTheme","current","has","nextColor","size","set","get","getSecondaryYAxisValues","secondaryYAxisValues","yaxis2","secondaryYAxistitle","secondaryYScaleOptions","yMinValue","yMaxValue","yValues","y","Math","undefined","Object","keys","transformPlotlyJsonToDonutProps","input","firstData","mapLegendToDataPoint","labels","forEach","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","transformPlotlyJsonToVSBCProps","fallbackVSBC","mapXToDataPoints","index1","x","index2","xAxisPoint","lineData","yVal","type","push","lineOptions","getLineOptions","line","barWidth","mode","hideTickOverlap","transformPlotlyJsonToGVBCProps","toString","key","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","transformPlotlyJsonToScatterChartProps","isAreaChart","isString","isXDate","isXNumber","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","chartProps","lineChartData","supportNegativeData","roundedTicks","startValue","endValue","enableReflow","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfBars","scalingFactor","gapFactor","barHeight","showYAxisLables","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j","shape","smoothing","curve","tension","bins","findIndex","binStart","binEnd","binSize","categories","from","Set","ceil","stop","floor","slice","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","th","tolerance","pow","split","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -69,7 +69,7 @@ import { formatValueWithSIPrefix, useRtl } from '../../../utilities/index';
|
|
|
69
69
|
}
|
|
70
70
|
const { href, focusedArcId } = props;
|
|
71
71
|
//TO DO 'replace' is throwing error
|
|
72
|
-
const id = props.uniqText + props.data.data.legend.replace(/\s
|
|
72
|
+
const id = props.uniqText + (typeof props.data.data.legend === 'string' ? props.data.data.legend.replace(/\s+/g, '') : '') + props.data.data.data;
|
|
73
73
|
const opacity = props.activeArc === props.data.data.legend || props.activeArc === '' ? 1 : 0.1;
|
|
74
74
|
return /*#__PURE__*/ React.createElement("g", {
|
|
75
75
|
ref: currentRef
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatValueWithSIPrefix, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string): void {\n props.onFocusCallback!(data, id, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatValueWithSIPrefix(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id
|
|
1
|
+
{"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatValueWithSIPrefix, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string): void {\n props.onFocusCallback!(data, id, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatValueWithSIPrefix(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id =\n props.uniqText! +\n (typeof props.data!.data.legend === 'string' ? props.data!.data.legend.replace(/\\s+/g, '') : '') +\n props.data!.data.data;\n const opacity: number = props.activeArc === props.data!.data.legend || props.activeArc === '' ? 1 : 0.1;\n return (\n <g ref={currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n // TODO innerradius and outerradius were absent\n <path\n id={id + 'focusRing'}\n d={arc({ ...props.focusData!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.focusRing}\n />\n )}\n <path\n // TODO innerradius and outerradius were absent\n id={id}\n d={arc({ ...props.data!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.root}\n style={{ fill: props.color, cursor: href ? 'pointer' : 'default' }}\n onFocus={_onFocus.bind(this, props.data!.data, id)}\n data-is-focusable={props.activeArc === props.data!.data.legend || props.activeArc === ''}\n onMouseOver={_hoverOn.bind(this, props.data!.data)}\n onMouseMove={_hoverOn.bind(this, props.data!.data)}\n onMouseLeave={_hoverOff}\n onBlur={_onBlur}\n opacity={opacity}\n onClick={props.data?.data.onClick}\n aria-label={_getAriaLabel()}\n role=\"img\"\n />\n {_renderArcLabel(classes.arcLabel)}\n </g>\n );\n },\n);\nArc.displayName = 'Arc';\n"],"names":["React","arc","d3Arc","useArcStyles","format","d3Format","formatValueWithSIPrefix","useRtl","Arc","forwardRef","props","forwardedRef","currentRef","createRef","_isRTL","classes","useEffect","_updateChart","_onFocus","data","id","onFocusCallback","current","_hoverOn","mouseEvent","persist","hoverOnCallback","_hoverOff","hoverLeaveCallback","_onBlur","onBlurCallback","_getAriaLabel","point","legend","xAxisCalloutData","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_renderArcLabel","className","innerRadius","outerRadius","showLabelsInPercent","totalValue","hideLabels","activeArc","Math","abs","endAngle","startAngle","PI","base","perp","centroid","hyp","sqrt","labelRadius","max","angle","arcValue","value","text","x","y","textAnchor","dominantBaseline","aria-hidden","newProps","href","focusedArcId","uniqText","replace","opacity","g","ref","path","d","focusData","focusRing","root","style","fill","color","cursor","onFocus","bind","data-is-focusable","onMouseOver","onMouseMove","onMouseLeave","onBlur","onClick","aria-label","role","arcLabel","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -225,7 +225,7 @@ const MIN_LEGEND_CONTAINER_HEIGHT = 40;
|
|
|
225
225
|
const donutMarginVertical = props.hideLabels ? 0 : 40;
|
|
226
226
|
const outerRadius = Math.min(_width - donutMarginHorizontal, _height - donutMarginVertical) / 2;
|
|
227
227
|
const chartData = _elevateToMinimums(points.filter((d)=>d.data >= 0));
|
|
228
|
-
const valueInsideDonut = _valueInsideDonut(props.valueInsideDonut, chartData);
|
|
228
|
+
const valueInsideDonut = props.innerRadius !== 0 ? _valueInsideDonut(props.valueInsideDonut, chartData) : '';
|
|
229
229
|
const focusAttributes = useFocusableGroup();
|
|
230
230
|
var _props_culture;
|
|
231
231
|
return !_isChartEmpty() ? /*#__PURE__*/ React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DonutChart.tsx"],"sourcesContent":["/* eslint-disable react/jsx-no-bind */\nimport * as React from 'react';\nimport { Pie } from './Pie/index';\nimport { DonutChartProps } from './DonutChart.types';\nimport { useDonutChartStyles } from './useDonutChartStyles.styles';\nimport { ChartDataPoint } from '../../DonutChart';\nimport { convertToLocaleString } from '../../utilities/locale-util';\nimport { getColorFromToken, getNextColor } from '../../utilities/index';\nimport { Legend, Legends } from '../../index';\nimport { useId } from '@fluentui/react-utilities';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\n\nconst MIN_LEGEND_CONTAINER_HEIGHT = 40;\n\n// Create a DonutChart variant which uses these default styles and this styled subcomponent.\n/**\n * Donutchart component.\n * {@docCategory DonutChart}\n */\nexport const DonutChart: React.FunctionComponent<DonutChartProps> = React.forwardRef<HTMLDivElement, DonutChartProps>(\n (props, forwardedRef) => {\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\n const _uniqText: string = useId('_Pie_');\n /* eslint-disable @typescript-eslint/no-explicit-any */\n let _calloutAnchorPoint: ChartDataPoint | null;\n let _emptyChartId: string | null;\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const prevSize = React.useRef<{ width?: number; height?: number }>({});\n\n const [value, setValue] = React.useState<string | undefined>('');\n const [legend, setLegend] = React.useState<string | undefined>('');\n const [_width, setWidth] = React.useState<number | undefined>(props.width || 200);\n const [_height, setHeight] = React.useState<number | undefined>(props.height || 200);\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [color, setColor] = React.useState<string | undefined>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [focusedArcId, setFocusedArcId] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<ChartDataPoint | undefined>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n\n React.useEffect(() => {\n _fitParentContainer();\n }, []);\n\n React.useEffect(() => {\n if (prevSize.current.height !== props.height || prevSize.current.width !== props.width) {\n _fitParentContainer();\n }\n prevSize.current.height = props.height;\n prevSize.current.width = props.width;\n }, [props.width, props.height]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n }),\n [],\n );\n\n function _elevateToMinimums(data: ChartDataPoint[]) {\n let sumOfData = 0;\n const minPercent = 0.01;\n const elevatedData: ChartDataPoint[] = [];\n data.forEach(item => {\n sumOfData += item.data!;\n });\n data.forEach(item => {\n elevatedData.push(\n minPercent * sumOfData > item.data! && item.data! > 0\n ? {\n ...item,\n data: minPercent * sumOfData,\n yAxisCalloutData:\n item.yAxisCalloutData === undefined ? item.data!.toLocaleString() : item.yAxisCalloutData,\n }\n : item,\n );\n });\n return elevatedData;\n }\n function _createLegends(chartData: ChartDataPoint[]): JSX.Element {\n const legendDataItems = chartData.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n action: () => {\n if (selectedLegend === point.legend) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(point.legend!);\n }\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n };\n return legend;\n });\n const legends = (\n <Legends\n legends={legendDataItems}\n centerLegends\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n />\n );\n return legends;\n }\n\n function _focusCallback(data: ChartDataPoint, id: string, element: SVGPathElement): void {\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setFocusedArcId(id);\n setDataPointCalloutProps(data);\n }\n\n function _hoverCallback(data: ChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n if (_calloutAnchorPoint !== data) {\n _calloutAnchorPoint = data;\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setDataPointCalloutProps(data);\n updatePosition(e.clientX, e.clientY);\n }\n }\n function _onBlur(): void {\n setFocusedArcId('');\n }\n\n function _hoverLeave(): void {\n /**/\n }\n\n function _handleChartMouseLeave() {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n }\n\n function _valueInsideDonut(valueInsideDonut: string | number | undefined, data: ChartDataPoint[]) {\n const highlightedLegend = _getHighlightedLegend();\n if (valueInsideDonut !== undefined && (highlightedLegend !== '' || isPopoverOpen)) {\n let legendValue = valueInsideDonut;\n data!.map((point: ChartDataPoint, index: number) => {\n if (point.legend === highlightedLegend || (isPopoverOpen && point.legend === legend)) {\n legendValue = point.yAxisCalloutData ? point.yAxisCalloutData : point.data!;\n }\n return;\n });\n return legendValue;\n } else {\n return valueInsideDonut;\n }\n }\n\n function _toLocaleString(data: string | number | undefined) {\n const localeString = convertToLocaleString(data, props.culture);\n if (!localeString) {\n return data;\n }\n return localeString?.toString();\n }\n\n /**\n * This function returns\n * the selected legend if there is one\n * or the hovered legend if none of the legends is selected.\n * Note: This won't work in case of multiple legends selection.\n */\n function _getHighlightedLegend() {\n return selectedLegend || activeLegend;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.chartData &&\n props.data.chartData!.filter((d: ChartDataPoint) => d.data! > 0).length > 0\n );\n }\n\n function _addDefaultColors(donutChartDataPoint?: ChartDataPoint[]): ChartDataPoint[] {\n return donutChartDataPoint\n ? donutChartDataPoint.map((item, index) => {\n let defaultColor: string;\n if (typeof item.color === 'undefined') {\n defaultColor = getNextColor(index, 0);\n } else {\n defaultColor = getColorFromToken(item.color);\n }\n return { ...item, defaultColor };\n })\n : [];\n }\n\n 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 /**\n * When screen resizes, along with screen, chart also auto adjusted.\n * This method used to adjust height and width of the charts.\n */\n function _fitParentContainer(): void {\n //_reqID = requestAnimationFrame(() => {\n let legendContainerHeight;\n if (props.hideLegend) {\n // If there is no legend, need not to allocate some space from total chart space.\n legendContainerHeight = 0;\n } else {\n const legendContainerComputedStyles = legendContainer.current && getComputedStyle(legendContainer.current);\n legendContainerHeight =\n ((legendContainer.current && legendContainer.current.getBoundingClientRect().height) ||\n MIN_LEGEND_CONTAINER_HEIGHT) +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginTop) || '0') +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginBottom) || '0');\n }\n if (props.parentRef || _rootElem.current) {\n const container = props.parentRef ? props.parentRef : _rootElem.current!;\n const currentContainerWidth = container.getBoundingClientRect().width;\n const currentContainerHeight =\n container.getBoundingClientRect().height > legendContainerHeight\n ? container.getBoundingClientRect().height\n : 200;\n const shouldResize =\n _width !== currentContainerWidth || _height !== currentContainerHeight - legendContainerHeight;\n if (shouldResize) {\n setWidth(currentContainerWidth);\n setHeight(currentContainerHeight - legendContainerHeight);\n }\n }\n //});\n }\n\n const { data, hideLegend = false } = props;\n const points = _addDefaultColors(data?.chartData);\n\n const classes = useDonutChartStyles(props);\n\n const legendBars = _createLegends(points);\n const donutMarginHorizontal = props.hideLabels ? 0 : 80;\n const donutMarginVertical = props.hideLabels ? 0 : 40;\n const outerRadius = Math.min(_width! - donutMarginHorizontal, _height! - donutMarginVertical) / 2;\n const chartData = _elevateToMinimums(points.filter((d: ChartDataPoint) => d.data! >= 0));\n const valueInsideDonut = _valueInsideDonut(props.valueInsideDonut!, chartData!);\n const focusAttributes = useFocusableGroup();\n return !_isChartEmpty() ? (\n <div\n className={classes.root}\n ref={(rootElem: HTMLDivElement | null) => (_rootElem.current = rootElem)}\n onMouseLeave={_handleChartMouseLeave}\n >\n <div className={classes.chartWrapper} {...focusAttributes}>\n <svg className={classes.chart} aria-label={data?.chartTitle} width={_width} height={_height}>\n <Pie\n width={_width!}\n height={_height!}\n outerRadius={outerRadius}\n innerRadius={props.innerRadius!}\n data={chartData!}\n onFocusCallback={_focusCallback}\n hoverOnCallback={_hoverCallback}\n hoverLeaveCallback={_hoverLeave}\n uniqText={_uniqText}\n onBlurCallback={_onBlur}\n activeArc={_getHighlightedLegend()}\n focusedArcId={focusedArcId || ''}\n href={props.href!}\n valueInsideDonut={_toLocaleString(valueInsideDonut)}\n showLabelsInPercent={props.showLabelsInPercent}\n hideLabels={props.hideLabels}\n />\n </svg>\n </div>\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={!props.hideTooltip && isPopoverOpen}\n legend={legend!}\n YValue={value!}\n color={color}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!hideLegend && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendBars}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId!} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\n\nDonutChart.displayName = 'DonutChart';\nDonutChart.defaultProps = {\n innerRadius: 0,\n hideLabels: true,\n};\n"],"names":["React","Pie","useDonutChartStyles","convertToLocaleString","getColorFromToken","getNextColor","Legends","useId","useFocusableGroup","ChartPopover","MIN_LEGEND_CONTAINER_HEIGHT","DonutChart","forwardRef","props","forwardedRef","_rootElem","useRef","_uniqText","_calloutAnchorPoint","_emptyChartId","legendContainer","prevSize","value","setValue","useState","legend","setLegend","_width","setWidth","width","_height","setHeight","height","activeLegend","setActiveLegend","color","setColor","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegend","setSelectedLegend","focusedArcId","setFocusedArcId","dataPointCalloutProps","setDataPointCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","useEffect","_fitParentContainer","current","useImperativeHandle","componentRef","chartContainer","_elevateToMinimums","data","sumOfData","minPercent","elevatedData","forEach","item","push","yAxisCalloutData","undefined","toLocaleString","_createLegends","chartData","legendDataItems","map","point","index","title","action","hoverAction","_handleChartMouseLeave","onMouseOutAction","legends","centerLegends","overflowText","legendsOverflowText","legendProps","_focusCallback","id","element","toString","xAxisCalloutData","_hoverCallback","e","updatePosition","clientX","clientY","_onBlur","_hoverLeave","_valueInsideDonut","valueInsideDonut","highlightedLegend","_getHighlightedLegend","legendValue","_toLocaleString","localeString","culture","_isChartEmpty","filter","d","length","_addDefaultColors","donutChartDataPoint","defaultColor","newX","newY","threshold","distance","Math","sqrt","pow","legendContainerHeight","hideLegend","legendContainerComputedStyles","getComputedStyle","getBoundingClientRect","parseFloat","marginTop","marginBottom","parentRef","container","currentContainerWidth","currentContainerHeight","shouldResize","points","classes","legendBars","donutMarginHorizontal","hideLabels","donutMarginVertical","outerRadius","min","focusAttributes","div","className","root","ref","rootElem","onMouseLeave","chartWrapper","svg","chart","aria-label","chartTitle","innerRadius","onFocusCallback","hoverOnCallback","hoverLeaveCallback","uniqText","onBlurCallback","activeArc","href","showLabelsInPercent","hideTooltip","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerDataPoint","customCalloutProps","calloutPropsPerDataPoint","isCartesian","role","style","opacity","displayName","defaultProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["DonutChart.tsx"],"sourcesContent":["/* eslint-disable react/jsx-no-bind */\nimport * as React from 'react';\nimport { Pie } from './Pie/index';\nimport { DonutChartProps } from './DonutChart.types';\nimport { useDonutChartStyles } from './useDonutChartStyles.styles';\nimport { ChartDataPoint } from '../../DonutChart';\nimport { convertToLocaleString } from '../../utilities/locale-util';\nimport { getColorFromToken, getNextColor } from '../../utilities/index';\nimport { Legend, Legends } from '../../index';\nimport { useId } from '@fluentui/react-utilities';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\n\nconst MIN_LEGEND_CONTAINER_HEIGHT = 40;\n\n// Create a DonutChart variant which uses these default styles and this styled subcomponent.\n/**\n * Donutchart component.\n * {@docCategory DonutChart}\n */\nexport const DonutChart: React.FunctionComponent<DonutChartProps> = React.forwardRef<HTMLDivElement, DonutChartProps>(\n (props, forwardedRef) => {\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\n const _uniqText: string = useId('_Pie_');\n /* eslint-disable @typescript-eslint/no-explicit-any */\n let _calloutAnchorPoint: ChartDataPoint | null;\n let _emptyChartId: string | null;\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const prevSize = React.useRef<{ width?: number; height?: number }>({});\n\n const [value, setValue] = React.useState<string | undefined>('');\n const [legend, setLegend] = React.useState<string | undefined>('');\n const [_width, setWidth] = React.useState<number | undefined>(props.width || 200);\n const [_height, setHeight] = React.useState<number | undefined>(props.height || 200);\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [color, setColor] = React.useState<string | undefined>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [focusedArcId, setFocusedArcId] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<ChartDataPoint | undefined>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n\n React.useEffect(() => {\n _fitParentContainer();\n }, []);\n\n React.useEffect(() => {\n if (prevSize.current.height !== props.height || prevSize.current.width !== props.width) {\n _fitParentContainer();\n }\n prevSize.current.height = props.height;\n prevSize.current.width = props.width;\n }, [props.width, props.height]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n }),\n [],\n );\n\n function _elevateToMinimums(data: ChartDataPoint[]) {\n let sumOfData = 0;\n const minPercent = 0.01;\n const elevatedData: ChartDataPoint[] = [];\n data.forEach(item => {\n sumOfData += item.data!;\n });\n data.forEach(item => {\n elevatedData.push(\n minPercent * sumOfData > item.data! && item.data! > 0\n ? {\n ...item,\n data: minPercent * sumOfData,\n yAxisCalloutData:\n item.yAxisCalloutData === undefined ? item.data!.toLocaleString() : item.yAxisCalloutData,\n }\n : item,\n );\n });\n return elevatedData;\n }\n function _createLegends(chartData: ChartDataPoint[]): JSX.Element {\n const legendDataItems = chartData.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n action: () => {\n if (selectedLegend === point.legend) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(point.legend!);\n }\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n };\n return legend;\n });\n const legends = (\n <Legends\n legends={legendDataItems}\n centerLegends\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n />\n );\n return legends;\n }\n\n function _focusCallback(data: ChartDataPoint, id: string, element: SVGPathElement): void {\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setFocusedArcId(id);\n setDataPointCalloutProps(data);\n }\n\n function _hoverCallback(data: ChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n if (_calloutAnchorPoint !== data) {\n _calloutAnchorPoint = data;\n setPopoverOpen(selectedLegend === '' || selectedLegend === data.legend);\n setValue(data.data!.toString());\n setLegend(data.legend);\n setColor(data.color!);\n setXCalloutValue(data.xAxisCalloutData!);\n setYCalloutValue(data.yAxisCalloutData!);\n setDataPointCalloutProps(data);\n updatePosition(e.clientX, e.clientY);\n }\n }\n function _onBlur(): void {\n setFocusedArcId('');\n }\n\n function _hoverLeave(): void {\n /**/\n }\n\n function _handleChartMouseLeave() {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n }\n\n function _valueInsideDonut(valueInsideDonut: string | number | undefined, data: ChartDataPoint[]) {\n const highlightedLegend = _getHighlightedLegend();\n if (valueInsideDonut !== undefined && (highlightedLegend !== '' || isPopoverOpen)) {\n let legendValue = valueInsideDonut;\n data!.map((point: ChartDataPoint, index: number) => {\n if (point.legend === highlightedLegend || (isPopoverOpen && point.legend === legend)) {\n legendValue = point.yAxisCalloutData ? point.yAxisCalloutData : point.data!;\n }\n return;\n });\n return legendValue;\n } else {\n return valueInsideDonut;\n }\n }\n\n function _toLocaleString(data: string | number | undefined) {\n const localeString = convertToLocaleString(data, props.culture);\n if (!localeString) {\n return data;\n }\n return localeString?.toString();\n }\n\n /**\n * This function returns\n * the selected legend if there is one\n * or the hovered legend if none of the legends is selected.\n * Note: This won't work in case of multiple legends selection.\n */\n function _getHighlightedLegend() {\n return selectedLegend || activeLegend;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.chartData &&\n props.data.chartData!.filter((d: ChartDataPoint) => d.data! > 0).length > 0\n );\n }\n\n function _addDefaultColors(donutChartDataPoint?: ChartDataPoint[]): ChartDataPoint[] {\n return donutChartDataPoint\n ? donutChartDataPoint.map((item, index) => {\n let defaultColor: string;\n if (typeof item.color === 'undefined') {\n defaultColor = getNextColor(index, 0);\n } else {\n defaultColor = getColorFromToken(item.color);\n }\n return { ...item, defaultColor };\n })\n : [];\n }\n\n 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 /**\n * When screen resizes, along with screen, chart also auto adjusted.\n * This method used to adjust height and width of the charts.\n */\n function _fitParentContainer(): void {\n //_reqID = requestAnimationFrame(() => {\n let legendContainerHeight;\n if (props.hideLegend) {\n // If there is no legend, need not to allocate some space from total chart space.\n legendContainerHeight = 0;\n } else {\n const legendContainerComputedStyles = legendContainer.current && getComputedStyle(legendContainer.current);\n legendContainerHeight =\n ((legendContainer.current && legendContainer.current.getBoundingClientRect().height) ||\n MIN_LEGEND_CONTAINER_HEIGHT) +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginTop) || '0') +\n parseFloat((legendContainerComputedStyles && legendContainerComputedStyles.marginBottom) || '0');\n }\n if (props.parentRef || _rootElem.current) {\n const container = props.parentRef ? props.parentRef : _rootElem.current!;\n const currentContainerWidth = container.getBoundingClientRect().width;\n const currentContainerHeight =\n container.getBoundingClientRect().height > legendContainerHeight\n ? container.getBoundingClientRect().height\n : 200;\n const shouldResize =\n _width !== currentContainerWidth || _height !== currentContainerHeight - legendContainerHeight;\n if (shouldResize) {\n setWidth(currentContainerWidth);\n setHeight(currentContainerHeight - legendContainerHeight);\n }\n }\n //});\n }\n\n const { data, hideLegend = false } = props;\n const points = _addDefaultColors(data?.chartData);\n\n const classes = useDonutChartStyles(props);\n\n const legendBars = _createLegends(points);\n const donutMarginHorizontal = props.hideLabels ? 0 : 80;\n const donutMarginVertical = props.hideLabels ? 0 : 40;\n const outerRadius = Math.min(_width! - donutMarginHorizontal, _height! - donutMarginVertical) / 2;\n const chartData = _elevateToMinimums(points.filter((d: ChartDataPoint) => d.data! >= 0));\n const valueInsideDonut = props.innerRadius !== 0 ? _valueInsideDonut(props.valueInsideDonut!, chartData!) : '';\n const focusAttributes = useFocusableGroup();\n return !_isChartEmpty() ? (\n <div\n className={classes.root}\n ref={(rootElem: HTMLDivElement | null) => (_rootElem.current = rootElem)}\n onMouseLeave={_handleChartMouseLeave}\n >\n <div className={classes.chartWrapper} {...focusAttributes}>\n <svg className={classes.chart} aria-label={data?.chartTitle} width={_width} height={_height}>\n <Pie\n width={_width!}\n height={_height!}\n outerRadius={outerRadius}\n innerRadius={props.innerRadius!}\n data={chartData!}\n onFocusCallback={_focusCallback}\n hoverOnCallback={_hoverCallback}\n hoverLeaveCallback={_hoverLeave}\n uniqText={_uniqText}\n onBlurCallback={_onBlur}\n activeArc={_getHighlightedLegend()}\n focusedArcId={focusedArcId || ''}\n href={props.href!}\n valueInsideDonut={_toLocaleString(valueInsideDonut)}\n showLabelsInPercent={props.showLabelsInPercent}\n hideLabels={props.hideLabels}\n />\n </svg>\n </div>\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={!props.hideTooltip && isPopoverOpen}\n legend={legend!}\n YValue={value!}\n color={color}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!hideLegend && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendBars}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId!} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\n\nDonutChart.displayName = 'DonutChart';\nDonutChart.defaultProps = {\n innerRadius: 0,\n hideLabels: true,\n};\n"],"names":["React","Pie","useDonutChartStyles","convertToLocaleString","getColorFromToken","getNextColor","Legends","useId","useFocusableGroup","ChartPopover","MIN_LEGEND_CONTAINER_HEIGHT","DonutChart","forwardRef","props","forwardedRef","_rootElem","useRef","_uniqText","_calloutAnchorPoint","_emptyChartId","legendContainer","prevSize","value","setValue","useState","legend","setLegend","_width","setWidth","width","_height","setHeight","height","activeLegend","setActiveLegend","color","setColor","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","selectedLegend","setSelectedLegend","focusedArcId","setFocusedArcId","dataPointCalloutProps","setDataPointCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","useEffect","_fitParentContainer","current","useImperativeHandle","componentRef","chartContainer","_elevateToMinimums","data","sumOfData","minPercent","elevatedData","forEach","item","push","yAxisCalloutData","undefined","toLocaleString","_createLegends","chartData","legendDataItems","map","point","index","title","action","hoverAction","_handleChartMouseLeave","onMouseOutAction","legends","centerLegends","overflowText","legendsOverflowText","legendProps","_focusCallback","id","element","toString","xAxisCalloutData","_hoverCallback","e","updatePosition","clientX","clientY","_onBlur","_hoverLeave","_valueInsideDonut","valueInsideDonut","highlightedLegend","_getHighlightedLegend","legendValue","_toLocaleString","localeString","culture","_isChartEmpty","filter","d","length","_addDefaultColors","donutChartDataPoint","defaultColor","newX","newY","threshold","distance","Math","sqrt","pow","legendContainerHeight","hideLegend","legendContainerComputedStyles","getComputedStyle","getBoundingClientRect","parseFloat","marginTop","marginBottom","parentRef","container","currentContainerWidth","currentContainerHeight","shouldResize","points","classes","legendBars","donutMarginHorizontal","hideLabels","donutMarginVertical","outerRadius","min","innerRadius","focusAttributes","div","className","root","ref","rootElem","onMouseLeave","chartWrapper","svg","chart","aria-label","chartTitle","onFocusCallback","hoverOnCallback","hoverLeaveCallback","uniqText","onBlurCallback","activeArc","href","showLabelsInPercent","hideTooltip","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerDataPoint","customCalloutProps","calloutPropsPerDataPoint","isCartesian","role","style","opacity","displayName","defaultProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -128,6 +128,9 @@ export const GaugeChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>
|
|
|
128
128
|
}, [
|
|
129
129
|
props
|
|
130
130
|
]);
|
|
131
|
+
React.useImperativeHandle(props.componentRef, ()=>({
|
|
132
|
+
chartContainer: _rootElem.current
|
|
133
|
+
}), []);
|
|
131
134
|
const classes = useGaugeChartStyles(props);
|
|
132
135
|
function _getStylesBasedOnBreakpoint() {
|
|
133
136
|
for(let index = BREAKPOINTS.length - 1; index >= 0; index -= 1){
|