ooxml.js 4.3.0 → 4.4.0

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.
Files changed (50) hide show
  1. package/README.md +6 -6
  2. package/dist/{codec-DNjHjEDm.d.cts → codec-CoqS3uGe.d.cts} +2 -2
  3. package/dist/{codec-BrTMlL0a.d.ts → codec-CzqiAWdz.d.ts} +4 -4
  4. package/dist/codec.d.cts +1 -1
  5. package/dist/codec.d.ts +1 -1
  6. package/dist/{content-UlQ-Nhgi.d.cts → content-C79O3esU.d.cts} +6 -1
  7. package/dist/{content-t6ZfmfQM.d.ts → content-MEmp_Rlx.d.ts} +6 -1
  8. package/dist/index.cjs +1 -1
  9. package/dist/index.d.cts +3 -3
  10. package/dist/index.d.ts +3 -3
  11. package/dist/index.js +1 -1
  12. package/dist/{read-Di5UfiSh.cjs → read-D-L3dItC.cjs} +316 -59
  13. package/dist/{read-CxMli3Om.d.ts → read-D30xHgEp.d.ts} +58 -1
  14. package/dist/{read-BQoFiqsb.js → read-DGknK1YY.js} +307 -62
  15. package/dist/{read-CDX1WbiF.d.cts → read-LTgVJIPU.d.cts} +58 -1
  16. package/dist/typed/document-package.cjs +8 -2
  17. package/dist/typed/document-package.js +8 -2
  18. package/dist/typed/docx/constructs.cjs +55 -6
  19. package/dist/typed/docx/constructs.d.cts +6 -3
  20. package/dist/typed/docx/constructs.d.ts +6 -3
  21. package/dist/typed/docx/constructs.js +54 -6
  22. package/dist/typed/docx/read.cjs +3 -1
  23. package/dist/typed/docx/read.d.cts +2 -2
  24. package/dist/typed/docx/read.d.ts +2 -2
  25. package/dist/typed/docx/read.js +2 -2
  26. package/dist/typed/docx/write.cjs +78 -10
  27. package/dist/typed/docx/write.js +78 -10
  28. package/dist/typed/embedded.cjs +1 -1
  29. package/dist/typed/embedded.js +1 -1
  30. package/dist/typed/pptx/read.cjs +1 -1
  31. package/dist/typed/pptx/read.js +1 -1
  32. package/dist/typed/xlsx/build.cjs +1 -1
  33. package/dist/typed/xlsx/build.js +1 -1
  34. package/dist/typed/xlsx/content.cjs +42 -1
  35. package/dist/typed/xlsx/content.d.cts +2 -2
  36. package/dist/typed/xlsx/content.d.ts +2 -2
  37. package/dist/typed/xlsx/content.js +42 -2
  38. package/dist/typed/xlsx/definitions.cjs +54 -0
  39. package/dist/typed/xlsx/definitions.d.cts +6 -0
  40. package/dist/typed/xlsx/definitions.d.ts +6 -0
  41. package/dist/typed/xlsx/definitions.js +53 -0
  42. package/dist/typed/xlsx/drawings.cjs +170 -0
  43. package/dist/typed/xlsx/drawings.d.cts +7 -0
  44. package/dist/typed/xlsx/drawings.d.ts +7 -0
  45. package/dist/typed/xlsx/drawings.js +169 -0
  46. package/dist/typed/xlsx/units.cjs +2 -0
  47. package/dist/typed/xlsx/units.d.cts +2 -1
  48. package/dist/typed/xlsx/units.d.ts +2 -1
  49. package/dist/typed/xlsx/units.js +2 -1
  50. package/package.json +2 -2
@@ -1,2 +1,2 @@
1
- import { a as readEmbeddedOoxmlPayload, o as readEmbeddedPayloadPart } from "../read-BQoFiqsb.js";
1
+ import { c as readEmbeddedPayloadPart, s as readEmbeddedOoxmlPayload } from "../read-DGknK1YY.js";
2
2
  export { readEmbeddedOoxmlPayload, readEmbeddedPayloadPart };
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_read = require("../../read-Di5UfiSh.cjs");
2
+ const require_read = require("../../read-D-L3dItC.cjs");
3
3
  exports.PptxDocumentSchema = require_read.PptxDocumentSchema;
4
4
  exports.readPptxContent = require_read.readPptxContent;
