docxodus 3.5.0 → 3.6.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.
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ var DocxodusPagination = (() => {
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/pagination.ts
22
+ var pagination_exports = {};
23
+ __export(pagination_exports, {
24
+ PaginationEngine: () => PaginationEngine,
25
+ paginateHtml: () => paginateHtml
26
+ });
27
+ var DEFAULT_PAGE_WIDTH = 612;
28
+ var DEFAULT_PAGE_HEIGHT = 792;
29
+ var DEFAULT_MARGIN = 72;
30
+ function pxToPt(px) {
31
+ return px * 0.75;
32
+ }
33
+ function ptToPx(pt) {
34
+ return pt / 0.75;
35
+ }
36
+ function parseDimensions(section) {
37
+ const pageWidth = parseFloat(section.dataset.pageWidth || "") || DEFAULT_PAGE_WIDTH;
38
+ const pageHeight = parseFloat(section.dataset.pageHeight || "") || DEFAULT_PAGE_HEIGHT;
39
+ const contentWidth = parseFloat(section.dataset.contentWidth || "") || pageWidth - 2 * DEFAULT_MARGIN;
40
+ const contentHeight = parseFloat(section.dataset.contentHeight || "") || pageHeight - 2 * DEFAULT_MARGIN;
41
+ const marginTop = parseFloat(section.dataset.marginTop || "") || DEFAULT_MARGIN;
42
+ const marginRight = parseFloat(section.dataset.marginRight || "") || DEFAULT_MARGIN;
43
+ const marginBottom = parseFloat(section.dataset.marginBottom || "") || DEFAULT_MARGIN;
44
+ const marginLeft = parseFloat(section.dataset.marginLeft || "") || DEFAULT_MARGIN;
45
+ return {
46
+ pageWidth,
47
+ pageHeight,
48
+ contentWidth,
49
+ contentHeight,
50
+ marginTop,
51
+ marginRight,
52
+ marginBottom,
53
+ marginLeft
54
+ };
55
+ }
56
+ var PaginationEngine = class {
57
+ /**
58
+ * Creates a new pagination engine.
59
+ *
60
+ * @param staging - The staging element or its ID containing the content to paginate
61
+ * @param container - The container element or its ID where pages will be rendered
62
+ * @param options - Pagination options
63
+ */
64
+ constructor(staging, container, options = {}) {
65
+ this.stagingElement = typeof staging === "string" ? document.getElementById(staging) : staging;
66
+ this.containerElement = typeof container === "string" ? document.getElementById(container) : container;
67
+ if (!this.stagingElement) {
68
+ throw new Error("Staging element not found");
69
+ }
70
+ if (!this.containerElement) {
71
+ throw new Error("Container element not found");
72
+ }
73
+ this.scale = options.scale ?? 1;
74
+ this.cssPrefix = options.cssPrefix ?? "page-";
75
+ this.showPageNumbers = options.showPageNumbers ?? true;
76
+ this.pageGap = options.pageGap ?? 20;
77
+ }
78
+ /**
79
+ * Runs the pagination process.
80
+ *
81
+ * @returns PaginationResult with page information
82
+ */
83
+ paginate() {
84
+ const pages = [];
85
+ let pageNumber = 1;
86
+ const sections = this.stagingElement.querySelectorAll(
87
+ "[data-section-index]"
88
+ );
89
+ const sectionsToProcess = sections.length > 0 ? Array.from(sections) : [this.stagingElement];
90
+ for (const section of sectionsToProcess) {
91
+ const sectionIndex = parseInt(section.dataset.sectionIndex || "0", 10);
92
+ const dims = parseDimensions(section);
93
+ this.stagingElement.style.visibility = "hidden";
94
+ this.stagingElement.style.position = "absolute";
95
+ this.stagingElement.style.left = "-9999px";
96
+ this.stagingElement.style.display = "block";
97
+ section.style.width = `${dims.contentWidth}pt`;
98
+ const blocks = this.measureBlocks(section, dims);
99
+ const sectionPages = this.flowToPages(blocks, dims, pageNumber, sectionIndex);
100
+ pages.push(...sectionPages);
101
+ pageNumber += sectionPages.length;
102
+ }
103
+ this.stagingElement.style.display = "none";
104
+ return { totalPages: pages.length, pages };
105
+ }
106
+ /**
107
+ * Measures all content blocks in a section.
108
+ */
109
+ measureBlocks(section, dims) {
110
+ const blocks = [];
111
+ const children = Array.from(section.children);
112
+ for (const child of children) {
113
+ if (child.dataset.sectionIndex !== void 0) {
114
+ const nestedBlocks = this.measureBlocks(child, dims);
115
+ blocks.push(...nestedBlocks);
116
+ continue;
117
+ }
118
+ const rect = child.getBoundingClientRect();
119
+ const style = window.getComputedStyle(child);
120
+ const marginTopPx = parseFloat(style.marginTop) || 0;
121
+ const marginBottomPx = parseFloat(style.marginBottom) || 0;
122
+ const heightPt = pxToPt(rect.height);
123
+ const marginTopPt = pxToPt(marginTopPx);
124
+ const marginBottomPt = pxToPt(marginBottomPx);
125
+ const isPageBreak = child.dataset.pageBreak === "true" || child.classList.contains(`${this.cssPrefix}break`);
126
+ blocks.push({
127
+ element: child,
128
+ heightPt,
129
+ marginTopPt,
130
+ marginBottomPt,
131
+ keepWithNext: child.dataset.keepWithNext === "true",
132
+ keepLines: child.dataset.keepLines === "true",
133
+ pageBreakBefore: child.dataset.pageBreakBefore === "true",
134
+ isPageBreak
135
+ });
136
+ }
137
+ return blocks;
138
+ }
139
+ /**
140
+ * Flows measured blocks into page containers.
141
+ */
142
+ flowToPages(blocks, dims, startPageNumber, sectionIndex) {
143
+ const pages = [];
144
+ let currentContent = [];
145
+ let remainingHeight = dims.contentHeight;
146
+ let pageNumber = startPageNumber;
147
+ let prevMarginBottomPt = 0;
148
+ const finishPage = () => {
149
+ if (currentContent.length === 0) return;
150
+ const page = this.createPage(dims, pageNumber, sectionIndex, currentContent);
151
+ pages.push(page);
152
+ pageNumber++;
153
+ currentContent = [];
154
+ remainingHeight = dims.contentHeight;
155
+ prevMarginBottomPt = 0;
156
+ };
157
+ for (let i = 0; i < blocks.length; i++) {
158
+ const block = blocks[i];
159
+ const nextBlock = blocks[i + 1];
160
+ if (block.isPageBreak) {
161
+ finishPage();
162
+ continue;
163
+ }
164
+ if (block.pageBreakBefore && currentContent.length > 0) {
165
+ finishPage();
166
+ }
167
+ const isFirstOnPage = currentContent.length === 0;
168
+ let effectiveMarginTop = block.marginTopPt;
169
+ if (!isFirstOnPage) {
170
+ effectiveMarginTop = Math.max(block.marginTopPt, prevMarginBottomPt) - prevMarginBottomPt;
171
+ }
172
+ const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt;
173
+ let neededHeight = blockSpace;
174
+ if (block.keepWithNext && nextBlock && !nextBlock.isPageBreak) {
175
+ const collapsedMargin = Math.max(block.marginBottomPt, nextBlock.marginTopPt);
176
+ neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin + nextBlock.heightPt + nextBlock.marginBottomPt;
177
+ }
178
+ if (blockSpace <= remainingHeight) {
179
+ currentContent.push(block.element.cloneNode(true));
180
+ remainingHeight -= blockSpace;
181
+ prevMarginBottomPt = block.marginBottomPt;
182
+ } else if (block.heightPt + block.marginTopPt + block.marginBottomPt <= dims.contentHeight) {
183
+ finishPage();
184
+ const newPageSpace = block.marginTopPt + block.heightPt + block.marginBottomPt;
185
+ currentContent.push(block.element.cloneNode(true));
186
+ remainingHeight = dims.contentHeight - newPageSpace;
187
+ prevMarginBottomPt = block.marginBottomPt;
188
+ } else {
189
+ if (currentContent.length > 0) {
190
+ finishPage();
191
+ }
192
+ currentContent.push(block.element.cloneNode(true));
193
+ finishPage();
194
+ }
195
+ }
196
+ finishPage();
197
+ return pages;
198
+ }
199
+ /**
200
+ * Creates a page container element.
201
+ */
202
+ createPage(dims, pageNumber, sectionIndex, content) {
203
+ const pageBox = document.createElement("div");
204
+ pageBox.className = `${this.cssPrefix}box`;
205
+ pageBox.style.width = `${dims.pageWidth}pt`;
206
+ pageBox.style.height = `${dims.pageHeight}pt`;
207
+ pageBox.style.overflow = "hidden";
208
+ pageBox.style.position = "relative";
209
+ if (this.scale !== 1) {
210
+ pageBox.style.zoom = String(this.scale);
211
+ pageBox.style.transform = `scale(${this.scale})`;
212
+ pageBox.style.transformOrigin = "top left";
213
+ const heightReductionPt = dims.pageHeight * (1 - this.scale);
214
+ const widthReductionPt = dims.pageWidth * (1 - this.scale);
215
+ const heightReductionPx = ptToPx(heightReductionPt);
216
+ const widthReductionPx = ptToPx(widthReductionPt);
217
+ pageBox.style.marginRight = `-${widthReductionPx}px`;
218
+ pageBox.style.marginBottom = `${this.pageGap - heightReductionPx}px`;
219
+ }
220
+ pageBox.style.willChange = "transform";
221
+ pageBox.style.contain = "layout paint";
222
+ pageBox.dataset.pageNumber = String(pageNumber);
223
+ pageBox.dataset.sectionIndex = String(sectionIndex);
224
+ const contentArea = document.createElement("div");
225
+ contentArea.className = `${this.cssPrefix}content`;
226
+ contentArea.style.position = "absolute";
227
+ contentArea.style.top = `${dims.marginTop}pt`;
228
+ contentArea.style.left = `${dims.marginLeft}pt`;
229
+ contentArea.style.width = `${dims.contentWidth}pt`;
230
+ contentArea.style.height = `${dims.contentHeight}pt`;
231
+ contentArea.style.overflow = "hidden";
232
+ for (const el of content) {
233
+ contentArea.appendChild(el);
234
+ }
235
+ pageBox.appendChild(contentArea);
236
+ if (this.showPageNumbers) {
237
+ const pageNum = document.createElement("div");
238
+ pageNum.className = `${this.cssPrefix}number`;
239
+ pageNum.textContent = String(pageNumber);
240
+ pageBox.appendChild(pageNum);
241
+ }
242
+ this.containerElement.appendChild(pageBox);
243
+ return {
244
+ pageNumber,
245
+ sectionIndex,
246
+ dimensions: dims,
247
+ element: pageBox
248
+ };
249
+ }
250
+ };
251
+ function paginateHtml(html, container, options = {}) {
252
+ const containerEl = typeof container === "string" ? document.getElementById(container) : container;
253
+ if (!containerEl) {
254
+ throw new Error("Container element not found");
255
+ }
256
+ containerEl.innerHTML = html;
257
+ const cssPrefix = options.cssPrefix ?? "page-";
258
+ const staging = containerEl.querySelector("#pagination-staging") || containerEl.querySelector(`.${cssPrefix}staging`);
259
+ const pageContainer = containerEl.querySelector("#pagination-container") || containerEl.querySelector(`.${cssPrefix}container`);
260
+ if (!staging) {
261
+ throw new Error(
262
+ "Pagination staging element not found. Make sure the HTML was generated with PaginationMode.Paginated"
263
+ );
264
+ }
265
+ if (!pageContainer) {
266
+ throw new Error("Pagination container element not found");
267
+ }
268
+ const engine = new PaginationEngine(staging, pageContainer, options);
269
+ return engine.paginate();
270
+ }
271
+ return __toCommonJS(pagination_exports);
272
+ })();
@@ -31,8 +31,12 @@ export interface PageDimensions {
31
31
  export interface MeasuredBlock {
32
32
  /** The DOM element */
33
33
  element: HTMLElement;
34
- /** Measured height in points */
34
+ /** Measured height in points (content + padding + border, excluding margins) */
35
35
  heightPt: number;
36
+ /** Top margin in points */
37
+ marginTopPt: number;
38
+ /** Bottom margin in points */
39
+ marginBottomPt: number;
36
40
  /** Whether to keep this block with the next one */
37
41
  keepWithNext: boolean;
38
42
  /** Whether to keep all lines of this block together */
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,eAAe,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,iCAAiC;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8CD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;OAMG;gBAED,OAAO,EAAE,WAAW,GAAG,MAAM,EAC7B,SAAS,EAAE,WAAW,GAAG,MAAM,EAC/B,OAAO,GAAE,iBAAsB;IAwBjC;;;;OAIG;IACH,QAAQ,IAAI,gBAAgB;IAyC5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAmCrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAsEnB;;OAEG;IACH,OAAO,CAAC,UAAU;CA0EnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,GAAG,MAAM,EAC/B,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAgClB"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,eAAe,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,iCAAiC;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8CD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;OAMG;gBAED,OAAO,EAAE,WAAW,GAAG,MAAM,EAC7B,SAAS,EAAE,WAAW,GAAG,MAAM,EAC/B,OAAO,GAAE,iBAAsB;IAwBjC;;;;OAIG;IACH,QAAQ,IAAI,gBAAgB;IAyC5B;;OAEG;IACH,OAAO,CAAC,aAAa;IA4CrB;;OAEG;IACH,OAAO,CAAC,WAAW;IA4FnB;;OAEG;IACH,OAAO,CAAC,UAAU;CA0EnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,GAAG,MAAM,EAC/B,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAgClB"}
@@ -123,13 +123,22 @@ export class PaginationEngine {
123
123
  blocks.push(...nestedBlocks);
124
124
  continue;
125
125
  }
126
+ // Measure height and margins separately for proper margin collapsing calculation
127
+ // getBoundingClientRect() returns content+padding+border, not margins
126
128
  const rect = child.getBoundingClientRect();
129
+ const style = window.getComputedStyle(child);
130
+ const marginTopPx = parseFloat(style.marginTop) || 0;
131
+ const marginBottomPx = parseFloat(style.marginBottom) || 0;
127
132
  const heightPt = pxToPt(rect.height);
133
+ const marginTopPt = pxToPt(marginTopPx);
134
+ const marginBottomPt = pxToPt(marginBottomPx);
128
135
  const isPageBreak = child.dataset.pageBreak === "true" ||
129
136
  child.classList.contains(`${this.cssPrefix}break`);
130
137
  blocks.push({
131
138
  element: child,
132
139
  heightPt,
140
+ marginTopPt,
141
+ marginBottomPt,
133
142
  keepWithNext: child.dataset.keepWithNext === "true",
134
143
  keepLines: child.dataset.keepLines === "true",
135
144
  pageBreakBefore: child.dataset.pageBreakBefore === "true",
@@ -146,6 +155,8 @@ export class PaginationEngine {
146
155
  let currentContent = [];
147
156
  let remainingHeight = dims.contentHeight;
148
157
  let pageNumber = startPageNumber;
158
+ // Track the previous block's bottom margin for margin collapsing
159
+ let prevMarginBottomPt = 0;
149
160
  const finishPage = () => {
150
161
  if (currentContent.length === 0)
151
162
  return;
@@ -154,6 +165,7 @@ export class PaginationEngine {
154
165
  pageNumber++;
155
166
  currentContent = [];
156
167
  remainingHeight = dims.contentHeight;
168
+ prevMarginBottomPt = 0; // Reset margin tracking for new page
157
169
  };
158
170
  for (let i = 0; i < blocks.length; i++) {
159
171
  const block = blocks[i];
@@ -167,22 +179,40 @@ export class PaginationEngine {
167
179
  if (block.pageBreakBefore && currentContent.length > 0) {
168
180
  finishPage();
169
181
  }
182
+ // Calculate the effective height this block will consume
183
+ // Account for margin collapsing: the gap between blocks is max(prevBottom, currTop), not sum
184
+ const isFirstOnPage = currentContent.length === 0;
185
+ let effectiveMarginTop = block.marginTopPt;
186
+ if (!isFirstOnPage) {
187
+ // Margin collapsing: use the larger of the two adjacent margins
188
+ effectiveMarginTop = Math.max(block.marginTopPt, prevMarginBottomPt) - prevMarginBottomPt;
189
+ }
190
+ // Total height = top margin gap + content + bottom margin
191
+ // But we only count bottom margin if it's the last block (otherwise it collapses with next)
192
+ const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt;
170
193
  // Calculate needed height (including keepWithNext)
171
- let neededHeight = block.heightPt;
194
+ let neededHeight = blockSpace;
172
195
  if (block.keepWithNext && nextBlock && !nextBlock.isPageBreak) {
173
- neededHeight += nextBlock.heightPt;
196
+ // For keepWithNext, include the next block with collapsed margins
197
+ const collapsedMargin = Math.max(block.marginBottomPt, nextBlock.marginTopPt);
198
+ neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin +
199
+ nextBlock.heightPt + nextBlock.marginBottomPt;
174
200
  }
175
201
  // Check if block fits on current page
176
- if (block.heightPt <= remainingHeight) {
202
+ if (blockSpace <= remainingHeight) {
177
203
  // Block fits
178
204
  currentContent.push(block.element.cloneNode(true));
179
- remainingHeight -= block.heightPt;
205
+ remainingHeight -= blockSpace;
206
+ prevMarginBottomPt = block.marginBottomPt;
180
207
  }
181
- else if (block.heightPt <= dims.contentHeight) {
208
+ else if (block.heightPt + block.marginTopPt + block.marginBottomPt <= dims.contentHeight) {
182
209
  // Block doesn't fit but will fit on a new page
183
210
  finishPage();
211
+ // On new page, include full top margin
212
+ const newPageSpace = block.marginTopPt + block.heightPt + block.marginBottomPt;
184
213
  currentContent.push(block.element.cloneNode(true));
185
- remainingHeight = dims.contentHeight - block.heightPt;
214
+ remainingHeight = dims.contentHeight - newPageSpace;
215
+ prevMarginBottomPt = block.marginBottomPt;
186
216
  }
187
217
  else {
188
218
  // Block is taller than a page - add it and let it overflow
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
package/dist/react.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import React from "react";
2
2
  import type { CSSProperties, ReactElement } from "react";
3
- import type { ConversionOptions, CompareOptions, Revision } from "./types.js";
3
+ import type { ConversionOptions, CompareOptions, Revision, Annotation, AddAnnotationRequest, AddAnnotationResponse, RemoveAnnotationResponse, DocumentStructure, DocumentElement, TableColumnInfo, AnnotationTarget, AddAnnotationWithTargetRequest } from "./types.js";
4
+ import { AnnotationLabelMode, DocumentElementType, targetElement, targetParagraph, targetParagraphRange, targetRun, targetTable, targetTableRow, targetTableCell, targetTableColumn, targetSearch, targetSearchInElement, findElementById, findElementsByType, getParagraphs, getTables, getTableColumns } from "./types.js";
4
5
  import { type PaginationOptions, type PaginationResult } from "./pagination.js";
5
- export type { ConversionOptions, CompareOptions, Revision, PaginationOptions, PaginationResult };
6
+ export type { ConversionOptions, CompareOptions, Revision, PaginationOptions, PaginationResult, Annotation, AddAnnotationRequest, AddAnnotationResponse, RemoveAnnotationResponse, DocumentStructure, DocumentElement, TableColumnInfo, AnnotationTarget, AddAnnotationWithTargetRequest, };
7
+ export { AnnotationLabelMode, DocumentElementType, targetElement, targetParagraph, targetParagraphRange, targetRun, targetTable, targetTableRow, targetTableCell, targetTableColumn, targetSearch, targetSearchInElement, findElementById, findElementsByType, getParagraphs, getTables, getTableColumns, };
6
8
  export interface UseDocxodusResult {
7
9
  /** Whether the WASM runtime is loaded and ready */
8
10
  isReady: boolean;
@@ -18,6 +20,18 @@ export interface UseDocxodusResult {
18
20
  compareToHtml: (original: File | Uint8Array, modified: File | Uint8Array, options?: CompareOptions) => Promise<string>;
19
21
  /** Get revisions from a compared document */
20
22
  getRevisions: (document: File | Uint8Array) => Promise<Revision[]>;
23
+ /** Get all annotations from a document */
24
+ getAnnotations: (document: File | Uint8Array) => Promise<Annotation[]>;
25
+ /** Add an annotation to a document */
26
+ addAnnotation: (document: File | Uint8Array, request: AddAnnotationRequest) => Promise<AddAnnotationResponse>;
27
+ /** Add an annotation using flexible targeting (element ID, indices, or text search) */
28
+ addAnnotationWithTarget: (document: File | Uint8Array, request: AddAnnotationWithTargetRequest) => Promise<AddAnnotationResponse>;
29
+ /** Remove an annotation from a document */
30
+ removeAnnotation: (document: File | Uint8Array, annotationId: string) => Promise<RemoveAnnotationResponse>;
31
+ /** Check if a document has any annotations */
32
+ hasAnnotations: (document: File | Uint8Array) => Promise<boolean>;
33
+ /** Get the document structure for element-based annotation targeting */
34
+ getDocumentStructure: (document: File | Uint8Array) => Promise<DocumentStructure>;
21
35
  }
22
36
  /**
23
37
  * React hook for using Docxodus WASM functionality.
@@ -240,4 +254,195 @@ export declare function usePagination(html: string, containerRef: React.RefObjec
240
254
  * ```
241
255
  */
242
256
  export declare function PaginatedDocument({ html, scale, showPageNumbers, pageGap, backgroundColor, cssPrefix, onPaginationComplete, onPageVisible, className, style, }: PaginatedDocumentProps): ReactElement;
257
+ /**
258
+ * Result of the useAnnotations hook.
259
+ */
260
+ export interface UseAnnotationsResult {
261
+ /** All annotations in the document */
262
+ annotations: Annotation[];
263
+ /** Whether annotations are being loaded or modified */
264
+ isLoading: boolean;
265
+ /** Error from the last operation */
266
+ error: Error | null;
267
+ /** Reload annotations from the document */
268
+ reload: () => Promise<void>;
269
+ /** Add a new annotation */
270
+ add: (request: AddAnnotationRequest) => Promise<AddAnnotationResponse | null>;
271
+ /** Remove an annotation by ID */
272
+ remove: (annotationId: string) => Promise<RemoveAnnotationResponse | null>;
273
+ /** The current document bytes (updated after add/remove) */
274
+ documentBytes: Uint8Array | null;
275
+ }
276
+ /**
277
+ * React hook for managing document annotations.
278
+ *
279
+ * @param document - DOCX file as File object or Uint8Array
280
+ * @param wasmBasePath - Optional custom path to WASM files
281
+ * @returns Annotation state and CRUD operations
282
+ *
283
+ * @example
284
+ * ```tsx
285
+ * function AnnotationManager({ docxFile }: { docxFile: File }) {
286
+ * const { annotations, isLoading, add, remove, documentBytes } = useAnnotations(docxFile);
287
+ *
288
+ * const handleAddAnnotation = async () => {
289
+ * await add({
290
+ * id: `annot-${Date.now()}`,
291
+ * labelId: "CLAUSE_A",
292
+ * label: "Important Clause",
293
+ * color: "#FFEB3B",
294
+ * searchText: "shall not be liable"
295
+ * });
296
+ * };
297
+ *
298
+ * return (
299
+ * <div>
300
+ * <h2>Annotations ({annotations.length})</h2>
301
+ * {annotations.map(a => (
302
+ * <div key={a.id} style={{ backgroundColor: a.color }}>
303
+ * <span>{a.label}: {a.annotatedText}</span>
304
+ * <button onClick={() => remove(a.id)}>Remove</button>
305
+ * </div>
306
+ * ))}
307
+ * <button onClick={handleAddAnnotation}>Add Annotation</button>
308
+ * </div>
309
+ * );
310
+ * }
311
+ * ```
312
+ */
313
+ export declare function useAnnotations(document: File | Uint8Array | null, wasmBasePath?: string): UseAnnotationsResult;
314
+ /**
315
+ * Props for the AnnotatedDocument component.
316
+ */
317
+ export interface AnnotatedDocumentProps {
318
+ /** HTML string with annotation highlights (from convertDocxToHtml with renderAnnotations: true) */
319
+ html: string;
320
+ /** Callback when an annotation highlight is clicked */
321
+ onAnnotationClick?: (annotationId: string, annotation: Annotation | null) => void;
322
+ /** Callback when an annotation highlight is hovered */
323
+ onAnnotationHover?: (annotationId: string | null, annotation: Annotation | null) => void;
324
+ /** List of annotations for looking up details on click/hover */
325
+ annotations?: Annotation[];
326
+ /** CSS class prefix for annotation elements. Default: "annot-" */
327
+ cssPrefix?: string;
328
+ /** Additional CSS class for the container */
329
+ className?: string;
330
+ /** Additional inline styles for the container */
331
+ style?: CSSProperties;
332
+ }
333
+ /**
334
+ * React component for displaying a document with annotation highlights.
335
+ * Handles click and hover events on annotation spans.
336
+ *
337
+ * @example
338
+ * ```tsx
339
+ * import { useState, useEffect } from 'react';
340
+ * import { useDocxodus, useAnnotations, AnnotatedDocument, AnnotationLabelMode } from 'docxodus/react';
341
+ *
342
+ * function DocumentWithAnnotations({ docxFile }: { docxFile: File }) {
343
+ * const { isReady, convertToHtml } = useDocxodus();
344
+ * const { annotations } = useAnnotations(docxFile);
345
+ * const [html, setHtml] = useState<string | null>(null);
346
+ * const [selectedAnnotation, setSelectedAnnotation] = useState<Annotation | null>(null);
347
+ *
348
+ * useEffect(() => {
349
+ * if (isReady) {
350
+ * convertToHtml(docxFile, {
351
+ * renderAnnotations: true,
352
+ * annotationLabelMode: AnnotationLabelMode.Above
353
+ * }).then(setHtml);
354
+ * }
355
+ * }, [isReady, docxFile]);
356
+ *
357
+ * return (
358
+ * <div>
359
+ * {html && (
360
+ * <AnnotatedDocument
361
+ * html={html}
362
+ * annotations={annotations}
363
+ * onAnnotationClick={(id, annot) => setSelectedAnnotation(annot)}
364
+ * />
365
+ * )}
366
+ * {selectedAnnotation && (
367
+ * <div className="sidebar">
368
+ * <h3>{selectedAnnotation.label}</h3>
369
+ * <p>{selectedAnnotation.annotatedText}</p>
370
+ * </div>
371
+ * )}
372
+ * </div>
373
+ * );
374
+ * }
375
+ * ```
376
+ */
377
+ export declare function AnnotatedDocument({ html, onAnnotationClick, onAnnotationHover, annotations, cssPrefix, className, style, }: AnnotatedDocumentProps): ReactElement;
378
+ /**
379
+ * Result of the useDocumentStructure hook.
380
+ */
381
+ export interface UseDocumentStructureResult {
382
+ /** The document structure tree */
383
+ structure: DocumentStructure | null;
384
+ /** Whether the structure is being loaded */
385
+ isLoading: boolean;
386
+ /** Error from loading the structure */
387
+ error: Error | null;
388
+ /** Reload the document structure */
389
+ reload: () => Promise<void>;
390
+ /** Find an element by ID */
391
+ findById: (elementId: string) => DocumentElement | undefined;
392
+ /** Find all elements of a specific type */
393
+ findByType: (type: DocumentElementType | string) => DocumentElement[];
394
+ /** Get all paragraphs */
395
+ paragraphs: DocumentElement[];
396
+ /** Get all tables */
397
+ tables: DocumentElement[];
398
+ /** Get columns for a specific table */
399
+ getColumns: (tableId: string) => TableColumnInfo[];
400
+ }
401
+ /**
402
+ * React hook for exploring document structure for element-based annotation targeting.
403
+ *
404
+ * @param document - DOCX file as File object or Uint8Array
405
+ * @param wasmBasePath - Optional custom path to WASM files
406
+ * @returns Document structure state and navigation helpers
407
+ *
408
+ * @example
409
+ * ```tsx
410
+ * function DocumentExplorer({ docxFile }: { docxFile: File }) {
411
+ * const {
412
+ * structure,
413
+ * isLoading,
414
+ * paragraphs,
415
+ * tables,
416
+ * findById,
417
+ * getColumns
418
+ * } = useDocumentStructure(docxFile);
419
+ *
420
+ * if (isLoading || !structure) {
421
+ * return <div>Loading structure...</div>;
422
+ * }
423
+ *
424
+ * return (
425
+ * <div>
426
+ * <h2>Document Structure</h2>
427
+ * <h3>Paragraphs ({paragraphs.length})</h3>
428
+ * <ul>
429
+ * {paragraphs.map(p => (
430
+ * <li key={p.id}>
431
+ * {p.id}: {p.textPreview}
432
+ * </li>
433
+ * ))}
434
+ * </ul>
435
+ * <h3>Tables ({tables.length})</h3>
436
+ * {tables.map(t => (
437
+ * <div key={t.id}>
438
+ * <h4>{t.id}</h4>
439
+ * <p>Columns: {getColumns(t.id).length}</p>
440
+ * </div>
441
+ * ))}
442
+ * </div>
443
+ * );
444
+ * }
445
+ * ```
446
+ */
447
+ export declare function useDocumentStructure(document: File | Uint8Array | null, wasmBasePath?: string): UseDocumentStructureResult;
243
448
  //# sourceMappingURL=react.d.ts.map