@fluentui/react-charts 9.1.2 → 9.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +34 -2
  2. package/dist/index.d.ts +36 -1
  3. package/lib/components/AreaChart/AreaChart.js +18 -8
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +20 -15
  6. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  8. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +57 -43
  9. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  10. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +4 -2
  11. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  12. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +44 -18
  13. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  14. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  15. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +3 -2
  16. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  17. package/lib/components/HeatMapChart/HeatMapChart.js +1 -1
  18. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  19. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +181 -38
  20. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  21. package/lib/components/LineChart/LineChart.js +40 -36
  22. package/lib/components/LineChart/LineChart.js.map +1 -1
  23. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +8 -8
  24. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  25. package/lib/components/ScatterChart/ScatterChart.js +1 -1
  26. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  27. package/lib/components/VerticalBarChart/VerticalBarChart.js +4 -4
  28. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  29. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +61 -23
  30. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  31. package/lib/types/DataPoint.js.map +1 -1
  32. package/lib/utilities/utilities.js +77 -46
  33. package/lib/utilities/utilities.js.map +1 -1
  34. package/lib-commonjs/components/AreaChart/AreaChart.js +16 -7
  35. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  36. package/lib-commonjs/components/CommonComponents/CartesianChart.js +19 -15
  37. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  38. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  39. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +57 -43
  40. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  41. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +4 -2
  42. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  43. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +43 -17
  44. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  45. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  46. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +4 -2
  47. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  48. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -1
  49. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  50. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +175 -36
  51. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  52. package/lib-commonjs/components/LineChart/LineChart.js +40 -36
  53. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  54. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +7 -7
  55. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  56. package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -1
  57. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  58. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +4 -4
  59. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  60. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +60 -22
  61. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  62. package/lib-commonjs/types/DataPoint.js.map +1 -1
  63. package/lib-commonjs/utilities/utilities.js +76 -46
  64. package/lib-commonjs/utilities/utilities.js.map +1 -1
  65. package/package.json +8 -8
@@ -89,29 +89,44 @@ export const getColor = (legendLabel, colorMap, isDarkTheme)=>{
89
89
  }
90
90
  return colorMap.current.get(legendLabel);
91
91
  };