@@ -1,2 +1,2 @@
1
- import { c as readPptxContent, s as PptxDocumentSchema } from "../../read-BQoFiqsb.js";
1
+ import { l as PptxDocumentSchema, u as readPptxContent } from "../../read-DGknK1YY.js";
2
2
  export { PptxDocumentSchema, readPptxContent };
@@ -6,10 +6,10 @@ const require_typed_xlsx_defined_names = require("./defined-names.cjs");
6
6
  const require_typed_xlsx_number_format = require("./number-format.cjs");
7
7
  const require_typed_xlsx_util = require("./util.cjs");
8
8
  const require_typed_xlsx_print_settings = require("./print-settings.cjs");
9
+ const require_typed_xlsx_units = require("./units.cjs");
9
10
  const require_typed_xlsx_serial = require("./serial.cjs");
10
11
  const require_typed_xlsx_shared_strings = require("./shared-strings.cjs");
11
12
  const require_typed_xlsx_styles = require("./styles.cjs");
12
- const require_typed_xlsx_units = require("./units.cjs");
13
13
  let document_schema_js = require("document-schema.js");
14
14
  //#region src/typed/xlsx/build.ts
15
15
  const SML_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
@@ -5,10 +5,10 @@ import { XLNM_PRINT_AREA, XLNM_PRINT_TITLES, buildPrintAreaValue, buildPrintTitl
5
5
  import { BOOLEAN_NUMBER_FORMAT, DATE_NUMBER_FORMAT, DATE_TIME_NUMBER_FORMAT, PERCENTAGE_NUMBER_FORMAT, TIME_NUMBER_FORMAT, currencyNumberFormat } from "./number-format.js";
6
6
  import { pageSizeToPaperSizeCode, ptToUniversalMeasure, writeXmlBool } from "./util.js";
7
7
  import { DEFAULT_HEADER_FOOTER_MARGIN_PT } from "./print-settings.js";
8
+ import { ptToColumnWidthChars } from "./units.js";
8
9
  import { isoDateTimeToSerial, isoDateToSerial, isoTimeToSerial } from "./serial.js";
9
10
  import { SharedStringTable } from "./shared-strings.js";
10
11
  import { CellFormatTable, RESERVED_BORDER_INDICES, RESERVED_FILL_INDICES } from "./styles.js";
11
- import { ptToColumnWidthChars } from "./units.js";
12
12
  import { cellReference, rangeReference } from "document-schema.js";
13
13
  //#region src/typed/xlsx/build.ts
14
14
  const SML_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
@@ -1,15 +1,17 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_xml_build = require("../../xml/build.cjs");
2
3
  const require_typed_util = require("../util.cjs");
3
4
  const require_typed_shared_metadata = require("../shared/metadata.cjs");
4
5
  const require_typed_xlsx_defined_names = require("./defined-names.cjs");
5
6
  const require_typed_xlsx_number_format = require("./number-format.cjs");
6
7
  const require_typed_xlsx_util = require("./util.cjs");
7
8
  const require_typed_xlsx_print_settings = require("./print-settings.cjs");
9
+ const require_typed_xlsx_units = require("./units.cjs");
10
+ const require_typed_xlsx_drawings = require("./drawings.cjs");
8
11
  const require_typed_xlsx_serial = require("./serial.cjs");
9
12
  const require_typed_xlsx_shared_strings = require("./shared-strings.cjs");
10
13
  const require_typed_xlsx_styles = require("./styles.cjs");
11
14
  const require_typed_xlsx_comments = require("./comments.cjs");
12
- const require_typed_xlsx_units = require("./units.cjs");
13
15
  let document_schema_js = require("document-schema.js");
14
16
  //#region src/typed/xlsx/content.ts
15
17
  const WORKBOOK_PATH = "xl/workbook.xml";
@@ -318,6 +320,41 @@ function applyCellComments(comments, cells) {
318
320
  byPosition.set(key, materialised);
319
321
  }
320
322
  }
