ooxml-core 1.11.0 → 1.12.1

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 (59) hide show
  1. package/dist/automation/index.cjs +210 -20
  2. package/dist/automation/index.mjs +210 -20
  3. package/dist/docx/embedded.cjs +1 -1
  4. package/dist/docx/embedded.mjs +1 -1
  5. package/dist/docx/index.cjs +1 -1
  6. package/dist/docx/index.mjs +1 -1
  7. package/dist/docx/layout/adapt-table.d.ts.map +1 -1
  8. package/dist/docx/layout/flow-table.d.ts.map +1 -1
  9. package/dist/docx/layout/index.cjs +145 -9
  10. package/dist/docx/layout/index.d.ts +1 -0
  11. package/dist/docx/layout/index.d.ts.map +1 -1
  12. package/dist/docx/layout/index.mjs +145 -10
  13. package/dist/docx/layout/input.d.ts +5 -0
  14. package/dist/docx/layout/input.d.ts.map +1 -1
  15. package/dist/docx/layout/layout-session.d.ts +10 -0
  16. package/dist/docx/layout/layout-session.d.ts.map +1 -0
  17. package/dist/docx/layout/nested-fragment-edges.d.ts.map +1 -1
  18. package/dist/docx/layout/paragraph-cache.d.ts +8 -0
  19. package/dist/docx/layout/paragraph-cache.d.ts.map +1 -0
  20. package/dist/docx/layout/paragraph-layout.d.ts.map +1 -1
  21. package/dist/docx/layout/paragraph-tokens.d.ts +1 -1
  22. package/dist/docx/layout/paragraph-tokens.d.ts.map +1 -1
  23. package/dist/docx/layout/table-paragraph-keeps.d.ts +14 -0
  24. package/dist/docx/layout/table-paragraph-keeps.d.ts.map +1 -0
  25. package/dist/docx/load/index.cjs +1 -1
  26. package/dist/docx/load/index.mjs +1 -1
  27. package/dist/docx/ui/index.cjs +98 -9
  28. package/dist/docx/ui/index.mjs +98 -10
  29. package/dist/docx/ui/review-commands.d.ts.map +1 -1
  30. package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
  31. package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
  32. package/dist/docx/ui/word-count.d.ts +3 -0
  33. package/dist/docx/ui/word-count.d.ts.map +1 -1
  34. package/dist/geometry/element-transform.d.ts +90 -0
  35. package/dist/geometry/element-transform.d.ts.map +1 -0
  36. package/dist/geometry/index.cjs +90 -0
  37. package/dist/geometry/index.d.ts +1 -0
  38. package/dist/geometry/index.d.ts.map +1 -1
  39. package/dist/geometry/index.mjs +83 -1
  40. package/dist/index.cjs +90 -0
  41. package/dist/index.mjs +90 -0
  42. package/dist/visio/index.cjs +314 -39
  43. package/dist/visio/index.d.ts +1 -0
  44. package/dist/visio/index.d.ts.map +1 -1
  45. package/dist/visio/index.mjs +313 -40
  46. package/dist/visio/model.d.ts +12 -0
  47. package/dist/visio/model.d.ts.map +1 -1
  48. package/dist/visio/paper-sizes.d.ts +5 -0
  49. package/dist/visio/paper-sizes.d.ts.map +1 -1
  50. package/dist/visio/parser.d.ts.map +1 -1
  51. package/dist/visio/print-count.d.ts +20 -0
  52. package/dist/visio/print-count.d.ts.map +1 -0
  53. package/dist/visio/print-settings.d.ts +14 -0
  54. package/dist/visio/print-settings.d.ts.map +1 -0
  55. package/dist/visio/ui/index.cjs +194 -4
  56. package/dist/visio/ui/index.mjs +194 -4
  57. package/dist/xlsx/ui/ribbon/parts.d.ts +1 -0
  58. package/dist/xlsx/ui/ribbon/parts.d.ts.map +1 -1
  59. package/package.json +1 -1
@@ -14671,6 +14671,177 @@ function readVisioPageSetup(cells4) {
14671
14671
  return Object.keys(result).length ? result : void 0;
14672
14672
  }