92
- const getSecondaryYAxisValues = (series, layout)=>{
93
- const secondaryYAxisValues = {};
94
- if (layout && layout.yaxis2 && series.yaxis === 'y2') {
95
- var _layout_yaxis2_title;
96
- secondaryYAxisValues.secondaryYAxistitle = typeof layout.yaxis2.title === 'string' ? layout.yaxis2.title : typeof ((_layout_yaxis2_title = layout.yaxis2.title) === null || _layout_yaxis2_title === void 0 ? void 0 : _layout_yaxis2_title.text) === 'string' ? layout.yaxis2.title.text : '';
97
- if (layout.yaxis2.range) {
98
- secondaryYAxisValues.secondaryYScaleOptions = {
99
- yMinValue: layout.yaxis2.range[0],
100
- yMaxValue: layout.yaxis2.range[1]
101
- };
102
- } else {
92
+ const usesSecondaryYScale = (series)=>{
93
+ return series.yaxis === 'y2';
94
+ };
95
+ const getSecondaryYAxisValues = (data, layout, maxAllowedMinY, minAllowedMaxY)=>{
96
+ var _layout_yaxis2, _layout_yaxis21, _layout_yaxis2_title, _layout_yaxis22;
97
+ let containsSecondaryYAxis = false;
98
+ let yMinValue;
99
+ let yMaxValue;
100
+ data.forEach((series)=>{
101
+ if (usesSecondaryYScale(series)) {
102
+ containsSecondaryYAxis = true;
103
103
  const yValues = series.y;
104
104
  if (yValues) {
105
- secondaryYAxisValues.secondaryYScaleOptions = {
106
- yMinValue: Math.min(...yValues),
107
- yMaxValue: Math.max(...yValues)
108
- };
105
+ yMinValue = Math.min(...yValues);
106
+ yMaxValue = Math.max(...yValues);
109
107
  }
110
108
  }
109
+ });
110
+ if (!containsSecondaryYAxis) {
111
+ return {};
112
+ }
113
+ if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {
114
+ yMinValue = Math.min(yMinValue, maxAllowedMinY);
115
+ }
116
+ if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {
117
+ yMaxValue = Math.max(yMaxValue, minAllowedMaxY);
111
118
  }
112
- secondaryYAxisValues.secondaryYAxistitle = secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;
113
- secondaryYAxisValues.secondaryYScaleOptions = secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0 ? secondaryYAxisValues.secondaryYScaleOptions : undefined;
114
- return secondaryYAxisValues;
119
+ if (layout === null || layout === void 0 ? void 0 : (_layout_yaxis2 = layout.yaxis2) === null || _layout_yaxis2 === void 0 ? void 0 : _layout_yaxis2.range) {
120
+ yMinValue = layout.yaxis2.range[0];
121
+ yMaxValue = layout.yaxis2.range[1];
122
+ }
123
+ return {
124
+ secondaryYAxistitle: typeof (layout === null || layout === void 0 ? void 0 : (_layout_yaxis21 = layout.yaxis2) === null || _layout_yaxis21 === void 0 ? void 0 : _layout_yaxis21.title) === 'string' ? layout.yaxis2.title : typeof (layout === null || layout === void 0 ? void 0 : (_layout_yaxis22 = layout.yaxis2) === null || _layout_yaxis22 === void 0 ? void 0 : (_layout_yaxis2_title = _layout_yaxis22.title) === null || _layout_yaxis2_title === void 0 ? void 0 : _layout_yaxis2_title.text) === 'string' ? layout.yaxis2.title.text : undefined,
125
+ secondaryYScaleOptions: {
126
+ yMinValue,
127
+ yMaxValue
128
+ }
129
+ };
115
130
  };
116
131
  export const transformPlotlyJsonToDonutProps = (input, colorMap, isDarkTheme)=>{
117
132
  var _firstData_labels, _input_layout, _input_layout1, _input_layout2, _input_layout3;
@@ -165,8 +180,8 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
165
180
  var _input_layout, _input_layout1;
166
181
  const mapXToDataPoints = {};
167
182
  let yMaxValue = 0;
183
+ const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);
168
184
  let yMinValue = 0;
169
- let secondaryYAxisValues = {};
170
185
  input.data.forEach((series, index1)=>{
171
186
  var _series_x;
172
187
  const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis
@@ -189,6 +204,7 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
189
204
  data: yVal,
190
205
  color
191
206
  });
207
+ yMaxValue = Math.max(yMaxValue, yVal);
192
208
  } else if (series.type === 'scatter' || !!fallbackVSBC) {
193
209
  const color = getColor(legend, colorMap, isDarkTheme);
194
210
  const lineOptions = getLineOptions(series.line);
@@ -198,13 +214,16 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
198
214
  color,
199
215
  ...lineOptions ? {
200
216
  lineOptions
201
- } : {}
217
+ } : {},
218
+ useSecondaryYScale: usesSecondaryYScale(series)
202
219
  });
220
+ if (!usesSecondaryYScale(series)) {
221
+ yMaxValue = Math.max(yMaxValue, yVal);
222
+ }
203
223
  }
204
224
  yMaxValue = Math.max(yMaxValue, yVal);
205
225
  yMinValue = Math.min(yMinValue, yVal);
206
226
  });
207
- secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);
208
227
  });
209
228
  const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);
210
229
  var _input_layout_height;
@@ -219,15 +238,14 @@ export const transformPlotlyJsonToVSBCProps = (input, colorMap, isDarkTheme, fal
219
238
  xAxisTitle,
220
239
  yAxisTitle,
221
240
  mode: 'plotly',
222
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
223
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
241
+ ...secondaryYAxisValues,
224
242
  hideTickOverlap: true
225
243
  };
226
244
  };
227
245
  export const transformPlotlyJsonToGVBCProps = (input, colorMap, isDarkTheme)=>{
228
246
  var _input_layout, _input_layout1;
229
247
  const mapXToDataPoints = {};
230
- let secondaryYAxisValues = {};
248
+ const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);
231
249
  input.data.forEach((series, index1)=>{
232
250
  var _series_x;
233
251
  (_series_x = series.x) === null || _series_x === void 0 ? void 0 : _series_x.forEach((x, index2)=>{
@@ -247,11 +265,11 @@ export const transformPlotlyJsonToGVBCProps = (input, colorMap, isDarkTheme)=>{
247
265
  data: (_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,
248
266
  xAxisCalloutData: x,
249
267
  color,
250
- legend
268
+ legend,
269
+ useSecondaryYScale: usesSecondaryYScale(series)
251
270
  });
252
271
  }
253
272
  });
254
- secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);
255
273
  });
