@rowsncolumns/charts 28.1.7 → 28.1.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"basic-chart.d.ts","sourceRoot":"","sources":["../../../basic-chart/basic-chart.tsx"],"names":[],"mappings":"AAkEA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAmQrD,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAqEnD,eAAO,MAAM,UAAU,GAAI,gPAkBxB,eAAe,sBA02GjB,CAAC"}
1
+ {"version":3,"file":"basic-chart.d.ts","sourceRoot":"","sources":["../../../basic-chart/basic-chart.tsx"],"names":[],"mappings":"AAkEA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAqQrD,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAqEnD,eAAO,MAAM,UAAU,GAAI,gPAkBxB,eAAe,sBAq6GjB,CAAC"}
@@ -31,6 +31,7 @@ var hierarchy_1 = require("../utils/hierarchy");
31
31
  var histogram_1 = require("../utils/histogram");
32
32
  var legend_layout_1 = require("../utils/legend-layout");
33
33
  var of_pie_1 = require("../utils/of-pie");
34
+ var doughnut_1 = require("../utils/doughnut");
34
35
  var overrides_1 = require("../utils/overrides");
35
36
  var radar_1 = require("../utils/radar");
36
37
  var region_map_1 = require("../utils/region-map");
@@ -367,7 +368,7 @@ var BasicChart = function (_a) {
367
368
  * Triggers a chart update
368
369
  */
369
370
  var updateChart = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
370
- var threeDRenderKind, canRender3D, willRender3D, isRegionMap, regionSpec, geoScope, geo, labels, seriesEntry, values, _a, data, unmatched, min, max, textColor, ramp, noDataColor, borderColor, regionSeriesLabel, seriesName, chartDomains, chartSeries, legend, chartType, position, showAxis, isBubble, isHierarchy, skipHeaders_1, labelValues, perSeriesX, perSeriesSize, seriesInputs, i, seriesEntry, resolvedLabel, _b, xValues, sizeValues_1, sharedXValues, sharedSizeValues, _c, categories_1, preparedSeries, sizeValues, sizeScale_1, xAxisConfig, tooltipFormatter, bubbleSeriesLabel_1, hierarchyRows, headerTitle, hierarchyData, rootName, seriesDisplayName, hierarchyDepth, levels, sizeNumberFormat_1, tooltipFormatter, hierarchyDataLabels, hierarchySeriesLabel, isContour, categories_2, contourSeriesInputs, _d, _e, seriesEntry, dataLabel, _f, _g, values, e_1_1, seriesNames_1, contourPoints, _h, zMin, zMax, contourFormats_1, contourLabel, categories_3, threeDSeriesInputs, _j, _k, seriesEntry, dataLabel, _l, _m, values, e_2_1, seriesNames_2, threeDPalette_1, seriesColorAt_1, categoryAxisLabel, seriesAxisLabel, stackedBar3D_1, threeDFormats_1, threeDTooltipFormatter, threeDSeries, visualMap, xAxis3D, yAxis3D, categoryCount, categoryTotals_1, threeDSeriesInputs_1, threeDSeriesInputs_1_1, entry, isPercent_1, surfacePoints, _o, zMin, zMax, skipHeaders, categories, radarSeriesInputs, _p, _q, seriesEntry, label, values, indicators_1, radarData, radarStyle_1, radarColors_1, radarFormats_1, radarDataLabels_1, radarSeriesLabelFor_1, radarTooltipFormatter, variant_1, categories, seriesValues, stockFormats_1, stockRoleIndex_1, stockFormatFor_1, stockDataLabels_1, stockSeriesLabelFor_1, upColor_1, downColor_1, volumePoints, hasVolume, stockGrid, baseStockXAxis, stockXAxis, volumeYAxis, volumeSeries, stockAxisPointer, candleData, lineSeries, stockColors_1, isStacked, isCircularChart, isOfPie, ofPieLayout, isHorizontalBarChart, shouldAggregate, primaryDomainSource, rawPrimaryDomainValues, aggregateDomainValues, categoryLevels, pushSeriesOverlays, sideBySideBarCount, specBarGap, specBarCategoryGap, seriesPalette, paletteColorAt, _loop_1, _r, _s, _t, specSeriesIndex, series, e_3_1, labels, seriesEntry, rawValues, _u, main_1, secondary, otherTotal, total, ofPieType_1, secondScale, halfAngle_1, hasSecondary, MAIN_CX_1, CY_1, MAIN_RADIUS_PCT_1, SECONDARY_CX_1, secondaryRadiusPct_1, BAR_LEFT_1, BAR_RIGHT, barHalfFrac_1, ofPiePalette_1, paletteAt_1, connectorColor_1, primaryDomainSource_1, rawDomainValues, labels, seriesEntry, rawValues_1, totalIndices, steps, accent_1, decreaseColor_1, totalColor_1, connectors, primaryDomainSource_2, rawDomainValues, labels_1, seriesEntry, rawValues, quartileMethod, showOutliers, showMeanMarker, boxStats, boxLabels, outlierPoints, meanPoints, _v, _w, seriesEntry, label, rawValues, summary, boxIndex, lo, hi, _x, _y, outlier, boxSeries, boxColor, rawValues, _z, labels, counts, isPareto_1, cumulativePercents, pareto, histogramSeries, histogramColor, renderedSeriesCount, replaceMerge, valueAxisBase, isPareto, hasSecondaryAxis, isPercentStackedBars, primaryAxisNumberFormat, secondaryAxisNumberFormat, axisNumberFormatFor, seriesNumberFormats, seriesNumberFormatFor, tooltipConfig, finalLegend, bottomAxisNameGap, legendBand, positionedLegend, gridConfig, dataLabelOptions, seriesLabelOptionFor, isDoughnut, doughnutHoleSize, explosion, explosionOffset, barSeries, len, categoryTotals_2, barSeries_1, barSeries_1_1, s, i, raw, n, barSeries_2, barSeries_2_1, s, seriesWithLabels;
371
+ var threeDRenderKind, canRender3D, willRender3D, isRegionMap, regionSpec, geoScope, geo, labels, seriesEntry, values, _a, data, unmatched, min, max, textColor, ramp, noDataColor, borderColor, regionSeriesLabel, seriesName, chartDomains, chartSeries, legend, chartType, position, showAxis, isBubble, isHierarchy, skipHeaders_1, labelValues, perSeriesX, perSeriesSize, seriesInputs, i, seriesEntry, resolvedLabel, _b, xValues, sizeValues_1, sharedXValues, sharedSizeValues, _c, categories_1, preparedSeries, sizeValues, sizeScale_1, xAxisConfig, tooltipFormatter, bubbleSeriesLabelFor_1, hierarchyRows, headerTitle, hierarchyData, rootName, seriesDisplayName, hierarchyDepth, levels, sizeNumberFormat_1, tooltipFormatter, hierarchyDataLabels, hierarchySeriesLabel, isContour, categories_2, contourSeriesInputs, _d, _e, seriesEntry, dataLabel, _f, _g, values, e_1_1, seriesNames_1, contourPoints, _h, zMin, zMax, contourFormats_1, contourLabel, categories_3, threeDSeriesInputs, _j, _k, seriesEntry, dataLabel, _l, _m, values, e_2_1, seriesNames_2, threeDPalette_1, seriesColorAt_1, categoryAxisLabel, seriesAxisLabel, stackedBar3D_1, threeDFormats_1, threeDTooltipFormatter, threeDSeries, visualMap, xAxis3D, yAxis3D, categoryCount, categoryTotals_1, threeDSeriesInputs_1, threeDSeriesInputs_1_1, entry, isPercent_1, surfacePoints, _o, zMin, zMax, skipHeaders, categories, radarSeriesInputs, _p, _q, seriesEntry, label, values, radarAxisOptions, indicators_1, radarData, radarStyle_1, radarColors_1, radarFormats_1, radarDataLabels_1, radarSeriesLabelFor_1, radarTooltipFormatter, variant_1, categories, seriesValues, stockFormats_1, stockRoleIndex_1, stockFormatFor_1, stockDataLabels_1, stockSeriesLabelFor_1, upColor_1, downColor_1, volumePoints, hasVolume, stockGrid, baseStockXAxis, stockXAxis, volumeYAxis, volumeSeries, stockAxisPointer, candleData, lineSeries, stockColors_1, isStacked, isCircularChart, isOfPie, ofPieLayout, isHorizontalBarChart, shouldAggregate, primaryDomainSource, rawPrimaryDomainValues, aggregateDomainValues, categoryLevels, pushSeriesOverlays, sideBySideBarCount, specBarGap, specBarCategoryGap, seriesPalette, paletteColorAt, _loop_1, _r, _s, _t, specSeriesIndex, series, e_3_1, labels, seriesEntry, rawValues, _u, main_1, secondary, otherTotal, total, ofPieType_1, secondScale, halfAngle_1, hasSecondary, MAIN_CX_1, CY_1, MAIN_RADIUS_PCT_1, SECONDARY_CX_1, secondaryRadiusPct_1, BAR_LEFT_1, BAR_RIGHT, barHalfFrac_1, ofPiePalette_1, paletteAt_1, connectorColor_1, primaryDomainSource_1, rawDomainValues, labels, seriesEntry, rawValues_1, totalIndices, steps, accent_1, decreaseColor_1, totalColor_1, connectors, primaryDomainSource_2, rawDomainValues, labels_1, seriesEntry, rawValues, quartileMethod, showOutliers, showMeanMarker, boxStats, boxLabels, outlierPoints, meanPoints, _v, _w, seriesEntry, label, rawValues, summary, boxIndex, lo, hi, _x, _y, outlier, boxSeries, boxColor, rawValues, _z, labels, counts, isPareto_1, cumulativePercents, pareto, histogramSeries, histogramColor, renderedSeriesCount, replaceMerge, valueAxisBase, isPareto, hasSecondaryAxis, isPercentStackedBars, primaryAxisNumberFormat, secondaryAxisNumberFormat, axisNumberFormatFor, seriesNumberFormats, seriesNumberFormatFor, tooltipConfig, finalLegend, bottomAxisNameGap, legendBand, positionedLegend, gridConfig, chartDataLabels, seriesLabelOptionFor, isDoughnut, doughnutHoleSize, doughnutSeriesOrder, doughnutRingSet, explosion, explosionOffset, barSeries, len, categoryTotals_2, barSeries_1, barSeries_1_1, s, i, raw, n, barSeries_2, barSeries_2_1, s, seriesWithLabels;
371
372
  var e_1, _0, e_2, _1, e_4, _2, e_5, _3, e_3, _4, e_6, _5, e_7, _6, e_8, _7, e_9, _8;
372
373
  var _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139;
373
374
  return tslib_1.__generator(this, function (_140) {
@@ -590,7 +591,10 @@ var BasicChart = function (_a) {
590
591
  var seriesName = params.seriesName ? "".concat(params.seriesName, "<br/>") : "";
591
592
  return "".concat(seriesName).concat(bubbleName, "X: ").concat(label !== null && label !== void 0 ? label : "", "<br/>Y: ").concat(y !== null && y !== void 0 ? y : "", "<br/>Size: ").concat(size !== null && size !== void 0 ? size : "");
592
593
  };
593
- bubbleSeriesLabel_1 = (0, overrides_1.buildSeriesLabelOption)(spec.dataLabels, undefined, locale);
594
+ bubbleSeriesLabelFor_1 = function (index) {
595
+ var _a;
596
+ return (0, overrides_1.buildSeriesLabelOption)((0, overrides_1.resolveSeriesDataLabels)(spec.dataLabels, (_a = spec.series) === null || _a === void 0 ? void 0 : _a[index]), undefined, locale);
597
+ };
594
598
  (_24 = chartRef.current) === null || _24 === void 0 ? void 0 : _24.setOption({
595
599
  xAxis: [
596
600
  (0, overrides_1.applyAxisOverrides)(tslib_1.__assign({}, xAxisConfig), spec.categoryAxisOptions),
@@ -641,7 +645,8 @@ var BasicChart = function (_a) {
641
645
  var smooth = scatterStyle === "smooth" || scatterStyle === "smoothMarker";
642
646
  // Labels hang off the point symbols: a marker-less line keeps
643
647
  // an invisible 0-size symbol per point when they show (#1049).
644
- var labelsWithoutMarkers = !wantsMarkers && Boolean((_c = spec.dataLabels) === null || _c === void 0 ? void 0 : _c.show);
648
+ var labelsWithoutMarkers = !wantsMarkers &&
649
+ Boolean((_c = (0, overrides_1.resolveSeriesDataLabels)(spec.dataLabels, seriesEntry)) === null || _c === void 0 ? void 0 : _c.show);
645
650
  return wantsLine
646
651
  ? tslib_1.__assign({ type: "line", name: entry.name, data: entry.points, showSymbol: wantsMarkers || labelsWithoutMarkers, smooth: smooth, symbol: (_d = (0, helpers_1.mapMarkerSymbolToEcharts)(symbol)) !== null && _d !== void 0 ? _d : "circle", symbolSize: labelsWithoutMarkers
647
652
  ? 0
@@ -658,10 +663,11 @@ var BasicChart = function (_a) {
658
663
  show: true,
659
664
  formatter: function (params) { var _a; return (_a = params.name) !== null && _a !== void 0 ? _a : ""; },
660
665
  } }, (seriesColor ? { itemStyle: { color: seriesColor } } : {}));
661
- }).map(function (s) {
666
+ }).map(function (s, index) {
662
667
  var _a;
663
- return bubbleSeriesLabel_1
664
- ? tslib_1.__assign(tslib_1.__assign({}, s), { label: tslib_1.__assign(tslib_1.__assign({}, ((_a = s.label) !== null && _a !== void 0 ? _a : {})), bubbleSeriesLabel_1) }) : s;
668
+ var bubbleSeriesLabel = bubbleSeriesLabelFor_1(index);
669
+ return bubbleSeriesLabel
670
+ ? tslib_1.__assign(tslib_1.__assign({}, s), { label: tslib_1.__assign(tslib_1.__assign({}, ((_a = s.label) !== null && _a !== void 0 ? _a : {})), bubbleSeriesLabel) }) : s;
665
671
  }),
666
672
  }, {
667
673
  replaceMerge: [
@@ -1163,7 +1169,8 @@ var BasicChart = function (_a) {
1163
1169
  }
1164
1170
  finally { if (e_5) throw e_5.error; }
1165
1171
  }
1166
- indicators_1 = (0, radar_1.buildRadarIndicators)(categories, radarSeriesInputs);
1172
+ radarAxisOptions = spec.valueAxisOptions;
1173
+ indicators_1 = (0, radar_1.buildRadarIndicators)(categories, radarSeriesInputs, radarAxisOptions);
1167
1174
  radarData = (0, radar_1.buildRadarSeriesData)(radarSeriesInputs, indicators_1.length);
1168
1175
  radarStyle_1 = (_47 = spec.radarStyle) !== null && _47 !== void 0 ? _47 : "standard";
1169
1176
  radarColors_1 = radarSeriesInputs.map(function (_, i) { var _a, _b; return (_b = (_a = spec.series) === null || _a === void 0 ? void 0 : _a[i]) === null || _b === void 0 ? void 0 : _b.color; });
@@ -1186,7 +1193,16 @@ var BasicChart = function (_a) {
1186
1193
  radar: {
1187
1194
  indicator: indicators_1.length
1188
1195
  ? indicators_1
1189
- : [{ name: "", max: 1 }],
1196
+ : [{ name: "", min: 0, max: 1 }],
1197
+ // The common scale's tick labels along one axis, as Excel draws
1198
+ // them (echarts labels the first indicator axis only); hidden
1199
+ // with the spec's value axis.
1200
+ axisLabel: {
1201
+ show: (radarAxisOptions === null || radarAxisOptions === void 0 ? void 0 : radarAxisOptions.visible) !== false,
1202
+ formatter: function (value) {
1203
+ return (0, axis_number_format_1.formatAxisValue)(radarFormats_1[0], value, locale);
1204
+ },
1205
+ },
1190
1206
  },
1191
1207
  legend: (0, overrides_1.applyLegendOverrides)(tslib_1.__assign(tslib_1.__assign({}, legend), { show: radarData.length > 1, data: radarData.map(function (d) { return d.name; }) }), spec.legend),
1192
1208
  tooltip: { trigger: "item", formatter: radarTooltipFormatter },
@@ -1715,7 +1731,8 @@ var BasicChart = function (_a) {
1715
1731
  wantsMarkers = markerSymbol === "none"
1716
1732
  ? false
1717
1733
  : Boolean(spec.showMarkers) || !(0, utils_1.isNil)(markerSymbol);
1718
- labelsWithoutMarkers = !wantsMarkers && Boolean((_79 = spec.dataLabels) === null || _79 === void 0 ? void 0 : _79.show);
1734
+ labelsWithoutMarkers = !wantsMarkers &&
1735
+ Boolean((_79 = (0, overrides_1.resolveSeriesDataLabels)(spec.dataLabels, seriesAny)) === null || _79 === void 0 ? void 0 : _79.show);
1719
1736
  seriesEntry.showSymbol = wantsMarkers || labelsWithoutMarkers;
1720
1737
  if (wantsMarkers) {
1721
1738
  seriesEntry.symbol =
@@ -2348,13 +2365,26 @@ var BasicChart = function (_a) {
2348
2365
  bottom: 0,
2349
2366
  }
2350
2367
  : legendBand.grid;
2351
- dataLabelOptions = spec.dataLabels;
2368
+ chartDataLabels = spec.dataLabels;
2352
2369
  seriesLabelOptionFor = function (s) {
2370
+ var _a;
2371
+ var specIndex = (0, series_click_1.chartSeriesSpecIndex)(s === null || s === void 0 ? void 0 : s.id);
2372
+ var dataLabelOptions = (0, overrides_1.resolveSeriesDataLabels)(chartDataLabels, specIndex === undefined ? undefined : (_a = spec.series) === null || _a === void 0 ? void 0 : _a[specIndex]);
2353
2373
  return (0, overrides_1.buildSeriesLabelOption)(dataLabelOptions && !dataLabelOptions.numberFormatPattern
2354
2374
  ? tslib_1.__assign(tslib_1.__assign({}, dataLabelOptions), { numberFormatPattern: seriesNumberFormatFor(s) }) : dataLabelOptions, s === null || s === void 0 ? void 0 : s.type, locale);
2355
2375
  };
2356
2376
  isDoughnut = spec.chartType === "doughnut";
2357
2377
  doughnutHoleSize = spec.doughnutHoleSize;
2378
+ doughnutSeriesOrder = isDoughnut
2379
+ ? chartSeries
2380
+ .filter(function (s) { return (s === null || s === void 0 ? void 0 : s.type) === "pie"; })
2381
+ .map(function (s) { return (0, series_click_1.chartSeriesSpecIndex)(s === null || s === void 0 ? void 0 : s.id); })
2382
+ .filter(function (i) { return i !== undefined; })
2383
+ .sort(function (a, b) { return a - b; })
2384
+ : [];
2385
+ doughnutRingSet = isDoughnut
2386
+ ? (0, doughnut_1.doughnutRings)((0, doughnut_1.clampDoughnutHole)(doughnutHoleSize), doughnutSeriesOrder.length)
2387
+ : [];
2358
2388
  explosion = isCircularChart && !isOfPie ? (0, pie_explosion_1.resolveExplosion)(spec) : 0;
2359
2389
  explodedRef.current = explosion > 0;
2360
2390
  explosionOffset = (0, pie_explosion_1.explosionOffsetPx)(explosion, (0, pie_explosion_1.pieRadiusPx)(isDoughnut ? [0, "75%"] : spec.radius, width !== null && width !== void 0 ? width : 0, height !== null && height !== void 0 ? height : 0));
@@ -2419,24 +2449,30 @@ var BasicChart = function (_a) {
2419
2449
  }
2420
2450
  }
2421
2451
  seriesWithLabels = chartSeries.map(function (s) {
2422
- var _a, _b, _c, _d, _e;
2452
+ var _a, _b, _c, _d, _e, _f, _g, _h;
2423
2453
  var next = tslib_1.__assign({}, s);
2424
2454
  var seriesLabelOption = seriesLabelOptionFor(s);
2425
2455
  if (seriesLabelOption) {
2426
2456
  next.label = tslib_1.__assign(tslib_1.__assign({}, ((_a = s === null || s === void 0 ? void 0 : s.label) !== null && _a !== void 0 ? _a : {})), seriesLabelOption);
2427
2457
  }
2458
+ else if ((s === null || s === void 0 ? void 0 : s.type) === "pie") {
2459
+ // echarts labels every pie slice by default (category name on a
2460
+ // leader line); Excel draws nothing until data labels are on (#1062).
2461
+ next.label = tslib_1.__assign(tslib_1.__assign({}, ((_b = s === null || s === void 0 ? void 0 : s.label) !== null && _b !== void 0 ? _b : {})), { show: false });
2462
+ next.labelLine = tslib_1.__assign(tslib_1.__assign({}, ((_c = s === null || s === void 0 ? void 0 : s.labelLine) !== null && _c !== void 0 ? _c : {})), { show: false });
2463
+ }
2428
2464
  // Tooltip values of the value-axis series (a boxplot / candlestick
2429
2465
  // tooltip lists its own statistics and keeps echarts' default).
2430
2466
  var seriesTooltipValueFormatter = VALUE_TOOLTIP_SERIES_TYPES.has(s === null || s === void 0 ? void 0 : s.type)
2431
2467
  ? (0, axis_number_format_1.valueAxisLabelFormatter)(seriesNumberFormatFor(s), locale)
2432
2468
  : undefined;
2433
- if (seriesTooltipValueFormatter && ((_b = s === null || s === void 0 ? void 0 : s.tooltip) === null || _b === void 0 ? void 0 : _b.show) !== false) {
2434
- next.tooltip = tslib_1.__assign(tslib_1.__assign({}, ((_c = s === null || s === void 0 ? void 0 : s.tooltip) !== null && _c !== void 0 ? _c : {})), { valueFormatter: seriesTooltipValueFormatter });
2469
+ if (seriesTooltipValueFormatter && ((_d = s === null || s === void 0 ? void 0 : s.tooltip) === null || _d === void 0 ? void 0 : _d.show) !== false) {
2470
+ next.tooltip = tslib_1.__assign(tslib_1.__assign({}, ((_e = s === null || s === void 0 ? void 0 : s.tooltip) !== null && _e !== void 0 ? _e : {})), { valueFormatter: seriesTooltipValueFormatter });
2435
2471
  }
2436
2472
  if (next.type === "pie") {
2437
2473
  var pieNumberFormat = seriesNumberFormatFor(s);
2438
- if (pieNumberFormat && ((_d = s === null || s === void 0 ? void 0 : s.tooltip) === null || _d === void 0 ? void 0 : _d.show) !== false) {
2439
- next.tooltip = tslib_1.__assign(tslib_1.__assign({}, ((_e = s === null || s === void 0 ? void 0 : s.tooltip) !== null && _e !== void 0 ? _e : {})), { formatter: (0, axis_number_format_1.circularTooltipFormatter)(pieNumberFormat, locale) });
2474
+ if (pieNumberFormat && ((_f = s === null || s === void 0 ? void 0 : s.tooltip) === null || _f === void 0 ? void 0 : _f.show) !== false) {
2475
+ next.tooltip = tslib_1.__assign(tslib_1.__assign({}, ((_g = s === null || s === void 0 ? void 0 : s.tooltip) !== null && _g !== void 0 ? _g : {})), { formatter: (0, axis_number_format_1.circularTooltipFormatter)(pieNumberFormat, locale) });
2440
2476
  }
2441
2477
  if (explosionOffset > 0 && Array.isArray(next.data)) {
2442
2478
  next.selectedMode = "multiple";
@@ -2448,10 +2484,14 @@ var BasicChart = function (_a) {
2448
2484
  }
2449
2485
  }
2450
2486
  if (isDoughnut && next.type === "pie") {
2451
- var inner = typeof doughnutHoleSize === "number"
2452
- ? Math.round(Math.max(0, Math.min(0.9, doughnutHoleSize)) * 100)
2453
- : 50;
2454
- next.radius = ["".concat(inner, "%"), "75%"];
2487
+ // The hole is a fraction of the OUTER radius (Excel's `<c:holeSize>`),
2488
+ // and the doughnut's outer edge sits at 75% of the chart — so every
2489
+ // ring edge is its fraction of 75%, not of the whole chart (#1064:
2490
+ // Excel's default 0.75 used to meet the outer edge, an empty ring).
2491
+ var rank = doughnutSeriesOrder.indexOf((0, series_click_1.chartSeriesSpecIndex)(s === null || s === void 0 ? void 0 : s.id));
2492
+ var ring = (_h = doughnutRingSet[rank]) !== null && _h !== void 0 ? _h : (0, doughnut_1.doughnutRings)((0, doughnut_1.clampDoughnutHole)(doughnutHoleSize), 1)[0];
2493
+ var pct = function (fraction) { return "".concat(Math.round(fraction * 75 * 100) / 100, "%"); };
2494
+ next.radius = [pct(ring.inner), pct(ring.outer)];
2455
2495
  }
2456
2496
  return next;
2457
2497
  });
@@ -1 +1 @@
1
- {"version":3,"file":"basic-chart.d.ts","sourceRoot":"","sources":["../../../../plotly/basic-chart/basic-chart.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAuZxD,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC;AA0FnD,eAAO,MAAM,UAAU,GAAI,gPAkBxB,eAAe,sBA00EjB,CAAC"}
1
+ {"version":3,"file":"basic-chart.d.ts","sourceRoot":"","sources":["../../../../plotly/basic-chart/basic-chart.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAyZxD,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC;AA0FnD,eAAO,MAAM,UAAU,GAAI,gPAkBxB,eAAe,sBAq3EjB,CAAC"}