14673
14673
 
14674
+ // visio/print-settings.ts
14675
+ var NAMES2 = [
14676
+ "PaperKind",
14677
+ "PrintPageOrientation",
14678
+ "PageLeftMargin",
14679
+ "PageRightMargin",
14680
+ "PageTopMargin",
14681
+ "PageBottomMargin",
14682
+ "ScaleX",
14683
+ "ScaleY",
14684
+ "OnPage",
14685
+ "PagesX",
14686
+ "PagesY",
14687
+ "CenterX",
14688
+ "CenterY"
14689
+ ];
14690
+ var BOOLEAN = /* @__PURE__ */ new Set(["OnPage", "CenterX", "CenterY"]);
14691
+ var LENGTH = /* @__PURE__ */ new Set(["PageLeftMargin", "PageRightMargin", "PageTopMargin", "PageBottomMargin"]);
14692
+ var CANONICAL = new Map(
14693
+ [...NAMES2, "PageWidth", "PageHeight", "PageScale", "DrawingScale"].map((name3) => [
14694
+ name3.toLowerCase(),
14695
+ name3
14696
+ ])
14697
+ );
14698
+ function indexCells2(sheet) {
14699
+ const cells4 = /* @__PURE__ */ new Map();
14700
+ let duplicate = false;
14701
+ for (const node2 of children2(sheet, "Cell")) {
14702
+ const name3 = attribute2(node2, "N") ?? "", canonical2 = CANONICAL.get(name3.toLowerCase());
14703
+ if (!canonical2) continue;
14704
+ if (canonical2 !== name3) duplicate = true;
14705
+ const values = cells4.get(canonical2) ?? [];
14706
+ if (values.length < 2) values.push(node2);
14707
+ cells4.set(canonical2, values);
14708
+ if (values.length > 1) duplicate = true;
14709
+ }
14710
+ return { cells: cells4, duplicate };
14711
+ }
14712
+ function createVisioPrintSettingsReader(documentSheets, rootStyles) {
14713
+ const indexes = { document: indexCells2(documentSheets[0]), root: indexCells2(rootStyles[0]) };
14714
+ return (pageSheets) => readVisioPrintCountSettings(pageSheets, documentSheets, rootStyles, indexes);
14715
+ }
14716
+ function readVisioPrintCountSettings(pageSheets, documentSheets, rootStyles, indexes) {
14717
+ let refusal;
14718
+ const refuse4 = (reason) => {
14719
+ refusal ??= reason;
14720
+ };
14721
+ if (pageSheets.length !== 1) refuse4("ambiguous-page-sheet");
14722
+ if (documentSheets.length > 1) refuse4("ambiguous-document-sheet");
14723
+ if (!documentSheets.length) refuse4("missing-setting");
14724
+ if (rootStyles.length > 1) refuse4("duplicate-setting");
14725
+ const root2 = rootStyles[0];
14726
+ if (!root2 || attribute2(root2, "ID") !== "0" || attribute2(root2, "NameU") !== "No Style")
14727
+ refuse4("unsupported-print-style");
14728
+ for (const sheet of [...pageSheets, ...documentSheets])
14729
+ for (const name3 of ["LineStyle", "FillStyle", "TextStyle"])
14730
+ if (attribute2(sheet, name3) !== "0") refuse4("unsupported-print-style");
14731
+ for (const name3 of ["LineStyle", "FillStyle", "TextStyle"])
14732
+ if (attribute2(root2, name3) !== void 0) refuse4("unsupported-print-style");
14733
+ const localIndex = indexCells2(pageSheets[0]), rootIndex = indexes?.root ?? indexCells2(root2);
14734
+ const documentIndex = indexes?.document ?? indexCells2(documentSheets[0]);
14735
+ if (localIndex.duplicate || rootIndex.duplicate || documentIndex.duplicate)
14736
+ refuse4("duplicate-setting");
14737
+ const local = localIndex.cells, inherited = rootIndex.cells;
14738
+ const read = (node2, name3, origin) => {
14739
+ const invalid5 = () => {
14740
+ refuse4(origin === "local" ? "invalid-local-setting" : "invalid-document-setting");
14741
+ return void 0;
14742
+ };
14743
+ if (node2.hasAttribute("E")) return invalid5();
14744
+ let raw = (attribute2(node2, "V") ?? "").trim();
14745
+ if (!raw || raw.length > 128) return invalid5();
14746
+ if (BOOLEAN.has(name3)) {
14747
+ if (!["0", "1", "false", "true"].includes(raw)) return invalid5();
14748
+ raw = raw === "true" ? "1" : raw === "false" ? "0" : raw;
14749
+ }
14750
+ try {
14751
+ const value = visioFormulaCachedValue(raw, attribute2(node2, "U"));
14752
+ const length = LENGTH.has(name3) || /^(PageWidth|PageHeight|PageScale|DrawingScale)$/.test(name3);
14753
+ if (!["scalar", ...length ? ["length"] : []].includes(value.unit) || Math.abs(value.value) > 1e9)
14754
+ return invalid5();
14755
+ const formula = attribute2(node2, "F");
14756
+ if (formula !== void 0) {
14757
+ const source = formula.trim();
14758
+ if (/^(true|false)$/i.test(source)) {
14759
+ if ((source.toLowerCase() === "true" ? 1 : 0) !== value.value) return invalid5();
14760
+ } else {
14761
+ if (!source || source === "Inh") return invalid5();
14762
+ const limits = { maxLength: 512, maxNodes: 64, maxDepth: 16, maxSteps: 128 };
14763
+ const analysis = analyzeVisioFormula(source, limits);
14764
+ if (analysis.dynamic || analysis.guarded || analysis.references.length || analysis.unsupportedFunctions.length) {
14765
+ refuse4("dynamic-setting");
14766
+ return void 0;
14767
+ }
14768
+ const evaluated = evaluateVisioFormula(
14769
+ source,
14770
+ () => {
14771
+ throw new Error("Unexpected reference");
14772
+ },
14773
+ limits
14774
+ );
14775
+ if (evaluated.value !== value.value || !["scalar", ...length ? ["length"] : []].includes(evaluated.unit))
14776
+ return invalid5();
14777
+ }
14778
+ }
14779
+ return value.value;
14780
+ } catch {
14781
+ return invalid5();
14782
+ }
14783
+ };
14784
+ const values = /* @__PURE__ */ new Map();
14785
+ for (const name3 of NAMES2) {
14786
+ const nodes = local.get(name3) ?? inherited.get(name3);
14787
+ if (!nodes?.length) continue;
14788
+ if (nodes.length !== 1) continue;
14789
+ const value = read(nodes[0], name3, local.has(name3) ? "local" : "document");
14790
+ if (value !== void 0) values.set(name3, value);
14791
+ }
14792
+ for (const name3 of ["PageWidth", "PageHeight", "PageScale", "DrawingScale"]) {
14793
+ const nodes = local.get(name3);
14794
+ if (!nodes || nodes.length !== 1 || !(read(nodes[0], name3, "local") > 0))
14795
+ refuse4("unusable-drawing-scale");
14796
+ }
14797
+ const setup = {};
14798
+ const paper = values.get("PaperKind");
14799
+ if (paper !== void 0 && Number.isSafeInteger(paper) && paper >= 0 && paper <= 65535)
14800
+ setup.paperKind = paper;
14801
+ else if (paper !== void 0)
14802
+ refuse4(local.has("PaperKind") ? "invalid-local-setting" : "invalid-document-setting");
14803
+ const orientation = values.get("PrintPageOrientation");
14804
+ if (orientation === 0 || orientation === 1 || orientation === 2)
14805
+ setup.printPageOrientation = orientation;
14806
+ else if (orientation !== void 0)
14807
+ refuse4(
14808
+ local.has("PrintPageOrientation") ? "invalid-local-setting" : "invalid-document-setting"
14809
+ );
14810
+ const margins = ["Left", "Right", "Top", "Bottom"].map((side2) => values.get(`Page${side2}Margin`));
14811
+ if (margins.every((n) => n !== void 0 && n >= 0 && n <= 1e3))
14812
+ setup.margins = {
14813
+ left: margins[0],
14814
+ right: margins[1],
14815
+ top: margins[2],
14816
+ bottom: margins[3]
14817
+ };
14818
+ else if (margins.some((n) => n !== void 0 && (n < 0 || n > 1e3)))
14819
+ refuse4("unusable-print-area");
14820
+ for (const [name3, key2] of [
14821
+ ["ScaleX", "printZoom"],
14822
+ ["ScaleY", "printZoomY"],
14823
+ ["PagesX", "printPagesAcross"],
14824
+ ["PagesY", "printPagesDown"]
14825
+ ]) {
14826
+ const value = values.get(name3);
14827
+ if (value !== void 0) {
14828
+ if ((name3 === "PagesX" || name3 === "PagesY") && (!Number.isSafeInteger(value) || value < 1))
14829
+ refuse4(local.has(name3) ? "invalid-local-setting" : "invalid-document-setting");
14830
+ else setup[key2] = value;
14831
+ }
14832
+ }
14833
+ for (const [name3, key2] of [
14834
+ ["OnPage", "printFitToPages"],
14835
+ ["CenterX", "printCenterX"],
14836
+ ["CenterY", "printCenterY"]
14837
+ ]) {
14838
+ const value = values.get(name3);
14839
+ if (value !== void 0) setup[key2] = value === 1;
14840
+ }
14841
+ if (refusal) setup.printCountRefusal = refusal;
14842
+ return setup;
14843
+ }
14844
+
14674
14845
  // visio/master-list.ts
