@docmentis/udoc-viewer 0.5.9 → 0.5.11

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.
@@ -1,237 +1,1906 @@
1
- /**
2
- * Web Worker for UDoc document rendering.
3
- *
4
- * Handles WASM operations off the main thread to keep the UI responsive.
5
- */
6
- import init, { UDoc } from "../wasm/udoc.js";
7
- let udoc = null;
8
- /** Current request ID for response matching. */
9
- let currentRequestId;
10
- /**
11
- * Handle incoming messages from main thread.
12
- */
13
- self.onmessage = async (event) => {
14
- const { _id, ...request } = event.data;
15
- currentRequestId = _id;
16
- try {
17
- switch (request.type) {
18
- case "init": {
19
- await init(request.wasmUrl);
20
- udoc = new UDoc();
21
- respond({ type: "init", success: true });
22
- break;
23
- }
24
- case "setLicense": {
25
- ensureInitialized();
26
- const result = udoc.set_license(request.license, request.domain);
27
- respond({ type: "setLicense", success: true, result });
28
- break;
29
- }
30
- case "getLicenseStatus": {
31
- ensureInitialized();
32
- const result = udoc.license_status();
33
- respond({ type: "getLicenseStatus", success: true, result });
34
- break;
35
- }
36
- case "loadPdf": {
37
- ensureInitialized();
38
- const documentId = udoc.load_pdf(request.bytes);
39
- respond({ type: "loadPdf", success: true, documentId });
40
- break;
41
- }
42
- case "loadImage": {
43
- ensureInitialized();
44
- const documentId = udoc.load_image(request.bytes);
45
- respond({ type: "loadImage", success: true, documentId });
46
- break;
47
- }
48
- case "loadPptx": {
49
- ensureInitialized();
50
- const documentId = udoc.load_pptx(request.bytes);
51
- respond({ type: "loadPptx", success: true, documentId });
52
- break;
53
- }
54
- case "unloadPdf": {
55
- ensureInitialized();
56
- const removed = udoc.remove_document(request.documentId);
57
- respond({ type: "unloadPdf", success: true, removed });
58
- break;
59
- }
60
- case "needsPassword": {
61
- ensureInitialized();
62
- const needsPassword = udoc.needs_password(request.documentId);
63
- respond({ type: "needsPassword", success: true, needsPassword });
64
- break;
65
- }
66
- case "authenticate": {
67
- ensureInitialized();
68
- const authenticated = udoc.authenticate(request.documentId, request.password);
69
- respond({ type: "authenticate", success: true, authenticated });
70
- break;
71
- }
72
- case "getPageCount": {
73
- ensureInitialized();
74
- const pageCount = udoc.page_count(request.documentId);
75
- respond({ type: "getPageCount", success: true, pageCount });
76
- break;
77
- }
78
- case "getPageInfo": {
79
- ensureInitialized();
80
- const info = udoc.page_info(request.documentId, request.pageIndex);
81
- respond({ type: "getPageInfo", success: true, width: info.width, height: info.height, rotation: info.rotation });
82
- break;
83
- }
84
- case "getAllPageInfo": {
85
- ensureInitialized();
86
- const pages = udoc.all_page_info(request.documentId);
87
- respond({ type: "getAllPageInfo", success: true, pages });
88
- break;
89
- }
90
- case "getPageLayout": {
91
- ensureInitialized();
92
- const layout = udoc.page_layout(request.documentId);
93
- respond({ type: "getPageLayout", success: true, layout });
94
- break;
95
- }
96
- case "renderPage": {
97
- ensureInitialized();
98
- const rgba = udoc.render_page_to_rgba(request.documentId, request.pageIndex, request.width, request.height);
99
- respond({ type: "renderPage", success: true, rgba, width: request.width, height: request.height }, [rgba.buffer]);
100
- break;
101
- }
102
- case "getOutline": {
103
- ensureInitialized();
104
- const outline = udoc.get_outline(request.documentId);
105
- respond({ type: "getOutline", success: true, outline });
106
- break;
107
- }
108
- case "getPageAnnotations": {
109
- ensureInitialized();
110
- const annotations = udoc.get_page_annotations(request.documentId, request.pageIndex);
111
- respond({ type: "getPageAnnotations", success: true, annotations });
112
- break;
113
- }
114
- case "getPageText": {
115
- ensureInitialized();
116
- const text = udoc.get_page_text(request.documentId, request.pageIndex);
117
- respond({ type: "getPageText", success: true, text });
118
- break;
119
- }
120
- case "getAllAnnotations": {
121
- ensureInitialized();
122
- const annotations = udoc.get_all_annotations(request.documentId);
123
- respond({ type: "getAllAnnotations", success: true, annotations });
124
- break;
125
- }
126
- case "pdfCompose": {
127
- ensureInitialized();
128
- const documentIds = udoc.pdf_compose(request.compositions, request.docIds);
129
- respond({ type: "pdfCompose", success: true, documentIds });
130
- break;
131
- }
132
- case "getBytes": {
133
- ensureInitialized();
134
- const bytes = udoc.get_bytes(request.documentId);
135
- respond({ type: "getBytes", success: true, bytes }, [bytes.buffer]);
136
- break;
137
- }
138
- case "pdfSplitByOutline": {
139
- ensureInitialized();
140
- const result = udoc.pdf_split_by_outline(request.documentId, request.maxLevel, request.splitMidPage);
141
- respond({ type: "pdfSplitByOutline", success: true, result });
142
- break;
143
- }
144
- case "pdfExtractImages": {
145
- ensureInitialized();
146
- const rawImages = udoc.pdf_extract_images(request.documentId, request.convertRawToPng);
147
- // Copy Uint8Array data to ensure proper transfer across worker boundary
148
- // (WASM memory views don't survive structured clone when nested in objects)
149
- const images = rawImages.map(img => ({
150
- ...img,
151
- data: new Uint8Array(img.data)
152
- }));
153
- const transfers = images.map(img => img.data.buffer);
154
- respond({ type: "pdfExtractImages", success: true, images }, transfers);
155
- break;
156
- }
157
- case "pdfExtractFonts": {
158
- ensureInitialized();
159
- const rawFonts = udoc.pdf_extract_fonts(request.documentId);
160
- // Copy Uint8Array data to ensure proper transfer across worker boundary
161
- // (WASM memory views don't survive structured clone when nested in objects)
162
- const fonts = rawFonts.map(font => ({
163
- ...font,
164
- data: new Uint8Array(font.data)
165
- }));
166
- const transfers = fonts.map(font => font.data.buffer);
167
- respond({ type: "pdfExtractFonts", success: true, fonts }, transfers);
168
- break;
169
- }
170
- case "pdfCompress": {
171
- ensureInitialized();
172
- const compressedBytes = udoc.pdf_compress(request.documentId);
173
- respond({ type: "pdfCompress", success: true, bytes: compressedBytes }, [compressedBytes.buffer]);
174
- break;
175
- }
176
- case "pdfDecompress": {
177
- ensureInitialized();
178
- const decompressedBytes = udoc.pdf_decompress(request.documentId);
179
- respond({ type: "pdfDecompress", success: true, bytes: decompressedBytes }, [decompressedBytes.buffer]);
180
- break;
181
- }
182
- case "getRequiredFonts": {
183
- ensureInitialized();
184
- const fonts = udoc.getRequiredFonts(request.documentId);
185
- respond({ type: "getRequiredFonts", success: true, fonts });
186
- break;
187
- }
188
- case "registerFont": {
189
- ensureInitialized();
190
- udoc.registerFont(request.documentId, request.typeface, request.bold, request.italic, request.bytes);
191
- respond({ type: "registerFont", success: true });
192
- break;
193
- }
194
- case "hasRegisteredFont": {
195
- ensureInitialized();
196
- const hasFont = udoc.hasRegisteredFont(request.documentId, request.typeface, request.bold, request.italic);
197
- respond({ type: "hasRegisteredFont", success: true, hasFont });
198
- break;
199
- }
200
- case "registeredFontCount": {
201
- ensureInitialized();
202
- const count = udoc.registeredFontCount(request.documentId);
203
- respond({ type: "registeredFontCount", success: true, count });
204
- break;
205
- }
206
- case "enableGoogleFonts": {
207
- ensureInitialized();
208
- udoc.enableGoogleFonts(request.documentId);
209
- respond({ type: "enableGoogleFonts", success: true });
210
- break;
211
- }
212
- default: {
213
- const _exhaustive = request;
214
- throw new Error(`Unknown request type: ${request.type}`);
215
- }
216
- }
1
+ // dist/src/wasm/udoc.js
2
+ var wasm;
3
+ function addHeapObject(obj) {
4
+ if (heap_next === heap.length) heap.push(heap.length + 1);
5
+ const idx = heap_next;
6
+ heap_next = heap[idx];
7
+ heap[idx] = obj;
8
+ return idx;
9
+ }
10
+ function debugString(val) {
11
+ const type = typeof val;
12
+ if (type == "number" || type == "boolean" || val == null) {
13
+ return `${val}`;
14
+ }
15
+ if (type == "string") {
16
+ return `"${val}"`;
17
+ }
18
+ if (type == "symbol") {
19
+ const description = val.description;
20
+ if (description == null) {
21
+ return "Symbol";
22
+ } else {
23
+ return `Symbol(${description})`;
24
+ }
25
+ }
26
+ if (type == "function") {
27
+ const name = val.name;
28
+ if (typeof name == "string" && name.length > 0) {
29
+ return `Function(${name})`;
30
+ } else {
31
+ return "Function";
32
+ }
33
+ }
34
+ if (Array.isArray(val)) {
35
+ const length = val.length;
36
+ let debug = "[";
37
+ if (length > 0) {
38
+ debug += debugString(val[0]);
39
+ }
40
+ for (let i = 1; i < length; i++) {
41
+ debug += ", " + debugString(val[i]);
42
+ }
43
+ debug += "]";
44
+ return debug;
45
+ }
46
+ const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
47
+ let className;
48
+ if (builtInMatches && builtInMatches.length > 1) {
49
+ className = builtInMatches[1];
50
+ } else {
51
+ return toString.call(val);
52
+ }
53
+ if (className == "Object") {
54
+ try {
55
+ return "Object(" + JSON.stringify(val) + ")";
56
+ } catch (_) {
57
+ return "Object";
58
+ }
59
+ }
60
+ if (val instanceof Error) {
61
+ return `${val.name}: ${val.message}
62
+ ${val.stack}`;
63
+ }
64
+ return className;
65
+ }
66
+ function dropObject(idx) {
67
+ if (idx < 132) return;
68
+ heap[idx] = heap_next;
69
+ heap_next = idx;
70
+ }
71
+ function getArrayJsValueFromWasm0(ptr, len) {
72
+ ptr = ptr >>> 0;
73
+ const mem = getDataViewMemory0();
74
+ const result = [];
75
+ for (let i = ptr; i < ptr + 4 * len; i += 4) {
76
+ result.push(takeObject(mem.getUint32(i, true)));
77
+ }
78
+ return result;
79
+ }
80
+ function getArrayU8FromWasm0(ptr, len) {
81
+ ptr = ptr >>> 0;
82
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
83
+ }
84
+ var cachedDataViewMemory0 = null;
85
+ function getDataViewMemory0() {
86
+ if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {
87
+ cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
88
+ }
89
+ return cachedDataViewMemory0;
90
+ }
91
+ function getStringFromWasm0(ptr, len) {
92
+ ptr = ptr >>> 0;
93
+ return decodeText(ptr, len);
94
+ }
95
+ var cachedUint8ArrayMemory0 = null;
96
+ function getUint8ArrayMemory0() {
97
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
98
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
99
+ }
100
+ return cachedUint8ArrayMemory0;
101
+ }
102
+ function getObject(idx) {
103
+ return heap[idx];
104
+ }
105
+ function handleError(f, args) {
106
+ try {
107
+ return f.apply(this, args);
108
+ } catch (e) {
109
+ wasm.__wbindgen_export3(addHeapObject(e));
110
+ }
111
+ }
112
+ var heap = new Array(128).fill(void 0);
113
+ heap.push(void 0, null, true, false);
114
+ var heap_next = heap.length;
115
+ function isLikeNone(x) {
116
+ return x === void 0 || x === null;
117
+ }
118
+ function passArray8ToWasm0(arg, malloc) {
119
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
120
+ getUint8ArrayMemory0().set(arg, ptr / 1);
121
+ WASM_VECTOR_LEN = arg.length;
122
+ return ptr;
123
+ }
124
+ function passStringToWasm0(arg, malloc, realloc) {
125
+ if (realloc === void 0) {
126
+ const buf = cachedTextEncoder.encode(arg);
127
+ const ptr2 = malloc(buf.length, 1) >>> 0;
128
+ getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);
129
+ WASM_VECTOR_LEN = buf.length;
130
+ return ptr2;
131
+ }
132
+ let len = arg.length;
133
+ let ptr = malloc(len, 1) >>> 0;
134
+ const mem = getUint8ArrayMemory0();
135
+ let offset = 0;
136
+ for (; offset < len; offset++) {
137
+ const code = arg.charCodeAt(offset);
138
+ if (code > 127) break;
139
+ mem[ptr + offset] = code;
140
+ }
141
+ if (offset !== len) {
142
+ if (offset !== 0) {
143
+ arg = arg.slice(offset);
144
+ }
145
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
146
+ const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
147
+ const ret = cachedTextEncoder.encodeInto(arg, view);
148
+ offset += ret.written;
149
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
150
+ }
151
+ WASM_VECTOR_LEN = offset;
152
+ return ptr;
153
+ }
154
+ function takeObject(idx) {
155
+ const ret = getObject(idx);
156
+ dropObject(idx);
157
+ return ret;
158
+ }
159
+ var cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });
160
+ cachedTextDecoder.decode();
161
+ var MAX_SAFARI_DECODE_BYTES = 2146435072;
162
+ var numBytesDecoded = 0;
163
+ function decodeText(ptr, len) {
164
+ numBytesDecoded += len;
165
+ if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
166
+ cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });
167
+ cachedTextDecoder.decode();
168
+ numBytesDecoded = len;
169
+ }
170
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
171
+ }
172
+ var cachedTextEncoder = new TextEncoder();
173
+ if (!("encodeInto" in cachedTextEncoder)) {
174
+ cachedTextEncoder.encodeInto = function(arg, view) {
175
+ const buf = cachedTextEncoder.encode(arg);
176
+ view.set(buf);
177
+ return {
178
+ read: arg.length,
179
+ written: buf.length
180
+ };
181
+ };
182
+ }
183
+ var WASM_VECTOR_LEN = 0;
184
+ var __wbindgen_enum_XmlHttpRequestResponseType = ["", "arraybuffer", "blob", "document", "json", "text"];
185
+ var UDocFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
186
+ }, unregister: () => {
187
+ } } : new FinalizationRegistry((ptr) => wasm.__wbg_udoc_free(ptr >>> 0, 1));
188
+ var UDoc = class {
189
+ __destroy_into_raw() {
190
+ const ptr = this.__wbg_ptr;
191
+ this.__wbg_ptr = 0;
192
+ UDocFinalization.unregister(this);
193
+ return ptr;
194
+ }
195
+ free() {
196
+ const ptr = this.__destroy_into_raw();
197
+ wasm.__wbg_udoc_free(ptr, 0);
198
+ }
199
+ /**
200
+ * Load an image file and return its ID.
201
+ *
202
+ * Supports various image formats: JPEG, PNG, GIF, BMP, TIFF, WebP, etc.
203
+ * Multi-page TIFF files will create a document with multiple pages.
204
+ *
205
+ * # Arguments
206
+ * * `bytes` - Raw image file data
207
+ *
208
+ * # Returns
209
+ * A unique document ID that can be used to reference this document.
210
+ * @param {Uint8Array} bytes
211
+ * @returns {string}
212
+ */
213
+ load_image(bytes) {
214
+ let deferred3_0;
215
+ let deferred3_1;
216
+ try {
217
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
218
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
219
+ const len0 = WASM_VECTOR_LEN;
220
+ wasm.udoc_load_image(retptr, this.__wbg_ptr, ptr0, len0);
221
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
222
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
223
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
224
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
225
+ var ptr2 = r0;
226
+ var len2 = r1;
227
+ if (r3) {
228
+ ptr2 = 0;
229
+ len2 = 0;
230
+ throw takeObject(r2);
231
+ }
232
+ deferred3_0 = ptr2;
233
+ deferred3_1 = len2;
234
+ return getStringFromWasm0(ptr2, len2);
235
+ } finally {
236
+ wasm.__wbindgen_add_to_stack_pointer(16);
237
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
217
238
  }
218
- catch (error) {
219
- const errorMessage = error instanceof Error ? error.message : String(error);
220
- respond({ type: request.type, success: false, error: errorMessage });
239
+ }
240
+ /**
241
+ * Get the page count of a document.
242
+ * @param {string} id
243
+ * @returns {number}
244
+ */
245
+ page_count(id) {
246
+ try {
247
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
248
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
249
+ const len0 = WASM_VECTOR_LEN;
250
+ wasm.udoc_page_count(retptr, this.__wbg_ptr, ptr0, len0);
251
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
252
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
253
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
254
+ if (r2) {
255
+ throw takeObject(r1);
256
+ }
257
+ return r0 >>> 0;
258
+ } finally {
259
+ wasm.__wbindgen_add_to_stack_pointer(16);
260
+ }
261
+ }
262
+ /**
263
+ * Get the document outline (bookmarks/table of contents).
264
+ *
265
+ * Returns an array of outline items, where each item has:
266
+ * - `title`: Display text for the item
267
+ * - `destination`: Optional navigation destination with `pageIndex` and display parameters
268
+ * - `children`: Nested child items
269
+ *
270
+ * Returns an empty array if the document has no outline.
271
+ * @param {string} id
272
+ * @returns {any}
273
+ */
274
+ get_outline(id) {
275
+ try {
276
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
277
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
278
+ const len0 = WASM_VECTOR_LEN;
279
+ wasm.udoc_get_outline(retptr, this.__wbg_ptr, ptr0, len0);
280
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
281
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
282
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
283
+ if (r2) {
284
+ throw takeObject(r1);
285
+ }
286
+ return takeObject(r0);
287
+ } finally {
288
+ wasm.__wbindgen_add_to_stack_pointer(16);
289
+ }
290
+ }
291
+ /**
292
+ * Check if a feature is enabled by the current license.
293
+ * @param {string} feature
294
+ * @returns {boolean}
295
+ */
296
+ has_feature(feature) {
297
+ const ptr0 = passStringToWasm0(feature, wasm.__wbindgen_export, wasm.__wbindgen_export2);
298
+ const len0 = WASM_VECTOR_LEN;
299
+ const ret = wasm.udoc_has_feature(this.__wbg_ptr, ptr0, len0);
300
+ return ret !== 0;
301
+ }
302
+ /**
303
+ * Get the preferred page layout for two-page viewing modes.
304
+ *
305
+ * Returns one of:
306
+ * - `"default"` - Viewer decides based on document type
307
+ * - `"odd-pages-right"` - Odd pages on right (page 1 alone, then 2|3, 4|5...)
308
+ * - `"odd-pages-left"` - Odd pages on left (1|2, 3|4, 5|6...)
309
+ * @param {string} id
310
+ * @returns {string}
311
+ */
312
+ page_layout(id) {
313
+ let deferred3_0;
314
+ let deferred3_1;
315
+ try {
316
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
317
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
318
+ const len0 = WASM_VECTOR_LEN;
319
+ wasm.udoc_page_layout(retptr, this.__wbg_ptr, ptr0, len0);
320
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
321
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
322
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
323
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
324
+ var ptr2 = r0;
325
+ var len2 = r1;
326
+ if (r3) {
327
+ ptr2 = 0;
328
+ len2 = 0;
329
+ throw takeObject(r2);
330
+ }
331
+ deferred3_0 = ptr2;
332
+ deferred3_1 = len2;
333
+ return getStringFromWasm0(ptr2, len2);
334
+ } finally {
335
+ wasm.__wbindgen_add_to_stack_pointer(16);
336
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
337
+ }
338
+ }
339
+ /**
340
+ * Compose new PDF documents by cherry-picking pages from source documents.
341
+ *
342
+ * The original documents remain unchanged.
343
+ *
344
+ * # Arguments
345
+ * * `compositions` - Array of compositions. Each composition is an array of picks.
346
+ * Each pick is `{ doc: docIndex, pages: "0-2,4" }` where `docIndex` is the index
347
+ * in the `doc_ids` array and `pages` is a page range string (0-based).
348
+ * * `doc_ids` - Array of document IDs to use as sources (order matters for doc indices)
349
+ *
350
+ * # Example
351
+ * ```js
352
+ * // Create two documents: first has pages 0-2 from doc A, second has page 0 from A and 1 from B
353
+ * const newDocIds = udoc.pdf_compose(
354
+ * [
355
+ * [{ doc: 0, pages: "0-2" }],
356
+ * [{ doc: 0, pages: "0" }, { doc: 1, pages: "1" }]
357
+ * ],
358
+ * ["doc_0", "doc_1"]
359
+ * );
360
+ * ```
361
+ *
362
+ * # Returns
363
+ * Array of IDs for the newly created documents (one per composition).
364
+ * @param {any} compositions
365
+ * @param {any} doc_ids
366
+ * @returns {any}
367
+ */
368
+ pdf_compose(compositions, doc_ids) {
369
+ try {
370
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
371
+ wasm.udoc_pdf_compose(retptr, this.__wbg_ptr, addHeapObject(compositions), addHeapObject(doc_ids));
372
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
373
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
374
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
375
+ if (r2) {
376
+ throw takeObject(r1);
377
+ }
378
+ return takeObject(r0);
379
+ } finally {
380
+ wasm.__wbindgen_add_to_stack_pointer(16);
381
+ }
382
+ }
383
+ /**
384
+ * Set the license key.
385
+ *
386
+ * # Arguments
387
+ * * `license_key` - The license key string
388
+ * * `domain` - The current domain (from window.location.hostname)
389
+ *
390
+ * # Returns
391
+ * License validation result as JSON.
392
+ * @param {string} license_key
393
+ * @param {string} domain
394
+ * @returns {any}
395
+ */
396
+ set_license(license_key, domain) {
397
+ try {
398
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
399
+ const ptr0 = passStringToWasm0(license_key, wasm.__wbindgen_export, wasm.__wbindgen_export2);
400
+ const len0 = WASM_VECTOR_LEN;
401
+ const ptr1 = passStringToWasm0(domain, wasm.__wbindgen_export, wasm.__wbindgen_export2);
402
+ const len1 = WASM_VECTOR_LEN;
403
+ wasm.udoc_set_license(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
404
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
405
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
406
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
407
+ if (r2) {
408
+ throw takeObject(r1);
409
+ }
410
+ return takeObject(r0);
411
+ } finally {
412
+ wasm.__wbindgen_add_to_stack_pointer(16);
413
+ }
414
+ }
415
+ /**
416
+ * Authenticate with a password to unlock an encrypted document.
417
+ *
418
+ * # Arguments
419
+ * * `id` - Document ID
420
+ * * `password` - Password to try
421
+ *
422
+ * # Returns
423
+ * `true` if authentication succeeded, `false` if the password was incorrect.
424
+ * @param {string} id
425
+ * @param {string} password
426
+ * @returns {boolean}
427
+ */
428
+ authenticate(id, password) {
429
+ try {
430
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
431
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
432
+ const len0 = WASM_VECTOR_LEN;
433
+ const ptr1 = passStringToWasm0(password, wasm.__wbindgen_export, wasm.__wbindgen_export2);
434
+ const len1 = WASM_VECTOR_LEN;
435
+ wasm.udoc_authenticate(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
436
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
437
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
438
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
439
+ if (r2) {
440
+ throw takeObject(r1);
441
+ }
442
+ return r0 !== 0;
443
+ } finally {
444
+ wasm.__wbindgen_add_to_stack_pointer(16);
445
+ }
446
+ }
447
+ /**
448
+ * Get all document IDs.
449
+ * @returns {string[]}
450
+ */
451
+ document_ids() {
452
+ try {
453
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
454
+ wasm.udoc_document_ids(retptr, this.__wbg_ptr);
455
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
456
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
457
+ var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
458
+ wasm.__wbindgen_export4(r0, r1 * 4, 4);
459
+ return v1;
460
+ } finally {
461
+ wasm.__wbindgen_add_to_stack_pointer(16);
462
+ }
463
+ }
464
+ /**
465
+ * Check if a document with the given ID exists.
466
+ * @param {string} id
467
+ * @returns {boolean}
468
+ */
469
+ has_document(id) {
470
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
471
+ const len0 = WASM_VECTOR_LEN;
472
+ const ret = wasm.udoc_has_document(this.__wbg_ptr, ptr0, len0);
473
+ return ret !== 0;
474
+ }
475
+ /**
476
+ * Compress a PDF document.
477
+ *
478
+ * Saves the document with full compression options enabled:
479
+ * - Compress stream data using FlateDecode
480
+ * - Pack objects into compressed object streams (PDF 1.5+)
481
+ * - Use compressed xref streams (PDF 1.5+)
482
+ * - Remove unreferenced objects
483
+ *
484
+ * # Arguments
485
+ * * `doc_id` - Document ID to compress
486
+ *
487
+ * # Returns
488
+ * Compressed PDF data as Uint8Array
489
+ * @param {string} doc_id
490
+ * @returns {Uint8Array}
491
+ */
492
+ pdf_compress(doc_id) {
493
+ try {
494
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
495
+ const ptr0 = passStringToWasm0(doc_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
496
+ const len0 = WASM_VECTOR_LEN;
497
+ wasm.udoc_pdf_compress(retptr, this.__wbg_ptr, ptr0, len0);
498
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
499
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
500
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
501
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
502
+ if (r3) {
503
+ throw takeObject(r2);
504
+ }
505
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
506
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
507
+ return v2;
508
+ } finally {
509
+ wasm.__wbindgen_add_to_stack_pointer(16);
510
+ }
511
+ }
512
+ /**
513
+ * Get info for all pages in one call.
514
+ *
515
+ * Returns an array of `{width, height, rotation}` objects, one per page.
516
+ * More efficient than calling `page_info` for each page.
517
+ * @param {string} id
518
+ * @returns {any}
519
+ */
520
+ all_page_info(id) {
521
+ try {
522
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
523
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
524
+ const len0 = WASM_VECTOR_LEN;
525
+ wasm.udoc_all_page_info(retptr, this.__wbg_ptr, ptr0, len0);
526
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
527
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
528
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
529
+ if (r2) {
530
+ throw takeObject(r1);
531
+ }
532
+ return takeObject(r0);
533
+ } finally {
534
+ wasm.__wbindgen_add_to_stack_pointer(16);
535
+ }
536
+ }
537
+ /**
538
+ * Get text content for a specific page (for text selection).
539
+ *
540
+ * Returns an array of text runs, each containing:
541
+ * - `text`: Unicode text string
542
+ * - `glyphs`: Positioned glyphs with character mappings
543
+ * - `fontSize`: Font size in points
544
+ * - `transform`: Combined transform matrix
545
+ * @param {string} id
546
+ * @param {number} page_index
547
+ * @returns {any}
548
+ */
549
+ get_page_text(id, page_index) {
550
+ try {
551
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
552
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
553
+ const len0 = WASM_VECTOR_LEN;
554
+ wasm.udoc_get_page_text(retptr, this.__wbg_ptr, ptr0, len0, page_index);
555
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
556
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
557
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
558
+ if (r2) {
559
+ throw takeObject(r1);
560
+ }
561
+ return takeObject(r0);
562
+ } finally {
563
+ wasm.__wbindgen_add_to_stack_pointer(16);
564
+ }
565
+ }
566
+ /**
567
+ * Register a font from raw bytes.
568
+ *
569
+ * Use this to register external fonts (e.g., fetched from Google Fonts)
570
+ * so they can be used for document rendering.
571
+ *
572
+ * # Arguments
573
+ * * `id` - Document ID
574
+ * * `typeface` - The typeface name (must match what's in the document)
575
+ * * `bold` - Whether this is a bold variant
576
+ * * `italic` - Whether this is an italic variant
577
+ * * `bytes` - Raw font file data (TTF, OTF, WOFF, or WOFF2)
578
+ *
579
+ * # Example (JavaScript)
580
+ * ```js
581
+ * // Get required fonts
582
+ * const fonts = udoc.getRequiredFonts(docId);
583
+ *
584
+ * // Fetch and register each font
585
+ * for (const font of fonts) {
586
+ * const url = `https://fonts.googleapis.com/css2?family=${font.typeface}`;
587
+ * const fontBytes = await fetchFontBytes(url, font.bold, font.italic);
588
+ * udoc.registerFont(docId, font.typeface, font.bold, font.italic, fontBytes);
589
+ * }
590
+ *
591
+ * // Now render with the registered fonts
592
+ * const pixels = udoc.renderPageToRgba(docId, 0, 800, 600);
593
+ * ```
594
+ * @param {string} id
595
+ * @param {string} typeface
596
+ * @param {boolean} bold
597
+ * @param {boolean} italic
598
+ * @param {Uint8Array} bytes
599
+ */
600
+ registerFont(id, typeface, bold, italic, bytes) {
601
+ try {
602
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
603
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
604
+ const len0 = WASM_VECTOR_LEN;
605
+ const ptr1 = passStringToWasm0(typeface, wasm.__wbindgen_export, wasm.__wbindgen_export2);
606
+ const len1 = WASM_VECTOR_LEN;
607
+ const ptr2 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
608
+ const len2 = WASM_VECTOR_LEN;
609
+ wasm.udoc_registerFont(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, bold, italic, ptr2, len2);
610
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
611
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
612
+ if (r1) {
613
+ throw takeObject(r0);
614
+ }
615
+ } finally {
616
+ wasm.__wbindgen_add_to_stack_pointer(16);
617
+ }
618
+ }
619
+ /**
620
+ * Get the number of documents currently loaded.
621
+ * @returns {number}
622
+ */
623
+ get document_count() {
624
+ const ret = wasm.udoc_document_count(this.__wbg_ptr);
625
+ return ret >>> 0;
626
+ }
627
+ /**
628
+ * Get current license status.
629
+ * @returns {any}
630
+ */
631
+ license_status() {
632
+ try {
633
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
634
+ wasm.udoc_license_status(retptr, this.__wbg_ptr);
635
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
636
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
637
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
638
+ if (r2) {
639
+ throw takeObject(r1);
640
+ }
641
+ return takeObject(r0);
642
+ } finally {
643
+ wasm.__wbindgen_add_to_stack_pointer(16);
644
+ }
645
+ }
646
+ /**
647
+ * Check if a document requires a password to open.
648
+ *
649
+ * Returns `true` if the document is encrypted and requires authentication
650
+ * before pages can be loaded or rendered.
651
+ * @param {string} id
652
+ * @returns {boolean}
653
+ */
654
+ needs_password(id) {
655
+ try {
656
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
657
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
658
+ const len0 = WASM_VECTOR_LEN;
659
+ wasm.udoc_needs_password(retptr, this.__wbg_ptr, ptr0, len0);
660
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
661
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
662
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
663
+ if (r2) {
664
+ throw takeObject(r1);
665
+ }
666
+ return r0 !== 0;
667
+ } finally {
668
+ wasm.__wbindgen_add_to_stack_pointer(16);
221
669
  }
670
+ }
671
+ /**
672
+ * Decompress a PDF document.
673
+ *
674
+ * Removes all filter encodings from streams, resulting in raw,
675
+ * uncompressed stream data. Useful for debugging or inspection.
676
+ *
677
+ * # Arguments
678
+ * * `doc_id` - Document ID to decompress
679
+ *
680
+ * # Returns
681
+ * Decompressed PDF data as Uint8Array
682
+ * @param {string} doc_id
683
+ * @returns {Uint8Array}
684
+ */
685
+ pdf_decompress(doc_id) {
686
+ try {
687
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
688
+ const ptr0 = passStringToWasm0(doc_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
689
+ const len0 = WASM_VECTOR_LEN;
690
+ wasm.udoc_pdf_decompress(retptr, this.__wbg_ptr, ptr0, len0);
691
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
692
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
693
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
694
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
695
+ if (r3) {
696
+ throw takeObject(r2);
697
+ }
698
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
699
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
700
+ return v2;
701
+ } finally {
702
+ wasm.__wbindgen_add_to_stack_pointer(16);
703
+ }
704
+ }
705
+ /**
706
+ * Remove a document by ID.
707
+ *
708
+ * Returns true if the document was removed, false if it didn't exist.
709
+ * @param {string} id
710
+ * @returns {boolean}
711
+ */
712
+ remove_document(id) {
713
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
714
+ const len0 = WASM_VECTOR_LEN;
715
+ const ret = wasm.udoc_remove_document(this.__wbg_ptr, ptr0, len0);
716
+ return ret !== 0;
717
+ }
718
+ /**
719
+ * Extract all embedded fonts from a PDF document.
720
+ *
721
+ * # Arguments
722
+ * * `doc_id` - Document ID to extract fonts from
723
+ *
724
+ * # Returns
725
+ * Array of extracted font objects, each with:
726
+ * - `name`: Font name from the resource dictionary
727
+ * - `fontType`: Font type (Type1, TrueType, etc.)
728
+ * - `extension`: File extension (ttf, cff, t1, etc.)
729
+ * - `data`: Raw font data as Uint8Array
730
+ * @param {string} doc_id
731
+ * @returns {any}
732
+ */
733
+ pdf_extract_fonts(doc_id) {
734
+ try {
735
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
736
+ const ptr0 = passStringToWasm0(doc_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
737
+ const len0 = WASM_VECTOR_LEN;
738
+ wasm.udoc_pdf_extract_fonts(retptr, this.__wbg_ptr, ptr0, len0);
739
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
740
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
741
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
742
+ if (r2) {
743
+ throw takeObject(r1);
744
+ }
745
+ return takeObject(r0);
746
+ } finally {
747
+ wasm.__wbindgen_add_to_stack_pointer(16);
748
+ }
749
+ }
750
+ /**
751
+ * Get all external fonts required by the document.
752
+ *
753
+ * This scans all text content in loaded pages and returns font descriptors
754
+ * for fonts that are:
755
+ * - Not embedded in the document
756
+ * - Not standard PDF fonts (Helvetica, Times, Courier, etc.)
757
+ *
758
+ * Use this to determine which fonts need to be fetched from external sources
759
+ * (e.g., Google Fonts) before rendering.
760
+ *
761
+ * Note: This only scans pages that have been loaded. Call appropriate loading
762
+ * methods first to ensure the pages you need are scanned.
763
+ *
764
+ * # Arguments
765
+ * * `id` - Document ID
766
+ *
767
+ * # Returns
768
+ * Array of font descriptors: `[{ typeface: "Roboto", bold: false, italic: false }, ...]`
769
+ *
770
+ * # Example (JavaScript)
771
+ * ```js
772
+ * // Load document
773
+ * const docId = udoc.loadPdf(pdfBytes);
774
+ *
775
+ * // Load all pages to scan for fonts
776
+ * const pageCount = udoc.pageCount(docId);
777
+ * for (let i = 0; i < pageCount; i++) {
778
+ * udoc.renderPageToRgba(docId, i, 1, 1); // Minimal render to load page
779
+ * }
780
+ *
781
+ * // Get required fonts
782
+ * const fonts = udoc.getRequiredFonts(docId);
783
+ * // fonts: [{ typeface: "Roboto", bold: false, italic: false }, ...]
784
+ * ```
785
+ * @param {string} id
786
+ * @returns {any}
787
+ */
788
+ getRequiredFonts(id) {
789
+ try {
790
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
791
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
792
+ const len0 = WASM_VECTOR_LEN;
793
+ wasm.udoc_getRequiredFonts(retptr, this.__wbg_ptr, ptr0, len0);
794
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
795
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
796
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
797
+ if (r2) {
798
+ throw takeObject(r1);
799
+ }
800
+ return takeObject(r0);
801
+ } finally {
802
+ wasm.__wbindgen_add_to_stack_pointer(16);
803
+ }
804
+ }
805
+ /**
806
+ * Extract all embedded images from a PDF document.
807
+ *
808
+ * # Arguments
809
+ * * `doc_id` - Document ID to extract images from
810
+ * * `convert_raw_to_png` - When true, converts raw pixel data to PNG format
811
+ *
812
+ * # Returns
813
+ * Array of extracted image objects, each with:
814
+ * - `name`: Image name from the resource dictionary
815
+ * - `format`: Image format (jpeg, png, jp2, etc.)
816
+ * - `width`: Width in pixels
817
+ * - `height`: Height in pixels
818
+ * - `data`: Raw image data as Uint8Array
819
+ * @param {string} doc_id
820
+ * @param {boolean} convert_raw_to_png
821
+ * @returns {any}
822
+ */
823
+ pdf_extract_images(doc_id, convert_raw_to_png) {
824
+ try {
825
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
826
+ const ptr0 = passStringToWasm0(doc_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
827
+ const len0 = WASM_VECTOR_LEN;
828
+ wasm.udoc_pdf_extract_images(retptr, this.__wbg_ptr, ptr0, len0, convert_raw_to_png);
829
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
830
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
831
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
832
+ if (r2) {
833
+ throw takeObject(r1);
834
+ }
835
+ return takeObject(r0);
836
+ } finally {
837
+ wasm.__wbindgen_add_to_stack_pointer(16);
838
+ }
839
+ }
840
+ /**
841
+ * Render a page to PNG bytes.
842
+ *
843
+ * # Arguments
844
+ * * `id` - Document ID
845
+ * * `page_index` - Zero-based page index
846
+ * * `width` - Output width in pixels
847
+ * * `height` - Output height in pixels
848
+ *
849
+ * # Returns
850
+ * PNG-encoded image data as a byte array.
851
+ * @param {string} id
852
+ * @param {number} page_index
853
+ * @param {number} width
854
+ * @param {number} height
855
+ * @returns {Uint8Array}
856
+ */
857
+ render_page_to_png(id, page_index, width, height) {
858
+ try {
859
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
860
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
861
+ const len0 = WASM_VECTOR_LEN;
862
+ wasm.udoc_render_page_to_png(retptr, this.__wbg_ptr, ptr0, len0, page_index, width, height);
863
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
864
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
865
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
866
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
867
+ if (r3) {
868
+ throw takeObject(r2);
869
+ }
870
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
871
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
872
+ return v2;
873
+ } finally {
874
+ wasm.__wbindgen_add_to_stack_pointer(16);
875
+ }
876
+ }
877
+ /**
878
+ * Enable Google Fonts for a document.
879
+ *
880
+ * When enabled, fonts that are not embedded in the document will be
881
+ * automatically fetched from Google Fonts during rendering.
882
+ *
883
+ * # Arguments
884
+ * * `id` - Document ID
885
+ *
886
+ * # Example (JavaScript)
887
+ * ```js
888
+ * // Enable Google Fonts for the document
889
+ * udoc.enableGoogleFonts(docId);
890
+ *
891
+ * // Now render pages - fonts will be fetched automatically
892
+ * const pixels = udoc.renderPageToRgba(docId, 0, 800, 600);
893
+ * ```
894
+ * @param {string} id
895
+ */
896
+ enableGoogleFonts(id) {
897
+ try {
898
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
899
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
900
+ const len0 = WASM_VECTOR_LEN;
901
+ wasm.udoc_enableGoogleFonts(retptr, this.__wbg_ptr, ptr0, len0);
902
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
903
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
904
+ if (r1) {
905
+ throw takeObject(r0);
906
+ }
907
+ } finally {
908
+ wasm.__wbindgen_add_to_stack_pointer(16);
909
+ }
910
+ }
911
+ /**
912
+ * Get all annotations in the document, grouped by page index.
913
+ *
914
+ * Returns an object mapping page indices (as strings) to arrays of annotations.
915
+ * @param {string} id
916
+ * @returns {any}
917
+ */
918
+ get_all_annotations(id) {
919
+ try {
920
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
921
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
922
+ const len0 = WASM_VECTOR_LEN;
923
+ wasm.udoc_get_all_annotations(retptr, this.__wbg_ptr, ptr0, len0);
924
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
925
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
926
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
927
+ if (r2) {
928
+ throw takeObject(r1);
929
+ }
930
+ return takeObject(r0);
931
+ } finally {
932
+ wasm.__wbindgen_add_to_stack_pointer(16);
933
+ }
934
+ }
935
+ /**
936
+ * Check if a font is registered for a document.
937
+ *
938
+ * # Arguments
939
+ * * `id` - Document ID
940
+ * * `typeface` - The typeface name
941
+ * * `bold` - Whether to check for bold variant
942
+ * * `italic` - Whether to check for italic variant
943
+ *
944
+ * # Returns
945
+ * `true` if the font is registered, `false` otherwise.
946
+ * @param {string} id
947
+ * @param {string} typeface
948
+ * @param {boolean} bold
949
+ * @param {boolean} italic
950
+ * @returns {boolean}
951
+ */
952
+ hasRegisteredFont(id, typeface, bold, italic) {
953
+ try {
954
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
955
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
956
+ const len0 = WASM_VECTOR_LEN;
957
+ const ptr1 = passStringToWasm0(typeface, wasm.__wbindgen_export, wasm.__wbindgen_export2);
958
+ const len1 = WASM_VECTOR_LEN;
959
+ wasm.udoc_hasRegisteredFont(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, bold, italic);
960
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
961
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
962
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
963
+ if (r2) {
964
+ throw takeObject(r1);
965
+ }
966
+ return r0 !== 0;
967
+ } finally {
968
+ wasm.__wbindgen_add_to_stack_pointer(16);
969
+ }
970
+ }
971
+ /**
972
+ * Render a page to raw RGBA pixel data.
973
+ *
974
+ * The returned data is in premultiplied alpha format, suitable for
975
+ * use with `ImageData` and canvas rendering.
976
+ *
977
+ * # Arguments
978
+ * * `id` - Document ID
979
+ * * `page_index` - Zero-based page index
980
+ * * `width` - Output width in pixels
981
+ * * `height` - Output height in pixels
982
+ *
983
+ * # Returns
984
+ * Raw RGBA pixel data (width * height * 4 bytes).
985
+ * @param {string} id
986
+ * @param {number} page_index
987
+ * @param {number} width
988
+ * @param {number} height
989
+ * @returns {Uint8Array}
990
+ */
991
+ render_page_to_rgba(id, page_index, width, height) {
992
+ try {
993
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
994
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
995
+ const len0 = WASM_VECTOR_LEN;
996
+ wasm.udoc_render_page_to_rgba(retptr, this.__wbg_ptr, ptr0, len0, page_index, width, height);
997
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
998
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
999
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1000
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1001
+ if (r3) {
1002
+ throw takeObject(r2);
1003
+ }
1004
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
1005
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
1006
+ return v2;
1007
+ } finally {
1008
+ wasm.__wbindgen_add_to_stack_pointer(16);
1009
+ }
1010
+ }
1011
+ /**
1012
+ * Get annotations for a specific page.
1013
+ *
1014
+ * Returns an array of annotation objects for the given page.
1015
+ * Uses per-page loading for efficiency (only loads the requested page).
1016
+ * @param {string} id
1017
+ * @param {number} page_index
1018
+ * @returns {any}
1019
+ */
1020
+ get_page_annotations(id, page_index) {
1021
+ try {
1022
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1023
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1024
+ const len0 = WASM_VECTOR_LEN;
1025
+ wasm.udoc_get_page_annotations(retptr, this.__wbg_ptr, ptr0, len0, page_index);
1026
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1027
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1028
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1029
+ if (r2) {
1030
+ throw takeObject(r1);
1031
+ }
1032
+ return takeObject(r0);
1033
+ } finally {
1034
+ wasm.__wbindgen_add_to_stack_pointer(16);
1035
+ }
1036
+ }
1037
+ /**
1038
+ * Split a PDF document by its outline (bookmarks) structure.
1039
+ *
1040
+ * Creates multiple documents, one for each outline section at the specified level.
1041
+ *
1042
+ * # Arguments
1043
+ * * `doc_id` - Document ID to split
1044
+ * * `max_level` - Maximum outline level to consider (1 = top level only)
1045
+ * * `split_mid_page` - When true, filters page content when sections share a page
1046
+ *
1047
+ * # Returns
1048
+ * Object with:
1049
+ * - `documentIds`: Array of IDs for the newly created documents
1050
+ * - `sections`: Array of section info objects with `title`, `startPage`, `level`
1051
+ * @param {string} doc_id
1052
+ * @param {number} max_level
1053
+ * @param {boolean} split_mid_page
1054
+ * @returns {any}
1055
+ */
1056
+ pdf_split_by_outline(doc_id, max_level, split_mid_page) {
1057
+ try {
1058
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1059
+ const ptr0 = passStringToWasm0(doc_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1060
+ const len0 = WASM_VECTOR_LEN;
1061
+ wasm.udoc_pdf_split_by_outline(retptr, this.__wbg_ptr, ptr0, len0, max_level, split_mid_page);
1062
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1063
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1064
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1065
+ if (r2) {
1066
+ throw takeObject(r1);
1067
+ }
1068
+ return takeObject(r0);
1069
+ } finally {
1070
+ wasm.__wbindgen_add_to_stack_pointer(16);
1071
+ }
1072
+ }
1073
+ /**
1074
+ * Get the number of fonts registered for a document.
1075
+ *
1076
+ * # Arguments
1077
+ * * `id` - Document ID
1078
+ *
1079
+ * # Returns
1080
+ * The number of registered fonts.
1081
+ * @param {string} id
1082
+ * @returns {number}
1083
+ */
1084
+ registeredFontCount(id) {
1085
+ try {
1086
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1087
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1088
+ const len0 = WASM_VECTOR_LEN;
1089
+ wasm.udoc_registeredFontCount(retptr, this.__wbg_ptr, ptr0, len0);
1090
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1091
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1092
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1093
+ if (r2) {
1094
+ throw takeObject(r1);
1095
+ }
1096
+ return r0 >>> 0;
1097
+ } finally {
1098
+ wasm.__wbindgen_add_to_stack_pointer(16);
1099
+ }
1100
+ }
1101
+ /**
1102
+ * Create a new document viewer.
1103
+ */
1104
+ constructor() {
1105
+ const ret = wasm.udoc_new();
1106
+ this.__wbg_ptr = ret >>> 0;
1107
+ UDocFinalization.register(this, this.__wbg_ptr, this);
1108
+ return this;
1109
+ }
1110
+ /**
1111
+ * Load a PDF document and return its ID.
1112
+ *
1113
+ * # Arguments
1114
+ * * `bytes` - Raw PDF file data
1115
+ *
1116
+ * # Returns
1117
+ * A unique document ID that can be used to reference this document.
1118
+ * @param {Uint8Array} bytes
1119
+ * @returns {string}
1120
+ */
1121
+ load_pdf(bytes) {
1122
+ let deferred3_0;
1123
+ let deferred3_1;
1124
+ try {
1125
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1126
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
1127
+ const len0 = WASM_VECTOR_LEN;
1128
+ wasm.udoc_load_pdf(retptr, this.__wbg_ptr, ptr0, len0);
1129
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1130
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1131
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1132
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1133
+ var ptr2 = r0;
1134
+ var len2 = r1;
1135
+ if (r3) {
1136
+ ptr2 = 0;
1137
+ len2 = 0;
1138
+ throw takeObject(r2);
1139
+ }
1140
+ deferred3_0 = ptr2;
1141
+ deferred3_1 = len2;
1142
+ return getStringFromWasm0(ptr2, len2);
1143
+ } finally {
1144
+ wasm.__wbindgen_add_to_stack_pointer(16);
1145
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
1146
+ }
1147
+ }
1148
+ /**
1149
+ * Get the raw PDF bytes of a document.
1150
+ *
1151
+ * Returns the original PDF file data for the document.
1152
+ * Returns an error if the document is not a PDF.
1153
+ * @param {string} id
1154
+ * @returns {Uint8Array}
1155
+ */
1156
+ get_bytes(id) {
1157
+ try {
1158
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1159
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1160
+ const len0 = WASM_VECTOR_LEN;
1161
+ wasm.udoc_get_bytes(retptr, this.__wbg_ptr, ptr0, len0);
1162
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1163
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1164
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1165
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1166
+ if (r3) {
1167
+ throw takeObject(r2);
1168
+ }
1169
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
1170
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
1171
+ return v2;
1172
+ } finally {
1173
+ wasm.__wbindgen_add_to_stack_pointer(16);
1174
+ }
1175
+ }
1176
+ /**
1177
+ * Get a numeric limit from the current license.
1178
+ *
1179
+ * Returns the limit value if set in the license, otherwise returns the default.
1180
+ * @param {string} limit_name
1181
+ * @param {bigint} _default
1182
+ * @returns {bigint}
1183
+ */
1184
+ get_limit(limit_name, _default) {
1185
+ const ptr0 = passStringToWasm0(limit_name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1186
+ const len0 = WASM_VECTOR_LEN;
1187
+ const ret = wasm.udoc_get_limit(this.__wbg_ptr, ptr0, len0, _default);
1188
+ return BigInt.asUintN(64, ret);
1189
+ }
1190
+ /**
1191
+ * Load a PPTX (PowerPoint) document and return its ID.
1192
+ *
1193
+ * # Arguments
1194
+ * * `bytes` - Raw PPTX file data
1195
+ *
1196
+ * # Returns
1197
+ * A unique document ID that can be used to reference this document.
1198
+ * @param {Uint8Array} bytes
1199
+ * @returns {string}
1200
+ */
1201
+ load_pptx(bytes) {
1202
+ let deferred3_0;
1203
+ let deferred3_1;
1204
+ try {
1205
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1206
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
1207
+ const len0 = WASM_VECTOR_LEN;
1208
+ wasm.udoc_load_pptx(retptr, this.__wbg_ptr, ptr0, len0);
1209
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1210
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1211
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1212
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1213
+ var ptr2 = r0;
1214
+ var len2 = r1;
1215
+ if (r3) {
1216
+ ptr2 = 0;
1217
+ len2 = 0;
1218
+ throw takeObject(r2);
1219
+ }
1220
+ deferred3_0 = ptr2;
1221
+ deferred3_1 = len2;
1222
+ return getStringFromWasm0(ptr2, len2);
1223
+ } finally {
1224
+ wasm.__wbindgen_add_to_stack_pointer(16);
1225
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
1226
+ }
1227
+ }
1228
+ /**
1229
+ * Get info for a specific page.
1230
+ * @param {string} id
1231
+ * @param {number} page_index
1232
+ * @returns {any}
1233
+ */
1234
+ page_info(id, page_index) {
1235
+ try {
1236
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1237
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1238
+ const len0 = WASM_VECTOR_LEN;
1239
+ wasm.udoc_page_info(retptr, this.__wbg_ptr, ptr0, len0, page_index);
1240
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1241
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1242
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1243
+ if (r2) {
1244
+ throw takeObject(r1);
1245
+ }
1246
+ return takeObject(r0);
1247
+ } finally {
1248
+ wasm.__wbindgen_add_to_stack_pointer(16);
1249
+ }
1250
+ }
222
1251
  };
223
- function ensureInitialized() {
224
- if (!udoc) {
225
- throw new Error("Worker not initialized. Call init first.");
1252
+ if (Symbol.dispose) UDoc.prototype[Symbol.dispose] = UDoc.prototype.free;
1253
+ var EXPECTED_RESPONSE_TYPES = /* @__PURE__ */ new Set(["basic", "cors", "default"]);
1254
+ async function __wbg_load(module2, imports) {
1255
+ if (typeof Response === "function" && module2 instanceof Response) {
1256
+ if (typeof WebAssembly.instantiateStreaming === "function") {
1257
+ try {
1258
+ return await WebAssembly.instantiateStreaming(module2, imports);
1259
+ } catch (e) {
1260
+ const validResponse = module2.ok && EXPECTED_RESPONSE_TYPES.has(module2.type);
1261
+ if (validResponse && module2.headers.get("Content-Type") !== "application/wasm") {
1262
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
1263
+ } else {
1264
+ throw e;
1265
+ }
1266
+ }
1267
+ }
1268
+ const bytes = await module2.arrayBuffer();
1269
+ return await WebAssembly.instantiate(bytes, imports);
1270
+ } else {
1271
+ const instance = await WebAssembly.instantiate(module2, imports);
1272
+ if (instance instanceof WebAssembly.Instance) {
1273
+ return { instance, module: module2 };
1274
+ } else {
1275
+ return instance;
226
1276
  }
1277
+ }
227
1278
  }
228
- function respond(response, transfer) {
229
- const message = currentRequestId !== undefined ? { ...response, _id: currentRequestId } : response;
230
- if (transfer) {
231
- self.postMessage(message, transfer);
1279
+ function __wbg_get_imports() {
1280
+ const imports = {};
1281
+ imports.wbg = {};
1282
+ imports.wbg.__wbg_Error_52673b7de5a0ca89 = function(arg0, arg1) {
1283
+ const ret = Error(getStringFromWasm0(arg0, arg1));
1284
+ return addHeapObject(ret);
1285
+ };
1286
+ imports.wbg.__wbg_Number_2d1dcfcf4ec51736 = function(arg0) {
1287
+ const ret = Number(getObject(arg0));
1288
+ return ret;
1289
+ };
1290
+ imports.wbg.__wbg_String_8f0eb39a4a4c2f66 = function(arg0, arg1) {
1291
+ const ret = String(getObject(arg1));
1292
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1293
+ const len1 = WASM_VECTOR_LEN;
1294
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
1295
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
1296
+ };
1297
+ imports.wbg.__wbg___wbindgen_bigint_get_as_i64_6e32f5e6aff02e1d = function(arg0, arg1) {
1298
+ const v = getObject(arg1);
1299
+ const ret = typeof v === "bigint" ? v : void 0;
1300
+ getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);
1301
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
1302
+ };
1303
+ imports.wbg.__wbg___wbindgen_boolean_get_dea25b33882b895b = function(arg0) {
1304
+ const v = getObject(arg0);
1305
+ const ret = typeof v === "boolean" ? v : void 0;
1306
+ return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;
1307
+ };
1308
+ imports.wbg.__wbg___wbindgen_debug_string_adfb662ae34724b6 = function(arg0, arg1) {
1309
+ const ret = debugString(getObject(arg1));
1310
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1311
+ const len1 = WASM_VECTOR_LEN;
1312
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
1313
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
1314
+ };
1315
+ imports.wbg.__wbg___wbindgen_in_0d3e1e8f0c669317 = function(arg0, arg1) {
1316
+ const ret = getObject(arg0) in getObject(arg1);
1317
+ return ret;
1318
+ };
1319
+ imports.wbg.__wbg___wbindgen_is_bigint_0e1a2e3f55cfae27 = function(arg0) {
1320
+ const ret = typeof getObject(arg0) === "bigint";
1321
+ return ret;
1322
+ };
1323
+ imports.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd = function(arg0) {
1324
+ const ret = typeof getObject(arg0) === "function";
1325
+ return ret;
1326
+ };
1327
+ imports.wbg.__wbg___wbindgen_is_object_ce774f3490692386 = function(arg0) {
1328
+ const val = getObject(arg0);
1329
+ const ret = typeof val === "object" && val !== null;
1330
+ return ret;
1331
+ };
1332
+ imports.wbg.__wbg___wbindgen_is_string_704ef9c8fc131030 = function(arg0) {
1333
+ const ret = typeof getObject(arg0) === "string";
1334
+ return ret;
1335
+ };
1336
+ imports.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269 = function(arg0) {
1337
+ const ret = getObject(arg0) === void 0;
1338
+ return ret;
1339
+ };
1340
+ imports.wbg.__wbg___wbindgen_jsval_eq_b6101cc9cef1fe36 = function(arg0, arg1) {
1341
+ const ret = getObject(arg0) === getObject(arg1);
1342
+ return ret;
1343
+ };
1344
+ imports.wbg.__wbg___wbindgen_jsval_loose_eq_766057600fdd1b0d = function(arg0, arg1) {
1345
+ const ret = getObject(arg0) == getObject(arg1);
1346
+ return ret;
1347
+ };
1348
+ imports.wbg.__wbg___wbindgen_number_get_9619185a74197f95 = function(arg0, arg1) {
1349
+ const obj = getObject(arg1);
1350
+ const ret = typeof obj === "number" ? obj : void 0;
1351
+ getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
1352
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
1353
+ };
1354
+ imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = function(arg0, arg1) {
1355
+ const obj = getObject(arg1);
1356
+ const ret = typeof obj === "string" ? obj : void 0;
1357
+ var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1358
+ var len1 = WASM_VECTOR_LEN;
1359
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
1360
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
1361
+ };
1362
+ imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) {
1363
+ throw new Error(getStringFromWasm0(arg0, arg1));
1364
+ };
1365
+ imports.wbg.__wbg_call_3020136f7a2d6e44 = function() {
1366
+ return handleError(function(arg0, arg1, arg2) {
1367
+ const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
1368
+ return addHeapObject(ret);
1369
+ }, arguments);
1370
+ };
1371
+ imports.wbg.__wbg_call_abb4ff46ce38be40 = function() {
1372
+ return handleError(function(arg0, arg1) {
1373
+ const ret = getObject(arg0).call(getObject(arg1));
1374
+ return addHeapObject(ret);
1375
+ }, arguments);
1376
+ };
1377
+ imports.wbg.__wbg_crypto_574e78ad8b13b65f = function(arg0) {
1378
+ const ret = getObject(arg0).crypto;
1379
+ return addHeapObject(ret);
1380
+ };
1381
+ imports.wbg.__wbg_debug_9d0c87ddda3dc485 = function(arg0) {
1382
+ console.debug(getObject(arg0));
1383
+ };
1384
+ imports.wbg.__wbg_done_62ea16af4ce34b24 = function(arg0) {
1385
+ const ret = getObject(arg0).done;
1386
+ return ret;
1387
+ };
1388
+ imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) {
1389
+ let deferred0_0;
1390
+ let deferred0_1;
1391
+ try {
1392
+ deferred0_0 = arg0;
1393
+ deferred0_1 = arg1;
1394
+ console.error(getStringFromWasm0(arg0, arg1));
1395
+ } finally {
1396
+ wasm.__wbindgen_export4(deferred0_0, deferred0_1, 1);
232
1397
  }
233
- else {
234
- self.postMessage(message);
1398
+ };
1399
+ imports.wbg.__wbg_error_7bc7d576a6aaf855 = function(arg0) {
1400
+ console.error(getObject(arg0));
1401
+ };
1402
+ imports.wbg.__wbg_fromCodePoint_50facac709b76f67 = function() {
1403
+ return handleError(function(arg0) {
1404
+ const ret = String.fromCodePoint(arg0 >>> 0);
1405
+ return addHeapObject(ret);
1406
+ }, arguments);
1407
+ };
1408
+ imports.wbg.__wbg_getRandomValues_b8f5dbd5f3995a9e = function() {
1409
+ return handleError(function(arg0, arg1) {
1410
+ getObject(arg0).getRandomValues(getObject(arg1));
1411
+ }, arguments);
1412
+ };
1413
+ imports.wbg.__wbg_get_6b7bd52aca3f9671 = function(arg0, arg1) {
1414
+ const ret = getObject(arg0)[arg1 >>> 0];
1415
+ return addHeapObject(ret);
1416
+ };
1417
+ imports.wbg.__wbg_get_af9dab7e9603ea93 = function() {
1418
+ return handleError(function(arg0, arg1) {
1419
+ const ret = Reflect.get(getObject(arg0), getObject(arg1));
1420
+ return addHeapObject(ret);
1421
+ }, arguments);
1422
+ };
1423
+ imports.wbg.__wbg_get_with_ref_key_1dc361bd10053bfe = function(arg0, arg1) {
1424
+ const ret = getObject(arg0)[getObject(arg1)];
1425
+ return addHeapObject(ret);
1426
+ };
1427
+ imports.wbg.__wbg_info_ce6bcc489c22f6f0 = function(arg0) {
1428
+ console.info(getObject(arg0));
1429
+ };
1430
+ imports.wbg.__wbg_instanceof_ArrayBuffer_f3320d2419cd0355 = function(arg0) {
1431
+ let result;
1432
+ try {
1433
+ result = getObject(arg0) instanceof ArrayBuffer;
1434
+ } catch (_) {
1435
+ result = false;
235
1436
  }
1437
+ const ret = result;
1438
+ return ret;
1439
+ };
1440
+ imports.wbg.__wbg_instanceof_Uint8Array_da54ccc9d3e09434 = function(arg0) {
1441
+ let result;
1442
+ try {
1443
+ result = getObject(arg0) instanceof Uint8Array;
1444
+ } catch (_) {
1445
+ result = false;
1446
+ }
1447
+ const ret = result;
1448
+ return ret;
1449
+ };
1450
+ imports.wbg.__wbg_isArray_51fd9e6422c0a395 = function(arg0) {
1451
+ const ret = Array.isArray(getObject(arg0));
1452
+ return ret;
1453
+ };
1454
+ imports.wbg.__wbg_isSafeInteger_ae7d3f054d55fa16 = function(arg0) {
1455
+ const ret = Number.isSafeInteger(getObject(arg0));
1456
+ return ret;
1457
+ };
1458
+ imports.wbg.__wbg_iterator_27b7c8b35ab3e86b = function() {
1459
+ const ret = Symbol.iterator;
1460
+ return addHeapObject(ret);
1461
+ };
1462
+ imports.wbg.__wbg_length_22ac23eaec9d8053 = function(arg0) {
1463
+ const ret = getObject(arg0).length;
1464
+ return ret;
1465
+ };
1466
+ imports.wbg.__wbg_length_d45040a40c570362 = function(arg0) {
1467
+ const ret = getObject(arg0).length;
1468
+ return ret;
1469
+ };
1470
+ imports.wbg.__wbg_log_1d990106d99dacb7 = function(arg0) {
1471
+ console.log(getObject(arg0));
1472
+ };
1473
+ imports.wbg.__wbg_msCrypto_a61aeb35a24c1329 = function(arg0) {
1474
+ const ret = getObject(arg0).msCrypto;
1475
+ return addHeapObject(ret);
1476
+ };
1477
+ imports.wbg.__wbg_new_1ba21ce319a06297 = function() {
1478
+ const ret = new Object();
1479
+ return addHeapObject(ret);
1480
+ };
1481
+ imports.wbg.__wbg_new_25f239778d6112b9 = function() {
1482
+ const ret = new Array();
1483
+ return addHeapObject(ret);
1484
+ };
1485
+ imports.wbg.__wbg_new_4fe05c96062a8385 = function() {
1486
+ return handleError(function() {
1487
+ const ret = new XMLHttpRequest();
1488
+ return addHeapObject(ret);
1489
+ }, arguments);
1490
+ };
1491
+ imports.wbg.__wbg_new_6421f6084cc5bc5a = function(arg0) {
1492
+ const ret = new Uint8Array(getObject(arg0));
1493
+ return addHeapObject(ret);
1494
+ };
1495
+ imports.wbg.__wbg_new_8a6f238a6ece86ea = function() {
1496
+ const ret = new Error();
1497
+ return addHeapObject(ret);
1498
+ };
1499
+ imports.wbg.__wbg_new_b546ae120718850e = function() {
1500
+ const ret = /* @__PURE__ */ new Map();
1501
+ return addHeapObject(ret);
1502
+ };
1503
+ imports.wbg.__wbg_new_no_args_cb138f77cf6151ee = function(arg0, arg1) {
1504
+ const ret = new Function(getStringFromWasm0(arg0, arg1));
1505
+ return addHeapObject(ret);
1506
+ };
1507
+ imports.wbg.__wbg_new_with_length_aa5eaf41d35235e5 = function(arg0) {
1508
+ const ret = new Uint8Array(arg0 >>> 0);
1509
+ return addHeapObject(ret);
1510
+ };
1511
+ imports.wbg.__wbg_next_138a17bbf04e926c = function(arg0) {
1512
+ const ret = getObject(arg0).next;
1513
+ return addHeapObject(ret);
1514
+ };
1515
+ imports.wbg.__wbg_next_3cfe5c0fe2a4cc53 = function() {
1516
+ return handleError(function(arg0) {
1517
+ const ret = getObject(arg0).next();
1518
+ return addHeapObject(ret);
1519
+ }, arguments);
1520
+ };
1521
+ imports.wbg.__wbg_node_905d3e251edff8a2 = function(arg0) {
1522
+ const ret = getObject(arg0).node;
1523
+ return addHeapObject(ret);
1524
+ };
1525
+ imports.wbg.__wbg_now_69d776cd24f5215b = function() {
1526
+ const ret = Date.now();
1527
+ return ret;
1528
+ };
1529
+ imports.wbg.__wbg_open_bfb661c1c2740586 = function() {
1530
+ return handleError(function(arg0, arg1, arg2, arg3, arg4, arg5) {
1531
+ getObject(arg0).open(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4), arg5 !== 0);
1532
+ }, arguments);
1533
+ };
1534
+ imports.wbg.__wbg_process_dc0fbacc7c1c06f7 = function(arg0) {
1535
+ const ret = getObject(arg0).process;
1536
+ return addHeapObject(ret);
1537
+ };
1538
+ imports.wbg.__wbg_prototypesetcall_dfe9b766cdc1f1fd = function(arg0, arg1, arg2) {
1539
+ Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2));
1540
+ };
1541
+ imports.wbg.__wbg_randomFillSync_ac0988aba3254290 = function() {
1542
+ return handleError(function(arg0, arg1) {
1543
+ getObject(arg0).randomFillSync(takeObject(arg1));
1544
+ }, arguments);
1545
+ };
1546
+ imports.wbg.__wbg_require_60cc747a6bc5215a = function() {
1547
+ return handleError(function() {
1548
+ const ret = module.require;
1549
+ return addHeapObject(ret);
1550
+ }, arguments);
1551
+ };
1552
+ imports.wbg.__wbg_responseText_7a33f62863958740 = function() {
1553
+ return handleError(function(arg0, arg1) {
1554
+ const ret = getObject(arg1).responseText;
1555
+ var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1556
+ var len1 = WASM_VECTOR_LEN;
1557
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
1558
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
1559
+ }, arguments);
1560
+ };
1561
+ imports.wbg.__wbg_response_19d1d96c8fc76878 = function() {
1562
+ return handleError(function(arg0) {
1563
+ const ret = getObject(arg0).response;
1564
+ return addHeapObject(ret);
1565
+ }, arguments);
1566
+ };
1567
+ imports.wbg.__wbg_send_3accfe4b9b207011 = function() {
1568
+ return handleError(function(arg0) {
1569
+ getObject(arg0).send();
1570
+ }, arguments);
1571
+ };
1572
+ imports.wbg.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) {
1573
+ getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
1574
+ };
1575
+ imports.wbg.__wbg_set_7df433eea03a5c14 = function(arg0, arg1, arg2) {
1576
+ getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
1577
+ };
1578
+ imports.wbg.__wbg_set_efaaf145b9377369 = function(arg0, arg1, arg2) {
1579
+ const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));
1580
+ return addHeapObject(ret);
1581
+ };
1582
+ imports.wbg.__wbg_set_responseType_df7a5fa93f0dd4be = function(arg0, arg1) {
1583
+ getObject(arg0).responseType = __wbindgen_enum_XmlHttpRequestResponseType[arg1];
1584
+ };
1585
+ imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) {
1586
+ const ret = getObject(arg1).stack;
1587
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1588
+ const len1 = WASM_VECTOR_LEN;
1589
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
1590
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
1591
+ };
1592
+ imports.wbg.__wbg_static_accessor_GLOBAL_769e6b65d6557335 = function() {
1593
+ const ret = typeof global === "undefined" ? null : global;
1594
+ return isLikeNone(ret) ? 0 : addHeapObject(ret);
1595
+ };
1596
+ imports.wbg.__wbg_static_accessor_GLOBAL_THIS_60cf02db4de8e1c1 = function() {
1597
+ const ret = typeof globalThis === "undefined" ? null : globalThis;
1598
+ return isLikeNone(ret) ? 0 : addHeapObject(ret);
1599
+ };
1600
+ imports.wbg.__wbg_static_accessor_SELF_08f5a74c69739274 = function() {
1601
+ const ret = typeof self === "undefined" ? null : self;
1602
+ return isLikeNone(ret) ? 0 : addHeapObject(ret);
1603
+ };
1604
+ imports.wbg.__wbg_static_accessor_WINDOW_a8924b26aa92d024 = function() {
1605
+ const ret = typeof window === "undefined" ? null : window;
1606
+ return isLikeNone(ret) ? 0 : addHeapObject(ret);
1607
+ };
1608
+ imports.wbg.__wbg_status_c547ab1614ba835e = function() {
1609
+ return handleError(function(arg0) {
1610
+ const ret = getObject(arg0).status;
1611
+ return ret;
1612
+ }, arguments);
1613
+ };
1614
+ imports.wbg.__wbg_subarray_845f2f5bce7d061a = function(arg0, arg1, arg2) {
1615
+ const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
1616
+ return addHeapObject(ret);
1617
+ };
1618
+ imports.wbg.__wbg_value_57b7b035e117f7ee = function(arg0) {
1619
+ const ret = getObject(arg0).value;
1620
+ return addHeapObject(ret);
1621
+ };
1622
+ imports.wbg.__wbg_versions_c01dfd4722a88165 = function(arg0) {
1623
+ const ret = getObject(arg0).versions;
1624
+ return addHeapObject(ret);
1625
+ };
1626
+ imports.wbg.__wbg_warn_6e567d0d926ff881 = function(arg0) {
1627
+ console.warn(getObject(arg0));
1628
+ };
1629
+ imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {
1630
+ const ret = getStringFromWasm0(arg0, arg1);
1631
+ return addHeapObject(ret);
1632
+ };
1633
+ imports.wbg.__wbindgen_cast_4625c577ab2ec9ee = function(arg0) {
1634
+ const ret = BigInt.asUintN(64, arg0);
1635
+ return addHeapObject(ret);
1636
+ };
1637
+ imports.wbg.__wbindgen_cast_9ae0607507abb057 = function(arg0) {
1638
+ const ret = arg0;
1639
+ return addHeapObject(ret);
1640
+ };
1641
+ imports.wbg.__wbindgen_cast_cb9088102bce6b30 = function(arg0, arg1) {
1642
+ const ret = getArrayU8FromWasm0(arg0, arg1);
1643
+ return addHeapObject(ret);
1644
+ };
1645
+ imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) {
1646
+ const ret = arg0;
1647
+ return addHeapObject(ret);
1648
+ };
1649
+ imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
1650
+ const ret = getObject(arg0);
1651
+ return addHeapObject(ret);
1652
+ };
1653
+ imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
1654
+ takeObject(arg0);
1655
+ };
1656
+ return imports;
1657
+ }
1658
+ function __wbg_finalize_init(instance, module2) {
1659
+ wasm = instance.exports;
1660
+ __wbg_init.__wbindgen_wasm_module = module2;
1661
+ cachedDataViewMemory0 = null;
1662
+ cachedUint8ArrayMemory0 = null;
1663
+ return wasm;
1664
+ }
1665
+ async function __wbg_init(module_or_path) {
1666
+ if (wasm !== void 0) return wasm;
1667
+ if (typeof module_or_path !== "undefined") {
1668
+ if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
1669
+ ({ module_or_path } = module_or_path);
1670
+ } else {
1671
+ console.warn("using deprecated parameters for the initialization function; pass a single object instead");
1672
+ }
1673
+ }
1674
+ if (typeof module_or_path === "undefined") {
1675
+ module_or_path = new URL("udoc_bg.wasm", import.meta.url);
1676
+ }
1677
+ const imports = __wbg_get_imports();
1678
+ if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {
1679
+ module_or_path = fetch(module_or_path);
1680
+ }
1681
+ const { instance, module: module2 } = await __wbg_load(await module_or_path, imports);
1682
+ return __wbg_finalize_init(instance, module2);
1683
+ }
1684
+ var udoc_default = __wbg_init;
1685
+
1686
+ // dist/src/worker/worker.js
1687
+ var udoc = null;
1688
+ var currentRequestId;
1689
+ self.onmessage = async (event) => {
1690
+ const { _id, ...request } = event.data;
1691
+ currentRequestId = _id;
1692
+ try {
1693
+ switch (request.type) {
1694
+ case "init": {
1695
+ await udoc_default(request.wasmUrl);
1696
+ udoc = new UDoc();
1697
+ respond({ type: "init", success: true });
1698
+ break;
1699
+ }
1700
+ case "setLicense": {
1701
+ ensureInitialized();
1702
+ const result = udoc.set_license(request.license, request.domain);
1703
+ respond({ type: "setLicense", success: true, result });
1704
+ break;
1705
+ }
1706
+ case "getLicenseStatus": {
1707
+ ensureInitialized();
1708
+ const result = udoc.license_status();
1709
+ respond({ type: "getLicenseStatus", success: true, result });
1710
+ break;
1711
+ }
1712
+ case "loadPdf": {
1713
+ ensureInitialized();
1714
+ const documentId = udoc.load_pdf(request.bytes);
1715
+ respond({ type: "loadPdf", success: true, documentId });
1716
+ break;
1717
+ }
1718
+ case "loadImage": {
1719
+ ensureInitialized();
1720
+ const documentId = udoc.load_image(request.bytes);
1721
+ respond({ type: "loadImage", success: true, documentId });
1722
+ break;
1723
+ }
1724
+ case "loadPptx": {
1725
+ ensureInitialized();
1726
+ const documentId = udoc.load_pptx(request.bytes);
1727
+ respond({ type: "loadPptx", success: true, documentId });
1728
+ break;
1729
+ }
1730
+ case "unloadPdf": {
1731
+ ensureInitialized();
1732
+ const removed = udoc.remove_document(request.documentId);
1733
+ respond({ type: "unloadPdf", success: true, removed });
1734
+ break;
1735
+ }
1736
+ case "needsPassword": {
1737
+ ensureInitialized();
1738
+ const needsPassword = udoc.needs_password(request.documentId);
1739
+ respond({ type: "needsPassword", success: true, needsPassword });
1740
+ break;
1741
+ }
1742
+ case "authenticate": {
1743
+ ensureInitialized();
1744
+ const authenticated = udoc.authenticate(request.documentId, request.password);
1745
+ respond({ type: "authenticate", success: true, authenticated });
1746
+ break;
1747
+ }
1748
+ case "getPageCount": {
1749
+ ensureInitialized();
1750
+ const pageCount = udoc.page_count(request.documentId);
1751
+ respond({ type: "getPageCount", success: true, pageCount });
1752
+ break;
1753
+ }
1754
+ case "getPageInfo": {
1755
+ ensureInitialized();
1756
+ const info = udoc.page_info(request.documentId, request.pageIndex);
1757
+ respond({ type: "getPageInfo", success: true, width: info.width, height: info.height, rotation: info.rotation });
1758
+ break;
1759
+ }
1760
+ case "getAllPageInfo": {
1761
+ ensureInitialized();
1762
+ const pages = udoc.all_page_info(request.documentId);
1763
+ respond({ type: "getAllPageInfo", success: true, pages });
1764
+ break;
1765
+ }
1766
+ case "getPageLayout": {
1767
+ ensureInitialized();
1768
+ const layout = udoc.page_layout(request.documentId);
1769
+ respond({ type: "getPageLayout", success: true, layout });
1770
+ break;
1771
+ }
1772
+ case "renderPage": {
1773
+ ensureInitialized();
1774
+ const rgba = udoc.render_page_to_rgba(request.documentId, request.pageIndex, request.width, request.height);
1775
+ respond({ type: "renderPage", success: true, rgba, width: request.width, height: request.height }, [rgba.buffer]);
1776
+ break;
1777
+ }
1778
+ case "getOutline": {
1779
+ ensureInitialized();
1780
+ const outline = udoc.get_outline(request.documentId);
1781
+ respond({ type: "getOutline", success: true, outline });
1782
+ break;
1783
+ }
1784
+ case "getPageAnnotations": {
1785
+ ensureInitialized();
1786
+ const annotations = udoc.get_page_annotations(request.documentId, request.pageIndex);
1787
+ respond({ type: "getPageAnnotations", success: true, annotations });
1788
+ break;
1789
+ }
1790
+ case "getPageText": {
1791
+ ensureInitialized();
1792
+ const text = udoc.get_page_text(request.documentId, request.pageIndex);
1793
+ respond({ type: "getPageText", success: true, text });
1794
+ break;
1795
+ }
1796
+ case "getAllAnnotations": {
1797
+ ensureInitialized();
1798
+ const annotations = udoc.get_all_annotations(request.documentId);
1799
+ respond({ type: "getAllAnnotations", success: true, annotations });
1800
+ break;
1801
+ }
1802
+ case "pdfCompose": {
1803
+ ensureInitialized();
1804
+ const documentIds = udoc.pdf_compose(request.compositions, request.docIds);
1805
+ respond({ type: "pdfCompose", success: true, documentIds });
1806
+ break;
1807
+ }
1808
+ case "getBytes": {
1809
+ ensureInitialized();
1810
+ const bytes = udoc.get_bytes(request.documentId);
1811
+ respond({ type: "getBytes", success: true, bytes }, [bytes.buffer]);
1812
+ break;
1813
+ }
1814
+ case "pdfSplitByOutline": {
1815
+ ensureInitialized();
1816
+ const result = udoc.pdf_split_by_outline(request.documentId, request.maxLevel, request.splitMidPage);
1817
+ respond({ type: "pdfSplitByOutline", success: true, result });
1818
+ break;
1819
+ }
1820
+ case "pdfExtractImages": {
1821
+ ensureInitialized();
1822
+ const rawImages = udoc.pdf_extract_images(request.documentId, request.convertRawToPng);
1823
+ const images = rawImages.map((img) => ({
1824
+ ...img,
1825
+ data: new Uint8Array(img.data)
1826
+ }));
1827
+ const transfers = images.map((img) => img.data.buffer);
1828
+ respond({ type: "pdfExtractImages", success: true, images }, transfers);
1829
+ break;
1830
+ }
1831
+ case "pdfExtractFonts": {
1832
+ ensureInitialized();
1833
+ const rawFonts = udoc.pdf_extract_fonts(request.documentId);
1834
+ const fonts = rawFonts.map((font) => ({
1835
+ ...font,
1836
+ data: new Uint8Array(font.data)
1837
+ }));
1838
+ const transfers = fonts.map((font) => font.data.buffer);
1839
+ respond({ type: "pdfExtractFonts", success: true, fonts }, transfers);
1840
+ break;
1841
+ }
1842
+ case "pdfCompress": {
1843
+ ensureInitialized();
1844
+ const compressedBytes = udoc.pdf_compress(request.documentId);
1845
+ respond({ type: "pdfCompress", success: true, bytes: compressedBytes }, [compressedBytes.buffer]);
1846
+ break;
1847
+ }
1848
+ case "pdfDecompress": {
1849
+ ensureInitialized();
1850
+ const decompressedBytes = udoc.pdf_decompress(request.documentId);
1851
+ respond({ type: "pdfDecompress", success: true, bytes: decompressedBytes }, [decompressedBytes.buffer]);
1852
+ break;
1853
+ }
1854
+ case "getRequiredFonts": {
1855
+ ensureInitialized();
1856
+ const fonts = udoc.getRequiredFonts(request.documentId);
1857
+ respond({ type: "getRequiredFonts", success: true, fonts });
1858
+ break;
1859
+ }
1860
+ case "registerFont": {
1861
+ ensureInitialized();
1862
+ udoc.registerFont(request.documentId, request.typeface, request.bold, request.italic, request.bytes);
1863
+ respond({ type: "registerFont", success: true });
1864
+ break;
1865
+ }
1866
+ case "hasRegisteredFont": {
1867
+ ensureInitialized();
1868
+ const hasFont = udoc.hasRegisteredFont(request.documentId, request.typeface, request.bold, request.italic);
1869
+ respond({ type: "hasRegisteredFont", success: true, hasFont });
1870
+ break;
1871
+ }
1872
+ case "registeredFontCount": {
1873
+ ensureInitialized();
1874
+ const count = udoc.registeredFontCount(request.documentId);
1875
+ respond({ type: "registeredFontCount", success: true, count });
1876
+ break;
1877
+ }
1878
+ case "enableGoogleFonts": {
1879
+ ensureInitialized();
1880
+ udoc.enableGoogleFonts(request.documentId);
1881
+ respond({ type: "enableGoogleFonts", success: true });
1882
+ break;
1883
+ }
1884
+ default: {
1885
+ const _exhaustive = request;
1886
+ throw new Error(`Unknown request type: ${request.type}`);
1887
+ }
1888
+ }
1889
+ } catch (error) {
1890
+ const errorMessage = error instanceof Error ? error.message : String(error);
1891
+ respond({ type: request.type, success: false, error: errorMessage });
1892
+ }
1893
+ };
1894
+ function ensureInitialized() {
1895
+ if (!udoc) {
1896
+ throw new Error("Worker not initialized. Call init first.");
1897
+ }
1898
+ }
1899
+ function respond(response, transfer) {
1900
+ const message = currentRequestId !== void 0 ? { ...response, _id: currentRequestId } : response;
1901
+ if (transfer) {
1902
+ self.postMessage(message, transfer);
1903
+ } else {
1904
+ self.postMessage(message);
1905
+ }
236
1906
  }
237
- //# sourceMappingURL=worker.js.map