ooxml-core 1.10.0 → 1.12.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.
- package/dist/PptxHandler-DNZHAHUY.cjs +12 -0
- package/dist/PptxHandler-E44KDHMQ.mjs +3 -0
- package/dist/{PptxHandler-ADEFY476.mjs → PptxHandler-NROFYT2N.mjs} +2 -2
- package/dist/automation/index.cjs +3504 -2888
- package/dist/automation/index.mjs +3504 -2888
- package/dist/{chunk-3N6XMMTT.cjs → chunk-2UVH6RHI.cjs} +1138 -996
- package/dist/{chunk-ZOUGMAZG.mjs → chunk-7DSZI7S6.mjs} +1 -1
- package/dist/{chunk-S6DOCMQC.cjs → chunk-7QZGRB3T.cjs} +0 -10
- package/dist/chunk-ANZ4Q6I3.cjs +21 -0
- package/dist/{chunk-5NVJN4E6.mjs → chunk-EC2W2MDY.mjs} +1 -1
- package/dist/chunk-EGTRL3QJ.mjs +19 -0
- package/dist/chunk-GXHKNSZX.mjs +9 -0
- package/dist/{chunk-CCHYFCPD.mjs → chunk-HCXUI5UC.mjs} +296 -103
- package/dist/chunk-HDQXPSHY.cjs +17 -0
- package/dist/chunk-KTYBFGEY.mjs +14 -0
- package/dist/chunk-QOO36KG4.cjs +42 -0
- package/dist/chunk-R2KZXD6U.mjs +39 -0
- package/dist/{chunk-A6P7G3UK.mjs → chunk-U2DF3EGK.mjs} +1 -1
- package/dist/{chunk-R6KSBNKX.mjs → chunk-UAY26XOI.mjs} +1 -9
- package/dist/{chunk-WUE5ZHU3.mjs → chunk-W5ARCUJB.mjs} +3 -3
- package/dist/chunk-XZPZHXV4.cjs +12 -0
- package/dist/{chunk-ZE53K7DH.mjs → chunk-YB5SRNFS.mjs} +244 -102
- package/dist/docx/embedded.cjs +1 -1
- package/dist/docx/embedded.mjs +1 -1
- package/dist/docx/index.cjs +1 -1
- package/dist/docx/index.mjs +1 -1
- package/dist/docx/layout/adapt-table.d.ts.map +1 -1
- package/dist/docx/layout/flow-table.d.ts.map +1 -1
- package/dist/docx/layout/index.cjs +266 -61
- package/dist/docx/layout/index.d.ts +1 -0
- package/dist/docx/layout/index.d.ts.map +1 -1
- package/dist/docx/layout/index.mjs +266 -62
- package/dist/docx/layout/input.d.ts +5 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/layout-session.d.ts +10 -0
- package/dist/docx/layout/layout-session.d.ts.map +1 -0
- package/dist/docx/layout/nested-fragment-edges.d.ts +9 -0
- package/dist/docx/layout/nested-fragment-edges.d.ts.map +1 -0
- package/dist/docx/layout/paragraph-cache.d.ts +8 -0
- package/dist/docx/layout/paragraph-cache.d.ts.map +1 -0
- package/dist/docx/layout/paragraph-layout.d.ts.map +1 -1
- package/dist/docx/layout/paragraph-tokens.d.ts +1 -1
- package/dist/docx/layout/paragraph-tokens.d.ts.map +1 -1
- package/dist/docx/layout/result.d.ts +7 -0
- package/dist/docx/layout/result.d.ts.map +1 -1
- package/dist/docx/layout/table-border-layout.d.ts +1 -1
- package/dist/docx/layout/table-border-layout.d.ts.map +1 -1
- package/dist/docx/layout/table-cell-layout.d.ts +1 -1
- package/dist/docx/layout/table-cell-layout.d.ts.map +1 -1
- package/dist/docx/layout/table-frames.d.ts.map +1 -1
- package/dist/docx/layout/table-layout.d.ts +1 -1
- package/dist/docx/layout/table-layout.d.ts.map +1 -1
- package/dist/docx/layout/table-paragraph-keeps.d.ts +14 -0
- package/dist/docx/layout/table-paragraph-keeps.d.ts.map +1 -0
- package/dist/docx/load/index.cjs +1 -1
- package/dist/docx/load/index.mjs +1 -1
- package/dist/docx/ui/index.cjs +83 -6
- package/dist/docx/ui/index.mjs +83 -7
- package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
- package/dist/docx/ui/word-count.d.ts +3 -0
- package/dist/docx/ui/word-count.d.ts.map +1 -1
- package/dist/geometry/element-transform.d.ts +90 -0
- package/dist/geometry/element-transform.d.ts.map +1 -0
- package/dist/geometry/index.cjs +90 -0
- package/dist/geometry/index.d.ts +1 -0
- package/dist/geometry/index.d.ts.map +1 -1
- package/dist/geometry/index.mjs +83 -1
- package/dist/index.cjs +90 -0
- package/dist/index.mjs +90 -0
- package/dist/pptx/automation/index.cjs +266 -114
- package/dist/pptx/automation/index.d.ts +5 -4
- package/dist/pptx/automation/index.d.ts.map +1 -1
- package/dist/pptx/automation/index.mjs +5 -5
- package/dist/pptx/chunks/{text-operations-BqHmLaLA.d.ts → elements-DD3UGOMd.d.ts} +17 -3262
- package/dist/pptx/chunks/elements-DD3UGOMd.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-DUCGeZh7.d.ts → index-BZrFyNtU.d.ts} +53 -5
- package/dist/pptx/chunks/index-BZrFyNtU.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-Cuxtr76Y.d.ts → index-DdX02BSm.d.ts} +5 -3
- package/dist/pptx/chunks/index-DdX02BSm.d.ts.map +1 -0
- package/dist/pptx/chunks/smart-art-ENMMEbmW.d.ts +1512 -0
- package/dist/pptx/chunks/smart-art-ENMMEbmW.d.ts.map +1 -0
- package/dist/pptx/chunks/text-D49FKllA.d.ts +1473 -0
- package/dist/pptx/chunks/text-D49FKllA.d.ts.map +1 -0
- package/dist/pptx/chunks/text-operations-CyMTMfID.d.ts +3261 -0
- package/dist/pptx/chunks/text-operations-CyMTMfID.d.ts.map +1 -0
- package/dist/pptx/cli/index.cjs +266 -114
- package/dist/pptx/cli/index.d.ts +1 -1
- package/dist/pptx/cli/index.mjs +4 -4
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +2 -2
- package/dist/pptx/editor/render/find-replace.cjs +17 -16
- package/dist/pptx/editor/render/find-replace.d.ts +2 -2
- package/dist/pptx/editor/render/find-replace.mjs +2 -1
- package/dist/pptx/editor/render/font-family-update.cjs +14 -0
- package/dist/pptx/editor/render/font-family-update.d.ts +17 -0
- package/dist/pptx/editor/render/font-family-update.d.ts.map +1 -0
- package/dist/pptx/editor/render/font-family-update.mjs +1 -0
- package/dist/pptx/editor/render/paragraph-geometry-overrides.cjs +14 -0
- package/dist/pptx/editor/render/paragraph-geometry-overrides.d.ts +17 -0
- package/dist/pptx/editor/render/paragraph-geometry-overrides.d.ts.map +1 -0
- package/dist/pptx/editor/render/paragraph-geometry-overrides.mjs +12 -0
- package/dist/pptx/editor/render/slide-operations.cjs +9 -8
- package/dist/pptx/editor/render/slide-operations.mjs +3 -2
- package/dist/pptx/editor/render/table-data-grid-ops.cjs +1 -1
- package/dist/pptx/editor/render/table-data-grid-ops.mjs +1 -1
- package/dist/pptx/editor/render/text-content-style.cjs +18 -0
- package/dist/pptx/editor/render/text-content-style.d.ts +9 -0
- package/dist/pptx/editor/render/text-content-style.d.ts.map +1 -0
- package/dist/pptx/editor/render/text-content-style.mjs +5 -0
- package/dist/pptx/editor/render/text-runs-style-patch.cjs +17 -0
- package/dist/pptx/editor/render/text-runs-style-patch.d.ts +7 -0
- package/dist/pptx/editor/render/text-runs-style-patch.d.ts.map +1 -0
- package/dist/pptx/editor/render/text-runs-style-patch.mjs +15 -0
- package/dist/pptx/editor/render/text-style-scope.cjs +173 -0
- package/dist/pptx/editor/render/text-style-scope.d.ts +76 -0
- package/dist/pptx/editor/render/text-style-scope.d.ts.map +1 -0
- package/dist/pptx/editor/render/text-style-scope.mjs +164 -0
- package/dist/pptx/editor/render/theme-editor-model.cjs +1 -1
- package/dist/pptx/editor/render/theme-editor-model.mjs +1 -1
- package/dist/pptx/editor/render/update-text-segment-style.cjs +11 -0
- package/dist/pptx/editor/render/update-text-segment-style.d.ts +14 -0
- package/dist/pptx/editor/render/update-text-segment-style.d.ts.map +1 -0
- package/dist/pptx/editor/render/update-text-segment-style.mjs +2 -0
- package/dist/pptx/index.cjs +329 -114
- package/dist/pptx/index.d.ts +7 -5
- package/dist/pptx/index.mjs +5 -5
- package/dist/pptx/smartart-layouts/index.d.ts +1 -1
- package/dist/teams/index.cjs +112 -16
- package/dist/teams/index.mjs +112 -16
- package/dist/visio/edit-commands.d.ts +3 -3
- package/dist/visio/edit-commands.d.ts.map +1 -1
- package/dist/visio/edit-formatting-scope.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
- package/dist/visio/edit-text-field-commands.d.ts +15 -0
- package/dist/visio/edit-text-field-commands.d.ts.map +1 -1
- package/dist/visio/edit-text-field.d.ts +2 -2
- package/dist/visio/edit-text-field.d.ts.map +1 -1
- package/dist/visio/edit.d.ts +1 -1
- package/dist/visio/edit.d.ts.map +1 -1
- package/dist/visio/index.cjs +696 -249
- package/dist/visio/index.d.ts +2 -1
- package/dist/visio/index.d.ts.map +1 -1
- package/dist/visio/index.mjs +695 -250
- package/dist/visio/model.d.ts +18 -0
- package/dist/visio/model.d.ts.map +1 -1
- package/dist/visio/paper-sizes.d.ts +5 -0
- package/dist/visio/paper-sizes.d.ts.map +1 -1
- package/dist/visio/parser.d.ts.map +1 -1
- package/dist/visio/print-count.d.ts +20 -0
- package/dist/visio/print-count.d.ts.map +1 -0
- package/dist/visio/print-settings.d.ts +14 -0
- package/dist/visio/print-settings.d.ts.map +1 -0
- package/dist/visio/shapes.d.ts.map +1 -1
- package/dist/visio/style.d.ts +1 -1
- package/dist/visio/style.d.ts.map +1 -1
- package/dist/visio/text-field-display.d.ts +3 -0
- package/dist/visio/text-field-display.d.ts.map +1 -1
- package/dist/visio/text-field-editability.d.ts +6 -0
- package/dist/visio/text-field-editability.d.ts.map +1 -0
- package/dist/visio/text-field-independent.d.ts +4 -0
- package/dist/visio/text-field-independent.d.ts.map +1 -0
- package/dist/visio/text-field-source.d.ts +6 -0
- package/dist/visio/text-field-source.d.ts.map +1 -0
- package/dist/visio/ui/edit-commands.d.ts.map +1 -1
- package/dist/visio/ui/index.cjs +588 -215
- package/dist/visio/ui/index.mjs +588 -215
- package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
- package/dist/xlsx/edit/pivots.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +773 -514
- package/dist/xlsx/index.mjs +772 -515
- package/dist/xlsx/load/index.cjs +541 -292
- package/dist/xlsx/load/index.mjs +541 -292
- package/dist/xlsx/model-pivots.d.ts +8 -0
- package/dist/xlsx/model-pivots.d.ts.map +1 -1
- package/dist/xlsx/pivot/admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/aggregate.d.ts.map +1 -1
- package/dist/xlsx/pivot/data.d.ts +2 -2
- package/dist/xlsx/pivot/data.d.ts.map +1 -1
- package/dist/xlsx/pivot/index.d.ts +2 -0
- package/dist/xlsx/pivot/index.d.ts.map +1 -1
- package/dist/xlsx/pivot/measures.d.ts +1 -1
- package/dist/xlsx/pivot/measures.d.ts.map +1 -1
- package/dist/xlsx/pivot/page-filter-admission.d.ts +5 -0
- package/dist/xlsx/pivot/page-filter-admission.d.ts.map +1 -0
- package/dist/xlsx/pivot/page-filter.d.ts +11 -0
- package/dist/xlsx/pivot/page-filter.d.ts.map +1 -0
- package/dist/xlsx/pivot/read.d.ts.map +1 -1
- package/dist/xlsx/pivot/table-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/values-axis.d.ts +4 -1
- package/dist/xlsx/pivot/values-axis.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/navigation.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +95 -12
- package/dist/xlsx/ui/index.mjs +95 -12
- package/dist/xlsx/ui/ribbon/parts.d.ts +1 -0
- package/dist/xlsx/ui/ribbon/parts.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/PptxHandler-5UURGJEV.mjs +0 -2
- package/dist/PptxHandler-U5XB2HUE.cjs +0 -11
- package/dist/pptx/chunks/index-Cuxtr76Y.d.ts.map +0 -1
- package/dist/pptx/chunks/index-DUCGeZh7.d.ts.map +0 -1
- package/dist/pptx/chunks/smart-art-D-sXa_Nb.d.ts +0 -2980
- package/dist/pptx/chunks/smart-art-D-sXa_Nb.d.ts.map +0 -1
- package/dist/pptx/chunks/text-operations-BqHmLaLA.d.ts.map +0 -1
|
@@ -4524,10 +4524,14 @@ function fontOf(run) {
|
|
|
4524
4524
|
};
|
|
4525
4525
|
}
|
|
4526
4526
|
var graphemes2 = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
4527
|
-
function runTextWidth(text2, run, measurer) {
|
|
4527
|
+
function runTextWidth(text2, run, measurer, font = fontOf(run)) {
|
|
4528
|
+
let characters = 0;
|
|
4529
|
+
if (run.characterSpacingPx) {
|
|
4530
|
+
for (const _segment of graphemes2.segment(text2)) characters++;
|
|
4531
|
+
}
|
|
4528
4532
|
return Math.max(
|
|
4529
4533
|
0,
|
|
4530
|
-
measurer.widthOf(text2,
|
|
4534
|
+
measurer.widthOf(text2, font) * (run.textScalePercent ?? 100) / 100 + characters * (run.characterSpacingPx ?? 0)
|
|
4531
4535
|
);
|
|
4532
4536
|
}
|
|
4533
4537
|
function resolveIndents(paragraph) {
|
|
@@ -4661,8 +4665,45 @@ function alignFragments(fragments, width, isLastLine, effectiveAlign) {
|
|
|
4661
4665
|
return offset === 0 ? fragments : fragments.map((f) => ({ ...f, xPx: f.xPx + offset }));
|
|
4662
4666
|
}
|
|
4663
4667
|
|
|
4668
|
+
// docx/layout/paragraph-cache.ts
|
|
4669
|
+
var sessions = /* @__PURE__ */ new WeakMap();
|
|
4670
|
+
function registerParagraphCache(measurer) {
|
|
4671
|
+
sessions.set(measurer, /* @__PURE__ */ new Map());
|
|
4672
|
+
}
|
|
4673
|
+
function cachedParagraphLayout(measurer, key, note, compute) {
|
|
4674
|
+
const cache = sessions.get(measurer);
|
|
4675
|
+
if (!cache) return compute(note);
|
|
4676
|
+
const { index, signature } = key();
|
|
4677
|
+
const cached = cache.get(index);
|
|
4678
|
+
if (cached?.signature === signature) {
|
|
4679
|
+
for (const warning of cached.warnings) note(warning);
|
|
4680
|
+
return structuredClone(cached.result);
|
|
4681
|
+
}
|
|
4682
|
+
const warnings = [];
|
|
4683
|
+
const result = compute((warning) => {
|
|
4684
|
+
warnings.push(warning);
|
|
4685
|
+
note(warning);
|
|
4686
|
+
});
|
|
4687
|
+
if (!cache.has(index) && cache.size >= 4e3) cache.delete(cache.keys().next().value);
|
|
4688
|
+
cache.set(index, { signature, result: structuredClone(result), warnings });
|
|
4689
|
+
return result;
|
|
4690
|
+
}
|
|
4691
|
+
|
|
4664
4692
|
// docx/layout/paragraph-layout.ts
|
|
4665
4693
|
function layoutParagraph(paragraph, contentWidthPx, measurer, note, lineBox, startToken = 0) {
|
|
4694
|
+
if (lineBox)
|
|
4695
|
+
return measureParagraph(paragraph, contentWidthPx, measurer, note, lineBox, startToken);
|
|
4696
|
+
return cachedParagraphLayout(
|
|
4697
|
+
measurer,
|
|
4698
|
+
() => ({
|
|
4699
|
+
index: JSON.stringify([paragraph.id, contentWidthPx, startToken]),
|
|
4700
|
+
signature: JSON.stringify(paragraph)
|
|
4701
|
+
}),
|
|
4702
|
+
note,
|
|
4703
|
+
(report) => measureParagraph(paragraph, contentWidthPx, measurer, report, void 0, startToken)
|
|
4704
|
+
);
|
|
4705
|
+
}
|
|
4706
|
+
function measureParagraph(paragraph, contentWidthPx, measurer, note, lineBox, startToken = 0) {
|
|
4666
4707
|
const { leftPx, rightPx, firstLineExtraPx: initialIndent } = resolveIndents(paragraph);
|
|
4667
4708
|
const firstLineExtraPx = startToken ? 0 : initialIndent;
|
|
4668
4709
|
const bodyWidth = Math.max(1, contentWidthPx - leftPx - rightPx);
|
|
@@ -4719,7 +4760,8 @@ function layoutParagraph(paragraph, contentWidthPx, measurer, note, lineBox, sta
|
|
|
4719
4760
|
const tokenWidth = (token) => token.kind === "word" || token.kind === "space" ? runTextWidth(
|
|
4720
4761
|
token.text,
|
|
4721
4762
|
expectDefined(paragraph.runs[token.runIndex], "token run"),
|
|
4722
|
-
measurer
|
|
4763
|
+
measurer,
|
|
4764
|
+
fonts[token.runIndex]
|
|
4723
4765
|
) : token.kind === "object" ? paragraph.runs[token.runIndex]?.object?.widthPx ?? 0 : 0;
|
|
4724
4766
|
const widths = tokens.map(tokenWidth);
|
|
4725
4767
|
const ends = /* @__PURE__ */ new Set(["tab", "lineBreak", "pageBreak", "columnBreak"]);
|
|
@@ -4895,6 +4937,75 @@ function widowControlEnabled(value) {
|
|
|
4895
4937
|
return value !== false;
|
|
4896
4938
|
}
|
|
4897
4939
|
|
|
4940
|
+
// docx/layout/nested-frame-profile.ts
|
|
4941
|
+
var equal = (a, b) => a !== void 0 && b !== void 0 && a.style === b.style && a.color === b.color && Math.abs(a.widthPx - b.widthPx) < 1e-6;
|
|
4942
|
+
function nestedFrameProfile(table, tableWidthPx = table.widthPx) {
|
|
4943
|
+
const sides = table.rows.flatMap(
|
|
4944
|
+
(row) => row.cells.flatMap(
|
|
4945
|
+
(cell) => ["top", "right", "bottom", "left"].map((side) => cell.borders?.[side])
|
|
4946
|
+
)
|
|
4947
|
+
);
|
|
4948
|
+
if (sides.every((side) => !side)) return { leftPx: 0, rightPx: 0, bottomPx: 0 };
|
|
4949
|
+
if (!sides.every((side) => side?.style === "solid" && side.widthPx > 0)) return void 0;
|
|
4950
|
+
const first3 = table.rows[0], left = first3.cells[0].borders.left, right = first3.cells.at(-1).borders.right;
|
|
4951
|
+
for (const [index, row] of table.rows.entries()) {
|
|
4952
|
+
if (row.cells.length !== first3.cells.length || !equal(row.cells[0]?.borders?.left, left) || !equal(row.cells.at(-1)?.borders?.right, right))
|
|
4953
|
+
return void 0;
|
|
4954
|
+
for (const [column, cell] of row.cells.entries()) {
|
|
4955
|
+
const sourceWidth = cell.widthPx ?? (tableWidthPx === void 0 ? void 0 : tableWidthPx / row.cells.length);
|
|
4956
|
+
const paintWidth = sourceWidth === void 0 ? void 0 : sourceWidth + (cell.borders.left.widthPx - cell.borders.right.widthPx) / 2 + (column === row.cells.length - 1 ? cell.borders.right.widthPx : 0);
|
|
4957
|
+
if (paintWidth !== void 0 && paintWidth <= 0) return void 0;
|
|
4958
|
+
if (!equal(cell.borders?.top, row.cells[0]?.borders?.top) || !equal(cell.borders?.bottom, row.cells[0]?.borders?.bottom))
|
|
4959
|
+
return void 0;
|
|
4960
|
+
if (column && !equal(row.cells[column - 1]?.borders?.right, cell.borders?.left))
|
|
4961
|
+
return void 0;
|
|
4962
|
+
if (index) {
|
|
4963
|
+
const previous = table.rows[index - 1].cells[column];
|
|
4964
|
+
if (previous.xPx !== cell.xPx || previous.widthPx !== cell.widthPx || !equal(previous.borders?.bottom, cell.borders?.top))
|
|
4965
|
+
return void 0;
|
|
4966
|
+
}
|
|
4967
|
+
}
|
|
4968
|
+
}
|
|
4969
|
+
return {
|
|
4970
|
+
leftPx: left.widthPx,
|
|
4971
|
+
rightPx: right.widthPx,
|
|
4972
|
+
bottomPx: table.rows.at(-1).cells[0].borders.bottom.widthPx
|
|
4973
|
+
};
|
|
4974
|
+
}
|
|
4975
|
+
|
|
4976
|
+
// docx/layout/nested-fragment-edges.ts
|
|
4977
|
+
var plain = (paragraph) => !paragraph.keepLines && !paragraph.keepNext && !paragraph.pageBreakBefore && !paragraph.footnotes?.length && !paragraph.runs.some((run) => run.footnoteReferenceId !== void 0 || run.breakAfter);
|
|
4978
|
+
function nestedFragmentEdges(table) {
|
|
4979
|
+
if (table.widthPx === void 0 || !Number.isFinite(table.widthPx) || table.widthPx <= 0 || table.rows.length < 2 || !nestedFrameProfile(table, table.widthPx) || table.rows.some(
|
|
4980
|
+
(row) => row.heightPx !== void 0 || row.heightSpecified || row.cantSplit || row.isHeader || row.cells.length !== 2 || row.cells.some(
|
|
4981
|
+
(cell) => (cell.gridSpan ?? 1) !== 1 || cell.verticalMerge !== void 0 || cell.verticalAlign && cell.verticalAlign !== "top" || cell.blocks?.some((block) => block.kind !== "paragraph") || !(cell.blocks ?? cell.paragraphs).every(
|
|
4982
|
+
(block) => block.kind === "paragraph" && plain(block)
|
|
4983
|
+
)
|
|
4984
|
+
)
|
|
4985
|
+
))
|
|
4986
|
+
return void 0;
|
|
4987
|
+
const top = table.rows[0].cells.map((cell) => cell.borders?.top);
|
|
4988
|
+
const bottom = table.rows.at(-1).cells.map((cell) => cell.borders?.bottom);
|
|
4989
|
+
return top.every(Boolean) && bottom.every(Boolean) ? { top, bottom } : void 0;
|
|
4990
|
+
}
|
|
4991
|
+
function reflowNestedFragments(row) {
|
|
4992
|
+
if (row.heightPx !== void 0 || row.heightSpecified || row.cantSplit || row.isHeader || row.cells.length !== 2)
|
|
4993
|
+
return false;
|
|
4994
|
+
let tables = 0;
|
|
4995
|
+
for (const cell of row.cells) {
|
|
4996
|
+
if ((cell.gridSpan ?? 1) !== 1 || cell.verticalMerge !== void 0) return false;
|
|
4997
|
+
if (cell.verticalAlign && cell.verticalAlign !== "top") return false;
|
|
4998
|
+
for (const [index, block] of (cell.blocks ?? cell.paragraphs).entries()) {
|
|
4999
|
+
if (block.kind === "paragraph") {
|
|
5000
|
+
if (!plain(block)) return false;
|
|
5001
|
+
} else {
|
|
5002
|
+
if (index !== 0 || !nestedFragmentEdges(block) || ++tables > 1) return false;
|
|
5003
|
+
}
|
|
5004
|
+
}
|
|
5005
|
+
}
|
|
5006
|
+
return tables === 1;
|
|
5007
|
+
}
|
|
5008
|
+
|
|
4898
5009
|
// docx/layout/table-content.ts
|
|
4899
5010
|
function cellContentBottom(boxes, paddingBottom = 0) {
|
|
4900
5011
|
return Math.max(
|
|
@@ -4928,44 +5039,21 @@ function clipTableFrames(tables, start, end, inset = 0) {
|
|
|
4928
5039
|
}
|
|
4929
5040
|
];
|
|
4930
5041
|
});
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
|
|
4938
|
-
|
|
4939
|
-
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
);
|
|
4943
|
-
if (sides.every((side) => !side)) return { leftPx: 0, rightPx: 0, bottomPx: 0 };
|
|
4944
|
-
if (!sides.every((side) => side?.style === "solid" && side.widthPx > 0)) return void 0;
|
|
4945
|
-
const first3 = table.rows[0], left = first3.cells[0].borders.left, right = first3.cells.at(-1).borders.right;
|
|
4946
|
-
for (const [index, row] of table.rows.entries()) {
|
|
4947
|
-
if (row.cells.length !== first3.cells.length || !equal(row.cells[0]?.borders?.left, left) || !equal(row.cells.at(-1)?.borders?.right, right))
|
|
4948
|
-
return void 0;
|
|
4949
|
-
for (const [column, cell] of row.cells.entries()) {
|
|
4950
|
-
const sourceWidth = cell.widthPx ?? (tableWidthPx === void 0 ? void 0 : tableWidthPx / row.cells.length);
|
|
4951
|
-
const paintWidth = sourceWidth === void 0 ? void 0 : sourceWidth + (cell.borders.left.widthPx - cell.borders.right.widthPx) / 2 + (column === row.cells.length - 1 ? cell.borders.right.widthPx : 0);
|
|
4952
|
-
if (paintWidth !== void 0 && paintWidth <= 0) return void 0;
|
|
4953
|
-
if (!equal(cell.borders?.top, row.cells[0]?.borders?.top) || !equal(cell.borders?.bottom, row.cells[0]?.borders?.bottom))
|
|
4954
|
-
return void 0;
|
|
4955
|
-
if (column && !equal(row.cells[column - 1]?.borders?.right, cell.borders?.left))
|
|
4956
|
-
return void 0;
|
|
4957
|
-
if (index) {
|
|
4958
|
-
const previous = table.rows[index - 1].cells[column];
|
|
4959
|
-
if (previous.xPx !== cell.xPx || previous.widthPx !== cell.widthPx || !equal(previous.borders?.bottom, cell.borders?.top))
|
|
4960
|
-
return void 0;
|
|
5042
|
+
if (table.fragmentEdges && rows.length) {
|
|
5043
|
+
const edges = table.fragmentEdges;
|
|
5044
|
+
for (const [row, side] of [
|
|
5045
|
+
[rows[0], "top"],
|
|
5046
|
+
[rows.at(-1), "bottom"]
|
|
5047
|
+
]) {
|
|
5048
|
+
if (row.geometry)
|
|
5049
|
+
row.geometry = row.geometry.map((cell, index) => ({
|
|
5050
|
+
...cell,
|
|
5051
|
+
borders: { ...cell.borders, [side]: edges[side][index] }
|
|
5052
|
+
}));
|
|
4961
5053
|
}
|
|
4962
5054
|
}
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
leftPx: left.widthPx,
|
|
4966
|
-
rightPx: right.widthPx,
|
|
4967
|
-
bottomPx: table.rows.at(-1).cells[0].borders.bottom.widthPx
|
|
4968
|
-
};
|
|
5055
|
+
return [{ ...table, yPx: top - start + inset, heightPx: bottom - top, rows }];
|
|
5056
|
+
});
|
|
4969
5057
|
}
|
|
4970
5058
|
|
|
4971
5059
|
// docx/layout/table-cell-layout.ts
|
|
@@ -4975,7 +5063,7 @@ function cellParagraphs(cell) {
|
|
|
4975
5063
|
);
|
|
4976
5064
|
return cell.blocks ? walk(cell.blocks) : cell.paragraphs;
|
|
4977
5065
|
}
|
|
4978
|
-
function stackCellBlocks(cell, width, measurer, note, top, starts) {
|
|
5066
|
+
function stackCellBlocks(cell, width, measurer, note, top, starts, physicalFragments = false) {
|
|
4979
5067
|
if (!cell.blocks)
|
|
4980
5068
|
return stackParagraphs(
|
|
4981
5069
|
starts ? cell.paragraphs.filter((p) => starts.has(p.id)) : cell.paragraphs,
|
|
@@ -4996,6 +5084,7 @@ function stackCellBlocks(cell, width, measurer, note, top, starts) {
|
|
|
4996
5084
|
y = result.heightPx;
|
|
4997
5085
|
continue;
|
|
4998
5086
|
}
|
|
5087
|
+
const edges = physicalFragments ? nestedFragmentEdges(block) : void 0;
|
|
4999
5088
|
const tableWidth = block.widthPx ?? width;
|
|
5000
5089
|
const profile = nestedFrameProfile(block, tableWidth);
|
|
5001
5090
|
const reserveBorders = profile !== void 0;
|
|
@@ -5013,13 +5102,21 @@ function stackCellBlocks(cell, width, measurer, note, top, starts) {
|
|
|
5013
5102
|
widthPx: paintedWidth,
|
|
5014
5103
|
yPx: y,
|
|
5015
5104
|
heightPx: 0,
|
|
5016
|
-
rows: []
|
|
5105
|
+
rows: [],
|
|
5106
|
+
...edges ? { fragmentEdges: edges } : {}
|
|
5017
5107
|
};
|
|
5018
5108
|
for (const row of block.rows) {
|
|
5019
5109
|
if (starts && !row.cells.some((nested) => cellParagraphs(nested).some((p) => starts.has(p.id))))
|
|
5020
5110
|
continue;
|
|
5111
|
+
const visibleRow = edges && starts && !frame.rows.length ? {
|
|
5112
|
+
...row,
|
|
5113
|
+
cells: row.cells.map((cell2, index) => ({
|
|
5114
|
+
...cell2,
|
|
5115
|
+
borders: { ...cell2.borders, top: edges.top[index] }
|
|
5116
|
+
}))
|
|
5117
|
+
} : row;
|
|
5021
5118
|
const layout = layoutRow(
|
|
5022
|
-
|
|
5119
|
+
visibleRow,
|
|
5023
5120
|
tableWidth,
|
|
5024
5121
|
measurer,
|
|
5025
5122
|
note,
|
|
@@ -5045,6 +5142,7 @@ function stackCellBlocks(cell, width, measurer, note, top, starts) {
|
|
|
5045
5142
|
xPx: x + geometry.xPx + geometry.paddingLeftPx + (paragraph.xPx ?? 0),
|
|
5046
5143
|
widthPx: paragraph.widthPx ?? Math.max(1, geometry.widthPx - geometry.paddingLeftPx - geometry.paddingRightPx),
|
|
5047
5144
|
readOnly: true,
|
|
5145
|
+
...edges ? { tableFragmentBottomPx: edges.bottom[index].widthPx } : {},
|
|
5048
5146
|
tableFrameInsets: {
|
|
5049
5147
|
top: (paragraph.tableFrameInsets?.top ?? 0) + (reserveBorders ? geometry.borders?.top?.widthPx ?? 0 : 0),
|
|
5050
5148
|
bottom: (paragraph.tableFrameInsets?.bottom ?? 0) + (reserveBorders ? geometry.borders?.bottom?.widthPx ?? 0 : 0)
|
|
@@ -5093,7 +5191,7 @@ function stackParagraphs(paragraphs, widthPx, measurer, note, topPx = 0, startTo
|
|
|
5093
5191
|
}
|
|
5094
5192
|
return { heightPx: y, boxes };
|
|
5095
5193
|
}
|
|
5096
|
-
function layoutRow(row, tableWidthPx, measurer, note, remaining, startTokens, frameBorders = false, frameLeftBorderPx) {
|
|
5194
|
+
function layoutRow(row, tableWidthPx, measurer, note, remaining, startTokens, frameBorders = false, frameLeftBorderPx, physicalFragments = reflowNestedFragments(row)) {
|
|
5097
5195
|
const count = row.cells.length || 1;
|
|
5098
5196
|
let x = 0;
|
|
5099
5197
|
const geometry = [];
|
|
@@ -5119,7 +5217,8 @@ function layoutRow(row, tableWidthPx, measurer, note, remaining, startTokens, fr
|
|
|
5119
5217
|
measurer,
|
|
5120
5218
|
note,
|
|
5121
5219
|
padding.top,
|
|
5122
|
-
starts
|
|
5220
|
+
starts,
|
|
5221
|
+
physicalFragments
|
|
5123
5222
|
);
|
|
5124
5223
|
const heightPx2 = content2.heightPx + padding.bottom;
|
|
5125
5224
|
geometry.push({
|
|
@@ -5156,16 +5255,16 @@ function splitCellAtHeight(boxes, cutHeightPx, paragraphCuts) {
|
|
|
5156
5255
|
let beforeHeightPx = 0;
|
|
5157
5256
|
for (const box of boxes) {
|
|
5158
5257
|
const cut = paragraphCuts?.get(box.blockId) ?? cutHeightPx;
|
|
5159
|
-
if (box.yPx + box.heightPx + (box.tableFrameInsets?.bottom ?? 0) <= cut) {
|
|
5258
|
+
if (box.yPx + box.heightPx + (box.tableFragmentBottomPx ?? box.tableFrameInsets?.bottom ?? 0) <= cut) {
|
|
5160
5259
|
before.push(box);
|
|
5161
5260
|
beforeHeightPx = Math.max(
|
|
5162
5261
|
beforeHeightPx,
|
|
5163
|
-
box.yPx + box.heightPx + (box.tableFrameInsets?.bottom ?? 0)
|
|
5262
|
+
box.yPx + box.heightPx + (box.tableFragmentBottomPx ?? box.tableFrameInsets?.bottom ?? 0)
|
|
5164
5263
|
);
|
|
5165
5264
|
continue;
|
|
5166
5265
|
}
|
|
5167
5266
|
const beforeLines = box.lines.filter(
|
|
5168
|
-
(line2) => box.yPx + line2.yPx + line2.heightPx + (box.tableFrameInsets?.bottom ?? 0) <= cut
|
|
5267
|
+
(line2) => box.yPx + line2.yPx + line2.heightPx + (box.tableFragmentBottomPx ?? box.tableFrameInsets?.bottom ?? 0) <= cut
|
|
5169
5268
|
);
|
|
5170
5269
|
const afterLines = box.lines.slice(beforeLines.length);
|
|
5171
5270
|
if (beforeLines.length) {
|
|
@@ -5173,7 +5272,7 @@ function splitCellAtHeight(boxes, cutHeightPx, paragraphCuts) {
|
|
|
5173
5272
|
before.push({ ...box, heightPx: bottom, lines: beforeLines });
|
|
5174
5273
|
beforeHeightPx = Math.max(
|
|
5175
5274
|
beforeHeightPx,
|
|
5176
|
-
box.yPx + bottom + (box.tableFrameInsets?.bottom ?? 0)
|
|
5275
|
+
box.yPx + bottom + (box.tableFragmentBottomPx ?? box.tableFrameInsets?.bottom ?? 0)
|
|
5177
5276
|
);
|
|
5178
5277
|
}
|
|
5179
5278
|
if (afterLines.length) {
|
|
@@ -5981,6 +6080,55 @@ function placeParagraph(cursor, placement, note) {
|
|
|
5981
6080
|
}
|
|
5982
6081
|
}
|
|
5983
6082
|
|
|
6083
|
+
// docx/layout/table-paragraph-keeps.ts
|
|
6084
|
+
function tableParagraphKeeps(table) {
|
|
6085
|
+
const row = table.rows[0];
|
|
6086
|
+
if (table.rows.length !== 1 || !row || row.cells.length !== 2 || row.heightPx !== void 0 || row.heightSpecified || row.cantSplit || row.isHeader || table.widthPx === void 0 || !Number.isFinite(table.widthPx) || table.widthPx <= 0 || !nestedFrameProfile(table, table.widthPx) || row.cells.some(
|
|
6087
|
+
(cell) => !cell.borders?.top || (cell.gridSpan ?? 1) !== 1 || cell.verticalMerge !== void 0 || cell.verticalAlign && cell.verticalAlign !== "top" || cell.blocks?.some((block) => block.kind !== "paragraph")
|
|
6088
|
+
))
|
|
6089
|
+
return void 0;
|
|
6090
|
+
const paragraphs = row.cells.flatMap(cellParagraphs);
|
|
6091
|
+
if (paragraphs.some(
|
|
6092
|
+
(p) => p.keepNext || p.pageBreakBefore || p.footnotes?.length || p.floats?.length || p.borders || p.shading || p.widowControl !== false || p.lineSpacingRule !== "exact" || p.lineSpacingTwips === void 0 || !Number.isFinite(p.lineSpacingTwips) || p.lineSpacingTwips <= 0 || (p.spacingBeforeTwips ?? 0) !== 0 || (p.spacingAfterTwips ?? 0) !== 0 || p.runs.some((run) => run.footnoteReferenceId !== void 0 || run.breakAfter || run.object)
|
|
6093
|
+
))
|
|
6094
|
+
return void 0;
|
|
6095
|
+
const sources = new Map(paragraphs.map((p) => [p.id, p]));
|
|
6096
|
+
if (sources.size !== paragraphs.length || !paragraphs.some((p) => p.keepLines)) return void 0;
|
|
6097
|
+
return new TableParagraphKeeps(sources);
|
|
6098
|
+
}
|
|
6099
|
+
var TableParagraphKeeps = class {
|
|
6100
|
+
constructor(sources) {
|
|
6101
|
+
this.sources = sources;
|
|
6102
|
+
}
|
|
6103
|
+
sources;
|
|
6104
|
+
/** Before an ordinary row starts, a first kept paragraph can defer the entire row. */
|
|
6105
|
+
startupMinimum(row) {
|
|
6106
|
+
return Math.max(
|
|
6107
|
+
0,
|
|
6108
|
+
...row.cells.map((cell, index) => {
|
|
6109
|
+
const first3 = cell[0];
|
|
6110
|
+
return first3 && this.sources.get(first3.blockId)?.keepLines ? first3.yPx + first3.heightPx + (row.cellPadding?.[index]?.bottom ?? 0) : 0;
|
|
6111
|
+
})
|
|
6112
|
+
);
|
|
6113
|
+
}
|
|
6114
|
+
/** Defer an unstarted paragraph and its following cell content, leaving other cells independent. */
|
|
6115
|
+
cuts(row, available, fresh) {
|
|
6116
|
+
const cuts = /* @__PURE__ */ new Map();
|
|
6117
|
+
row.cells.forEach((cell, index) => {
|
|
6118
|
+
const padding = row.cellPadding?.[index] ?? { top: 0, bottom: 0 };
|
|
6119
|
+
let deferred = false;
|
|
6120
|
+
for (const [position, box] of cell.entries()) {
|
|
6121
|
+
const source = this.sources.get(box.blockId);
|
|
6122
|
+
const atFreshOrigin = fresh && position === 0 && Math.abs(box.yPx - padding.top) < 1e-6;
|
|
6123
|
+
if (!deferred && source?.keepLines && (box.lines[0]?.firstToken ?? 0) === 0 && box.yPx + box.heightPx + padding.bottom > available + 1e-6 && !atFreshOrigin)
|
|
6124
|
+
deferred = true;
|
|
6125
|
+
if (deferred) cuts.set(box.blockId, 0);
|
|
6126
|
+
}
|
|
6127
|
+
});
|
|
6128
|
+
return cuts.size ? cuts : void 0;
|
|
6129
|
+
}
|
|
6130
|
+
};
|
|
6131
|
+
|
|
5984
6132
|
// docx/layout/table-note-stories.ts
|
|
5985
6133
|
function independentNoteStories(cell) {
|
|
5986
6134
|
const first3 = cell.blocks?.[0];
|
|
@@ -6020,7 +6168,7 @@ function measuredNoteReferences(paragraphs) {
|
|
|
6020
6168
|
}
|
|
6021
6169
|
|
|
6022
6170
|
// docx/layout/table-border-layout.ts
|
|
6023
|
-
function layoutBorderedRow(row, width, measurer, note, profile, remaining) {
|
|
6171
|
+
function layoutBorderedRow(row, width, measurer, note, profile, remaining, physicalFragments) {
|
|
6024
6172
|
const reserved = profile !== void 0 && (profile.leftPx > 0 || profile.rightPx > 0 || profile.bottomPx > 0);
|
|
6025
6173
|
const layout = layoutRow(
|
|
6026
6174
|
row,
|
|
@@ -6030,7 +6178,8 @@ function layoutBorderedRow(row, width, measurer, note, profile, remaining) {
|
|
|
6030
6178
|
remaining,
|
|
6031
6179
|
void 0,
|
|
6032
6180
|
reserved,
|
|
6033
|
-
profile?.leftPx
|
|
6181
|
+
profile?.leftPx,
|
|
6182
|
+
physicalFragments
|
|
6034
6183
|
);
|
|
6035
6184
|
if (!reserved) return layout;
|
|
6036
6185
|
const bottom = Math.max(0, ...layout.geometry.map((cell) => cell.borders?.bottom?.widthPx ?? 0));
|
|
@@ -6330,6 +6479,12 @@ var TableFootnotes = class {
|
|
|
6330
6479
|
function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
6331
6480
|
const firstBodyRow = table.rows.findIndex((row) => !row.isHeader);
|
|
6332
6481
|
const headerRows = table.rows.slice(0, firstBodyRow < 0 ? table.rows.length : firstBodyRow);
|
|
6482
|
+
const nativeFragments = new Map(table.rows.map((row) => [row, reflowNestedFragments(row)]));
|
|
6483
|
+
const paragraphKeeps = tableParagraphKeeps(table);
|
|
6484
|
+
const hasParagraphKeeps = table.rows.some(
|
|
6485
|
+
(row) => row.cells.some((cell) => cellParagraphs(cell).some((paragraph) => paragraph.keepLines))
|
|
6486
|
+
);
|
|
6487
|
+
let keepWarning = false;
|
|
6333
6488
|
const xPosition = () => {
|
|
6334
6489
|
const width = (table.widthPx ?? cursor.columnWidthPx) + (activeBorders ? (profile.leftPx + profile.rightPx) / 2 : 0);
|
|
6335
6490
|
return table.alignment === "center" ? Math.max(0, (cursor.columnWidthPx - width) / 2) : table.alignment === "right" ? Math.max(0, cursor.columnWidthPx - width) : table.indentPx ?? 0;
|
|
@@ -6340,13 +6495,14 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6340
6495
|
note(
|
|
6341
6496
|
"Ordinary table border occupancy remains approximate for missing edges, non-solid or conflicting shared borders and changing row grids."
|
|
6342
6497
|
);
|
|
6343
|
-
const layoutRow2 = (row, width, m, n2, remaining) => layoutBorderedRow(
|
|
6498
|
+
const layoutRow2 = (row, width, m, n2, remaining, sourceRow = row) => layoutBorderedRow(
|
|
6344
6499
|
row,
|
|
6345
6500
|
activeBorders ? table.widthPx ?? width : width,
|
|
6346
6501
|
m,
|
|
6347
6502
|
n2,
|
|
6348
6503
|
profile,
|
|
6349
|
-
remaining
|
|
6504
|
+
remaining,
|
|
6505
|
+
nativeFragments.get(sourceRow) ?? false
|
|
6350
6506
|
);
|
|
6351
6507
|
const fragmentBorders = new TableFragmentBorders();
|
|
6352
6508
|
let fragmentRows = [];
|
|
@@ -6403,6 +6559,17 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6403
6559
|
let remainingRow = initial;
|
|
6404
6560
|
while (remainingRow) {
|
|
6405
6561
|
fragmentHeight += fragmentBorders.remove(fragmentRows.at(-1));
|
|
6562
|
+
const keeps = paragraphKeeps && cursor.page.columns.length === 1 && cursor.column.startYPx === void 0 && Math.abs(cursor.remainingHeightPx() - (cursor.columnHeightPx - cursor.usedColumnHeightPx)) < 1e-6 ? paragraphKeeps : void 0;
|
|
6563
|
+
if (hasParagraphKeeps && !keeps && !keepWarning) {
|
|
6564
|
+
note(
|
|
6565
|
+
"Table-cell keep-lines pagination remains approximate outside the measured ordinary automatic two-cell, top-aligned, single-column, note-free row with direct exact-spaced paragraphs, zero paragraph spacing and widow control off."
|
|
6566
|
+
);
|
|
6567
|
+
keepWarning = true;
|
|
6568
|
+
}
|
|
6569
|
+
if (keeps && remainingRow === initial && !cursor.atColumnTop && keeps.startupMinimum(remainingRow) > cursor.remainingHeightPx() - fragmentHeight + 1e-6) {
|
|
6570
|
+
startNewFragment();
|
|
6571
|
+
continue;
|
|
6572
|
+
}
|
|
6406
6573
|
const minimum = cantSplit ? Math.min(remainingRow.heightPx, cursor.columnHeightPx) : Math.min(
|
|
6407
6574
|
...remainingRow.cells.flatMap(
|
|
6408
6575
|
(cell, index) => cell.map(
|
|
@@ -6419,7 +6586,8 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6419
6586
|
cursor.columnWidthPx,
|
|
6420
6587
|
measurer,
|
|
6421
6588
|
note,
|
|
6422
|
-
remainingRow.cells
|
|
6589
|
+
remainingRow.cells,
|
|
6590
|
+
row
|
|
6423
6591
|
);
|
|
6424
6592
|
if (fragmentRows.length) {
|
|
6425
6593
|
fragmentRows = [];
|
|
@@ -6429,7 +6597,7 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6429
6597
|
continue;
|
|
6430
6598
|
}
|
|
6431
6599
|
}
|
|
6432
|
-
if (footnotes) {
|
|
6600
|
+
if (footnotes && !keeps) {
|
|
6433
6601
|
const selected = footnotes.choose(remainingRow, cantSplit);
|
|
6434
6602
|
if (selected) {
|
|
6435
6603
|
if (selected.layout === remainingRow) {
|
|
@@ -6451,7 +6619,8 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6451
6619
|
cursor.columnWidthPx,
|
|
6452
6620
|
measurer,
|
|
6453
6621
|
note,
|
|
6454
|
-
after2.cells
|
|
6622
|
+
after2.cells,
|
|
6623
|
+
row
|
|
6455
6624
|
) : after2;
|
|
6456
6625
|
continue;
|
|
6457
6626
|
}
|
|
@@ -6464,7 +6633,8 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6464
6633
|
cursor.columnWidthPx,
|
|
6465
6634
|
measurer,
|
|
6466
6635
|
note,
|
|
6467
|
-
remainingRow === initial ? void 0 : remainingRow.cells
|
|
6636
|
+
remainingRow === initial ? void 0 : remainingRow.cells,
|
|
6637
|
+
row
|
|
6468
6638
|
);
|
|
6469
6639
|
continue;
|
|
6470
6640
|
}
|
|
@@ -6499,7 +6669,17 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6499
6669
|
remainingRow = null;
|
|
6500
6670
|
continue;
|
|
6501
6671
|
}
|
|
6502
|
-
const
|
|
6672
|
+
const paragraphCuts = keeps?.cuts(
|
|
6673
|
+
remainingRow,
|
|
6674
|
+
remaining,
|
|
6675
|
+
cursor.atColumnTop && fragmentRows.length === 0
|
|
6676
|
+
);
|
|
6677
|
+
const { before, after } = splitRowAtHeight(
|
|
6678
|
+
remainingRow,
|
|
6679
|
+
Math.max(0, remaining),
|
|
6680
|
+
void 0,
|
|
6681
|
+
paragraphCuts
|
|
6682
|
+
);
|
|
6503
6683
|
if (!before.cells.some((cell) => cell.length) && cursor.atColumnTop && fragmentRows.every((row2) => row2.repeated)) {
|
|
6504
6684
|
note(
|
|
6505
6685
|
"A table row cannot fit a line in an empty page/column and was placed without splitting."
|
|
@@ -6511,17 +6691,24 @@ function placeTable(cursor, table, measurer, note, resolveFootnotes) {
|
|
|
6511
6691
|
const previousWidth = cursor.columnWidthPx;
|
|
6512
6692
|
if (before.cells.some((cell) => cell.length)) fragmentRows.push(toRowBox(before, false));
|
|
6513
6693
|
startNewFragment();
|
|
6514
|
-
remainingRow = after && previousWidth !== cursor.columnWidthPx ? layoutRow2(
|
|
6694
|
+
remainingRow = after && (paragraphCuts || previousWidth !== cursor.columnWidthPx || nativeFragments.get(row)) ? layoutRow2(
|
|
6515
6695
|
{ ...row, heightPx: 0, heightRule: "atLeast" },
|
|
6516
6696
|
cursor.columnWidthPx,
|
|
6517
6697
|
measurer,
|
|
6518
6698
|
note,
|
|
6519
|
-
after.cells
|
|
6699
|
+
after.cells,
|
|
6700
|
+
row
|
|
6520
6701
|
) : after;
|
|
6521
6702
|
}
|
|
6522
6703
|
}
|
|
6523
6704
|
for (const row of table.rows) {
|
|
6524
6705
|
const layout = layoutRow2(row, cursor.columnWidthPx, measurer, note);
|
|
6706
|
+
if (layout.heightPx > cursor.remainingHeightPx() && !nativeFragments.get(row) && row.cells.some(
|
|
6707
|
+
(cell) => cell.blocks?.some((block) => block.kind === "table" && block.rows.length > 1)
|
|
6708
|
+
))
|
|
6709
|
+
note(
|
|
6710
|
+
"Nested physical border edges at page cuts remain approximate outside automatic, top-aligned tables with two or more two-cell, note-free rows, direct paragraphs and complete shared borders."
|
|
6711
|
+
);
|
|
6525
6712
|
if (activeBorders && layout.heightPx > cursor.remainingHeightPx() && row.cells.some(
|
|
6526
6713
|
(cell) => (!measuredNoteReferences(row.cells.flatMap(cellParagraphs)) || !independentNoteStories(cell)) && cell.blocks?.some((block) => block.kind === "table") && cellParagraphs(cell).some((p) => p.footnotes?.length)
|
|
6527
6714
|
))
|
|
@@ -6785,9 +6972,9 @@ var SectionFlow = class {
|
|
|
6785
6972
|
const page = this.cursor.page;
|
|
6786
6973
|
const exclusions = this.exclusions?.get(page.index);
|
|
6787
6974
|
if (!exclusions) return void 0;
|
|
6788
|
-
const
|
|
6975
|
+
const plain2 = this.paragraphLayout(index);
|
|
6789
6976
|
const topPx = page.marginTopPx + this.cursor.y + spacingBeforePx;
|
|
6790
|
-
const bottomPx = topPx +
|
|
6977
|
+
const bottomPx = topPx + plain2.contentHeightPx;
|
|
6791
6978
|
if (!exclusions.some((item) => item.yPx < bottomPx && item.yPx + item.heightPx > topPx))
|
|
6792
6979
|
return void 0;
|
|
6793
6980
|
return layoutParagraph(
|
|
@@ -7052,6 +7239,7 @@ function border(side, theme, preserveSingleWidth = false) {
|
|
|
7052
7239
|
function rowLayout(props) {
|
|
7053
7240
|
if (!props) return {};
|
|
7054
7241
|
return {
|
|
7242
|
+
...props.heightTwips !== void 0 ? { heightSpecified: true } : {},
|
|
7055
7243
|
...props.heightTwips ? { heightPx: twipsToPx2(props.heightTwips), heightRule: props.heightRule ?? "atLeast" } : {},
|
|
7056
7244
|
...props.cantSplit ? { cantSplit: true } : {},
|
|
7057
7245
|
...props.header ? { isHeader: true } : {}
|
|
@@ -7116,6 +7304,8 @@ function adaptTable(table, model, adaptParagraph, _nested = false) {
|
|
|
7116
7304
|
const fill = cssHex(visuals.shadingFill);
|
|
7117
7305
|
return {
|
|
7118
7306
|
paragraphs: cell.paragraphs.map(adaptParagraph),
|
|
7307
|
+
...cell.gridSpan !== void 0 ? { gridSpan: cell.gridSpan } : {},
|
|
7308
|
+
...cell.verticalMerge ? { verticalMerge: cell.verticalMerge } : {},
|
|
7119
7309
|
...cell.sourceBlocks ? {
|
|
7120
7310
|
blocks: cellSourceBlocks(cell).map(
|
|
7121
7311
|
(block) => block.type === "paragraph" ? adaptParagraph(block) : adaptTable(block, model, adaptParagraph, true)
|
|
@@ -7685,4 +7875,18 @@ function cssFontStack(family) {
|
|
|
7685
7875
|
);
|
|
7686
7876
|
}
|
|
7687
7877
|
|
|
7688
|
-
|
|
7878
|
+
// docx/layout/layout-session.ts
|
|
7879
|
+
function createLayoutSession(measurer) {
|
|
7880
|
+
const sessionMeasurer = {
|
|
7881
|
+
widthOf: (text2, font) => measurer.widthOf(text2, font),
|
|
7882
|
+
lineHeightOf: (font) => measurer.lineHeightOf(font),
|
|
7883
|
+
...measurer.ascentOf ? { ascentOf: measurer.ascentOf.bind(measurer) } : {}
|
|
7884
|
+
};
|
|
7885
|
+
registerParagraphCache(sessionMeasurer);
|
|
7886
|
+
return {
|
|
7887
|
+
layoutDocument: (input) => layoutDocument(input, sessionMeasurer),
|
|
7888
|
+
layoutDocumentModel: (model, options = {}) => layoutDocumentModel(model, sessionMeasurer, options)
|
|
7889
|
+
};
|
|
7890
|
+
}
|
|
7891
|
+
|
|
7892
|
+
export { DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE_PT, DEFAULT_TAB_STOP_PX, FLOAT_WRAP_NOTE, NO_TWIPS, PageCursor, SINGLE_LINE_SPACING_UNITS, adaptDocumentModel, adjustForWidowOrphan, appendBreakMarker, cellVerticalOffset, createFakeMeasurer, createLayoutSession, cssFontStack, fieldDisplayText, floatPosition, fontMetrics, headerFooterForPage, isEastAsianChar, layoutDocument, layoutDocumentModel, layoutParagraph, layoutRow, layoutSections, ligatureCss, pageNumberValues, pageNumbers, paragraphFloats, placeParagraph, placeTab, placeTable, positionFloats, ptToPx, pxToTwips, sectionPageCounts, splitRowAtHeight, suppressesSpacing, tokenizeRun, twipsToPx, widowControlEnabled };
|
|
@@ -155,6 +155,9 @@ export interface LayoutCellPadding {
|
|
|
155
155
|
}
|
|
156
156
|
export interface LayoutTableCell {
|
|
157
157
|
paragraphs: LayoutParagraph[];
|
|
158
|
+
/** Source merge provenance, retained for bounded paragraph-keeping admission. */
|
|
159
|
+
gridSpan?: number;
|
|
160
|
+
verticalMerge?: 'restart' | 'continue';
|
|
158
161
|
/** Source child order including read-only nested table stories. */
|
|
159
162
|
blocks?: LayoutBlock[];
|
|
160
163
|
/** Column width in CSS pixels; undefined cells share the row's remaining width evenly. */
|
|
@@ -170,6 +173,8 @@ export interface LayoutTableCell {
|
|
|
170
173
|
}
|
|
171
174
|
export interface LayoutTableRow {
|
|
172
175
|
cells: LayoutTableCell[];
|
|
176
|
+
/** Source height provenance, including zero heights not retained by the existing box adapter. */
|
|
177
|
+
heightSpecified?: boolean;
|
|
173
178
|
/** `w:trPr/w:cantSplit`: this row must stay on one page. */
|
|
174
179
|
cantSplit?: boolean;
|
|
175
180
|
/** `w:trHeight`: a minimum (`atLeast`) or fixed (`exact`) row height. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../docx/layout/input.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../docx/layout/input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DocumentModel } from '../index.js';
|
|
2
|
+
import type { LayoutDocumentInput } from './input.js';
|
|
3
|
+
import type { TextMeasurer } from './measure.js';
|
|
4
|
+
import type { LayoutReviewOptions } from './review-display.js';
|
|
5
|
+
/** Reuses measured paragraphs across edits. Create a new session when font metrics change. */
|
|
6
|
+
export declare function createLayoutSession(measurer: TextMeasurer): {
|
|
7
|
+
layoutDocument: (input: LayoutDocumentInput) => import("./result.js").LayoutResult;
|
|
8
|
+
layoutDocumentModel: (model: DocumentModel, options?: LayoutReviewOptions) => import("./result.js").LayoutResult;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=layout-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-session.d.ts","sourceRoot":"","sources":["../../../docx/layout/layout-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY;IAQxD,cAAc,UAAU,mBAAmB;IAC3C,mBAAmB,UAAU,aAAa,YAAW,mBAAmB;EAGzE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LayoutTable, LayoutTableRow } from './input.js';
|
|
2
|
+
/** Two or more automatic top-aligned rows with direct paragraphs and complete shared edges. */
|
|
3
|
+
export declare function nestedFragmentEdges(table: LayoutTable): {
|
|
4
|
+
top: (import("./input.js").LayoutBorder | undefined)[];
|
|
5
|
+
bottom: (import("./input.js").LayoutBorder | undefined)[];
|
|
6
|
+
} | undefined;
|
|
7
|
+
/** The enclosing story must also remain within the measured automatic, note-free profile. */
|
|
8
|
+
export declare function reflowNestedFragments(row: LayoutTableRow): boolean;
|
|
9
|
+
//# sourceMappingURL=nested-fragment-edges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nested-fragment-edges.d.ts","sourceRoot":"","sources":["../../../docx/layout/nested-fragment-edges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAQ5E,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW;;;cA8BrD;AACD,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAsBlE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TextMeasurer } from './measure.js';
|
|
2
|
+
import type { ParagraphLayoutResult } from './paragraph-layout.js';
|
|
3
|
+
export declare function registerParagraphCache(measurer: TextMeasurer): void;
|
|
4
|
+
export declare function cachedParagraphLayout(measurer: TextMeasurer, key: () => {
|
|
5
|
+
index: string;
|
|
6
|
+
signature: string;
|
|
7
|
+
}, note: (message: string) => void, compute: (note: (message: string) => void) => ParagraphLayoutResult): ParagraphLayoutResult;
|
|
8
|
+
//# sourceMappingURL=paragraph-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paragraph-cache.d.ts","sourceRoot":"","sources":["../../../docx/layout/paragraph-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAWhE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAEnE;AAED,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAK,qBAAqB,GACjE,qBAAqB,CAkBvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paragraph-layout.d.ts","sourceRoot":"","sources":["../../../docx/layout/paragraph-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,KAAK,EAAkB,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"paragraph-layout.d.ts","sourceRoot":"","sources":["../../../docx/layout/paragraph-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,KAAK,EAAkB,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAgB/C,MAAM,WAAW,qBAAqB;IACrC,uFAAuF;IACvF,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,uEAAuE;IACvE,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED;;;;;;GAMG;AACH;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,KACZ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,wBAAgB,eAAe,CAC9B,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC/B,OAAO,CAAC,EAAE,SAAS,EACnB,UAAU,SAAI,GACZ,qBAAqB,CAavB"}
|