@rowsncolumns/toolkit 24.5.7 → 24.5.9

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":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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"}
@@ -1586,6 +1586,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1586
1586
  var errorBars = extractErrorBars(ser, sheetId, resolveSheetId);
1587
1587
  var marker = extractSeriesMarker(ser);
1588
1588
  var dataPointColors = extractSeriesDataPointColors(ser);
1589
+ var seriesDataLabels = extractSeriesDataLabels(ser);
1589
1590
  var nameRef = getWithFallback(ser, TX_REF_PATHS);
1590
1591
  // Per-series category reference — charts whose series plot against
1591
1592
  // different category ranges can't be represented by the single
@@ -1597,9 +1598,9 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1597
1598
  ? resolveSourcesFromRef(serCatRef, sheetId, resolveSheetId)
1598
1599
  : [];
1599
1600
  orders.push(seriesOrderOf(ser));
1600
- series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(seriesIndex + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), (container.isXY ? {} : { seriesChartType: seriesChartType })), (useSecondaryAxis ? { useSecondaryAxis: true } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (trendlines && trendlines.length ? { trendlines: trendlines } : {})), (errorBars ? { errorBars: errorBars } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
1601
+ series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(seriesIndex + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), (container.isXY ? {} : { seriesChartType: seriesChartType })), (useSecondaryAxis ? { useSecondaryAxis: true } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (trendlines && trendlines.length ? { trendlines: trendlines } : {})), (errorBars ? { errorBars: errorBars } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
1601
1602
  ? { dataPointColors: dataPointColors }
1602
- : {})));
1603
+ : {})), (seriesDataLabels ? { dataLabels: seriesDataLabels } : {})));
1603
1604
  seriesIndex++;
1604
1605
  }
1605
1606
  }
@@ -1653,6 +1654,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1653
1654
  }
1654
1655
  var marker = extractSeriesMarker(ser);
1655
1656
  var dataPointColors = extractSeriesDataPointColors(ser);
1657
+ var seriesDataLabels = extractSeriesDataLabels(ser);
1656
1658
  var nameRef = getWithFallback(ser, TX_REF_PATHS);
1657
1659
  var serCatRef = isXYChart(chartType)
1658
1660
  ? undefined
@@ -1661,9 +1663,9 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1661
1663
  ? resolveSourcesFromRef(serCatRef, sheetId, resolveSheetId)
1662
1664
  : [];
1663
1665
  orders.push(seriesOrderOf(ser));
1664
- series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(index + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
1666
+ series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(index + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
1665
1667
  ? { dataPointColors: dataPointColors }
1666
- : {})));
1668
+ : {})), (seriesDataLabels ? { dataLabels: seriesDataLabels } : {})));
1667
1669
  });
1668
1670
  }
1669
1671
  }
@@ -2692,13 +2694,22 @@ var mapDataLabelPosition = function (val) {
2692
2694
  return "outsideEnd";
2693
2695
  case "bestFit":
2694
2696
  return "bestFit";
2697
+ // Line / scatter placements (ST_DLblPos t / b / l / r).
2698
+ case "t":
2699
+ return "above";
2700
+ case "b":
2701
+ return "below";
2702
+ case "l":
2703
+ return "left";
2704
+ case "r":
2705
+ return "right";
2695
2706
  default:
2696
2707
  return undefined;
2697
2708
  }
2698
2709
  };
