@docmentis/udoc-viewer 0.5.2 → 0.5.3

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 (211) hide show
  1. package/package.json +1 -1
  2. package/dist/package.json +0 -56
  3. package/dist/src/UDocClient.d.ts +0 -383
  4. package/dist/src/UDocClient.d.ts.map +0 -1
  5. package/dist/src/UDocClient.js +0 -428
  6. package/dist/src/UDocClient.js.map +0 -1
  7. package/dist/src/UDocViewer.d.ts +0 -271
  8. package/dist/src/UDocViewer.d.ts.map +0 -1
  9. package/dist/src/UDocViewer.js +0 -769
  10. package/dist/src/UDocViewer.js.map +0 -1
  11. package/dist/src/fonts.d.ts +0 -29
  12. package/dist/src/fonts.d.ts.map +0 -1
  13. package/dist/src/fonts.js +0 -30
  14. package/dist/src/fonts.js.map +0 -1
  15. package/dist/src/index.d.ts +0 -9
  16. package/dist/src/index.d.ts.map +0 -1
  17. package/dist/src/index.js +0 -8
  18. package/dist/src/index.js.map +0 -1
  19. package/dist/src/performance/PerformanceCounter.d.ts +0 -132
  20. package/dist/src/performance/PerformanceCounter.d.ts.map +0 -1
  21. package/dist/src/performance/PerformanceCounter.js +0 -129
  22. package/dist/src/performance/PerformanceCounter.js.map +0 -1
  23. package/dist/src/performance/index.d.ts +0 -2
  24. package/dist/src/performance/index.d.ts.map +0 -1
  25. package/dist/src/performance/index.js +0 -2
  26. package/dist/src/performance/index.js.map +0 -1
  27. package/dist/src/ui/framework/component.d.ts +0 -68
  28. package/dist/src/ui/framework/component.d.ts.map +0 -1
  29. package/dist/src/ui/framework/component.js +0 -87
  30. package/dist/src/ui/framework/component.js.map +0 -1
  31. package/dist/src/ui/framework/dom.d.ts +0 -19
  32. package/dist/src/ui/framework/dom.d.ts.map +0 -1
  33. package/dist/src/ui/framework/dom.js +0 -29
  34. package/dist/src/ui/framework/dom.js.map +0 -1
  35. package/dist/src/ui/framework/events.d.ts +0 -18
  36. package/dist/src/ui/framework/events.d.ts.map +0 -1
  37. package/dist/src/ui/framework/events.js +0 -23
  38. package/dist/src/ui/framework/events.js.map +0 -1
  39. package/dist/src/ui/framework/index.d.ts +0 -15
  40. package/dist/src/ui/framework/index.d.ts.map +0 -1
  41. package/dist/src/ui/framework/index.js +0 -15
  42. package/dist/src/ui/framework/index.js.map +0 -1
  43. package/dist/src/ui/framework/selectors.d.ts +0 -51
  44. package/dist/src/ui/framework/selectors.d.ts.map +0 -1
  45. package/dist/src/ui/framework/selectors.js +0 -30
  46. package/dist/src/ui/framework/selectors.js.map +0 -1
  47. package/dist/src/ui/framework/store.d.ts +0 -37
  48. package/dist/src/ui/framework/store.d.ts.map +0 -1
  49. package/dist/src/ui/framework/store.js +0 -54
  50. package/dist/src/ui/framework/store.js.map +0 -1
  51. package/dist/src/ui/viewer/actions.d.ts +0 -131
  52. package/dist/src/ui/viewer/actions.d.ts.map +0 -1
  53. package/dist/src/ui/viewer/actions.js +0 -2
  54. package/dist/src/ui/viewer/actions.js.map +0 -1
  55. package/dist/src/ui/viewer/annotation/LinkRenderer.d.ts +0 -9
  56. package/dist/src/ui/viewer/annotation/LinkRenderer.d.ts.map +0 -1
  57. package/dist/src/ui/viewer/annotation/LinkRenderer.js +0 -17
  58. package/dist/src/ui/viewer/annotation/LinkRenderer.js.map +0 -1
  59. package/dist/src/ui/viewer/annotation/MarkupRenderer.d.ts +0 -21
  60. package/dist/src/ui/viewer/annotation/MarkupRenderer.d.ts.map +0 -1
  61. package/dist/src/ui/viewer/annotation/MarkupRenderer.js +0 -138
  62. package/dist/src/ui/viewer/annotation/MarkupRenderer.js.map +0 -1
  63. package/dist/src/ui/viewer/annotation/ShapeRenderer.d.ts +0 -33
  64. package/dist/src/ui/viewer/annotation/ShapeRenderer.d.ts.map +0 -1
  65. package/dist/src/ui/viewer/annotation/ShapeRenderer.js +0 -378
  66. package/dist/src/ui/viewer/annotation/ShapeRenderer.js.map +0 -1
  67. package/dist/src/ui/viewer/annotation/TextRenderer.d.ts +0 -23
  68. package/dist/src/ui/viewer/annotation/TextRenderer.d.ts.map +0 -1
  69. package/dist/src/ui/viewer/annotation/TextRenderer.js +0 -196
  70. package/dist/src/ui/viewer/annotation/TextRenderer.js.map +0 -1
  71. package/dist/src/ui/viewer/annotation/index.d.ts +0 -8
  72. package/dist/src/ui/viewer/annotation/index.d.ts.map +0 -1
  73. package/dist/src/ui/viewer/annotation/index.js +0 -8
  74. package/dist/src/ui/viewer/annotation/index.js.map +0 -1
  75. package/dist/src/ui/viewer/annotation/render.d.ts +0 -24
  76. package/dist/src/ui/viewer/annotation/render.d.ts.map +0 -1
  77. package/dist/src/ui/viewer/annotation/render.js +0 -184
  78. package/dist/src/ui/viewer/annotation/render.js.map +0 -1
  79. package/dist/src/ui/viewer/annotation/types.d.ts +0 -239
  80. package/dist/src/ui/viewer/annotation/types.d.ts.map +0 -1
  81. package/dist/src/ui/viewer/annotation/types.js +0 -7
  82. package/dist/src/ui/viewer/annotation/types.js.map +0 -1
  83. package/dist/src/ui/viewer/annotation/utils.d.ts +0 -37
  84. package/dist/src/ui/viewer/annotation/utils.d.ts.map +0 -1
  85. package/dist/src/ui/viewer/annotation/utils.js +0 -82
  86. package/dist/src/ui/viewer/annotation/utils.js.map +0 -1
  87. package/dist/src/ui/viewer/components/AnnotationPanel.d.ts +0 -19
  88. package/dist/src/ui/viewer/components/AnnotationPanel.d.ts.map +0 -1
  89. package/dist/src/ui/viewer/components/AnnotationPanel.js +0 -284
  90. package/dist/src/ui/viewer/components/AnnotationPanel.js.map +0 -1
  91. package/dist/src/ui/viewer/components/FloatingToolbar.d.ts +0 -9
  92. package/dist/src/ui/viewer/components/FloatingToolbar.d.ts.map +0 -1
  93. package/dist/src/ui/viewer/components/FloatingToolbar.js +0 -305
  94. package/dist/src/ui/viewer/components/FloatingToolbar.js.map +0 -1
  95. package/dist/src/ui/viewer/components/LeftPanel.d.ts +0 -10
  96. package/dist/src/ui/viewer/components/LeftPanel.d.ts.map +0 -1
  97. package/dist/src/ui/viewer/components/LeftPanel.js +0 -165
  98. package/dist/src/ui/viewer/components/LeftPanel.js.map +0 -1
  99. package/dist/src/ui/viewer/components/LoadingOverlay.d.ts +0 -12
  100. package/dist/src/ui/viewer/components/LoadingOverlay.d.ts.map +0 -1
  101. package/dist/src/ui/viewer/components/LoadingOverlay.js +0 -88
  102. package/dist/src/ui/viewer/components/LoadingOverlay.js.map +0 -1
  103. package/dist/src/ui/viewer/components/OutlinePanel.d.ts +0 -10
  104. package/dist/src/ui/viewer/components/OutlinePanel.d.ts.map +0 -1
  105. package/dist/src/ui/viewer/components/OutlinePanel.js +0 -169
  106. package/dist/src/ui/viewer/components/OutlinePanel.js.map +0 -1
  107. package/dist/src/ui/viewer/components/PasswordDialog.d.ts +0 -15
  108. package/dist/src/ui/viewer/components/PasswordDialog.d.ts.map +0 -1
  109. package/dist/src/ui/viewer/components/PasswordDialog.js +0 -143
  110. package/dist/src/ui/viewer/components/PasswordDialog.js.map +0 -1
  111. package/dist/src/ui/viewer/components/RightPanel.d.ts +0 -9
  112. package/dist/src/ui/viewer/components/RightPanel.d.ts.map +0 -1
  113. package/dist/src/ui/viewer/components/RightPanel.js +0 -102
  114. package/dist/src/ui/viewer/components/RightPanel.js.map +0 -1
  115. package/dist/src/ui/viewer/components/Spread.d.ts +0 -43
  116. package/dist/src/ui/viewer/components/Spread.d.ts.map +0 -1
  117. package/dist/src/ui/viewer/components/Spread.js +0 -345
  118. package/dist/src/ui/viewer/components/Spread.js.map +0 -1
  119. package/dist/src/ui/viewer/components/ThumbnailPanel.d.ts +0 -11
  120. package/dist/src/ui/viewer/components/ThumbnailPanel.d.ts.map +0 -1
  121. package/dist/src/ui/viewer/components/ThumbnailPanel.js +0 -240
  122. package/dist/src/ui/viewer/components/ThumbnailPanel.js.map +0 -1
  123. package/dist/src/ui/viewer/components/Toolbar.d.ts +0 -9
  124. package/dist/src/ui/viewer/components/Toolbar.d.ts.map +0 -1
  125. package/dist/src/ui/viewer/components/Toolbar.js +0 -93
  126. package/dist/src/ui/viewer/components/Toolbar.js.map +0 -1
  127. package/dist/src/ui/viewer/components/ViewModeMenu.d.ts +0 -9
  128. package/dist/src/ui/viewer/components/ViewModeMenu.d.ts.map +0 -1
  129. package/dist/src/ui/viewer/components/ViewModeMenu.js +0 -169
  130. package/dist/src/ui/viewer/components/ViewModeMenu.js.map +0 -1
  131. package/dist/src/ui/viewer/components/Viewport.d.ts +0 -10
  132. package/dist/src/ui/viewer/components/Viewport.d.ts.map +0 -1
  133. package/dist/src/ui/viewer/components/Viewport.js +0 -1076
  134. package/dist/src/ui/viewer/components/Viewport.js.map +0 -1
  135. package/dist/src/ui/viewer/effects.d.ts +0 -8
  136. package/dist/src/ui/viewer/effects.d.ts.map +0 -1
  137. package/dist/src/ui/viewer/effects.js +0 -207
  138. package/dist/src/ui/viewer/effects.js.map +0 -1
  139. package/dist/src/ui/viewer/icons.d.ts +0 -32
  140. package/dist/src/ui/viewer/icons.d.ts.map +0 -1
  141. package/dist/src/ui/viewer/icons.js +0 -44
  142. package/dist/src/ui/viewer/icons.js.map +0 -1
  143. package/dist/src/ui/viewer/index.d.ts +0 -6
  144. package/dist/src/ui/viewer/index.d.ts.map +0 -1
  145. package/dist/src/ui/viewer/index.js +0 -6
  146. package/dist/src/ui/viewer/index.js.map +0 -1
  147. package/dist/src/ui/viewer/layout/index.d.ts +0 -3
  148. package/dist/src/ui/viewer/layout/index.d.ts.map +0 -1
  149. package/dist/src/ui/viewer/layout/index.js +0 -3
  150. package/dist/src/ui/viewer/layout/index.js.map +0 -1
  151. package/dist/src/ui/viewer/layout/pixelAlign.d.ts +0 -7
  152. package/dist/src/ui/viewer/layout/pixelAlign.d.ts.map +0 -1
  153. package/dist/src/ui/viewer/layout/pixelAlign.js +0 -22
  154. package/dist/src/ui/viewer/layout/pixelAlign.js.map +0 -1
  155. package/dist/src/ui/viewer/layout/spreadLayout.d.ts +0 -93
  156. package/dist/src/ui/viewer/layout/spreadLayout.d.ts.map +0 -1
  157. package/dist/src/ui/viewer/layout/spreadLayout.js +0 -315
  158. package/dist/src/ui/viewer/layout/spreadLayout.js.map +0 -1
  159. package/dist/src/ui/viewer/navigation.d.ts +0 -80
  160. package/dist/src/ui/viewer/navigation.d.ts.map +0 -1
  161. package/dist/src/ui/viewer/navigation.js +0 -59
  162. package/dist/src/ui/viewer/navigation.js.map +0 -1
  163. package/dist/src/ui/viewer/reducer.d.ts +0 -4
  164. package/dist/src/ui/viewer/reducer.d.ts.map +0 -1
  165. package/dist/src/ui/viewer/reducer.js +0 -305
  166. package/dist/src/ui/viewer/reducer.js.map +0 -1
  167. package/dist/src/ui/viewer/shell.d.ts +0 -34
  168. package/dist/src/ui/viewer/shell.d.ts.map +0 -1
  169. package/dist/src/ui/viewer/shell.js +0 -93
  170. package/dist/src/ui/viewer/shell.js.map +0 -1
  171. package/dist/src/ui/viewer/state.d.ts +0 -89
  172. package/dist/src/ui/viewer/state.d.ts.map +0 -1
  173. package/dist/src/ui/viewer/state.js +0 -55
  174. package/dist/src/ui/viewer/state.js.map +0 -1
  175. package/dist/src/ui/viewer/styles-inline.d.ts +0 -2
  176. package/dist/src/ui/viewer/styles-inline.d.ts.map +0 -1
  177. package/dist/src/ui/viewer/styles-inline.js +0 -1584
  178. package/dist/src/ui/viewer/styles-inline.js.map +0 -1
  179. package/dist/src/ui/viewer/text/index.d.ts +0 -7
  180. package/dist/src/ui/viewer/text/index.d.ts.map +0 -1
  181. package/dist/src/ui/viewer/text/index.js +0 -3
  182. package/dist/src/ui/viewer/text/index.js.map +0 -1
  183. package/dist/src/ui/viewer/text/render.d.ts +0 -19
  184. package/dist/src/ui/viewer/text/render.d.ts.map +0 -1
  185. package/dist/src/ui/viewer/text/render.js +0 -228
  186. package/dist/src/ui/viewer/text/render.js.map +0 -1
  187. package/dist/src/ui/viewer/text/selection.d.ts +0 -12
  188. package/dist/src/ui/viewer/text/selection.d.ts.map +0 -1
  189. package/dist/src/ui/viewer/text/selection.js +0 -70
  190. package/dist/src/ui/viewer/text/selection.js.map +0 -1
  191. package/dist/src/ui/viewer/text/types.d.ts +0 -37
  192. package/dist/src/ui/viewer/text/types.d.ts.map +0 -1
  193. package/dist/src/ui/viewer/text/types.js +0 -7
  194. package/dist/src/ui/viewer/text/types.js.map +0 -1
  195. package/dist/src/wasm/LICENSE +0 -104
  196. package/dist/src/wasm/udoc.d.ts +0 -480
  197. package/dist/src/wasm/udoc.js +0 -1738
  198. package/dist/src/wasm/udoc_bg.wasm +0 -0
  199. package/dist/src/wasm/udoc_bg.wasm.d.ts +0 -45
  200. package/dist/src/worker/WorkerClient.d.ts +0 -335
  201. package/dist/src/worker/WorkerClient.d.ts.map +0 -1
  202. package/dist/src/worker/WorkerClient.js +0 -903
  203. package/dist/src/worker/WorkerClient.js.map +0 -1
  204. package/dist/src/worker/index.d.ts +0 -4
  205. package/dist/src/worker/index.d.ts.map +0 -1
  206. package/dist/src/worker/index.js +0 -2
  207. package/dist/src/worker/index.js.map +0 -1
  208. package/dist/src/worker/worker.d.ts +0 -437
  209. package/dist/src/worker/worker.d.ts.map +0 -1
  210. package/dist/src/worker/worker.js +0 -237
  211. package/dist/src/worker/worker.js.map +0 -1
