@rowsncolumns/toolkit 24.5.13 → 24.5.14

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.
@@ -21,6 +21,8 @@ export declare const CHART_EX_GRAPHIC_URI = "http://schemas.microsoft.com/office
21
21
  * checked). Returns the `cx:chart` node or undefined for non-chartex anchors.
22
22
  */
23
23
  export declare function getChartExReferenceFromAnchor(anchor: any): any;
24
+ /** Resolves an `_xlchart.v1.N` defined name (chartex ranges go through them) to its range. */
25
+ export type ResolveChartExName = (name: string) => SheetRange | undefined;
24
26
  /**
25
27
  * Split a multi-column hierarchy range (Excel lays the treemap hierarchy out
26
28
  * as columns, top level first, leaf last) into `parentLabels` (one entry per
@@ -30,8 +32,17 @@ export declare const splitHierarchyRange: (range: SheetRange) => {
30
32
  parentLabels: SheetRange[];
31
33
  labels: SheetRange;
32
34
  };
33
- /** Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when unsupported). */
34
- export declare function parseChartExSpec(chartSpaceDom: any, sheetId: number, resolveSheetId?: ResolveSheetId): EmbeddedChart["spec"] | null;
35
+ /**
36
+ * Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when
37
+ * unsupported). Every `<cx:series>` is a series — its name from `<cx:tx>`
38
+ * (linked to the header cell when it is a reference, #1100), its ranges from
39
+ * the `<cx:data>` block its `<cx:dataId>` names — and the per-type options
40
+ * come from `<cx:layoutPr>`: box & whisker visibility + quartile method,
41
+ * histogram binning, waterfall subtotals, treemap label layout
42
+ * (rowsncolumns/spreadsheet#1107). `resolveName` resolves the
43
+ * `_xlchart.v1.N` defined names Excel writes the ranges through.
44
+ */
45
+ export declare function parseChartExSpec(chartSpaceDom: any, sheetId: number, resolveSheetId?: ResolveSheetId, resolveName?: ResolveChartExName): EmbeddedChart["spec"] | null;
35
46
  /** Resolve + parse one chartex part referenced from a drawing anchor. */
36
- export declare function processChartEx(chartTarget: string, drawingPath: string, anchor: any, sheetId: number, zipParser: StreamingZipParser, xmlParser: any, sheetDimensions?: SheetDimensions, resolveSheetId?: ResolveSheetId): Promise<EmbeddedChart | null>;
47
+ export declare function processChartEx(chartTarget: string, drawingPath: string, anchor: any, sheetId: number, zipParser: StreamingZipParser, xmlParser: any, sheetDimensions?: SheetDimensions, resolveSheetId?: ResolveSheetId, resolveName?: ResolveChartExName): Promise<EmbeddedChart | null>;
37
48
  //# sourceMappingURL=chartex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartex.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/chartex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,iBAAiB,mEACoC,CAAC;AACnE,eAAO,MAAM,oBAAoB,6DAC2B,CAAC;AAyB7D;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAoB9D;AA8BD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,KAChB;IAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAalD,CAAC;AAWF,wFAAwF;AACxF,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CA0D9B;AAED,yEAAyE;AACzE,wBAAsB,cAAc,CAClC,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,CAsB/B"}
1
+ {"version":3,"file":"chartex.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/chartex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,iBAAiB,mEACoC,CAAC;AACnE,eAAO,MAAM,oBAAoB,6DAC2B,CAAC;AAyB7D;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAoB9D;AA6BD,8FAA8F;AAC9F,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;AA0B1E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,KAChB;IAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAalD,CAAC;AAgFF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,EAC/B,WAAW,CAAC,EAAE,kBAAkB,GAC/B,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAyJ9B;AAED,yEAAyE;AACzE,wBAAsB,cAAc,CAClC,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,EAC/B,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2B/B"}
@@ -111,19 +111,38 @@ export function getChartExReferenceFromAnchor(anchor) {
111
111
  }
112
112
  return undefined;
113
113
  }