256
274
  const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);
257
275
  var _input_layout_height;
@@ -264,8 +282,7 @@ export const transformPlotlyJsonToGVBCProps = (input, colorMap, isDarkTheme)=>{
264
282
  xAxisTitle,
265
283
  yAxisTitle,
266
284
  mode: 'plotly',
267
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
268
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
285
+ ...secondaryYAxisValues,
269
286
  hideTickOverlap: true
270
287
  };
271
288
  };
@@ -323,7 +340,7 @@ export const transformPlotlyJsonToVBCProps = (input, colorMap, isDarkTheme)=>{
323
340
  };
324
341
  };
325
342
  export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, colorMap, isDarkTheme)=>{
326
- let secondaryYAxisValues = {};
343
+ const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, isAreaChart ? 0 : undefined, isAreaChart ? 0 : undefined);
327
344
  let mode = 'tonexty';
328
345
  const chartData = input.data.map((series, index)=>{
329
346
  const xValues = series.x;
@@ -332,7 +349,6 @@ export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, color
332
349
  const isXNumber = isNumberArray(xValues);
333
350
  const legend = getLegend(series, index);
334
351
  const lineColor = getColor(legend, colorMap, isDarkTheme);
335
- secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);
336
352
  mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';
337
353
  const lineOptions = getLineOptions(series.line);
338
354
  return {
@@ -352,7 +368,8 @@ export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, color
352
368
  color: lineColor,
353
369
  ...lineOptions ? {
354
370
  lineOptions
355
- } : {}
371
+ } : {},
372
+ useSecondaryYScale: usesSecondaryYScale(series)
356
373
  };
357
374
  });
358
375
  const yMinMaxValues = findNumericMinMaxOfY(chartData);
@@ -369,8 +386,7 @@ export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, color
369
386
  supportNegativeData: true,
370
387
  xAxisTitle,
371
388
  yAxisTitle,
372
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
373
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
389
+ ...secondaryYAxisValues,
374
390
  mode,
375
391
  width: (_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : _input_layout.width,
376
392
  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,
@@ -385,8 +401,7 @@ export const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, color
385
401
  supportNegativeData: true,
386
402
  xAxisTitle,
387
403
  yAxisTitle,
388
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
389
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
404
+ ...secondaryYAxisValues,
390
405
  roundedTicks: true,
391
406
  yMinValue: yMinMaxValues.startValue,
392
407
  yMaxValue: yMinMaxValues.endValue,
@@ -402,11 +417,13 @@ export const transformPlotlyJsonToHorizontalBarWithAxisProps = (input, colorMap,
402
417
  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;
403
418
  const chartData = input.data.map((series, index)=>{
404
419
  return series.y.map((yValue, i)=>{
405
- const color = getColor(yValue, colorMap, isDarkTheme);
420
+ var _series_name;
421
+ const legendName = (_series_name = series.name) !== null && _series_name !== void 0 ? _series_name : yValue;
422
+ const color = getColor(legendName, colorMap, isDarkTheme);
406
423
  return {
407
424
  x: series.x[i],
408
425
  y: yValue,
409
- legend: yValue,
426
+ legend: legendName,
410
427
  color
411
428
  };
412
429
  });
@@ -419,13 +436,10 @@ export const transformPlotlyJsonToHorizontalBarWithAxisProps = (input, colorMap,
419
436
  var _input_layout_margin_pad;
420
437
  const padding = (_input_layout_margin_pad = (_input_layout2 = input.layout) === null || _input_layout2 === void 0 ? void 0 : (_input_layout_margin1 = _input_layout2.margin) === null || _input_layout_margin1 === void 0 ? void 0 : _input_layout_margin1.pad) !== null && _input_layout_margin_pad !== void 0 ? _input_layout_margin_pad : 0;
421
438
  const availableHeight = chartHeight - margin - padding;
422
- const numberOfBars = input.data.reduce((total, item)=>{
423
- var _item_y;
424
- return total + (((_item_y = item.y) === null || _item_y === void 0 ? void 0 : _item_y.length) || 0);
425
- }, 0);
439
+ const numberOfRows = new Set(chartData.map((d)=>d.y)).size || 1;
426
440
  const scalingFactor = 0.01;
427
- const gapFactor = 1 / (1 + scalingFactor * numberOfBars);
428
- const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));
441
+ const gapFactor = 1 / (1 + scalingFactor * numberOfRows);
442
+ const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));
429
443
  const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);