323
+ function applyCellResidueRules(worksheet, cells) {
324
+ const rules = [];
325
+ for (const container of require_typed_util.childrenWithTag(worksheet, "dataValidations")) rules.push(...require_typed_util.childrenWithTag(container, "dataValidation"));
326
+ rules.push(...require_typed_util.childrenWithTag(worksheet, "conditionalFormatting"));
327
+ if (rules.length === 0) return;
328
+ const byPosition = /* @__PURE__ */ new Map();
329
+ for (const cell of cells) byPosition.set(`${cell.row}:${cell.column}`, cell);
330
+ for (const rule of rules) {
331
+ const sqref = require_typed_util.attr(rule, "sqref");
332
+ const firstToken = sqref === void 0 ? void 0 : sqref.split(/\s+/)[0];
333
+ const range = firstToken === void 0 || firstToken === "" ? void 0 : (0, document_schema_js.parseRangeReference)(firstToken);
334
+ if (range === void 0) continue;
335
+ const key = `${range.startRow}:${range.startColumn}`;
336
+ const existing = byPosition.get(key);
337
+ if (existing === void 0) {
338
+ const materialised = {
339
+ row: range.startRow,
340
+ column: range.startColumn,
341
+ value: { kind: "empty" },
342
+ displayText: "",
343
+ source: {
344
+ format: "xlsx",
345
+ xml: require_xml_build.buildXml([rule])
346
+ }
347
+ };
348
+ cells.push(materialised);
349
+ byPosition.set(key, materialised);
350
+ continue;
351
+ }
352
+ existing.source ??= {
353
+ format: "xlsx",
354
+ xml: require_xml_build.buildXml([rule])
355
+ };
356
+ }
357
+ }
321
358
  function readSheet(pkg, entry, sheetIndex, sharedStrings, definedNamesBySheet, context) {
322
359
  const worksheet = require_typed_util.rootElement(pkg.parts[entry.path]);
323
360
  if (worksheet === void 0) return {
@@ -330,12 +367,15 @@ function readSheet(pkg, entry, sheetIndex, sharedStrings, definedNamesBySheet, c
330
367
  };
331
368
  const cells = readCells(worksheet, sharedStrings, context);
332
369
  applyCellComments(require_typed_xlsx_comments.readSheetCellComments(pkg, entry.path), cells);
370
+ applyCellResidueRules(worksheet, cells);
371
+ const embeddedObjects = require_typed_xlsx_drawings.readSheetEmbeddedObjects(pkg, entry.path, worksheet);
333
372
  return {
334
373
  name: entry.name,
335
374
  cells,
336
375
  columns: readColumns(worksheet),
337
376
  rows: readRows(worksheet),
338
377
  images: [],
378
+ ...embeddedObjects === void 0 ? {} : { embeddedObjects },
339
379
  printSettings: require_typed_xlsx_print_settings.readPrintSettings(worksheet, sheetIndex, definedNamesBySheet)
340
380
  };
341
381
  }
@@ -360,3 +400,4 @@ function readXlsxContent(pkg) {
360
400
  }
361
401
  //#endregion
362
402
  exports.readXlsxContent = readXlsxContent;
403
+ exports.resolveSheetEntries = resolveSheetEntries;
@@ -1,2 +1,2 @@
1
- import { t as readXlsxContent } from "../../content-UlQ-Nhgi.cjs";
2
- export { readXlsxContent };
1
+ import { n as resolveSheetEntries, t as readXlsxContent } from "../../content-C79O3esU.cjs";
2
+ export { readXlsxContent, resolveSheetEntries };
@@ -1,2 +1,2 @@
1
- import { t as readXlsxContent } from "../../content-t6ZfmfQM.js";
2
- export { readXlsxContent };
1
+ import { n as resolveSheetEntries, t as readXlsxContent } from "../../content-MEmp_Rlx.js";
2
+ export { readXlsxContent, resolveSheetEntries };
@@ -1,14 +1,16 @@
1
+ import { buildXml } from "../../xml/build.js";
1
2
  import { attr, childrenWithTag, elementsWithTag, resolveRelationships, rootElement, textContent } from "../util.js";
2
3
  import { readCoreProperties } from "../shared/metadata.js";
3
4
  import { readDefinedNamesBySheet } from "./defined-names.js";
4
5
  import { classifyNumberFormat } from "./number-format.js";
5
6
  import { readXmlBool } from "./util.js";
6
7
  import { readPrintSettings } from "./print-settings.js";
8
+ import { columnWidthCharsToPt } from "./units.js";
9
+ import { readSheetEmbeddedObjects } from "./drawings.js";
7
10
  import { readDate1904, serialToIsoDate, serialToIsoDateTime, serialToIsoTime } from "./serial.js";
8
11
  import { loadSharedStrings } from "./shared-strings.js";
9
12
  import { readCellStyles } from "./styles.js";
10
13
  import { readSheetCellComments } from "./comments.js";
11
- import { columnWidthCharsToPt } from "./units.js";
12
14
  import { parseCellReference, parseRangeReference } from "document-schema.js";
13
15
  //#region src/typed/xlsx/content.ts
14
16
  const WORKBOOK_PATH = "xl/workbook.xml";
@@ -317,6 +319,41 @@ function applyCellComments(comments, cells) {
317
319
  byPosition.set(key, materialised);
318
320
  }
319
321
  }