114
- /** `layoutId` → engine chart type. Unknown layouts are not imported. */
115
- var CHART_TYPE_BY_LAYOUT = {
116
- treemap: "treemap",
117
- sunburst: "sunburst",
118
- waterfall: "waterfall",
119
- funnel: "funnel",
120
- boxWhisker: "boxplot",
121
- // `clusteredColumn` is a histogram / pareto only when it carries `<cx:binning>`.
114
+ /**
115
+ * `layoutId` → engine chart type (+ `sourceChartType`). `clusteredColumn` is
116
+ * a histogram only when it carries `<cx:binning>` (else Excel's plain column
117
+ * fallback); `paretoLine` is the cumulative line of a Pareto histogram, not a
118
+ * chart of its own. Unknown layouts are not imported.
119
+ */
120
+ var chartKindOf = function (layoutId, hasBinning) {
121
+ switch (layoutId) {
122
+ case "treemap":
123
+ case "sunburst":
124
+ case "waterfall":
125
+ case "funnel":
126
+ return { chartType: layoutId };
127
+ case "boxWhisker":
128
+ return { chartType: "boxplot" };
129
+ case "regionMap":
130
+ return { chartType: "regionMap", sourceChartType: "REGION_MAP" };
131
+ case "clusteredColumn":
132
+ return { chartType: hasBinning ? "histogram" : "column" };
133
+ default:
134
+ return undefined;
135
+ }
122
136
  };
123
- var sourcesFromRef = function (ref, hostSheetId, resolveSheetId) {
137
+ var sourcesFromRef = function (ref, hostSheetId, resolveSheetId, resolveName) {
124
138
  if (!ref)
125
139
  return [];
126
- var selections = generateSelectionsFromFormula("=".concat(ref));
140
+ var trimmed = ref.trim();
141
+ if (/^_xlchart/i.test(trimmed)) {
142
+ var range = resolveName === null || resolveName === void 0 ? void 0 : resolveName(trimmed);
143
+ return range ? [range] : [];
144
+ }
145
+ var selections = generateSelectionsFromFormula("=".concat(trimmed));
127
146
  return selections.map(function (sel) {
128
147
  var _a;
129
148
  return (__assign(__assign({}, sel.range), { sheetId: (_a = (sel.sheetName ? resolveSheetId === null || resolveSheetId === void 0 ? void 0 : resolveSheetId(sel.sheetName) : undefined)) !== null && _a !== void 0 ? _a : hostSheetId }));
@@ -154,54 +173,287 @@ var dimensionRef = function (data, dimTag, type) {
154
173
  var f = child(dim, "f");
155
174
  return ((_b = textOf(Array.isArray(f) ? f[0] : f)) === null || _b === void 0 ? void 0 : _b.trim()) || undefined;
156
175
  };
157
- /** Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when unsupported). */
158
- export function parseChartExSpec(chartSpaceDom, sheetId, resolveSheetId) {
159
- var _a, _b, _c, _d, _e;
160
- var chartSpace = (_a = child(chartSpaceDom, "chartSpace")) !== null && _a !== void 0 ? _a : chartSpaceDom;
176
+ var flagOf = function (node, name) {
177
+ var raw = get(node, "a$.".concat(name));
178
+ if (raw === undefined || raw === null)
179
+ return undefined;
180
+ return raw === "1" || raw === 1 || raw === "true" || raw === true;
181
+ };
182
+ var numberOf = function (raw) {
183
+ if (raw === undefined || raw === null || raw === "")
184
+ return undefined;
185
+ var n = Number(raw);
186
+ return Number.isFinite(n) ? n : undefined;
187
+ };
188
+ /** `<cx:spPr><a:solidFill><a:srgbClr val>` → `#RRGGBB` (the series or Pareto line fill). */
189
+ var colorOf = function (series) {
190
+ var spPr = child(series, "spPr");
191
+ if (!spPr)
192
+ return undefined;
193
+ var walk = function (node) {
194
+ var e_5, _a;
195
+ if (!node || typeof node !== "object")
196
+ return undefined;
197
+ try {
198
+ for (var _b = __values(Object.keys(node)), _c = _b.next(); !_c.done; _c = _b.next()) {
199
+ var key = _c.value;
200
+ var local = key.includes(":") ? key.slice(key.indexOf(":") + 1) : key;
201
+ var value = node[key];
202
+ if (local === "srgbClr") {
203
+ var first = Array.isArray(value) ? value[0] : value;
204
+ var val = get(first, "a$.val");
205
+ if (typeof val === "string")
206
+ return "#".concat(val.toUpperCase());
207
+ }
208
+ if (local !== "a$") {
209
+ var found = walk(Array.isArray(value) ? value[0] : value);
210
+ if (found)
211
+ return found;
212
+ }
213
+ }
214
+ }
215
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
216
+ finally {
217
+ try {
218
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
219
+ }
220
+ finally { if (e_5) throw e_5.error; }
221
+ }
222
+ return undefined;
223
+ };
224
+ return walk(spPr);
225
+ };
226
+ var CHART_EX_LABEL_POSITIONS = {
227
+ ctr: "center",
228
+ inBase: "insideBase",
229
+ inEnd: "insideEnd",
230
+ outEnd: "outsideEnd",
231
+ t: "above",
232
+ b: "below",
233
+ l: "left",
234
+ r: "right",
235
+ bestFit: "bestFit",
236
+ };
237
+ /** `<cx:dataLabels>` on a series → its `dataLabels`; every visibility flag off is `{ show: false }`. */
238
+ var dataLabelsOf = function (series) {
239
+ var _a, _b;
240
+ var dl = child(series, "dataLabels");
241
+ if (!dl)
242
+ return undefined;
243
+ var vis = child(dl, "visibility");
244
+ var out = {};
245
+ if ((_a = flagOf(vis, "value")) !== null && _a !== void 0 ? _a : true)
246
+ out.showValue = true;
247
+ if (flagOf(vis, "categoryName"))
248
+ out.showCategoryName = true;
249
+ if (flagOf(vis, "seriesName"))
250
+ out.showSeriesName = true;
251
+ var position = CHART_EX_LABEL_POSITIONS[String((_b = get(dl, "a$.pos")) !== null && _b !== void 0 ? _b : "")];
252
+ if (position)
253
+ out.position = position;
254
+ if (!Object.keys(out).length)
255
+ return { show: false };
256
+ return __assign({ show: true }, out);
257
+ };
258
+ var singleCell = function (range) { return (__assign(__assign({}, range), { endRowIndex: range.startRowIndex, endColumnIndex: range.startColumnIndex })); };
259
+ /**
260
+ * Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when
261
+ * unsupported). Every `<cx:series>` is a series — its name from `<cx:tx>`
262
+ * (linked to the header cell when it is a reference, #1100), its ranges from
263
+ * the `<cx:data>` block its `<cx:dataId>` names — and the per-type options
264
+ * come from `<cx:layoutPr>`: box & whisker visibility + quartile method,
265
+ * histogram binning, waterfall subtotals, treemap label layout
266
+ * (rowsncolumns/spreadsheet#1107). `resolveName` resolves the
267
+ * `_xlchart.v1.N` defined names Excel writes the ranges through.
268
+ */
269
+ export function parseChartExSpec(chartSpaceDom, sheetId, resolveSheetId, resolveName) {
270
+ var e_6, _a, e_7, _b;
271
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
272
+ var chartSpace = (_c = child(chartSpaceDom, "chartSpace")) !== null && _c !== void 0 ? _c : chartSpaceDom;
161
273
  var chart = child(chartSpace, "chart");
162
274
  if (!chart)
163
275
  return null;
164
276
  var region = child(child(chart, "plotArea"), "plotAreaRegion");
165
- var series = asArray(child(region, "series"))[0];
166
- if (!series)
277
+ var allSeries = asArray(child(region, "series"));
278
+ var dataSeries = allSeries.filter(function (series) { var _a; return String((_a = get(series, "a$.layoutId")) !== null && _a !== void 0 ? _a : "") !== "paretoLine"; });
279
+ var paretoLine = allSeries.find(function (series) { var _a; return String((_a = get(series, "a$.layoutId")) !== null && _a !== void 0 ? _a : "") === "paretoLine"; });
280
+ var first = dataSeries[0];
281
+ if (!first)
167
282
  return null;
168
- var layoutId = String((_b = get(series, "a$.layoutId")) !== null && _b !== void 0 ? _b : "");
283
+ var layoutId = String((_d = get(first, "a$.layoutId")) !== null && _d !== void 0 ? _d : "");
169
284
  // Excel nests `<cx:binning>` in `<cx:layoutPr>`; tolerate it directly on the series too.
170
- var binning = (_c = child(child(series, "layoutPr"), "binning")) !== null && _c !== void 0 ? _c : child(series, "binning");
171
- var chartType = layoutId === "clusteredColumn" && binning
172
- ? "histogram"
173
- : CHART_TYPE_BY_LAYOUT[layoutId];
174
- if (!chartType)
175
- return null;
176
- var dataId = String((_d = get(child(series, "dataId"), "a$.val")) !== null && _d !== void 0 ? _d : "0");
177
- var data = (_e = asArray(child(child(chartSpace, "chartData"), "data")).find(function (d) { return String(get(d, "a$.id")) === dataId; })) !== null && _e !== void 0 ? _e : asArray(child(child(chartSpace, "chartData"), "data"))[0];
178
- if (!data)
285
+ var layoutPr = child(first, "layoutPr");
286
+ var binning = (_e = child(layoutPr, "binning")) !== null && _e !== void 0 ? _e : child(first, "binning");
287
+ var kind = chartKindOf(layoutId, Boolean(binning));
288
+ if (!kind)
179
289
  return null;
290
+ var chartType = kind.chartType;
291
+ var hierarchy = chartType === "treemap" || chartType === "sunburst";
292
+ var dataBlocks = asArray(child(child(chartSpace, "chartData"), "data"));
293
+ var blockFor = function (series) {
294
+ var _a, _b;
295
+ var dataId = String((_a = get(child(series, "dataId"), "a$.val")) !== null && _a !== void 0 ? _a : "0");
296
+ return ((_b = dataBlocks.find(function (d) { return String(get(d, "a$.id")) === dataId; })) !== null && _b !== void 0 ? _b : dataBlocks[0]);
297
+ };
298
+ var sources = function (ref) {
299
+ return sourcesFromRef(ref, sheetId, resolveSheetId, resolveName);
300
+ };
180
301
  var title = textOf(child(child(child(child(chart, "title"), "tx"), "txData"), "v"));
181
- var catRef = dimensionRef(data, "strDim", "cat");
182
- var catSources = sourcesFromRef(catRef, sheetId, resolveSheetId);
183
- if (chartType === "treemap" || chartType === "sunburst") {
184
- var sizeRef = dimensionRef(data, "numDim", "size");
185
- var sizeSources = sourcesFromRef(sizeRef, sheetId, resolveSheetId);
302
+ var spec = { chartType: chartType };
303
+ if (kind.sourceChartType)
304
+ spec.sourceChartType = kind.sourceChartType;
305
+ if (title)
306
+ spec.title = title;
307
+ if (hierarchy) {
308
+ var data = blockFor(first);
309
+ if (!data)
310
+ return null;
311
+ var catSources = sources(dimensionRef(data, "strDim", "cat"));
312
+ var sizeSources = sources((_f = dimensionRef(data, "numDim", "size")) !== null && _f !== void 0 ? _f : dimensionRef(data, "numDim", "val"));
186
313
  if (!catSources.length || !sizeSources.length)
187
314
  return null;
188
- var hierarchy = splitHierarchyRange(catSources[0]);
189
- return __assign(__assign({ chartType: chartType }, (title ? { title: title } : {})), { labels: [chartData([hierarchy.labels])], parentLabels: hierarchy.parentLabels.map(function (range) { return chartData([range]); }), sizeData: [chartData(sizeSources)] });
315
+ var hierarchyRanges = splitHierarchyRange(catSources[0]);
316
+ spec.labels = [chartData([hierarchyRanges.labels])];
317
+ spec.parentLabels = hierarchyRanges.parentLabels.map(function (range) { return chartData([range]); });
318
+ spec.sizeData = [chartData(sizeSources)];
319
+ spec.useFirstRowAsHeaders = false;
320
+ if (chartType === "treemap") {
321
+ var layout = String((_g = get(child(layoutPr, "parentLabelLayout"), "a$.val")) !== null && _g !== void 0 ? _g : "");
322
+ if (layout === "banner" || layout === "overlapping" || layout === "none") {
323
+ spec.parentLabelLayout = layout;
324
+ }
325
+ }
190
326
  }
191
- var valRef = dimensionRef(data, "numDim", "val");
192
- var valSources = sourcesFromRef(valRef, sheetId, resolveSheetId);
193
- if (!valSources.length)
194
- return null;
195
- var spec = __assign(__assign(__assign({ chartType: chartType }, (title ? { title: title } : {})), { series: [chartData(valSources)] }), (catSources.length ? { domains: [chartData(catSources)] } : {}));
196
- if (chartType === "histogram") {
197
- var binCount = Number(get(child(binning, "binCount"), "a$.val"));
198
- if (Number.isFinite(binCount) && binCount > 0)
199
- spec.binCount = binCount;
327
+ else {
328
+ var series = [];
329
+ var domains = void 0;
330
+ var chartDataLabels = void 0;
331
+ try {
332
+ for (var dataSeries_1 = __values(dataSeries), dataSeries_1_1 = dataSeries_1.next(); !dataSeries_1_1.done; dataSeries_1_1 = dataSeries_1.next()) {
333
+ var entry = dataSeries_1_1.value;
334
+ var data = blockFor(entry);
335
+ if (!data)
336
+ continue;
337
+ var valSources = sources((_h = dimensionRef(data, "numDim", "val")) !== null && _h !== void 0 ? _h : dimensionRef(data, "numDim", "size"));
338
+ if (!valSources.length)
339
+ continue;
340
+ var txData = child(child(entry, "tx"), "txData");
341
+ var nameRef = (_j = textOf(child(txData, "f"))) === null || _j === void 0 ? void 0 : _j.trim();
342
+ var nameSource = nameRef ? sources(nameRef)[0] : undefined;
343
+ var item = __assign(__assign({ dataLabel: (_k = textOf(child(txData, "v"))) !== null && _k !== void 0 ? _k : "Series ".concat(series.length + 1) }, (nameSource ? { dataLabelSource: singleCell(nameSource) } : {})), { sources: valSources });
344
+ var color = colorOf(entry);
345
+ if (color)
346
+ item.color = color;
347
+ var labels = dataLabelsOf(entry);
348
+ if (labels) {
349
+ item.dataLabels = labels;
350
+ chartDataLabels !== null && chartDataLabels !== void 0 ? chartDataLabels : (chartDataLabels = labels);
351
+ }
352
+ if (!domains) {
353
+ var catSources = sources(dimensionRef(data, "strDim", "cat"));
354
+ if (catSources.length)
355
+ domains = [chartData(catSources)];
356
+ }
357
+ series.push(item);
358
+ }
359
+ }
360
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
361
+ finally {
362
+ try {
363
+ if (dataSeries_1_1 && !dataSeries_1_1.done && (_a = dataSeries_1.return)) _a.call(dataSeries_1);
364
+ }
365
+ finally { if (e_6) throw e_6.error; }
366
+ }
367
+ if (!series.length)
368
+ return null;
369
+ spec.series = series;
370
+ if (domains)
371
+ spec.domains = domains;
372
+ if (chartDataLabels)
373
+ spec.dataLabels = chartDataLabels;
374
+ }
375
+ if (paretoLine) {
376
+ spec.sourceChartType = "PARETO";
377
+ var color = colorOf(paretoLine);
378
+ if (color)
379
+ spec.paretoLineColor = color;
380
+ }
381
+ if (chartType === "boxplot") {
382
+ var vis = child(layoutPr, "visibility");
383
+ if (flagOf(vis, "outliers") === false)
384
+ spec.showOutliers = false;
385
+ if (flagOf(vis, "meanMarker"))
386
+ spec.showMeanMarker = true;
387
+ if (flagOf(vis, "nonoutliers"))
388
+ spec.showInnerPoints = true;
389
+ if (flagOf(vis, "meanLine"))
390
+ spec.showMeanLine = true;
391
+ var method = String((_l = get(child(layoutPr, "statistics"), "a$.quartileMethod")) !== null && _l !== void 0 ? _l : "");
392
+ if (method === "inclusive" || method === "exclusive")
393
+ spec.quartileMethod = method;
394
+ }
395
+ if (binning) {
396
+ var binSize = numberOf(get(child(binning, "binSize"), "a$.val"));
397
+ if (binSize !== undefined && binSize > 0)
398
+ spec.binSize = binSize;
399
+ var binCount = numberOf(get(child(binning, "binCount"), "a$.val"));
400
+ if (binCount !== undefined && binCount >= 1)
401
+ spec.binCount = Math.round(binCount);
402
+ if (get(binning, "a$.intervalClosed") === "l")
403
+ spec.intervalClosed = "l";
404
+ var overflow = numberOf(get(binning, "a$.overflow"));
405
+ if (overflow !== undefined)
406
+ spec.overflow = overflow;
407
+ var underflow = numberOf(get(binning, "a$.underflow"));
408
+ if (underflow !== undefined)
409
+ spec.underflow = underflow;
410
+ }
411
+ if (chartType === "waterfall") {
412
+ var totals = asArray(child(child(layoutPr, "subtotals"), "idx"))
413
+ .map(function (idx) { return numberOf(get(idx, "a$.val")); })
414
+ .filter(function (n) { return n !== undefined; });
415
+ if (totals.length)
416
+ spec.totalIndices = totals;
417
+ }
418
+ // chartex writes `<cx:legend pos>` only when the legend is shown.
419
+ var legendPos = String((_m = get(child(chart, "legend"), "a$.pos")) !== null && _m !== void 0 ? _m : "");
420
+ spec.legend = {
421
+ position: (_o = { t: "top", b: "bottom", l: "left", r: "right", tr: "topRight" }[legendPos]) !== null && _o !== void 0 ? _o : "none",
422
+ };
423
+ try {
424
+ // Axes: the value axis' scale and gridlines, the category axis' gap (a fraction of the bar width).
425
+ for (var _p = __values(asArray(child(child(chart, "plotArea"), "axis"))), _q = _p.next(); !_q.done; _q = _p.next()) {
426
+ var axis = _q.value;
427
+ var valScaling = child(axis, "valScaling");
428
+ if (valScaling) {
429
+ var options = {};
430
+ var min = numberOf(get(valScaling, "a$.min"));
431
+ var max = numberOf(get(valScaling, "a$.max"));
432
+ if (min !== undefined)
433
+ options.min = min;
434
+ if (max !== undefined)
435
+ options.max = max;
436
+ if (!child(axis, "majorGridlines"))
437
+ options.showMajorGridlines = false;
438
+ if (Object.keys(options).length)
439
+ spec.valueAxisOptions = options;
440
+ }
441
+ var gap = numberOf(get(child(axis, "catScaling"), "a$.gapWidth"));
442
+ if (gap !== undefined)
443
+ spec.gapWidth = Math.round(gap * 100);
444
+ }
445
+ }
446
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
447
+ finally {
448
+ try {
449
+ if (_q && !_q.done && (_b = _p.return)) _b.call(_p);
450
+ }
451
+ finally { if (e_7) throw e_7.error; }
200
452
  }
201
453
  return spec;
202
454
  }
203
455
  /** Resolve + parse one chartex part referenced from a drawing anchor. */
204
- export function processChartEx(chartTarget, drawingPath, anchor, sheetId, zipParser, xmlParser, sheetDimensions, resolveSheetId) {
456
+ export function processChartEx(chartTarget, drawingPath, anchor, sheetId, zipParser, xmlParser, sheetDimensions, resolveSheetId, resolveName) {
205
457
  return __awaiter(this, void 0, void 0, function () {
206
458
  var chartPath, drawingDir, content, _a, spec, position;
207
459
  return __generator(this, function (_b) {
@@ -231,7 +483,7 @@ export function processChartEx(chartTarget, drawingPath, anchor, sheetId, zipPar
231
483
  case 4:
232
484
  if (!content)
233
485
  return [2 /*return*/, null];
234
- spec = parseChartExSpec(xmlParser.parse(content), sheetId, resolveSheetId);
486
+ spec = parseChartExSpec(xmlParser.parse(content), sheetId, resolveSheetId, resolveName);
235
487
  if (!spec)
236
488
  return [2 /*return*/, null];
237
489
  position = extractChartPosition(anchor, sheetId, sheetDimensions);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"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"}
@@ -3319,6 +3319,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3319
3319
  return __awaiter(this, void 0, void 0, function () {
3320
3320
  var charts, sheetDimensions, target, path, sheetIdByName, _a, _b, sheet, name_5, sId, resolveSheetId, drawing, drawings, sheetRelPath, sheetRelContent, sheetRels, drawingRelations, drawingRelationsArray, _loop_4, this_2, drawings_1, drawings_1_1, drawingElement, e_26_1, err_5;
3321
3321
  var e_27, _c, e_26, _d;
3322
+ var _this = this;
3322
3323
  var _e, _f;
3323
3324
  return __generator(this, function (_g) {
3324
3325
  switch (_g.label) {
@@ -3436,7 +3437,13 @@ var XlsxPlugin = /** @class */ (function (_super) {
3436
3437
  })
3437
3438
  : undefined;
3438
3439
  if (!chartExRel) return [3 /*break*/, 2];
3439
- return [4 /*yield*/, processChartEx(chartExRel.a$.Target, drawingPath, anchor, sheetId, this_2.zipParser, this_2.xmlParser, sheetDimensions, resolveSheetId)];
3440
+ return [4 /*yield*/, processChartEx(chartExRel.a$.Target, drawingPath, anchor, sheetId, this_2.zipParser, this_2.xmlParser, sheetDimensions, resolveSheetId,
3441
+ // Excel writes the chartex ranges as `_xlchart.v1.N` defined
3442
+ // names (rowsncolumns/spreadsheet#1107).
3443
+ function (name) {
3444
+ var _a, _b, _c;
3445
+ return (_c = (_b = ((_a = _this.namedRanges) !== null && _a !== void 0 ? _a : []).find(function (named) { return named.name === name; })) === null || _b === void 0 ? void 0 : _b.range) !== null && _c !== void 0 ? _c : undefined;
3446
+ })];
3440
3447
  case 1:
3441
3448
  chartEx = _o.sent();
3442
3449
  if (chartEx) {
@@ -21,6 +21,8 @@ export declare const CHART_EX_GRAPHIC_URI = "http://schemas.microsoft.com/office
21
21
  * checked). Returns the `cx:chart` node or undefined for non-chartex anchors.
22
22
  */
23
23
  export declare function getChartExReferenceFromAnchor(anchor: any): any;
24
+ /** Resolves an `_xlchart.v1.N` defined name (chartex ranges go through them) to its range. */
25
+ export type ResolveChartExName = (name: string) => SheetRange | undefined;
24
26
  /**
25
27
  * Split a multi-column hierarchy range (Excel lays the treemap hierarchy out
26
28
  * as columns, top level first, leaf last) into `parentLabels` (one entry per
@@ -30,8 +32,17 @@ export declare const splitHierarchyRange: (range: SheetRange) => {
30
32
  parentLabels: SheetRange[];
31
33
  labels: SheetRange;
32
34
  };
33
- /** Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when unsupported). */
34
- export declare function parseChartExSpec(chartSpaceDom: any, sheetId: number, resolveSheetId?: ResolveSheetId): EmbeddedChart["spec"] | null;
35
+ /**
36
+ * Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when
37
+ * unsupported). Every `<cx:series>` is a series — its name from `<cx:tx>`
38
+ * (linked to the header cell when it is a reference, #1100), its ranges from
39
+ * the `<cx:data>` block its `<cx:dataId>` names — and the per-type options
40
+ * come from `<cx:layoutPr>`: box & whisker visibility + quartile method,
41
+ * histogram binning, waterfall subtotals, treemap label layout
42
+ * (rowsncolumns/spreadsheet#1107). `resolveName` resolves the
43
+ * `_xlchart.v1.N` defined names Excel writes the ranges through.
44
+ */
45
+ export declare function parseChartExSpec(chartSpaceDom: any, sheetId: number, resolveSheetId?: ResolveSheetId, resolveName?: ResolveChartExName): EmbeddedChart["spec"] | null;
35
46
  /** Resolve + parse one chartex part referenced from a drawing anchor. */
36
- export declare function processChartEx(chartTarget: string, drawingPath: string, anchor: any, sheetId: number, zipParser: StreamingZipParser, xmlParser: any, sheetDimensions?: SheetDimensions, resolveSheetId?: ResolveSheetId): Promise<EmbeddedChart | null>;
47
+ export declare function processChartEx(chartTarget: string, drawingPath: string, anchor: any, sheetId: number, zipParser: StreamingZipParser, xmlParser: any, sheetDimensions?: SheetDimensions, resolveSheetId?: ResolveSheetId, resolveName?: ResolveChartExName): Promise<EmbeddedChart | null>;
37
48
  //# sourceMappingURL=chartex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartex.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/chartex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,iBAAiB,mEACoC,CAAC;AACnE,eAAO,MAAM,oBAAoB,6DAC2B,CAAC;AAyB7D;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAoB9D;AA8BD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,KAChB;IAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAalD,CAAC;AAWF,wFAAwF;AACxF,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CA0D9B;AAED,yEAAyE;AACzE,wBAAsB,cAAc,CAClC,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,CAsB/B"}
1
+ {"version":3,"file":"chartex.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/chartex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,iBAAiB,mEACoC,CAAC;AACnE,eAAO,MAAM,oBAAoB,6DAC2B,CAAC;AAyB7D;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAoB9D;AA6BD,8FAA8F;AAC9F,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;AA0B1E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,KAChB;IAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAalD,CAAC;AAgFF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,EAC/B,WAAW,CAAC,EAAE,kBAAkB,GAC/B,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAyJ9B;AAED,yEAAyE;AACzE,wBAAsB,cAAc,CAClC,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,EAC/B,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2B/B"}
@@ -66,19 +66,38 @@ export function getChartExReferenceFromAnchor(anchor) {
66
66
  }
67
67
  return undefined;
68
68
  }
69
- /** `layoutId` → engine chart type. Unknown layouts are not imported. */
70
- const CHART_TYPE_BY_LAYOUT = {
71
- treemap: "treemap",
72
- sunburst: "sunburst",
73
- waterfall: "waterfall",
74
- funnel: "funnel",
75
- boxWhisker: "boxplot",
76
- // `clusteredColumn` is a histogram / pareto only when it carries `<cx:binning>`.
69
+ /**
70
+ * `layoutId` → engine chart type (+ `sourceChartType`). `clusteredColumn` is
71
+ * a histogram only when it carries `<cx:binning>` (else Excel's plain column
72
+ * fallback); `paretoLine` is the cumulative line of a Pareto histogram, not a
73
+ * chart of its own. Unknown layouts are not imported.
74
+ */
75
+ const chartKindOf = (layoutId, hasBinning) => {
76
+ switch (layoutId) {
77
+ case "treemap":
78
+ case "sunburst":
79
+ case "waterfall":
80
+ case "funnel":
81
+ return { chartType: layoutId };
82
+ case "boxWhisker":
83
+ return { chartType: "boxplot" };
84
+ case "regionMap":
85
+ return { chartType: "regionMap", sourceChartType: "REGION_MAP" };
86
+ case "clusteredColumn":
87
+ return { chartType: hasBinning ? "histogram" : "column" };
88
+ default:
89
+ return undefined;
90
+ }
77
91
  };
78
- const sourcesFromRef = (ref, hostSheetId, resolveSheetId) => {
92
+ const sourcesFromRef = (ref, hostSheetId, resolveSheetId, resolveName) => {
79
93
  if (!ref)
80
94
  return [];
81
- const selections = generateSelectionsFromFormula(`=${ref}`);
95
+ const trimmed = ref.trim();
96
+ if (/^_xlchart/i.test(trimmed)) {
97
+ const range = resolveName?.(trimmed);
98
+ return range ? [range] : [];
99
+ }
100
+ const selections = generateSelectionsFromFormula(`=${trimmed}`);
82
101
  return selections.map((sel) => ({
83
102
  ...sel.range,
84
103
  sheetId: (sel.sheetName ? resolveSheetId?.(sel.sheetName) : undefined) ??
@@ -111,64 +130,259 @@ const dimensionRef = (data, dimTag, type) => {
111
130
  const f = child(dim, "f");
112
131
  return textOf(Array.isArray(f) ? f[0] : f)?.trim() || undefined;
113
132
  };
114
- /** Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when unsupported). */
115
- export function parseChartExSpec(chartSpaceDom, sheetId, resolveSheetId) {
133
+ const flagOf = (node, name) => {
134
+ const raw = get(node, `a$.${name}`);
135
+ if (raw === undefined || raw === null)
136
+ return undefined;
137
+ return raw === "1" || raw === 1 || raw === "true" || raw === true;
138
+ };
139
+ const numberOf = (raw) => {
140
+ if (raw === undefined || raw === null || raw === "")
141
+ return undefined;
142
+ const n = Number(raw);
143
+ return Number.isFinite(n) ? n : undefined;
144
+ };
145
+ /** `<cx:spPr><a:solidFill><a:srgbClr val>` → `#RRGGBB` (the series or Pareto line fill). */
146
+ const colorOf = (series) => {
147
+ const spPr = child(series, "spPr");
148
+ if (!spPr)
149
+ return undefined;
150
+ const walk = (node) => {
151
+ if (!node || typeof node !== "object")
152
+ return undefined;
153
+ for (const key of Object.keys(node)) {
154
+ const local = key.includes(":") ? key.slice(key.indexOf(":") + 1) : key;
155
+ const value = node[key];
156
+ if (local === "srgbClr") {
157
+ const first = Array.isArray(value) ? value[0] : value;
158
+ const val = get(first, "a$.val");
159
+ if (typeof val === "string")
160
+ return `#${val.toUpperCase()}`;
161
+ }
162
+ if (local !== "a$") {
163
+ const found = walk(Array.isArray(value) ? value[0] : value);
164
+ if (found)
165
+ return found;
166
+ }
167
+ }
168
+ return undefined;
169
+ };
170
+ return walk(spPr);
171
+ };
172
+ const CHART_EX_LABEL_POSITIONS = {
173
+ ctr: "center",
174
+ inBase: "insideBase",
175
+ inEnd: "insideEnd",
176
+ outEnd: "outsideEnd",
177
+ t: "above",
178
+ b: "below",
179
+ l: "left",
180
+ r: "right",
181
+ bestFit: "bestFit",
182
+ };
183
+ /** `<cx:dataLabels>` on a series → its `dataLabels`; every visibility flag off is `{ show: false }`. */
184
+ const dataLabelsOf = (series) => {
185
+ const dl = child(series, "dataLabels");
186
+ if (!dl)
187
+ return undefined;
188
+ const vis = child(dl, "visibility");
189
+ const out = {};
190
+ if (flagOf(vis, "value") ?? true)
191
+ out.showValue = true;
192
+ if (flagOf(vis, "categoryName"))
193
+ out.showCategoryName = true;
194
+ if (flagOf(vis, "seriesName"))
195
+ out.showSeriesName = true;
196
+ const position = CHART_EX_LABEL_POSITIONS[String(get(dl, "a$.pos") ?? "")];
197
+ if (position)
198
+ out.position = position;
199
+ if (!Object.keys(out).length)
200
+ return { show: false };
201
+ return { show: true, ...out };
202
+ };
203
+ const singleCell = (range) => ({
204
+ ...range,
205
+ endRowIndex: range.startRowIndex,
206
+ endColumnIndex: range.startColumnIndex,
207
+ });
208
+ /**
209
+ * Parse a `cx:chartSpace` DOM into an `EmbeddedChart` spec (null when
210
+ * unsupported). Every `<cx:series>` is a series — its name from `<cx:tx>`
211
+ * (linked to the header cell when it is a reference, #1100), its ranges from
212
+ * the `<cx:data>` block its `<cx:dataId>` names — and the per-type options
213
+ * come from `<cx:layoutPr>`: box & whisker visibility + quartile method,
214
+ * histogram binning, waterfall subtotals, treemap label layout
215
+ * (rowsncolumns/spreadsheet#1107). `resolveName` resolves the
216
+ * `_xlchart.v1.N` defined names Excel writes the ranges through.
217
+ */
218
+ export function parseChartExSpec(chartSpaceDom, sheetId, resolveSheetId, resolveName) {
116
219
  const chartSpace = child(chartSpaceDom, "chartSpace") ?? chartSpaceDom;
117
220
  const chart = child(chartSpace, "chart");
118
221
  if (!chart)
119
222
  return null;
120
223
  const region = child(child(chart, "plotArea"), "plotAreaRegion");
121
- const series = asArray(child(region, "series"))[0];
122
- if (!series)
224
+ const allSeries = asArray(child(region, "series"));
225
+ const dataSeries = allSeries.filter((series) => String(get(series, "a$.layoutId") ?? "") !== "paretoLine");
226
+ const paretoLine = allSeries.find((series) => String(get(series, "a$.layoutId") ?? "") === "paretoLine");
227
+ const first = dataSeries[0];
228
+ if (!first)
123
229
  return null;
124
- const layoutId = String(get(series, "a$.layoutId") ?? "");
230
+ const layoutId = String(get(first, "a$.layoutId") ?? "");
125
231
  // Excel nests `<cx:binning>` in `<cx:layoutPr>`; tolerate it directly on the series too.
126
- const binning = child(child(series, "layoutPr"), "binning") ?? child(series, "binning");
127
- const chartType = layoutId === "clusteredColumn" && binning
128
- ? "histogram"
129
- : CHART_TYPE_BY_LAYOUT[layoutId];
130
- if (!chartType)
131
- return null;
132
- const dataId = String(get(child(series, "dataId"), "a$.val") ?? "0");
133
- const data = asArray(child(child(chartSpace, "chartData"), "data")).find((d) => String(get(d, "a$.id")) === dataId) ?? asArray(child(child(chartSpace, "chartData"), "data"))[0];
134
- if (!data)
232
+ const layoutPr = child(first, "layoutPr");
233
+ const binning = child(layoutPr, "binning") ?? child(first, "binning");
234
+ const kind = chartKindOf(layoutId, Boolean(binning));
235
+ if (!kind)
135
236
  return null;
237
+ const { chartType } = kind;
238
+ const hierarchy = chartType === "treemap" || chartType === "sunburst";
239
+ const dataBlocks = asArray(child(child(chartSpace, "chartData"), "data"));
240
+ const blockFor = (series) => {
241
+ const dataId = String(get(child(series, "dataId"), "a$.val") ?? "0");
242
+ return (dataBlocks.find((d) => String(get(d, "a$.id")) === dataId) ??
243
+ dataBlocks[0]);
244
+ };
245
+ const sources = (ref) => sourcesFromRef(ref, sheetId, resolveSheetId, resolveName);
136
246
  const title = textOf(child(child(child(child(chart, "title"), "tx"), "txData"), "v"));
137
- const catRef = dimensionRef(data, "strDim", "cat");
138
- const catSources = sourcesFromRef(catRef, sheetId, resolveSheetId);
139
- if (chartType === "treemap" || chartType === "sunburst") {
140
- const sizeRef = dimensionRef(data, "numDim", "size");
141
- const sizeSources = sourcesFromRef(sizeRef, sheetId, resolveSheetId);
247
+ const spec = { chartType };
248
+ if (kind.sourceChartType)
249
+ spec.sourceChartType = kind.sourceChartType;
250
+ if (title)
251
+ spec.title = title;
252
+ if (hierarchy) {
253
+ const data = blockFor(first);
254
+ if (!data)
255
+ return null;
256
+ const catSources = sources(dimensionRef(data, "strDim", "cat"));
257
+ const sizeSources = sources(dimensionRef(data, "numDim", "size") ?? dimensionRef(data, "numDim", "val"));
142
258
  if (!catSources.length || !sizeSources.length)
143
259
  return null;
144
- const hierarchy = splitHierarchyRange(catSources[0]);
145
- return {
146
- chartType,
147
- ...(title ? { title } : {}),
148
- labels: [chartData([hierarchy.labels])],
149
- parentLabels: hierarchy.parentLabels.map((range) => chartData([range])),
150
- sizeData: [chartData(sizeSources)],
151
- };
152
- }
153
- const valRef = dimensionRef(data, "numDim", "val");
154
- const valSources = sourcesFromRef(valRef, sheetId, resolveSheetId);
155
- if (!valSources.length)
156
- return null;
157
- const spec = {
158
- chartType,
159
- ...(title ? { title } : {}),
160
- series: [chartData(valSources)],
161
- ...(catSources.length ? { domains: [chartData(catSources)] } : {}),
260
+ const hierarchyRanges = splitHierarchyRange(catSources[0]);
261
+ spec.labels = [chartData([hierarchyRanges.labels])];
262
+ spec.parentLabels = hierarchyRanges.parentLabels.map((range) => chartData([range]));
263
+ spec.sizeData = [chartData(sizeSources)];
264
+ spec.useFirstRowAsHeaders = false;
265
+ if (chartType === "treemap") {
266
+ const layout = String(get(child(layoutPr, "parentLabelLayout"), "a$.val") ?? "");
267
+ if (layout === "banner" || layout === "overlapping" || layout === "none") {
268
+ spec.parentLabelLayout = layout;
269
+ }
270
+ }
271
+ }
272
+ else {
273
+ const series = [];
274
+ let domains;
275
+ let chartDataLabels;
276
+ for (const entry of dataSeries) {
277
+ const data = blockFor(entry);
278
+ if (!data)
279
+ continue;
280
+ const valSources = sources(dimensionRef(data, "numDim", "val") ?? dimensionRef(data, "numDim", "size"));
281
+ if (!valSources.length)
282
+ continue;
283
+ const txData = child(child(entry, "tx"), "txData");
284
+ const nameRef = textOf(child(txData, "f"))?.trim();
285
+ const nameSource = nameRef ? sources(nameRef)[0] : undefined;
286
+ const item = {
287
+ dataLabel: textOf(child(txData, "v")) ?? `Series ${series.length + 1}`,
288
+ ...(nameSource ? { dataLabelSource: singleCell(nameSource) } : {}),
289
+ sources: valSources,
290
+ };
291
+ const color = colorOf(entry);
292
+ if (color)
293
+ item.color = color;
294
+ const labels = dataLabelsOf(entry);
295
+ if (labels) {
296
+ item.dataLabels = labels;
297
+ chartDataLabels ??= labels;
298
+ }
299
+ if (!domains) {
300
+ const catSources = sources(dimensionRef(data, "strDim", "cat"));
301
+ if (catSources.length)
302
+ domains = [chartData(catSources)];
303
+ }
304
+ series.push(item);
305
+ }
306
+ if (!series.length)
307
+ return null;
308
+ spec.series = series;
309
+ if (domains)
310
+ spec.domains = domains;
311
+ if (chartDataLabels)
312
+ spec.dataLabels = chartDataLabels;
313
+ }
314
+ if (paretoLine) {
315
+ spec.sourceChartType = "PARETO";
316
+ const color = colorOf(paretoLine);
317
+ if (color)
318
+ spec.paretoLineColor = color;
319
+ }
320
+ if (chartType === "boxplot") {
321
+ const vis = child(layoutPr, "visibility");
322
+ if (flagOf(vis, "outliers") === false)
323
+ spec.showOutliers = false;
324
+ if (flagOf(vis, "meanMarker"))
325
+ spec.showMeanMarker = true;
326
+ if (flagOf(vis, "nonoutliers"))
327
+ spec.showInnerPoints = true;
328
+ if (flagOf(vis, "meanLine"))
329
+ spec.showMeanLine = true;
330
+ const method = String(get(child(layoutPr, "statistics"), "a$.quartileMethod") ?? "");
331
+ if (method === "inclusive" || method === "exclusive")
332
+ spec.quartileMethod = method;
333
+ }
334
+ if (binning) {
335
+ const binSize = numberOf(get(child(binning, "binSize"), "a$.val"));
336
+ if (binSize !== undefined && binSize > 0)
337
+ spec.binSize = binSize;
338
+ const binCount = numberOf(get(child(binning, "binCount"), "a$.val"));
339
+ if (binCount !== undefined && binCount >= 1)
340
+ spec.binCount = Math.round(binCount);
341
+ if (get(binning, "a$.intervalClosed") === "l")
342
+ spec.intervalClosed = "l";
343
+ const overflow = numberOf(get(binning, "a$.overflow"));
344
+ if (overflow !== undefined)
345
+ spec.overflow = overflow;
346
+ const underflow = numberOf(get(binning, "a$.underflow"));
347
+ if (underflow !== undefined)
348
+ spec.underflow = underflow;
349
+ }
350
+ if (chartType === "waterfall") {
351
+ const totals = asArray(child(child(layoutPr, "subtotals"), "idx"))
352
+ .map((idx) => numberOf(get(idx, "a$.val")))
353
+ .filter((n) => n !== undefined);
354
+ if (totals.length)
355
+ spec.totalIndices = totals;
356
+ }
357
+ // chartex writes `<cx:legend pos>` only when the legend is shown.
358
+ const legendPos = String(get(child(chart, "legend"), "a$.pos") ?? "");
359
+ spec.legend = {
360
+ position: { t: "top", b: "bottom", l: "left", r: "right", tr: "topRight" }[legendPos] ?? "none",
162
361
  };
163
- if (chartType === "histogram") {
164
- const binCount = Number(get(child(binning, "binCount"), "a$.val"));
165
- if (Number.isFinite(binCount) && binCount > 0)
166
- spec.binCount = binCount;
362
+ // Axes: the value axis' scale and gridlines, the category axis' gap (a fraction of the bar width).
363
+ for (const axis of asArray(child(child(chart, "plotArea"), "axis"))) {
364
+ const valScaling = child(axis, "valScaling");
365
+ if (valScaling) {
366
+ const options = {};
367
+ const min = numberOf(get(valScaling, "a$.min"));
368
+ const max = numberOf(get(valScaling, "a$.max"));
369
+ if (min !== undefined)
370
+ options.min = min;
371
+ if (max !== undefined)
372
+ options.max = max;
373
+ if (!child(axis, "majorGridlines"))
374
+ options.showMajorGridlines = false;
375
+ if (Object.keys(options).length)
376
+ spec.valueAxisOptions = options;
377
+ }
378
+ const gap = numberOf(get(child(axis, "catScaling"), "a$.gapWidth"));
379
+ if (gap !== undefined)
380
+ spec.gapWidth = Math.round(gap * 100);
167
381
  }
168
382
  return spec;
169
383
  }
170
384
  /** Resolve + parse one chartex part referenced from a drawing anchor. */
171
- export async function processChartEx(chartTarget, drawingPath, anchor, sheetId, zipParser, xmlParser, sheetDimensions, resolveSheetId) {
385
+ export async function processChartEx(chartTarget, drawingPath, anchor, sheetId, zipParser, xmlParser, sheetDimensions, resolveSheetId, resolveName) {
172
386
  let chartPath = chartTarget;
173
387
  const drawingDir = drawingPath.substring(0, drawingPath.lastIndexOf("/"));
174
388
  if (chartPath.startsWith("/")) {
@@ -189,7 +403,7 @@ export async function processChartEx(chartTarget, drawingPath, anchor, sheetId,
189
403
  }
190
404
  if (!content)
191
405
  return null;
192
- const spec = parseChartExSpec(xmlParser.parse(content), sheetId, resolveSheetId);
406
+ const spec = parseChartExSpec(xmlParser.parse(content), sheetId, resolveSheetId, resolveName);
193
407
  if (!spec)
194
408
  return null;
195
409
  const position = extractChartPosition(anchor, sheetId, sheetDimensions);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"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"}
@@ -3028,7 +3028,10 @@ export class XlsxPlugin extends BaseWorkbookPlugin {
3028
3028
  get(rel, "a$.id") === chartExRId)
3029
3029
  : undefined;
3030
3030
  if (chartExRel) {
3031
- const chartEx = await processChartEx(chartExRel.a$.Target, drawingPath, anchor, sheetId, this.zipParser, this.xmlParser, sheetDimensions, resolveSheetId);
3031
+ const chartEx = await processChartEx(chartExRel.a$.Target, drawingPath, anchor, sheetId, this.zipParser, this.xmlParser, sheetDimensions, resolveSheetId,
3032
+ // Excel writes the chartex ranges as `_xlchart.v1.N` defined
3033
+ // names (rowsncolumns/spreadsheet#1107).
3034
+ (name) => (this.namedRanges ?? []).find((named) => named.name === name)?.range ?? undefined);
3032
3035
  if (chartEx) {
3033
3036
  chartEx.position = { ...chartEx.position, zOrder };
3034
3037
  charts.push(chartEx);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rowsncolumns/toolkit",
3
- "version": "24.5.13",
3
+ "version": "24.5.14",
4
4
  "author": "Vinay M",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "main": "./dist/cjs/index.js",