@rowsncolumns/toolkit 24.5.8 → 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
  }
@@ -2707,7 +2709,7 @@ var mapDataLabelPosition = function (val) {
2707
2709
  };
2708
2710
  function extractDataLabelsOptions(plotArea, chartType) {
2709
2711
  var e_35, _a;
2710
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
2712
+ var _b, _c, _d, _e;
2711
2713
  // Look for <c:dLbls> inside the chartType-specific container. We pick
2712
2714
  // the first one we find — chart-level labels apply to all series.
2713
2715
  // The 3-D classes (bar3DChart / line3DChart / pie3DChart / area3DChart)
@@ -2746,27 +2748,48 @@ function extractDataLabelsOptions(plotArea, chartType) {
2746
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");
2747
2749
  if (!dLbls)
2748
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;
2749
2772
  var result = {};
2750
- 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");
2751
2774
  var position = mapDataLabelPosition(pos);
2752
2775
  if (position)
2753
2776
  result.position = position;
2754
- 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"));
2755
2778
  if (showVal) {
2756
2779
  result.show = true;
2757
2780
  result.showValue = true;
2758
2781
  }
2759
- 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"));
2760
2783
  if (showCat) {
2761
2784
  result.show = true;
2762
2785
  result.showCategoryName = true;
2763
2786
  }
2764
- 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"));
2765
2788
  if (showPct) {
2766
2789
  result.show = true;
2767
2790
  result.showPercent = true;
2768
2791
  }
2769
- 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"));
2770
2793
  if (showSer) {
2771
2794
  result.show = true;
2772
2795
  result.showSeriesName = true;
@@ -2775,14 +2798,14 @@ function extractDataLabelsOptions(plotArea, chartType) {
2775
2798
  if (position && result.show === undefined)
2776
2799
  result.show = true;
2777
2800
  // <c:txPr> on the dLbls block — affects every label in the chart.
2778
- 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"));
2779
2802
  if (textFormat)
2780
2803
  result.textFormat = textFormat;
2781
2804
  // <c:numFmt formatCode="…"/> — Excel uses this to render labels as
2782
2805
  // currency / percent / etc. (`"$"#,##0`, `0.00%`). Without parsing
2783
2806
  // this, the renderer falls back to raw numbers (e.g. `1831` instead
2784
2807
  // of `$1,831`).
2785
- 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$");
2786
2809
  if (typeof numFmt === "string" && numFmt) {
2787
2810
  result.numberFormatPattern = numFmt;
2788
2811
  }
@@ -2170,8 +2170,9 @@ var SERIES_CONTAINER_KEYS = [
2170
2170
  ];
2171
2171
  /**
2172
2172
  * Walk the per-chart-type containers in plotArea and apply trendlines
2173
- * / errBars to each emitted `<c:ser>`. The series order in spec.series
2174
- * 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.
2175
2176
  */
2176
2177
  var applySeriesOverlays = function (plotArea, series, sheetNameById) {
2177
2178
  var e_19, _a, e_20, _b, e_21, _c;
@@ -2222,6 +2223,13 @@ var applySeriesOverlays = function (plotArea, series, sheetNameById) {
2222
2223
  if (built)
2223
2224
  node["c:errBars"] = built;
2224
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
+ }
2225
2233
  }
2226
2234
  }
2227
2235
  catch (e_21_1) { e_21 = { error: e_21_1 }; }
@@ -2717,25 +2725,8 @@ var applyLegend = function (chartNode, legend) {
2717
2725
  }
2718
2726
  chartNode["c:legend"] = __assign({ "c:legendPos": { a$: { val: posCode } }, "c:overlay": { a$: { val: "0" } } }, (txPr ? { "c:txPr": txPr } : {}));
2719
2727
  };
2720
- var applyDataLabels = function (plotArea, dataLabels) {
2721
- var e_27, _a;
2722
- if (!(dataLabels === null || dataLabels === void 0 ? void 0 : dataLabels.show))
2723
- return;
2724
- // Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
2725
- // to whichever exists.
2726
- // Chart-level labels apply to every chart group — a combo chart has
2727
- // one per series type.
2728
- var containers = [
2729
- "c:barChart",
2730
- "c:lineChart",
2731
- "c:pieChart",
2732
- "c:doughnutChart",
2733
- "c:areaChart",
2734
- ]
2735
- .flatMap(function (k) { return (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]); })
2736
- .filter(Boolean);
2737
- if (!containers.length)
2738
- return;
2728
+ /** A `<c:dLbls>` node for `ChartDataLabelsOptions` with `show: true`. */
2729
+ var buildDataLabelsNode = function (dataLabels) {
2739
2730
  var posCode = dataLabels.position && DLBL_POS[dataLabels.position];
2740
2731
  var dLbls = {};
2741
2732
  if (posCode)
@@ -2773,6 +2764,28 @@ var applyDataLabels = function (plotArea, dataLabels) {
2773
2764
  a$: { val: dataLabels.showPercent ? "1" : "0" },
2774
2765
  };
2775
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);
2776
2789
  try {
2777
2790
  for (var containers_1 = __values(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {
2778
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":"AAAA,OAAO,KAAK,EAEV,SAAS,EAGT,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAEhB,UAAU,EACV,UAAU,EACX,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;AAkDnF,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,GAAG,EACd,eAAe,CAAC,EAAE,eAAe,EACjC,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA+P/B;AAqJD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,UAAU,GAAG,IAAI,CAgEnB;AA+DD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,GAAG,GACT,yBAAyB,GAAG,SAAS,CAiBvC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,GAAG,GACT,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAezC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,SAAS,CAepE;AAoED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAOlF;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAS9E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GACX;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAaxD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EAAE,EACvB,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,IAAI,CA6BN;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAiB9E;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYrD,CAAC;AAkEF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,YAAY,EAAE,MAAM,GACnB,IAAI,CAuDN;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,GAAG,GAClB,sBAAsB,GAAG,SAAS,CAsBpC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAoBpD;AA0BD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,GAAG,GAER,KAAK,GACL,QAAQ,GACR,MAAM,GACN,KAAK,GACL,UAAU,GACV,MAAM,GACN,OAAO,GACP,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,GACT,UAAU,GACV,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,CAsFX;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,GAAG,GAEX,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,GACT,YAAY,GACZ,SAAS,CASZ;AAoED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,GAAG,GACZ,MAAM,GAAG,SAAS,CA+CpB;AAyLD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,SAAS,EAAE,CAiMb;AAstBD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,SAAS,EAAE,CA8Hb;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,SAAS,EAAE,CAiBb;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,eAAe,GAChC,sBAAsB,GAAG,IAAI,CAiK/B;AAiQD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG;;;;EAe/C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,GAC7C;IACE,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD,SAAS,CAiCZ"}
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
  }
@@ -2518,6 +2522,25 @@ function extractDataLabelsOptions(plotArea, chartType) {
2518
2522
  get(plotArea, "dLbls");
2519
2523
  if (!dLbls)
2520
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) {
2521
2544
  const result = {};
2522
2545
  const pos = get(dLbls, "c:dLblPos.a$.val") ?? get(dLbls, "dLblPos.a$.val");
2523
2546
  const position = mapDataLabelPosition(pos);
@@ -1962,8 +1962,9 @@ const SERIES_CONTAINER_KEYS = [
1962
1962
  ];
1963
1963
  /**
1964
1964
  * Walk the per-chart-type containers in plotArea and apply trendlines
1965
- * / errBars to each emitted `<c:ser>`. The series order in spec.series
1966
- * 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.
1967
1968
  */
1968
1969
  const applySeriesOverlays = (plotArea, series, sheetNameById) => {
1969
1970
  if (!Array.isArray(series) || !series.length)
@@ -2006,6 +2007,13 @@ const applySeriesOverlays = (plotArea, series, sheetNameById) => {
2006
2007
  if (built)
2007
2008
  node["c:errBars"] = built;
2008
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
+ }
2009
2017
  }
2010
2018
  }
2011
2019
  }
@@ -2416,24 +2424,8 @@ const applyLegend = (chartNode, legend) => {
2416
2424
  ...(txPr ? { "c:txPr": txPr } : {}),
2417
2425
  };
2418
2426
  };
2419
- const applyDataLabels = (plotArea, dataLabels) => {
2420
- if (!dataLabels?.show)
2421
- return;
2422
- // Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
2423
- // to whichever exists.
2424
- // Chart-level labels apply to every chart group — a combo chart has
2425
- // one per series type.
2426
- const containers = [
2427
- "c:barChart",
2428
- "c:lineChart",
2429
- "c:pieChart",
2430
- "c:doughnutChart",
2431
- "c:areaChart",
2432
- ]
2433
- .flatMap((k) => (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]))
2434
- .filter(Boolean);
2435
- if (!containers.length)
2436
- return;
2427
+ /** A `<c:dLbls>` node for `ChartDataLabelsOptions` with `show: true`. */
2428
+ const buildDataLabelsNode = (dataLabels) => {
2437
2429
  const posCode = dataLabels.position && DLBL_POS[dataLabels.position];
2438
2430
  const dLbls = {};
2439
2431
  if (posCode)
@@ -2471,6 +2463,27 @@ const applyDataLabels = (plotArea, dataLabels) => {
2471
2463
  a$: { val: dataLabels.showPercent ? "1" : "0" },
2472
2464
  };
2473
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);
2474
2487
  for (const container of containers) {
2475
2488
  container["c:dLbls"] = cloneTemplate(dLbls);
2476
2489
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rowsncolumns/toolkit",
3
- "version": "24.5.8",
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",