@rowsncolumns/toolkit 24.5.13 → 24.5.15
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.
- package/dist/cjs/excel-parser/plugins/xlsx/chartex.d.ts +14 -3
- package/dist/cjs/excel-parser/plugins/xlsx/chartex.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/chartex.js +296 -44
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.js +8 -1
- package/dist/esm/excel-parser/plugins/xlsx/chartex.d.ts +14 -3
- package/dist/esm/excel-parser/plugins/xlsx/chartex.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/chartex.js +267 -53
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.js +4 -1
- package/package.json +6 -2
|
@@ -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
|
-
/**
|
|
34
|
-
|
|
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;
|
|
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
|
-
/**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
|
166
|
-
|
|
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((
|
|
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
|
|
171
|
-
var
|
|
172
|
-
|
|
173
|
-
|
|
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
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
|
189
|
-
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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
|
-
/**
|
|
34
|
-
|
|
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;
|
|
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
|
-
/**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
|
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
|
-
|
|
115
|
-
|
|
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
|
|
122
|
-
|
|
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(
|
|
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
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
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
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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":"AAAA,OAAO,KAAK,EAGV,UAAU,EAEV,qBAAqB,EACrB,wBAAwB,EAExB,aAAa,EACb,cAAc,EAGd,UAAU,EAMV,cAAc,EACd,KAAK,EAEL,kBAAkB,EAClB,MAAM,EACN,gBAAgB,EAEhB,SAAS,EACT,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAIb,UAAU,EACV,aAAa,EACd,MAAM,4BAA4B,CAAC;AAgBpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAe5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EACV,YAAY,EACZ,+BAA+B,EAC/B,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAU9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAUlB,OAAO,EAGL,KAAK,0BAA0B,EAEhC,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AA0D7B,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,MAC7C,CAAC;AA+HlB,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAsB5D;AAkBD,qBAAa,cAAc;IACzB,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBACpC,UAAU,EAAE,GAAG;IAqG3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;OAEG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAqE9D;;;;;;;;OAQG;IACH,0BAA0B,IAAI,KAAK,CAAC;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,eAAe,CAAC,EAAE,GAAG,CAAC;YACtB,SAAS,CAAC,EAAE,GAAG,CAAC;YAChB,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC;IAwEF;;OAEG;IACH,OAAO,CAAC,eAAe;WA4CV,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS;IAerE,OAAO,CAAC,MAAM,EAAE,MAAM;IAGtB,OAAO,CAAC,MAAM,EAAE,MAAM;IAItB,UAAU,CAAC,UAAU,EAAE,MAAM;IAI7B,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,OAAO,CAAC,oBAAoB;CAkC7B;AAkED,qBAAa,UAAW,SAAQ,kBAAmB,YAAW,eAAe;IAC3E,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAG,gBAAgB,CAAC;IACzB,aAAa,EAAG,MAAM,EAAE,CAAC;IACzB;;;;;OAKG;IACH,oBAAoB,EAAG,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACpD,gBAAgB,EAAG,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,cAAc,EAAG,cAAc,CAAC;IAChC,SAAS,EAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,OAAO,EAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9D,KAAK,EAAG,MAAM,EAAE,CAAC;IACjB,WAAW,EAAG,UAAU,EAAE,CAAC;IAC3B,sBAAsB,EAAE,SAAS,CAAC;IAClC,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,0BAA0B,CAAqC;IACvE,2EAA2E;IAC3E,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAwC;IAC7D;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAAC,CAA4D;IACvF;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA2C;IACrE;;;OAGG;IACH,OAAO,CAAC,qBAAqB,CAA+C;IAC5E,yEAAyE;IACzE,OAAO,CAAC,kBAAkB,CAA0B;IACpD;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB,CAGtB;IACJ;;;;;;;OAOG;IACH;;;;OAIG;IACH,OAAO,CAAC,sBAAsB,CAAuC;IACrE;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAGvB;IACJ,OAAO,CAAC,2BAA2B,CAG/B;IACJ,yEAAyE;IACzE,OAAO,CAAC,iCAAiC,CAGrC;IACJ,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,gBAAgB;YASV,kBAAkB;IA0jBhC;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAuBtE;;;;;OAKG;YACW,gBAAgB;YAiKhB,qBAAqB;IAkJnC;;;OAGG;YACW,qBAAqB;;YAkTrB,eAAe;IAsB7B,OAAO,CAAC,yBAAyB;YAQnB,SAAS;YAiCT,iBAAiB;IA4EzB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM;IA4BxD,OAAO;IAeP,kBAAkB;IAOlB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;IAc7D,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;IAY1D,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EAAE;IAiOxB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,mBAAmB;YAWZ,eAAe;IA0W9B,OAAO,CAAC,kBAAkB;IAiCpB,mBAAmB,CAAC,GAAG,EAAE,MAAM;IAuErC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAyBlB;;;;;;;OAOG;IACG,2BAA2B,CAC/B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,qBAAqB,CAAC;IA+CjC;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAenE,QAAQ,IAAI,MAAM,EAAE;IAsDpB,UAAU;IAIV;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,GAAG,GAAG,eAAe;IA6FlD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;
|
|
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.
|
|
3
|
+
"version": "24.5.15",
|
|
4
4
|
"author": "Vinay M",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"require": "./dist/cjs/csv-parser/worker.js"
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
|
+
"sideEffects": [
|
|
27
|
+
"./dist/*/excel-parser/worker.js",
|
|
28
|
+
"./dist/*/csv-parser/worker.js"
|
|
29
|
+
],
|
|
26
30
|
"scripts": {
|
|
27
31
|
"build": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json",
|
|
28
32
|
"clean": "rimraf dist",
|
|
@@ -55,7 +59,7 @@
|
|
|
55
59
|
"dependencies": {
|
|
56
60
|
"@noble/ciphers": "^0.5.3",
|
|
57
61
|
"@noble/hashes": "^1.4.0",
|
|
58
|
-
"@rowsncolumns/calculator": ">=7.3.
|
|
62
|
+
"@rowsncolumns/calculator": ">=7.3.2",
|
|
59
63
|
"@rowsncolumns/common-types": ">=5.3.2",
|
|
60
64
|
"@rowsncolumns/date-parser": ">=13.0.4",
|
|
61
65
|
"@zip.js/zip.js": "^2.8.17",
|