@docmentis/udoc-viewer 0.6.21 → 0.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/UDocClient.d.ts +22 -0
  3. package/dist/src/UDocClient.d.ts.map +1 -1
  4. package/dist/src/UDocClient.js +25 -1
  5. package/dist/src/UDocClient.js.map +1 -1
  6. package/dist/src/UDocViewer.d.ts +4 -3
  7. package/dist/src/UDocViewer.d.ts.map +1 -1
  8. package/dist/src/UDocViewer.js +50 -3
  9. package/dist/src/UDocViewer.js.map +1 -1
  10. package/dist/src/ui/viewer/actions.d.ts +34 -3
  11. package/dist/src/ui/viewer/actions.d.ts.map +1 -1
  12. package/dist/src/ui/viewer/annotation/ShapeRenderer.d.ts.map +1 -1
  13. package/dist/src/ui/viewer/annotation/ShapeRenderer.js +23 -16
  14. package/dist/src/ui/viewer/annotation/ShapeRenderer.js.map +1 -1
  15. package/dist/src/ui/viewer/annotation/index.d.ts +1 -1
  16. package/dist/src/ui/viewer/annotation/index.d.ts.map +1 -1
  17. package/dist/src/ui/viewer/annotation/index.js +1 -1
  18. package/dist/src/ui/viewer/annotation/index.js.map +1 -1
  19. package/dist/src/ui/viewer/annotation/render.d.ts.map +1 -1
  20. package/dist/src/ui/viewer/annotation/render.js +11 -4
  21. package/dist/src/ui/viewer/annotation/render.js.map +1 -1
  22. package/dist/src/ui/viewer/annotation/types.d.ts +9 -1
  23. package/dist/src/ui/viewer/annotation/types.d.ts.map +1 -1
  24. package/dist/src/ui/viewer/annotation/utils.d.ts +10 -1
  25. package/dist/src/ui/viewer/annotation/utils.d.ts.map +1 -1
  26. package/dist/src/ui/viewer/annotation/utils.js +114 -0
  27. package/dist/src/ui/viewer/annotation/utils.js.map +1 -1
  28. package/dist/src/ui/viewer/components/ColorSelect.d.ts +26 -0
  29. package/dist/src/ui/viewer/components/ColorSelect.d.ts.map +1 -0
  30. package/dist/src/ui/viewer/components/ColorSelect.js +120 -0
  31. package/dist/src/ui/viewer/components/ColorSelect.js.map +1 -0
  32. package/dist/src/ui/viewer/components/FloatingToolbar.js +12 -12
  33. package/dist/src/ui/viewer/components/FloatingToolbar.js.map +1 -1
  34. package/dist/src/ui/viewer/components/NumberInput.d.ts +32 -0
  35. package/dist/src/ui/viewer/components/NumberInput.d.ts.map +1 -0
  36. package/dist/src/ui/viewer/components/NumberInput.js +101 -0
  37. package/dist/src/ui/viewer/components/NumberInput.js.map +1 -0
  38. package/dist/src/ui/viewer/components/Spread.d.ts +2 -2
  39. package/dist/src/ui/viewer/components/Spread.d.ts.map +1 -1
  40. package/dist/src/ui/viewer/components/Spread.js.map +1 -1
  41. package/dist/src/ui/viewer/components/SubToolbar.d.ts +10 -0
  42. package/dist/src/ui/viewer/components/SubToolbar.d.ts.map +1 -0
  43. package/dist/src/ui/viewer/components/SubToolbar.js +481 -0
  44. package/dist/src/ui/viewer/components/SubToolbar.js.map +1 -0
  45. package/dist/src/ui/viewer/components/Toolbar.d.ts.map +1 -1
  46. package/dist/src/ui/viewer/components/Toolbar.js +147 -4
  47. package/dist/src/ui/viewer/components/Toolbar.js.map +1 -1
  48. package/dist/src/ui/viewer/components/ViewModeMenu.js +3 -3
  49. package/dist/src/ui/viewer/components/ViewModeMenu.js.map +1 -1
  50. package/dist/src/ui/viewer/components/Viewport.d.ts.map +1 -1
  51. package/dist/src/ui/viewer/components/Viewport.js +40 -2
  52. package/dist/src/ui/viewer/components/Viewport.js.map +1 -1
  53. package/dist/src/ui/viewer/i18n/ar.d.ts.map +1 -1
  54. package/dist/src/ui/viewer/i18n/ar.js +40 -0
  55. package/dist/src/ui/viewer/i18n/ar.js.map +1 -1
  56. package/dist/src/ui/viewer/i18n/de.d.ts.map +1 -1
  57. package/dist/src/ui/viewer/i18n/de.js +40 -0
  58. package/dist/src/ui/viewer/i18n/de.js.map +1 -1
  59. package/dist/src/ui/viewer/i18n/en.d.ts.map +1 -1
  60. package/dist/src/ui/viewer/i18n/en.js +40 -0
  61. package/dist/src/ui/viewer/i18n/en.js.map +1 -1
  62. package/dist/src/ui/viewer/i18n/es.d.ts.map +1 -1
  63. package/dist/src/ui/viewer/i18n/es.js +40 -0
  64. package/dist/src/ui/viewer/i18n/es.js.map +1 -1
  65. package/dist/src/ui/viewer/i18n/fr.d.ts.map +1 -1
  66. package/dist/src/ui/viewer/i18n/fr.js +40 -0
  67. package/dist/src/ui/viewer/i18n/fr.js.map +1 -1
  68. package/dist/src/ui/viewer/i18n/ja.d.ts.map +1 -1
  69. package/dist/src/ui/viewer/i18n/ja.js +40 -0
  70. package/dist/src/ui/viewer/i18n/ja.js.map +1 -1
  71. package/dist/src/ui/viewer/i18n/ko.d.ts.map +1 -1
  72. package/dist/src/ui/viewer/i18n/ko.js +40 -0
  73. package/dist/src/ui/viewer/i18n/ko.js.map +1 -1
  74. package/dist/src/ui/viewer/i18n/pt-BR.d.ts.map +1 -1
  75. package/dist/src/ui/viewer/i18n/pt-BR.js +40 -0
  76. package/dist/src/ui/viewer/i18n/pt-BR.js.map +1 -1
  77. package/dist/src/ui/viewer/i18n/ru.d.ts.map +1 -1
  78. package/dist/src/ui/viewer/i18n/ru.js +40 -0
  79. package/dist/src/ui/viewer/i18n/ru.js.map +1 -1
  80. package/dist/src/ui/viewer/i18n/types.d.ts +35 -0
  81. package/dist/src/ui/viewer/i18n/types.d.ts.map +1 -1
  82. package/dist/src/ui/viewer/i18n/zh-CN.d.ts.map +1 -1
  83. package/dist/src/ui/viewer/i18n/zh-CN.js +40 -0
  84. package/dist/src/ui/viewer/i18n/zh-CN.js.map +1 -1
  85. package/dist/src/ui/viewer/i18n/zh-TW.d.ts.map +1 -1
  86. package/dist/src/ui/viewer/i18n/zh-TW.js +40 -0
  87. package/dist/src/ui/viewer/i18n/zh-TW.js.map +1 -1
  88. package/dist/src/ui/viewer/icons.d.ts +29 -0
  89. package/dist/src/ui/viewer/icons.d.ts.map +1 -1
  90. package/dist/src/ui/viewer/icons.js +42 -0
  91. package/dist/src/ui/viewer/icons.js.map +1 -1
  92. package/dist/src/ui/viewer/reducer.d.ts.map +1 -1
  93. package/dist/src/ui/viewer/reducer.js +109 -1
  94. package/dist/src/ui/viewer/reducer.js.map +1 -1
  95. package/dist/src/ui/viewer/search/search.d.ts +4 -4
  96. package/dist/src/ui/viewer/search/search.d.ts.map +1 -1
  97. package/dist/src/ui/viewer/search/search.js +1 -1
  98. package/dist/src/ui/viewer/search/search.js.map +1 -1
  99. package/dist/src/ui/viewer/shell.d.ts +2 -2
  100. package/dist/src/ui/viewer/shell.d.ts.map +1 -1
  101. package/dist/src/ui/viewer/shell.js +13 -2
  102. package/dist/src/ui/viewer/shell.js.map +1 -1
  103. package/dist/src/ui/viewer/state.d.ts +55 -2
  104. package/dist/src/ui/viewer/state.d.ts.map +1 -1
  105. package/dist/src/ui/viewer/state.js +30 -0
  106. package/dist/src/ui/viewer/state.js.map +1 -1
  107. package/dist/src/ui/viewer/styles-inline.d.ts +1 -1
  108. package/dist/src/ui/viewer/styles-inline.d.ts.map +1 -1
  109. package/dist/src/ui/viewer/styles-inline.js +875 -246
  110. package/dist/src/ui/viewer/styles-inline.js.map +1 -1
  111. package/dist/src/ui/viewer/text/render.d.ts +3 -3
  112. package/dist/src/ui/viewer/text/render.d.ts.map +1 -1
  113. package/dist/src/ui/viewer/text/render.js +2 -2
  114. package/dist/src/ui/viewer/text/render.js.map +1 -1
  115. package/dist/src/ui/viewer/tools/AnnotationDrawController.d.ts +21 -0
  116. package/dist/src/ui/viewer/tools/AnnotationDrawController.d.ts.map +1 -0
  117. package/dist/src/ui/viewer/tools/AnnotationDrawController.js +392 -0
  118. package/dist/src/ui/viewer/tools/AnnotationDrawController.js.map +1 -0
  119. package/dist/src/ui/viewer/tools/AnnotationSelectController.d.ts +22 -0
  120. package/dist/src/ui/viewer/tools/AnnotationSelectController.d.ts.map +1 -0
  121. package/dist/src/ui/viewer/tools/AnnotationSelectController.js +367 -0
  122. package/dist/src/ui/viewer/tools/AnnotationSelectController.js.map +1 -0
  123. package/dist/src/ui/viewer/tools/ViewToolController.d.ts +20 -0
  124. package/dist/src/ui/viewer/tools/ViewToolController.d.ts.map +1 -0
  125. package/dist/src/ui/viewer/tools/ViewToolController.js +194 -0
  126. package/dist/src/ui/viewer/tools/ViewToolController.js.map +1 -0
  127. package/dist/src/wasm/udoc.d.ts +399 -114
  128. package/dist/src/wasm/udoc.js +157 -81
  129. package/dist/src/wasm/udoc_bg.wasm +0 -0
  130. package/dist/src/wasm/udoc_bg.wasm.d.ts +8 -7
  131. package/dist/src/worker/WorkerClient.d.ts +17 -11
  132. package/dist/src/worker/WorkerClient.d.ts.map +1 -1
  133. package/dist/src/worker/WorkerClient.js +10 -2
  134. package/dist/src/worker/WorkerClient.js.map +1 -1
  135. package/dist/src/worker/index.d.ts +1 -1
  136. package/dist/src/worker/index.d.ts.map +1 -1
  137. package/dist/src/worker/worker-inline.js +1 -1
  138. package/dist/src/worker/worker.d.ts +26 -58
  139. package/dist/src/worker/worker.d.ts.map +1 -1
  140. package/dist/src/worker/worker.js +161 -80
  141. package/dist/src/worker/worker.js.map +1 -1
  142. package/package.json +1 -1
