docxodus 3.2.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +18 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -5
- package/dist/index.js.map +1 -1
- package/dist/pagination.d.ts +145 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +295 -0
- package/dist/pagination.js.map +1 -0
- package/dist/react.d.ts +102 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +151 -1
- package/dist/react.js.map +1 -1
- package/dist/types.d.ts +61 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -1
- package/dist/wasm/_framework/Docxodus.wasm +0 -0
- package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
- package/dist/wasm/_framework/System.Private.CoreLib.wasm +0 -0
- package/dist/wasm/_framework/System.Text.Json.wasm +0 -0
- package/dist/wasm/_framework/blazor.boot.json +6 -6
- package/dist/wasm/_framework/dotnet.native.wasm +0 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { ConversionOptions, CompareOptions, Revision, VersionInfo, ErrorResponse, CompareResult, GetRevisionsOptions } from "./types.js";
|
|
2
|
-
import { CommentRenderMode, RevisionType, isInsertion, isDeletion, isMove, isMoveSource, isMoveDestination, findMovePair } from "./types.js";
|
|
3
|
-
export type {
|
|
4
|
-
export {
|
|
1
|
+
import type { ConversionOptions, CompareOptions, Revision, VersionInfo, ErrorResponse, CompareResult, GetRevisionsOptions, FormatChangeDetails } from "./types.js";
|
|
2
|
+
import { CommentRenderMode, PaginationMode, RevisionType, isInsertion, isDeletion, isMove, isMoveSource, isMoveDestination, findMovePair, isFormatChange } from "./types.js";
|
|
3
|
+
export type { PageDimensions, MeasuredBlock, PageInfo, PaginationResult, PaginationOptions, } from "./pagination.js";
|
|
4
|
+
export { PaginationEngine, paginateHtml } from "./pagination.js";
|
|
5
|
+
export type { ConversionOptions, CompareOptions, Revision, VersionInfo, ErrorResponse, CompareResult, GetRevisionsOptions, FormatChangeDetails, };
|
|
6
|
+
export { CommentRenderMode, PaginationMode, RevisionType, isInsertion, isDeletion, isMove, isMoveSource, isMoveDestination, findMovePair, isFormatChange, };
|
|
5
7
|
/**
|
|
6
8
|
* Current base path for WASM files.
|
|
7
9
|
* Empty string means auto-detect from module URL.
|
|
@@ -33,6 +35,18 @@ export declare function initialize(basePath?: string): Promise<void>;
|
|
|
33
35
|
* @param options - Conversion options
|
|
34
36
|
* @returns HTML string
|
|
35
37
|
* @throws Error if conversion fails
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Basic conversion
|
|
42
|
+
* const html = await convertDocxToHtml(docxFile);
|
|
43
|
+
*
|
|
44
|
+
* // With pagination (PDF.js-style page view)
|
|
45
|
+
* const html = await convertDocxToHtml(docxFile, {
|
|
46
|
+
* paginationMode: PaginationMode.Paginated,
|
|
47
|
+
* paginationScale: 0.8
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
36
50
|
*/
|
|
37
51
|
export declare function convertDocxToHtml(document: File | Uint8Array, options?: ConversionOptions): Promise<string>;
|
|
38
52
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EAEb,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACb,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EAEb,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACpB,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,CAAC;AA2BF;;;GAGG;AACH,eAAO,IAAI,YAAY,QAAK,CAAC;AAE7B;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAajE;AA8FD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,IAAI,GAAG,UAAU,EAC3B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,IAAI,GAAG,UAAU,EAC3B,QAAQ,EAAE,IAAI,GAAG,UAAU,EAC3B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC,CA4BrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,IAAI,GAAG,UAAU,EAC3B,QAAQ,EAAE,IAAI,GAAG,UAAU,EAC3B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,IAAI,GAAG,UAAU,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAqCrB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,WAAW,CASxC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { CommentRenderMode, RevisionType, isInsertion, isDeletion, isMove, isMoveSource, isMoveDestination, findMovePair, } from "./types.js";
|
|
2
|
-
export {
|
|
1
|
+
import { CommentRenderMode, PaginationMode, RevisionType, isInsertion, isDeletion, isMove, isMoveSource, isMoveDestination, findMovePair, isFormatChange, } from "./types.js";
|
|
2
|
+
export { PaginationEngine, paginateHtml } from "./pagination.js";
|
|
3
|
+
export { CommentRenderMode, PaginationMode, RevisionType, isInsertion, isDeletion, isMove, isMoveSource, isMoveDestination, findMovePair, isFormatChange, };
|
|
3
4
|
let wasmExports = null;
|
|
4
5
|
let initPromise = null;
|
|
5
6
|
/**
|
|
@@ -144,13 +145,33 @@ async function toBytes(input) {
|
|
|
144
145
|
* @param options - Conversion options
|
|
145
146
|
* @returns HTML string
|
|
146
147
|
* @throws Error if conversion fails
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* // Basic conversion
|
|
152
|
+
* const html = await convertDocxToHtml(docxFile);
|
|
153
|
+
*
|
|
154
|
+
* // With pagination (PDF.js-style page view)
|
|
155
|
+
* const html = await convertDocxToHtml(docxFile, {
|
|
156
|
+
* paginationMode: PaginationMode.Paginated,
|
|
157
|
+
* paginationScale: 0.8
|
|
158
|
+
* });
|
|
159
|
+
* ```
|
|
147
160
|
*/
|
|
148
161
|
export async function convertDocxToHtml(document, options) {
|
|
149
162
|
const exports = ensureInitialized();
|
|
150
163
|
const bytes = await toBytes(document);
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
164
|
+
let result;
|
|
165
|
+
// Use pagination-aware method when pagination is requested
|
|
166
|
+
if (options?.paginationMode !== undefined && options.paginationMode !== PaginationMode.None) {
|
|
167
|
+
result = exports.DocumentConverter.ConvertDocxToHtmlWithPagination(bytes, options.pageTitle ?? "Document", options.cssPrefix ?? "docx-", options.fabricateClasses ?? true, options.additionalCss ?? "", options.commentRenderMode ?? CommentRenderMode.Disabled, options.commentCssClassPrefix ?? "comment-", options.paginationMode, options.paginationScale ?? 1.0, options.paginationCssClassPrefix ?? "page-");
|
|
168
|
+
}
|
|
169
|
+
else if (options) {
|
|
170
|
+
result = exports.DocumentConverter.ConvertDocxToHtmlWithOptions(bytes, options.pageTitle ?? "Document", options.cssPrefix ?? "docx-", options.fabricateClasses ?? true, options.additionalCss ?? "", options.commentRenderMode ?? CommentRenderMode.Disabled, options.commentCssClassPrefix ?? "comment-");
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
result = exports.DocumentConverter.ConvertDocxToHtml(bytes);
|
|
174
|
+
}
|
|
154
175
|
if (isErrorResponse(result)) {
|
|
155
176
|
const error = parseError(result);
|
|
156
177
|
throw new Error(`Conversion failed: ${error.error}`);
|
|
@@ -250,6 +271,11 @@ export async function getRevisions(document, options) {
|
|
|
250
271
|
text: r.Text || r.text,
|
|
251
272
|
moveGroupId: r.MoveGroupId ?? r.moveGroupId,
|
|
252
273
|
isMoveSource: r.IsMoveSource ?? r.isMoveSource,
|
|
274
|
+
formatChange: (r.FormatChange || r.formatChange) ? {
|
|
275
|
+
oldProperties: r.FormatChange?.OldProperties || r.formatChange?.oldProperties,
|
|
276
|
+
newProperties: r.FormatChange?.NewProperties || r.formatChange?.newProperties,
|
|
277
|
+
changedPropertyNames: r.FormatChange?.ChangedPropertyNames || r.formatChange?.changedPropertyNames,
|
|
278
|
+
} : undefined,
|
|
253
279
|
}));
|
|
254
280
|
}
|
|
255
281
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAWpB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAajE,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,CAAC;AAEF,IAAI,WAAW,GAA+B,IAAI,CAAC;AACnD,IAAI,WAAW,GAAyB,IAAI,CAAC;AAE7C;;;GAGG;AACH,SAAS,sBAAsB;IAC7B,IAAI,CAAC;QACH,kDAAkD;QAClD,oEAAoE;QACpE,2DAA2D;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAElC,2CAA2C;QAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvE,8CAA8C;QAC9C,OAAO,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;QAC/C,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,IAAI,YAAY,GAAG,EAAE,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAiB;IAChD,IAAI,WAAW;QAAE,OAAO;IAExB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,WAAW,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,GAAG,sBAAsB,CAAC;QACrD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAEzF,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM;aACnD,qBAAqB,CAAC,KAAK,CAAC;aAC5B,MAAM,EAAE,CAAC;QAEZ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAElE,WAAW,GAAG;YACZ,iBAAiB,EAAE,OAAO,CAAC,YAAY,CAAC,iBAAiB;YACzD,gBAAgB,EAAE,OAAO,CAAC,YAAY,CAAC,gBAAgB;SACxD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,2CAA2C;IAC3C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,OAAO;YAAE,OAAO;QACpB,MAAM,IAAI,KAAK,CACb,yCAAyC,YAAY,IAAI;YACzD,oDAAoD,CACrD,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;IAClD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,GAAG,gBAAgB,CAAC;YAChC,OAAO;QACT,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,IAAI,KAAK,CACb,6BAA6B;QAC7B,uBAAuB,gBAAgB,IAAI,QAAQ,IAAI;QACvD,wEAAwE,CACzE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;QAChC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU;KACnD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,KAAwB;IAC7C,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAA2B,EAC3B,OAA2B;IAE3B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,MAAc,CAAC;IAEnB,2DAA2D;IAC3D,IAAI,OAAO,EAAE,cAAc,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5F,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,+BAA+B,CAChE,KAAK,EACL,OAAO,CAAC,SAAS,IAAI,UAAU,EAC/B,OAAO,CAAC,SAAS,IAAI,OAAO,EAC5B,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAChC,OAAO,CAAC,aAAa,IAAI,EAAE,EAC3B,OAAO,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,QAAQ,EACvD,OAAO,CAAC,qBAAqB,IAAI,UAAU,EAC3C,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,eAAe,IAAI,GAAG,EAC9B,OAAO,CAAC,wBAAwB,IAAI,OAAO,CAC5C,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,4BAA4B,CAC7D,KAAK,EACL,OAAO,CAAC,SAAS,IAAI,UAAU,EAC/B,OAAO,CAAC,SAAS,IAAI,OAAO,EAC5B,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAChC,OAAO,CAAC,aAAa,IAAI,EAAE,EAC3B,OAAO,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,QAAQ,EACvD,OAAO,CAAC,qBAAqB,IAAI,UAAU,CAC5C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA2B,EAC3B,QAA2B,EAC3B,OAAwB;IAExB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,MAAkB,CAAC;IAEvB,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;QACvE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,2BAA2B,CAC3D,aAAa,EACb,aAAa,EACb,OAAO,EAAE,UAAU,IAAI,UAAU,EACjC,OAAO,EAAE,eAAe,IAAI,IAAI,EAChC,OAAO,EAAE,eAAe,IAAI,KAAK,CAClC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAChD,aAAa,EACb,aAAa,EACb,OAAO,EAAE,UAAU,IAAI,UAAU,CAClC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAA2B,EAC3B,QAA2B,EAC3B,OAAwB;IAExB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9C,uEAAuE;IACvE,MAAM,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,IAAI,IAAI,CAAC;IAEnE,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,iCAAiC,CACvE,aAAa,EACb,aAAa,EACb,OAAO,EAAE,UAAU,IAAI,UAAU,EACjC,oBAAoB,CACrB,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAA2B,EAC3B,OAA6B;IAE7B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,4CAA4C;IAC5C,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;IACjD,MAAM,uBAAuB,GAAG,OAAO,EAAE,uBAAuB,IAAI,GAAG,CAAC;IACxE,MAAM,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,IAAI,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,KAAK,CAAC;IAE1D,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,2BAA2B,CACjE,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,CAChB,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;QAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;QACtB,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY;QAC9C,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;QACtB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW;QAC3C,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY;QAC9C,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjD,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa;YAC7E,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa;YAC7E,oBAAoB,EAAE,CAAC,CAAC,YAAY,EAAE,oBAAoB,IAAI,CAAC,CAAC,YAAY,EAAE,oBAAoB;SACnG,CAAC,CAAC,CAAC,SAAS;KACd,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;QACzC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa;QAC3D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;KAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination engine for creating a PDF.js-style paginated view from HTML output.
|
|
3
|
+
*
|
|
4
|
+
* This module provides client-side pagination that measures rendered content
|
|
5
|
+
* and flows it across fixed-size page containers based on document dimensions.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Page dimensions extracted from HTML data attributes (in points).
|
|
9
|
+
*/
|
|
10
|
+
export interface PageDimensions {
|
|
11
|
+
/** Page width in points */
|
|
12
|
+
pageWidth: number;
|
|
13
|
+
/** Page height in points */
|
|
14
|
+
pageHeight: number;
|
|
15
|
+
/** Content area width (page minus margins) in points */
|
|
16
|
+
contentWidth: number;
|
|
17
|
+
/** Content area height (page minus margins) in points */
|
|
18
|
+
contentHeight: number;
|
|
19
|
+
/** Top margin in points */
|
|
20
|
+
marginTop: number;
|
|
21
|
+
/** Right margin in points */
|
|
22
|
+
marginRight: number;
|
|
23
|
+
/** Bottom margin in points */
|
|
24
|
+
marginBottom: number;
|
|
25
|
+
/** Left margin in points */
|
|
26
|
+
marginLeft: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A measured content block with metadata for pagination decisions.
|
|
30
|
+
*/
|
|
31
|
+
export interface MeasuredBlock {
|
|
32
|
+
/** The DOM element */
|
|
33
|
+
element: HTMLElement;
|
|
34
|
+
/** Measured height in points */
|
|
35
|
+
heightPt: number;
|
|
36
|
+
/** Whether to keep this block with the next one */
|
|
37
|
+
keepWithNext: boolean;
|
|
38
|
+
/** Whether to keep all lines of this block together */
|
|
39
|
+
keepLines: boolean;
|
|
40
|
+
/** Whether to force a page break before this block */
|
|
41
|
+
pageBreakBefore: boolean;
|
|
42
|
+
/** Whether this is a page break marker */
|
|
43
|
+
isPageBreak: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Information about a rendered page.
|
|
47
|
+
*/
|
|
48
|
+
export interface PageInfo {
|
|
49
|
+
/** 1-based page number */
|
|
50
|
+
pageNumber: number;
|
|
51
|
+
/** Section index this page belongs to */
|
|
52
|
+
sectionIndex: number;
|
|
53
|
+
/** Page dimensions */
|
|
54
|
+
dimensions: PageDimensions;
|
|
55
|
+
/** The page container element */
|
|
56
|
+
element: HTMLElement;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Result of pagination operation.
|
|
60
|
+
*/
|
|
61
|
+
export interface PaginationResult {
|
|
62
|
+
/** Total number of pages */
|
|
63
|
+
totalPages: number;
|
|
64
|
+
/** Array of page information */
|
|
65
|
+
pages: PageInfo[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Options for the pagination engine.
|
|
69
|
+
*/
|
|
70
|
+
export interface PaginationOptions {
|
|
71
|
+
/** Scale factor for rendering (1.0 = 100%). Default: 1 */
|
|
72
|
+
scale?: number;
|
|
73
|
+
/** CSS class prefix used in the HTML. Default: "page-" */
|
|
74
|
+
cssPrefix?: string;
|
|
75
|
+
/** Whether to show page numbers. Default: true */
|
|
76
|
+
showPageNumbers?: boolean;
|
|
77
|
+
/** Gap between pages in pixels. Default: 20 */
|
|
78
|
+
pageGap?: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Pagination engine that converts HTML with pagination metadata
|
|
82
|
+
* into a paginated view with fixed-size page containers.
|
|
83
|
+
*/
|
|
84
|
+
export declare class PaginationEngine {
|
|
85
|
+
private stagingElement;
|
|
86
|
+
private containerElement;
|
|
87
|
+
private scale;
|
|
88
|
+
private cssPrefix;
|
|
89
|
+
private showPageNumbers;
|
|
90
|
+
private pageGap;
|
|
91
|
+
/**
|
|
92
|
+
* Creates a new pagination engine.
|
|
93
|
+
*
|
|
94
|
+
* @param staging - The staging element or its ID containing the content to paginate
|
|
95
|
+
* @param container - The container element or its ID where pages will be rendered
|
|
96
|
+
* @param options - Pagination options
|
|
97
|
+
*/
|
|
98
|
+
constructor(staging: HTMLElement | string, container: HTMLElement | string, options?: PaginationOptions);
|
|
99
|
+
/**
|
|
100
|
+
* Runs the pagination process.
|
|
101
|
+
*
|
|
102
|
+
* @returns PaginationResult with page information
|
|
103
|
+
*/
|
|
104
|
+
paginate(): PaginationResult;
|
|
105
|
+
/**
|
|
106
|
+
* Measures all content blocks in a section.
|
|
107
|
+
*/
|
|
108
|
+
private measureBlocks;
|
|
109
|
+
/**
|
|
110
|
+
* Flows measured blocks into page containers.
|
|
111
|
+
*/
|
|
112
|
+
private flowToPages;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a page container element.
|
|
115
|
+
*/
|
|
116
|
+
private createPage;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Convenience function to paginate HTML content.
|
|
120
|
+
*
|
|
121
|
+
* @param html - HTML string with pagination metadata
|
|
122
|
+
* @param container - Container element or ID where pages will be rendered
|
|
123
|
+
* @param options - Pagination options
|
|
124
|
+
* @returns PaginationResult
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const html = await convertDocxToHtml(docx, { paginationMode: PaginationMode.Paginated });
|
|
129
|
+
*
|
|
130
|
+
* // Create a container for the paginated view
|
|
131
|
+
* const container = document.getElementById('viewer');
|
|
132
|
+
*
|
|
133
|
+
* // Parse and paginate
|
|
134
|
+
* container.innerHTML = html;
|
|
135
|
+
* const staging = document.getElementById('pagination-staging');
|
|
136
|
+
* const pageContainer = document.getElementById('pagination-container');
|
|
137
|
+
*
|
|
138
|
+
* const engine = new PaginationEngine(staging, pageContainer, { scale: 0.8 });
|
|
139
|
+
* const result = engine.paginate();
|
|
140
|
+
*
|
|
141
|
+
* console.log(`Document has ${result.totalPages} pages`);
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare function paginateHtml(html: string, container: HTMLElement | string, options?: PaginationOptions): PaginationResult;
|
|
145
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +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;CAoDnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,GAAG,MAAM,EAC/B,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAgClB"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination engine for creating a PDF.js-style paginated view from HTML output.
|
|
3
|
+
*
|
|
4
|
+
* This module provides client-side pagination that measures rendered content
|
|
5
|
+
* and flows it across fixed-size page containers based on document dimensions.
|
|
6
|
+
*/
|
|
7
|
+
// Default letter size in points (612 x 792 = 8.5" x 11")
|
|
8
|
+
const DEFAULT_PAGE_WIDTH = 612;
|
|
9
|
+
const DEFAULT_PAGE_HEIGHT = 792;
|
|
10
|
+
const DEFAULT_MARGIN = 72; // 1 inch
|
|
11
|
+
/**
|
|
12
|
+
* Converts pixels to points (assuming 96 DPI screen).
|
|
13
|
+
*/
|
|
14
|
+
function pxToPt(px) {
|
|
15
|
+
return px * 0.75; // 72 points / 96 pixels
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Converts points to pixels (assuming 96 DPI screen).
|
|
19
|
+
*/
|
|
20
|
+
function ptToPx(pt) {
|
|
21
|
+
return pt / 0.75;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parses page dimensions from a section element's data attributes.
|
|
25
|
+
*/
|
|
26
|
+
function parseDimensions(section) {
|
|
27
|
+
const pageWidth = parseFloat(section.dataset.pageWidth || "") || DEFAULT_PAGE_WIDTH;
|
|
28
|
+
const pageHeight = parseFloat(section.dataset.pageHeight || "") || DEFAULT_PAGE_HEIGHT;
|
|
29
|
+
const contentWidth = parseFloat(section.dataset.contentWidth || "") || pageWidth - 2 * DEFAULT_MARGIN;
|
|
30
|
+
const contentHeight = parseFloat(section.dataset.contentHeight || "") || pageHeight - 2 * DEFAULT_MARGIN;
|
|
31
|
+
const marginTop = parseFloat(section.dataset.marginTop || "") || DEFAULT_MARGIN;
|
|
32
|
+
const marginRight = parseFloat(section.dataset.marginRight || "") || DEFAULT_MARGIN;
|
|
33
|
+
const marginBottom = parseFloat(section.dataset.marginBottom || "") || DEFAULT_MARGIN;
|
|
34
|
+
const marginLeft = parseFloat(section.dataset.marginLeft || "") || DEFAULT_MARGIN;
|
|
35
|
+
return {
|
|
36
|
+
pageWidth,
|
|
37
|
+
pageHeight,
|
|
38
|
+
contentWidth,
|
|
39
|
+
contentHeight,
|
|
40
|
+
marginTop,
|
|
41
|
+
marginRight,
|
|
42
|
+
marginBottom,
|
|
43
|
+
marginLeft,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Pagination engine that converts HTML with pagination metadata
|
|
48
|
+
* into a paginated view with fixed-size page containers.
|
|
49
|
+
*/
|
|
50
|
+
export class PaginationEngine {
|
|
51
|
+
/**
|
|
52
|
+
* Creates a new pagination engine.
|
|
53
|
+
*
|
|
54
|
+
* @param staging - The staging element or its ID containing the content to paginate
|
|
55
|
+
* @param container - The container element or its ID where pages will be rendered
|
|
56
|
+
* @param options - Pagination options
|
|
57
|
+
*/
|
|
58
|
+
constructor(staging, container, options = {}) {
|
|
59
|
+
this.stagingElement =
|
|
60
|
+
typeof staging === "string"
|
|
61
|
+
? document.getElementById(staging)
|
|
62
|
+
: staging;
|
|
63
|
+
this.containerElement =
|
|
64
|
+
typeof container === "string"
|
|
65
|
+
? document.getElementById(container)
|
|
66
|
+
: 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
|
+
// Find all section containers
|
|
87
|
+
const sections = this.stagingElement.querySelectorAll("[data-section-index]");
|
|
88
|
+
// If no sections found, treat the entire staging content as one section
|
|
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
|
+
// Make staging visible for measurement
|
|
94
|
+
this.stagingElement.style.visibility = "hidden";
|
|
95
|
+
this.stagingElement.style.position = "absolute";
|
|
96
|
+
this.stagingElement.style.left = "-9999px";
|
|
97
|
+
this.stagingElement.style.display = "block";
|
|
98
|
+
// Set width for accurate line wrapping
|
|
99
|
+
section.style.width = `${dims.contentWidth}pt`;
|
|
100
|
+
// Measure all blocks in this section
|
|
101
|
+
const blocks = this.measureBlocks(section, dims);
|
|
102
|
+
// Flow blocks into pages
|
|
103
|
+
const sectionPages = this.flowToPages(blocks, dims, pageNumber, sectionIndex);
|
|
104
|
+
pages.push(...sectionPages);
|
|
105
|
+
pageNumber += sectionPages.length;
|
|
106
|
+
}
|
|
107
|
+
// Hide staging after measurement
|
|
108
|
+
this.stagingElement.style.display = "none";
|
|
109
|
+
return { totalPages: pages.length, pages };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Measures all content blocks in a section.
|
|
113
|
+
*/
|
|
114
|
+
measureBlocks(section, dims) {
|
|
115
|
+
const blocks = [];
|
|
116
|
+
// Get direct children (paragraphs, tables, divs, etc.)
|
|
117
|
+
const children = Array.from(section.children);
|
|
118
|
+
for (const child of children) {
|
|
119
|
+
// Skip section dividers that are just wrappers
|
|
120
|
+
if (child.dataset.sectionIndex !== undefined) {
|
|
121
|
+
// Recursively get blocks from nested sections
|
|
122
|
+
const nestedBlocks = this.measureBlocks(child, dims);
|
|
123
|
+
blocks.push(...nestedBlocks);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const rect = child.getBoundingClientRect();
|
|
127
|
+
const heightPt = pxToPt(rect.height);
|
|
128
|
+
const isPageBreak = child.dataset.pageBreak === "true" ||
|
|
129
|
+
child.classList.contains(`${this.cssPrefix}break`);
|
|
130
|
+
blocks.push({
|
|
131
|
+
element: child,
|
|
132
|
+
heightPt,
|
|
133
|
+
keepWithNext: child.dataset.keepWithNext === "true",
|
|
134
|
+
keepLines: child.dataset.keepLines === "true",
|
|
135
|
+
pageBreakBefore: child.dataset.pageBreakBefore === "true",
|
|
136
|
+
isPageBreak,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return blocks;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Flows measured blocks into page containers.
|
|
143
|
+
*/
|
|
144
|
+
flowToPages(blocks, dims, startPageNumber, sectionIndex) {
|
|
145
|
+
const pages = [];
|
|
146
|
+
let currentContent = [];
|
|
147
|
+
let remainingHeight = dims.contentHeight;
|
|
148
|
+
let pageNumber = startPageNumber;
|
|
149
|
+
const finishPage = () => {
|
|
150
|
+
if (currentContent.length === 0)
|
|
151
|
+
return;
|
|
152
|
+
const page = this.createPage(dims, pageNumber, sectionIndex, currentContent);
|
|
153
|
+
pages.push(page);
|
|
154
|
+
pageNumber++;
|
|
155
|
+
currentContent = [];
|
|
156
|
+
remainingHeight = dims.contentHeight;
|
|
157
|
+
};
|
|
158
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
159
|
+
const block = blocks[i];
|
|
160
|
+
const nextBlock = blocks[i + 1];
|
|
161
|
+
// Handle explicit page breaks
|
|
162
|
+
if (block.isPageBreak) {
|
|
163
|
+
finishPage();
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Handle page break before
|
|
167
|
+
if (block.pageBreakBefore && currentContent.length > 0) {
|
|
168
|
+
finishPage();
|
|
169
|
+
}
|
|
170
|
+
// Calculate needed height (including keepWithNext)
|
|
171
|
+
let neededHeight = block.heightPt;
|
|
172
|
+
if (block.keepWithNext && nextBlock && !nextBlock.isPageBreak) {
|
|
173
|
+
neededHeight += nextBlock.heightPt;
|
|
174
|
+
}
|
|
175
|
+
// Check if block fits on current page
|
|
176
|
+
if (block.heightPt <= remainingHeight) {
|
|
177
|
+
// Block fits
|
|
178
|
+
currentContent.push(block.element.cloneNode(true));
|
|
179
|
+
remainingHeight -= block.heightPt;
|
|
180
|
+
}
|
|
181
|
+
else if (block.heightPt <= dims.contentHeight) {
|
|
182
|
+
// Block doesn't fit but will fit on a new page
|
|
183
|
+
finishPage();
|
|
184
|
+
currentContent.push(block.element.cloneNode(true));
|
|
185
|
+
remainingHeight = dims.contentHeight - block.heightPt;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// Block is taller than a page - add it and let it overflow
|
|
189
|
+
// (In a more sophisticated implementation, we would split the block)
|
|
190
|
+
if (currentContent.length > 0) {
|
|
191
|
+
finishPage();
|
|
192
|
+
}
|
|
193
|
+
currentContent.push(block.element.cloneNode(true));
|
|
194
|
+
finishPage();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Finish last page
|
|
198
|
+
finishPage();
|
|
199
|
+
return pages;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Creates a page container element.
|
|
203
|
+
*/
|
|
204
|
+
createPage(dims, pageNumber, sectionIndex, content) {
|
|
205
|
+
const scaledWidth = dims.pageWidth * this.scale;
|
|
206
|
+
const scaledHeight = dims.pageHeight * this.scale;
|
|
207
|
+
// Create page box
|
|
208
|
+
const pageBox = document.createElement("div");
|
|
209
|
+
pageBox.className = `${this.cssPrefix}box`;
|
|
210
|
+
pageBox.style.width = `${scaledWidth}pt`;
|
|
211
|
+
pageBox.style.height = `${scaledHeight}pt`;
|
|
212
|
+
pageBox.dataset.pageNumber = String(pageNumber);
|
|
213
|
+
pageBox.dataset.sectionIndex = String(sectionIndex);
|
|
214
|
+
// Create content area
|
|
215
|
+
const contentArea = document.createElement("div");
|
|
216
|
+
contentArea.className = `${this.cssPrefix}content`;
|
|
217
|
+
contentArea.style.top = `${dims.marginTop * this.scale}pt`;
|
|
218
|
+
contentArea.style.left = `${dims.marginLeft * this.scale}pt`;
|
|
219
|
+
contentArea.style.width = `${dims.contentWidth}pt`;
|
|
220
|
+
contentArea.style.height = `${dims.contentHeight}pt`;
|
|
221
|
+
contentArea.style.transform = `scale(${this.scale})`;
|
|
222
|
+
contentArea.style.transformOrigin = "top left";
|
|
223
|
+
// Add content
|
|
224
|
+
for (const el of content) {
|
|
225
|
+
contentArea.appendChild(el);
|
|
226
|
+
}
|
|
227
|
+
pageBox.appendChild(contentArea);
|
|
228
|
+
// Add page number
|
|
229
|
+
if (this.showPageNumbers) {
|
|
230
|
+
const pageNum = document.createElement("div");
|
|
231
|
+
pageNum.className = `${this.cssPrefix}number`;
|
|
232
|
+
pageNum.textContent = String(pageNumber);
|
|
233
|
+
pageBox.appendChild(pageNum);
|
|
234
|
+
}
|
|
235
|
+
// Add to container
|
|
236
|
+
this.containerElement.appendChild(pageBox);
|
|
237
|
+
return {
|
|
238
|
+
pageNumber,
|
|
239
|
+
sectionIndex,
|
|
240
|
+
dimensions: dims,
|
|
241
|
+
element: pageBox,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Convenience function to paginate HTML content.
|
|
247
|
+
*
|
|
248
|
+
* @param html - HTML string with pagination metadata
|
|
249
|
+
* @param container - Container element or ID where pages will be rendered
|
|
250
|
+
* @param options - Pagination options
|
|
251
|
+
* @returns PaginationResult
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```typescript
|
|
255
|
+
* const html = await convertDocxToHtml(docx, { paginationMode: PaginationMode.Paginated });
|
|
256
|
+
*
|
|
257
|
+
* // Create a container for the paginated view
|
|
258
|
+
* const container = document.getElementById('viewer');
|
|
259
|
+
*
|
|
260
|
+
* // Parse and paginate
|
|
261
|
+
* container.innerHTML = html;
|
|
262
|
+
* const staging = document.getElementById('pagination-staging');
|
|
263
|
+
* const pageContainer = document.getElementById('pagination-container');
|
|
264
|
+
*
|
|
265
|
+
* const engine = new PaginationEngine(staging, pageContainer, { scale: 0.8 });
|
|
266
|
+
* const result = engine.paginate();
|
|
267
|
+
*
|
|
268
|
+
* console.log(`Document has ${result.totalPages} pages`);
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
export function paginateHtml(html, container, options = {}) {
|
|
272
|
+
const containerEl = typeof container === "string"
|
|
273
|
+
? document.getElementById(container)
|
|
274
|
+
: container;
|
|
275
|
+
if (!containerEl) {
|
|
276
|
+
throw new Error("Container element not found");
|
|
277
|
+
}
|
|
278
|
+
// Insert HTML into container
|
|
279
|
+
containerEl.innerHTML = html;
|
|
280
|
+
// Find staging and page container
|
|
281
|
+
const cssPrefix = options.cssPrefix ?? "page-";
|
|
282
|
+
const staging = containerEl.querySelector("#pagination-staging") ||
|
|
283
|
+
containerEl.querySelector(`.${cssPrefix}staging`);
|
|
284
|
+
const pageContainer = containerEl.querySelector("#pagination-container") ||
|
|
285
|
+
containerEl.querySelector(`.${cssPrefix}container`);
|
|
286
|
+
if (!staging) {
|
|
287
|
+
throw new Error("Pagination staging element not found. Make sure the HTML was generated with PaginationMode.Paginated");
|
|
288
|
+
}
|
|
289
|
+
if (!pageContainer) {
|
|
290
|
+
throw new Error("Pagination container element not found");
|
|
291
|
+
}
|
|
292
|
+
const engine = new PaginationEngine(staging, pageContainer, options);
|
|
293
|
+
return engine.paginate();
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
package/dist/react.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { CSSProperties, ReactElement } from "react";
|
|
1
3
|
import type { ConversionOptions, CompareOptions, Revision } from "./types.js";
|
|
2
|
-
|
|
4
|
+
import { type PaginationOptions, type PaginationResult } from "./pagination.js";
|
|
5
|
+
export type { ConversionOptions, CompareOptions, Revision, PaginationOptions, PaginationResult };
|
|
3
6
|
export interface UseDocxodusResult {
|
|
4
7
|
/** Whether the WASM runtime is loaded and ready */
|
|
5
8
|
isReady: boolean;
|
|
@@ -139,4 +142,102 @@ export interface UseComparisonResult {
|
|
|
139
142
|
* ```
|
|
140
143
|
*/
|
|
141
144
|
export declare function useComparison(wasmBasePath?: string): UseComparisonResult;
|
|
145
|
+
/**
|
|
146
|
+
* Props for the PaginatedDocument component.
|
|
147
|
+
*/
|
|
148
|
+
export interface PaginatedDocumentProps {
|
|
149
|
+
/** HTML string with pagination metadata (from convertDocxToHtml with PaginationMode.Paginated) */
|
|
150
|
+
html: string;
|
|
151
|
+
/** Scale factor for page rendering (1.0 = 100%). Default: 1 */
|
|
152
|
+
scale?: number;
|
|
153
|
+
/** Whether to show page numbers. Default: true */
|
|
154
|
+
showPageNumbers?: boolean;
|
|
155
|
+
/** Gap between pages in pixels. Default: 20 */
|
|
156
|
+
pageGap?: number;
|
|
157
|
+
/** Background color for the viewer. Default: "#525659" */
|
|
158
|
+
backgroundColor?: string;
|
|
159
|
+
/** CSS class prefix used in the HTML. Default: "page-" */
|
|
160
|
+
cssPrefix?: string;
|
|
161
|
+
/** Callback when pagination completes */
|
|
162
|
+
onPaginationComplete?: (result: PaginationResult) => void;
|
|
163
|
+
/** Callback when a page becomes visible (for tracking current page) */
|
|
164
|
+
onPageVisible?: (pageNumber: number) => void;
|
|
165
|
+
/** Additional CSS class for the container */
|
|
166
|
+
className?: string;
|
|
167
|
+
/** Additional inline styles for the container */
|
|
168
|
+
style?: CSSProperties;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Result of the usePagination hook.
|
|
172
|
+
*/
|
|
173
|
+
export interface UsePaginationResult {
|
|
174
|
+
/** Pagination result after processing */
|
|
175
|
+
result: PaginationResult | null;
|
|
176
|
+
/** Whether pagination is in progress */
|
|
177
|
+
isPaginating: boolean;
|
|
178
|
+
/** Error that occurred during pagination */
|
|
179
|
+
error: Error | null;
|
|
180
|
+
/** Manually trigger pagination */
|
|
181
|
+
paginate: () => void;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* React hook for pagination state management.
|
|
185
|
+
*
|
|
186
|
+
* @param html - HTML string with pagination metadata
|
|
187
|
+
* @param containerRef - Ref to the container element
|
|
188
|
+
* @param options - Pagination options
|
|
189
|
+
* @returns Pagination state and controls
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```tsx
|
|
193
|
+
* function Viewer({ html }: { html: string }) {
|
|
194
|
+
* const containerRef = useRef<HTMLDivElement>(null);
|
|
195
|
+
* const { result, isPaginating, error, paginate } = usePagination(html, containerRef);
|
|
196
|
+
*
|
|
197
|
+
* return (
|
|
198
|
+
* <div ref={containerRef} style={{ minHeight: '100vh' }}>
|
|
199
|
+
* {isPaginating && <div>Paginating...</div>}
|
|
200
|
+
* {result && <div>Total pages: {result.totalPages}</div>}
|
|
201
|
+
* </div>
|
|
202
|
+
* );
|
|
203
|
+
* }
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export declare function usePagination(html: string, containerRef: React.RefObject<HTMLElement | null>, options?: PaginationOptions): UsePaginationResult;
|
|
207
|
+
/**
|
|
208
|
+
* React component for displaying a paginated document view (PDF.js style).
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```tsx
|
|
212
|
+
* import { useState, useEffect } from 'react';
|
|
213
|
+
* import { useDocxodus, PaginatedDocument, PaginationMode } from 'docxodus/react';
|
|
214
|
+
*
|
|
215
|
+
* function DocumentViewer() {
|
|
216
|
+
* const { isReady, convertToHtml } = useDocxodus();
|
|
217
|
+
* const [html, setHtml] = useState<string | null>(null);
|
|
218
|
+
*
|
|
219
|
+
* const handleFile = async (file: File) => {
|
|
220
|
+
* const result = await convertToHtml(file, {
|
|
221
|
+
* paginationMode: PaginationMode.Paginated,
|
|
222
|
+
* paginationScale: 0.8
|
|
223
|
+
* });
|
|
224
|
+
* setHtml(result);
|
|
225
|
+
* };
|
|
226
|
+
*
|
|
227
|
+
* return (
|
|
228
|
+
* <div>
|
|
229
|
+
* <input type="file" accept=".docx" onChange={e => e.target.files?.[0] && handleFile(e.target.files[0])} />
|
|
230
|
+
* {html && (
|
|
231
|
+
* <PaginatedDocument
|
|
232
|
+
* html={html}
|
|
233
|
+
* scale={0.8}
|
|
234
|
+
* onPaginationComplete={result => console.log(`${result.totalPages} pages`)}
|
|
235
|
+
* />
|
|
236
|
+
* )}
|
|
237
|
+
* </div>
|
|
238
|
+
* );
|
|
239
|
+
* }
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
export declare function PaginatedDocument({ html, scale, showPageNumbers, pageGap, backgroundColor, cssPrefix, onPaginationComplete, onPageVisible, className, style, }: PaginatedDocumentProps): ReactElement;
|
|
142
243
|
//# sourceMappingURL=react.d.ts.map
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
|
package/dist/react.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback } from "react";
|
|
1
|
+
import { useState, useEffect, useCallback, useRef, createElement } from "react";
|
|
2
2
|
import { initialize, convertDocxToHtml, compareDocuments, compareDocumentsToHtml, getRevisions, isInitialized, } from "./index.js";
|
|
3
|
+
import { PaginationEngine, } from "./pagination.js";
|
|
3
4
|
/**
|
|
4
5
|
* React hook for using Docxodus WASM functionality.
|
|
5
6
|
* Automatically initializes the WASM runtime on mount.
|
|
@@ -267,4 +268,153 @@ export function useComparison(wasmBasePath) {
|
|
|
267
268
|
downloadResult,
|
|
268
269
|
};
|
|
269
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* React hook for pagination state management.
|
|
273
|
+
*
|
|
274
|
+
* @param html - HTML string with pagination metadata
|
|
275
|
+
* @param containerRef - Ref to the container element
|
|
276
|
+
* @param options - Pagination options
|
|
277
|
+
* @returns Pagination state and controls
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```tsx
|
|
281
|
+
* function Viewer({ html }: { html: string }) {
|
|
282
|
+
* const containerRef = useRef<HTMLDivElement>(null);
|
|
283
|
+
* const { result, isPaginating, error, paginate } = usePagination(html, containerRef);
|
|
284
|
+
*
|
|
285
|
+
* return (
|
|
286
|
+
* <div ref={containerRef} style={{ minHeight: '100vh' }}>
|
|
287
|
+
* {isPaginating && <div>Paginating...</div>}
|
|
288
|
+
* {result && <div>Total pages: {result.totalPages}</div>}
|
|
289
|
+
* </div>
|
|
290
|
+
* );
|
|
291
|
+
* }
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
294
|
+
export function usePagination(html, containerRef, options = {}) {
|
|
295
|
+
const [result, setResult] = useState(null);
|
|
296
|
+
const [isPaginating, setIsPaginating] = useState(false);
|
|
297
|
+
const [error, setError] = useState(null);
|
|
298
|
+
const paginate = useCallback(() => {
|
|
299
|
+
if (!containerRef.current || !html) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
setIsPaginating(true);
|
|
303
|
+
setError(null);
|
|
304
|
+
try {
|
|
305
|
+
const container = containerRef.current;
|
|
306
|
+
// Insert HTML into container
|
|
307
|
+
container.innerHTML = html;
|
|
308
|
+
// Find staging and page container
|
|
309
|
+
const cssPrefix = options.cssPrefix ?? "page-";
|
|
310
|
+
const staging = container.querySelector("#pagination-staging") ||
|
|
311
|
+
container.querySelector(`.${cssPrefix}staging`);
|
|
312
|
+
const pageContainer = container.querySelector("#pagination-container") ||
|
|
313
|
+
container.querySelector(`.${cssPrefix}container`);
|
|
314
|
+
if (!staging || !pageContainer) {
|
|
315
|
+
throw new Error("Pagination elements not found. Ensure HTML was generated with PaginationMode.Paginated");
|
|
316
|
+
}
|
|
317
|
+
const engine = new PaginationEngine(staging, pageContainer, options);
|
|
318
|
+
const paginationResult = engine.paginate();
|
|
319
|
+
setResult(paginationResult);
|
|
320
|
+
}
|
|
321
|
+
catch (err) {
|
|
322
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
323
|
+
}
|
|
324
|
+
finally {
|
|
325
|
+
setIsPaginating(false);
|
|
326
|
+
}
|
|
327
|
+
}, [html, containerRef, options]);
|
|
328
|
+
// Auto-paginate when HTML changes
|
|
329
|
+
useEffect(() => {
|
|
330
|
+
if (html && containerRef.current) {
|
|
331
|
+
paginate();
|
|
332
|
+
}
|
|
333
|
+
}, [html, paginate]);
|
|
334
|
+
return { result, isPaginating, error, paginate };
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* React component for displaying a paginated document view (PDF.js style).
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```tsx
|
|
341
|
+
* import { useState, useEffect } from 'react';
|
|
342
|
+
* import { useDocxodus, PaginatedDocument, PaginationMode } from 'docxodus/react';
|
|
343
|
+
*
|
|
344
|
+
* function DocumentViewer() {
|
|
345
|
+
* const { isReady, convertToHtml } = useDocxodus();
|
|
346
|
+
* const [html, setHtml] = useState<string | null>(null);
|
|
347
|
+
*
|
|
348
|
+
* const handleFile = async (file: File) => {
|
|
349
|
+
* const result = await convertToHtml(file, {
|
|
350
|
+
* paginationMode: PaginationMode.Paginated,
|
|
351
|
+
* paginationScale: 0.8
|
|
352
|
+
* });
|
|
353
|
+
* setHtml(result);
|
|
354
|
+
* };
|
|
355
|
+
*
|
|
356
|
+
* return (
|
|
357
|
+
* <div>
|
|
358
|
+
* <input type="file" accept=".docx" onChange={e => e.target.files?.[0] && handleFile(e.target.files[0])} />
|
|
359
|
+
* {html && (
|
|
360
|
+
* <PaginatedDocument
|
|
361
|
+
* html={html}
|
|
362
|
+
* scale={0.8}
|
|
363
|
+
* onPaginationComplete={result => console.log(`${result.totalPages} pages`)}
|
|
364
|
+
* />
|
|
365
|
+
* )}
|
|
366
|
+
* </div>
|
|
367
|
+
* );
|
|
368
|
+
* }
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
export function PaginatedDocument({ html, scale = 1, showPageNumbers = true, pageGap = 20, backgroundColor = "#525659", cssPrefix = "page-", onPaginationComplete, onPageVisible, className, style, }) {
|
|
372
|
+
const containerRef = useRef(null);
|
|
373
|
+
const { result, isPaginating, error } = usePagination(html, containerRef, {
|
|
374
|
+
scale,
|
|
375
|
+
showPageNumbers,
|
|
376
|
+
pageGap,
|
|
377
|
+
cssPrefix,
|
|
378
|
+
});
|
|
379
|
+
// Notify when pagination completes
|
|
380
|
+
useEffect(() => {
|
|
381
|
+
if (result && onPaginationComplete) {
|
|
382
|
+
onPaginationComplete(result);
|
|
383
|
+
}
|
|
384
|
+
}, [result, onPaginationComplete]);
|
|
385
|
+
// Set up intersection observer for page visibility tracking
|
|
386
|
+
useEffect(() => {
|
|
387
|
+
if (!result || !onPageVisible || !containerRef.current) {
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
const observer = new IntersectionObserver((entries) => {
|
|
391
|
+
entries.forEach((entry) => {
|
|
392
|
+
if (entry.isIntersecting) {
|
|
393
|
+
const pageNum = parseInt(entry.target.dataset.pageNumber || "1", 10);
|
|
394
|
+
onPageVisible(pageNum);
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
}, { threshold: 0.5 });
|
|
398
|
+
const pages = containerRef.current.querySelectorAll(`.${cssPrefix}box`);
|
|
399
|
+
pages.forEach((page) => observer.observe(page));
|
|
400
|
+
return () => observer.disconnect();
|
|
401
|
+
}, [result, cssPrefix, onPageVisible]);
|
|
402
|
+
// Use createElement to avoid TSX dependency
|
|
403
|
+
const containerStyle = {
|
|
404
|
+
backgroundColor,
|
|
405
|
+
minHeight: "100vh",
|
|
406
|
+
overflow: "auto",
|
|
407
|
+
...style,
|
|
408
|
+
};
|
|
409
|
+
if (error) {
|
|
410
|
+
return createElement("div", {
|
|
411
|
+
style: { color: "red", padding: "20px", backgroundColor },
|
|
412
|
+
}, `Pagination error: ${error.message}`);
|
|
413
|
+
}
|
|
414
|
+
return createElement("div", {
|
|
415
|
+
ref: containerRef,
|
|
416
|
+
className,
|
|
417
|
+
style: containerStyle,
|
|
418
|
+
}, isPaginating ? "Loading..." : null);
|
|
419
|
+
}
|
|
270
420
|
//# sourceMappingURL=react.js.map
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,7 +7,9 @@ export declare enum RevisionType {
|
|
|
7
7
|
/** Text or content that was removed/deleted */
|
|
8
8
|
Deleted = "Deleted",
|
|
9
9
|
/** Text or content that was relocated within the document */
|
|
10
|
-
Moved = "Moved"
|
|
10
|
+
Moved = "Moved",
|
|
11
|
+
/** Text content unchanged but formatting (bold, italic, etc.) changed */
|
|
12
|
+
FormatChanged = "FormatChanged"
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* Comment render mode
|
|
@@ -23,6 +25,19 @@ export declare enum CommentRenderMode {
|
|
|
23
25
|
/** Render comments in a margin column (CSS-positioned) */
|
|
24
26
|
Margin = 2
|
|
25
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Pagination mode for HTML output
|
|
30
|
+
*/
|
|
31
|
+
export declare enum PaginationMode {
|
|
32
|
+
/** No pagination - content flows continuously (default) */
|
|
33
|
+
None = 0,
|
|
34
|
+
/**
|
|
35
|
+
* Paginated view - outputs page containers with document dimensions
|
|
36
|
+
* and content with data attributes for client-side pagination.
|
|
37
|
+
* Creates a PDF.js-style page preview experience.
|
|
38
|
+
*/
|
|
39
|
+
Paginated = 1
|
|
40
|
+
}
|
|
26
41
|
/**
|
|
27
42
|
* Options for DOCX to HTML conversion
|
|
28
43
|
*/
|
|
@@ -39,6 +54,12 @@ export interface ConversionOptions {
|
|
|
39
54
|
commentRenderMode?: CommentRenderMode;
|
|
40
55
|
/** CSS class prefix for comment elements (default: "comment-") */
|
|
41
56
|
commentCssClassPrefix?: string;
|
|
57
|
+
/** Pagination mode: None (0) or Paginated (1). Default: None */
|
|
58
|
+
paginationMode?: PaginationMode;
|
|
59
|
+
/** Scale factor for page rendering in paginated mode (1.0 = 100%). Default: 1.0 */
|
|
60
|
+
paginationScale?: number;
|
|
61
|
+
/** CSS class prefix for pagination elements. Default: "page-" */
|
|
62
|
+
paginationCssClassPrefix?: string;
|
|
42
63
|
}
|
|
43
64
|
/**
|
|
44
65
|
* Options for document comparison
|
|
@@ -108,6 +129,29 @@ export interface Revision {
|
|
|
108
129
|
* Undefined for non-move revisions.
|
|
109
130
|
*/
|
|
110
131
|
isMoveSource?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* For FormatChanged revisions: details about what formatting changed.
|
|
134
|
+
* Undefined for non-format-change revisions.
|
|
135
|
+
*/
|
|
136
|
+
formatChange?: FormatChangeDetails;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Details about formatting changes for FormatChanged revisions.
|
|
140
|
+
*/
|
|
141
|
+
export interface FormatChangeDetails {
|
|
142
|
+
/**
|
|
143
|
+
* Dictionary of old property names and values.
|
|
144
|
+
* Keys are friendly property names like "bold", "italic", "fontSize".
|
|
145
|
+
*/
|
|
146
|
+
oldProperties?: Record<string, string>;
|
|
147
|
+
/**
|
|
148
|
+
* Dictionary of new property names and values.
|
|
149
|
+
*/
|
|
150
|
+
newProperties?: Record<string, string>;
|
|
151
|
+
/**
|
|
152
|
+
* List of property names that changed (e.g., "bold", "italic", "fontSize").
|
|
153
|
+
*/
|
|
154
|
+
changedPropertyNames?: string[];
|
|
111
155
|
}
|
|
112
156
|
/**
|
|
113
157
|
* Type guard to check if a revision is an insertion.
|
|
@@ -145,6 +189,21 @@ export declare function isDeletion(revision: Revision): boolean;
|
|
|
145
189
|
* ```
|
|
146
190
|
*/
|
|
147
191
|
export declare function isMove(revision: Revision): boolean;
|
|
192
|
+
/**
|
|
193
|
+
* Type guard to check if a revision is a format change.
|
|
194
|
+
* @param revision - The revision to check
|
|
195
|
+
* @returns true if the revision is a format change
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* const revisions = await getRevisions(doc);
|
|
200
|
+
* const formatChanges = revisions.filter(isFormatChange);
|
|
201
|
+
* for (const rev of formatChanges) {
|
|
202
|
+
* console.log(`Format changed: ${rev.formatChange?.changedPropertyNames?.join(", ")}`);
|
|
203
|
+
* }
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export declare function isFormatChange(revision: Revision): boolean;
|
|
148
207
|
/**
|
|
149
208
|
* Type guard to check if a revision is a move source (content moved FROM here).
|
|
150
209
|
* @param revision - The revision to check
|
|
@@ -217,6 +276,7 @@ export interface DocxodusWasmExports {
|
|
|
217
276
|
DocumentConverter: {
|
|
218
277
|
ConvertDocxToHtml: (bytes: Uint8Array) => string;
|
|
219
278
|
ConvertDocxToHtmlWithOptions: (bytes: Uint8Array, pageTitle: string, cssPrefix: string, fabricateClasses: boolean, additionalCss: string, commentRenderMode: number, commentCssClassPrefix: string) => string;
|
|
279
|
+
ConvertDocxToHtmlWithPagination: (bytes: Uint8Array, pageTitle: string, cssPrefix: string, fabricateClasses: boolean, additionalCss: string, commentRenderMode: number, commentCssClassPrefix: string, paginationMode: number, paginationScale: number, paginationCssClassPrefix: string) => string;
|
|
220
280
|
GetVersion: () => string;
|
|
221
281
|
};
|
|
222
282
|
DocumentComparer: {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IACtB,8CAA8C;IAC9C,QAAQ,aAAa;IACrB,+CAA+C;IAC/C,OAAO,YAAY;IACnB,6DAA6D;IAC7D,KAAK,UAAU;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -9,6 +9,8 @@ export var RevisionType;
|
|
|
9
9
|
RevisionType["Deleted"] = "Deleted";
|
|
10
10
|
/** Text or content that was relocated within the document */
|
|
11
11
|
RevisionType["Moved"] = "Moved";
|
|
12
|
+
/** Text content unchanged but formatting (bold, italic, etc.) changed */
|
|
13
|
+
RevisionType["FormatChanged"] = "FormatChanged";
|
|
12
14
|
})(RevisionType || (RevisionType = {}));
|
|
13
15
|
/**
|
|
14
16
|
* Comment render mode
|
|
@@ -25,6 +27,20 @@ export var CommentRenderMode;
|
|
|
25
27
|
/** Render comments in a margin column (CSS-positioned) */
|
|
26
28
|
CommentRenderMode[CommentRenderMode["Margin"] = 2] = "Margin";
|
|
27
29
|
})(CommentRenderMode || (CommentRenderMode = {}));
|
|
30
|
+
/**
|
|
31
|
+
* Pagination mode for HTML output
|
|
32
|
+
*/
|
|
33
|
+
export var PaginationMode;
|
|
34
|
+
(function (PaginationMode) {
|
|
35
|
+
/** No pagination - content flows continuously (default) */
|
|
36
|
+
PaginationMode[PaginationMode["None"] = 0] = "None";
|
|
37
|
+
/**
|
|
38
|
+
* Paginated view - outputs page containers with document dimensions
|
|
39
|
+
* and content with data attributes for client-side pagination.
|
|
40
|
+
* Creates a PDF.js-style page preview experience.
|
|
41
|
+
*/
|
|
42
|
+
PaginationMode[PaginationMode["Paginated"] = 1] = "Paginated";
|
|
43
|
+
})(PaginationMode || (PaginationMode = {}));
|
|
28
44
|
/**
|
|
29
45
|
* Type guard to check if a revision is an insertion.
|
|
30
46
|
* @param revision - The revision to check
|
|
@@ -67,6 +83,23 @@ export function isDeletion(revision) {
|
|
|
67
83
|
export function isMove(revision) {
|
|
68
84
|
return revision.revisionType === RevisionType.Moved;
|
|
69
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Type guard to check if a revision is a format change.
|
|
88
|
+
* @param revision - The revision to check
|
|
89
|
+
* @returns true if the revision is a format change
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const revisions = await getRevisions(doc);
|
|
94
|
+
* const formatChanges = revisions.filter(isFormatChange);
|
|
95
|
+
* for (const rev of formatChanges) {
|
|
96
|
+
* console.log(`Format changed: ${rev.formatChange?.changedPropertyNames?.join(", ")}`);
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export function isFormatChange(revision) {
|
|
101
|
+
return revision.revisionType === RevisionType.FormatChanged;
|
|
102
|
+
}
|
|
70
103
|
/**
|
|
71
104
|
* Type guard to check if a revision is a move source (content moved FROM here).
|
|
72
105
|
* @param revision - The revision to check
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,YASX;AATD,WAAY,YAAY;IACtB,8CAA8C;IAC9C,qCAAqB,CAAA;IACrB,+CAA+C;IAC/C,mCAAmB,CAAA;IACnB,6DAA6D;IAC7D,+BAAe,CAAA;IACf,yEAAyE;IACzE,+CAA+B,CAAA;AACjC,CAAC,EATW,YAAY,KAAZ,YAAY,QASvB;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,uCAAuC;IACvC,kEAAa,CAAA;IACb,2FAA2F;IAC3F,yEAAgB,CAAA;IAChB,8DAA8D;IAC9D,6DAAU,CAAA;IACV,0DAA0D;IAC1D,6DAAU,CAAA;AACZ,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACxB,2DAA2D;IAC3D,mDAAQ,CAAA;IACR;;;;OAIG;IACH,6DAAa,CAAA;AACf,CAAC,EATW,cAAc,KAAd,cAAc,QASzB;AAyHD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,QAAkB;IAC3C,OAAO,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,CAAC;AACxD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,QAAkB;IACvC,OAAO,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,aAAa,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAkB,EAClB,YAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;QACtC,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAC3C,CAAC;AACJ,CAAC"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "DocxodusWasm.dll",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-zmlYhuby7ToCBATrHIZgDbD2VdGCiW3B0GM/f8Ges+g=",
|
|
5
5
|
"jsModuleNative": {
|
|
6
6
|
"dotnet.native.js": "sha256-YLwjs9CPwrZG7YKULjmqr5bYsmhxwcWJOhQNM4bG6Gc="
|
|
7
7
|
},
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dotnet.runtime.js": "sha256-6bV/iAemowb59rmItegP8VsxwWpWUNyMb0Q76Fvvsjo="
|
|
10
10
|
},
|
|
11
11
|
"wasmNative": {
|
|
12
|
-
"dotnet.native.wasm": "sha256-
|
|
12
|
+
"dotnet.native.wasm": "sha256-r4K7/sabghAn25mJC42lFnC3dCx54ufxIPaETC0kF6U="
|
|
13
13
|
},
|
|
14
14
|
"wasmSymbols": {
|
|
15
15
|
"dotnet.native.js.symbols": "sha256-SPuqdYGx50WJuwIFlVGiSuYfladQxWcf88Yd1G1V7W0="
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"assembly": {
|
|
18
18
|
"DocumentFormat.OpenXml.wasm": "sha256-edAN2rIA7QQ8K5qp1o5QXplt8M80fEiVmuMgT/MBmLM=",
|
|
19
19
|
"DocumentFormat.OpenXml.Framework.wasm": "sha256-CFdrD1dSpnkcOk0gxZcKb2T5p+q2ck9ivs+TOML6Jmw=",
|
|
20
|
-
"Docxodus.wasm": "sha256-
|
|
21
|
-
"DocxodusWasm.wasm": "sha256-
|
|
20
|
+
"Docxodus.wasm": "sha256-O4djUfMXykBAiomURCSQQTQJr0iXBux5Nl74KujwfDk=",
|
|
21
|
+
"DocxodusWasm.wasm": "sha256-NvsROGt5o1nBXc3tazlFDPz9SehXRVO7ucyyjf7luLM=",
|
|
22
22
|
"SkiaSharp.wasm": "sha256-U6RbqUVBn8Vx8qpghJC5+r/DC1NSBY+EIRDxP8o6dsk=",
|
|
23
23
|
"System.Collections.Concurrent.wasm": "sha256-xXJbJWNeQ2DSYvAGUoUHjF9y4Iajv2ed0eACOxWD19U=",
|
|
24
24
|
"System.Collections.wasm": "sha256-J1FML3h2WBTlmekS0TVLGCvZGbIRG+AZnGmlZn3Y5+Q=",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"System.Net.Http.wasm": "sha256-gfinV/63sNC0fUQkDJlS9YhPxGAlhaMJ60PisQ6cGMw=",
|
|
38
38
|
"System.Net.Primitives.wasm": "sha256-gKuhOsrrlKcVl7zeLW7q8PQ+MGt2EFqxRTMCdp4IjP8=",
|
|
39
39
|
"System.ObjectModel.wasm": "sha256-x7qtHOTvmJ6Wa03MtqCxc3J0Os4RKQpGO469LHVEgmw=",
|
|
40
|
-
"System.Private.CoreLib.wasm": "sha256-
|
|
40
|
+
"System.Private.CoreLib.wasm": "sha256-rucy8qCsjYpms+XmyvxH/q4gQimGe78TaIvbuDxLGJg=",
|
|
41
41
|
"System.Private.Uri.wasm": "sha256-BnaHYeR1cbbaYnfkExIe3083WDqV4eVrRM4cFrjoO6s=",
|
|
42
42
|
"System.Private.Xml.wasm": "sha256-xn9o+VrKwag3i1zkMUfB04kvi5pFm/FrY1BBZOwULO0=",
|
|
43
43
|
"System.Private.Xml.Linq.wasm": "sha256-K4auvJEzV4JmdQJ4zitUfOnd5EmsssQ6zwtaDsNyAYk=",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"System.Security.Cryptography.wasm": "sha256-NHnnXxLxDKrA0fmrc1OJWB1VHgO1osqnDF8cKNr3xn0=",
|
|
47
47
|
"System.Text.Encoding.Extensions.wasm": "sha256-r2L24FanehJy0xuBN4F0+VdLnXa3L1v7sJmv8g7v91s=",
|
|
48
48
|
"System.Text.Encodings.Web.wasm": "sha256-DSO7E4rBmvQZL4tEVytmH9Y3l1olcV32cOxIlHl7blk=",
|
|
49
|
-
"System.Text.Json.wasm": "sha256-
|
|
49
|
+
"System.Text.Json.wasm": "sha256-ej3zYfQ15OeU64xypccPDfu2OuP5OGUMx/RI6QLSW1E=",
|
|
50
50
|
"System.Text.RegularExpressions.wasm": "sha256-Jfqjfhauz+YIZ2/VhD+3zSnxDygPy4W8b3djubLoD54=",
|
|
51
51
|
"System.Threading.Thread.wasm": "sha256-X1aGeQYTrsi7H0pEZmyqNKJ893KtILavvynk07IGjRM=",
|
|
52
52
|
"System.Xml.Linq.wasm": "sha256-nZUqq1LQ1iYER5V+ccZ1y3uuv7Hjj42vEGwKqg1UwdE=",
|
|
Binary file
|