@docmentis/udoc-viewer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/README.md +180 -0
  2. package/dist/UDocClient.d.ts +197 -0
  3. package/dist/UDocClient.d.ts.map +1 -0
  4. package/dist/UDocClient.js +170 -0
  5. package/dist/UDocClient.js.map +1 -0
  6. package/dist/UDocViewer.d.ts +196 -0
  7. package/dist/UDocViewer.d.ts.map +1 -0
  8. package/dist/UDocViewer.js +427 -0
  9. package/dist/UDocViewer.js.map +1 -0
  10. package/dist/WorkerClient.d.ts +36 -0
  11. package/dist/WorkerClient.d.ts.map +1 -0
  12. package/dist/WorkerClient.js +121 -0
  13. package/dist/WorkerClient.js.map +1 -0
  14. package/dist/annotation/AnnotationLayer.d.ts +166 -0
  15. package/dist/annotation/AnnotationLayer.d.ts.map +1 -0
  16. package/dist/annotation/AnnotationLayer.js +1090 -0
  17. package/dist/annotation/AnnotationLayer.js.map +1 -0
  18. package/dist/annotation/index.d.ts +6 -0
  19. package/dist/annotation/index.d.ts.map +1 -0
  20. package/dist/annotation/index.js +6 -0
  21. package/dist/annotation/index.js.map +1 -0
  22. package/dist/components/FloatingBar.d.ts +102 -0
  23. package/dist/components/FloatingBar.d.ts.map +1 -0
  24. package/dist/components/FloatingBar.js +513 -0
  25. package/dist/components/FloatingBar.js.map +1 -0
  26. package/dist/components/Header.d.ts +46 -0
  27. package/dist/components/Header.d.ts.map +1 -0
  28. package/dist/components/Header.js +93 -0
  29. package/dist/components/Header.js.map +1 -0
  30. package/dist/components/index.d.ts +6 -0
  31. package/dist/components/index.d.ts.map +1 -0
  32. package/dist/components/index.js +4 -0
  33. package/dist/components/index.js.map +1 -0
  34. package/dist/components/panels/CommentsPanel.d.ts +33 -0
  35. package/dist/components/panels/CommentsPanel.d.ts.map +1 -0
  36. package/dist/components/panels/CommentsPanel.js +176 -0
  37. package/dist/components/panels/CommentsPanel.js.map +1 -0
  38. package/dist/components/panels/OutlinePanel.d.ts +30 -0
  39. package/dist/components/panels/OutlinePanel.d.ts.map +1 -0
  40. package/dist/components/panels/OutlinePanel.js +144 -0
  41. package/dist/components/panels/OutlinePanel.js.map +1 -0
  42. package/dist/components/panels/ThumbnailsPanel.d.ts +51 -0
  43. package/dist/components/panels/ThumbnailsPanel.d.ts.map +1 -0
  44. package/dist/components/panels/ThumbnailsPanel.js +160 -0
  45. package/dist/components/panels/ThumbnailsPanel.js.map +1 -0
  46. package/dist/components/panels/index.d.ts +7 -0
  47. package/dist/components/panels/index.d.ts.map +1 -0
  48. package/dist/components/panels/index.js +4 -0
  49. package/dist/components/panels/index.js.map +1 -0
  50. package/dist/constants.d.ts +25 -0
  51. package/dist/constants.d.ts.map +1 -0
  52. package/dist/constants.js +46 -0
  53. package/dist/constants.js.map +1 -0
  54. package/dist/core/NavigationController.d.ts +54 -0
  55. package/dist/core/NavigationController.d.ts.map +1 -0
  56. package/dist/core/NavigationController.js +145 -0
  57. package/dist/core/NavigationController.js.map +1 -0
  58. package/dist/core/PerfTimer.d.ts +12 -0
  59. package/dist/core/PerfTimer.d.ts.map +1 -0
  60. package/dist/core/PerfTimer.js +32 -0
  61. package/dist/core/PerfTimer.js.map +1 -0
  62. package/dist/core/ViewerState.d.ts +108 -0
  63. package/dist/core/ViewerState.d.ts.map +1 -0
  64. package/dist/core/ViewerState.js +179 -0
  65. package/dist/core/ViewerState.js.map +1 -0
  66. package/dist/core/constants.d.ts +24 -0
  67. package/dist/core/constants.d.ts.map +1 -0
  68. package/dist/core/constants.js +42 -0
  69. package/dist/core/constants.js.map +1 -0
  70. package/dist/core/index.d.ts +8 -0
  71. package/dist/core/index.d.ts.map +1 -0
  72. package/dist/core/index.js +11 -0
  73. package/dist/core/index.js.map +1 -0
  74. package/dist/core/types.d.ts +573 -0
  75. package/dist/core/types.d.ts.map +1 -0
  76. package/dist/core/types.js +5 -0
  77. package/dist/core/types.js.map +1 -0
  78. package/dist/icons/icons.d.ts +41 -0
  79. package/dist/icons/icons.d.ts.map +1 -0
  80. package/dist/icons/icons.js +51 -0
  81. package/dist/icons/icons.js.map +1 -0
  82. package/dist/icons/index.d.ts +3 -0
  83. package/dist/icons/index.d.ts.map +1 -0
  84. package/dist/icons/index.js +2 -0
  85. package/dist/icons/index.js.map +1 -0
  86. package/dist/index.d.ts +7 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +6 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/layout/BandManager.d.ts +87 -0
  91. package/dist/layout/BandManager.d.ts.map +1 -0
  92. package/dist/layout/BandManager.js +185 -0
  93. package/dist/layout/BandManager.js.map +1 -0
  94. package/dist/layout/LayoutCalculator.d.ts +42 -0
  95. package/dist/layout/LayoutCalculator.d.ts.map +1 -0
  96. package/dist/layout/LayoutCalculator.js +180 -0
  97. package/dist/layout/LayoutCalculator.js.map +1 -0
  98. package/dist/layout/LayoutState.d.ts +46 -0
  99. package/dist/layout/LayoutState.d.ts.map +1 -0
  100. package/dist/layout/LayoutState.js +109 -0
  101. package/dist/layout/LayoutState.js.map +1 -0
  102. package/dist/layout/TransitionCoordinator.d.ts +11 -0
  103. package/dist/layout/TransitionCoordinator.d.ts.map +1 -0
  104. package/dist/layout/TransitionCoordinator.js +22 -0
  105. package/dist/layout/TransitionCoordinator.js.map +1 -0
  106. package/dist/layout/index.d.ts +7 -0
  107. package/dist/layout/index.d.ts.map +1 -0
  108. package/dist/layout/index.js +4 -0
  109. package/dist/layout/index.js.map +1 -0
  110. package/dist/rendering/BandManager.d.ts +87 -0
  111. package/dist/rendering/BandManager.d.ts.map +1 -0
  112. package/dist/rendering/BandManager.js +185 -0
  113. package/dist/rendering/BandManager.js.map +1 -0
  114. package/dist/rendering/PageCache.d.ts +75 -0
  115. package/dist/rendering/PageCache.d.ts.map +1 -0
  116. package/dist/rendering/PageCache.js +122 -0
  117. package/dist/rendering/PageCache.js.map +1 -0
  118. package/dist/rendering/RenderQueue.d.ts +75 -0
  119. package/dist/rendering/RenderQueue.d.ts.map +1 -0
  120. package/dist/rendering/RenderQueue.js +105 -0
  121. package/dist/rendering/RenderQueue.js.map +1 -0
  122. package/dist/rendering/ThumbnailQueue.d.ts +57 -0
  123. package/dist/rendering/ThumbnailQueue.d.ts.map +1 -0
  124. package/dist/rendering/ThumbnailQueue.js +85 -0
  125. package/dist/rendering/ThumbnailQueue.js.map +1 -0
  126. package/dist/rendering/index.d.ts +13 -0
  127. package/dist/rendering/index.d.ts.map +1 -0
  128. package/dist/rendering/index.js +10 -0
  129. package/dist/rendering/index.js.map +1 -0
  130. package/dist/rendering/types.d.ts +72 -0
  131. package/dist/rendering/types.d.ts.map +1 -0
  132. package/dist/rendering/types.js +5 -0
  133. package/dist/rendering/types.js.map +1 -0
  134. package/dist/styles/index.d.ts +6 -0
  135. package/dist/styles/index.d.ts.map +1 -0
  136. package/dist/styles/index.js +1221 -0
  137. package/dist/styles/index.js.map +1 -0
  138. package/dist/types.d.ts +6 -0
  139. package/dist/types.d.ts.map +1 -0
  140. package/dist/types.js +6 -0
  141. package/dist/types.js.map +1 -0
  142. package/dist/ui/Component.d.ts +127 -0
  143. package/dist/ui/Component.d.ts.map +1 -0
  144. package/dist/ui/Component.js +201 -0
  145. package/dist/ui/Component.js.map +1 -0
  146. package/dist/ui/annotation/AnnotationLayer.d.ts +90 -0
  147. package/dist/ui/annotation/AnnotationLayer.d.ts.map +1 -0
  148. package/dist/ui/annotation/AnnotationLayer.js +322 -0
  149. package/dist/ui/annotation/AnnotationLayer.js.map +1 -0
  150. package/dist/ui/annotation/LinkRenderer.d.ts +32 -0
  151. package/dist/ui/annotation/LinkRenderer.d.ts.map +1 -0
  152. package/dist/ui/annotation/LinkRenderer.js +74 -0
  153. package/dist/ui/annotation/LinkRenderer.js.map +1 -0
  154. package/dist/ui/annotation/MarkupRenderer.d.ts +40 -0
  155. package/dist/ui/annotation/MarkupRenderer.d.ts.map +1 -0
  156. package/dist/ui/annotation/MarkupRenderer.js +154 -0
  157. package/dist/ui/annotation/MarkupRenderer.js.map +1 -0
  158. package/dist/ui/annotation/ShapeRenderer.d.ts +46 -0
  159. package/dist/ui/annotation/ShapeRenderer.d.ts.map +1 -0
  160. package/dist/ui/annotation/ShapeRenderer.js +376 -0
  161. package/dist/ui/annotation/ShapeRenderer.js.map +1 -0
  162. package/dist/ui/annotation/TextRenderer.d.ts +36 -0
  163. package/dist/ui/annotation/TextRenderer.d.ts.map +1 -0
  164. package/dist/ui/annotation/TextRenderer.js +199 -0
  165. package/dist/ui/annotation/TextRenderer.js.map +1 -0
  166. package/dist/ui/annotation/index.d.ts +17 -0
  167. package/dist/ui/annotation/index.d.ts.map +1 -0
  168. package/dist/ui/annotation/index.js +13 -0
  169. package/dist/ui/annotation/index.js.map +1 -0
  170. package/dist/ui/annotation/utils.d.ts +40 -0
  171. package/dist/ui/annotation/utils.d.ts.map +1 -0
  172. package/dist/ui/annotation/utils.js +62 -0
  173. package/dist/ui/annotation/utils.js.map +1 -0
  174. package/dist/ui/components/CommentsContent.d.ts +35 -0
  175. package/dist/ui/components/CommentsContent.d.ts.map +1 -0
  176. package/dist/ui/components/CommentsContent.js +203 -0
  177. package/dist/ui/components/CommentsContent.js.map +1 -0
  178. package/dist/ui/components/FloatingBar.d.ts +55 -0
  179. package/dist/ui/components/FloatingBar.d.ts.map +1 -0
  180. package/dist/ui/components/FloatingBar.js +585 -0
  181. package/dist/ui/components/FloatingBar.js.map +1 -0
  182. package/dist/ui/components/Header.d.ts +29 -0
  183. package/dist/ui/components/Header.d.ts.map +1 -0
  184. package/dist/ui/components/Header.js +127 -0
  185. package/dist/ui/components/Header.js.map +1 -0
  186. package/dist/ui/components/LeftPanel.d.ts +54 -0
  187. package/dist/ui/components/LeftPanel.d.ts.map +1 -0
  188. package/dist/ui/components/LeftPanel.js +202 -0
  189. package/dist/ui/components/LeftPanel.js.map +1 -0
  190. package/dist/ui/components/OutlineContent.d.ts +34 -0
  191. package/dist/ui/components/OutlineContent.d.ts.map +1 -0
  192. package/dist/ui/components/OutlineContent.js +147 -0
  193. package/dist/ui/components/OutlineContent.js.map +1 -0
  194. package/dist/ui/components/RightPanel.d.ts +52 -0
  195. package/dist/ui/components/RightPanel.d.ts.map +1 -0
  196. package/dist/ui/components/RightPanel.js +142 -0
  197. package/dist/ui/components/RightPanel.js.map +1 -0
  198. package/dist/ui/components/Viewport.d.ts +70 -0
  199. package/dist/ui/components/Viewport.d.ts.map +1 -0
  200. package/dist/ui/components/Viewport.js +173 -0
  201. package/dist/ui/components/Viewport.js.map +1 -0
  202. package/dist/ui/components/index.d.ts +11 -0
  203. package/dist/ui/components/index.d.ts.map +1 -0
  204. package/dist/ui/components/index.js +10 -0
  205. package/dist/ui/components/index.js.map +1 -0
  206. package/dist/ui/framework/component.d.ts +68 -0
  207. package/dist/ui/framework/component.d.ts.map +1 -0
  208. package/dist/ui/framework/component.js +87 -0
  209. package/dist/ui/framework/component.js.map +1 -0
  210. package/dist/ui/framework/dom.d.ts +19 -0
  211. package/dist/ui/framework/dom.d.ts.map +1 -0
  212. package/dist/ui/framework/dom.js +29 -0
  213. package/dist/ui/framework/dom.js.map +1 -0
  214. package/dist/ui/framework/events.d.ts +18 -0
  215. package/dist/ui/framework/events.d.ts.map +1 -0
  216. package/dist/ui/framework/events.js +23 -0
  217. package/dist/ui/framework/events.js.map +1 -0
  218. package/dist/ui/framework/index.d.ts +15 -0
  219. package/dist/ui/framework/index.d.ts.map +1 -0
  220. package/dist/ui/framework/index.js +15 -0
  221. package/dist/ui/framework/index.js.map +1 -0
  222. package/dist/ui/framework/selectors.d.ts +51 -0
  223. package/dist/ui/framework/selectors.d.ts.map +1 -0
  224. package/dist/ui/framework/selectors.js +30 -0
  225. package/dist/ui/framework/selectors.js.map +1 -0
  226. package/dist/ui/framework/store.d.ts +37 -0
  227. package/dist/ui/framework/store.d.ts.map +1 -0
  228. package/dist/ui/framework/store.js +54 -0
  229. package/dist/ui/framework/store.js.map +1 -0
  230. package/dist/ui/icons/icons.d.ts +43 -0
  231. package/dist/ui/icons/icons.d.ts.map +1 -0
  232. package/dist/ui/icons/icons.js +46 -0
  233. package/dist/ui/icons/icons.js.map +1 -0
  234. package/dist/ui/icons/index.d.ts +11 -0
  235. package/dist/ui/icons/index.d.ts.map +1 -0
  236. package/dist/ui/icons/index.js +18 -0
  237. package/dist/ui/icons/index.js.map +1 -0
  238. package/dist/ui/index.d.ts +7 -0
  239. package/dist/ui/index.d.ts.map +1 -0
  240. package/dist/ui/index.js +9 -0
  241. package/dist/ui/index.js.map +1 -0
  242. package/dist/ui/styles/base.css.d.ts +5 -0
  243. package/dist/ui/styles/base.css.d.ts.map +1 -0
  244. package/dist/ui/styles/base.css.js +49 -0
  245. package/dist/ui/styles/base.css.js.map +1 -0
  246. package/dist/ui/styles/floating-bar.css.d.ts +5 -0
  247. package/dist/ui/styles/floating-bar.css.d.ts.map +1 -0
  248. package/dist/ui/styles/floating-bar.css.js +417 -0
  249. package/dist/ui/styles/floating-bar.css.js.map +1 -0
  250. package/dist/ui/styles/header.css.d.ts +5 -0
  251. package/dist/ui/styles/header.css.d.ts.map +1 -0
  252. package/dist/ui/styles/header.css.js +49 -0
  253. package/dist/ui/styles/header.css.js.map +1 -0
  254. package/dist/ui/styles/index.d.ts +21 -0
  255. package/dist/ui/styles/index.d.ts.map +1 -0
  256. package/dist/ui/styles/index.js +48 -0
  257. package/dist/ui/styles/index.js.map +1 -0
  258. package/dist/ui/styles/panels.css.d.ts +5 -0
  259. package/dist/ui/styles/panels.css.d.ts.map +1 -0
  260. package/dist/ui/styles/panels.css.js +446 -0
  261. package/dist/ui/styles/panels.css.js.map +1 -0
  262. package/dist/ui/styles/responsive.css.d.ts +5 -0
  263. package/dist/ui/styles/responsive.css.d.ts.map +1 -0
  264. package/dist/ui/styles/responsive.css.js +201 -0
  265. package/dist/ui/styles/responsive.css.js.map +1 -0
  266. package/dist/ui/styles/variables.css.d.ts +6 -0
  267. package/dist/ui/styles/variables.css.d.ts.map +1 -0
  268. package/dist/ui/styles/variables.css.js +75 -0
  269. package/dist/ui/styles/variables.css.js.map +1 -0
  270. package/dist/ui/styles/viewport.css.d.ts +5 -0
  271. package/dist/ui/styles/viewport.css.d.ts.map +1 -0
  272. package/dist/ui/styles/viewport.css.js +87 -0
  273. package/dist/ui/styles/viewport.css.js.map +1 -0
  274. package/dist/ui/viewer/actions.d.ts +103 -0
  275. package/dist/ui/viewer/actions.d.ts.map +1 -0
  276. package/dist/ui/viewer/actions.js +2 -0
  277. package/dist/ui/viewer/actions.js.map +1 -0
  278. package/dist/ui/viewer/annotation/LinkRenderer.d.ts +9 -0
  279. package/dist/ui/viewer/annotation/LinkRenderer.d.ts.map +1 -0
  280. package/dist/ui/viewer/annotation/LinkRenderer.js +17 -0
  281. package/dist/ui/viewer/annotation/LinkRenderer.js.map +1 -0
  282. package/dist/ui/viewer/annotation/MarkupRenderer.d.ts +21 -0
  283. package/dist/ui/viewer/annotation/MarkupRenderer.d.ts.map +1 -0
  284. package/dist/ui/viewer/annotation/MarkupRenderer.js +138 -0
  285. package/dist/ui/viewer/annotation/MarkupRenderer.js.map +1 -0
  286. package/dist/ui/viewer/annotation/ShapeRenderer.d.ts +33 -0
  287. package/dist/ui/viewer/annotation/ShapeRenderer.d.ts.map +1 -0
  288. package/dist/ui/viewer/annotation/ShapeRenderer.js +378 -0
  289. package/dist/ui/viewer/annotation/ShapeRenderer.js.map +1 -0
  290. package/dist/ui/viewer/annotation/TextRenderer.d.ts +23 -0
  291. package/dist/ui/viewer/annotation/TextRenderer.d.ts.map +1 -0
  292. package/dist/ui/viewer/annotation/TextRenderer.js +196 -0
  293. package/dist/ui/viewer/annotation/TextRenderer.js.map +1 -0
  294. package/dist/ui/viewer/annotation/index.d.ts +8 -0
  295. package/dist/ui/viewer/annotation/index.d.ts.map +1 -0
  296. package/dist/ui/viewer/annotation/index.js +8 -0
  297. package/dist/ui/viewer/annotation/index.js.map +1 -0
  298. package/dist/ui/viewer/annotation/render.d.ts +24 -0
  299. package/dist/ui/viewer/annotation/render.d.ts.map +1 -0
  300. package/dist/ui/viewer/annotation/render.js +184 -0
  301. package/dist/ui/viewer/annotation/render.js.map +1 -0
  302. package/dist/ui/viewer/annotation/types.d.ts +239 -0
  303. package/dist/ui/viewer/annotation/types.d.ts.map +1 -0
  304. package/dist/ui/viewer/annotation/types.js +7 -0
  305. package/dist/ui/viewer/annotation/types.js.map +1 -0
  306. package/dist/ui/viewer/annotation/utils.d.ts +37 -0
  307. package/dist/ui/viewer/annotation/utils.d.ts.map +1 -0
  308. package/dist/ui/viewer/annotation/utils.js +82 -0
  309. package/dist/ui/viewer/annotation/utils.js.map +1 -0
  310. package/dist/ui/viewer/components/AnnotationPanel.d.ts +19 -0
  311. package/dist/ui/viewer/components/AnnotationPanel.d.ts.map +1 -0
  312. package/dist/ui/viewer/components/AnnotationPanel.js +284 -0
  313. package/dist/ui/viewer/components/AnnotationPanel.js.map +1 -0
  314. package/dist/ui/viewer/components/FloatingToolbar.d.ts +9 -0
  315. package/dist/ui/viewer/components/FloatingToolbar.d.ts.map +1 -0
  316. package/dist/ui/viewer/components/FloatingToolbar.js +305 -0
  317. package/dist/ui/viewer/components/FloatingToolbar.js.map +1 -0
  318. package/dist/ui/viewer/components/LeftPanel.d.ts +10 -0
  319. package/dist/ui/viewer/components/LeftPanel.d.ts.map +1 -0
  320. package/dist/ui/viewer/components/LeftPanel.js +165 -0
  321. package/dist/ui/viewer/components/LeftPanel.js.map +1 -0
  322. package/dist/ui/viewer/components/OutlinePanel.d.ts +10 -0
  323. package/dist/ui/viewer/components/OutlinePanel.d.ts.map +1 -0
  324. package/dist/ui/viewer/components/OutlinePanel.js +169 -0
  325. package/dist/ui/viewer/components/OutlinePanel.js.map +1 -0
  326. package/dist/ui/viewer/components/RightPanel.d.ts +9 -0
  327. package/dist/ui/viewer/components/RightPanel.d.ts.map +1 -0
  328. package/dist/ui/viewer/components/RightPanel.js +102 -0
  329. package/dist/ui/viewer/components/RightPanel.js.map +1 -0
  330. package/dist/ui/viewer/components/Spread.d.ts +41 -0
  331. package/dist/ui/viewer/components/Spread.d.ts.map +1 -0
  332. package/dist/ui/viewer/components/Spread.js +278 -0
  333. package/dist/ui/viewer/components/Spread.js.map +1 -0
  334. package/dist/ui/viewer/components/ThumbnailPanel.d.ts +11 -0
  335. package/dist/ui/viewer/components/ThumbnailPanel.d.ts.map +1 -0
  336. package/dist/ui/viewer/components/ThumbnailPanel.js +206 -0
  337. package/dist/ui/viewer/components/ThumbnailPanel.js.map +1 -0
  338. package/dist/ui/viewer/components/Toolbar.d.ts +9 -0
  339. package/dist/ui/viewer/components/Toolbar.d.ts.map +1 -0
  340. package/dist/ui/viewer/components/Toolbar.js +93 -0
  341. package/dist/ui/viewer/components/Toolbar.js.map +1 -0
  342. package/dist/ui/viewer/components/ViewModeMenu.d.ts +9 -0
  343. package/dist/ui/viewer/components/ViewModeMenu.d.ts.map +1 -0
  344. package/dist/ui/viewer/components/ViewModeMenu.js +169 -0
  345. package/dist/ui/viewer/components/ViewModeMenu.js.map +1 -0
  346. package/dist/ui/viewer/components/Viewport.d.ts +10 -0
  347. package/dist/ui/viewer/components/Viewport.d.ts.map +1 -0
  348. package/dist/ui/viewer/components/Viewport.js +793 -0
  349. package/dist/ui/viewer/components/Viewport.js.map +1 -0
  350. package/dist/ui/viewer/effects.d.ts +9 -0
  351. package/dist/ui/viewer/effects.d.ts.map +1 -0
  352. package/dist/ui/viewer/effects.js +179 -0
  353. package/dist/ui/viewer/effects.js.map +1 -0
  354. package/dist/ui/viewer/icons.d.ts +32 -0
  355. package/dist/ui/viewer/icons.d.ts.map +1 -0
  356. package/dist/ui/viewer/icons.js +44 -0
  357. package/dist/ui/viewer/icons.js.map +1 -0
  358. package/dist/ui/viewer/index.d.ts +6 -0
  359. package/dist/ui/viewer/index.d.ts.map +1 -0
  360. package/dist/ui/viewer/index.js +6 -0
  361. package/dist/ui/viewer/index.js.map +1 -0
  362. package/dist/ui/viewer/layout/index.d.ts +3 -0
  363. package/dist/ui/viewer/layout/index.d.ts.map +1 -0
  364. package/dist/ui/viewer/layout/index.js +3 -0
  365. package/dist/ui/viewer/layout/index.js.map +1 -0
  366. package/dist/ui/viewer/layout/pixelAlign.d.ts +7 -0
  367. package/dist/ui/viewer/layout/pixelAlign.d.ts.map +1 -0
  368. package/dist/ui/viewer/layout/pixelAlign.js +22 -0
  369. package/dist/ui/viewer/layout/pixelAlign.js.map +1 -0
  370. package/dist/ui/viewer/layout/spreadLayout.d.ts +93 -0
  371. package/dist/ui/viewer/layout/spreadLayout.d.ts.map +1 -0
  372. package/dist/ui/viewer/layout/spreadLayout.js +303 -0
  373. package/dist/ui/viewer/layout/spreadLayout.js.map +1 -0
  374. package/dist/ui/viewer/navigation.d.ts +80 -0
  375. package/dist/ui/viewer/navigation.d.ts.map +1 -0
  376. package/dist/ui/viewer/navigation.js +59 -0
  377. package/dist/ui/viewer/navigation.js.map +1 -0
  378. package/dist/ui/viewer/reducer.d.ts +4 -0
  379. package/dist/ui/viewer/reducer.d.ts.map +1 -0
  380. package/dist/ui/viewer/reducer.js +229 -0
  381. package/dist/ui/viewer/reducer.js.map +1 -0
  382. package/dist/ui/viewer/rendering/RenderManager.d.ts +76 -0
  383. package/dist/ui/viewer/rendering/RenderManager.d.ts.map +1 -0
  384. package/dist/ui/viewer/rendering/RenderManager.js +236 -0
  385. package/dist/ui/viewer/rendering/RenderManager.js.map +1 -0
  386. package/dist/ui/viewer/shell.d.ts +29 -0
  387. package/dist/ui/viewer/shell.d.ts.map +1 -0
  388. package/dist/ui/viewer/shell.js +70 -0
  389. package/dist/ui/viewer/shell.js.map +1 -0
  390. package/dist/ui/viewer/state.d.ts +72 -0
  391. package/dist/ui/viewer/state.d.ts.map +1 -0
  392. package/dist/ui/viewer/state.js +47 -0
  393. package/dist/ui/viewer/state.js.map +1 -0
  394. package/dist/view/LayoutCalculator.d.ts +42 -0
  395. package/dist/view/LayoutCalculator.d.ts.map +1 -0
  396. package/dist/view/LayoutCalculator.js +180 -0
  397. package/dist/view/LayoutCalculator.js.map +1 -0
  398. package/dist/view/TransitionCoordinator.d.ts +11 -0
  399. package/dist/view/TransitionCoordinator.d.ts.map +1 -0
  400. package/dist/view/TransitionCoordinator.js +22 -0
  401. package/dist/view/TransitionCoordinator.js.map +1 -0
  402. package/dist/view/ViewState.d.ts +46 -0
  403. package/dist/view/ViewState.d.ts.map +1 -0
  404. package/dist/view/ViewState.js +109 -0
  405. package/dist/view/ViewState.js.map +1 -0
  406. package/dist/view/index.d.ts +7 -0
  407. package/dist/view/index.d.ts.map +1 -0
  408. package/dist/view/index.js +4 -0
  409. package/dist/view/index.js.map +1 -0
  410. package/dist/wasm/udoc.d.ts +202 -0
  411. package/dist/wasm/udoc.js +929 -0
  412. package/dist/wasm/udoc_bg.wasm +0 -0
  413. package/dist/wasm/udoc_bg.wasm.d.ts +28 -0
  414. package/dist/worker/WorkerClient.d.ts +103 -0
  415. package/dist/worker/WorkerClient.d.ts.map +1 -0
  416. package/dist/worker/WorkerClient.js +182 -0
  417. package/dist/worker/WorkerClient.js.map +1 -0
  418. package/dist/worker/index.d.ts +4 -0
  419. package/dist/worker/index.d.ts.map +1 -0
  420. package/dist/worker/index.js +2 -0
  421. package/dist/worker/index.js.map +1 -0
  422. package/dist/worker/types.d.ts +81 -0
  423. package/dist/worker/types.d.ts.map +1 -0
  424. package/dist/worker/types.js +6 -0
  425. package/dist/worker/types.js.map +1 -0
  426. package/dist/worker/worker.d.ts +191 -0
  427. package/dist/worker/worker.d.ts.map +1 -0
  428. package/dist/worker/worker.js +127 -0
  429. package/dist/worker/worker.js.map +1 -0
  430. package/dist/worker.d.ts +2 -0
  431. package/dist/worker.d.ts.map +1 -0
  432. package/dist/worker.js +205 -0
  433. package/dist/worker.js.map +1 -0
  434. package/package.json +32 -0
