@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
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
# Change Log - @fluentui/react-charts
|
|
2
2
|
|
|
3
|
-
This log was last generated on Wed, 30 Jul 2025
|
|
3
|
+
This log was last generated on Wed, 30 Jul 2025 16:53:06 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## [9.2.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.2.1)
|
|
8
|
+
|
|
9
|
+
Wed, 30 Jul 2025 16:53:06 GMT
|
|
10
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.2.0..@fluentui/react-charts_v9.2.1)
|
|
11
|
+
|
|
12
|
+
### Patches
|
|
13
|
+
|
|
14
|
+
- make legends of dotted lines dotted ([PR #34947](https://github.com/microsoft/fluentui/pull/34947) by anushgupta@microsoft.com)
|
|
15
|
+
- support hidelegend property from plotly schema ([PR #34946](https://github.com/microsoft/fluentui/pull/34946) by anushgupta@microsoft.com)
|
|
16
|
+
- Bump @fluentui/react-button to v9.6.3 ([PR #34945](https://github.com/microsoft/fluentui/pull/34945) by beachball)
|
|
17
|
+
- Bump @fluentui/react-overflow to v9.5.3 ([PR #34945](https://github.com/microsoft/fluentui/pull/34945) by beachball)
|
|
18
|
+
- Bump @fluentui/react-popover to v9.12.3 ([PR #34945](https://github.com/microsoft/fluentui/pull/34945) by beachball)
|
|
19
|
+
|
|
7
20
|
## [9.2.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.2.0)
|
|
8
21
|
|
|
9
|
-
Wed, 30 Jul 2025
|
|
22
|
+
Wed, 30 Jul 2025 13:10:55 GMT
|
|
10
23
|
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.1.10..@fluentui/react-charts_v9.2.0)
|
|
11
24
|
|
|
12
25
|
### Minor changes
|
|
@@ -24,11 +37,11 @@ Wed, 30 Jul 2025 08:41:04 GMT
|
|
|
24
37
|
|
|
25
38
|
### Patches
|
|
26
39
|
|
|
40
|
+
- GVBC FIX ([PR #34932](https://github.com/microsoft/fluentui/pull/34932) by anushgupta@microsoft.com)
|
|
27
41
|
- Adding a variation of horizontal stacked bar chart with inline legends that accept optiona annotation JSX from client to be displayed next the legend items. Also an option to hide the hover callout card. ([PR #34895](https://github.com/microsoft/fluentui/pull/34895) by aknowles@microsoft.com)
|
|
28
42
|
- support image export in v9 charts ([PR #34929](https://github.com/microsoft/fluentui/pull/34929) by anushgupta@microsoft.com)
|
|
29
43
|
- add histogram mode to vbc ([PR #34930](https://github.com/microsoft/fluentui/pull/34930) by anushgupta@microsoft.com)
|
|
30
44
|
- add support for scatter polar trace type ([PR #34933](https://github.com/microsoft/fluentui/pull/34933) by anushgupta@microsoft.com)
|
|
31
|
-
- GVBC FIX ([PR #34932](https://github.com/microsoft/fluentui/pull/34932) by anushgupta@microsoft.com)
|
|
32
45
|
|
|
33
46
|
## [9.1.10](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.1.10)
|
|
34
47
|
|
package/dist/index.d.ts
CHANGED
|
@@ -2750,6 +2750,11 @@ export declare interface LineDataInVerticalStackedBarChart {
|
|
|
2750
2750
|
y: number;
|
|
2751
2751
|
color: string;
|
|
2752
2752
|
legend: string;
|
|
2753
|
+
/**
|
|
2754
|
+
* The shape for the legend
|
|
2755
|
+
* default: show the rect legend
|
|
2756
|
+
*/
|
|
2757
|
+
legendShape?: LegendShape;
|
|
2753
2758
|
/**
|
|
2754
2759
|
* Data to show in callout
|
|
2755
2760
|
*/
|
|
@@ -43,9 +43,6 @@ const dashOptions = {
|
|
|
43
43
|
lineBorderWidth: '4'
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
const getLegend = (series, index)=>{
|
|
47
|
-
return series.name || `Series ${index + 1}`;
|
|
48
|
-
};
|
|
49
46
|
function getTitles(layout) {
|
|
50
47
|
var _layout_title, _layout_xaxis, _layout_xaxis1, _layout_xaxis_title, _layout_xaxis2, _layout_yaxis, _layout_yaxis1, _layout_yaxis_title, _layout_yaxis2;
|
|
51
48
|
var _layout_title_text, _layout_xaxis_title_text, _layout_yaxis_title_text;
|
|
@@ -181,6 +178,7 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
|
|
|
181
178
|
const mapXToDataPoints = {};
|
|
182
179
|
let yMaxValue = 0;
|
|
183
180
|
const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);
|
|
181
|
+
const { legends, hideLegend } = getLegendProps(input.data, input.layout);
|
|
184
182
|
let yMinValue = 0;
|
|
185
183
|
input.data.forEach((series, index1)=>{
|
|
186
184
|
var _series_x;
|
|
@@ -194,7 +192,7 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
|
|
|
194
192
|
lineData: []
|
|
195
193
|
};
|
|
196
194
|
}
|
|
197
|
-
const legend =
|
|
195
|
+
const legend = legends[index1];
|
|
198
196
|
var _series_y_index2;
|
|
199
197
|
const yVal = (_series_y_index2 = (_series_y = series.y) === null || _series_y === void 0 ? void 0 : _series_y[index2]) !== null && _series_y_index2 !== void 0 ? _series_y_index2 : 0;
|
|
200
198
|
if (series.type === 'bar') {
|
|
@@ -206,10 +204,14 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
|
|
|
206
204
|
});
|
|
207
205
|
yMaxValue = Math.max(yMaxValue, yVal);
|
|
208
206
|
} else if (series.type === 'scatter' || !!fallbackVSBC) {
|
|
207
|
+
var _series_line;
|
|
209
208
|
const color = getColor(legend, colorMap, isDarkTheme);
|
|
210
209
|
const lineOptions = getLineOptions(series.line);
|
|
210
|
+
const dashType = ((_series_line = series.line) === null || _series_line === void 0 ? void 0 : _series_line.dash) || 'solid';
|
|
211
|
+
const legendShape = dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot' ? 'dottedLine' : 'default';
|
|
211
212
|
mapXToDataPoints[x].lineData.push({
|
|
212
213
|
legend,
|
|
214
|
+
legendShape,
|
|
213
215
|
y: yVal,
|
|
214
216
|
color,
|
|
215
217
|
...lineOptions ? {
|
|
@@ -240,13 +242,15 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
|
|
|
240
242
|
mode: 'plotly',
|
|
241
243
|
...secondaryYAxisValues,
|
|
242
244
|
hideTickOverlap: true,
|
|
243
|
-
barGapMax: 2
|
|
245
|
+
barGapMax: 2,
|
|
246
|
+
hideLegend
|
|
244
247
|
};
|
|
245
248
|
};
|
|
246
249
|
export const transformPlotlyJsonToGVBCProps = (input, colorMap, isDarkTheme)=>{
|
|
247
250
|
var _input_layout, _input_layout1;
|
|
248
251
|
const mapXToDataPoints = {};
|
|
249
252
|
const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);
|
|
253
|
+
const { legends, hideLegend } = getLegendProps(input.data, input.layout);
|
|
250
254
|
input.data.forEach((series, index1)=>{
|
|
251
255
|
var _series_x;
|
|
252
256
|
(_series_x = series.x) === null || _series_x === void 0 ? void 0 : _series_x.forEach((x, index2)=>{
|
|
@@ -258,7 +262,7 @@ export const transformPlotlyJsonToGVBCProps = (input, colorMap, isDarkTheme)=>{
|
|
|
258
262
|
}
|
|
259
263
|
if (series.type === 'bar') {
|
|
260
264
|
var _series_y;
|
|
261
|
-
const legend =
|
|
265
|
+
const legend = legends[index1];
|
|
262
266
|
const color = getColor(legend, colorMap, isDarkTheme);
|
|
263
267
|
var _series_y_index2;
|
|
264
268
|
mapXToDataPoints[x].series.push({
|
|
@@ -284,12 +288,14 @@ export const transformPlotlyJsonToGVBCProps = (input, colorMap, isDarkTheme)=>{
|
|
|
284
288
|
yAxisTitle,
|
|
285
289
|
mode: 'plotly',
|
|
286
290
|
...secondaryYAxisValues,
|
|
287
|
-
hideTickOverlap: true
|
|
291
|
+
hideTickOverlap: true,
|
|
292
|
+
hideLegend
|
|
288
293
|
};
|
|
289
294
|
};
|
|
290
295
|
export const transformPlotlyJsonToVBCProps = (input, colorMap, isDarkTheme)=>{
|
|
291
296
|
var _input_layout, _input_layout1;
|
|
292
297
|
const vbcData = [];
|
|
298
|
+
const { legends, hideLegend } = getLegendProps(input.data, input.layout);
|
|
293
299
|
input.data.forEach((series, seriesIdx)=>{
|
|
294
300
|
var _series_xbins, _series_xbins1, _series_xbins2;
|
|
295
301
|
if (!series.x) {
|
|
@@ -315,7 +321,7 @@ export const transformPlotlyJsonToVBCProps = (input, colorMap, isDarkTheme)=>{
|
|
|
315
321
|
return yVal;
|
|
316
322
|
});
|
|
317
323
|
xBins.forEach((bin, index)=>{
|
|
318
|
-
const legend =
|
|
324
|
+
const legend = legends[seriesIdx];
|
|
319
325
|
const color = getColor(legend, colorMap, isDarkTheme);
|
|
320
326
|
const yVal = calculateHistNorm(series.histnorm, y[index], total, isXString ? bin.length : getBinSize(bin));
|
|
321
327
|
vbcData.push({
|
|
@@ -340,23 +346,29 @@ export const transformPlotlyJsonToVBCProps = (input, colorMap, isDarkTheme)=>{
|
|
|
340
346
|
yAxisTitle,
|
|
341
347
|
mode: 'histogram',
|
|
342
348
|
hideTickOverlap: true,
|
|
343
|
-
maxBarWidth: 50
|
|
349
|
+
maxBarWidth: 50,
|
|
350
|
+
hideLegend
|
|
344
351
|
};
|
|
345
352
|
};
|
|
346
353
|
export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, colorMap, isDarkTheme)=>{
|
|
347
354
|
const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, isAreaChart ? 0 : undefined, isAreaChart ? 0 : undefined);
|
|
348
355
|
let mode = 'tonexty';
|
|
356
|
+
const { legends, hideLegend } = getLegendProps(input.data, input.layout);
|
|
349
357
|
const chartData = input.data.map((series, index)=>{
|
|
358
|
+
var _series_line;
|
|
350
359
|
const xValues = series.x;
|
|
351
360
|
const isString = typeof xValues[0] === 'string';
|
|
352
361
|
const isXDate = isDateArray(xValues);
|
|
353
362
|
const isXNumber = isNumberArray(xValues);
|
|
354
|
-
const legend =
|
|
363
|
+
const legend = legends[index];
|
|
355
364
|
const lineColor = getColor(legend, colorMap, isDarkTheme);
|
|
356
365
|
mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';
|
|
357
366
|
const lineOptions = getLineOptions(series.line);
|
|
367
|
+
const dashType = ((_series_line = series.line) === null || _series_line === void 0 ? void 0 : _series_line.dash) || 'solid';
|
|
368
|
+
const legendShape = dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot' ? 'dottedLine' : 'default';
|
|
358
369
|
return {
|
|
359
370
|
legend,
|
|
371
|
+
legendShape,
|
|
360
372
|
data: xValues.map((x, i)=>{
|
|
361
373
|
var _series_marker, _series_marker1;
|
|
362
374
|
return {
|
|
@@ -395,7 +407,8 @@ export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, color
|
|
|
395
407
|
width: (_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : _input_layout.width,
|
|
396
408
|
height: (_input_layout_height = (_input_layout1 = input.layout) === null || _input_layout1 === void 0 ? void 0 : _input_layout1.height) !== null && _input_layout_height !== void 0 ? _input_layout_height : 350,
|
|
397
409
|
hideTickOverlap: true,
|
|
398
|
-
useUTC: false
|
|
410
|
+
useUTC: false,
|
|
411
|
+
hideLegend
|
|
399
412
|
};
|
|
400
413
|
} else {
|
|
401
414
|
var _input_layout2, _input_layout3;
|
|
@@ -412,21 +425,22 @@ export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, color
|
|
|
412
425
|
width: (_input_layout2 = input.layout) === null || _input_layout2 === void 0 ? void 0 : _input_layout2.width,
|
|
413
426
|
height: (_input_layout_height1 = (_input_layout3 = input.layout) === null || _input_layout3 === void 0 ? void 0 : _input_layout3.height) !== null && _input_layout_height1 !== void 0 ? _input_layout_height1 : 350,
|
|
414
427
|
hideTickOverlap: true,
|
|
415
|
-
useUTC: false
|
|
428
|
+
useUTC: false,
|
|
429
|
+
hideLegend
|
|
416
430
|
};
|
|
417
431
|
}
|
|
418
432
|
};
|
|
419
433
|
export const transformPlotlyJsonToHorizontalBarWithAxisProps = (input, colorMap, isDarkTheme)=>{
|
|
420
434
|
var _input_layout, _input_layout_margin, _input_layout1, _input_layout_margin1, _input_layout2, _input_layout_yaxis2, _input_layout3, _input_layout_yaxis21, _input_layout4, _input_layout_yaxis2_title, _input_layout_yaxis22, _input_layout5, _input_layout6;
|
|
435
|
+
const { legends, hideLegend } = getLegendProps(input.data, input.layout);
|
|
421
436
|
const chartData = input.data.map((series, index)=>{
|
|
437
|
+
const legend = legends[index];
|
|
438
|
+
const color = getColor(legend, colorMap, isDarkTheme);
|
|
422
439
|
return series.y.map((yValue, i)=>{
|
|
423
|
-
var _series_name;
|
|
424
|
-
const legendName = (_series_name = series.name) !== null && _series_name !== void 0 ? _series_name : yValue;
|
|
425
|
-
const color = getColor(legendName, colorMap, isDarkTheme);
|
|
426
440
|
return {
|
|
427
441
|
x: series.x[i],
|
|
428
442
|
y: yValue,
|
|
429
|
-
legend
|
|
443
|
+
legend,
|
|
430
444
|
color
|
|
431
445
|
};
|
|
432
446
|
});
|
|
@@ -456,7 +470,8 @@ export const transformPlotlyJsonToHorizontalBarWithAxisProps = (input, colorMap,
|
|
|
456
470
|
width: (_input_layout6 = input.layout) === null || _input_layout6 === void 0 ? void 0 : _input_layout6.width,
|
|
457
471
|
hideTickOverlap: true,
|
|
458
472
|
noOfCharsToTruncate: 20,
|
|
459
|
-
showYAxisLablesTooltip: true
|
|
473
|
+
showYAxisLablesTooltip: true,
|
|
474
|
+
hideLegend
|
|
460
475
|
};
|
|
461
476
|
};
|
|
462
477
|
export const transformPlotlyJsonToHeatmapProps = (input)=>{
|
|
@@ -854,3 +869,18 @@ const precisionRound = (value, precision)=>{
|
|
|
854
869
|
const factor = Math.pow(10, precision);
|
|
855
870
|
return Math.round(value * factor) / factor;
|
|
856
871
|
};
|
|
872
|
+
const getLegendProps = (data, layout)=>{
|
|
873
|
+
const legends = [];
|
|
874
|
+
if (data.length === 1) {
|
|
875
|
+
legends.push(data[0].name || '');
|
|
876
|
+
} else {
|
|
877
|
+
data.forEach((series, index)=>{
|
|
878
|
+
legends.push(series.name || `Series ${index + 1}`);
|
|
879
|
+
});
|
|
880
|
+
}
|
|
881
|
+
const hideLegends = data.every((series)=>series.showlegend === false);
|
|
882
|
+
return {
|
|
883
|
+
legends,
|
|
884
|
+
hideLegend: (layout === null || layout === void 0 ? void 0 : layout.showlegend) === false ? true : hideLegends
|
|
885
|
+
};
|
|
886
|
+
};
|
|
@@ -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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"}
|