14675
14846
  var MAX_LISTED_MASTERS = 500;
14676
14847
  var PREVIEW_SHAPES = 5e3;
@@ -15272,6 +15443,11 @@ async function parseVsdx(input, options = {}) {
15272
15443
  });
15273
15444
  const rootStyle = styles.get("0");
15274
15445
  if (rootStyle?.attributes.get("NameU") === "No Style") resources.rootSheet = rootStyle.sheet;
15446
+ const printStyleGroups = children2(documentRoot, "StyleSheets");
15447
+ const readPrintSettings = createVisioPrintSettingsReader(
15448
+ children2(documentRoot, "DocumentSheet"),
15449
+ printStyleGroups.length === 1 ? children2(printStyleGroups[0], "StyleSheet").filter((node2) => attribute2(node2, "ID") === "0") : []
15450
+ );
15275
15451
  const masters = /* @__PURE__ */ new Map();
15276
15452
  const masterRecords = [];
15277
15453
  const mastersPart = await related(pkg, documentPart2, "masters", false);
@@ -15435,7 +15611,17 @@ async function parseVsdx(input, options = {}) {
15435
15611
  const value = number(sheet.cells, name3, Number.NaN, localReport);
15436
15612
  if (Number.isSafeInteger(value) && value >= 0 && value <= 255) pageModes[key2] = value;
15437
15613
  }
