@fluentui/react-charting 5.23.76 → 5.23.78

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 (104) hide show
  1. package/CHANGELOG.json +55 -1
  2. package/CHANGELOG.md +24 -2
  3. package/dist/react-charting.d.ts +12 -2
  4. package/dist/react-charting.js +1 -1
  5. package/dist/react-charting.min.js +1 -1
  6. package/etc/react-charting.api.md +4 -2
  7. package/lib/components/AreaChart/AreaChart.base.d.ts +2 -0
  8. package/lib/components/AreaChart/AreaChart.base.js +20 -6
  9. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  10. package/lib/components/CommonComponents/CartesianChart.base.js +18 -14
  11. package/lib/components/CommonComponents/CartesianChart.base.js.map +1 -1
  12. package/lib/components/CommonComponents/CartesianChart.types.d.ts +2 -2
  13. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  14. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +52 -92
  15. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  16. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +0 -1
  17. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +23 -14
  18. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  19. package/lib/components/HeatMapChart/HeatMapChart.base.js +1 -1
  20. package/lib/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  21. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +3 -1
  22. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +89 -26
  23. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  24. package/lib/components/LineChart/LineChart.base.d.ts +4 -3
  25. package/lib/components/LineChart/LineChart.base.js +50 -37
  26. package/lib/components/LineChart/LineChart.base.js.map +1 -1
  27. package/lib/components/LineChart/eventAnnotation/LabelLink.js +1 -1
  28. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  29. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +4 -4
  30. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  31. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +3 -0
  32. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +55 -18
  33. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  34. package/lib/types/IDataPoint.d.ts +10 -0
  35. package/lib/types/IDataPoint.js.map +1 -1
  36. package/lib/utilities/utilities.d.ts +8 -5
  37. package/lib/utilities/utilities.js +35 -43
  38. package/lib/utilities/utilities.js.map +1 -1
  39. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +2 -0
  40. package/lib-amd/components/AreaChart/AreaChart.base.js +20 -6
  41. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  42. package/lib-amd/components/CommonComponents/CartesianChart.base.js +18 -14
  43. package/lib-amd/components/CommonComponents/CartesianChart.base.js.map +1 -1
  44. package/lib-amd/components/CommonComponents/CartesianChart.types.d.ts +2 -2
  45. package/lib-amd/components/CommonComponents/CartesianChart.types.js.map +1 -1
  46. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +52 -92
  47. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  48. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +0 -1
  49. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +21 -12
  50. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  51. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js +1 -1
  52. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  53. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +3 -1
  54. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +88 -25
  55. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  56. package/lib-amd/components/LineChart/LineChart.base.d.ts +4 -3
  57. package/lib-amd/components/LineChart/LineChart.base.js +50 -37
  58. package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
  59. package/lib-amd/components/LineChart/eventAnnotation/LabelLink.js +1 -1
  60. package/lib-amd/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  61. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +4 -4
  62. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  63. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +3 -0
  64. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +55 -18
  65. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  66. package/lib-amd/types/IDataPoint.d.ts +10 -0
  67. package/lib-amd/types/IDataPoint.js.map +1 -1
  68. package/lib-amd/utilities/utilities.d.ts +8 -5
  69. package/lib-amd/utilities/utilities.js +37 -45
  70. package/lib-amd/utilities/utilities.js.map +1 -1
  71. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +2 -0
  72. package/lib-commonjs/components/AreaChart/AreaChart.base.js +20 -6
  73. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  74. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js +18 -14
  75. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js.map +1 -1
  76. package/lib-commonjs/components/CommonComponents/CartesianChart.types.d.ts +2 -2
  77. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  78. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +52 -92
  79. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  80. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +0 -1
  81. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +21 -12
  82. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  83. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js +1 -1
  84. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  85. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +3 -1
  86. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +88 -25
  87. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  88. package/lib-commonjs/components/LineChart/LineChart.base.d.ts +4 -3
  89. package/lib-commonjs/components/LineChart/LineChart.base.js +50 -37
  90. package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
  91. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +1 -1
  92. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  93. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +4 -4
  94. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  95. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +3 -0
  96. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +55 -18
  97. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  98. package/lib-commonjs/types/IDataPoint.d.ts +10 -0
  99. package/lib-commonjs/types/IDataPoint.js.map +1 -1
  100. package/lib-commonjs/utilities/utilities.d.ts +8 -5
  101. package/lib-commonjs/utilities/utilities.js +37 -45
  102. package/lib-commonjs/utilities/utilities.js.map +1 -1
  103. package/package.json +4 -4
  104. package/src/components/CommonComponents/CartesianChart.types.ts +2 -1
