@fluentui/react-charts 9.2.0 → 9.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -3
- package/dist/index.d.ts +5 -0
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +47 -17
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +47 -17
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/DeclarativeChart/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 Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\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 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 usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\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 const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let yMinValue = 0;\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : 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 yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || !!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 useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\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 yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n barGapMax: 2,\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 const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\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 useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\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 ...secondaryYAxisValues,\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 // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\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: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\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 const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\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 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 useSecondaryYScale: usesSecondaryYScale(series),\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 ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\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 useUTC: 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 legendName = series.name ?? yValue;\n const color = getColor(legendName, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: legendName,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .reverse()\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 numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (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 noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: 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 noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: 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 };\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 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\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series: PlotData = input.data[sindex] as PlotData;\n series.x = [];\n series.y = [];\n for (let ptindex = 0; ptindex < series.r.length; ptindex++) {\n const thetaRad = ((series.theta[ptindex] as number) * Math.PI) / 180;\n const radius = series.r[ptindex] as number;\n series.x[ptindex] = radius * Math.cos(thetaRad);\n series.y[ptindex] = radius * Math.sin(thetaRad);\n }\n projection.data[sindex] = series;\n }\n\n return projection;\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(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\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' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\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\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\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","isYearArray","curveCardinal","d3CurveCardinal","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","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","possiblyMonthValue","parsedDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","getColor","legendLabel","colorMap","isDarkTheme","current","has","nextColor","size","set","get","usesSecondaryYScale","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","yaxis2","secondaryYAxistitle","undefined","secondaryYScaleOptions","transformPlotlyJsonToDonutProps","input","firstData","mapLegendToDataPoint","labels","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","transformPlotlyJsonToVSBCProps","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","index1","isXYearCategory","x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","useSecondaryYScale","barWidth","mode","hideTickOverlap","barGapMax","transformPlotlyJsonToGVBCProps","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","maxBarWidth","transformPlotlyJsonToScatterChartProps","isAreaChart","isString","isXDate","isXNumber","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","legendName","reverse","flat","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","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","projectPolarToCartesian","projection","sindex","ptindex","r","thetaRad","theta","PI","radius","cos","sin","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","slice","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/DeclarativeChart/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 Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\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\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 usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\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 const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n let yMinValue = 0;\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : x, chartData: [], lineData: [] };\n }\n const legend: string = legends[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 yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n const dashType = series.line?.dash || 'solid';\n const legendShape =\n dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot' ? 'dottedLine' : 'default';\n mapXToDataPoints[x].lineData!.push({\n legend,\n legendShape,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\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 yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\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 const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\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 = legends[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 useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\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 ...secondaryYAxisValues,\n hideTickOverlap: true,\n hideLegend,\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 const { legends, hideLegend } = getLegendProps(input.data, input.layout);\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 // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\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 = legends[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: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\n hideLegend,\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 const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\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 = legends[index];\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n const dashType = series.line?.dash || 'solid';\n const legendShape = dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot' ? 'dottedLine' : 'default';\n\n return {\n legend,\n legendShape,\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 useSecondaryYScale: usesSecondaryYScale(series),\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 ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n hideLegend,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\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 useUTC: false,\n hideLegend,\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 { legends, hideLegend } = getLegendProps(input.data, input.layout);\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n const legend = legends[index];\n const color = getColor(legend, colorMap, isDarkTheme);\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n return {\n x: series.x[i],\n y: yValue,\n legend,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .reverse()\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 numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (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 noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\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 noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: 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 };\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 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\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series: PlotData = input.data[sindex] as PlotData;\n series.x = [];\n series.y = [];\n for (let ptindex = 0; ptindex < series.r.length; ptindex++) {\n const thetaRad = ((series.theta[ptindex] as number) * Math.PI) / 180;\n const radius = series.r[ptindex] as number;\n series.x[ptindex] = radius * Math.cos(thetaRad);\n series.y[ptindex] = radius * Math.sin(thetaRad);\n }\n projection.data[sindex] = series;\n }\n\n return projection;\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(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\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' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\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\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegends = data.every((series: Partial<PlotData>) => series.showlegend === false);\n\n return {\n legends,\n hideLegend: layout?.showlegend === false ? true : hideLegends,\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","isYearArray","curveCardinal","d3CurveCardinal","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","correctYearMonth","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","index","getColor","legendLabel","colorMap","isDarkTheme","current","has","nextColor","size","set","get","usesSecondaryYScale","series","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","yaxis2","secondaryYAxistitle","undefined","secondaryYScaleOptions","transformPlotlyJsonToDonutProps","input","firstData","mapLegendToDataPoint","labels","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","transformPlotlyJsonToVSBCProps","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","index1","isXYearCategory","x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","dashType","legendShape","useSecondaryYScale","barWidth","mode","hideTickOverlap","barGapMax","transformPlotlyJsonToGVBCProps","name","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","maxBarWidth","transformPlotlyJsonToScatterChartProps","isAreaChart","isString","isXDate","isXNumber","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","reverse","flat","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","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","projectPolarToCartesian","projection","sindex","ptindex","r","thetaRad","theta","PI","radius","cos","sin","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","slice","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round","hideLegends","every"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/DataPoint.ts"],"sourcesContent":["import { SVGProps } from 'react';\nimport { LegendShape } from '../components/Legends/Legends.types';\nimport { CurveFactory } from 'd3-shape';\nimport { SankeyLink, SankeyNode } from 'd3-sankey';\n\nexport interface Basestate {\n _width?: number;\n _height?: number;\n activeLegend?: string;\n color?: string;\n dataForHoverCard?: number;\n isCalloutVisible: boolean;\n isLegendSelected?: boolean;\n isLegendHovered?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected?: any;\n YValueHover?: { legend?: string; y?: number; color?: string }[];\n hoverYValue?: string | number | null;\n hoverXValue?: string | number | null;\n xCalloutValue?: string;\n yCalloutValue?: string;\n lineColor?: string;\n hoveredLineColor?: string;\n selectedLegend?: string;\n containerWidth?: number;\n containerHeight?: number;\n}\n\nexport interface RefArrayData {\n index?: string;\n refElement?: SVGGElement;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface Margins {\n /**\n * left margin for the chart.\n */\n left?: number;\n /**\n * Right margin for the chart.\n */\n right?: number;\n /**\n * Top margin for the chart.\n */\n top?: number;\n /**\n * Bottom margin for the chart.\n */\n bottom?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface DataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n // NOTE: VerticalStackedBarChart, PieChart\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalStackedBarDataPoint extends Omit<DataPoint, 'x'> {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n * If data type on x is Date, then the data is spaced evenly by d3-scale.\n */\n x: number | string | Date;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number;\n\n /**\n * Total value of a single point bar chart.\n */\n total?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface ChartDataPoint {\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * data the datapoint in the chart\n */\n data?: number;\n\n /**\n * data the datapoint in the chart\n */\n horizontalBarChartdata?: HorizontalDataPoint;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Color for the legend in the chart. If not provided, it will fallback on the default color palette.\n */\n color?: string;\n\n /**\n * placeholder data point\n */\n placeHolder?: boolean;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalBarChartDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * data to render the line along with bars\n */\n lineData?: LineDataInVerticalBarChart;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalBarChartWithAxisDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: number;\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalBarChart {\n y: VerticalBarChartDataPoint['y'];\n yAxisCalloutData?: string | undefined;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\ninterface BaseDataPoint {\n /**\n * Defines the function that is executed on clicking line\n */\n onDataPointClick?: () => void;\n\n /**\n * Callout data for x axis\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n */\n yAxisCalloutData?: string | { [id: string]: number };\n\n /**\n * Whether to hide callout data for the point.\n */\n hideCallout?: boolean;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * X axis Accessibility data for callout\n */\n xAxisCalloutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n}\n\n/**\n * {@docCategory ChartData}\n * ScatterChartDataPoint interface.\n */\nexport interface ScatterChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Marker size of the points\n */\n markerSize?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartGap {\n /**\n * Starting index of the gap.\n */\n startIndex: number;\n\n /**\n * Ending index of the gap.\n */\n endIndex: number;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface LineChartLineOptions extends SVGProps<SVGPathElement> {\n /**\n * Width of the line/stroke.\n * Overrides the strokeWidth set on ICartesianChartProps level.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width\n */\n strokeWidth?: number | string;\n\n /**\n * Pattern of dashes and gaps.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray\n */\n strokeDasharray?: string | number;\n\n /**\n * Offset on rendering of stroke dash array.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset\n */\n strokeDashoffset?: string | number;\n\n /**\n * Shape at the end of a subpath.\n * Default round.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap\n */\n strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';\n\n /**\n * Width of border around the line. Default no border.\n */\n lineBorderWidth?: string | number;\n\n /**\n * Color of border around the line. Default white.\n */\n lineBorderColor?: string;\n\n /**\n * Defines the type of interpolation used to render the line.\n * @default 'linear'\n */\n curve?: 'linear' | 'natural' | 'step' | 'stepAfter' | 'stepBefore' | CurveFactory;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartPoints {\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n\n /**\n * dataPoints for the line chart\n */\n data: LineChartDataPoint[] | ScatterChartDataPoint[];\n\n /**\n * gaps in the line chart where a line is not drawn\n */\n gaps?: LineChartGap[];\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * opacity for chart fill color\n */\n opacity?: number;\n\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n\n /**\n * hide dots for points that are not active\n */\n hideNonActiveDots?: boolean;\n\n /**\n * Defines the function that is executed on clicking this legend\n */\n onLegendClick?: (selectedLegend: string | null | string[]) => void;\n\n /**\n * Defines the function that is executed on clicking line\n */\n onLineClick?: () => void;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface ChartProps {\n /**\n * chart title for the chart\n */\n chartTitle?: string;\n\n /**\n * Accessibility data for chart title\n */\n chartTitleAccessibilityData?: AccessibilityProps;\n /**\n * data for the points in the chart\n */\n chartData?: ChartDataPoint[];\n\n /**\n * Accessibility data for chart data\n */\n chartDataAccessibilityData?: AccessibilityProps;\n\n /**\n * data for the points in the line chart\n */\n lineChartData?: LineChartPoints[];\n\n /**\n * data for the points in the line chart\n */\n SankeyChartData?: SankeyChartData;\n\n /**\n * data for the points in the line chart\n */\n pointOptions?: SVGProps<SVGCircleElement>;\n\n /**\n * data for the dotted line on hovering the point\n */\n pointLineOptions?: SVGProps<SVGLineElement>;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface AccessibilityProps {\n /**\n * Accessibility aria-label\n */\n ariaLabel?: string;\n\n /**\n * Accessibility aria-labelledBy\n */\n ariaLabelledBy?: string;\n\n /**\n * Accessibility aria-describedBy\n */\n ariaDescribedBy?: string;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VSChartDataPoint {\n /**\n * data the datapoint in the chart\n */\n data: number;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface VerticalStackedChartProps {\n /**\n * data for the points in the chart\n */\n chartData: VSChartDataPoint[];\n\n /**\n * Data for x axis label for multistacked Vertical bar chart\n */\n xAxisPoint: number | string | Date;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given, legend will take\n */\n xAxisCalloutData?: string;\n /**\n * line data to render lines on stacked bar chart\n */\n lineData?: LineDataInVerticalStackedBarChart[];\n /**\n * Accessibility data for Whole stack callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalStackedBarChart {\n y: number;\n color: string;\n legend: string;\n /**\n * Data to show in callout\n */\n data?: number;\n yAxisCalloutData?: string;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GVBarChartSeriesPoint {\n /**\n * Text for // need to check use of this\n */\n key: string;\n\n /**\n * Data for bar height of Grouped vertical bar chart\n */\n data: number;\n\n /**\n * Color for the legend in the chart\n */\n color: string;\n\n /**\n * Legend text in the chart\n */\n legend: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GroupedVerticalBarChartData {\n /**\n * Data for X axis label\n */\n name: string;\n\n /**\n * Data points for Grouped vertical bar chart\n */\n series: GVBarChartSeriesPoint[];\n\n /**\n * Accessibility data for Group Bars Stack Callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\nexport interface GVDataPoint {\n /**\n * This interface used for - While forming datapoints from given prop \"data\" in code\n * datapoints are used for to draw graph\n */\n [key: string]: number | string;\n}\n\nexport interface GVSingleDataPoint {\n /**\n * While forming datapoints from given prop \"data\" in code.\n * These datapoints are used for to draw graph easily.\n */\n [key: string]: GVDataPoint;\n}\n\nexport interface GVForBarChart {\n /**\n * While forming datapoints from given prop \"data\"\n * These datapoints are used for to draw graph.\n */\n [key: string]: GVBarChartSeriesPoint;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutDataPoint {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n}\n\n/**\n * Used for custom callout data interface. As Area chart callout data will be prepared from given props.data,\n * Those required data passing to onRenderCalloutPerDataPoint and onRenderCalloutPerStack.\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutData {\n x: number | string | Date;\n values: CustomizedCalloutDataPoint[];\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface Chart {\n chartContainer: HTMLElement | null;\n toImage?: (opts?: ImageExportOptions) => Promise<string>;\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface ImageExportOptions {\n width?: number;\n height?: number;\n scale?: number;\n background?: string;\n}\n\nexport interface HeatMapChartDataPoint {\n x: string | Date | number;\n y: string | Date | number;\n value: number;\n /**\n * The value/ text to be rendered in the rectange\n */\n rectText?: string | number;\n /**\n * denomination to show in the callout\n */\n ratio?: [number, number];\n /**\n * description message to the callout\n */\n descriptionMessage?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HeatMapChartData {\n /**\n * name of the legend\n */\n legend: string;\n data: HeatMapChartDataPoint[];\n /**\n * This number will be used to get the color for the legend\n */\n value: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface SankeyChartData {\n nodes: SNode[];\n links: SLink[];\n}\n\ninterface SNodeExtra {\n /**\n * A unique identifier for this node.\n */\n nodeId: number | string;\n /**\n * The display name for this node in the UX.\n */\n name: string;\n color?: string;\n borderColor?: string;\n actualValue?: number;\n layer?: number;\n}\n\ninterface SLinkExtra {\n /**\n * The index within `ISankeyChartData.nodes` of the source node.\n */\n source: number;\n /**\n * The index within `ISankeyChartData.nodes` of the target node.\n */\n target: number;\n /**\n * The weight of this link between the two nodes.\n */\n value: number;\n unnormalizedValue?: number;\n}\n\nexport type SNode = SankeyNode<SNodeExtra, SLinkExtra>;\nexport type SLink = SankeyLink<SNodeExtra, SLinkExtra>;\n\n/**\n * Specifies the ordering options for axis categories in Cartesian charts.\n *\n * - `'default'`: Uses the original order before custom ordering was supported.\n * In some charts, this behaves the same as `'data'`.\n * - `'data'`: Preserves the order of categories as provided in the input data.\n * - `string[]`: Explicitly defines the custom order of categories as an array of category names.\n * - `'category ascending' | 'category descending'`: Orders categories alphanumerically.\n * - `'total ascending' | 'total descending'`: Orders categories by the total of their associated values.\n * - `'min ascending' | 'min descending'`: Orders by the minimum value within each category.\n * - `'max ascending' | 'max descending'`: Orders by the maximum value within each category.\n * - `'sum ascending' | 'sum descending'`: Orders by the sum of values for each category (same as 'total').\n * - `'mean ascending' | 'mean descending'`: Orders by the average of values in each category.\n * - `'median ascending' | 'median descending'`: Orders by the median value of each category.\n *\n * {@docCategory CartesianChart}\n */\nexport type AxisCategoryOrder =\n | 'default'\n | 'data'\n | string[]\n | 'category ascending'\n | 'category descending'\n | 'total ascending'\n | 'total descending'\n | 'min ascending'\n | 'min descending'\n | 'max ascending'\n | 'max descending'\n | 'sum ascending'\n | 'sum descending'\n | 'mean ascending'\n | 'mean descending'\n | 'median ascending'\n | 'median descending';\n\n/**\n * {@docCategory IChartData}\n */\nexport interface GanttChartDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: {\n start: Date | number;\n end: Date | number;\n };\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Gradient for the legend in the chart. If not provided, it will fallback on the default color palette.\n * If provided, it will override the color prop. granted `enableGradient` is set to true for the chart.\n */\n gradient?: [string, string];\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n"],"names":[],"mappings":"AA03BA;;CAEC,GACD,WAqDC"}
|
|
1
|
+
{"version":3,"sources":["../src/types/DataPoint.ts"],"sourcesContent":["import { SVGProps } from 'react';\nimport { LegendShape } from '../components/Legends/Legends.types';\nimport { CurveFactory } from 'd3-shape';\nimport { SankeyLink, SankeyNode } from 'd3-sankey';\n\nexport interface Basestate {\n _width?: number;\n _height?: number;\n activeLegend?: string;\n color?: string;\n dataForHoverCard?: number;\n isCalloutVisible: boolean;\n isLegendSelected?: boolean;\n isLegendHovered?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected?: any;\n YValueHover?: { legend?: string; y?: number; color?: string }[];\n hoverYValue?: string | number | null;\n hoverXValue?: string | number | null;\n xCalloutValue?: string;\n yCalloutValue?: string;\n lineColor?: string;\n hoveredLineColor?: string;\n selectedLegend?: string;\n containerWidth?: number;\n containerHeight?: number;\n}\n\nexport interface RefArrayData {\n index?: string;\n refElement?: SVGGElement;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface Margins {\n /**\n * left margin for the chart.\n */\n left?: number;\n /**\n * Right margin for the chart.\n */\n right?: number;\n /**\n * Top margin for the chart.\n */\n top?: number;\n /**\n * Bottom margin for the chart.\n */\n bottom?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface DataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n // NOTE: VerticalStackedBarChart, PieChart\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalStackedBarDataPoint extends Omit<DataPoint, 'x'> {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n * If data type on x is Date, then the data is spaced evenly by d3-scale.\n */\n x: number | string | Date;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number;\n\n /**\n * Total value of a single point bar chart.\n */\n total?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface ChartDataPoint {\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * data the datapoint in the chart\n */\n data?: number;\n\n /**\n * data the datapoint in the chart\n */\n horizontalBarChartdata?: HorizontalDataPoint;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Color for the legend in the chart. If not provided, it will fallback on the default color palette.\n */\n color?: string;\n\n /**\n * placeholder data point\n */\n placeHolder?: boolean;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalBarChartDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * data to render the line along with bars\n */\n lineData?: LineDataInVerticalBarChart;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalBarChartWithAxisDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: number;\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalBarChart {\n y: VerticalBarChartDataPoint['y'];\n yAxisCalloutData?: string | undefined;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\ninterface BaseDataPoint {\n /**\n * Defines the function that is executed on clicking line\n */\n onDataPointClick?: () => void;\n\n /**\n * Callout data for x axis\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n */\n yAxisCalloutData?: string | { [id: string]: number };\n\n /**\n * Whether to hide callout data for the point.\n */\n hideCallout?: boolean;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * X axis Accessibility data for callout\n */\n xAxisCalloutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n}\n\n/**\n * {@docCategory ChartData}\n * ScatterChartDataPoint interface.\n */\nexport interface ScatterChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Marker size of the points\n */\n markerSize?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartGap {\n /**\n * Starting index of the gap.\n */\n startIndex: number;\n\n /**\n * Ending index of the gap.\n */\n endIndex: number;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface LineChartLineOptions extends SVGProps<SVGPathElement> {\n /**\n * Width of the line/stroke.\n * Overrides the strokeWidth set on ICartesianChartProps level.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width\n */\n strokeWidth?: number | string;\n\n /**\n * Pattern of dashes and gaps.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray\n */\n strokeDasharray?: string | number;\n\n /**\n * Offset on rendering of stroke dash array.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset\n */\n strokeDashoffset?: string | number;\n\n /**\n * Shape at the end of a subpath.\n * Default round.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap\n */\n strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';\n\n /**\n * Width of border around the line. Default no border.\n */\n lineBorderWidth?: string | number;\n\n /**\n * Color of border around the line. Default white.\n */\n lineBorderColor?: string;\n\n /**\n * Defines the type of interpolation used to render the line.\n * @default 'linear'\n */\n curve?: 'linear' | 'natural' | 'step' | 'stepAfter' | 'stepBefore' | CurveFactory;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartPoints {\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n\n /**\n * dataPoints for the line chart\n */\n data: LineChartDataPoint[] | ScatterChartDataPoint[];\n\n /**\n * gaps in the line chart where a line is not drawn\n */\n gaps?: LineChartGap[];\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * opacity for chart fill color\n */\n opacity?: number;\n\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n\n /**\n * hide dots for points that are not active\n */\n hideNonActiveDots?: boolean;\n\n /**\n * Defines the function that is executed on clicking this legend\n */\n onLegendClick?: (selectedLegend: string | null | string[]) => void;\n\n /**\n * Defines the function that is executed on clicking line\n */\n onLineClick?: () => void;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface ChartProps {\n /**\n * chart title for the chart\n */\n chartTitle?: string;\n\n /**\n * Accessibility data for chart title\n */\n chartTitleAccessibilityData?: AccessibilityProps;\n /**\n * data for the points in the chart\n */\n chartData?: ChartDataPoint[];\n\n /**\n * Accessibility data for chart data\n */\n chartDataAccessibilityData?: AccessibilityProps;\n\n /**\n * data for the points in the line chart\n */\n lineChartData?: LineChartPoints[];\n\n /**\n * data for the points in the line chart\n */\n SankeyChartData?: SankeyChartData;\n\n /**\n * data for the points in the line chart\n */\n pointOptions?: SVGProps<SVGCircleElement>;\n\n /**\n * data for the dotted line on hovering the point\n */\n pointLineOptions?: SVGProps<SVGLineElement>;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface AccessibilityProps {\n /**\n * Accessibility aria-label\n */\n ariaLabel?: string;\n\n /**\n * Accessibility aria-labelledBy\n */\n ariaLabelledBy?: string;\n\n /**\n * Accessibility aria-describedBy\n */\n ariaDescribedBy?: string;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VSChartDataPoint {\n /**\n * data the datapoint in the chart\n */\n data: number;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface VerticalStackedChartProps {\n /**\n * data for the points in the chart\n */\n chartData: VSChartDataPoint[];\n\n /**\n * Data for x axis label for multistacked Vertical bar chart\n */\n xAxisPoint: number | string | Date;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given, legend will take\n */\n xAxisCalloutData?: string;\n /**\n * line data to render lines on stacked bar chart\n */\n lineData?: LineDataInVerticalStackedBarChart[];\n /**\n * Accessibility data for Whole stack callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalStackedBarChart {\n y: number;\n color: string;\n legend: string;\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n /**\n * Data to show in callout\n */\n data?: number;\n yAxisCalloutData?: string;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GVBarChartSeriesPoint {\n /**\n * Text for // need to check use of this\n */\n key: string;\n\n /**\n * Data for bar height of Grouped vertical bar chart\n */\n data: number;\n\n /**\n * Color for the legend in the chart\n */\n color: string;\n\n /**\n * Legend text in the chart\n */\n legend: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GroupedVerticalBarChartData {\n /**\n * Data for X axis label\n */\n name: string;\n\n /**\n * Data points for Grouped vertical bar chart\n */\n series: GVBarChartSeriesPoint[];\n\n /**\n * Accessibility data for Group Bars Stack Callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\nexport interface GVDataPoint {\n /**\n * This interface used for - While forming datapoints from given prop \"data\" in code\n * datapoints are used for to draw graph\n */\n [key: string]: number | string;\n}\n\nexport interface GVSingleDataPoint {\n /**\n * While forming datapoints from given prop \"data\" in code.\n * These datapoints are used for to draw graph easily.\n */\n [key: string]: GVDataPoint;\n}\n\nexport interface GVForBarChart {\n /**\n * While forming datapoints from given prop \"data\"\n * These datapoints are used for to draw graph.\n */\n [key: string]: GVBarChartSeriesPoint;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutDataPoint {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n}\n\n/**\n * Used for custom callout data interface. As Area chart callout data will be prepared from given props.data,\n * Those required data passing to onRenderCalloutPerDataPoint and onRenderCalloutPerStack.\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutData {\n x: number | string | Date;\n values: CustomizedCalloutDataPoint[];\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface Chart {\n chartContainer: HTMLElement | null;\n toImage?: (opts?: ImageExportOptions) => Promise<string>;\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface ImageExportOptions {\n width?: number;\n height?: number;\n scale?: number;\n background?: string;\n}\n\nexport interface HeatMapChartDataPoint {\n x: string | Date | number;\n y: string | Date | number;\n value: number;\n /**\n * The value/ text to be rendered in the rectange\n */\n rectText?: string | number;\n /**\n * denomination to show in the callout\n */\n ratio?: [number, number];\n /**\n * description message to the callout\n */\n descriptionMessage?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HeatMapChartData {\n /**\n * name of the legend\n */\n legend: string;\n data: HeatMapChartDataPoint[];\n /**\n * This number will be used to get the color for the legend\n */\n value: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface SankeyChartData {\n nodes: SNode[];\n links: SLink[];\n}\n\ninterface SNodeExtra {\n /**\n * A unique identifier for this node.\n */\n nodeId: number | string;\n /**\n * The display name for this node in the UX.\n */\n name: string;\n color?: string;\n borderColor?: string;\n actualValue?: number;\n layer?: number;\n}\n\ninterface SLinkExtra {\n /**\n * The index within `ISankeyChartData.nodes` of the source node.\n */\n source: number;\n /**\n * The index within `ISankeyChartData.nodes` of the target node.\n */\n target: number;\n /**\n * The weight of this link between the two nodes.\n */\n value: number;\n unnormalizedValue?: number;\n}\n\nexport type SNode = SankeyNode<SNodeExtra, SLinkExtra>;\nexport type SLink = SankeyLink<SNodeExtra, SLinkExtra>;\n\n/**\n * Specifies the ordering options for axis categories in Cartesian charts.\n *\n * - `'default'`: Uses the original order before custom ordering was supported.\n * In some charts, this behaves the same as `'data'`.\n * - `'data'`: Preserves the order of categories as provided in the input data.\n * - `string[]`: Explicitly defines the custom order of categories as an array of category names.\n * - `'category ascending' | 'category descending'`: Orders categories alphanumerically.\n * - `'total ascending' | 'total descending'`: Orders categories by the total of their associated values.\n * - `'min ascending' | 'min descending'`: Orders by the minimum value within each category.\n * - `'max ascending' | 'max descending'`: Orders by the maximum value within each category.\n * - `'sum ascending' | 'sum descending'`: Orders by the sum of values for each category (same as 'total').\n * - `'mean ascending' | 'mean descending'`: Orders by the average of values in each category.\n * - `'median ascending' | 'median descending'`: Orders by the median value of each category.\n *\n * {@docCategory CartesianChart}\n */\nexport type AxisCategoryOrder =\n | 'default'\n | 'data'\n | string[]\n | 'category ascending'\n | 'category descending'\n | 'total ascending'\n | 'total descending'\n | 'min ascending'\n | 'min descending'\n | 'max ascending'\n | 'max descending'\n | 'sum ascending'\n | 'sum descending'\n | 'mean ascending'\n | 'mean descending'\n | 'median ascending'\n | 'median descending';\n\n/**\n * {@docCategory IChartData}\n */\nexport interface GanttChartDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: {\n start: Date | number;\n end: Date | number;\n };\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Gradient for the legend in the chart. If not provided, it will fallback on the default color palette.\n * If provided, it will override the color prop. granted `enableGradient` is set to true for the chart.\n */\n gradient?: [string, string];\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n"],"names":[],"mappings":"AA+3BA;;CAEC,GACD,WAqDC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluentui/react-charts",
|
|
3
|
-
"version": "9.2.
|
|
3
|
+
"version": "9.2.1",
|
|
4
4
|
"description": "React web chart controls for Microsoft fluentui v9 system.",
|
|
5
5
|
"main": "lib-commonjs/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@fluentui/chart-utilities": "^1.1.26",
|
|
31
|
-
"@fluentui/react-button": "^9.6.
|
|
31
|
+
"@fluentui/react-button": "^9.6.3",
|
|
32
32
|
"@fluentui/react-jsx-runtime": "^9.1.4",
|
|
33
|
-
"@fluentui/react-overflow": "^9.5.
|
|
34
|
-
"@fluentui/react-popover": "^9.12.
|
|
33
|
+
"@fluentui/react-overflow": "^9.5.3",
|
|
34
|
+
"@fluentui/react-popover": "^9.12.3",
|
|
35
35
|
"@fluentui/react-shared-contexts": "^9.24.1",
|
|
36
36
|
"@fluentui/react-tabster": "^9.26.2",
|
|
37
37
|
"@fluentui/react-theme": "^9.2.0",
|