@@ -1,5 +1,113 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * Markup metadata for JavaScript serialization (author, subject, contents, state).
5
+ */
6
+ export interface JsMarkupMetadata {
7
+ author?: string;
8
+ subject?: string;
9
+ contents?: string;
10
+ /**
11
+ * Annotation state (e.g., \"Accepted\", \"Rejected\", \"Completed\", \"Marked\").
12
+ */
13
+ state?: string;
14
+ /**
15
+ * State model (e.g., \"Review\" or \"Marked\").
16
+ */
17
+ stateModel?: string;
18
+ creationDate?: string;
19
+ /**
20
+ * Reply type: \"reply\" or \"group\".
21
+ */
22
+ replyType?: string;
23
+ intent?: string;
24
+ richContents?: string;
25
+ }
26
+
27
+ /**
28
+ * Quadrilateral for JavaScript serialization (used in text markup annotations).
29
+ */
30
+ export interface JsQuad {
31
+ /**
32
+ * Four corner points: [bottom-left, bottom-right, top-right, top-left]
33
+ */
34
+ points: [JsPoint, JsPoint, JsPoint, JsPoint];
35
+ }
36
+
37
+ /**
38
+ * Rectangle for JavaScript serialization.
39
+ */
40
+ export interface JsRect {
41
+ x: number;
42
+ y: number;
43
+ width: number;
44
+ height: number;
45
+ }
46
+
47
+ /**
48
+ * RGB color for JavaScript serialization (values 0.0-1.0).
49
+ */
50
+ export interface JsColor {
51
+ r: number;
52
+ g: number;
53
+ b: number;
54
+ }
55
+
56
+ /**
57
+ * Annotation for JavaScript serialization.
58
+ */
59
+ export interface JsAnnotation extends JsAnnotationType {
60
+ /**
61
+ * Bounding rectangle in page coordinates.
62
+ */
63
+ bounds: JsRect;
64
+ /**
65
+ * Reply annotations nested under this annotation.
66
+ * These are comments/replies displayed in comment threads.
67
+ */
68
+ replies?: JsAnnotation[];
69
+ /**
70
+ * Metadata for markup annotations (author, subject, contents, state).
71
+ */
72
+ metadata?: JsMarkupMetadata;
73
+ /**
74
+ * Unique annotation name/identifier (NM field).
75
+ */
76
+ name?: string;
77
+ /**
78
+ * Last modification date (M field).
79
+ */
80
+ modificationDate?: string;
81
+ }
82
+
83
+ /**
84
+ * Rectangle differences for JavaScript serialization.
85
+ */
86
+ export interface JsRectDifferences {
87
+ left: number;
88
+ bottom: number;
89
+ right: number;
90
+ top: number;
91
+ }
92
+
93
+ /**
94
+ * Link action for JavaScript serialization.
95
+ */
96
+ export type JsLinkAction = { actionType: "goTo"; destination: JsDestination } | { actionType: "uri"; uri: string };
97
+
98
+ /**
99
+ * Annotation type for JavaScript serialization.
100
+ */
101
+ export type JsAnnotationType = { type: "link"; action: JsLinkAction } | { type: "highlight"; quads: JsQuad[]; color?: JsColor; opacity?: number } | { type: "underline"; quads: JsQuad[]; color?: JsColor; opacity?: number } | { type: "strikeOut"; quads: JsQuad[]; color?: JsColor; opacity?: number } | { type: "squiggly"; quads: JsQuad[]; color?: JsColor; opacity?: number } | { type: "text"; icon: string; open: boolean; color?: JsColor; opacity?: number } | { type: "freeText"; contents?: string; justification: string; defaultAppearance?: string; color?: JsColor; borderColor?: JsColor; calloutLine?: JsPoint[]; opacity?: number; defaultStyle?: string; lineEnding?: string; rectDifferences?: JsRectDifferences } | { type: "stamp"; name?: string; hasCustomAppearance: boolean; color?: JsColor; opacity?: number } | { type: "line"; start: JsPoint; end: JsPoint; startEnding: string; endEnding: string; color?: JsColor; interiorColor?: JsColor; borderWidth?: number; borderStyle: string; dashPattern?: number[]; opacity?: number; leaderLength?: number; leaderExtension?: number; leaderOffset?: number; caption?: boolean; captionPosition?: string; captionOffset?: [number, number] } | { type: "square"; color?: JsColor; interiorColor?: JsColor; borderWidth?: number; borderStyle: string; dashPattern?: number[]; opacity?: number; rectDifferences?: JsRectDifferences } | { type: "circle"; color?: JsColor; interiorColor?: JsColor; borderWidth?: number; borderStyle: string; dashPattern?: number[]; opacity?: number; rectDifferences?: JsRectDifferences } | { type: "polygon"; vertices: JsPoint[]; color?: JsColor; interiorColor?: JsColor; borderWidth?: number; borderStyle: string; dashPattern?: number[]; startEnding: string; endEnding: string; opacity?: number } | { type: "polyLine"; vertices: JsPoint[]; color?: JsColor; interiorColor?: JsColor; borderWidth?: number; borderStyle: string; dashPattern?: number[]; startEnding: string; endEnding: string; opacity?: number } | { type: "ink"; inkList: JsPoint[][]; color?: JsColor; borderWidth?: number; borderStyle: string; dashPattern?: number[]; opacity?: number } | { type: "caret"; symbol: string; color?: JsColor; opacity?: number; rectDifferences?: JsRectDifferences } | { type: "redact"; quads: JsQuad[]; interiorColor?: JsColor; overlayText?: string; justification: string; repeat: boolean; color?: JsColor; opacity?: number; defaultAppearance?: string };
102
+
103
+ /**
104
+ * Point for JavaScript serialization.
105
+ */
106
+ export interface JsPoint {
107
+ x: number;
108
+ y: number;
109
+ }
110
+
3
111
  export type JsViewerScrollMode = "spread" | "continuous";