@@ -105,39 +105,48 @@ var getColor = function (legendLabel, colorMap, isDarkTheme) {
105
105
  return colorMap.current.get(legendLabel);
106
106
  };
107
107
  exports.getColor = getColor;
108
- var getSecondaryYAxisValues = function (series, layout) {
109
- var _a;
110
- var secondaryYAxisValues = {};
111
- if (layout && layout.yaxis2 && series.yaxis === 'y2') {
112
- secondaryYAxisValues.secondaryYAxistitle =
113
- typeof layout.yaxis2.title === 'string'
114
- ? layout.yaxis2.title
115
- : typeof ((_a = layout.yaxis2.title) === null || _a === void 0 ? void 0 : _a.text) === 'string'
116
- ? layout.yaxis2.title.text
117
- : '';
118
- if (layout.yaxis2.range) {
119
- secondaryYAxisValues.secondaryYScaleOptions = {
120
- yMinValue: layout.yaxis2.range[0],
121
- yMaxValue: layout.yaxis2.range[1],
122
- };
123
- }
124
- else {
108
+ var usesSecondaryYScale = function (series) {
109
+ return series.yaxis === 'y2';
110
+ };
111
+ var getSecondaryYAxisValues = function (data, layout, maxAllowedMinY, minAllowedMaxY) {
112
+ var _a, _b, _c, _d;
113
+ var containsSecondaryYAxis = false;
114
+ var yMinValue;
115
+ var yMaxValue;
116
+ data.forEach(function (series) {
117
+ if (usesSecondaryYScale(series)) {
118
+ containsSecondaryYAxis = true;
125
119
  var yValues = series.y;
126
120
  if (yValues) {
127
- secondaryYAxisValues.secondaryYScaleOptions = {
128
- yMinValue: Math.min.apply(Math, yValues),
129
- yMaxValue: Math.max.apply(Math, yValues),
130
- };
121
+ yMinValue = Math.min.apply(Math, yValues);
122
+ yMaxValue = Math.max.apply(Math, yValues);
131
123
  }
132
124
  }
125
+ });
126
+ if (!containsSecondaryYAxis) {
127
+ return {};
128
+ }
129
+ if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {
130
+ yMinValue = Math.min(yMinValue, maxAllowedMinY);
131
+ }
132
+ if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {
133
+ yMaxValue = Math.max(yMaxValue, minAllowedMaxY);
133
134
  }
134
- secondaryYAxisValues.secondaryYAxistitle =
135
- secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;
136
- secondaryYAxisValues.secondaryYScaleOptions =
137
- secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0
138
- ? secondaryYAxisValues.secondaryYScaleOptions
139
- : undefined;
140
- return secondaryYAxisValues;
135
+ if ((_a = layout === null || layout === void 0 ? void 0 : layout.yaxis2) === null || _a === void 0 ? void 0 : _a.range) {
136
+ yMinValue = layout.yaxis2.range[0];
137
+ yMaxValue = layout.yaxis2.range[1];
138
+ }
139
+ return {
140
+ secondaryYAxistitle: typeof ((_b = layout === null || layout === void 0 ? void 0 : layout.yaxis2) === null || _b === void 0 ? void 0 : _b.title) === 'string'
141
+ ? layout.yaxis2.title
142
+ : typeof ((_d = (_c = layout === null || layout === void 0 ? void 0 : layout.yaxis2) === null || _c === void 0 ? void 0 : _c.title) === null || _d === void 0 ? void 0 : _d.text) === 'string'
143
+ ? layout.yaxis2.title.text
144
+ : undefined,
145
+ secondaryYScaleOptions: {
146
+ yMinValue: yMinValue,
147
+ yMaxValue: yMaxValue,
148
+ },
149
+ };
141
150
  };
142
151
  var transformPlotlyJsonToDonutProps = function (input, colorMap, isDarkTheme) {
143
152
  var _a, _b, _c, _d, _e, _f, _g;
@@ -188,7 +197,7 @@ var transformPlotlyJsonToVSBCProps = function (input, colorMap, isDarkTheme, fal
188
197
  var _a, _b, _c;
189
198
  var mapXToDataPoints = {};
190
199
  var yMaxValue = 0;
191
- var secondaryYAxisValues = {};
200
+ var secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);
192
201
  input.data.forEach(function (series, index1) {
193
202
  var _a;
194
203
  (_a = series.x) === null || _a === void 0 ? void 0 : _a.forEach(function (x, index2) {
@@ -205,37 +214,26 @@ var transformPlotlyJsonToVSBCProps = function (input, colorMap, isDarkTheme, fal
205
214
  data: yVal,
206
215
  color: color,
207
216
  });
217
+ yMaxValue = Math.max(yMaxValue, yVal);
208
218
  }
209
219
  else if (series.type === 'scatter' || (0, chart_utilities_1.isLineData)(series) || !!fallbackVSBC) {
210
220
  var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
211
221
  var lineOptions = getLineOptions(series.line);
212
- mapXToDataPoints[x].lineData.push(tslib_1.__assign({ legend: legend, y: yVal, color: color }, (lineOptions ? { lineOptions: lineOptions } : {})));
222
+ mapXToDataPoints[x].lineData.push(tslib_1.__assign(tslib_1.__assign({ legend: legend, y: yVal, color: color }, (lineOptions ? { lineOptions: lineOptions } : {})), { useSecondaryYScale: usesSecondaryYScale(series) }));
223
+ if (!usesSecondaryYScale(series)) {
224
+ yMaxValue = Math.max(yMaxValue, yVal);
225
+ }
213
226
  }
214
- yMaxValue = Math.max(yMaxValue, yVal);
215
227
  });
216
- secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);
217
228
  });
218
229
  var _d = getTitles(input.layout), chartTitle = _d.chartTitle, xAxisTitle = _d.xAxisTitle, yAxisTitle = _d.yAxisTitle;
219
- return {
220
- data: Object.values(mapXToDataPoints),
221
- width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width,
222
- height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350,
223
- barWidth: 'auto',
224
- yMaxValue: yMaxValue,
225
- chartTitle: chartTitle,
226
- xAxisTitle: xAxisTitle,
227
- yAxisTitle: yAxisTitle,
228
- mode: 'plotly',
229
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
230
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
231
- hideTickOverlap: true,
232
- };
230
+ return tslib_1.__assign(tslib_1.__assign({ data: Object.values(mapXToDataPoints), width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, barWidth: 'auto', yMaxValue: yMaxValue, chartTitle: chartTitle, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle, mode: 'plotly' }, secondaryYAxisValues), { hideTickOverlap: true });
233
231
  };