@@ -0,0 +1,303 @@
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
+ function applyRotation(size, rotation) {
148
+ const normalized = normalizeRotation(rotation);
149
+ if (normalized === 90 || normalized === 270) {
150
+ return { width: size.height, height: size.width };
151
+ }
152
+ return size;
153
+ }
154
+ /**
155
+ * Calculate spread layouts with positions for virtual scrolling.
156
+ *
157
+ * @param spreads - Array of spreads from calculateSpreads()
158
+ * @param pageInfos - Array of page sizes (0-indexed, in points)
159
+ * @param scale - Zoom scale factor
160
+ * @param pageSpacing - Horizontal spacing between pages in a spread
161
+ * @param spreadSpacing - Vertical spacing between spreads
162
+ * @param dpi - Display DPI for point-to-pixel conversion
163
+ * @param rotation - Page rotation in degrees
164
+ * @returns Layouts plus aggregated content size
165
+ */
166
+ export function calculateSpreadLayouts(spreads, pageInfos, scale, pageSpacing, spreadSpacing, dpi, rotation) {
167
+ // Snap all layout values to device pixels to ensure adjacent spreads align.
168
+ // We use CUMULATIVE snapping: each spread's top is calculated from the
169
+ // previous spread's snapped bottom, guaranteeing no gaps or overlaps.
170
+ const dpr = getDevicePixelRatio();
171
+ const layouts = [];
172
+ const spacingDevice = toDevicePixels(spreadSpacing, dpr);
173
+ let currentTopDevice = spreads.length > 0 ? spacingDevice : 0;
174
+ let maxWidthDevice = 0;
175
+ for (const spread of spreads) {
176
+ const { width, height } = getSpreadDimensionsDevice(spread, pageInfos, scale, pageSpacing, dpi, rotation, dpr);
177
+ layouts.push({
178
+ index: spread.index,
179
+ slots: spread.slots,
180
+ top: toCssPixels(currentTopDevice, dpr),
181
+ width: toCssPixels(width, dpr),
182
+ height: toCssPixels(height, dpr)
183
+ });
184
+ // Next spread's top = this spread's bottom + spacing
185
+ // Using snapped values ensures cumulative consistency
186
+ currentTopDevice += height + spacingDevice;
187
+ maxWidthDevice = Math.max(maxWidthDevice, width);
188
+ }
189
+ const contentHeight = spreads.length > 0
190
+ ? toCssPixels(currentTopDevice, dpr)
191
+ : 0;
192
+ return {
193
+ layouts,
194
+ contentWidth: toCssPixels(maxWidthDevice, dpr),
195
+ contentHeight
196
+ };
197
+ }
198
+ /**
199
+ * Calculate the dimensions of a spread based on its pages.
200
+ * Returns dimensions in CSS pixels (accounting for DPI conversion).
201
+ */
202
+ export function getSpreadDimensions(spread, pageInfos, scale, pageSpacing, dpi, rotation) {
203
+ const dpr = getDevicePixelRatio();
204
+ const deviceDims = getSpreadDimensionsDevice(spread, pageInfos, scale, pageSpacing, dpi, rotation, dpr);
205
+ return {
206
+ width: toCssPixels(deviceDims.width, dpr),
207
+ height: toCssPixels(deviceDims.height, dpr)
208
+ };
209
+ }
210
+ function getSpreadDimensionsDevice(spread, pageInfos, scale, pageSpacing, dpi, rotation, dpr) {
211
+ const pointsToPixels = getPointsToPixels(dpi);
212
+ let totalWidth = 0;
213
+ let maxHeight = 0;
214
+ const hasMultipleSlots = spread.slots.length > 1;
215
+ let referenceSize = null;
216
+ for (const slot of spread.slots) {
217
+ if (slot !== null) {
218
+ const size = pageInfos[slot - 1];
219
+ if (size) {
220
+ referenceSize = applyRotation(size, rotation);
221
+ break;
222
+ }
223
+ }
224
+ }
225
+ for (const slot of spread.slots) {
226
+ if (slot !== null) {
227
+ const pageIndex = slot - 1; // Convert 1-indexed page to 0-indexed
228
+ const size = pageInfos[pageIndex];
229
+ if (size) {
230
+ const rotated = applyRotation(size, rotation);
231
+ // Convert points to pixels: points * (dpi/72) * zoom
232
+ const widthDevice = toDevicePixels(rotated.width * pointsToPixels * scale, dpr);
233
+ const heightDevice = toDevicePixels(rotated.height * pointsToPixels * scale, dpr);
234
+ totalWidth += widthDevice;
235
+ maxHeight = Math.max(maxHeight, heightDevice);
236
+ }
237
+ }
238
+ else if (referenceSize) {
239
+ const widthDevice = toDevicePixels(referenceSize.width * pointsToPixels * scale, dpr);
240
+ const heightDevice = toDevicePixels(referenceSize.height * pointsToPixels * scale, dpr);
241
+ totalWidth += widthDevice;
242
+ maxHeight = Math.max(maxHeight, heightDevice);
243
+ }
244
+ }
245
+ // Add spacing between slots in multi-slot spreads (even if a slot is empty).
246
+ if (hasMultipleSlots) {
247
+ totalWidth += toDevicePixels(pageSpacing, dpr);
248
+ }
249
+ return { width: totalWidth, height: maxHeight };
250
+ }
251
+ /**
252
+ * Calculate total content height including all spreads and spacing.
253
+ */
254
+ export function calculateTotalHeight(layouts, spreadSpacing) {
255
+ if (layouts.length === 0)
256
+ return 0;
257
+ const lastLayout = layouts[layouts.length - 1];
258
+ return lastLayout.top + lastLayout.height + snapSpacing(spreadSpacing);
259
+ }
260
+ function snapSpacing(value) {
261
+ const dpr = getDevicePixelRatio();
262
+ return toCssPixels(toDevicePixels(value, dpr), dpr);
263
+ }
264
+ /**
265
+ * Find visible spread indices based on scroll position and viewport height.
266
+ *
267
+ * @param layouts - Array of spread layouts
268
+ * @param scrollTop - Current scroll position
269
+ * @param viewportHeight - Height of the visible viewport
270
+ * @param buffer - Number of extra spreads to include above/below (for smooth scrolling)
271
+ * @returns Object with start and end indices (inclusive)
272
+ */
273
+ export function findVisibleSpreadRange(layouts, scrollTop, viewportHeight, buffer = 1) {
274
+ if (layouts.length === 0) {
275
+ return { start: 0, end: -1 };
276
+ }
277
+ const viewportBottom = scrollTop + viewportHeight;
278
+ // Find first visible spread
279
+ let start = 0;
280
+ for (let i = 0; i < layouts.length; i++) {
281
+ const layout = layouts[i];
282
+ if (layout.top + layout.height >= scrollTop) {
283
+ start = i;
284
+ break;
285
+ }
286
+ start = i;
287
+ }
288
+ // Find last visible spread
289
+ let end = layouts.length - 1;
290
+ for (let i = start; i < layouts.length; i++) {
291
+ const layout = layouts[i];
292
+ if (layout.top > viewportBottom) {
293
+ end = i - 1;
294
+ break;
295
+ }
296
+ end = i;
297
+ }
298
+ // Apply buffer
299
+ start = Math.max(0, start - buffer);
300
+ end = Math.min(layouts.length - 1, end + buffer);
301
+ return { start, end };
302
+ }
303
+ //# sourceMappingURL=spreadLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spreadLayout.js","sourceRoot":"","sources":["../../../../src/ui/viewer/layout/spreadLayout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,59 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
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
@@ -0,0 +1 @@
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,CA8MvE"}