430
444
  return {
431
445
  data: chartData,
@@ -1 +1 @@
1
- {"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n 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 getSecondaryYAxisValues = (series: PlotData, layout: Partial<Layout> | undefined) => {\n const secondaryYAxisValues: SecondaryYAxisValues = {};\n if (layout && layout.yaxis2 && series.yaxis === 'y2') {\n secondaryYAxisValues.secondaryYAxistitle =\n typeof layout.yaxis2.title === 'string'\n ? layout.yaxis2.title\n : typeof layout.yaxis2.title?.text === 'string'\n ? layout.yaxis2.title.text\n : '';\n if (layout.yaxis2.range) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: layout.yaxis2.range[0],\n yMaxValue: layout.yaxis2.range[1],\n };\n } else {\n const yValues = series.y as number[];\n if (yValues) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: Math.min(...yValues),\n yMaxValue: Math.max(...yValues),\n };\n }\n }\n }\n secondaryYAxisValues.secondaryYAxistitle =\n secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;\n secondaryYAxisValues.secondaryYScaleOptions =\n secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0\n ? secondaryYAxisValues.secondaryYScaleOptions\n : undefined;\n return secondaryYAxisValues;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let yMinValue = 0;\n let secondaryYAxisValues: SecondaryYAxisValues = {};\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 } 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 });\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n });\n }\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n let mode: string = 'tonexty';\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n 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 color = getColor(yValue, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: yValue,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfBars = input.data.reduce((total: number, item: PlotData) => {\n return total + (item.y?.length || 0);\n }, 0);\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfBars);\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n // let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n // const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","DataVizPalette","getColorFromToken","getNextColor","findNumericMinMaxOfY","isArrayOfType","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","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","getSecondaryYAxisValues","secondaryYAxisValues","yaxis2","secondaryYAxistitle","secondaryYScaleOptions","yMinValue","yMaxValue","yValues","y","Math","undefined","Object","keys","transformPlotlyJsonToDonutProps","input","firstData","data","mapLegendToDataPoint","labels","forEach","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","transformPlotlyJsonToVSBCProps","fallbackVSBC","mapXToDataPoints","index1","isXYearCategory","x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","barWidth","mode","hideTickOverlap","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","transformPlotlyJsonToScatterChartProps","isAreaChart","isString","isXDate","isXNumber","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","enableReflow","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfBars","reduce","item","scalingFactor","gapFactor","barHeight","showYAxisLables","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","bins","findIndex","binStart","binEnd","binSize","categories","from","Set","ceil","stop","floor","slice","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","th","tolerance","pow","split","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n 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 };\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 const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n 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 enableReflow: false,\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 .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 };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n // let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n // const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","DataVizPalette","getColorFromToken","getNextColor","findNumericMinMaxOfY","isArrayOfType","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","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","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","transformPlotlyJsonToScatterChartProps","isAreaChart","isString","isXDate","isXNumber","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","enableReflow","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","legendName","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","showYAxisLables","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","slice","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","th","tolerance","pow","split","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -54,7 +54,8 @@ const useStyles = /*#__PURE__*/__styles({
54
54
  Be2twd7: "fy9rknc",
55
55
  Bhrd7zp: "fl43uef",
56
56
  Bg96gwp: "fwrc4pm",
57
- Bkfmm31: "fhuob2q"
57
+ Bkfmm31: "fhuob2q",
58
+ Bvjb7m6: "fhv2zbx"
58
59
  },
59
60
  needle: {
60
61
  Bkfmm31: "fhuob2q",
@@ -65,7 +66,8 @@ const useStyles = /*#__PURE__*/__styles({
65
66
  Be2twd7: "fy9rknc",
66
67
  Bhrd7zp: "figsok6",
67
68
  Bg96gwp: "fwrc4pm",
68
- Bkfmm31: "fhuob2q"
69
+ Bkfmm31: "fhuob2q",
70
+ Bvjb7m6: "fhv2zbx"
69
71
  },
70
72
  segment: {
71
73
  Bw0xxkn: 0,