234
232
  exports.transformPlotlyJsonToVSBCProps = transformPlotlyJsonToVSBCProps;
235
233
  var transformPlotlyJsonToGVBCProps = function (input, colorMap, isDarkTheme) {
236
234
  var _a, _b, _c;
237
235
  var mapXToDataPoints = {};
238
- var secondaryYAxisValues = {};
236
+ var secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);
239
237
  input.data.forEach(function (series, index1) {
240
238
  var _a;
241
239
  (_a = series.x) === null || _a === void 0 ? void 0 : _a.forEach(function (x, xIndex) {
@@ -264,26 +262,14 @@ var transformPlotlyJsonToGVBCProps = function (input, colorMap, isDarkTheme) {
264
262
  xAxisCalloutData: x,
265
263
  color: color,
266
264
  legend: legend_1,
265
+ useSecondaryYScale: usesSecondaryYScale(series),
267
266
  });
268
267
  }
269
268
  }
270
269
  });
271
- secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);
272
270
  });
273
271
  var _d = getTitles(input.layout), chartTitle = _d.chartTitle, xAxisTitle = _d.xAxisTitle, yAxisTitle = _d.yAxisTitle;
274
- return {
275
- data: Object.values(mapXToDataPoints),
276
- width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width,
277
- height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350,
278
- barwidth: 'auto',
279
- chartTitle: chartTitle,
280
- xAxisTitle: xAxisTitle,
281
- yAxisTitle: yAxisTitle,
282
- mode: 'plotly',
283
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
284
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
285
- hideTickOverlap: true,
286
- };
272
+ return tslib_1.__assign(tslib_1.__assign({ data: Object.values(mapXToDataPoints), width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, barwidth: 'auto', chartTitle: chartTitle, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle, mode: 'plotly' }, secondaryYAxisValues), { hideTickOverlap: true });
287
273
  };