@@ -1,315 +0,0 @@
1
- import { getPointsToPixels } from "../state";
2
- import { getDevicePixelRatio, toCssPixels, toDevicePixels } from "./pixelAlign";
3
- /**
4
- * Calculate the spread composition for a document.
5
- *
6
- * @param pageCount - Total number of pages in the document
7
- * @param layoutMode - The layout mode determining pages per spread
8
- * @returns Array of spreads with their page assignments
9
- */
10
- export function calculateSpreads(pageCount, layoutMode) {
11
- if (pageCount === 0)
12
- return [];
13
- switch (layoutMode) {
14
- case "single-page":
15
- return calculateSinglePageSpreads(pageCount);
16
- case "double-page":
17
- return calculateDoublePageSpreads(pageCount);
18
- case "double-page-odd-right":
19
- return calculateDoublePageOddRightSpreads(pageCount);
20
- case "double-page-odd-left":
21
- return calculateDoublePageOddLeftSpreads(pageCount);
22
- }
23
- }
24
- /**
25
- * Single page layout: one page per spread.
26
- * Spread 0: [1], Spread 1: [2], etc.
27
- */
28
- function calculateSinglePageSpreads(pageCount) {
29
- const spreads = [];
30
- for (let i = 0; i < pageCount; i++) {
31
- spreads.push({
32
- index: i,
33
- slots: [i + 1]
34
- });
35
- }
36
- return spreads;
37
- }
38
- /**
39
- * Double page layout: two pages per spread, starting from page 1.
40
- * Spread 0: [1, 2], Spread 1: [3, 4], etc.
41
- * Last spread may have empty right slot if odd page count.
42
- */
43
- function calculateDoublePageSpreads(pageCount) {
44
- const spreads = [];
45
- let spreadIndex = 0;
46
- for (let page = 1; page <= pageCount; page += 2) {
47
- const leftPage = page;
48
- const rightPage = page + 1 <= pageCount ? page + 1 : null;
49
- spreads.push({
50
- index: spreadIndex++,
51
- slots: [leftPage, rightPage]
52
- });
53
- }
54
- return spreads;
55
- }
56
- /**
57
- * Double page with odd pages on right (cover mode).
58
- * Spread 0: [null, 1] (cover on right)
59
- * Spread 1: [2, 3], Spread 2: [4, 5], etc.
60
- * Last spread may have empty right slot.
61
- */
62
- function calculateDoublePageOddRightSpreads(pageCount) {
63
- const spreads = [];
64
- // First spread: cover page on right
65
- spreads.push({
66
- index: 0,
67
- slots: [null, 1]
68
- });
69
- // Remaining spreads: pairs starting from page 2
70
- let spreadIndex = 1;
71
- for (let page = 2; page <= pageCount; page += 2) {
72
- const leftPage = page;
73
- const rightPage = page + 1 <= pageCount ? page + 1 : null;
74
- spreads.push({
75
- index: spreadIndex++,
76
- slots: [leftPage, rightPage]
77
- });
78
- }
79
- return spreads;
80
- }
81
- /**
82
- * Double page with odd pages on left (right-to-left reading order).
83
- * Spread 0: [1, null] (cover on left)
84
- * Spread 1: [3, 2], Spread 2: [5, 4], etc.
85
- * Last spread may have empty left slot if even page count.
86
- */
87
- function calculateDoublePageOddLeftSpreads(pageCount) {
88
- const spreads = [];
89
- if (pageCount === 0)
90
- return spreads;
91
- // First spread: cover page on left
92
- spreads.push({
93
- index: 0,
94
- slots: [1, null]
95
- });
96
- // Remaining spreads: [odd, previous even] pairs
97
- let spreadIndex = 1;
98
- for (let oddPage = 3; oddPage <= pageCount; oddPage += 2) {
99
- const evenPage = oddPage - 1;
100
- spreads.push({
101
- index: spreadIndex++,
102
- slots: [oddPage, evenPage]
103
- });
104
- }
105
- // If last page is even, it needs its own spread
106
- if (pageCount % 2 === 0) {
107
- spreads.push({
108
- index: spreadIndex,
109
- slots: [null, pageCount]
110
- });
111
- }
112
- return spreads;
113
- }
114
- /**
115
- * Find the spread index containing a specific page.
116
- */
117
- export function findSpreadForPage(spreads, page) {
118
- for (let i = 0; i < spreads.length; i++) {
119
- const spread = spreads[i];
120
- for (const slot of spread.slots) {
121
- if (slot === page)
122
- return i;
123
- }
124
- }
125
- return 0;
126
- }
127
- /**
128
- * Get the primary page of a spread (first non-null slot).
129
- */
130
- export function getSpreadPrimaryPage(spread) {
131
- for (const slot of spread.slots) {
132
- if (slot !== null)
133
- return slot;
134
- }
135
- return 1;
136
- }
137
- function normalizeRotation(rotation) {
138
- switch (rotation) {
139
- case 90:
140
- case 180:
141
- case 270:
142
- return rotation;
143
- default:
144
- return 0;
145
- }
146
- }
147
- /**
148
- * Combine document rotation with user rotation to get effective rotation.
149
- */
150
- function combineRotation(documentRotation, userRotation) {
151
- const combined = (documentRotation + userRotation) % 360;
152
- return normalizeRotation(combined);
153
- }
154
- /**
155
- * Apply rotation to get the effective display size.
156
- * Combines document rotation (from PDF) with user rotation (viewer setting).
157
- */
158
- function applyRotation(pageInfo, userRotation) {
159
- const documentRotation = normalizeRotation((pageInfo.rotation ?? 0));
160
- const effectiveRotation = combineRotation(documentRotation, userRotation);
161
- if (effectiveRotation === 90 || effectiveRotation === 270) {
162
- return { width: pageInfo.height, height: pageInfo.width };
163
- }
164
- return { width: pageInfo.width, height: pageInfo.height };
165
- }
166
- /**
167
- * Calculate spread layouts with positions for virtual scrolling.
168
- *
169
- * @param spreads - Array of spreads from calculateSpreads()
170
- * @param pageInfos - Array of page sizes (0-indexed, in points)
171
- * @param scale - Zoom scale factor
172
- * @param pageSpacing - Horizontal spacing between pages in a spread
173
- * @param spreadSpacing - Vertical spacing between spreads
174
- * @param dpi - Display DPI for point-to-pixel conversion
175
- * @param rotation - Page rotation in degrees
176
- * @returns Layouts plus aggregated content size
177
- */
178
- export function calculateSpreadLayouts(spreads, pageInfos, scale, pageSpacing, spreadSpacing, dpi, rotation) {
179
- // Snap all layout values to device pixels to ensure adjacent spreads align.
180
- // We use CUMULATIVE snapping: each spread's top is calculated from the
181
- // previous spread's snapped bottom, guaranteeing no gaps or overlaps.
182
- const dpr = getDevicePixelRatio();
183
- const layouts = [];
184
- const spacingDevice = toDevicePixels(spreadSpacing, dpr);
185
- let currentTopDevice = spreads.length > 0 ? spacingDevice : 0;
186
- let maxWidthDevice = 0;
187
- for (const spread of spreads) {
188
- const { width, height } = getSpreadDimensionsDevice(spread, pageInfos, scale, pageSpacing, dpi, rotation, dpr);
189
- layouts.push({
190
- index: spread.index,
191
- slots: spread.slots,
192
- top: toCssPixels(currentTopDevice, dpr),
193
- width: toCssPixels(width, dpr),
194
- height: toCssPixels(height, dpr)
195
- });
196
- // Next spread's top = this spread's bottom + spacing
197
- // Using snapped values ensures cumulative consistency
198
- currentTopDevice += height + spacingDevice;
199
- maxWidthDevice = Math.max(maxWidthDevice, width);
200
- }
201
- const contentHeight = spreads.length > 0
202
- ? toCssPixels(currentTopDevice, dpr)
203
- : 0;
204
- return {
205
- layouts,
206
- contentWidth: toCssPixels(maxWidthDevice, dpr),
207
- contentHeight
208
- };
209
- }
210
- /**
211
- * Calculate the dimensions of a spread based on its pages.
212
- * Returns dimensions in CSS pixels (accounting for DPI conversion).
213
- */
214
- export function getSpreadDimensions(spread, pageInfos, scale, pageSpacing, dpi, rotation) {
215
- const dpr = getDevicePixelRatio();
216
- const deviceDims = getSpreadDimensionsDevice(spread, pageInfos, scale, pageSpacing, dpi, rotation, dpr);
217
- return {
218
- width: toCssPixels(deviceDims.width, dpr),
219
- height: toCssPixels(deviceDims.height, dpr)
220
- };
221
- }
222
- function getSpreadDimensionsDevice(spread, pageInfos, scale, pageSpacing, dpi, rotation, dpr) {
223
- const pointsToPixels = getPointsToPixels(dpi);
224
- let totalWidth = 0;
225
- let maxHeight = 0;
226
- const hasMultipleSlots = spread.slots.length > 1;
227
- let referenceSize = null;
228
- for (const slot of spread.slots) {
229
- if (slot !== null) {
230
- const pageInfo = pageInfos[slot - 1];
231
- if (pageInfo) {
232
- referenceSize = applyRotation(pageInfo, rotation);
233
- break;
234
- }
235
- }
236
- }
237
- for (const slot of spread.slots) {
238
- if (slot !== null) {
239
- const pageIndex = slot - 1; // Convert 1-indexed page to 0-indexed
240
- const size = pageInfos[pageIndex];
241
- if (size) {
242
- const rotated = applyRotation(size, rotation);
243
- // Convert points to pixels: points * (dpi/72) * zoom
244
- const widthDevice = toDevicePixels(rotated.width * pointsToPixels * scale, dpr);
245
- const heightDevice = toDevicePixels(rotated.height * pointsToPixels * scale, dpr);
246
- totalWidth += widthDevice;
247
- maxHeight = Math.max(maxHeight, heightDevice);
248
- }
249
- }
250
- else if (referenceSize) {
251
- const widthDevice = toDevicePixels(referenceSize.width * pointsToPixels * scale, dpr);
252
- const heightDevice = toDevicePixels(referenceSize.height * pointsToPixels * scale, dpr);
253
- totalWidth += widthDevice;
254
- maxHeight = Math.max(maxHeight, heightDevice);
255
- }
256
- }
257
- // Add spacing between slots in multi-slot spreads (even if a slot is empty).
258
- if (hasMultipleSlots) {
259
- totalWidth += toDevicePixels(pageSpacing, dpr);
260
- }
261
- return { width: totalWidth, height: maxHeight };
262
- }
263
- /**
264
- * Calculate total content height including all spreads and spacing.
265
- */
266
- export function calculateTotalHeight(layouts, spreadSpacing) {
267
- if (layouts.length === 0)
268
- return 0;
269
- const lastLayout = layouts[layouts.length - 1];
270
- return lastLayout.top + lastLayout.height + snapSpacing(spreadSpacing);
271
- }
272
- function snapSpacing(value) {
273
- const dpr = getDevicePixelRatio();
274
- return toCssPixels(toDevicePixels(value, dpr), dpr);
275
- }
276
- /**
277
- * Find visible spread indices based on scroll position and viewport height.
278
- *
279
- * @param layouts - Array of spread layouts
280
- * @param scrollTop - Current scroll position
281
- * @param viewportHeight - Height of the visible viewport
282
- * @param buffer - Number of extra spreads to include above/below (for smooth scrolling)
283
- * @returns Object with start and end indices (inclusive)
284
- */
285
- export function findVisibleSpreadRange(layouts, scrollTop, viewportHeight, buffer = 1) {
286
- if (layouts.length === 0) {
287
- return { start: 0, end: -1 };
288
- }
289
- const viewportBottom = scrollTop + viewportHeight;
290
- // Find first visible spread
291
- let start = 0;
292
- for (let i = 0; i < layouts.length; i++) {
293
- const layout = layouts[i];
294
- if (layout.top + layout.height >= scrollTop) {
295
- start = i;
296
- break;
297
- }
298
- start = i;
299
- }
300
- // Find last visible spread
301
- let end = layouts.length - 1;
302
- for (let i = start; i < layouts.length; i++) {
303
- const layout = layouts[i];
304
- if (layout.top > viewportBottom) {
305
- end = i - 1;
306
- break;
307
- }
308
- end = i;
309
- }
310
- // Apply buffer
311
- start = Math.max(0, start - buffer);
312
- end = Math.min(layouts.length - 1, end + buffer);
313
- return { start, end };
314
- }
315
- //# sourceMappingURL=spreadLayout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spreadLayout.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/layout/spreadLayout.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- /**
2
- * How a page should be displayed when navigating to a destination.
3
- * Matches PDF destination display types and WASM JsDestinationDisplay.
4
- */
5
- export type DestinationDisplay = {
6
- type: "xyz";
7
- left?: number;
8
- top?: number;
9
- zoom?: number;
10
- } | {
11
- type: "fit";
12
- } | {
13
- type: "fitH";
14
- top?: number;
15
- } | {
16
- type: "fitV";
17
- left?: number;
18
- } | {
19
- type: "fitR";
20
- left: number;
21
- top: number;
22
- right: number;
23
- bottom: number;
24
- } | {
25
- type: "fitB";
26
- } | {
27
- type: "fitBH";
28
- top?: number;
29
- } | {
30
- type: "fitBV";
31
- left?: number;
32
- };
33
- /**
34
- * A navigation destination (page + display mode).
35
- * Matches WASM JsDestination.
36
- */
37
- export interface Destination {
38
- /** Target page index (0-based, from WASM) */
39
- pageIndex: number;
40
- /** How the page should be displayed */
41
- display: DestinationDisplay;
42
- }
43
- /**
44
- * An outline (table of contents) item.
45
- * Matches WASM JsOutlineItem.
46
- */
47
- export interface OutlineItem {
48
- /** Display title */
49
- title: string;
50
- /** Navigation destination (optional - some items are structural only) */
51
- destination?: Destination;
52
- /** Child items */
53
- children: OutlineItem[];
54
- /** Whether the item should be initially collapsed in UI */
55
- initiallyCollapsed: boolean;
56
- }
57
- /**
58
- * Internal navigation target for the viewer.
59
- * Converted from Destination for use in viewer state.
60
- */
61
- export interface NavigationTarget {
62
- /** Target page (1-based for UI consistency) */
63
- page: number;
64
- /** Optional scroll position within page (in PDF points, relative to page top-left) */
65
- scrollTo?: {
66
- x?: number;
67
- y?: number;
68
- };
69
- /** Optional zoom level (undefined = keep current) */
70
- zoom?: number;
71
- }
72
- /**
73
- * Convert a WASM destination to an internal navigation target.
74
- *
75
- * @param dest - The destination from WASM
76
- * @param pageCount - Total number of pages (for clamping)
77
- * @returns NavigationTarget for internal use
78
- */
79
- export declare function destinationToNavigationTarget(dest: Destination, pageCount: number): NavigationTarget;
80
- //# sourceMappingURL=navigation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/navigation.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GACxB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,EAAE,kBAAkB,CAAC;CAC/B;AAMD;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,2DAA2D;IAC3D,kBAAkB,EAAE,OAAO,CAAC;CAC/B;AAMD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,QAAQ,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,GAClB,gBAAgB,CAoDlB"}
@@ -1,59 +0,0 @@
1
- // -----------------------------------------------------------------------------
2
- // Destination display types (matching WASM JsDestinationDisplay)
3
- // -----------------------------------------------------------------------------
4
- // -----------------------------------------------------------------------------
5
- // Conversion utilities
6
- // -----------------------------------------------------------------------------
7
- /**
8
- * Convert a WASM destination to an internal navigation target.
9
- *
10
- * @param dest - The destination from WASM
11
- * @param pageCount - Total number of pages (for clamping)
12
- * @returns NavigationTarget for internal use
13
- */
14
- export function destinationToNavigationTarget(dest, pageCount) {
15
- // Convert 0-based pageIndex to 1-based page
16
- const page = Math.max(1, Math.min(dest.pageIndex + 1, Math.max(1, pageCount)));
17
- const target = { page };
18
- switch (dest.display.type) {
19
- case "xyz":
20
- if (dest.display.top !== undefined || dest.display.left !== undefined) {
21
- target.scrollTo = {
22
- x: dest.display.left,
23
- y: dest.display.top
24
- };
25
- }
26
- if (dest.display.zoom !== undefined && dest.display.zoom > 0) {
27
- target.zoom = dest.display.zoom;
28
- }
29
- break;
30
- case "fitH":
31
- if (dest.display.top !== undefined) {
32
- target.scrollTo = { y: dest.display.top };
33
- }
34
- break;
35
- case "fitV":
36
- if (dest.display.left !== undefined) {
37
- target.scrollTo = { x: dest.display.left };
38
- }
39
- break;
40
- case "fitBH":
41
- if (dest.display.top !== undefined) {
42
- target.scrollTo = { y: dest.display.top };
43
- }
44
- break;
45
- case "fitBV":
46
- if (dest.display.left !== undefined) {
47
- target.scrollTo = { x: dest.display.left };
48
- }
49
- break;
50
- // "fit", "fitB", "fitR" - just navigate to page, no specific scroll position
51
- case "fit":
52
- case "fitB":
53
- case "fitR":
54
- // No scroll position needed
55
- break;
56
- }
57
- return target;
58
- }
59
- //# sourceMappingURL=navigation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/ui/viewer/navigation.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iEAAiE;AACjE,gFAAgF;AA+DhF,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CACzC,IAAiB,EACjB,SAAiB;IAEjB,4CAA4C;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAE/E,MAAM,MAAM,GAAqB,EAAE,IAAI,EAAE,CAAC;IAE1C,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,KAAK;YACN,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACpE,MAAM,CAAC,QAAQ,GAAG;oBACd,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBACpB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;iBACtB,CAAC;YACN,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACpC,CAAC;YACD,MAAM;QAEV,KAAK,MAAM;YACP,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC9C,CAAC;YACD,MAAM;QAEV,KAAK,MAAM;YACP,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;YACD,MAAM;QAEV,KAAK,OAAO;YACR,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC9C,CAAC;YACD,MAAM;QAEV,KAAK,OAAO;YACR,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;YACD,MAAM;QAEV,6EAA6E;QAC7E,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACP,4BAA4B;YAC5B,MAAM;IACd,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { ViewerState } from "./state";
2
- import type { Action } from "./actions";
3
- export declare function reducer(state: ViewerState, action: Action): ViewerState;
4
- //# sourceMappingURL=reducer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAuRvE"}