15438
- const pageSetup = readVisioPageSetup(sheet.cells);
15614
+ const { paperKind, printPageOrientation, margins, printZoom, ...countMetadata } = readPrintSettings(children2(page, "PageSheet"));
15615
+ const pageSetup = {
15616
+ ...readVisioPageSetup(sheet.cells),
15617
+ ...countMetadata,
15618
+ printCountSettings: {
15619
+ ...paperKind === void 0 ? {} : { paperKind },
15620
+ ...printPageOrientation === void 0 ? {} : { printPageOrientation },
15621
+ ...margins === void 0 ? {} : { margins },
15622
+ ...printZoom === void 0 ? {} : { printZoom }
15623
+ }
15624
+ };
15439
15625
  const layout = readVisioPageLayout(sheet.cells);
15440
15626
  for (const connection of connectors)
15441
15627
  if (!seen.has(connection.fromShapeId) || !seen.has(connection.toShapeId))
@@ -15534,15 +15720,19 @@ var VISIO_PAPER_SIZES = Object.freeze([
15534
15720
  function visioPaperSize(paperKind) {
15535
15721
  return VISIO_PAPER_SIZES.find((item) => item.paperKind === paperKind);
15536
15722
  }
15723
+ function visioOrientedPaperSize(paper, landscape) {
15724
+ const short = Math.min(paper.width, paper.height), long = Math.max(paper.width, paper.height);
15725
+ return { width: landscape ? long : short, height: landscape ? short : long };
15726
+ }
15537
15727
  function visioPrintTile(page, paper = page.pageSetup?.paperKind === void 0 ? void 0 : visioPaperSize(page.pageSetup.paperKind)) {
15538
15728
  if (!paper) return void 0;
15539
15729
  const setup = page.pageSetup;
15540
15730
  const landscape = setup?.printPageOrientation === 2 || setup?.printPageOrientation !== 1 && page.width > page.height;
15541
- const short = Math.min(paper.width, paper.height), long = Math.max(paper.width, paper.height);
15731
+ const oriented = visioOrientedPaperSize(paper, landscape);
15542
15732
  const margins = setup?.margins ?? { left: 0, right: 0, top: 0, bottom: 0 };
15543
15733
  const zoom = setup?.printZoom ?? 1;
15544
- const width = ((landscape ? long : short) - margins.left - margins.right) / zoom;
15545
- const height = ((landscape ? short : long) - margins.top - margins.bottom) / zoom;
15734
+ const width = (oriented.width - margins.left - margins.right) / zoom;
15735
+ const height = (oriented.height - margins.top - margins.bottom) / zoom;
15546
15736
  return width > 0.01 && height > 0.01 ? { width, height } : void 0;
15547
15737
  }
15548
15738
 
@@ -14665,6 +14665,177 @@ function readVisioPageSetup(cells4) {
14665
14665
  return Object.keys(result).length ? result : void 0;
14666
14666
  }
14667
14667
 
14668
+ // visio/print-settings.ts
14669
+ var NAMES2 = [
14670
+ "PaperKind",
14671
+ "PrintPageOrientation",
14672
+ "PageLeftMargin",
14673
+ "PageRightMargin",
14674
+ "PageTopMargin",
14675
+ "PageBottomMargin",
14676
+ "ScaleX",
14677
+ "ScaleY",
14678
+ "OnPage",
14679
+ "PagesX",
14680
+ "PagesY",
14681
+ "CenterX",
14682
+ "CenterY"
14683
+ ];
14684
+ var BOOLEAN = /* @__PURE__ */ new Set(["OnPage", "CenterX", "CenterY"]);
14685
+ var LENGTH = /* @__PURE__ */ new Set(["PageLeftMargin", "PageRightMargin", "PageTopMargin", "PageBottomMargin"]);
14686
+ var CANONICAL = new Map(
14687
+ [...NAMES2, "PageWidth", "PageHeight", "PageScale", "DrawingScale"].map((name3) => [
14688
+ name3.toLowerCase(),
14689
+ name3
14690
+ ])
14691
+ );
14692
+ function indexCells2(sheet) {
14693
+ const cells4 = /* @__PURE__ */ new Map();
14694
+ let duplicate = false;
14695
+ for (const node2 of children2(sheet, "Cell")) {
14696
+ const name3 = attribute2(node2, "N") ?? "", canonical2 = CANONICAL.get(name3.toLowerCase());
14697
+ if (!canonical2) continue;
14698
+ if (canonical2 !== name3) duplicate = true;
14699
+ const values = cells4.get(canonical2) ?? [];
14700
+ if (values.length < 2) values.push(node2);
14701
+ cells4.set(canonical2, values);
14702
+ if (values.length > 1) duplicate = true;
14703
+ }
14704
+ return { cells: cells4, duplicate };
14705
+ }
14706
+ function createVisioPrintSettingsReader(documentSheets, rootStyles) {
14707
+ const indexes = { document: indexCells2(documentSheets[0]), root: indexCells2(rootStyles[0]) };
14708
+ return (pageSheets) => readVisioPrintCountSettings(pageSheets, documentSheets, rootStyles, indexes);
14709
+ }
14710
+ function readVisioPrintCountSettings(pageSheets, documentSheets, rootStyles, indexes) {
14711
+ let refusal;
14712
+ const refuse4 = (reason) => {
14713
+ refusal ??= reason;
14714
+ };
14715
+ if (pageSheets.length !== 1) refuse4("ambiguous-page-sheet");
14716
+ if (documentSheets.length > 1) refuse4("ambiguous-document-sheet");
14717
+ if (!documentSheets.length) refuse4("missing-setting");
14718
+ if (rootStyles.length > 1) refuse4("duplicate-setting");
14719
+ const root2 = rootStyles[0];
14720
+ if (!root2 || attribute2(root2, "ID") !== "0" || attribute2(root2, "NameU") !== "No Style")
14721
+ refuse4("unsupported-print-style");
14722
+ for (const sheet of [...pageSheets, ...documentSheets])
14723
+ for (const name3 of ["LineStyle", "FillStyle", "TextStyle"])
14724
+ if (attribute2(sheet, name3) !== "0") refuse4("unsupported-print-style");
14725
+ for (const name3 of ["LineStyle", "FillStyle", "TextStyle"])
14726
+ if (attribute2(root2, name3) !== void 0) refuse4("unsupported-print-style");
14727
+ const localIndex = indexCells2(pageSheets[0]), rootIndex = indexes?.root ?? indexCells2(root2);
14728
+ const documentIndex = indexes?.document ?? indexCells2(documentSheets[0]);
14729
+ if (localIndex.duplicate || rootIndex.duplicate || documentIndex.duplicate)
14730
+ refuse4("duplicate-setting");
14731
+ const local = localIndex.cells, inherited = rootIndex.cells;
14732
+ const read = (node2, name3, origin) => {
14733
+ const invalid5 = () => {
14734
+ refuse4(origin === "local" ? "invalid-local-setting" : "invalid-document-setting");
14735
+ return void 0;
14736
+ };
14737
+ if (node2.hasAttribute("E")) return invalid5();
14738
+ let raw = (attribute2(node2, "V") ?? "").trim();
14739
+ if (!raw || raw.length > 128) return invalid5();
14740
+ if (BOOLEAN.has(name3)) {
14741
+ if (!["0", "1", "false", "true"].includes(raw)) return invalid5();
14742
+ raw = raw === "true" ? "1" : raw === "false" ? "0" : raw;
14743
+ }
14744
+ try {
14745
+ const value = visioFormulaCachedValue(raw, attribute2(node2, "U"));
14746
+ const length = LENGTH.has(name3) || /^(PageWidth|PageHeight|PageScale|DrawingScale)$/.test(name3);
14747
+ if (!["scalar", ...length ? ["length"] : []].includes(value.unit) || Math.abs(value.value) > 1e9)
14748
+ return invalid5();
14749
+ const formula = attribute2(node2, "F");
14750
+ if (formula !== void 0) {
14751
+ const source = formula.trim();
14752
+ if (/^(true|false)$/i.test(source)) {
14753
+ if ((source.toLowerCase() === "true" ? 1 : 0) !== value.value) return invalid5();
14754
+ } else {
14755
+ if (!source || source === "Inh") return invalid5();
14756
+ const limits = { maxLength: 512, maxNodes: 64, maxDepth: 16, maxSteps: 128 };
14757
+ const analysis = analyzeVisioFormula(source, limits);
14758
+ if (analysis.dynamic || analysis.guarded || analysis.references.length || analysis.unsupportedFunctions.length) {
14759
+ refuse4("dynamic-setting");
14760
+ return void 0;
14761
+ }
14762
+ const evaluated = evaluateVisioFormula(
14763
+ source,
14764
+ () => {
14765
+ throw new Error("Unexpected reference");
14766
+ },
14767
+ limits
14768
+ );
14769
+ if (evaluated.value !== value.value || !["scalar", ...length ? ["length"] : []].includes(evaluated.unit))
14770
+ return invalid5();
14771
+ }
14772
+ }
14773
+ return value.value;
14774
+ } catch {
14775
+ return invalid5();
14776
+ }
14777
+ };
14778
+ const values = /* @__PURE__ */ new Map();
14779
+ for (const name3 of NAMES2) {
14780
+ const nodes = local.get(name3) ?? inherited.get(name3);
14781
+ if (!nodes?.length) continue;
14782
+ if (nodes.length !== 1) continue;
14783
+ const value = read(nodes[0], name3, local.has(name3) ? "local" : "document");
14784
+ if (value !== void 0) values.set(name3, value);
14785
+ }
14786
+ for (const name3 of ["PageWidth", "PageHeight", "PageScale", "DrawingScale"]) {
14787
+ const nodes = local.get(name3);
14788
+ if (!nodes || nodes.length !== 1 || !(read(nodes[0], name3, "local") > 0))
14789
+ refuse4("unusable-drawing-scale");
14790
+ }
14791
+ const setup = {};
14792
+ const paper = values.get("PaperKind");
14793
+ if (paper !== void 0 && Number.isSafeInteger(paper) && paper >= 0 && paper <= 65535)
14794
+ setup.paperKind = paper;
14795
+ else if (paper !== void 0)
14796
+ refuse4(local.has("PaperKind") ? "invalid-local-setting" : "invalid-document-setting");
14797
+ const orientation = values.get("PrintPageOrientation");
14798
+ if (orientation === 0 || orientation === 1 || orientation === 2)
14799
+ setup.printPageOrientation = orientation;
14800
+ else if (orientation !== void 0)
14801
+ refuse4(
14802
+ local.has("PrintPageOrientation") ? "invalid-local-setting" : "invalid-document-setting"
14803
+ );
14804
+ const margins = ["Left", "Right", "Top", "Bottom"].map((side2) => values.get(`Page${side2}Margin`));
14805
+ if (margins.every((n) => n !== void 0 && n >= 0 && n <= 1e3))
14806
+ setup.margins = {
14807
+ left: margins[0],
14808
+ right: margins[1],
14809
+ top: margins[2],
14810
+ bottom: margins[3]
14811
+ };
14812
+ else if (margins.some((n) => n !== void 0 && (n < 0 || n > 1e3)))
14813
+ refuse4("unusable-print-area");
14814
+ for (const [name3, key2] of [
14815
+ ["ScaleX", "printZoom"],
14816
+ ["ScaleY", "printZoomY"],
14817
+ ["PagesX", "printPagesAcross"],
14818
+ ["PagesY", "printPagesDown"]
14819
+ ]) {
14820
+ const value = values.get(name3);
14821
+ if (value !== void 0) {
14822
+ if ((name3 === "PagesX" || name3 === "PagesY") && (!Number.isSafeInteger(value) || value < 1))
14823
+ refuse4(local.has(name3) ? "invalid-local-setting" : "invalid-document-setting");
14824
+ else setup[key2] = value;
14825
+ }
14826
+ }
14827
+ for (const [name3, key2] of [
14828
+ ["OnPage", "printFitToPages"],
14829
+ ["CenterX", "printCenterX"],
14830
+ ["CenterY", "printCenterY"]
14831
+ ]) {
14832
+ const value = values.get(name3);
14833
+ if (value !== void 0) setup[key2] = value === 1;
14834
+ }
14835
+ if (refusal) setup.printCountRefusal = refusal;
14836
+ return setup;
14837
+ }
14838
+
14668
14839
  // visio/master-list.ts
14669
14840
  var MAX_LISTED_MASTERS = 500;
14670
14841
  var PREVIEW_SHAPES = 5e3;
@@ -15266,6 +15437,11 @@ async function parseVsdx(input, options = {}) {
15266
15437
  });
15267
15438
  const rootStyle = styles.get("0");
15268
15439
  if (rootStyle?.attributes.get("NameU") === "No Style") resources.rootSheet = rootStyle.sheet;
15440
+ const printStyleGroups = children2(documentRoot, "StyleSheets");
15441
+ const readPrintSettings = createVisioPrintSettingsReader(
15442
+ children2(documentRoot, "DocumentSheet"),
15443
+ printStyleGroups.length === 1 ? children2(printStyleGroups[0], "StyleSheet").filter((node2) => attribute2(node2, "ID") === "0") : []
15444
+ );
15269
15445
  const masters = /* @__PURE__ */ new Map();
15270
15446
  const masterRecords = [];
15271
15447
  const mastersPart = await related(pkg, documentPart2, "masters", false);
@@ -15429,7 +15605,17 @@ async function parseVsdx(input, options = {}) {
15429
15605
  const value = number(sheet.cells, name3, Number.NaN, localReport);
15430
15606
  if (Number.isSafeInteger(value) && value >= 0 && value <= 255) pageModes[key2] = value;
15431
15607
  }
15432
- const pageSetup = readVisioPageSetup(sheet.cells);
15608
+ const { paperKind, printPageOrientation, margins, printZoom, ...countMetadata } = readPrintSettings(children2(page, "PageSheet"));
15609
+ const pageSetup = {
15610
+ ...readVisioPageSetup(sheet.cells),
15611
+ ...countMetadata,
15612
+ printCountSettings: {
15613
+ ...paperKind === void 0 ? {} : { paperKind },
15614
+ ...printPageOrientation === void 0 ? {} : { printPageOrientation },
15615
+ ...margins === void 0 ? {} : { margins },
15616
+ ...printZoom === void 0 ? {} : { printZoom }
15617
+ }
15618
+ };
15433
15619
  const layout = readVisioPageLayout(sheet.cells);
15434
15620
  for (const connection of connectors)
15435
15621
  if (!seen.has(connection.fromShapeId) || !seen.has(connection.toShapeId))
@@ -15528,15 +15714,19 @@ var VISIO_PAPER_SIZES = Object.freeze([
15528
15714
  function visioPaperSize(paperKind) {
15529
15715
  return VISIO_PAPER_SIZES.find((item) => item.paperKind === paperKind);
15530
15716
  }
15717
+ function visioOrientedPaperSize(paper, landscape) {
15718
+ const short = Math.min(paper.width, paper.height), long = Math.max(paper.width, paper.height);
15719
+ return { width: landscape ? long : short, height: landscape ? short : long };
15720
+ }
15531
15721
  function visioPrintTile(page, paper = page.pageSetup?.paperKind === void 0 ? void 0 : visioPaperSize(page.pageSetup.paperKind)) {
15532
15722
  if (!paper) return void 0;
15533
15723
  const setup = page.pageSetup;
15534
15724
  const landscape = setup?.printPageOrientation === 2 || setup?.printPageOrientation !== 1 && page.width > page.height;
15535
- const short = Math.min(paper.width, paper.height), long = Math.max(paper.width, paper.height);
15725
+ const oriented = visioOrientedPaperSize(paper, landscape);
15536
15726
  const margins = setup?.margins ?? { left: 0, right: 0, top: 0, bottom: 0 };
15537
15727
  const zoom = setup?.printZoom ?? 1;
15538
- const width = ((landscape ? long : short) - margins.left - margins.right) / zoom;
15539
- const height = ((landscape ? short : long) - margins.top - margins.bottom) / zoom;
15728
+ const width = (oriented.width - margins.left - margins.right) / zoom;
15729
+ const height = (oriented.height - margins.top - margins.bottom) / zoom;
15540
15730
  return width > 0.01 && height > 0.01 ? { width, height } : void 0;
15541
15731
  }
15542
15732
 
@@ -18,6 +18,7 @@ export type RibbonControl = {
18
18
  command: string;
19
19
  menu: RibbonMenuItem[];
20
20
  size?: 'large' | 'small';
21
+ showLabel?: boolean;
21
22
  } | {
22
23
  kind: 'menu';
23
24
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../../../xlsx/ui/ribbon/parts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../../../xlsx/ui/ribbon/parts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ooxml-core",
3
- "version": "1.11.0",
3
+ "version": "1.12.1",
4
4
  "description": "Shared OOXML logic for the Word, PowerPoint and Excel viewers: everything except the UI",
5
5
  "keywords": [
6
6
  "charts",