288
274
  exports.transformPlotlyJsonToGVBCProps = transformPlotlyJsonToGVBCProps;
289
275
  var transformPlotlyJsonToVBCProps = function (input, colorMap, isDarkTheme) {
@@ -338,7 +324,7 @@ var transformPlotlyJsonToVBCProps = function (input, colorMap, isDarkTheme) {
338
324
  exports.transformPlotlyJsonToVBCProps = transformPlotlyJsonToVBCProps;
339
325
  var transformPlotlyJsonToScatterChartProps = function (input, isAreaChart, colorMap, isDarkTheme) {
340
326
  var _a, _b, _c, _d, _e, _f;
341
- var secondaryYAxisValues = {};
327
+ var secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, isAreaChart ? 0 : undefined, isAreaChart ? 0 : undefined);
342
328
  var mode = 'tonexty';
343
329
  var chartData = input.data.map(function (series, index) {
344
330
  var xValues = series.x;
@@ -347,17 +333,16 @@ var transformPlotlyJsonToScatterChartProps = function (input, isAreaChart, color
347
333
  var isXNumber = (0, chart_utilities_1.isNumberArray)(xValues);
348
334
  var legend = getLegend(series, index);
349
335
  var lineColor = (0, exports.getColor)(legend, colorMap, isDarkTheme);
350
- secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);
351
336
  mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';
352
337
  var lineOptions = getLineOptions(series.line);
353
- return tslib_1.__assign({ legend: legend, data: xValues.map(function (x, i) {
338
+ return tslib_1.__assign(tslib_1.__assign({ legend: legend, data: xValues.map(function (x, i) {
354
339
  var _a, _b;
355
340
  return (tslib_1.__assign({ x: isString ? (isXDate ? new Date(x) : isXNumber ? parseFloat(x) : x) : x, y: series.y[i] }, (Array.isArray((_a = series.marker) === null || _a === void 0 ? void 0 : _a.size)
356
341
  ? { markerSize: series.marker.size[i] }
357
342
  : typeof ((_b = series.marker) === null || _b === void 0 ? void 0 : _b.size) === 'number'
358
343
  ? { markerSize: series.marker.size }
359
344
  : {})));
360
- }), color: lineColor }, (lineOptions ? { lineOptions: lineOptions } : {}));
345
+ }), color: lineColor }, (lineOptions ? { lineOptions: lineOptions } : {})), { useSecondaryYScale: usesSecondaryYScale(series) });
361
346
  });
362
347
  var yMinMaxValues = (0, utilities_1.findNumericMinMaxOfY)(chartData);
363
348
  var _g = getTitles(input.layout), chartTitle = _g.chartTitle, xAxisTitle = _g.xAxisTitle, yAxisTitle = _g.yAxisTitle;
@@ -366,35 +351,10 @@ var transformPlotlyJsonToScatterChartProps = function (input, isAreaChart, color
366
351
  lineChartData: chartData,
367
352
  };
368
353
  if (isAreaChart) {
369
- return {
370
- data: chartProps,
371
- supportNegativeData: true,
372
- xAxisTitle: xAxisTitle,
373
- yAxisTitle: yAxisTitle,
374
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
375
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
376
- mode: mode,
377
- width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width,
378
- height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350,
379
- hideTickOverlap: true,
380
- };
354
+ return tslib_1.__assign(tslib_1.__assign({ data: chartProps, supportNegativeData: true, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle }, secondaryYAxisValues), { mode: mode, width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, hideTickOverlap: true });
381
355
  }
382
356
  else {
383
- return {
384
- data: chartProps,
385
- supportNegativeData: true,
386
- xAxisTitle: xAxisTitle,
387
- yAxisTitle: yAxisTitle,
388
- secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,
389
- secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,
390
- roundedTicks: true,
391
- yMinValue: yMinMaxValues.startValue,
392
- yMaxValue: yMinMaxValues.endValue,
393
- width: (_d = input.layout) === null || _d === void 0 ? void 0 : _d.width,
394
- height: (_f = (_e = input.layout) === null || _e === void 0 ? void 0 : _e.height) !== null && _f !== void 0 ? _f : 350,
395
- hideTickOverlap: true,
396
- enableReflow: false,
397
- };
357
+ return tslib_1.__assign(tslib_1.__assign({ data: chartProps, supportNegativeData: true, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle }, secondaryYAxisValues), { roundedTicks: true, yMinValue: yMinMaxValues.startValue, yMaxValue: yMinMaxValues.endValue, width: (_d = input.layout) === null || _d === void 0 ? void 0 : _d.width, height: (_f = (_e = input.layout) === null || _e === void 0 ? void 0 : _e.height) !== null && _f !== void 0 ? _f : 350, hideTickOverlap: true, enableReflow: false });
398
358
  }
399
359
  };
400
360
  exports.transformPlotlyJsonToScatterChartProps = transformPlotlyJsonToScatterChartProps;
@@ -1 +1 @@
1
- {"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","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 { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IGroupedVerticalBarChartData,\n IVerticalBarChartDataPoint,\n ISankeyChartData,\n ILineChartLineOptions,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartVariant, IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isLineData,\n} from '@fluentui/chart-utilities';\nimport { timeParse } from 'd3-time-format';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface ISecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst isMonth = (possiblyMonthValue: any): boolean => {\n const parseFullMonth = timeParse('%B');\n const parseShortMonth = timeParse('%b');\n return parseFullMonth(possiblyMonthValue) !== null || parseShortMonth(possiblyMonthValue) !== null;\n};\n\nexport const isMonthArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isMonth);\n};\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst getSecondaryYAxisValues = (series: PlotData, layout: Partial<Layout> | undefined) => {\n const secondaryYAxisValues: ISecondaryYAxisValues = {};\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): IDonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, IChartDataPoint> = {};\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): IVerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let secondaryYAxisValues: ISecondaryYAxisValues = {};\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n } else if (series.type === 'scatter' || isLineData(series) || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n });\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, IGroupedVerticalBarChartData> = {};\n let secondaryYAxisValues: ISecondaryYAxisValues = {};\n\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, xIndex: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n const dataValue = (series.y?.[xIndex] as number) ?? 0;\n\n // As per the dataset\n // https://github.com/microsoft/fluentui-charting-contrib/blob/main/apps/plotly_examples/src/data/data_385.json\n // for the same series, for the same x value there can be multiple y values with the same legend\n // So we need to check if the key already exists in the series and sum the data values if key exists\n const existingDataPointIndex = mapXToDataPoints[x].series.findIndex(dp => dp.key === legend);\n\n if (existingDataPointIndex !== -1) {\n // If the key exists, sum the data values\n mapXToDataPoints[x].series[existingDataPointIndex].data += dataValue;\n } else {\n // Otherwise, add a new data point\n mapXToDataPoints[x].series.push({\n key: legend,\n data: dataValue,\n xAxisCalloutData: x as string,\n color,\n legend,\n });\n }\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): IVerticalBarChartProps => {\n const vbcData: IVerticalBarChartDataPoint[] = [];\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 supportNegativeData: true,\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): ILineChartProps | IAreaChartProps => {\n let secondaryYAxisValues: ISecondaryYAxisValues = {};\n let mode: string = 'tonexty';\n const chartData: ILineChartPoints[] = 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 ILineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: IChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n } as IAreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n } as ILineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IHorizontalBarChartWithAxisProps => {\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = 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 IHorizontalBarChartWithAxisDataPoint;\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 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): IHeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\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 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: IHeatMapChartData = {\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): ISankeyChartProps => {\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 ISankeyChartData;\n\n const styles: ISankeyChartProps['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 styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGaugeChartProps => {\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): IGaugeChartSegment => {\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: IGaugeChartProps['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 styles,\n variant: firstData.gauge?.steps?.length ? GaugeChartVariant.MultipleSegments : GaugeChartVariant.SingleSegment,\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 if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\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): ILineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: ILineChartLineOptions = {};\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\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"]}
1
+ {"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","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 { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IGroupedVerticalBarChartData,\n IVerticalBarChartDataPoint,\n ISankeyChartData,\n ILineChartLineOptions,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartVariant, IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } 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 isLineData,\n} from '@fluentui/chart-utilities';\nimport { timeParse } from 'd3-time-format';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface ISecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst isMonth = (possiblyMonthValue: any): boolean => {\n const parseFullMonth = timeParse('%B');\n const parseShortMonth = timeParse('%b');\n return parseFullMonth(possiblyMonthValue) !== null || parseShortMonth(possiblyMonthValue) !== null;\n};\n\nexport const isMonthArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isMonth);\n};\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst 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): ISecondaryYAxisValues => {\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\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): IDonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, IChartDataPoint> = {};\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): IVerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(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] = { xAxisPoint: x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || isLineData(series) || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\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 yMaxValue,\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): IGroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, IGroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, xIndex: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n const dataValue = (series.y?.[xIndex] as number) ?? 0;\n\n // As per the dataset\n // https://github.com/microsoft/fluentui-charting-contrib/blob/main/apps/plotly_examples/src/data/data_385.json\n // for the same series, for the same x value there can be multiple y values with the same legend\n // So we need to check if the key already exists in the series and sum the data values if key exists\n const existingDataPointIndex = mapXToDataPoints[x].series.findIndex(dp => dp.key === legend);\n\n if (existingDataPointIndex !== -1) {\n // If the key exists, sum the data values\n mapXToDataPoints[x].series[existingDataPointIndex].data += dataValue;\n } else {\n // Otherwise, add a new data point\n mapXToDataPoints[x].series.push({\n key: legend,\n data: dataValue,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\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): IVerticalBarChartProps => {\n const vbcData: IVerticalBarChartDataPoint[] = [];\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 supportNegativeData: true,\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): ILineChartProps | IAreaChartProps => {\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: ILineChartPoints[] = 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 ILineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: IChartProps = {\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 } as IAreaChartProps;\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 } as ILineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IHorizontalBarChartWithAxisProps => {\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = 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 IHorizontalBarChartWithAxisDataPoint;\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 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): IHeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\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 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: IHeatMapChartData = {\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): ISankeyChartProps => {\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 ISankeyChartData;\n\n const styles: ISankeyChartProps['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 styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGaugeChartProps => {\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): IGaugeChartSegment => {\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: IGaugeChartProps['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 styles,\n variant: firstData.gauge?.steps?.length ? GaugeChartVariant.MultipleSegments : GaugeChartVariant.SingleSegment,\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 if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\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): ILineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: ILineChartLineOptions = {};\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\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"]}
@@ -10,7 +10,6 @@ export interface IGroupedVerticalBarChartState extends IBasestate {
10
10
  export declare class GroupedVerticalBarChartBase extends React.Component<IGroupedVerticalBarChartProps, IGroupedVerticalBarChartState> implements IChart {
11
11
  static defaultProps: Partial<IGroupedVerticalBarChartProps>;
12
12
  private _createSet;
13
- private _dataset;
14
13
  private _keys;
15
14
  private _xAxisLabels;
16
15
  private _datasetForBars;