322
+ function applyCellResidueRules(worksheet, cells) {
323
+ const rules = [];
324
+ for (const container of childrenWithTag(worksheet, "dataValidations")) rules.push(...childrenWithTag(container, "dataValidation"));
325
+ rules.push(...childrenWithTag(worksheet, "conditionalFormatting"));
326
+ if (rules.length === 0) return;
327
+ const byPosition = /* @__PURE__ */ new Map();
328
+ for (const cell of cells) byPosition.set(`${cell.row}:${cell.column}`, cell);
329
+ for (const rule of rules) {
330
+ const sqref = attr(rule, "sqref");
331
+ const firstToken = sqref === void 0 ? void 0 : sqref.split(/\s+/)[0];
332
+ const range = firstToken === void 0 || firstToken === "" ? void 0 : parseRangeReference(firstToken);
333
+ if (range === void 0) continue;
334
+ const key = `${range.startRow}:${range.startColumn}`;
335
+ const existing = byPosition.get(key);
336
+ if (existing === void 0) {
337
+ const materialised = {
338
+ row: range.startRow,
339
+ column: range.startColumn,
340
+ value: { kind: "empty" },
341
+ displayText: "",
342
+ source: {
343
+ format: "xlsx",
344
+ xml: buildXml([rule])
345
+ }
346
+ };
347
+ cells.push(materialised);
348
+ byPosition.set(key, materialised);
349
+ continue;
350
+ }
351
+ existing.source ??= {
352
+ format: "xlsx",
353
+ xml: buildXml([rule])
354
+ };
355
+ }
356
+ }
320
357
  function readSheet(pkg, entry, sheetIndex, sharedStrings, definedNamesBySheet, context) {
321
358
  const worksheet = rootElement(pkg.parts[entry.path]);
322
359
  if (worksheet === void 0) return {
@@ -329,12 +366,15 @@ function readSheet(pkg, entry, sheetIndex, sharedStrings, definedNamesBySheet, c
329
366
  };
330
367
  const cells = readCells(worksheet, sharedStrings, context);
331
368
  applyCellComments(readSheetCellComments(pkg, entry.path), cells);
369
+ applyCellResidueRules(worksheet, cells);
370
+ const embeddedObjects = readSheetEmbeddedObjects(pkg, entry.path, worksheet);
332
371
  return {
333
372
  name: entry.name,
334
373
  cells,
335
374
  columns: readColumns(worksheet),
336
375
  rows: readRows(worksheet),
337
376
  images: [],
377
+ ...embeddedObjects === void 0 ? {} : { embeddedObjects },
338
378
  printSettings: readPrintSettings(worksheet, sheetIndex, definedNamesBySheet)
339
379
  };
340
380
  }
@@ -358,4 +398,4 @@ function readXlsxContent(pkg) {
358
398
  };
359
399
  }
360
400
  //#endregion