2699
2710
  function extractDataLabelsOptions(plotArea, chartType) {
2700
2711
  var e_35, _a;
2701
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
2712
+ var _b, _c, _d, _e;
2702
2713
  // Look for <c:dLbls> inside the chartType-specific container. We pick
2703
2714
  // the first one we find — chart-level labels apply to all series.
2704
2715
  // The 3-D classes (bar3DChart / line3DChart / pie3DChart / area3DChart)
@@ -2737,27 +2748,48 @@ function extractDataLabelsOptions(plotArea, chartType) {
2737
2748
  var dLbls = (_e = (_d = (_c = get(container, "c:dLbls")) !== null && _c !== void 0 ? _c : get(container, "dLbls")) !== null && _d !== void 0 ? _d : get(plotArea, "c:dLbls")) !== null && _e !== void 0 ? _e : get(plotArea, "dLbls");
2738
2749
  if (!dLbls)
2739
2750
  return undefined;
2751
+ return readDataLabelsNode(dLbls);
2752
+ }
2753
+ /**
2754
+ * `<c:ser><c:dLbls>` — this series' own labels, which replace the group's
2755
+ * for it. `<c:delete val="1"/>`, or a node with every `show*` flag off,
2756
+ * turns a labelled group's labels off for the series.
2757
+ */
2758
+ function extractSeriesDataLabels(ser) {
2759
+ var _a, _b;
2760
+ var dLbls = (_a = get(ser, "c:dLbls")) !== null && _a !== void 0 ? _a : get(ser, "dLbls");
2761
+ if (!dLbls)
2762
+ return undefined;
2763
+ var deleted = readBoolean((_b = get(dLbls, "c:delete.a$.val")) !== null && _b !== void 0 ? _b : get(dLbls, "delete.a$.val"));
2764
+ if (deleted)
2765
+ return { show: false };
2766
+ var options = readDataLabelsNode(dLbls);
2767
+ return (options === null || options === void 0 ? void 0 : options.show) ? options : { show: false };
2768
+ }
2769
+ /** The `ChartDataLabelsOptions` a `<c:dLbls>` node describes. */
2770
+ function readDataLabelsNode(dLbls) {
2771
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
2740
2772
  var result = {};
2741
- var pos = (_f = get(dLbls, "c:dLblPos.a$.val")) !== null && _f !== void 0 ? _f : get(dLbls, "dLblPos.a$.val");
2773
+ var pos = (_a = get(dLbls, "c:dLblPos.a$.val")) !== null && _a !== void 0 ? _a : get(dLbls, "dLblPos.a$.val");
2742
2774
  var position = mapDataLabelPosition(pos);
2743
2775
  if (position)
2744
2776
  result.position = position;
2745
- var showVal = readBoolean((_g = get(dLbls, "c:showVal.a$.val")) !== null && _g !== void 0 ? _g : get(dLbls, "showVal.a$.val"));
2777
+ var showVal = readBoolean((_b = get(dLbls, "c:showVal.a$.val")) !== null && _b !== void 0 ? _b : get(dLbls, "showVal.a$.val"));
2746
2778
  if (showVal) {
2747
2779
  result.show = true;
2748
2780
  result.showValue = true;
2749
2781
  }
2750
- var showCat = readBoolean((_h = get(dLbls, "c:showCatName.a$.val")) !== null && _h !== void 0 ? _h : get(dLbls, "showCatName.a$.val"));
2782
+ var showCat = readBoolean((_c = get(dLbls, "c:showCatName.a$.val")) !== null && _c !== void 0 ? _c : get(dLbls, "showCatName.a$.val"));
2751
2783
  if (showCat) {
2752
2784
  result.show = true;
2753
2785
  result.showCategoryName = true;
2754
2786
  }
2755
- var showPct = readBoolean((_j = get(dLbls, "c:showPercent.a$.val")) !== null && _j !== void 0 ? _j : get(dLbls, "showPercent.a$.val"));
2787
+ var showPct = readBoolean((_d = get(dLbls, "c:showPercent.a$.val")) !== null && _d !== void 0 ? _d : get(dLbls, "showPercent.a$.val"));
2756
2788
  if (showPct) {
2757
2789
  result.show = true;
2758
2790
  result.showPercent = true;
2759
2791
  }
2760
- var showSer = readBoolean((_k = get(dLbls, "c:showSerName.a$.val")) !== null && _k !== void 0 ? _k : get(dLbls, "showSerName.a$.val"));
2792
+ var showSer = readBoolean((_e = get(dLbls, "c:showSerName.a$.val")) !== null && _e !== void 0 ? _e : get(dLbls, "showSerName.a$.val"));
2761
2793
  if (showSer) {
2762
2794
  result.show = true;
2763
2795
  result.showSeriesName = true;
@@ -2766,14 +2798,14 @@ function extractDataLabelsOptions(plotArea, chartType) {
2766
2798
  if (position && result.show === undefined)
2767
2799
  result.show = true;
2768
2800
  // <c:txPr> on the dLbls block — affects every label in the chart.
2769
- var textFormat = extractTextProperties((_l = get(dLbls, "c:txPr")) !== null && _l !== void 0 ? _l : get(dLbls, "txPr"));
2801
+ var textFormat = extractTextProperties((_f = get(dLbls, "c:txPr")) !== null && _f !== void 0 ? _f : get(dLbls, "txPr"));
2770
2802
  if (textFormat)
2771
2803
  result.textFormat = textFormat;
2772
2804
  // <c:numFmt formatCode="…"/> — Excel uses this to render labels as
2773
2805
  // currency / percent / etc. (`"$"#,##0`, `0.00%`). Without parsing
2774
2806
  // this, the renderer falls back to raw numbers (e.g. `1831` instead
2775
2807
  // of `$1,831`).
2776
- var numFmt = (_p = (_o = (_m = get(dLbls, "c:numFmt.a$.formatCode")) !== null && _m !== void 0 ? _m : get(dLbls, "numFmt.a$.formatCode")) !== null && _o !== void 0 ? _o : get(dLbls, "c:numFmt.a$.t$")) !== null && _p !== void 0 ? _p : get(dLbls, "numFmt.a$.t$");
2808
+ var numFmt = (_j = (_h = (_g = get(dLbls, "c:numFmt.a$.formatCode")) !== null && _g !== void 0 ? _g : get(dLbls, "numFmt.a$.formatCode")) !== null && _h !== void 0 ? _h : get(dLbls, "c:numFmt.a$.t$")) !== null && _j !== void 0 ? _j : get(dLbls, "numFmt.a$.t$");
2777
2809
  if (typeof numFmt === "string" && numFmt) {
2778
2810
  result.numberFormatPattern = numFmt;
2779
2811
  }
@@ -2134,6 +2134,11 @@ var DLBL_POS = {
2134
2134
  insideEnd: "inEnd",
2135
2135
  outsideEnd: "outEnd",
2136
2136
  bestFit: "bestFit",
2137
+ // Line / scatter placements.
2138
+ above: "t",
2139
+ below: "b",
2140
+ left: "l",
2141
+ right: "r",
2137
2142
  };
2138
2143
  var applyChartFormatting = function (chartSpace, spec, sheetNameById) {
2139
2144
  var _a, _b;
@@ -2165,8 +2170,9 @@ var SERIES_CONTAINER_KEYS = [
2165
2170
  ];
2166
2171
  /**
2167
2172
  * Walk the per-chart-type containers in plotArea and apply trendlines
2168
- * / errBars to each emitted `<c:ser>`. The series order in spec.series
2169
- * matches the order emitted by the builder, so we index by position.
2173
+ * / errBars / the series' own data labels to each emitted `<c:ser>`. The
2174
+ * series order in spec.series matches the order emitted by the builder,
2175
+ * so we index by position.
2170
2176
  */
2171
2177
  var applySeriesOverlays = function (plotArea, series, sheetNameById) {
2172
2178
  var e_19, _a, e_20, _b, e_21, _c;
@@ -2217,6 +2223,13 @@ var applySeriesOverlays = function (plotArea, series, sheetNameById) {
2217
2223
  if (built)
2218
2224
  node["c:errBars"] = built;
2219
2225
  }
2226
+ // `ChartData.dataLabels` — the series' own `<c:dLbls>` overrides the
2227
+ // group's; `{ show: false }` is Excel's `<c:delete val="1"/>`.
2228
+ if (data.dataLabels) {
2229
+ node["c:dLbls"] = data.dataLabels.show
2230
+ ? buildDataLabelsNode(data.dataLabels)
2231
+ : { "c:delete": { a$: { val: "1" } } };
2232
+ }
2220
2233
  }
2221
2234
  }
2222
2235
  catch (e_21_1) { e_21 = { error: e_21_1 }; }
@@ -2712,25 +2725,8 @@ var applyLegend = function (chartNode, legend) {
2712
2725
  }
2713
2726
  chartNode["c:legend"] = __assign({ "c:legendPos": { a$: { val: posCode } }, "c:overlay": { a$: { val: "0" } } }, (txPr ? { "c:txPr": txPr } : {}));
2714
2727
  };
2715
- var applyDataLabels = function (plotArea, dataLabels) {
2716
- var e_27, _a;
2717
- if (!(dataLabels === null || dataLabels === void 0 ? void 0 : dataLabels.show))
2718
- return;
2719
- // Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
2720
- // to whichever exists.
2721
- // Chart-level labels apply to every chart group — a combo chart has
2722
- // one per series type.
2723
- var containers = [
2724
- "c:barChart",
2725
- "c:lineChart",
2726
- "c:pieChart",
2727
- "c:doughnutChart",
2728
- "c:areaChart",
2729
- ]
2730
- .flatMap(function (k) { return (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]); })
2731
- .filter(Boolean);
2732
- if (!containers.length)
2733
- return;
2728
+ /** A `<c:dLbls>` node for `ChartDataLabelsOptions` with `show: true`. */
2729
+ var buildDataLabelsNode = function (dataLabels) {
2734
2730
  var posCode = dataLabels.position && DLBL_POS[dataLabels.position];
2735
2731
  var dLbls = {};
2736
2732
  if (posCode)
@@ -2768,6 +2764,28 @@ var applyDataLabels = function (plotArea, dataLabels) {
2768
2764
  a$: { val: dataLabels.showPercent ? "1" : "0" },
2769
2765
  };
2770
2766
  dLbls["c:showBubbleSize"] = { a$: { val: "0" } };
2767
+ return dLbls;
2768
+ };
2769
+ var applyDataLabels = function (plotArea, dataLabels) {
2770
+ var e_27, _a;
2771
+ if (!(dataLabels === null || dataLabels === void 0 ? void 0 : dataLabels.show))
2772
+ return;
2773
+ // Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
2774
+ // to whichever exists.
2775
+ // Chart-level labels apply to every chart group — a combo chart has
2776
+ // one per series type.
2777
+ var containers = [
2778
+ "c:barChart",
2779
+ "c:lineChart",
2780
+ "c:pieChart",
2781
+ "c:doughnutChart",
2782
+ "c:areaChart",
2783
+ ]
2784
+ .flatMap(function (k) { return (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]); })
2785
+ .filter(Boolean);
2786
+ if (!containers.length)
2787
+ return;
2788
+ var dLbls = buildDataLabelsNode(dataLabels);
2771
2789
  try {
2772
2790
  for (var containers_1 = __values(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {
2773
2791
  var container = containers_1_1.value;
@@ -1 +1 @@
1
- {"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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"}
@@ -1437,6 +1437,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1437
1437
  const errorBars = extractErrorBars(ser, sheetId, resolveSheetId);
1438
1438
  const marker = extractSeriesMarker(ser);
1439
1439
  const dataPointColors = extractSeriesDataPointColors(ser);
1440
+ const seriesDataLabels = extractSeriesDataLabels(ser);
1440
1441
  const nameRef = getWithFallback(ser, TX_REF_PATHS);
1441
1442
  // Per-series category reference — charts whose series plot against
1442
1443
  // different category ranges can't be represented by the single
@@ -1472,6 +1473,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1472
1473
  ...(dataPointColors && dataPointColors.length
1473
1474
  ? { dataPointColors }
1474
1475
  : {}),
1476
+ ...(seriesDataLabels ? { dataLabels: seriesDataLabels } : {}),
1475
1477
  });
1476
1478
  seriesIndex++;
1477
1479
  }
@@ -1509,6 +1511,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1509
1511
  }
1510
1512
  const marker = extractSeriesMarker(ser);
1511
1513
  const dataPointColors = extractSeriesDataPointColors(ser);
1514
+ const seriesDataLabels = extractSeriesDataLabels(ser);
1512
1515
  const nameRef = getWithFallback(ser, TX_REF_PATHS);
1513
1516
  const serCatRef = isXYChart(chartType)
1514
1517
  ? undefined
@@ -1532,6 +1535,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
1532
1535
  ...(dataPointColors && dataPointColors.length
1533
1536
  ? { dataPointColors }
1534
1537
  : {}),
1538
+ ...(seriesDataLabels ? { dataLabels: seriesDataLabels } : {}),
1535
1539
  });
1536
1540
  });
