@extend-ai/react-xlsx 0.20.2 → 0.20.4
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/browser-IQ4UDS5M.js +209 -0
- package/dist/browser-IQ4UDS5M.js.map +1 -0
- package/dist/browser-S6E2BS5S.cjs +212 -0
- package/dist/browser-S6E2BS5S.cjs.map +1 -0
- package/dist/{chart-renderer-F355CYSE.js → chart-renderer-4HTNG3SX.js} +94 -180
- package/dist/chart-renderer-4HTNG3SX.js.map +1 -0
- package/dist/{chart-renderer-7DTEXXG6.js → chart-renderer-5IN2B3YS.js} +94 -180
- package/dist/chart-renderer-5IN2B3YS.js.map +1 -0
- package/dist/{chart-renderer-LGW4EH4M.cjs → chart-renderer-6CWSXOSC.cjs} +324 -410
- package/dist/chart-renderer-6CWSXOSC.cjs.map +1 -0
- package/dist/{chart-renderer-3QDNTMRN.cjs → chart-renderer-H4BLRO5P.cjs} +324 -410
- package/dist/chart-renderer-H4BLRO5P.cjs.map +1 -0
- package/dist/chunk-GX5LAENE.cjs +108 -0
- package/dist/chunk-GX5LAENE.cjs.map +1 -0
- package/dist/{chunk-GXYDJPHM.js → chunk-H62SZBEY.js} +401 -132
- package/dist/chunk-H62SZBEY.js.map +1 -0
- package/dist/{chunk-3LMOGW6A.js → chunk-IISMO3AX.js} +30 -15
- package/dist/chunk-IISMO3AX.js.map +1 -0
- package/dist/{chunk-ZJ76CZAL.cjs → chunk-KQSUAIZD.cjs} +1168 -899
- package/dist/chunk-KQSUAIZD.cjs.map +1 -0
- package/dist/{chunk-IYGZTLDY.js → chunk-LZXL5E4W.js} +16 -7
- package/dist/chunk-LZXL5E4W.js.map +1 -0
- package/dist/chunk-MYN475JP.cjs +32 -0
- package/dist/chunk-MYN475JP.cjs.map +1 -0
- package/dist/{chunk-D2UA4P6N.cjs → chunk-NAYVSTCX.cjs} +22 -9
- package/dist/chunk-NAYVSTCX.cjs.map +1 -0
- package/dist/chunk-PK3MCNDK.js +32 -0
- package/dist/chunk-PK3MCNDK.js.map +1 -0
- package/dist/full-3FSPB3R6.cjs +212 -0
- package/dist/full-3FSPB3R6.cjs.map +1 -0
- package/dist/full-GPY27HZY.js +209 -0
- package/dist/full-GPY27HZY.js.map +1 -0
- package/dist/index.cjs +834 -602
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +57 -1
- package/dist/index.d.ts +57 -1
- package/dist/index.js +347 -115
- package/dist/index.js.map +1 -1
- package/dist/{internal-BJsg5os3.d.cts → internal-Cks9H21d.d.cts} +56 -1
- package/dist/{internal-BJsg5os3.d.ts → internal-Cks9H21d.d.ts} +56 -1
- package/dist/internal.cjs +3 -3
- package/dist/internal.d.cts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +2 -2
- package/dist/office_charts_bg.wasm +0 -0
- package/dist/office_charts_full_bg.wasm +0 -0
- package/dist/payload-B55ZKNYO.js +6 -0
- package/dist/payload-B55ZKNYO.js.map +1 -0
- package/dist/payload-E2KM77DZ.js +6 -0
- package/dist/payload-E2KM77DZ.js.map +1 -0
- package/dist/payload-K4S5RLJN.cjs +8 -0
- package/dist/payload-K4S5RLJN.cjs.map +1 -0
- package/dist/payload-PL4646XV.cjs +8 -0
- package/dist/payload-PL4646XV.cjs.map +1 -0
- package/dist/rust-office-charts-LICENSE.txt +21 -0
- package/dist/{shared-chart-3STFRVWT.js → shared-chart-5KTGZEZ5.js} +38 -20
- package/dist/shared-chart-5KTGZEZ5.js.map +1 -0
- package/dist/{shared-chart-DVC5S2P6.cjs → shared-chart-ACR4M7BP.cjs} +37 -20
- package/dist/shared-chart-ACR4M7BP.cjs.map +1 -0
- package/dist/{shared-chart-BFQNYOIQ.js → shared-chart-EGN5JTKT.js} +37 -20
- package/dist/shared-chart-EGN5JTKT.js.map +1 -0
- package/dist/{shared-chart-MFQSQG4K.cjs → shared-chart-XAV7VA45.cjs} +37 -19
- package/dist/shared-chart-XAV7VA45.cjs.map +1 -0
- package/dist/{surface-regl-R2N54JT2.js → surface-webgl-2ZZ6JQR2.js} +87 -151
- package/dist/surface-webgl-2ZZ6JQR2.js.map +1 -0
- package/dist/{surface-regl-BBJ6OIKK.cjs → surface-webgl-3HS6VBCK.cjs} +88 -152
- package/dist/surface-webgl-3HS6VBCK.cjs.map +1 -0
- package/dist/{surface-regl-7CDGGVDG.js → surface-webgl-4DQXDDXU.js} +87 -151
- package/dist/surface-webgl-4DQXDDXU.js.map +1 -0
- package/dist/{surface-regl-SUJ2TFZA.cjs → surface-webgl-SVYD564V.cjs} +88 -152
- package/dist/surface-webgl-SVYD564V.cjs.map +1 -0
- package/dist/vanilla.cjs +3 -3
- package/dist/vanilla.d.cts +2 -2
- package/dist/vanilla.d.ts +2 -2
- package/dist/vanilla.js +2 -2
- package/dist/xlsx-worker.js +298 -92
- package/dist/xlsx-worker.js.map +1 -1
- package/package.json +7 -15
- package/dist/chart-renderer-3QDNTMRN.cjs.map +0 -1
- package/dist/chart-renderer-7DTEXXG6.js.map +0 -1
- package/dist/chart-renderer-F355CYSE.js.map +0 -1
- package/dist/chart-renderer-LGW4EH4M.cjs.map +0 -1
- package/dist/chunk-3LMOGW6A.js.map +0 -1
- package/dist/chunk-D2UA4P6N.cjs.map +0 -1
- package/dist/chunk-GXYDJPHM.js.map +0 -1
- package/dist/chunk-IYGZTLDY.js.map +0 -1
- package/dist/chunk-OCF75R75.cjs +0 -90
- package/dist/chunk-OCF75R75.cjs.map +0 -1
- package/dist/chunk-ZJ76CZAL.cjs.map +0 -1
- package/dist/region-map-geography-24TXETDP.cjs +0 -184
- package/dist/region-map-geography-24TXETDP.cjs.map +0 -1
- package/dist/region-map-geography-OR6DHAF7.js +0 -182
- package/dist/region-map-geography-OR6DHAF7.js.map +0 -1
- package/dist/shared-chart-3STFRVWT.js.map +0 -1
- package/dist/shared-chart-BFQNYOIQ.js.map +0 -1
- package/dist/shared-chart-DVC5S2P6.cjs.map +0 -1
- package/dist/shared-chart-MFQSQG4K.cjs.map +0 -1
- package/dist/surface-regl-7CDGGVDG.js.map +0 -1
- package/dist/surface-regl-BBJ6OIKK.cjs.map +0 -1
- package/dist/surface-regl-R2N54JT2.js.map +0 -1
- package/dist/surface-regl-SUJ2TFZA.cjs.map +0 -1
- package/dist/world-atlas-LICENSE.txt +0 -13
- /package/dist/{us-atlas-LICENSE.txt → rust-office-charts-MAP-DATA-LICENSE.txt} +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
chartRenderer,
|
|
3
3
|
officeChartRenderer,
|
|
4
|
+
officeExtendedChartRenderer,
|
|
4
5
|
preloadChartRenderers,
|
|
5
|
-
|
|
6
|
+
suppliedOfficeChartRenderer,
|
|
6
7
|
useChartModule
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-IISMO3AX.js";
|
|
8
9
|
import {
|
|
9
10
|
getBuiltinChartColor,
|
|
10
11
|
getBuiltinChartSurfaceStyle,
|
|
@@ -312,10 +313,81 @@ function loadSpreadsheetFonts() {
|
|
|
312
313
|
}
|
|
313
314
|
|
|
314
315
|
// src/controller.tsx
|
|
315
|
-
import { strFromU8 as
|
|
316
|
+
import { strFromU8 as strFromU84, strToU8 as strToU83, unzipSync as unzipSync2, zipSync as zipSync2 } from "fflate";
|
|
317
|
+
|
|
318
|
+
// src/chartsheet-payload.ts
|
|
319
|
+
import { strFromU8 } from "fflate";
|
|
320
|
+
var REL_NS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
|
|
321
|
+
function readXml(archive, path) {
|
|
322
|
+
const bytes = archive[path];
|
|
323
|
+
if (!bytes || typeof DOMParser === "undefined") return null;
|
|
324
|
+
const document2 = new DOMParser().parseFromString(strFromU8(bytes), "application/xml");
|
|
325
|
+
return document2.getElementsByTagName("parsererror").length > 0 ? null : document2;
|
|
326
|
+
}
|
|
327
|
+
function relationshipPath(partPath) {
|
|
328
|
+
const separator = partPath.lastIndexOf("/");
|
|
329
|
+
return `${partPath.slice(0, separator + 1)}_rels/${partPath.slice(separator + 1)}.rels`;
|
|
330
|
+
}
|
|
331
|
+
function resolveTarget(partPath, target) {
|
|
332
|
+
if (/^[a-z][a-z0-9+.-]*:/i.test(target) || target.startsWith("//")) return null;
|
|
333
|
+
const segments = target.startsWith("/") ? [] : partPath.split("/").slice(0, -1);
|
|
334
|
+
for (const segment of target.replace(/\\/g, "/").split("/")) {
|
|
335
|
+
if (!segment || segment === ".") continue;
|
|
336
|
+
if (segment === "..") {
|
|
337
|
+
if (segments.length === 0) return null;
|
|
338
|
+
segments.pop();
|
|
339
|
+
} else {
|
|
340
|
+
segments.push(segment);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return segments.join("/");
|
|
344
|
+
}
|
|
345
|
+
function readRelationships(archive, partPath) {
|
|
346
|
+
const relationships = /* @__PURE__ */ new Map();
|
|
347
|
+
const document2 = readXml(archive, relationshipPath(partPath));
|
|
348
|
+
for (const element of Array.from(document2?.getElementsByTagNameNS("*", "Relationship") ?? [])) {
|
|
349
|
+
if (element.getAttribute("TargetMode") === "External") continue;
|
|
350
|
+
const id = element.getAttribute("Id");
|
|
351
|
+
const rawTarget = element.getAttribute("Target");
|
|
352
|
+
const type = element.getAttribute("Type");
|
|
353
|
+
const target = rawTarget ? resolveTarget(partPath, rawTarget) : null;
|
|
354
|
+
if (id && type && target && archive[target]) relationships.set(id, { target, type });
|
|
355
|
+
}
|
|
356
|
+
return relationships;
|
|
357
|
+
}
|
|
358
|
+
function collectChartsheetDrawingOrigins(archive, chartsheets) {
|
|
359
|
+
const origins = /* @__PURE__ */ new Map();
|
|
360
|
+
if (chartsheets.length === 0) return origins;
|
|
361
|
+
const workbookPath = "xl/workbook.xml";
|
|
362
|
+
const workbookDocument = readXml(archive, workbookPath);
|
|
363
|
+
const workbookRelationships = readRelationships(archive, workbookPath);
|
|
364
|
+
for (const sheet of Array.from(workbookDocument?.getElementsByTagNameNS("*", "sheet") ?? [])) {
|
|
365
|
+
const relationshipId = sheet.getAttributeNS(REL_NS, "id") ?? sheet.getAttribute("r:id");
|
|
366
|
+
const relationship = relationshipId ? workbookRelationships.get(relationshipId) : null;
|
|
367
|
+
if (!relationship?.type.endsWith("/chartsheet")) continue;
|
|
368
|
+
const chartsheet = chartsheets.find((entry) => entry.name === sheet.getAttribute("name"));
|
|
369
|
+
if (!chartsheet || chartsheet.workbookSheetIndex == null) continue;
|
|
370
|
+
const sheetDocument = readXml(archive, relationship.target);
|
|
371
|
+
const sheetRelationships = readRelationships(archive, relationship.target);
|
|
372
|
+
const attachments = [];
|
|
373
|
+
for (const drawing of Array.from(sheetDocument?.getElementsByTagNameNS("*", "drawing") ?? [])) {
|
|
374
|
+
const drawingId = drawing.getAttributeNS(REL_NS, "id") ?? drawing.getAttribute("r:id");
|
|
375
|
+
const drawingRelationship = drawingId ? sheetRelationships.get(drawingId) : null;
|
|
376
|
+
if (!drawingRelationship?.type.endsWith("/drawing")) continue;
|
|
377
|
+
const drawingRelsPath = relationshipPath(drawingRelationship.target);
|
|
378
|
+
attachments.push({
|
|
379
|
+
drawingPath: drawingRelationship.target,
|
|
380
|
+
drawingRelsPath: archive[drawingRelsPath] ? drawingRelsPath : null,
|
|
381
|
+
mediaPaths: []
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
origins.set(chartsheet.index, { attachments, workbookSheetIndex: chartsheet.workbookSheetIndex });
|
|
385
|
+
}
|
|
386
|
+
return origins;
|
|
387
|
+
}
|
|
316
388
|
|
|
317
389
|
// src/charts.ts
|
|
318
|
-
import { strFromU8, strToU8 } from "fflate";
|
|
390
|
+
import { strFromU8 as strFromU82, strToU8 } from "fflate";
|
|
319
391
|
var CHART_NS = "http://schemas.openxmlformats.org/drawingml/2006/chart";
|
|
320
392
|
var DRAWINGML_NS = "http://schemas.openxmlformats.org/drawingml/2006/main";
|
|
321
393
|
var CHART_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";
|
|
@@ -464,18 +536,33 @@ function applyChartSeriesFormula(chart, seriesIndex, formula, workbook) {
|
|
|
464
536
|
}
|
|
465
537
|
const categoriesRef = {
|
|
466
538
|
...currentSeries.categoriesRef ?? {},
|
|
467
|
-
formula: parsed.categoryFormula
|
|
539
|
+
formula: parsed.categoryFormula,
|
|
540
|
+
values: parsed.categoryFormula === currentSeries.categoriesRef?.formula ? currentSeries.categoriesRef.values : void 0
|
|
468
541
|
};
|
|
469
542
|
const valuesRef = {
|
|
470
543
|
...currentSeries.valuesRef ?? {},
|
|
471
|
-
formula: parsed.valueFormula
|
|
544
|
+
formula: parsed.valueFormula,
|
|
545
|
+
values: parsed.valueFormula === currentSeries.valuesRef?.formula ? currentSeries.valuesRef.values : void 0
|
|
472
546
|
};
|
|
473
547
|
const bubbleSizeRef = chart.chartType === "Bubble" || parsed.bubbleSizeFormula ? {
|
|
474
548
|
...currentSeries.bubbleSizeRef ?? {},
|
|
475
|
-
formula: parsed.bubbleSizeFormula
|
|
549
|
+
formula: parsed.bubbleSizeFormula,
|
|
550
|
+
values: parsed.bubbleSizeFormula === currentSeries.bubbleSizeRef?.formula ? currentSeries.bubbleSizeRef?.values : void 0
|
|
476
551
|
} : currentSeries.bubbleSizeRef ?? null;
|
|
552
|
+
const isUnresolved = (formula2) => Boolean(
|
|
553
|
+
workbook && formula2 && !resolveReferenceSheet(workbook, chart.workbookSheetIndex, formula2).sheet
|
|
554
|
+
);
|
|
555
|
+
const resolveEditedReference = (reference, currentReference, currentValues, mode) => {
|
|
556
|
+
if (!workbook) return currentValues;
|
|
557
|
+
if (reference?.formula === currentReference?.formula && isUnresolved(reference?.formula)) return currentValues;
|
|
558
|
+
return resolveReferenceValues(workbook, chart.workbookSheetIndex, reference, mode);
|
|
559
|
+
};
|
|
477
560
|
const raw = {
|
|
478
|
-
...currentSeries.raw ?? {}
|
|
561
|
+
...currentSeries.raw ?? {},
|
|
562
|
+
unresolvedCategoriesReference: isUnresolved(categoriesRef.formula),
|
|
563
|
+
unresolvedValuesReference: isUnresolved(valuesRef.formula),
|
|
564
|
+
unresolvedBubbleSizeReference: isUnresolved(bubbleSizeRef?.formula),
|
|
565
|
+
unresolvedNameReference: isUnresolved(parsed.nameFormula)
|
|
479
566
|
};
|
|
480
567
|
if (parsed.nameFormula) {
|
|
481
568
|
raw.name = parsed.nameFormula;
|
|
@@ -485,17 +572,21 @@ function applyChartSeriesFormula(chart, seriesIndex, formula, workbook) {
|
|
|
485
572
|
const nextSeries = {
|
|
486
573
|
...currentSeries,
|
|
487
574
|
bubbleSizeRef,
|
|
488
|
-
bubbleSizes:
|
|
489
|
-
categories:
|
|
575
|
+
bubbleSizes: resolveEditedReference(bubbleSizeRef, currentSeries.bubbleSizeRef, currentSeries.bubbleSizes ?? [], "value").map((value) => typeof value === "number" && Number.isFinite(value) ? value : null),
|
|
576
|
+
categories: resolveEditedReference(categoriesRef, currentSeries.categoriesRef, currentSeries.categories, "category"),
|
|
490
577
|
categoriesRef,
|
|
491
|
-
name: parsed.nameLiteral ?? (parsed.nameFormula && workbook ? resolveSeriesName(workbook, chart.workbookSheetIndex, parsed.nameFormula) : parsed.nameFormula ?? currentSeries.name),
|
|
578
|
+
name: parsed.nameLiteral ?? (parsed.nameFormula === currentSeries.raw?.name && isUnresolved(parsed.nameFormula) ? currentSeries.name : parsed.nameFormula && workbook ? resolveSeriesName(workbook, chart.workbookSheetIndex, parsed.nameFormula) : parsed.nameFormula ?? currentSeries.name),
|
|
492
579
|
raw,
|
|
493
|
-
values:
|
|
580
|
+
values: resolveEditedReference(valuesRef, currentSeries.valuesRef, currentSeries.values, "value").map((value) => typeof value === "number" && Number.isFinite(value) ? value : null),
|
|
494
581
|
valuesRef
|
|
495
582
|
};
|
|
496
583
|
return {
|
|
497
584
|
...chart,
|
|
498
|
-
series: chart.series.map((series, index) => index === seriesIndex ? nextSeries : series)
|
|
585
|
+
series: chart.series.map((series, index) => index === seriesIndex ? nextSeries : series),
|
|
586
|
+
typeGroups: chart.typeGroups?.map((group) => ({
|
|
587
|
+
...group,
|
|
588
|
+
series: group.series.map((series) => series.id === currentSeries.id ? nextSeries : series)
|
|
589
|
+
}))
|
|
499
590
|
};
|
|
500
591
|
}
|
|
501
592
|
function normalizeWorksheetVisibility(value) {
|
|
@@ -1201,9 +1292,10 @@ function applyBuiltinChartDefaults(chart, themePalette) {
|
|
|
1201
1292
|
};
|
|
1202
1293
|
};
|
|
1203
1294
|
chart.series = chart.series.map(applySeriesDefaults);
|
|
1295
|
+
const canonicalSeries = chart.id.startsWith("chart-ex-") ? null : new Map(chart.series.map((series) => [series.id, series]));
|
|
1204
1296
|
let groupSeriesOffset = 0;
|
|
1205
1297
|
chart.typeGroups = chart.typeGroups?.map((group) => {
|
|
1206
|
-
const series = group.series.map((entry, index) => applySeriesDefaults(entry, groupSeriesOffset + index));
|
|
1298
|
+
const series = group.series.map((entry, index) => canonicalSeries?.get(entry.id) ?? applySeriesDefaults(entry, groupSeriesOffset + index));
|
|
1207
1299
|
groupSeriesOffset += group.series.length;
|
|
1208
1300
|
return { ...group, series };
|
|
1209
1301
|
});
|
|
@@ -1347,11 +1439,12 @@ function applyChartSeriesStyleFromXml(chart, chartTypeNode, themePalette) {
|
|
|
1347
1439
|
const rawFillColor = typeof existingShapeProperties?.solidFillHex === "string" ? normalizeHexColor(existingShapeProperties.solidFillHex) : null;
|
|
1348
1440
|
const rawLineColor = typeof existingShapeProperties?.lineColorHex === "string" ? normalizeHexColor(existingShapeProperties.lineColorHex) : null;
|
|
1349
1441
|
const resolvedLineColor = lineStyle.hidden ? void 0 : rawLineColor ?? lineStyle.color ?? rawFillColor ?? fillColor ?? series.lineColor ?? series.color;
|
|
1350
|
-
const hasCategoryReference = typeof series.categoriesRef?.formula === "string" && series.categoriesRef.formula.length > 0;
|
|
1351
|
-
const hasValueReference = typeof series.valuesRef?.formula === "string" && series.valuesRef.formula.length > 0;
|
|
1352
|
-
const hasBubbleSizeReference = typeof series.bubbleSizeRef?.formula === "string" && series.bubbleSizeRef.formula.length > 0;
|
|
1442
|
+
const hasCategoryReference = typeof series.categoriesRef?.formula === "string" && series.categoriesRef.formula.length > 0 && !series.raw?.unresolvedCategoriesReference;
|
|
1443
|
+
const hasValueReference = typeof series.valuesRef?.formula === "string" && series.valuesRef.formula.length > 0 && !series.raw?.unresolvedValuesReference;
|
|
1444
|
+
const hasBubbleSizeReference = typeof series.bubbleSizeRef?.formula === "string" && series.bubbleSizeRef.formula.length > 0 && !series.raw?.unresolvedBubbleSizeReference;
|
|
1353
1445
|
return {
|
|
1354
1446
|
...series,
|
|
1447
|
+
name: series.raw?.unresolvedNameReference ? parseChartCacheValues(getFirstLocalChild(seriesNode, "tx"), "strCache", "category")?.[0]?.toString() ?? series.name : series.name,
|
|
1355
1448
|
bubbleSizes: !hasBubbleSizeReference && cachedBubbleSizes ? cachedBubbleSizes.map((value) => typeof value === "number" && Number.isFinite(value) ? value : null) : series.bubbleSizes,
|
|
1356
1449
|
categories: !hasCategoryReference && cachedCategories ? cachedCategories : series.categories,
|
|
1357
1450
|
color: rawFillColor ?? rawLineColor ?? fillColor ?? lineStyle.color ?? series.color,
|
|
@@ -1611,6 +1704,23 @@ function applyChartStyleFromXml(chart, chartPath, archive, themePalette) {
|
|
|
1611
1704
|
if (typeof fallbackStyleId === "number" && Number.isFinite(fallbackStyleId)) {
|
|
1612
1705
|
chart.chartStyleId = fallbackStyleId;
|
|
1613
1706
|
}
|
|
1707
|
+
const sourceSeries = chart.raw?.officeSourceSeries;
|
|
1708
|
+
if (sourceSeries && chartDocument?.documentElement.namespaceURI === "http://schemas.microsoft.com/office/drawing/2014/chartex") {
|
|
1709
|
+
chart.renderSource = {
|
|
1710
|
+
kind: chart.chartExLayout ?? "",
|
|
1711
|
+
seriesTypes: getLocalDescendants(chartNode, "series").map((node) => node.getAttribute("layoutId") ?? ""),
|
|
1712
|
+
sourceSeries,
|
|
1713
|
+
experimental: true,
|
|
1714
|
+
xml: chartXml,
|
|
1715
|
+
themeColors: themePalette ? Object.fromEntries(Object.entries(THEME_COLOR_INDEX_BY_NAME).flatMap(([key, index]) => {
|
|
1716
|
+
const color = themePalette.colorsByIndex[index];
|
|
1717
|
+
return color ? [[key, color]] : [];
|
|
1718
|
+
})) : void 0,
|
|
1719
|
+
themeOverrideXml: readArchiveText(archive, relationships.get("http://schemas.openxmlformats.org/officeDocument/2006/relationships/themeOverride")) ?? void 0,
|
|
1720
|
+
styleXml: readArchiveText(archive, relationships.get(CHART_STYLE_REL_TYPE)) ?? void 0,
|
|
1721
|
+
colorStyleXml: readArchiveText(archive, relationships.get(CHART_COLOR_STYLE_REL_TYPE)) ?? void 0
|
|
1722
|
+
};
|
|
1723
|
+
}
|
|
1614
1724
|
applyModernChartExStyles();
|
|
1615
1725
|
applyFallbackSeriesStyles();
|
|
1616
1726
|
applyBuiltinChartDefaults(chart, themePalette);
|
|
@@ -1852,11 +1962,22 @@ function applyChartStyleFromXml(chart, chartPath, archive, themePalette) {
|
|
|
1852
1962
|
chart.axes = [...chart.axes, seriesAxis];
|
|
1853
1963
|
}
|
|
1854
1964
|
}
|
|
1855
|
-
const
|
|
1856
|
-
const
|
|
1857
|
-
|
|
1965
|
+
const groups = Array.from(plotArea.children).filter((entry) => entry.localName.endsWith("Chart"));
|
|
1966
|
+
const seriesTypes = groups.flatMap((group) => getLocalChildren(group, "ser").map(() => group.localName.slice(0, -5)));
|
|
1967
|
+
const seriesNodes = groups.flatMap((group) => getLocalChildren(group, "ser"));
|
|
1968
|
+
const indexedXSeries = seriesNodes.map((series) => {
|
|
1969
|
+
const x2 = getFirstLocalChild(series, "xVal");
|
|
1970
|
+
return Boolean(x2 && (getFirstLocalChild(x2, "multiLvlStrRef") || getFirstLocalChild(x2, "strRef") || getFirstLocalChild(x2, "strLit")));
|
|
1971
|
+
});
|
|
1972
|
+
const unsupportedHierarchy = getLocalDescendants(plotArea, "multiLvlStrRef").some((node) => node.parentElement?.localName !== "xVal");
|
|
1973
|
+
const kind = chartTypeNode.localName.slice(0, -5);
|
|
1974
|
+
const stable = groups.length === 1 && !chart.is3d && (kind === "line" && chart.chartType === "Line" || kind === "bar" && chart.chartType === "ColumnClustered") && !plotArea.querySelector("trendline, errBars, dropLines, hiLowLines, upDownBars, dateAx, multiLvlStrRef, pictureOptions");
|
|
1975
|
+
if (seriesTypes.length === chart.series.length && !unsupportedHierarchy && !plotArea.querySelector("pictureOptions")) {
|
|
1858
1976
|
chart.renderSource = {
|
|
1859
1977
|
kind,
|
|
1978
|
+
seriesTypes,
|
|
1979
|
+
indexedXSeries,
|
|
1980
|
+
experimental: !stable,
|
|
1860
1981
|
xml: chartXml,
|
|
1861
1982
|
themeColors: themePalette ? Object.fromEntries(Object.entries(THEME_COLOR_INDEX_BY_NAME).flatMap(([key, index]) => {
|
|
1862
1983
|
const color = themePalette.colorsByIndex[index];
|
|
@@ -1867,7 +1988,21 @@ function applyChartStyleFromXml(chart, chartPath, archive, themePalette) {
|
|
|
1867
1988
|
colorStyleXml: readArchiveText(archive, relationships.get(CHART_COLOR_STYLE_REL_TYPE)) ?? void 0
|
|
1868
1989
|
};
|
|
1869
1990
|
}
|
|
1870
|
-
|
|
1991
|
+
if (groups.length > 1 && chart.typeGroups?.length === groups.length) {
|
|
1992
|
+
let seriesOffset = 0;
|
|
1993
|
+
const hydratedSeries = [];
|
|
1994
|
+
chart.typeGroups = chart.typeGroups.map((group, index) => {
|
|
1995
|
+
const count = getLocalChildren(groups[index], "ser").length;
|
|
1996
|
+
const groupChart = { ...chart, chartType: group.chartType, series: chart.series.slice(seriesOffset, seriesOffset + count) };
|
|
1997
|
+
applyChartSeriesStyleFromXml(groupChart, groups[index], themePalette);
|
|
1998
|
+
seriesOffset += count;
|
|
1999
|
+
hydratedSeries.push(...groupChart.series);
|
|
2000
|
+
return { ...group, series: groupChart.series };
|
|
2001
|
+
});
|
|
2002
|
+
chart.series = [...hydratedSeries, ...chart.series.slice(seriesOffset)];
|
|
2003
|
+
} else {
|
|
2004
|
+
applyChartSeriesStyleFromXml(chart, chartTypeNode, themePalette);
|
|
2005
|
+
}
|
|
1871
2006
|
applyFallbackSeriesStyles();
|
|
1872
2007
|
applyBuiltinChartDefaults(chart, themePalette);
|
|
1873
2008
|
}
|
|
@@ -1918,7 +2053,7 @@ function readArchiveText(archive, path) {
|
|
|
1918
2053
|
return null;
|
|
1919
2054
|
}
|
|
1920
2055
|
const entry = archive[normalizeArchivePath(path)];
|
|
1921
|
-
return entry ?
|
|
2056
|
+
return entry ? strFromU82(entry) : null;
|
|
1922
2057
|
}
|
|
1923
2058
|
function parseXml(xml) {
|
|
1924
2059
|
if (typeof DOMParser === "undefined") {
|
|
@@ -2054,8 +2189,8 @@ function resolveReferenceSheet(workbook, fallbackSheetIndex, formula) {
|
|
|
2054
2189
|
if (!formula) {
|
|
2055
2190
|
return {
|
|
2056
2191
|
range: null,
|
|
2057
|
-
sheet: workbook.getSheet(fallbackSheetIndex),
|
|
2058
|
-
sheetName: workbook.getSheet(fallbackSheetIndex)?.name ?? ""
|
|
2192
|
+
sheet: fallbackSheetIndex < workbook.sheetCount ? workbook.getSheet(fallbackSheetIndex) : null,
|
|
2193
|
+
sheetName: fallbackSheetIndex < workbook.sheetCount ? workbook.getSheet(fallbackSheetIndex)?.name ?? "" : ""
|
|
2059
2194
|
};
|
|
2060
2195
|
}
|
|
2061
2196
|
const trimmedFormula = formula.trim();
|
|
@@ -2072,8 +2207,8 @@ function resolveReferenceSheet(workbook, fallbackSheetIndex, formula) {
|
|
|
2072
2207
|
if (!split) {
|
|
2073
2208
|
return {
|
|
2074
2209
|
range: parseA1Range(trimmedFormula),
|
|
2075
|
-
sheet: workbook.getSheet(fallbackSheetIndex),
|
|
2076
|
-
sheetName: workbook.getSheet(fallbackSheetIndex)?.name ?? ""
|
|
2210
|
+
sheet: fallbackSheetIndex < workbook.sheetCount ? workbook.getSheet(fallbackSheetIndex) : null,
|
|
2211
|
+
sheetName: fallbackSheetIndex < workbook.sheetCount ? workbook.getSheet(fallbackSheetIndex)?.name ?? "" : ""
|
|
2077
2212
|
};
|
|
2078
2213
|
}
|
|
2079
2214
|
try {
|
|
@@ -2085,8 +2220,8 @@ function resolveReferenceSheet(workbook, fallbackSheetIndex, formula) {
|
|
|
2085
2220
|
} catch {
|
|
2086
2221
|
return {
|
|
2087
2222
|
range: parseA1Range(split.range),
|
|
2088
|
-
sheet:
|
|
2089
|
-
sheetName:
|
|
2223
|
+
sheet: null,
|
|
2224
|
+
sheetName: split.sheetName
|
|
2090
2225
|
};
|
|
2091
2226
|
}
|
|
2092
2227
|
}
|
|
@@ -2355,6 +2490,7 @@ function buildChartExParetoLineSeries(series, sourceRaw, index) {
|
|
|
2355
2490
|
});
|
|
2356
2491
|
return {
|
|
2357
2492
|
...series,
|
|
2493
|
+
id: series.id.replace(/-series-\d+$/, `-series-${index}`),
|
|
2358
2494
|
color: void 0,
|
|
2359
2495
|
lineColor: void 0,
|
|
2360
2496
|
markerColor: void 0,
|
|
@@ -2617,7 +2753,7 @@ function normalizeChartExChart(workbook, workbookSheetIndex, visibleSheetIndex,
|
|
|
2617
2753
|
name: typeof drawing.name === "string" ? drawing.name : chartTitle,
|
|
2618
2754
|
overlap: void 0,
|
|
2619
2755
|
plotVisibleOnly: void 0,
|
|
2620
|
-
raw: chart,
|
|
2756
|
+
raw: { ...chart, officeSourceSeries: normalizedSeries },
|
|
2621
2757
|
radarStyle: void 0,
|
|
2622
2758
|
scatterStyle: void 0,
|
|
2623
2759
|
roundedCorners: void 0,
|
|
@@ -3085,7 +3221,13 @@ function normalizeChartSeries(workbook, workbookSheetIndex, chartId, raw, index)
|
|
|
3085
3221
|
name: resolveSeriesName(workbook, workbookSheetIndex, series.name),
|
|
3086
3222
|
negativeColor: void 0,
|
|
3087
3223
|
negativeLineColor: void 0,
|
|
3088
|
-
raw:
|
|
3224
|
+
raw: {
|
|
3225
|
+
...series,
|
|
3226
|
+
unresolvedCategoriesReference: Boolean(categoriesRef?.formula && !resolveReferenceSheet(workbook, workbookSheetIndex, categoriesRef.formula).sheet),
|
|
3227
|
+
unresolvedValuesReference: Boolean(valuesRef?.formula && !resolveReferenceSheet(workbook, workbookSheetIndex, valuesRef.formula).sheet),
|
|
3228
|
+
unresolvedBubbleSizeReference: Boolean(bubbleSizeRef?.formula && !resolveReferenceSheet(workbook, workbookSheetIndex, bubbleSizeRef.formula).sheet),
|
|
3229
|
+
unresolvedNameReference: typeof series.name === "string" && series.name.includes("!") && !resolveReferenceSheet(workbook, workbookSheetIndex, series.name).sheet
|
|
3230
|
+
},
|
|
3089
3231
|
shapeProperties,
|
|
3090
3232
|
smooth: typeof series.smooth === "boolean" ? series.smooth : void 0,
|
|
3091
3233
|
values: resolveReferenceValues(workbook, workbookSheetIndex, valuesRef, "value").map((value) => typeof value === "number" && Number.isFinite(value) ? value : null),
|
|
@@ -3147,12 +3289,15 @@ function buildTabs(workbook, chartsheets, visibleSheetIndexByWorkbookSheetIndex,
|
|
|
3147
3289
|
const slotIndex = typeof entry.index === "number" ? entry.index : index;
|
|
3148
3290
|
if (slotType === "chartsheet") {
|
|
3149
3291
|
const chartsheet = chartsheets[slotIndex];
|
|
3292
|
+
const visibility2 = normalizeWorksheetVisibility(chartsheet?.raw?.visibility);
|
|
3293
|
+
if (!showHiddenSheets && visibility2 !== "visible") return [];
|
|
3150
3294
|
return chartsheet ? [{
|
|
3151
3295
|
chartsheetIndex: slotIndex,
|
|
3152
3296
|
id: `chartsheet-${slotIndex}`,
|
|
3153
3297
|
index,
|
|
3154
3298
|
kind: "chartsheet",
|
|
3155
|
-
name: chartsheet.name
|
|
3299
|
+
name: chartsheet.name,
|
|
3300
|
+
visibility: visibility2
|
|
3156
3301
|
}] : [];
|
|
3157
3302
|
}
|
|
3158
3303
|
const worksheet = workbook.getSheet(slotIndex);
|
|
@@ -3256,9 +3401,24 @@ function applyChartOrigins(chartsByWorkbookSheetIndex, chartOriginsById, archive
|
|
|
3256
3401
|
});
|
|
3257
3402
|
}
|
|
3258
3403
|
}
|
|
3259
|
-
function hydrateWorkbookChartStyles(chartsByWorkbookSheetIndex, imageAssets) {
|
|
3404
|
+
function hydrateWorkbookChartStyles(chartsByWorkbookSheetIndex, imageAssets, chartsheets = []) {
|
|
3260
3405
|
const chartOriginsById = /* @__PURE__ */ new Map();
|
|
3261
3406
|
applyChartOrigins(chartsByWorkbookSheetIndex, chartOriginsById, imageAssets.archive, imageAssets.sheetOrigins);
|
|
3407
|
+
const chartsheetOrigins = collectChartsheetDrawingOrigins(imageAssets.archive, chartsheets);
|
|
3408
|
+
for (const chartsheet of chartsheets) {
|
|
3409
|
+
if (chartsheet.workbookSheetIndex == null) continue;
|
|
3410
|
+
const charts = chartsByWorkbookSheetIndex[chartsheet.workbookSheetIndex] ?? [];
|
|
3411
|
+
const origins = collectChartOriginsForSheet(imageAssets.archive, chartsheetOrigins.get(chartsheet.index) ?? null);
|
|
3412
|
+
for (const chart of charts) {
|
|
3413
|
+
const kind = chart.id.startsWith("chart-ex-") ? "modern" : "classic";
|
|
3414
|
+
const origin = origins.find((entry) => entry.chartKind === kind);
|
|
3415
|
+
if (!origin) continue;
|
|
3416
|
+
if (origin.anchor) chart.anchor = origin.anchor;
|
|
3417
|
+
chart.chartPath = origin.chartPath ?? void 0;
|
|
3418
|
+
chartsheet.chartPath = chart.chartPath;
|
|
3419
|
+
chartOriginsById.set(chart.id, origin);
|
|
3420
|
+
}
|
|
3421
|
+
}
|
|
3262
3422
|
for (const charts of chartsByWorkbookSheetIndex) {
|
|
3263
3423
|
for (const chart of charts) {
|
|
3264
3424
|
applyChartStyleFromXml(chart, chart.chartPath, imageAssets.archive, imageAssets.themePalette);
|
|
@@ -3267,6 +3427,84 @@ function hydrateWorkbookChartStyles(chartsByWorkbookSheetIndex, imageAssets) {
|
|
|
3267
3427
|
}
|
|
3268
3428
|
return chartOriginsById;
|
|
3269
3429
|
}
|
|
3430
|
+
function normalizeClassicChartDrawing(workbook, workbookSheetIndex, visibleSheetIndex, rawChart, chartIndex, chartId = `chart-${workbookSheetIndex}-${chartIndex}`) {
|
|
3431
|
+
const drawing = rawChart && typeof rawChart === "object" ? rawChart : {};
|
|
3432
|
+
const chart = drawing.chart && typeof drawing.chart === "object" ? drawing.chart : {};
|
|
3433
|
+
const rawView3d = chart.view3D && typeof chart.view3D === "object" ? chart.view3D : null;
|
|
3434
|
+
const rawSeries = Array.isArray(chart.series) ? chart.series : [];
|
|
3435
|
+
const typeGroups = Array.isArray(chart.typeGroups) ? chart.typeGroups.map((entry, groupIndex) => normalizeChartTypeGroup(workbook, workbookSheetIndex, chartId, entry, groupIndex)).filter((value) => value != null) : [];
|
|
3436
|
+
let seriesOrdinal = 0;
|
|
3437
|
+
const series = typeGroups.some((group) => group.series.length > 0) ? typeGroups.flatMap((group) => {
|
|
3438
|
+
group.series = group.series.map((entry) => ({ ...entry, id: `${chartId}-series-${seriesOrdinal++}` }));
|
|
3439
|
+
return group.series;
|
|
3440
|
+
}) : rawSeries.map((entry, seriesIndex) => normalizeChartSeries(workbook, workbookSheetIndex, chartId, entry, seriesIndex));
|
|
3441
|
+
const chartLevelDataLabels = normalizeChartDataLabels(chart.dataLabels);
|
|
3442
|
+
const firstSeriesDataLabels = rawSeries.length > 0 && rawSeries[0] && typeof rawSeries[0] === "object" ? normalizeChartDataLabels(rawSeries[0].dataLabels) : null;
|
|
3443
|
+
return {
|
|
3444
|
+
anchor: normalizeChartAnchor(drawing.anchor),
|
|
3445
|
+
autoTitleDeleted: typeof chart.autoTitleDeleted === "boolean" ? chart.autoTitleDeleted : void 0,
|
|
3446
|
+
axes: Array.isArray(chart.axes) ? chart.axes.map(normalizeChartAxis).filter((value) => Boolean(value)) : [],
|
|
3447
|
+
axisLabelColor: void 0,
|
|
3448
|
+
axisLineColor: void 0,
|
|
3449
|
+
categoryAxis: normalizeChartAxis(chart.categoryAxis),
|
|
3450
|
+
chartAreaBorderColor: void 0,
|
|
3451
|
+
chartAreaFillColor: void 0,
|
|
3452
|
+
chartColorPalette: void 0,
|
|
3453
|
+
chartColorPaletteOffset: void 0,
|
|
3454
|
+
chartPath: void 0,
|
|
3455
|
+
chartStyleId: void 0,
|
|
3456
|
+
chartType: typeof chart.chartType === "string" ? chart.chartType : "ColumnClustered",
|
|
3457
|
+
dataLabels: chartLevelDataLabels ?? firstSeriesDataLabels,
|
|
3458
|
+
displayBlanksAs: typeof chart.displayBlanksAs === "string" ? chart.displayBlanksAs : void 0,
|
|
3459
|
+
editable: true,
|
|
3460
|
+
firstSliceAngle: typeof chart.firstSliceAngle === "number" ? chart.firstSliceAngle : void 0,
|
|
3461
|
+
fontFamily: void 0,
|
|
3462
|
+
gapWidth: typeof chart.gapWidth === "number" ? chart.gapWidth : void 0,
|
|
3463
|
+
holeSize: typeof chart.holeSize === "number" ? chart.holeSize : void 0,
|
|
3464
|
+
id: chartId,
|
|
3465
|
+
is3d: typeof chart.is3D === "boolean" ? chart.is3D : typeof chart.is3d === "boolean" ? chart.is3d : void 0,
|
|
3466
|
+
legend: normalizeLegend(chart.legend) ? {
|
|
3467
|
+
...normalizeLegend(chart.legend),
|
|
3468
|
+
position: normalizeLegendPosition(normalizeLegend(chart.legend)?.position)
|
|
3469
|
+
} : null,
|
|
3470
|
+
name: typeof drawing.name === "string" ? drawing.name : void 0,
|
|
3471
|
+
overlap: typeof chart.overlap === "number" ? chart.overlap : void 0,
|
|
3472
|
+
plotVisibleOnly: typeof chart.plotVisibleOnly === "boolean" ? chart.plotVisibleOnly : void 0,
|
|
3473
|
+
raw: chart,
|
|
3474
|
+
radarStyle: typeof chart.radarStyle === "string" ? chart.radarStyle : void 0,
|
|
3475
|
+
scatterStyle: typeof chart.scatterStyle === "string" ? chart.scatterStyle : void 0,
|
|
3476
|
+
roundedCorners: typeof chart.roundedCorners === "boolean" ? chart.roundedCorners : void 0,
|
|
3477
|
+
shape3d: typeof chart.shape === "string" ? chart.shape : typeof chart.shape3d === "string" ? chart.shape3d : void 0,
|
|
3478
|
+
seriesAxis: null,
|
|
3479
|
+
series,
|
|
3480
|
+
sheetIndex: visibleSheetIndex,
|
|
3481
|
+
showDlblsOverMax: typeof chart.showDlblsOverMax === "boolean" ? chart.showDlblsOverMax : void 0,
|
|
3482
|
+
sideWall: null,
|
|
3483
|
+
backWall: null,
|
|
3484
|
+
bubbleScale: typeof chart.bubbleScale === "number" ? chart.bubbleScale : void 0,
|
|
3485
|
+
bubble3d: typeof chart.bubble3d === "boolean" ? chart.bubble3d : void 0,
|
|
3486
|
+
floor: null,
|
|
3487
|
+
surfaceMaterial: void 0,
|
|
3488
|
+
textColor: void 0,
|
|
3489
|
+
title: typeof chart.title === "string" ? chart.title : void 0,
|
|
3490
|
+
titleColor: void 0,
|
|
3491
|
+
titleFontFamily: void 0,
|
|
3492
|
+
typeGroups,
|
|
3493
|
+
valueAxis: normalizeChartAxis(chart.valueAxis),
|
|
3494
|
+
varyColors: typeof chart.varyColors === "boolean" ? chart.varyColors : void 0,
|
|
3495
|
+
view3d: rawView3d ? {
|
|
3496
|
+
depthPercent: typeof rawView3d.depthPercent === "number" ? rawView3d.depthPercent : void 0,
|
|
3497
|
+
heightPercent: typeof rawView3d.heightPercent === "number" ? rawView3d.heightPercent : void 0,
|
|
3498
|
+
perspective: typeof rawView3d.perspective === "number" ? rawView3d.perspective : void 0,
|
|
3499
|
+
rAngAx: typeof rawView3d.rAngAx === "boolean" ? rawView3d.rAngAx : typeof rawView3d.rightAngleAxes === "boolean" ? rawView3d.rightAngleAxes : void 0,
|
|
3500
|
+
rotX: typeof rawView3d.rotX === "number" ? rawView3d.rotX : typeof rawView3d.rotateX === "number" ? rawView3d.rotateX : void 0,
|
|
3501
|
+
rotY: typeof rawView3d.rotY === "number" ? rawView3d.rotY : typeof rawView3d.rotateY === "number" ? rawView3d.rotateY : void 0
|
|
3502
|
+
} : void 0,
|
|
3503
|
+
wireframe: typeof chart.wireframe === "boolean" ? chart.wireframe : void 0,
|
|
3504
|
+
workbookSheetIndex,
|
|
3505
|
+
zIndex: Array.isArray(drawing.drawingPath) && typeof drawing.drawingPath[0] === "number" ? drawing.drawingPath[0] + 1 : chartIndex + 1
|
|
3506
|
+
};
|
|
3507
|
+
}
|
|
3270
3508
|
function loadWorkbookChartAssets(workbook, imageAssets, visibleSheetIndexByWorkbookSheetIndex, showHiddenSheets = false) {
|
|
3271
3509
|
const excludedChartIds = /* @__PURE__ */ new Set();
|
|
3272
3510
|
const chartsByWorkbookSheetIndex = Array.from({ length: workbook.sheetCount }, (_2, workbookSheetIndex) => {
|
|
@@ -3279,76 +3517,7 @@ function loadWorkbookChartAssets(workbook, imageAssets, visibleSheetIndexByWorkb
|
|
|
3279
3517
|
if (rawChart.hidden || !rawChart.anchor) {
|
|
3280
3518
|
excludedChartIds.add(chartId);
|
|
3281
3519
|
}
|
|
3282
|
-
|
|
3283
|
-
const chart = drawing.chart && typeof drawing.chart === "object" ? drawing.chart : {};
|
|
3284
|
-
const rawView3d = chart.view3D && typeof chart.view3D === "object" ? chart.view3D : null;
|
|
3285
|
-
const rawSeries = Array.isArray(chart.series) ? chart.series : [];
|
|
3286
|
-
const chartLevelDataLabels = normalizeChartDataLabels(chart.dataLabels);
|
|
3287
|
-
const firstSeriesDataLabels = rawSeries.length > 0 && rawSeries[0] && typeof rawSeries[0] === "object" ? normalizeChartDataLabels(rawSeries[0].dataLabels) : null;
|
|
3288
|
-
return {
|
|
3289
|
-
anchor: normalizeChartAnchor(drawing.anchor),
|
|
3290
|
-
autoTitleDeleted: typeof chart.autoTitleDeleted === "boolean" ? chart.autoTitleDeleted : void 0,
|
|
3291
|
-
axes: Array.isArray(chart.axes) ? chart.axes.map(normalizeChartAxis).filter((value) => Boolean(value)) : [],
|
|
3292
|
-
axisLabelColor: void 0,
|
|
3293
|
-
axisLineColor: void 0,
|
|
3294
|
-
categoryAxis: normalizeChartAxis(chart.categoryAxis),
|
|
3295
|
-
chartAreaBorderColor: void 0,
|
|
3296
|
-
chartAreaFillColor: void 0,
|
|
3297
|
-
chartColorPalette: void 0,
|
|
3298
|
-
chartColorPaletteOffset: void 0,
|
|
3299
|
-
chartPath: void 0,
|
|
3300
|
-
chartStyleId: void 0,
|
|
3301
|
-
chartType: typeof chart.chartType === "string" ? chart.chartType : "ColumnClustered",
|
|
3302
|
-
dataLabels: chartLevelDataLabels ?? firstSeriesDataLabels,
|
|
3303
|
-
displayBlanksAs: typeof chart.displayBlanksAs === "string" ? chart.displayBlanksAs : void 0,
|
|
3304
|
-
editable: true,
|
|
3305
|
-
firstSliceAngle: typeof chart.firstSliceAngle === "number" ? chart.firstSliceAngle : void 0,
|
|
3306
|
-
fontFamily: void 0,
|
|
3307
|
-
gapWidth: typeof chart.gapWidth === "number" ? chart.gapWidth : void 0,
|
|
3308
|
-
holeSize: typeof chart.holeSize === "number" ? chart.holeSize : void 0,
|
|
3309
|
-
id: chartId,
|
|
3310
|
-
is3d: typeof chart.is3D === "boolean" ? chart.is3D : void 0,
|
|
3311
|
-
legend: normalizeLegend(chart.legend) ? {
|
|
3312
|
-
...normalizeLegend(chart.legend),
|
|
3313
|
-
position: normalizeLegendPosition(normalizeLegend(chart.legend)?.position)
|
|
3314
|
-
} : null,
|
|
3315
|
-
name: typeof drawing.name === "string" ? drawing.name : void 0,
|
|
3316
|
-
overlap: typeof chart.overlap === "number" ? chart.overlap : void 0,
|
|
3317
|
-
plotVisibleOnly: typeof chart.plotVisibleOnly === "boolean" ? chart.plotVisibleOnly : void 0,
|
|
3318
|
-
raw: chart,
|
|
3319
|
-
radarStyle: typeof chart.radarStyle === "string" ? chart.radarStyle : void 0,
|
|
3320
|
-
scatterStyle: typeof chart.scatterStyle === "string" ? chart.scatterStyle : void 0,
|
|
3321
|
-
roundedCorners: typeof chart.roundedCorners === "boolean" ? chart.roundedCorners : void 0,
|
|
3322
|
-
shape3d: typeof chart.shape === "string" ? chart.shape : typeof chart.shape3d === "string" ? chart.shape3d : void 0,
|
|
3323
|
-
seriesAxis: null,
|
|
3324
|
-
series: rawSeries.map((entry, seriesIndex) => normalizeChartSeries(workbook, workbookSheetIndex, chartId, entry, seriesIndex)),
|
|
3325
|
-
sheetIndex: visibleSheetIndex,
|
|
3326
|
-
showDlblsOverMax: typeof chart.showDlblsOverMax === "boolean" ? chart.showDlblsOverMax : void 0,
|
|
3327
|
-
sideWall: null,
|
|
3328
|
-
backWall: null,
|
|
3329
|
-
bubbleScale: typeof chart.bubbleScale === "number" ? chart.bubbleScale : void 0,
|
|
3330
|
-
bubble3d: typeof chart.bubble3d === "boolean" ? chart.bubble3d : void 0,
|
|
3331
|
-
floor: null,
|
|
3332
|
-
surfaceMaterial: void 0,
|
|
3333
|
-
textColor: void 0,
|
|
3334
|
-
title: typeof chart.title === "string" ? chart.title : void 0,
|
|
3335
|
-
titleColor: void 0,
|
|
3336
|
-
titleFontFamily: void 0,
|
|
3337
|
-
typeGroups: Array.isArray(chart.typeGroups) ? chart.typeGroups.map((entry, groupIndex) => normalizeChartTypeGroup(workbook, workbookSheetIndex, chartId, entry, groupIndex)).filter((value) => value != null) : [],
|
|
3338
|
-
valueAxis: normalizeChartAxis(chart.valueAxis),
|
|
3339
|
-
varyColors: typeof chart.varyColors === "boolean" ? chart.varyColors : void 0,
|
|
3340
|
-
view3d: rawView3d ? {
|
|
3341
|
-
depthPercent: typeof rawView3d.depthPercent === "number" ? rawView3d.depthPercent : void 0,
|
|
3342
|
-
heightPercent: typeof rawView3d.heightPercent === "number" ? rawView3d.heightPercent : void 0,
|
|
3343
|
-
perspective: typeof rawView3d.perspective === "number" ? rawView3d.perspective : void 0,
|
|
3344
|
-
rAngAx: typeof rawView3d.rAngAx === "boolean" ? rawView3d.rAngAx : typeof rawView3d.rightAngleAxes === "boolean" ? rawView3d.rightAngleAxes : void 0,
|
|
3345
|
-
rotX: typeof rawView3d.rotX === "number" ? rawView3d.rotX : typeof rawView3d.rotateX === "number" ? rawView3d.rotateX : void 0,
|
|
3346
|
-
rotY: typeof rawView3d.rotY === "number" ? rawView3d.rotY : typeof rawView3d.rotateY === "number" ? rawView3d.rotateY : void 0
|
|
3347
|
-
} : void 0,
|
|
3348
|
-
wireframe: typeof chart.wireframe === "boolean" ? chart.wireframe : void 0,
|
|
3349
|
-
workbookSheetIndex,
|
|
3350
|
-
zIndex: Array.isArray(drawing.drawingPath) && typeof drawing.drawingPath[0] === "number" ? drawing.drawingPath[0] + 1 : chartIndex + 1
|
|
3351
|
-
};
|
|
3520
|
+
return normalizeClassicChartDrawing(workbook, workbookSheetIndex, visibleSheetIndex, rawChart, chartIndex, chartId);
|
|
3352
3521
|
});
|
|
3353
3522
|
const modernCharts = rawChartsEx.map((rawChartEx, chartExIndex) => {
|
|
3354
3523
|
const chartId = `chart-ex-${workbookSheetIndex}-${chartExIndex}`;
|
|
@@ -3367,8 +3536,36 @@ function loadWorkbookChartAssets(workbook, imageAssets, visibleSheetIndexByWorkb
|
|
|
3367
3536
|
return [...classicCharts, ...modernCharts];
|
|
3368
3537
|
});
|
|
3369
3538
|
const chartsheets = Array.isArray(workbook.chartsheets) ? workbook.chartsheets.map((entry, index) => normalizeChartsheet(entry, index)) : [];
|
|
3539
|
+
for (const chartsheet of chartsheets) {
|
|
3540
|
+
const workbookSheetIndex = workbook.sheetCount + chartsheet.index;
|
|
3541
|
+
const raw = chartsheet.raw;
|
|
3542
|
+
const charts = [];
|
|
3543
|
+
if (raw?.chart && typeof raw.chart === "object") {
|
|
3544
|
+
charts.push(normalizeClassicChartDrawing(
|
|
3545
|
+
workbook,
|
|
3546
|
+
workbookSheetIndex,
|
|
3547
|
+
workbookSheetIndex,
|
|
3548
|
+
raw,
|
|
3549
|
+
0,
|
|
3550
|
+
`${chartsheet.id}-chart-0`
|
|
3551
|
+
));
|
|
3552
|
+
}
|
|
3553
|
+
if (raw?.chartEx && typeof raw.chartEx === "object") {
|
|
3554
|
+
charts.push(normalizeChartExChart(
|
|
3555
|
+
workbook,
|
|
3556
|
+
workbookSheetIndex,
|
|
3557
|
+
workbookSheetIndex,
|
|
3558
|
+
raw,
|
|
3559
|
+
0,
|
|
3560
|
+
imageAssets?.themePalette ?? null
|
|
3561
|
+
));
|
|
3562
|
+
}
|
|
3563
|
+
chartsByWorkbookSheetIndex[workbookSheetIndex] = charts;
|
|
3564
|
+
chartsheet.chartIds = charts.map((chart) => chart.id);
|
|
3565
|
+
chartsheet.workbookSheetIndex = workbookSheetIndex;
|
|
3566
|
+
}
|
|
3370
3567
|
const tabs = buildTabs(workbook, chartsheets, visibleSheetIndexByWorkbookSheetIndex, showHiddenSheets);
|
|
3371
|
-
const chartOriginsById = imageAssets ? hydrateWorkbookChartStyles(chartsByWorkbookSheetIndex, imageAssets) : /* @__PURE__ */ new Map();
|
|
3568
|
+
const chartOriginsById = imageAssets ? hydrateWorkbookChartStyles(chartsByWorkbookSheetIndex, imageAssets, chartsheets) : /* @__PURE__ */ new Map();
|
|
3372
3569
|
if (imageAssets) {
|
|
3373
3570
|
for (let index = 0; index < chartsByWorkbookSheetIndex.length; index += 1) {
|
|
3374
3571
|
chartsByWorkbookSheetIndex[index] = (chartsByWorkbookSheetIndex[index] ?? []).filter((chart) => !excludedChartIds.has(chart.id));
|
|
@@ -3839,8 +4036,8 @@ function resolveWorkbookFillStyle(fill, themePalette) {
|
|
|
3839
4036
|
}
|
|
3840
4037
|
|
|
3841
4038
|
// src/images.ts
|
|
3842
|
-
import { strFromU8 as
|
|
3843
|
-
var
|
|
4039
|
+
import { strFromU8 as strFromU83, strToU8 as strToU82, unzipSync, zipSync } from "fflate";
|
|
4040
|
+
var REL_NS2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
|
|
3844
4041
|
var PKG_REL_NS = "http://schemas.openxmlformats.org/package/2006/relationships";
|
|
3845
4042
|
var SPREADSHEET_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
|
3846
4043
|
var CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types";
|
|
@@ -3889,6 +4086,19 @@ function measureColumnCharacterWidthPx(fontFamily, fontSizePt) {
|
|
|
3889
4086
|
columnCharacterWidthCache.set(cacheKey, width);
|
|
3890
4087
|
return width;
|
|
3891
4088
|
}
|
|
4089
|
+
function measureOfficeDigitWidthPt(fontFamily, fontSizePt) {
|
|
4090
|
+
const family = fontFamily?.trim() || "Calibri";
|
|
4091
|
+
const size = typeof fontSizePt === "number" && fontSizePt > 0 ? fontSizePt : 11;
|
|
4092
|
+
const key = `office|${family}|${size}`;
|
|
4093
|
+
const cached = columnCharacterWidthCache.get(key);
|
|
4094
|
+
if (cached !== void 0) return cached;
|
|
4095
|
+
const context = typeof document !== "undefined" ? document.createElement("canvas").getContext("2d") : null;
|
|
4096
|
+
if (!context) return 6;
|
|
4097
|
+
context.font = `${size}px ${JSON.stringify(family)}, "React XLSX Carlito"`;
|
|
4098
|
+
const width = Math.max(1, Math.round(Math.max(...Array.from("0123456789", (digit) => context.measureText(digit).width))));
|
|
4099
|
+
columnCharacterWidthCache.set(key, width);
|
|
4100
|
+
return width;
|
|
4101
|
+
}
|
|
3892
4102
|
function sheetColumnWidthToPixels(width, columnCharacterWidthPx = DEFAULT_COLUMN_CHARACTER_WIDTH_PX) {
|
|
3893
4103
|
if (!Number.isFinite(width) || width <= 0) {
|
|
3894
4104
|
return MIN_COL_WIDTH_PX;
|
|
@@ -4061,7 +4271,7 @@ function serializeXml2(document2) {
|
|
|
4061
4271
|
}
|
|
4062
4272
|
function readArchiveText2(archive, path) {
|
|
4063
4273
|
const entry = archive[path];
|
|
4064
|
-
return entry ?
|
|
4274
|
+
return entry ? strFromU83(entry) : null;
|
|
4065
4275
|
}
|
|
4066
4276
|
function parseColumnReference(reference) {
|
|
4067
4277
|
let value = 0;
|
|
@@ -4156,10 +4366,10 @@ function readFeaturePropertyBagCheckboxComplements(archive) {
|
|
|
4156
4366
|
return checkboxComplementIndices;
|
|
4157
4367
|
}
|
|
4158
4368
|
function getRelationshipId(element) {
|
|
4159
|
-
return element.getAttributeNS(
|
|
4369
|
+
return element.getAttributeNS(REL_NS2, "id") ?? element.getAttribute("r:id") ?? element.getAttribute("id");
|
|
4160
4370
|
}
|
|
4161
4371
|
function getEmbeddedRelationshipId(element) {
|
|
4162
|
-
return element.getAttributeNS(
|
|
4372
|
+
return element.getAttributeNS(REL_NS2, "embed") ?? element.getAttribute("r:embed") ?? element.getAttribute("embed");
|
|
4163
4373
|
}
|
|
4164
4374
|
function setChildText(parent, localName, value) {
|
|
4165
4375
|
const child = getFirstChild(parent, localName);
|
|
@@ -5027,6 +5237,18 @@ function parseSheetState(archive, path, options) {
|
|
|
5027
5237
|
options?.defaultFont?.sizePt
|
|
5028
5238
|
);
|
|
5029
5239
|
const defaultRowHeight = Number(sheetFormatNode?.getAttribute("defaultRowHeight") ?? 15);
|
|
5240
|
+
const digitWidthPt = measureOfficeDigitWidthPt(options?.defaultFont?.family, options?.defaultFont?.sizePt);
|
|
5241
|
+
const storedColumnPixels = (width) => Math.max(0, Math.floor(
|
|
5242
|
+
(256 * width + Math.floor(128 / digitWidthPt)) / 256 * digitWidthPt
|
|
5243
|
+
) * (4 / 3));
|
|
5244
|
+
const explicitDefaultWidth = Number(sheetFormatNode?.getAttribute("defaultColWidth") ?? Number.NaN);
|
|
5245
|
+
const baseWidth = Number(sheetFormatNode?.getAttribute("baseColWidth") ?? 8);
|
|
5246
|
+
const officeLayout = {
|
|
5247
|
+
defaultColumnPx: Number.isFinite(explicitDefaultWidth) && explicitDefaultWidth > 0 ? storedColumnPixels(explicitDefaultWidth) : ((Number.isFinite(baseWidth) && baseWidth > 0 ? baseWidth : 8) * digitWidthPt + 5) * (4 / 3),
|
|
5248
|
+
defaultRowPx: (Number.isFinite(defaultRowHeight) && defaultRowHeight > 0 ? defaultRowHeight : 15) * (4 / 3),
|
|
5249
|
+
columns: {},
|
|
5250
|
+
rows: {}
|
|
5251
|
+
};
|
|
5030
5252
|
const defaultColWidth = Number(
|
|
5031
5253
|
sheetFormatNode?.getAttribute("defaultColWidth") ?? sheetFormatNode?.getAttribute("baseColWidth") ?? 8.43
|
|
5032
5254
|
);
|
|
@@ -5060,6 +5282,7 @@ function parseSheetState(archive, path, options) {
|
|
|
5060
5282
|
const styleId = Number(rowNode.getAttribute("s") ?? Number.NaN);
|
|
5061
5283
|
if (rowIndex >= 0 && Number.isFinite(height)) {
|
|
5062
5284
|
rowHeightOverridesPx[rowIndex] = Math.max(MIN_ROW_HEIGHT_PX, Math.round(height * 1.33));
|
|
5285
|
+
officeLayout.rows[rowIndex] = { sourcePx: rowHeightOverridesPx[rowIndex], sizePx: Math.max(0, height * (4 / 3)) };
|
|
5063
5286
|
}
|
|
5064
5287
|
if (rowIndex >= 0 && Number.isFinite(styleId)) {
|
|
5065
5288
|
rowStyleIds[rowIndex] = styleId;
|
|
@@ -5098,6 +5321,7 @@ function parseSheetState(archive, path, options) {
|
|
|
5098
5321
|
if (Number.isFinite(width)) {
|
|
5099
5322
|
const widthPx = sheetColumnWidthToPixels(width, columnWidthCharacterWidthPx);
|
|
5100
5323
|
colWidthOverridesPx[col] = widthPx;
|
|
5324
|
+
officeLayout.columns[col] = { sourcePx: widthPx, sizePx: storedColumnPixels(width) };
|
|
5101
5325
|
}
|
|
5102
5326
|
if (Number.isFinite(styleId)) {
|
|
5103
5327
|
colStyleIds[col] = styleId;
|
|
@@ -5114,6 +5338,7 @@ function parseSheetState(archive, path, options) {
|
|
|
5114
5338
|
colStyleIds,
|
|
5115
5339
|
conditionalFormatRules,
|
|
5116
5340
|
defaultColWidthPx: sheetColumnWidthToPixels(defaultColWidth, columnWidthCharacterWidthPx),
|
|
5341
|
+
officeLayout,
|
|
5117
5342
|
defaultRowHeightPx: Math.max(MIN_ROW_HEIGHT_PX, Math.round(defaultRowHeight * 1.33)),
|
|
5118
5343
|
hasHorizontalMerges: false,
|
|
5119
5344
|
hasVerticalMerges: false,
|
|
@@ -6568,7 +6793,7 @@ function appendSheetDrawingReference(sheetDocument, relationshipId) {
|
|
|
6568
6793
|
return;
|
|
6569
6794
|
}
|
|
6570
6795
|
const drawingNode = sheetDocument.createElementNS(SPREADSHEET_NS, "drawing");
|
|
6571
|
-
drawingNode.setAttributeNS(
|
|
6796
|
+
drawingNode.setAttributeNS(REL_NS2, "r:id", relationshipId);
|
|
6572
6797
|
const successorNames = /* @__PURE__ */ new Set([
|
|
6573
6798
|
"legacyDrawing",
|
|
6574
6799
|
"legacyDrawingHF",
|
|
@@ -7551,6 +7776,7 @@ function buildSheetList(workbook, sheetStatesByWorkbookSheetIndex, themePalette,
|
|
|
7551
7776
|
colStyleIds: sheetState?.colStyleIds ?? {},
|
|
7552
7777
|
conditionalFormatRules: sheetState?.conditionalFormatRules ?? [],
|
|
7553
7778
|
dataValidations: parseWorksheetDataValidations(worksheet),
|
|
7779
|
+
officeLayout: sheetState?.officeLayout,
|
|
7554
7780
|
defaultColWidthPx,
|
|
7555
7781
|
defaultRowHeightPx,
|
|
7556
7782
|
freezePanes: parseWorksheetFreezePanes(worksheet),
|
|
@@ -7640,6 +7866,7 @@ function buildSheetList(workbook, sheetStatesByWorkbookSheetIndex, themePalette,
|
|
|
7640
7866
|
colStyleIds: sheetState?.colStyleIds ?? {},
|
|
7641
7867
|
conditionalFormatRules: sheetState?.conditionalFormatRules ?? [],
|
|
7642
7868
|
dataValidations: parseWorksheetDataValidations(worksheet),
|
|
7869
|
+
officeLayout: sheetState?.officeLayout,
|
|
7643
7870
|
defaultColWidthPx,
|
|
7644
7871
|
defaultRowHeightPx,
|
|
7645
7872
|
freezePanes: parseWorksheetFreezePanes(worksheet),
|
|
@@ -8165,7 +8392,7 @@ function sanitizeSavedWorkbookBytes(bytes) {
|
|
|
8165
8392
|
const archive = unzipSync2(bytes);
|
|
8166
8393
|
const stylesEntry = archive["xl/styles.xml"];
|
|
8167
8394
|
if (stylesEntry) {
|
|
8168
|
-
const stylesXml =
|
|
8395
|
+
const stylesXml = strFromU84(stylesEntry).replace(/&quot;/g, """).replace(/&apos;/g, "'");
|
|
8169
8396
|
archive["xl/styles.xml"] = strToU83(stylesXml);
|
|
8170
8397
|
}
|
|
8171
8398
|
return zipSync2(archive, { level: 6 });
|
|
@@ -8808,7 +9035,7 @@ function useXlsxViewerController(options) {
|
|
|
8808
9035
|
return;
|
|
8809
9036
|
}
|
|
8810
9037
|
if (imageAssetsRef.current && !effectiveSkipXmlParsing) {
|
|
8811
|
-
const chartOriginsById = hydrateWorkbookChartStyles(result.chartsByWorkbookSheetIndex, imageAssetsRef.current);
|
|
9038
|
+
const chartOriginsById = hydrateWorkbookChartStyles(result.chartsByWorkbookSheetIndex, imageAssetsRef.current, result.chartsheets);
|
|
8812
9039
|
chartAssetsRef.current = { ...result, chartOriginsById };
|
|
8813
9040
|
}
|
|
8814
9041
|
setChartsByWorkbookSheetIndex(result.chartsByWorkbookSheetIndex);
|
|
@@ -9033,10 +9260,10 @@ function useXlsxViewerController(options) {
|
|
|
9033
9260
|
return;
|
|
9034
9261
|
}
|
|
9035
9262
|
setImageAssets(workerImageAssets);
|
|
9036
|
-
const chartOriginsById = workerImageAssets ? hydrateWorkbookChartStyles(snapshot.chartsByWorkbookSheetIndex, workerImageAssets) : /* @__PURE__ */ new Map();
|
|
9263
|
+
const chartOriginsById = workerImageAssets ? hydrateWorkbookChartStyles(snapshot.chartsByWorkbookSheetIndex, workerImageAssets, snapshot.chartsheets) : /* @__PURE__ */ new Map();
|
|
9037
9264
|
setFormControlsByWorkbookSheetIndex(snapshot.formControlsByWorkbookSheetIndex);
|
|
9038
9265
|
setWorkbook(null);
|
|
9039
|
-
setSheets(snapshot.sheets);
|
|
9266
|
+
setSheets(snapshot.sheets.map((sheet) => ({ ...sheet, officeLayout: workerImageAssets?.sheetStatesByWorkbookSheetIndex[sheet.workbookSheetIndex]?.officeLayout })));
|
|
9040
9267
|
setChartsByWorkbookSheetIndex(snapshot.chartsByWorkbookSheetIndex);
|
|
9041
9268
|
setChartsheets(snapshot.chartsheets);
|
|
9042
9269
|
setTabs(snapshot.tabs);
|
|
@@ -9289,11 +9516,11 @@ function useXlsxViewerController(options) {
|
|
|
9289
9516
|
}
|
|
9290
9517
|
const workerImageAssets = effectiveSkipXmlParsing ? null : parseWorkbookImageAssets(new Uint8Array(deferredBuffer));
|
|
9291
9518
|
setImageAssets(workerImageAssets);
|
|
9292
|
-
const chartOriginsById = workerImageAssets ? hydrateWorkbookChartStyles(snapshot.chartsByWorkbookSheetIndex, workerImageAssets) : /* @__PURE__ */ new Map();
|
|
9519
|
+
const chartOriginsById = workerImageAssets ? hydrateWorkbookChartStyles(snapshot.chartsByWorkbookSheetIndex, workerImageAssets, snapshot.chartsheets) : /* @__PURE__ */ new Map();
|
|
9293
9520
|
deferredBufferRef.current = null;
|
|
9294
9521
|
setDeferredLoadFileSize(null);
|
|
9295
9522
|
setWorkbook(null);
|
|
9296
|
-
setSheets(snapshot.sheets);
|
|
9523
|
+
setSheets(snapshot.sheets.map((sheet) => ({ ...sheet, officeLayout: workerImageAssets?.sheetStatesByWorkbookSheetIndex[sheet.workbookSheetIndex]?.officeLayout })));
|
|
9297
9524
|
setChartsByWorkbookSheetIndex(snapshot.chartsByWorkbookSheetIndex);
|
|
9298
9525
|
setChartsheets(snapshot.chartsheets);
|
|
9299
9526
|
setTabs(snapshot.tabs);
|
|
@@ -10616,7 +10843,13 @@ function useXlsxViewerController(options) {
|
|
|
10616
10843
|
if (!nextChart) {
|
|
10617
10844
|
return false;
|
|
10618
10845
|
}
|
|
10619
|
-
|
|
10846
|
+
const source = chart.renderSource;
|
|
10847
|
+
const indexedCategoryFormulaChanged = source?.indexedXSeries?.[seriesIndex] && chart.series[seriesIndex]?.categoriesRef?.formula !== nextChart.series[seriesIndex]?.categoriesRef?.formula;
|
|
10848
|
+
updateChart(chartId, {
|
|
10849
|
+
series: nextChart.series,
|
|
10850
|
+
typeGroups: nextChart.typeGroups,
|
|
10851
|
+
renderSource: source?.sourceSeries || indexedCategoryFormulaChanged ? void 0 : source
|
|
10852
|
+
});
|
|
10620
10853
|
const selectedSeries = nextChart.series[seriesIndex];
|
|
10621
10854
|
if (selectedSeries) {
|
|
10622
10855
|
setSelectedChartElement((current) => current && current.chartId === chartId && current.kind !== "chart" ? {
|
|
@@ -13560,20 +13793,16 @@ var ChartLoadBoundary = class extends C {
|
|
|
13560
13793
|
return this.props.children;
|
|
13561
13794
|
}
|
|
13562
13795
|
};
|
|
13563
|
-
function MapChartSvg({ renderer, loadingFallback, ...props }) {
|
|
13564
|
-
const resources = useChartModule(regionMapResources);
|
|
13565
|
-
return resources ? /* @__PURE__ */ u(renderer.MemoChartSvg, { ...props }) : /* @__PURE__ */ u(S, { children: loadingFallback("map") });
|
|
13566
|
-
}
|
|
13567
13796
|
function LegacyChartSvg({ loadingFallback, ...props }) {
|
|
13568
13797
|
const renderer = useChartModule(chartRenderer);
|
|
13569
|
-
|
|
13570
|
-
return props.chart.chartType === "RegionMap" ? /* @__PURE__ */ u(MapChartSvg, { ...props, renderer, loadingFallback }) : /* @__PURE__ */ u(renderer.MemoChartSvg, { ...props });
|
|
13798
|
+
return renderer ? /* @__PURE__ */ u(renderer.MemoChartSvg, { ...props }) : /* @__PURE__ */ u(S, { children: loadingFallback("renderer") });
|
|
13571
13799
|
}
|
|
13572
13800
|
function SharedChart(props) {
|
|
13573
|
-
const module = useChartModule(officeChartRenderer);
|
|
13574
|
-
if (!module) return /* @__PURE__ */ u(S, { children: props.loadingFallback("renderer") });
|
|
13575
|
-
const fallback = /* @__PURE__ */ u(LegacyChartSvg, { ...props });
|
|
13576
|
-
|
|
13801
|
+
const module = useChartModule(props.experimentalOfficeCharts ? suppliedOfficeChartRenderer : props.source.experimental ? officeExtendedChartRenderer : officeChartRenderer);
|
|
13802
|
+
if (!module) return /* @__PURE__ */ u(S, { children: props.loadingFallback(props.chart.chartType === "RegionMap" ? "map" : "renderer") });
|
|
13803
|
+
const fallback = props.chart.chartType === "RegionMap" ? /* @__PURE__ */ u("div", { role: "status", children: "Map data is unavailable." }) : /* @__PURE__ */ u(LegacyChartSvg, { ...props });
|
|
13804
|
+
const renderer = props.experimentalOfficeCharts ?? module.renderer;
|
|
13805
|
+
return renderer && module.SharedChartSvg ? /* @__PURE__ */ u(module.SharedChartSvg, { ...props, renderer, fallback }) : fallback;
|
|
13577
13806
|
}
|
|
13578
13807
|
function MemoChartSvg(props) {
|
|
13579
13808
|
return /* @__PURE__ */ u(ChartLoadBoundary, { children: props.chart.renderSource ? /* @__PURE__ */ u(SharedChart, { ...props, source: props.chart.renderSource }) : /* @__PURE__ */ u(LegacyChartSvg, { ...props }) }, props.chart.id);
|
|
@@ -18747,6 +18976,7 @@ function XlsxGrid({
|
|
|
18747
18976
|
renderScroller,
|
|
18748
18977
|
enableGestureZoom = true,
|
|
18749
18978
|
experimentalCanvas = true,
|
|
18979
|
+
experimentalOfficeCharts,
|
|
18750
18980
|
selectionColor,
|
|
18751
18981
|
selectionFillColor,
|
|
18752
18982
|
selectionHeaderColor,
|
|
@@ -18821,8 +19051,8 @@ function XlsxGrid({
|
|
|
18821
19051
|
zoomScale
|
|
18822
19052
|
} = controller;
|
|
18823
19053
|
h(() => {
|
|
18824
|
-
if (showImages && !isChartsLoading) preloadChartRenderers([charts]);
|
|
18825
|
-
}, [charts, isChartsLoading, showImages]);
|
|
19054
|
+
if (showImages && !isChartsLoading) preloadChartRenderers([charts], experimentalOfficeCharts);
|
|
19055
|
+
}, [charts, isChartsLoading, showImages, experimentalOfficeCharts]);
|
|
18826
19056
|
const formControlItemsById = T(() => new Map(
|
|
18827
19057
|
formControls.flatMap((control) => control.controlIndex !== void 0 && (control.kind === "dropdown" || control.kind === "listbox") ? [[control.id, getFormControlItems(control.controlIndex, control.sheetIndex)]] : [])
|
|
18828
19058
|
), [formControls, getFormControlItems]);
|
|
@@ -19478,6 +19708,15 @@ function XlsxGrid({
|
|
|
19478
19708
|
}, [activeSheet?.freezePanes?.col, visibleCols]);
|
|
19479
19709
|
const actualColWidths = T(
|
|
19480
19710
|
() => {
|
|
19711
|
+
const office = experimentalOfficeCharts ? activeSheet?.officeLayout : void 0;
|
|
19712
|
+
if (office) {
|
|
19713
|
+
return Array.from({ length: displayColLimit }, (_2, index) => {
|
|
19714
|
+
if (hiddenColSet.has(index)) return 0;
|
|
19715
|
+
const original = office.columns[index];
|
|
19716
|
+
const override = activeSheet?.colWidthOverridesPx[index];
|
|
19717
|
+
return override !== void 0 && override !== original?.sourcePx ? override : original?.sizePx ?? office.defaultColumnPx;
|
|
19718
|
+
});
|
|
19719
|
+
}
|
|
19481
19720
|
const widths = new Array(displayColLimit).fill(0);
|
|
19482
19721
|
const showGridLines = activeSheet?.showGridLines ?? true;
|
|
19483
19722
|
const fallbackWidth = Math.max(
|
|
@@ -19532,6 +19771,8 @@ function XlsxGrid({
|
|
|
19532
19771
|
return widths;
|
|
19533
19772
|
},
|
|
19534
19773
|
[
|
|
19774
|
+
experimentalOfficeCharts,
|
|
19775
|
+
activeSheet?.officeLayout,
|
|
19535
19776
|
activeSheet?.colWidthOverridesPx,
|
|
19536
19777
|
activeSheet?.colWidths,
|
|
19537
19778
|
activeSheet?.defaultColWidthPx,
|
|
@@ -19546,6 +19787,15 @@ function XlsxGrid({
|
|
|
19546
19787
|
);
|
|
19547
19788
|
const actualRowHeights = T(
|
|
19548
19789
|
() => {
|
|
19790
|
+
const office = experimentalOfficeCharts ? activeSheet?.officeLayout : void 0;
|
|
19791
|
+
if (office) {
|
|
19792
|
+
return Array.from({ length: displayRowLimit }, (_2, index) => {
|
|
19793
|
+
if (hiddenRowSet.has(index)) return 0;
|
|
19794
|
+
const original = office.rows[index];
|
|
19795
|
+
const override = activeSheet?.rowHeightOverridesPx[index];
|
|
19796
|
+
return override !== void 0 && override !== original?.sourcePx ? override : original?.sizePx ?? office.defaultRowPx;
|
|
19797
|
+
});
|
|
19798
|
+
}
|
|
19549
19799
|
const heights = new Array(displayRowLimit).fill(0);
|
|
19550
19800
|
const showGridLines = activeSheet?.showGridLines ?? true;
|
|
19551
19801
|
const fallbackHeight = Math.max(
|
|
@@ -19634,6 +19884,8 @@ function XlsxGrid({
|
|
|
19634
19884
|
return heights;
|
|
19635
19885
|
},
|
|
19636
19886
|
[
|
|
19887
|
+
experimentalOfficeCharts,
|
|
19888
|
+
activeSheet?.officeLayout,
|
|
19637
19889
|
activeSheet?.defaultRowHeightPx,
|
|
19638
19890
|
activeSheet?.maxUsedRow,
|
|
19639
19891
|
activeSheet?.maxUsedCol,
|
|
@@ -24327,10 +24579,23 @@ function XlsxGrid({
|
|
|
24327
24579
|
width: "100%"
|
|
24328
24580
|
},
|
|
24329
24581
|
children: charts.length > 0 ? charts.map((chart) => {
|
|
24330
|
-
const
|
|
24331
|
-
|
|
24582
|
+
const sourceSize = experimentalOfficeCharts && chart.anchor.kind !== "two-cell" ? chart.anchor.sizeEmu : void 0;
|
|
24583
|
+
const chartsheetRect = {
|
|
24584
|
+
height: sourceSize?.cy ? emuToPixels(sourceSize.cy) : 320,
|
|
24585
|
+
left: 0,
|
|
24586
|
+
top: 0,
|
|
24587
|
+
width: sourceSize?.cx ? emuToPixels(sourceSize.cx) : 640
|
|
24588
|
+
};
|
|
24589
|
+
return /* @__PURE__ */ u("div", { style: {
|
|
24590
|
+
minHeight: sourceSize ? void 0 : 320,
|
|
24591
|
+
width: sourceSize ? chartsheetRect.width : void 0,
|
|
24592
|
+
maxWidth: "100%",
|
|
24593
|
+
aspectRatio: sourceSize ? `${chartsheetRect.width}/${chartsheetRect.height}` : void 0,
|
|
24594
|
+
position: "relative"
|
|
24595
|
+
}, children: isChartsLoading ? renderChartLoadingNode(renderChartLoading, chart, chartsheetRect) : /* @__PURE__ */ u(
|
|
24332
24596
|
MemoChartSvg,
|
|
24333
24597
|
{
|
|
24598
|
+
experimentalOfficeCharts,
|
|
24334
24599
|
chart,
|
|
24335
24600
|
loadingFallback: (stage) => renderChartLoadingNode(renderChartLoading, chart, chartsheetRect, stage),
|
|
24336
24601
|
onChartElementDoubleClick: handleChartElementDoubleClick,
|
|
@@ -25286,6 +25551,7 @@ function XlsxGrid({
|
|
|
25286
25551
|
children: isChartsLoading ? renderChartLoadingNode(renderChartLoading, chart, rect) : /* @__PURE__ */ u(
|
|
25287
25552
|
MemoChartSvg,
|
|
25288
25553
|
{
|
|
25554
|
+
experimentalOfficeCharts,
|
|
25289
25555
|
chart,
|
|
25290
25556
|
loadingFallback: (stage) => renderChartLoadingNode(renderChartLoading, chart, rect, stage),
|
|
25291
25557
|
onChartElementDoubleClick: handleChartElementDoubleClick,
|
|
@@ -25377,7 +25643,7 @@ function XlsxGrid({
|
|
|
25377
25643
|
};
|
|
25378
25644
|
const drawingViewportCacheSignature = `${Math.floor(drawingViewport.left / CANVAS_VIEWPORT_OVERSCAN_PX)}:${Math.floor(drawingViewport.top / CANVAS_VIEWPORT_OVERSCAN_PX)}:${drawingViewport.width}:${drawingViewport.height}`;
|
|
25379
25645
|
const previousPaneDrawingNodes = paneDrawingNodesCacheRef.current;
|
|
25380
|
-
const canReusePaneDrawingNodes = previousPaneDrawingNodes !== null && previousPaneDrawingNodes.showImages === showImages && previousPaneDrawingNodes.updateFormControl === updateFormControl && previousPaneDrawingNodes.chartRects === chartRects && previousPaneDrawingNodes.formControlRects === domFormControlRects && previousPaneDrawingNodes.formControlItemsById === formControlItemsById && previousPaneDrawingNodes.shapeRects === domShapeRects && previousPaneDrawingNodes.imageRects === domImageRects && previousPaneDrawingNodes.selectedChartId === selectedChartId && previousPaneDrawingNodes.selectedImageId === selectedImageId && previousPaneDrawingNodes.readOnly === readOnly && previousPaneDrawingNodes.onFormControlAction === onFormControlAction && previousPaneDrawingNodes.onFormControlChange === onFormControlChange && previousPaneDrawingNodes.selectionStroke === selectionStroke && previousPaneDrawingNodes.renderChartLoading === renderChartLoading && previousPaneDrawingNodes.renderFormControl === renderFormControl && previousPaneDrawingNodes.renderImage === renderImage && previousPaneDrawingNodes.renderImageSelection === renderImageSelection && previousPaneDrawingNodes.isChartsLoading === isChartsLoading && previousPaneDrawingNodes.selectedChartElement === selectedChartElement && previousPaneDrawingNodes.palette === palette && previousPaneDrawingNodes.drawingViewportSignature === drawingViewportCacheSignature;
|
|
25646
|
+
const canReusePaneDrawingNodes = previousPaneDrawingNodes !== null && previousPaneDrawingNodes.experimentalOfficeCharts === experimentalOfficeCharts && previousPaneDrawingNodes.showImages === showImages && previousPaneDrawingNodes.updateFormControl === updateFormControl && previousPaneDrawingNodes.chartRects === chartRects && previousPaneDrawingNodes.formControlRects === domFormControlRects && previousPaneDrawingNodes.formControlItemsById === formControlItemsById && previousPaneDrawingNodes.shapeRects === domShapeRects && previousPaneDrawingNodes.imageRects === domImageRects && previousPaneDrawingNodes.selectedChartId === selectedChartId && previousPaneDrawingNodes.selectedImageId === selectedImageId && previousPaneDrawingNodes.readOnly === readOnly && previousPaneDrawingNodes.onFormControlAction === onFormControlAction && previousPaneDrawingNodes.onFormControlChange === onFormControlChange && previousPaneDrawingNodes.selectionStroke === selectionStroke && previousPaneDrawingNodes.renderChartLoading === renderChartLoading && previousPaneDrawingNodes.renderFormControl === renderFormControl && previousPaneDrawingNodes.renderImage === renderImage && previousPaneDrawingNodes.renderImageSelection === renderImageSelection && previousPaneDrawingNodes.isChartsLoading === isChartsLoading && previousPaneDrawingNodes.selectedChartElement === selectedChartElement && previousPaneDrawingNodes.palette === palette && previousPaneDrawingNodes.drawingViewportSignature === drawingViewportCacheSignature;
|
|
25381
25647
|
const paneDrawingNodes = canReusePaneDrawingNodes ? previousPaneDrawingNodes.value : !showImages ? {
|
|
25382
25648
|
corner: null,
|
|
25383
25649
|
left: null,
|
|
@@ -25422,6 +25688,7 @@ function XlsxGrid({
|
|
|
25422
25688
|
palette,
|
|
25423
25689
|
readOnly,
|
|
25424
25690
|
renderChartLoading,
|
|
25691
|
+
experimentalOfficeCharts,
|
|
25425
25692
|
renderFormControl,
|
|
25426
25693
|
renderImage,
|
|
25427
25694
|
renderImageSelection,
|
|
@@ -26754,6 +27021,7 @@ function XlsxViewerInner({
|
|
|
26754
27021
|
enableGestureZoom = true,
|
|
26755
27022
|
errorState,
|
|
26756
27023
|
experimentalCanvas = true,
|
|
27024
|
+
experimentalOfficeCharts,
|
|
26757
27025
|
fileTooLargeState,
|
|
26758
27026
|
getCellStyle,
|
|
26759
27027
|
headerBackgroundColor,
|
|
@@ -26851,6 +27119,7 @@ function XlsxViewerInner({
|
|
|
26851
27119
|
enableGestureZoom,
|
|
26852
27120
|
errorState,
|
|
26853
27121
|
experimentalCanvas,
|
|
27122
|
+
experimentalOfficeCharts,
|
|
26854
27123
|
fileTooLargeState,
|
|
26855
27124
|
getCellStyle,
|
|
26856
27125
|
highlightClassName,
|
|
@@ -27097,4 +27366,4 @@ export {
|
|
|
27097
27366
|
__createContentNode,
|
|
27098
27367
|
__createContentRoot
|
|
27099
27368
|
};
|
|
27100
|
-
//# sourceMappingURL=chunk-
|
|
27369
|
+
//# sourceMappingURL=chunk-H62SZBEY.js.map
|