361
- export { readXlsxContent };
401
+ export { readXlsxContent, resolveSheetEntries };
@@ -0,0 +1,54 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_typed_util = require("../util.cjs");
3
+ require("./defined-names.cjs");
4
+ const require_typed_xlsx_content = require("./content.cjs");
5
+ //#region src/typed/xlsx/definitions.ts
6
+ const WORKBOOK_PATH = "xl/workbook.xml";
7
+ const TABLE_REL_SUFFIX = "/table";
8
+ function readNamedRanges(pkg, out) {
9
+ const workbook = require_typed_util.rootElement(pkg.parts[WORKBOOK_PATH]);
10
+ const container = workbook === void 0 ? void 0 : require_typed_util.childrenWithTag(workbook, "definedNames")[0];
11
+ if (container === void 0) return;
12
+ for (const definedName of require_typed_util.childrenWithTag(container, "definedName")) {
13
+ const name = require_typed_util.attr(definedName, "name");
14
+ if (name === void 0 || name === "_xlnm.Print_Area" || name === "_xlnm.Print_Titles") continue;
15
+ const localSheetIdRaw = require_typed_util.attr(definedName, "localSheetId");
16
+ const localSheetId = localSheetIdRaw === void 0 ? void 0 : Number.parseInt(localSheetIdRaw, 10);
17
+ out[`namedRange:${name}`] = {
18
+ kind: "namedRange",
19
+ name,
20
+ refersTo: require_typed_util.textContent(definedName),
21
+ ...Number.isInteger(localSheetId) ? { localSheetId } : {}
22
+ };
23
+ }
24
+ }
25
+ function readTableEntries(pkg, out) {
26
+ for (const entry of require_typed_xlsx_content.resolveSheetEntries(pkg)) for (const rel of require_typed_util.resolveRelationships(pkg, entry.path).values()) {
27
+ if (!rel.type.endsWith(TABLE_REL_SUFFIX)) continue;
28
+ const table = require_typed_util.rootElement(pkg.parts[rel.target]);
29
+ const name = table === void 0 ? void 0 : require_typed_util.attr(table, "name");
30
+ const ref = table === void 0 ? void 0 : require_typed_util.attr(table, "ref");
31
+ if (table === void 0 || name === void 0 || ref === void 0) continue;
32
+ const columns = [];
33
+ const tableColumns = require_typed_util.childrenWithTag(table, "tableColumns")[0];
34
+ for (const column of tableColumns === void 0 ? [] : require_typed_util.childrenWithTag(tableColumns, "tableColumn")) {
35
+ const columnName = require_typed_util.attr(column, "name");
36
+ if (columnName !== void 0) columns.push(columnName);
37
+ }
38
+ out[`table:${name}`] = {
39
+ kind: "table",
40
+ name,
41
+ ref,
42
+ sheet: entry.name,
43
+ columns
44
+ };
45
+ }
46
+ }
47
+ function readWorkbookDefinitions(pkg) {
48
+ const out = {};
49
+ readNamedRanges(pkg, out);
50
+ readTableEntries(pkg, out);
51
+ return Object.keys(out).length === 0 ? void 0 : out;
52
+ }
53
+ //#endregion
54
+ exports.readWorkbookDefinitions = readWorkbookDefinitions;
@@ -0,0 +1,6 @@
1
+ import { r as Package } from "../../package-L24lkba-.cjs";
2
+ import { DefinitionsTable } from "document-schema.js";
3
+ //#region src/typed/xlsx/definitions.d.ts
4
+ declare function readWorkbookDefinitions(pkg: Package): DefinitionsTable | undefined;
5
+ //#endregion
6
+ export { readWorkbookDefinitions };
@@ -0,0 +1,6 @@
1
+ import { r as Package } from "../../package-BUojjTXf.js";
2
+ import { DefinitionsTable } from "document-schema.js";
3
+ //#region src/typed/xlsx/definitions.d.ts
4
+ declare function readWorkbookDefinitions(pkg: Package): DefinitionsTable | undefined;
5
+ //#endregion
6
+ export { readWorkbookDefinitions };
@@ -0,0 +1,53 @@
1
+ import { attr, childrenWithTag, resolveRelationships, rootElement, textContent } from "../util.js";
2
+ import "./defined-names.js";
3
+ import { resolveSheetEntries } from "./content.js";
4
+ //#region src/typed/xlsx/definitions.ts
5
+ const WORKBOOK_PATH = "xl/workbook.xml";
6
+ const TABLE_REL_SUFFIX = "/table";
7
+ function readNamedRanges(pkg, out) {
8
+ const workbook = rootElement(pkg.parts[WORKBOOK_PATH]);
9
+ const container = workbook === void 0 ? void 0 : childrenWithTag(workbook, "definedNames")[0];
10
+ if (container === void 0) return;
11
+ for (const definedName of childrenWithTag(container, "definedName")) {
12
+ const name = attr(definedName, "name");
13
+ if (name === void 0 || name === "_xlnm.Print_Area" || name === "_xlnm.Print_Titles") continue;
14
+ const localSheetIdRaw = attr(definedName, "localSheetId");
15
+ const localSheetId = localSheetIdRaw === void 0 ? void 0 : Number.parseInt(localSheetIdRaw, 10);
16
+ out[`namedRange:${name}`] = {
17
+ kind: "namedRange",
18
+ name,
19
+ refersTo: textContent(definedName),
20
+ ...Number.isInteger(localSheetId) ? { localSheetId } : {}
21
+ };
22
+ }
23
+ }
24
+ function readTableEntries(pkg, out) {
25
+ for (const entry of resolveSheetEntries(pkg)) for (const rel of resolveRelationships(pkg, entry.path).values()) {
26
+ if (!rel.type.endsWith(TABLE_REL_SUFFIX)) continue;
27
+ const table = rootElement(pkg.parts[rel.target]);
28
+ const name = table === void 0 ? void 0 : attr(table, "name");
29
+ const ref = table === void 0 ? void 0 : attr(table, "ref");
30
+ if (table === void 0 || name === void 0 || ref === void 0) continue;
31
+ const columns = [];
32
+ const tableColumns = childrenWithTag(table, "tableColumns")[0];
33
+ for (const column of tableColumns === void 0 ? [] : childrenWithTag(tableColumns, "tableColumn")) {
34
+ const columnName = attr(column, "name");
35
+ if (columnName !== void 0) columns.push(columnName);
36
+ }
37
+ out[`table:${name}`] = {
38
+ kind: "table",
39
+ name,
40
+ ref,
41
+ sheet: entry.name,
42
+ columns
43
+ };
44
+ }
45
+ }
46
+ function readWorkbookDefinitions(pkg) {
47
+ const out = {};
48
+ readNamedRanges(pkg, out);
49
+ readTableEntries(pkg, out);
50
+ return Object.keys(out).length === 0 ? void 0 : out;
51
+ }
52
+ //#endregion
53
+ export { readWorkbookDefinitions };
@@ -0,0 +1,170 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_typed_util = require("../util.cjs");
3
+ const require_typed_shared_metadata = require("../shared/metadata.cjs");
4
+ const require_typed_shared_units = require("../shared/units.cjs");
5
+ const require_typed_pptx_chart = require("../pptx/chart.cjs");
6
+ const require_typed_xlsx_print_settings = require("./print-settings.cjs");
7
+ const require_typed_xlsx_units = require("./units.cjs");
8
+ //#region src/typed/xlsx/drawings.ts
9
+ const CHART_GRAPHIC_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
10
+ const DRAWING_REL_SUFFIX = "/drawing";
11
+ var SheetGridGeometry = class {
12
+ columns = [];
13
+ rowHeights = /* @__PURE__ */ new Map();
14
+ defaultRowHeightPt;
15
+ constructor(worksheet) {
16
+ const cols = require_typed_util.childrenWithTag(worksheet, "cols")[0];
17
+ if (cols !== void 0) for (const col of require_typed_util.childrenWithTag(cols, "col")) {
18
+ const min = Number.parseInt(require_typed_util.attr(col, "min") ?? "", 10);
19
+ const max = Number.parseInt(require_typed_util.attr(col, "max") ?? "", 10);
20
+ const widthRaw = require_typed_util.attr(col, "width");
21
+ const widthPt = widthRaw === void 0 ? void 0 : require_typed_xlsx_units.columnWidthCharsToPt(Number(widthRaw));
22
+ if (Number.isInteger(min) && Number.isInteger(max) && min >= 1 && max >= min) this.columns.push({
23
+ min: min - 1,
24
+ max: max - 1,
25
+ widthPt: Number.isFinite(widthPt) ? widthPt : void 0
26
+ });
27
+ }
28
+ const sheetFormatPr = require_typed_util.childrenWithTag(worksheet, "sheetFormatPr")[0];
29
+ const defaultRaw = sheetFormatPr === void 0 ? void 0 : require_typed_util.attr(sheetFormatPr, "defaultRowHeight");
30
+ const parsed = defaultRaw === void 0 ? NaN : Number(defaultRaw);
31
+ this.defaultRowHeightPt = Number.isFinite(parsed) ? parsed : 15;
32
+ const sheetData = require_typed_util.childrenWithTag(worksheet, "sheetData")[0];
33
+ if (sheetData !== void 0) for (const row of require_typed_util.childrenWithTag(sheetData, "row")) {
34
+ const r = Number.parseInt(require_typed_util.attr(row, "r") ?? "", 10);
35
+ const htRaw = require_typed_util.attr(row, "ht");
36
+ const ht = htRaw === void 0 ? NaN : Number(htRaw);
37
+ if (Number.isInteger(r) && r >= 1 && Number.isFinite(ht)) this.rowHeights.set(r - 1, ht);
38
+ }
39
+ }
40
+ columnWidthPt(index) {
41
+ return this.columns.find((column) => index >= column.min && index <= column.max && column.widthPt !== void 0)?.widthPt ?? require_typed_xlsx_units.columnWidthCharsToPt(8.43);
42
+ }
43
+ rowHeightPt(index) {
44
+ return this.rowHeights.get(index) ?? this.defaultRowHeightPt;
45
+ }
46
+ xPt(column, colOffEmu) {
47
+ let xPt = require_typed_shared_units.emuToPt(colOffEmu);
48
+ for (let index = 0; index < column; index++) xPt += this.columnWidthPt(index);
49
+ return xPt;
50
+ }
51
+ yPt(row, rowOffEmu) {
52
+ let yPt = require_typed_shared_units.emuToPt(rowOffEmu);
53
+ for (let index = 0; index < row; index++) yPt += this.rowHeightPt(index);
54
+ return yPt;
55
+ }
56
+ };
57
+ function readAnchorChild(marker, tag) {
58
+ const child = require_typed_util.childrenWithTag(marker, tag)[0];
59
+ const text = child === void 0 ? void 0 : child.children.map((node) => node.type === "text" ? node.value : "").join("");
60
+ const parsed = text === void 0 || text === "" ? NaN : Number(text);
61
+ return Number.isFinite(parsed) ? parsed : 0;
62
+ }
63
+ function readAnchorMarker(parent, tag) {
64
+ const marker = require_typed_util.childrenWithTag(parent, tag)[0];
65
+ if (marker === void 0) return;
66
+ return {
67
+ column: readAnchorChild(marker, "xdr:col"),
68
+ colOffEmu: readAnchorChild(marker, "xdr:colOff"),
69
+ row: readAnchorChild(marker, "xdr:row"),
70
+ rowOffEmu: readAnchorChild(marker, "xdr:rowOff")
71
+ };
72
+ }
73
+ function emptyWorksheet() {
74
+ return {
75
+ type: "element",
76
+ tag: "worksheet",
77
+ attributes: [],
78
+ children: []
79
+ };
80
+ }
81
+ function chartCells(chartRoot, frame) {
82
+ const table = require_typed_pptx_chart.readChartTable(chartRoot, frame);
83
+ if (table === void 0) return [];
84
+ const cells = [];
85
+ table.rows.forEach((row, rowIndex) => {
86
+ row.cells.forEach((cell, columnIndex) => {
87
+ const text = cell.blocks.map((block) => block.kind === "paragraph" ? block.runs.map((run) => run.text).join("") : "").join("");
88
+ if (text !== "") cells.push({
89
+ row: rowIndex,
90
+ column: columnIndex,
91
+ value: {
92
+ kind: "string",
93
+ value: text
94
+ },
95
+ displayText: text
96
+ });
97
+ });
98
+ });
99
+ return cells;
100
+ }
101
+ function readSheetEmbeddedObjects(pkg, worksheetPath, worksheet) {
102
+ let drawingPath;
103
+ for (const rel of require_typed_util.resolveRelationships(pkg, worksheetPath).values()) if (rel.type.endsWith(DRAWING_REL_SUFFIX)) {
104
+ drawingPath = rel.target;
105
+ break;
106
+ }
107
+ const drawingRoot = drawingPath === void 0 ? void 0 : require_typed_util.rootElement(pkg.parts[drawingPath]);
108
+ if (drawingRoot === void 0) return;
109
+ const drawingRels = drawingPath === void 0 ? void 0 : require_typed_util.resolveRelationships(pkg, drawingPath);
110
+ const geometry = new SheetGridGeometry(worksheet);
111
+ const objects = [];
112
+ for (const anchor of require_typed_util.childrenWithTag(drawingRoot, "xdr:twoCellAnchor")) {
113
+ const from = readAnchorMarker(anchor, "xdr:from");
114
+ const to = readAnchorMarker(anchor, "xdr:to");
115
+ if (from === void 0 || to === void 0) continue;
116
+ for (const frame of require_typed_util.elementsWithTag([anchor], "xdr:graphicFrame")) {
117
+ const chart = readChartFrame(pkg, frame, drawingRels);
118
+ if (chart === void 0) continue;
119
+ const xPt = geometry.xPt(from.column, from.colOffEmu);
120
+ const yPt = geometry.yPt(from.row, from.rowOffEmu);
121
+ const frameBox = {
122
+ xPt,
123
+ yPt,
124
+ widthPt: geometry.xPt(to.column, to.colOffEmu) - xPt,
125
+ heightPt: geometry.yPt(to.row, to.rowOffEmu) - yPt
126
+ };
127
+ objects.push({
128
+ objectKind: "chart",
129
+ document: chartDocument(pkg, chart.root, frameBox, chart.name),
130
+ frame: frameBox,
131
+ anchorRow: from.row,
132
+ anchorColumn: from.column,
133
+ offsetXPt: require_typed_shared_units.emuToPt(from.colOffEmu),
134
+ offsetYPt: require_typed_shared_units.emuToPt(from.rowOffEmu)
135
+ });
136
+ }
137
+ }
138
+ return objects.length === 0 ? void 0 : objects;
139
+ }
140
+ function readChartFrame(pkg, frame, drawingRels) {
141
+ const graphic = require_typed_util.childrenWithTag(frame, "a:graphic")[0];
142
+ const graphicData = graphic === void 0 ? void 0 : require_typed_util.childrenWithTag(graphic, "a:graphicData")[0];
143
+ if (graphicData === void 0 || require_typed_util.attr(graphicData, "uri") !== CHART_GRAPHIC_URI) return;
144
+ const chartRef = require_typed_util.childrenWithTag(graphicData, "c:chart")[0];
145
+ const rId = chartRef === void 0 ? void 0 : require_typed_util.attr(chartRef, "r:id");
146
+ const target = rId === void 0 ? void 0 : drawingRels?.get(rId)?.target;
147
+ const chartRoot = target === void 0 ? void 0 : require_typed_util.rootElement(pkg.parts[target]);
148
+ if (chartRoot === void 0) return;
149
+ const cNvPr = require_typed_util.elementsWithTag([frame], "xdr:cNvPr")[0];
150
+ return {
151
+ root: chartRoot,
152
+ name: cNvPr === void 0 ? "Chart" : require_typed_util.attr(cNvPr, "name") ?? "Chart"
153
+ };
154
+ }
155
+ function chartDocument(pkg, chartRoot, frame, name) {
156
+ return {
157
+ kind: "spreadsheet",
158
+ metadata: require_typed_shared_metadata.readCoreProperties(pkg),
159
+ sheets: [{
160
+ name,
161
+ cells: chartCells(chartRoot, frame),
162
+ columns: [],
163
+ rows: [],
164
+ images: [],
165
+ printSettings: require_typed_xlsx_print_settings.readPrintSettings(emptyWorksheet(), 0, /* @__PURE__ */ new Map())
166
+ }]
167
+ };
168
+ }
169
+ //#endregion
170
+ exports.readSheetEmbeddedObjects = readSheetEmbeddedObjects;
@@ -0,0 +1,7 @@
1
+ import { l as XmlElement } from "../../node-CkBWRjNR.cjs";
2
+ import { r as Package } from "../../package-L24lkba-.cjs";
3
+ import { ContentEmbeddedObject } from "document-schema.js";
4
+ //#region src/typed/xlsx/drawings.d.ts
5
+ declare function readSheetEmbeddedObjects(pkg: Package, worksheetPath: string, worksheet: XmlElement): ContentEmbeddedObject[] | undefined;
6
+ //#endregion
7
+ export { readSheetEmbeddedObjects };
@@ -0,0 +1,7 @@
1
+ import { l as XmlElement } from "../../node-CkBWRjNR.js";
2
+ import { r as Package } from "../../package-BUojjTXf.js";
3
+ import { ContentEmbeddedObject } from "document-schema.js";
4
+ //#region src/typed/xlsx/drawings.d.ts
5
+ declare function readSheetEmbeddedObjects(pkg: Package, worksheetPath: string, worksheet: XmlElement): ContentEmbeddedObject[] | undefined;
6
+ //#endregion
7
+ export { readSheetEmbeddedObjects };