4
112
 
5
113
  export interface JsViewerPreferences {
@@ -9,101 +117,197 @@ export interface JsViewerPreferences {
9
117
 
10
118
  export type JsViewerLayoutMode = "single-page" | "double-page-odd-right" | "double-page-odd-left";
11
119
 
120
+ export type JsEightDirection = "left" | "right" | "up" | "down" | "leftUp" | "rightUp" | "leftDown" | "rightDown";
121
+
122
+ export type JsInOutDirection = "in" | "out";
123
+
124
+ /**
125
+ * Font spec for JavaScript serialization.
126
+ */
127
+ export type JsFontSpec = { typeface: string; bold: boolean; italic: boolean } | { fontId: string };
128
+
129
+ /**
130
+ * Nested `Vec<Vec<T>>` can\'t cross the WASM boundary directly, so we use a
131
+ * transparent Tsify wrapper.
132
+ */
133
+ export type JsCompositions = JsPick[][];
134
+
135
+ /**
136
+ * Resolved font info for JavaScript serialization.
137
+ */
138
+ export interface JsResolvedFontInfo {
139
+ familyName: string;
140
+ postscriptName?: string;
141
+ source: JsFontSource;
142
+ bold: boolean;
143
+ italic: boolean;
144
+ }
145
+
146
+ /**
147
+ * Result from pdf_split_by_outline.
148
+ */
149
+ export interface JsSplitByOutlineResult {
150
+ documentIds: string[];
151
+ sections: JsOutlineSection[];
152
+ }
153
+
154
+ export type JsSideDirection = "left" | "right" | "up" | "down";
155
+
156
+ export type JsOrientation = "horizontal" | "vertical";
157
+
158
+ export type JsGlitterPattern = "diamond" | "hexagon";
159
+
160
+ /**
161
+ * Annotations grouped by page index (as string keys).
162
+ *
163
+ * Uses manual `IntoWasmAbi` to serialize maps as plain JS objects
164
+ * (not `Map`), matching the existing API shape: `{ \"0\": [...], \"3\": [...] }`.
165
+ */
166
+ export type JsAnnotationsByPage = Record<string, JsAnnotation[]>;
167
+
168
+ /**
169
+ * Font registration entry from JavaScript.
170
+ */
171
+ export interface JsFontRegistration {
172
+ typeface: string;
173
+ bold: boolean;
174
+ italic: boolean;
175
+ url: string;
176
+ }
177
+
178
+ export type JsMorphOption = "byObject" | "byWord" | "byChar";
179
+
180
+ /**
181
+ * A pick specification from JavaScript.
182
+ */
183
+ export interface JsPick {
184
+ /**
185
+ * Document index (0-based, referring to documents in doc_ids array)
186
+ */
187
+ doc: number;
188
+ /**
189
+ * Page range string (0-based, e.g., \"0-2,4\")
190
+ */
191
+ pages: string;
192
+ /**
193
+ * Optional rotation in degrees (0, 90, 180, or 270)
194
+ */
195
+ rotation: number | undefined;
196
+ }
197
+
198
+ /**
199
+ * Extracted image info for JavaScript.
200
+ */
201
+ export interface JsExtractedImage {
202
+ name: string;
203
+ format: string;
204
+ width: number | undefined;
205
+ height: number | undefined;
206
+ data: number[];
207
+ }
208
+
209
+ /**
210
+ * Font info returned by `parseFontInfo`.
211
+ */
212
+ export interface JsParsedFontInfo {
213
+ typeface: string;
214
+ bold: boolean;
215
+ italic: boolean;
216
+ }
217
+
218
+ /**
219
+ * Font usage entry for JavaScript serialization.
220
+ */
221
+ export interface JsFontUsageEntry {
222
+ spec: JsFontSpec;
223
+ resolved: JsResolvedFontInfo;
224
+ fallbacks: JsResolvedFontInfo[];
225
+ }
12
226
 
13
- export type Orientation = "horizontal" | "vertical";
14
- export type SideDirection = "left" | "right" | "up" | "down";
15
- export type CornerDirection = "leftUp" | "rightUp" | "leftDown" | "rightDown";
16
- export type EightDirection = SideDirection | CornerDirection;
17
- export type InOutDirection = "in" | "out";
18
- export type RippleDirection = "center" | CornerDirection;
19
- export type GlitterPattern = "diamond" | "hexagon";
20
- export type ShredPattern = "strip" | "rectangle";
21
- export type MorphOption = "byObject" | "byWord" | "byChar";
22
-
23
- export type TransitionEffect =
24
- // ECMA-376 base effects
25
- | { type: "blinds"; orientation: Orientation }
26
- | { type: "checker"; orientation: Orientation }
27
- | { type: "circle" }
28
- | { type: "dissolve" }
29
- | { type: "comb"; orientation: Orientation }
30
- | { type: "cover"; direction: EightDirection }
31
- | { type: "cut"; throughBlack: boolean }
32
- | { type: "diamond" }
33
- | { type: "fade"; throughBlack: boolean }
34
- | { type: "newsflash" }
35
- | { type: "plus" }
36
- | { type: "pull"; direction: EightDirection }
37
- | { type: "push"; direction: SideDirection }
38
- | { type: "random" }
39
- | { type: "randomBar"; orientation: Orientation }
40
- | { type: "split"; orientation: Orientation; inOut: InOutDirection }
41
- | { type: "strips"; direction: CornerDirection }
42
- | { type: "wedge" }
43
- | { type: "wheel"; spokes: number }
44
- | { type: "wipe"; direction: SideDirection }
45
- | { type: "zoom"; inOut: InOutDirection }
46
- // PDF-only effects
47
- | { type: "box"; inOut: InOutDirection }
48
- | { type: "glitter"; direction: SideDirection; pattern: GlitterPattern }
49
- | { type: "fly"; direction: SideDirection }
50
- | { type: "uncover"; direction: EightDirection }
51
- | { type: "replace" }
52
- // PPTX 2010+ effects (p14)
53
- | { type: "vortex"; direction: SideDirection }
54
- | { type: "switch"; direction: SideDirection }
55
- | { type: "flip"; direction: SideDirection }
56
- | { type: "ripple"; direction: RippleDirection }
57
- | { type: "honeycomb" }
58
- | { type: "prism"; direction: SideDirection; isContent: boolean; isInverted: boolean }
59
- | { type: "doors"; orientation: Orientation }
60
- | { type: "window"; orientation: Orientation }
61
- | { type: "ferris"; direction: SideDirection }
62
- | { type: "gallery"; direction: SideDirection }
63
- | { type: "conveyor"; direction: SideDirection }
64
- | { type: "pan"; direction: SideDirection }
65
- | { type: "warp"; inOut: InOutDirection }
66
- | { type: "flythrough"; inOut: InOutDirection; hasBounce: boolean }
67
- | { type: "flash" }
68
- | { type: "shred"; pattern: ShredPattern; inOut: InOutDirection }
69
- | { type: "reveal"; throughBlack: boolean; direction: SideDirection }
70
- | { type: "wheelReverse"; spokes: number }
71
- // PPTX 2015+ effects (p159)
72
- | { type: "morph"; option: MorphOption };
73
-
74
- export interface PageTransition {
75
- effect: TransitionEffect;
76
- durationMs?: number;
77
- advanceOnClick?: boolean;
78
- advanceAfterMs?: number;
79
- }
80
-
81
- export interface PageInfo {
82
- width: number;
83
- height: number;
84
- rotation: number;
85
- transition?: PageTransition;
86
- }
87
-
88
- export type FontSource = "embedded" | "standard" | "googleFonts" | "url" | "local" | { custom: string };
89
-
90
- export interface ResolvedFontInfo {
91
- familyName: string;
92
- postscriptName?: string;
93
- source: FontSource;
94
- bold: boolean;
95
- italic: boolean;
96
- }
97
-
98
- export interface FontUsageEntry {
99
- /** What the document requested (e.g. "Calibri", bold, italic) */
100
- spec: { typeface: string; bold: boolean; italic: boolean } | { fontId: string };
101
- /** Primary resolution result */
102
- resolved: ResolvedFontInfo;
103
- /** Additional fonts used via glyph fallback */
104
- fallbacks: ResolvedFontInfo[];
227
+ /**
228
+ * Outline section info for split_by_outline results.
229
+ */
230
+ export interface JsOutlineSection {
231
+ title: string;
232
+ index: number;
105
233
  }
106
234
 
235
+ /**
236
+ * Page transition info for serialization to JavaScript.
237
+ *
238
+ * The `effect` field is a discriminated union tagged by `type`, e.g.:
239
+ * `{ effect: { type: \"fade\", throughBlack: true }, durationMs: 500 }`
240
+ */
241
+ export interface JsPageTransition {
242
+ /**
243
+ * The visual transition effect (discriminated union tagged by `type`).
244
+ */
245
+ effect: JsTransitionEffect;
246
+ /**
247
+ * Duration of the transition animation in milliseconds.
248
+ */
249
+ durationMs?: number;
250
+ /**
251
+ * Whether clicking advances to the next page.
252
+ */
253
+ advanceOnClick?: boolean;
254
+ /**
255
+ * Auto-advance after this many milliseconds.
256
+ */
257
+ advanceAfterMs?: number;
258
+ }
259
+
260
+ export type JsRippleDirection = "center" | "leftUp" | "rightUp" | "leftDown" | "rightDown";
261
+
262
+ /**
263
+ * Extracted font info for JavaScript.
264
+ */
265
+ export interface JsExtractedFont {
266
+ name: string;
267
+ fontType: string;
268
+ extension: string;
269
+ data: number[];
270
+ }
271
+
272
+ /**
273
+ * Transition effect as a discriminated union (tagged by `type`).
274
+ */
275
+ export type JsTransitionEffect = { type: "blinds"; orientation: JsOrientation } | { type: "checker"; orientation: JsOrientation } | { type: "circle" } | { type: "dissolve" } | { type: "comb"; orientation: JsOrientation } | { type: "cover"; direction: JsEightDirection } | { type: "cut"; throughBlack: boolean } | { type: "diamond" } | { type: "fade"; throughBlack: boolean } | { type: "newsflash" } | { type: "plus" } | { type: "pull"; direction: JsEightDirection } | { type: "push"; direction: JsSideDirection } | { type: "random" } | { type: "randomBar"; orientation: JsOrientation } | { type: "split"; orientation: JsOrientation; inOut: JsInOutDirection } | { type: "strips"; direction: JsCornerDirection } | { type: "wedge" } | { type: "wheel"; spokes: number } | { type: "wipe"; direction: JsSideDirection } | { type: "zoom"; inOut: JsInOutDirection } | { type: "box"; inOut: JsInOutDirection } | { type: "glitter"; direction: JsSideDirection; pattern: JsGlitterPattern } | { type: "fly"; direction: JsSideDirection } | { type: "uncover"; direction: JsEightDirection } | { type: "replace" } | { type: "vortex"; direction: JsSideDirection } | { type: "switch"; direction: JsSideDirection } | { type: "flip"; direction: JsSideDirection } | { type: "ripple"; direction: JsRippleDirection } | { type: "honeycomb" } | { type: "prism"; direction: JsSideDirection; isContent: boolean; isInverted: boolean } | { type: "doors"; orientation: JsOrientation } | { type: "window"; orientation: JsOrientation } | { type: "ferris"; direction: JsSideDirection } | { type: "gallery"; direction: JsSideDirection } | { type: "conveyor"; direction: JsSideDirection } | { type: "pan"; direction: JsSideDirection } | { type: "warp"; inOut: JsInOutDirection } | { type: "flythrough"; inOut: JsInOutDirection; hasBounce: boolean } | { type: "flash" } | { type: "shred"; pattern: JsShredPattern; inOut: JsInOutDirection } | { type: "reveal"; throughBlack: boolean; direction: JsSideDirection } | { type: "wheelReverse"; spokes: number } | { type: "morph"; option: JsMorphOption };
276
+
277
+ export type JsShredPattern = "strip" | "rectangle";
278
+
279
+ /**
280
+ * Font source for JavaScript serialization.
281
+ */
282
+ export type JsFontSource = "embedded" | "standard" | "googleFonts" | "url" | "local" | { custom: string };
283
+
284
+ /**
285
+ * Visibility group info for serialization to JavaScript.
286
+ */
287
+ export interface JsVisibilityGroup {
288
+ id: string;
289
+ name: string;
290
+ visible: boolean;
291
+ locked: boolean;
292
+ }
293
+
294
+ export type JsCornerDirection = "leftUp" | "rightUp" | "leftDown" | "rightDown";
295
+
296
+ /**
297
+ * Page info for serialization to JavaScript.
298
+ */
299
+ export interface JsPageInfo {
300
+ width: number;
301
+ height: number;
302
+ /**
303
+ * Rotation in degrees (0, 90, 180, or 270)
304
+ */
305
+ rotation: number;
306
+ /**
307
+ * Transition effect metadata (None when no transition is defined).
308
+ */
309
+ transition?: JsPageTransition;
310
+ }
107
311
 
108
312
  export interface JsLayoutTableCell {
109
313
  colIndex: number;
@@ -232,6 +436,62 @@ export interface JsTransform {
232
436
 
233
437
  export type JsLayoutLineContent = ({ type: "runList" } & JsLayoutRunList) | ({ type: "table" } & JsLayoutTable);
234
438
 
439
+ /**
440
+ * Result returned to JavaScript after license validation.
441
+ */
442
+ export interface LicenseResult {
443
+ /**
444
+ * Whether the license is valid.
445
+ */
446
+ valid: boolean;
447
+ /**
448
+ * Error message if validation failed.
449
+ */
450
+ error?: string;
451
+ /**
452
+ * Enabled features.
453
+ */
454
+ features: string[];
455
+ /**
456
+ * Numeric limits.
457
+ */
458
+ limits: Record<string, number>;
459
+ /**
460
+ * Organization name.
461
+ */
462
+ organization?: string;
463
+ /**
464
+ * Expiry timestamp (Unix seconds), if set.
465
+ */
466
+ expiresAt?: number;
467
+ }
468
+
469
+ /**
470
+ * Destination display parameters for JavaScript serialization.
471
+ */
472
+ export type JsDestinationDisplay = { type: "xyz"; left: number | undefined; top: number | undefined; zoom: number | undefined } | { type: "fit" } | { type: "fitH"; top: number | undefined } | { type: "fitV"; left: number | undefined } | { type: "fitR"; left: number; top: number; right: number; bottom: number } | { type: "fitB" } | { type: "fitBH"; top: number | undefined } | { type: "fitBV"; left: number | undefined };
473
+
474
+ /**
475
+ * Destination for JavaScript serialization.
476
+ */
477
+ export interface JsDestination {
478
+ pageIndex: number;
479
+ display: JsDestinationDisplay;
480
+ }
481
+
482
+ /**
483
+ * Outline item for JavaScript serialization.
484
+ */
485
+ export interface JsOutlineItem {
486
+ title: string;
487
+ destination?: JsDestination;
488
+ children: JsOutlineItem[];
489
+ /**
490
+ * Whether this item should be initially collapsed in the viewer.
491
+ */
492
+ initiallyCollapsed: boolean;
493
+ }
494
+
235
495
 
236
496
  export class Wasm {
237
497
  free(): void;
@@ -263,7 +523,7 @@ export class Wasm {
263
523
  *
264
524
  * Returns an empty array if the document has no outline.
265
525
  */
266
- get_outline(id: string): any;
526
+ get_outline(id: string): JsOutlineItem[];
267
527
  /**
268
528
  * Check if a feature is enabled by the current license.
269
529
  */
@@ -294,7 +554,7 @@ export class Wasm {
294
554
  * # Returns
295
555
  * Array of IDs for the newly created documents (one per composition).
296
556
  */
297
- pdf_compose(compositions: any, doc_ids: any): any;
557
+ pdf_compose(compositions: JsCompositions, doc_ids: string[]): string[];
298
558
  /**
299
559
  * Set the license key.
300
560
  *
@@ -304,7 +564,7 @@ export class Wasm {
304
564
  * # Returns
305
565
  * License validation result as JSON.
306
566
  */
307
- set_license(license_key: string): any;
567
+ set_license(license_key: string): LicenseResult;
308
568
  /**
309
569
  * Authenticate with a password to unlock an encrypted document.
310
570
  *
@@ -346,7 +606,7 @@ export class Wasm {
346
606
  * Returns an array of `PageInfo` objects, one per page.
347
607
  * More efficient than calling `page_info` for each page.
348
608
  */
349
- all_page_info(id: string): PageInfo[];
609
+ all_page_info(id: string): JsPageInfo[];
350
610
  /**
351
611
  * Get font usage information for a document.
352
612
  *
@@ -363,11 +623,11 @@ export class Wasm {
363
623
  * # Returns
364
624
  * `FontUsageEntry[]` — see TypeScript types for shape.
365
625
  */
366
- get_font_usage(id: string): any;
626
+ get_font_usage(id: string): JsFontUsageEntry[];
367
627
  /**
368
628
  * Get current license status.
369
629
  */
370
- license_status(): any;
630
+ license_status(): LicenseResult;
371
631
  /**
372
632
  * Check if a document requires a password to open.
373
633
  *
@@ -415,7 +675,7 @@ export class Wasm {
415
675
  * const pixels = udoc.renderPageToRgba(docId, 0, 800, 600);
416
676
  * ```
417
677
  */
418
- registerFonts(fonts: any): void;
678
+ registerFonts(fonts: JsFontRegistration[]): void;
419
679
  /**
420
680
  * Get the format of a loaded document.
421
681
  *
@@ -484,7 +744,7 @@ export class Wasm {
484
744
  * - `extension`: File extension (ttf, cff, t1, etc.)
485
745
  * - `data`: Raw font data as Uint8Array
486
746
  */
487
- pdf_extract_fonts(doc_id: string): any;
747
+ pdf_extract_fonts(doc_id: string): JsExtractedFont[];
488
748
  /**
489
749
  * Extract all embedded images from a PDF document.
490
750
  *
@@ -500,7 +760,7 @@ export class Wasm {
500
760
  * - `height`: Height in pixels
501
761
  * - `data`: Raw image data as Uint8Array
502
762
  */
503
- pdf_extract_images(doc_id: string, convert_raw_to_png: boolean): any;
763
+ pdf_extract_images(doc_id: string, convert_raw_to_png: boolean): JsExtractedImage[];
504
764
  /**
505
765
  * Render a page to PNG bytes.
506
766
  *
@@ -544,7 +804,7 @@ export class Wasm {
544
804
  *
545
805
  * Returns an object mapping page indices (as strings) to arrays of annotations.
546
806
  */
547
- get_all_annotations(id: string): any;
807
+ get_all_annotations(id: string): JsAnnotationsByPage;
548
808
  /**
549
809
  * Render a page to raw RGBA pixel data.
550
810
  *
@@ -567,7 +827,31 @@ export class Wasm {
567
827
  * Returns an array of annotation objects for the given page.
568
828
  * Uses per-page loading for efficiency (only loads the requested page).
569
829
  */
570
- get_page_annotations(id: string, page_index: number): any;
830
+ get_page_annotations(id: string, page_index: number): JsAnnotation[];
831
+ /**
832
+ * Save annotations back to a PDF document.
833
+ *
834
+ * Takes the current document and a set of annotations (grouped by page),
835
+ * writes them into the PDF's annotation structures, and returns the
836
+ * modified PDF bytes.
837
+ *
838
+ * # Arguments
839
+ * * `doc_id` - Document ID
840
+ * * `annotations_by_page` - Object mapping page indices (as strings) to
841
+ * arrays of annotation objects. Same schema as returned by
842
+ * `get_all_annotations`.
843
+ *
844
+ * # Returns
845
+ * The modified PDF file bytes with annotations saved.
846
+ *
847
+ * # Example (JavaScript)
848
+ * ```js
849
+ * const annotations = udoc.get_all_annotations(docId);
850
+ * // ... viewer edits annotations ...
851
+ * const pdfBytes = udoc.pdf_save_annotations(docId, annotations);
852
+ * ```
853
+ */
854
+ pdf_save_annotations(doc_id: string, annotations_by_page: JsAnnotationsByPage): Uint8Array;
571
855
  /**
572
856
  * Split a PDF document by its outline (bookmarks) structure.
573
857
  *
@@ -583,7 +867,7 @@ export class Wasm {
583
867
  * - `documentIds`: Array of IDs for the newly created documents
584
868
  * - `sections`: Array of section info objects with `title`, `startPage`, `level`
585
869
  */
586
- pdf_split_by_outline(doc_id: string, max_level: number, split_mid_page: boolean): any;
870
+ pdf_split_by_outline(doc_id: string, max_level: number, split_mid_page: boolean): JsSplitByOutlineResult;
587
871
  /**
588
872
  * Get all visibility groups for a document.
589
873
  *
@@ -594,7 +878,7 @@ export class Wasm {
594
878
  *
595
879
  * Returns an empty array for documents without visibility groups.
596
880
  */
597
- get_visibility_groups(id: string): any;
881
+ get_visibility_groups(id: string): JsVisibilityGroup[];
598
882
  /**
599
883
  * Set the visibility of a specific visibility group.
600
884
  *
@@ -697,7 +981,7 @@ export class Wasm {
697
981
  /**
698
982
  * Get info for a specific page.
699
983
  */
700
- page_info(id: string, page_index: number): PageInfo;
984
+ page_info(id: string, page_index: number): JsPageInfo;
701
985
  /**
702
986
  * Get the number of documents currently loaded.
703
987
  */
@@ -730,7 +1014,7 @@ export class Wasm {
730
1014
  * ]);
731
1015
  * ```
732
1016
  */
733
- export function parseFontInfo(data: Uint8Array): any;
1017
+ export function parseFontInfo(data: Uint8Array): JsParsedFontInfo;
734
1018
 
735
1019
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
736
1020
 
@@ -757,7 +1041,7 @@ export interface InitOutput {
757
1041
  readonly wasm_has_feature: (a: number, b: number, c: number) => number;
758
1042
  readonly wasm_has_gpu: (a: number) => number;
759
1043
  readonly wasm_init_gpu: (a: number) => number;
760
- readonly wasm_license_status: (a: number, b: number) => void;
1044
+ readonly wasm_license_status: (a: number) => number;
761
1045
  readonly wasm_load: (a: number, b: number, c: number, d: number) => void;
762
1046
  readonly wasm_load_docx: (a: number, b: number, c: number, d: number) => void;
763
1047
  readonly wasm_load_image: (a: number, b: number, c: number, d: number) => void;
@@ -768,24 +1052,25 @@ export interface InitOutput {
768
1052
  readonly wasm_new: (a: number, b: number, c: number, d: number) => number;
769
1053
  readonly wasm_page_count: (a: number, b: number, c: number, d: number) => void;
770
1054
  readonly wasm_page_info: (a: number, b: number, c: number, d: number, e: number) => void;
771
- readonly wasm_pdf_compose: (a: number, b: number, c: number, d: number) => void;
1055
+ readonly wasm_pdf_compose: (a: number, b: number, c: number, d: number, e: number) => void;
772
1056
  readonly wasm_pdf_compress: (a: number, b: number, c: number, d: number) => void;
773
1057
  readonly wasm_pdf_decompress: (a: number, b: number, c: number, d: number) => void;
774
1058
  readonly wasm_pdf_extract_fonts: (a: number, b: number, c: number, d: number) => void;
775
1059
  readonly wasm_pdf_extract_images: (a: number, b: number, c: number, d: number, e: number) => void;
1060
+ readonly wasm_pdf_save_annotations: (a: number, b: number, c: number, d: number, e: number) => void;
776
1061
  readonly wasm_pdf_split_by_outline: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
777
- readonly wasm_registerFonts: (a: number, b: number, c: number) => void;
1062
+ readonly wasm_registerFonts: (a: number, b: number, c: number, d: number) => void;
778
1063
  readonly wasm_remove_document: (a: number, b: number, c: number) => number;
779
1064
  readonly wasm_render_page_gpu: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
780
1065
  readonly wasm_render_page_to_png: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
781
1066
  readonly wasm_render_page_to_rgba: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
782
- readonly wasm_set_license: (a: number, b: number, c: number, d: number) => void;
1067
+ readonly wasm_set_license: (a: number, b: number, c: number) => number;
783
1068
  readonly wasm_set_visibility_group_visible: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
784
1069
  readonly wasm_setup_telemetry: (a: number, b: number, c: number) => void;
785
1070
  readonly wasm_viewer_preferences: (a: number, b: number, c: number, d: number) => void;
786
- readonly __wasm_bindgen_func_elem_2710: (a: number, b: number, c: number) => void;
787
- readonly __wasm_bindgen_func_elem_2694: (a: number, b: number) => void;
788
- readonly __wasm_bindgen_func_elem_20199: (a: number, b: number, c: number, d: number) => void;
1071
+ readonly __wasm_bindgen_func_elem_4165: (a: number, b: number, c: number) => void;
1072
+ readonly __wasm_bindgen_func_elem_4149: (a: number, b: number) => void;
1073
+ readonly __wasm_bindgen_func_elem_22334: (a: number, b: number, c: number, d: number) => void;
789
1074
  readonly __wbindgen_export: (a: number, b: number) => number;
790
1075
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
791
1076
  readonly __wbindgen_export3: (a: number) => void;