1537
1541
  }
@@ -2473,6 +2477,15 @@ const mapDataLabelPosition = (val) => {
2473
2477
  return "outsideEnd";
2474
2478
  case "bestFit":
2475
2479
  return "bestFit";
2480
+ // Line / scatter placements (ST_DLblPos t / b / l / r).
2481
+ case "t":
2482
+ return "above";
2483
+ case "b":
2484
+ return "below";
2485
+ case "l":
2486
+ return "left";
2487
+ case "r":
2488
+ return "right";
2476
2489
  default:
2477
2490
  return undefined;
2478
2491
  }
@@ -2509,6 +2522,25 @@ function extractDataLabelsOptions(plotArea, chartType) {
2509
2522
  get(plotArea, "dLbls");
2510
2523
  if (!dLbls)
2511
2524
  return undefined;
2525
+ return readDataLabelsNode(dLbls);
2526
+ }
2527
+ /**
2528
+ * `<c:ser><c:dLbls>` — this series' own labels, which replace the group's
2529
+ * for it. `<c:delete val="1"/>`, or a node with every `show*` flag off,
2530
+ * turns a labelled group's labels off for the series.
2531
+ */
2532
+ function extractSeriesDataLabels(ser) {
2533
+ const dLbls = get(ser, "c:dLbls") ?? get(ser, "dLbls");
2534
+ if (!dLbls)
2535
+ return undefined;
2536
+ const deleted = readBoolean(get(dLbls, "c:delete.a$.val") ?? get(dLbls, "delete.a$.val"));
2537
+ if (deleted)
2538
+ return { show: false };
2539
+ const options = readDataLabelsNode(dLbls);
2540
+ return options?.show ? options : { show: false };
2541
+ }
2542
+ /** The `ChartDataLabelsOptions` a `<c:dLbls>` node describes. */
2543
+ function readDataLabelsNode(dLbls) {
2512
2544
  const result = {};
2513
2545
  const pos = get(dLbls, "c:dLblPos.a$.val") ?? get(dLbls, "dLblPos.a$.val");
2514
2546
  const position = mapDataLabelPosition(pos);
@@ -1927,6 +1927,11 @@ const DLBL_POS = {
1927
1927
  insideEnd: "inEnd",
1928
1928
  outsideEnd: "outEnd",
1929
1929
  bestFit: "bestFit",
1930
+ // Line / scatter placements.
1931
+ above: "t",
1932
+ below: "b",
1933
+ left: "l",
1934
+ right: "r",
1930
1935
  };
1931
1936
  const applyChartFormatting = (chartSpace, spec, sheetNameById) => {
1932
1937
  const chartNode = chartSpace?.["c:chartSpace"]?.["c:chart"];
@@ -1957,8 +1962,9 @@ const SERIES_CONTAINER_KEYS = [
1957
1962
  ];
1958
1963
  /**
1959
1964
  * Walk the per-chart-type containers in plotArea and apply trendlines
1960
- * / errBars to each emitted `<c:ser>`. The series order in spec.series
1961
- * matches the order emitted by the builder, so we index by position.
1965
+ * / errBars / the series' own data labels to each emitted `<c:ser>`. The
1966
+ * series order in spec.series matches the order emitted by the builder,
1967
+ * so we index by position.
1962
1968
  */
1963
1969
  const applySeriesOverlays = (plotArea, series, sheetNameById) => {
1964
1970
  if (!Array.isArray(series) || !series.length)
@@ -2001,6 +2007,13 @@ const applySeriesOverlays = (plotArea, series, sheetNameById) => {
2001
2007
  if (built)
2002
2008
  node["c:errBars"] = built;
2003
2009
  }
2010
+ // `ChartData.dataLabels` — the series' own `<c:dLbls>` overrides the
2011
+ // group's; `{ show: false }` is Excel's `<c:delete val="1"/>`.
2012
+ if (data.dataLabels) {
2013
+ node["c:dLbls"] = data.dataLabels.show
2014
+ ? buildDataLabelsNode(data.dataLabels)
2015
+ : { "c:delete": { a$: { val: "1" } } };
2016
+ }
2004
2017
  }
2005
2018
  }
2006
2019
  }
@@ -2411,24 +2424,8 @@ const applyLegend = (chartNode, legend) => {
2411
2424
  ...(txPr ? { "c:txPr": txPr } : {}),
2412
2425
  };
2413
2426
  };
2414
- const applyDataLabels = (plotArea, dataLabels) => {
2415
- if (!dataLabels?.show)
2416
- return;
2417
- // Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
2418
- // to whichever exists.
2419
- // Chart-level labels apply to every chart group — a combo chart has
2420
- // one per series type.
2421
- const containers = [
2422
- "c:barChart",
2423
- "c:lineChart",
2424
- "c:pieChart",
2425
- "c:doughnutChart",
2426
- "c:areaChart",
2427
- ]
2428
- .flatMap((k) => (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]))
2429
- .filter(Boolean);
2430
- if (!containers.length)
2431
- return;
2427
+ /** A `<c:dLbls>` node for `ChartDataLabelsOptions` with `show: true`. */
2428
+ const buildDataLabelsNode = (dataLabels) => {
2432
2429
  const posCode = dataLabels.position && DLBL_POS[dataLabels.position];
2433
2430
  const dLbls = {};
2434
2431
  if (posCode)
@@ -2466,6 +2463,27 @@ const applyDataLabels = (plotArea, dataLabels) => {
2466
2463
  a$: { val: dataLabels.showPercent ? "1" : "0" },
2467
2464
  };
2468
2465
  dLbls["c:showBubbleSize"] = { a$: { val: "0" } };
2466
+ return dLbls;
2467
+ };
2468
+ const applyDataLabels = (plotArea, dataLabels) => {
2469
+ if (!dataLabels?.show)
2470
+ return;
2471
+ // Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
2472
+ // to whichever exists.
2473
+ // Chart-level labels apply to every chart group — a combo chart has
2474
+ // one per series type.
2475
+ const containers = [
2476
+ "c:barChart",
2477
+ "c:lineChart",
2478
+ "c:pieChart",
2479
+ "c:doughnutChart",
2480
+ "c:areaChart",
2481
+ ]
2482
+ .flatMap((k) => (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]))
2483
+ .filter(Boolean);
2484
+ if (!containers.length)
2485
+ return;
2486
+ const dLbls = buildDataLabelsNode(dataLabels);
2469
2487
  for (const container of containers) {
2470
2488
  container["c:dLbls"] = cloneTemplate(dLbls);
2471
2489
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rowsncolumns/toolkit",
3
- "version": "24.5.7",
3
+ "version": "24.5.9",
4
4
  "author": "Vinay M",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "main": "./dist/cjs/index.js",