@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,68 @@
1
+ /**
2
+ * Optional base class for complex stateful components.
3
+ *
4
+ * Rules:
5
+ * - Root element is stable after mount.
6
+ * - render() patches DOM inside the root only.
7
+ * - destroy() must remove listeners and subscriptions.
8
+ *
9
+ * Usage:
10
+ * ```ts
11
+ * class Toolbar extends Component<{ store: Store<ViewerState, Action> }, State> {
12
+ * constructor(props: { store: Store<ViewerState, Action> }) {
13
+ * super(props, { page: 1 }, document.createElement("div"));
14
+ * this.el.className = "udoc-toolbar";
15
+ * }
16
+ * render(): void {
17
+ * this.el.textContent = String(this.state.page);
18
+ * }
19
+ * protected onMount(): void {
20
+ * this.props.store.dispatch({ type: "SET_PAGE", page: 1 });
21
+ * }
22
+ * }
23
+ * ```
24
+ *
25
+ * Alternative (preferred) factory pattern:
26
+ * ```ts
27
+ * export function createToolbar() {
28
+ * const el = document.createElement("div");
29
+ * el.className = "udoc-toolbar";
30
+ *
31
+ * let unsubRender: (() => void) | null = null;
32
+ * function mount(container: HTMLElement, store: Store<ViewerState, Action>): void {
33
+ * container.appendChild(el);
34
+ * unsubRender = store.subscribeRender((_prev, next) => {
35
+ * el.textContent = String(next.page);
36
+ * });
37
+ * }
38
+ *
39
+ * function destroy(): void {
40
+ * if (unsubRender) unsubRender();
41
+ * el.remove();
42
+ * }
43
+ *
44
+ * return { el, mount, destroy };
45
+ * }
46
+ * ```
47
+ */
48
+ export declare abstract class Component<P = {}, S = {}> {
49
+ protected props: P;
50
+ protected state: S;
51
+ protected el: HTMLElement;
52
+ private cleanups;
53
+ constructor(props: P, initialState: S, root: HTMLElement);
54
+ /** Patch DOM inside the stable root element. */
55
+ abstract render(): void;
56
+ /** Mount into a container and run initial render. */
57
+ mount(container: HTMLElement): void;
58
+ /** Clean up listeners/subscriptions and remove root. */
59
+ destroy(): void;
60
+ protected onMount(): void;
61
+ protected onUnmount(): void;
62
+ protected onUpdate(_prevProps: P, _prevState: S): void;
63
+ /** Local state update; triggers render. */
64
+ protected setState(partial: Partial<S>): void;
65
+ /** Register a cleanup for destroy(). */
66
+ protected track(cleanup: () => void): void;
67
+ }
68
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/ui/framework/component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,8BAAsB,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE;IAC1C,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACnB,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACnB,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW;IAMxD,gDAAgD;IAChD,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEvB,qDAAqD;IACrD,KAAK,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAMnC,wDAAwD;IACxD,OAAO,IAAI,IAAI;IAOf,SAAS,CAAC,OAAO,IAAI,IAAI;IACzB,SAAS,CAAC,SAAS,IAAI,IAAI;IAC3B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI;IAEtD,2CAA2C;IAC3C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAO7C,wCAAwC;IACxC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;CAG7C"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Optional base class for complex stateful components.
3
+ *
4
+ * Rules:
5
+ * - Root element is stable after mount.
6
+ * - render() patches DOM inside the root only.
7
+ * - destroy() must remove listeners and subscriptions.
8
+ *
9
+ * Usage:
10
+ * ```ts
11
+ * class Toolbar extends Component<{ store: Store<ViewerState, Action> }, State> {
12
+ * constructor(props: { store: Store<ViewerState, Action> }) {
13
+ * super(props, { page: 1 }, document.createElement("div"));
14
+ * this.el.className = "udoc-toolbar";
15
+ * }
16
+ * render(): void {
17
+ * this.el.textContent = String(this.state.page);
18
+ * }
19
+ * protected onMount(): void {
20
+ * this.props.store.dispatch({ type: "SET_PAGE", page: 1 });
21
+ * }
22
+ * }
23
+ * ```
24
+ *
25
+ * Alternative (preferred) factory pattern:
26
+ * ```ts
27
+ * export function createToolbar() {
28
+ * const el = document.createElement("div");
29
+ * el.className = "udoc-toolbar";
30
+ *
31
+ * let unsubRender: (() => void) | null = null;
32
+ * function mount(container: HTMLElement, store: Store<ViewerState, Action>): void {
33
+ * container.appendChild(el);
34
+ * unsubRender = store.subscribeRender((_prev, next) => {
35
+ * el.textContent = String(next.page);
36
+ * });
37
+ * }
38
+ *
39
+ * function destroy(): void {
40
+ * if (unsubRender) unsubRender();
41
+ * el.remove();
42
+ * }
43
+ *
44
+ * return { el, mount, destroy };
45
+ * }
46
+ * ```
47
+ */
48
+ export class Component {
49
+ props;
50
+ state;
51
+ el;
52
+ cleanups = [];
53
+ constructor(props, initialState, root) {
54
+ this.props = props;
55
+ this.state = initialState;
56
+ this.el = root;
57
+ }
58
+ /** Mount into a container and run initial render. */
59
+ mount(container) {
60
+ container.appendChild(this.el);
61
+ this.onMount();
62
+ this.render();
63
+ }
64
+ /** Clean up listeners/subscriptions and remove root. */
65
+ destroy() {
66
+ this.onUnmount();
67
+ for (const off of this.cleanups)
68
+ off();
69
+ this.cleanups = [];
70
+ this.el.remove();
71
+ }
72
+ onMount() { }
73
+ onUnmount() { }
74
+ onUpdate(_prevProps, _prevState) { }
75
+ /** Local state update; triggers render. */
76
+ setState(partial) {
77
+ const prevState = this.state;
78
+ this.state = { ...this.state, ...partial };
79
+ this.render();
80
+ this.onUpdate(this.props, prevState);
81
+ }
82
+ /** Register a cleanup for destroy(). */
83
+ track(cleanup) {
84
+ this.cleanups.push(cleanup);
85
+ }
86
+ }
87
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/ui/framework/component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,OAAgB,SAAS;IACjB,KAAK,CAAI;IACT,KAAK,CAAI;IACT,EAAE,CAAc;IAClB,QAAQ,GAAsB,EAAE,CAAC;IAEzC,YAAY,KAAQ,EAAE,YAAe,EAAE,IAAiB;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;QAC1B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACnB,CAAC;IAKD,qDAAqD;IACrD,KAAK,CAAC,SAAsB;QACxB,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,wDAAwD;IACxD,OAAO;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ;YAAE,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC;IAES,OAAO,KAAU,CAAC;IAClB,SAAS,KAAU,CAAC;IACpB,QAAQ,CAAC,UAAa,EAAE,UAAa,IAAS,CAAC;IAEzD,2CAA2C;IACjC,QAAQ,CAAC,OAAmB;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,wCAAwC;IAC9B,KAAK,CAAC,OAAmB;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACJ"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * DOM patch helpers.
3
+ *
4
+ * Rules:
5
+ * - Use in render subscribers only.
6
+ * - Avoid redundant writes for performance.
7
+ *
8
+ * Usage:
9
+ * ```ts
10
+ * setText(titleEl, state.title);
11
+ * toggleClass(panelEl, "is-open", state.open);
12
+ * ```
13
+ */
14
+ export declare function setText(el: Element, text: string): void;
15
+ /** Set or remove attribute with change detection. */
16
+ export declare function setAttr(el: Element, name: string, value: string | null): void;
17
+ /** Toggle class with optional explicit boolean. */
18
+ export declare function toggleClass(el: Element, className: string, force?: boolean): void;
19
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/ui/framework/dom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,qDAAqD;AACrD,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAG7E;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAEjF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * DOM patch helpers.
3
+ *
4
+ * Rules:
5
+ * - Use in render subscribers only.
6
+ * - Avoid redundant writes for performance.
7
+ *
8
+ * Usage:
9
+ * ```ts
10
+ * setText(titleEl, state.title);
11
+ * toggleClass(panelEl, "is-open", state.open);
12
+ * ```
13
+ */
14
+ export function setText(el, text) {
15
+ if (el.textContent !== text)
16
+ el.textContent = text;
17
+ }
18
+ /** Set or remove attribute with change detection. */
19
+ export function setAttr(el, name, value) {
20
+ if (value === null)
21
+ el.removeAttribute(name);
22
+ else if (el.getAttribute(name) !== value)
23
+ el.setAttribute(name, value);
24
+ }
25
+ /** Toggle class with optional explicit boolean. */
26
+ export function toggleClass(el, className, force) {
27
+ el.classList.toggle(className, force);
28
+ }
29
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/ui/framework/dom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,OAAO,CAAC,EAAW,EAAE,IAAY;IAC7C,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI;QAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;AACvD,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,OAAO,CAAC,EAAW,EAAE,IAAY,EAAE,KAAoB;IACnE,IAAI,KAAK,KAAK,IAAI;QAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACxC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK;QAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,WAAW,CAAC,EAAW,EAAE,SAAiB,EAAE,KAAe;IACvE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Event helpers.
3
+ *
4
+ * Rules:
5
+ * - Events represent intent; handlers should dispatch actions.
6
+ * - Avoid direct state mutation in event handlers.
7
+ *
8
+ * Usage:
9
+ * ```ts
10
+ * const off = on(buttonEl, "click", () => store.dispatch({ type: "NEXT_PAGE" }));
11
+ * emit(viewerEl, "udoc:page-change", { page: 2 });
12
+ * off();
13
+ * ```
14
+ */
15
+ export declare function emit<T>(el: Element, name: string, detail?: T): void;
16
+ /** Add a DOM listener and return a cleanup function. */
17
+ export declare function on<K extends keyof HTMLElementEventMap>(el: Element, type: K, handler: (ev: HTMLElementEventMap[K]) => void): () => void;
18
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/ui/framework/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAEnE;AAED,wDAAwD;AACxD,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAClD,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC9C,MAAM,IAAI,CAGZ"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Event helpers.
3
+ *
4
+ * Rules:
5
+ * - Events represent intent; handlers should dispatch actions.
6
+ * - Avoid direct state mutation in event handlers.
7
+ *
8
+ * Usage:
9
+ * ```ts
10
+ * const off = on(buttonEl, "click", () => store.dispatch({ type: "NEXT_PAGE" }));
11
+ * emit(viewerEl, "udoc:page-change", { page: 2 });
12
+ * off();
13
+ * ```
14
+ */
15
+ export function emit(el, name, detail) {
16
+ el.dispatchEvent(new CustomEvent(name, { bubbles: true, detail }));
17
+ }
18
+ /** Add a DOM listener and return a cleanup function. */
19
+ export function on(el, type, handler) {
20
+ el.addEventListener(type, handler);
21
+ return () => el.removeEventListener(type, handler);
22
+ }
23
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/ui/framework/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,IAAI,CAAI,EAAW,EAAE,IAAY,EAAE,MAAU;IACzD,EAAE,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,EAAE,CACd,EAAW,EACX,IAAO,EACP,OAA6C;IAE7C,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAwB,CAAC,CAAC;IACpD,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAwB,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Framework entry point.
3
+ * Re-export core primitives for app-layer usage.
4
+ *
5
+ * Usage:
6
+ * ```ts
7
+ * import { createStore, shallowEqual, Component } from "./ui/framework";
8
+ * ```
9
+ */
10
+ export * from "./store";
11
+ export * from "./selectors";
12
+ export * from "./component";
13
+ export * from "./dom";
14
+ export * from "./events";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/framework/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Framework entry point.
3
+ * Re-export core primitives for app-layer usage.
4
+ *
5
+ * Usage:
6
+ * ```ts
7
+ * import { createStore, shallowEqual, Component } from "./ui/framework";
8
+ * ```
9
+ */
10
+ export * from "./store";
11
+ export * from "./selectors";
12
+ export * from "./component";
13
+ export * from "./dom";
14
+ export * from "./events";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/framework/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Selector utilities.
3
+ *
4
+ * Why selectors:
5
+ * - Most components only care about a small slice of global state.
6
+ * - Using selectors lets you re-render only when that slice changes.
7
+ * - This keeps DOM work cheap and avoids coupling components to the full state.
8
+ *
9
+ * When to use:
10
+ * - Any component that reads state for rendering.
11
+ * - Any effect that should run only on specific state changes.
12
+ *
13
+ * How to use:
14
+ * 1) Define a selector that returns the minimal shape you need.
15
+ * 2) Subscribe with equality to skip redundant updates.
16
+ * 3) In the callback, patch DOM (render) or run async work (effect).
17
+ *
18
+ * Example (render):
19
+ * ```ts
20
+ * const selectToolbar = (s: ViewerState) => ({
21
+ * page: s.page,
22
+ * pageCount: s.pageCount
23
+ * });
24
+ *
25
+ * const off = subscribeSelector(store, selectToolbar, (next) => {
26
+ * pageInput.value = String(next.page);
27
+ * pageInput.max = String(Math.max(1, next.pageCount));
28
+ * }, { equality: shallowEqual });
29
+ * ```
30
+ *
31
+ * Example (effect):
32
+ * ```ts
33
+ * const off = subscribeSelector(store, s => s.zoom, (nextZoom) => {
34
+ * engine.setZoom(nextZoom);
35
+ * }, { phase: "effect" });
36
+ * ```
37
+ */
38
+ import type { Store } from "./store";
39
+ export type Equality<T> = (a: T, b: T) => boolean;
40
+ export type Selector<S, T> = (state: S) => T;
41
+ /** Shallow object equality for small selector slices. */
42
+ export declare function shallowEqual<T extends Record<string, unknown>>(a: T, b: T): boolean;
43
+ /**
44
+ * Subscribe to a derived slice with equality checking.
45
+ * Default phase is render; use phase "effect" for async work.
46
+ */
47
+ export declare function subscribeSelector<S, A, T>(store: Store<S, A>, selector: Selector<S, T>, listener: (next: T, prev: T) => void, options?: {
48
+ equality?: Equality<T>;
49
+ phase?: "render" | "effect";
50
+ }): () => void;
51
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../../src/ui/framework/selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;AAClD,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAE7C,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAInF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACrC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAClB,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EACpC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAO,GACtE,MAAM,IAAI,CAeZ"}
@@ -0,0 +1,30 @@
1
+ /** Shallow object equality for small selector slices. */
2
+ export function shallowEqual(a, b) {
3
+ for (const k in a)
4
+ if (a[k] !== b[k])
5
+ return false;
6
+ for (const k in b)
7
+ if (a[k] !== b[k])
8
+ return false;
9
+ return true;
10
+ }
11
+ /**
12
+ * Subscribe to a derived slice with equality checking.
13
+ * Default phase is render; use phase "effect" for async work.
14
+ */
15
+ export function subscribeSelector(store, selector, listener, options = {}) {
16
+ const equality = options.equality ?? Object.is;
17
+ let prevSlice = selector(store.getState());
18
+ const handler = (_prev, next) => {
19
+ const nextSlice = selector(next);
20
+ if (equality(prevSlice, nextSlice))
21
+ return;
22
+ const prev = prevSlice;
23
+ prevSlice = nextSlice;
24
+ listener(nextSlice, prev);
25
+ };
26
+ return options.phase === "effect"
27
+ ? store.subscribeEffect(handler)
28
+ : store.subscribeRender(handler);
29
+ }
30
+ //# sourceMappingURL=selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../../src/ui/framework/selectors.ts"],"names":[],"mappings":"AA0CA,yDAAyD;AACzD,MAAM,UAAU,YAAY,CAAoC,CAAI,EAAE,CAAI;IACtE,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACnD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC7B,KAAkB,EAClB,QAAwB,EACxB,QAAoC,EACpC,UAAmE,EAAE;IAErE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC;IAC/C,IAAI,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,CAAC,KAAQ,EAAE,IAAO,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;YAAE,OAAO;QAC3C,MAAM,IAAI,GAAG,SAAS,CAAC;QACvB,SAAS,GAAG,SAAS,CAAC;QACtB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;QAC7B,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;QAChC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Framework store: central event loop for state + subscriptions.
3
+ *
4
+ * Rules:
5
+ * - Reducers must be pure and synchronous.
6
+ * - Render subscribers update DOM only (no effects).
7
+ * - Effect subscribers may do async work and may dispatch.
8
+ * - Store does not know about viewer-specific state.
9
+ *
10
+ * Usage:
11
+ * ```ts
12
+ * const store = createStore(reducer, initialState, { batched: true });
13
+ * const off = store.subscribeRender((_prev, next) => render(next));
14
+ * store.dispatch({ type: "SET_PAGE", page: 2 });
15
+ * off();
16
+ * ```
17
+ */
18
+ export type Reducer<S, A> = (state: S, action: A) => S;
19
+ export type Subscriber<S> = (prev: S, next: S) => void;
20
+ export interface Store<S, A> {
21
+ /** Current state snapshot. */
22
+ getState(): S;
23
+ /** Dispatch an action to transition state via the reducer. */
24
+ dispatch(action: A): void;
25
+ /** Render-phase subscription (DOM only). */
26
+ subscribeRender(fn: Subscriber<S>): () => void;
27
+ /** Effect-phase subscription (async allowed). */
28
+ subscribeEffect(fn: Subscriber<S>): () => void;
29
+ }
30
+ /**
31
+ * Create a store with optional microtask batching for subscriber notifications.
32
+ * Batching groups multiple dispatches into a single notify cycle.
33
+ */
34
+ export declare function createStore<S, A>(reducer: Reducer<S, A>, initialState: S, options?: {
35
+ batched?: boolean;
36
+ }): Store<S, A>;
37
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ui/framework/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEvD,MAAM,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,IAAI,CAAC,CAAC;IACd,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1B,4CAA4C;IAC5C,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAC/C,iDAAiD;IACjD,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,YAAY,EAAE,CAAC,EACf,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAkDb"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Create a store with optional microtask batching for subscriber notifications.
3
+ * Batching groups multiple dispatches into a single notify cycle.
4
+ */
5
+ export function createStore(reducer, initialState, options = {}) {
6
+ let state = initialState;
7
+ const renderSubs = new Set();
8
+ const effectSubs = new Set();
9
+ const batched = options.batched ?? true;
10
+ let pending = false;
11
+ let lastPrev = null;
12
+ let lastNext = null;
13
+ function notify(prev, next) {
14
+ for (const fn of renderSubs)
15
+ fn(prev, next);
16
+ for (const fn of effectSubs)
17
+ fn(prev, next);
18
+ }
19
+ function scheduleNotify(prev, next) {
20
+ if (!batched)
21
+ return notify(prev, next);
22
+ lastPrev = lastPrev ?? prev;
23
+ lastNext = next;
24
+ if (pending)
25
+ return;
26
+ pending = true;
27
+ queueMicrotask(() => {
28
+ pending = false;
29
+ const p = lastPrev;
30
+ const n = lastNext;
31
+ lastPrev = null;
32
+ lastNext = null;
33
+ notify(p, n);
34
+ });
35
+ }
36
+ function dispatch(action) {
37
+ const prev = state;
38
+ const next = reducer(prev, action);
39
+ if (next === prev)
40
+ return;
41
+ state = next;
42
+ scheduleNotify(prev, next);
43
+ }
44
+ function subscribeRender(fn) {
45
+ renderSubs.add(fn);
46
+ return () => renderSubs.delete(fn);
47
+ }
48
+ function subscribeEffect(fn) {
49
+ effectSubs.add(fn);
50
+ return () => effectSubs.delete(fn);
51
+ }
52
+ return { getState: () => state, dispatch, subscribeRender, subscribeEffect };
53
+ }
54
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ui/framework/store.ts"],"names":[],"mappings":"AA+BA;;;GAGG;AACH,MAAM,UAAU,WAAW,CACvB,OAAsB,EACtB,YAAe,EACf,UAAiC,EAAE;IAEnC,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAAQ,GAAa,IAAI,CAAC;IAC9B,IAAI,QAAQ,GAAa,IAAI,CAAC;IAE9B,SAAS,MAAM,CAAC,IAAO,EAAE,IAAO;QAC5B,KAAK,MAAM,EAAE,IAAI,UAAU;YAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,MAAM,EAAE,IAAI,UAAU;YAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,cAAc,CAAC,IAAO,EAAE,IAAO;QACpC,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QAC5B,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,cAAc,CAAC,GAAG,EAAE;YAChB,OAAO,GAAG,KAAK,CAAC;YAChB,MAAM,CAAC,GAAG,QAAa,CAAC;YACxB,MAAM,CAAC,GAAG,QAAa,CAAC;YACxB,QAAQ,GAAG,IAAI,CAAC;YAChB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,QAAQ,CAAC,MAAS;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO;QAC1B,KAAK,GAAG,IAAI,CAAC;QACb,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,eAAe,CAAC,EAAiB;QACtC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,SAAS,eAAe,CAAC,EAAiB;QACtC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AACjF,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * SVG icon definitions for the viewer UI.
3
+ */
4
+ export declare const ICONS: {
5
+ readonly menu: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>";
6
+ readonly fullscreen: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"/></svg>";
7
+ readonly fullscreenExit: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\"/></svg>";
8
+ readonly chevronLeft: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/></svg>";
9
+ readonly chevronRight: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/></svg>";
10
+ readonly chevronDown: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>";
11
+ readonly zoomIn: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"/></svg>";
12
+ readonly zoomOut: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 13H5v-2h14v2z\"/></svg>";
13
+ readonly settings: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z\"/></svg>";
14
+ readonly displaySingle: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"5\" y=\"4\" width=\"14\" height=\"16\" rx=\"1\"/></svg>";
15
+ readonly displayScroll: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 2 L5 11 L19 11 L19 2\"/><path d=\"M5 24 L5 15 L19 15 L19 24\"/></svg>";
16
+ readonly layout1up: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"1\"/></svg>";
17
+ readonly layout2up: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"8\" height=\"16\" rx=\"1\"/><rect x=\"14\" y=\"4\" width=\"8\" height=\"16\" rx=\"1\"/></svg>";
18
+ readonly layout2upCover: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"8\" height=\"16\" rx=\"1\" stroke-dasharray=\"3 2\"/><rect x=\"14\" y=\"4\" width=\"8\" height=\"16\" rx=\"1\"/></svg>";
19
+ readonly layoutGrid: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/></svg>";
20
+ readonly rotate0: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 4 L14 4 L18 8 L18 20 L6 20 Z\"/><path d=\"M14 4 L14 8 L18 8\"/></svg>";
21
+ readonly rotate90: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 18 L20 10 L16 6 L4 6 L4 18 Z\"/><path d=\"M20 10 L16 10 L16 6\"/></svg>";
22
+ readonly rotate180: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 20 L10 20 L6 16 L6 4 L18 4 Z\"/><path d=\"M10 20 L10 16 L6 16\"/></svg>";
23
+ readonly rotate270: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 6 L4 14 L8 18 L20 18 L20 6 Z\"/><path d=\"M4 14 L8 14 L8 18\"/></svg>";
24
+ readonly thumbnails: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"8\" rx=\"1\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"8\" rx=\"1\"/><rect x=\"3\" y=\"13\" width=\"7\" height=\"8\" rx=\"1\"/><rect x=\"14\" y=\"13\" width=\"7\" height=\"8\" rx=\"1\"/></svg>";
25
+ readonly outline: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16-12v2h2V5h-2zm0 6h2v-2h-2v2zm0 6h2v-2h-2v2z\"/></svg>";
26
+ readonly bookmark: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17 3H7c-1.1 0-2 .9-2 2v16l7-3 7 3V5c0-1.1-.9-2-2-2z\"/></svg>";
27
+ readonly attachment: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 0 1 5 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 0 0 5 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"/></svg>";
28
+ readonly comments: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M21 6h-2V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2v3a1 1 0 0 0 1 1h13l4 3v-17zM7 14H4V4h12v10H7z\"/></svg>";
29
+ readonly annotations: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"/></svg>";
30
+ readonly search: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/></svg>";
31
+ readonly properties: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"/></svg>";
32
+ readonly rightPanel: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14h-6V6h6v12z\"/></svg>";
33
+ readonly toolSelect: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7 2l12 11.2-5.8.5 3.3 7.3-2.2 1-3.2-7.4L7 18.5V2z\"/></svg>";
34
+ readonly toolHand: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 11V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2v0\"/><path d=\"M14 10V4a2 2 0 0 0-2-2 2 2 0 0 0-2 2v2\"/><path d=\"M10 10.5V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2v8\"/><path d=\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15\"/></svg>";
35
+ readonly seamlessOff: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M10 2v8H2M14 2v8h8M10 22v-8H2M14 22v-8h8\"/></svg>";
36
+ readonly seamlessOn: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2v20M2 12h20\"/></svg>";
37
+ readonly stickyNote: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H15l6-6V5c0-1.11-.9-2-2-2zm-7 8H7V9h5v2zm5-4H7V5h10v2zm-1 10v-4.5c0-.28.22-.5.5-.5H21l-5 5z\"/></svg>";
38
+ };
39
+ /**
40
+ * Type for icon names.
41
+ */
42
+ export type IconName = keyof typeof ICONS;
43
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/ui/icons/icons.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCR,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,KAAK,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * SVG icon definitions for the viewer UI.
3
+ */
4
+ export const ICONS = {
5
+ menu: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>`,
6
+ fullscreen: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg>`,
7
+ fullscreenExit: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/></svg>`,
8
+ chevronLeft: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg>`,
9
+ chevronRight: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg>`,
10
+ chevronDown: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg>`,
11
+ zoomIn: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/></svg>`,
12
+ zoomOut: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 13H5v-2h14v2z"/></svg>`,
13
+ settings: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/></svg>`,
14
+ // Display mode icons
15
+ displaySingle: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="5" y="4" width="14" height="16" rx="1"/></svg>`,
16
+ displayScroll: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 2 L5 11 L19 11 L19 2"/><path d="M5 24 L5 15 L19 15 L19 24"/></svg>`,
17
+ // Layout mode icons
18
+ layout1up: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="6" y="3" width="12" height="18" rx="1"/></svg>`,
19
+ layout2up: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="8" height="16" rx="1"/><rect x="14" y="4" width="8" height="16" rx="1"/></svg>`,
20
+ layout2upCover: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="8" height="16" rx="1" stroke-dasharray="3 2"/><rect x="14" y="4" width="8" height="16" rx="1"/></svg>`,
21
+ layoutGrid: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></svg>`,
22
+ // Rotation icons (page with corner fold indicating orientation)
23
+ rotate0: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4 L14 4 L18 8 L18 20 L6 20 Z"/><path d="M14 4 L14 8 L18 8"/></svg>`,
24
+ rotate90: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 18 L20 10 L16 6 L4 6 L4 18 Z"/><path d="M20 10 L16 10 L16 6"/></svg>`,
25
+ rotate180: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 20 L10 20 L6 16 L6 4 L18 4 Z"/><path d="M10 20 L10 16 L6 16"/></svg>`,
26
+ rotate270: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6 L4 14 L8 18 L20 18 L20 6 Z"/><path d="M4 14 L8 14 L8 18"/></svg>`,
27
+ // Panel tab icons
28
+ thumbnails: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="8" rx="1"/><rect x="14" y="3" width="7" height="8" rx="1"/><rect x="3" y="13" width="7" height="8" rx="1"/><rect x="14" y="13" width="7" height="8" rx="1"/></svg>`,
29
+ outline: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16-12v2h2V5h-2zm0 6h2v-2h-2v2zm0 6h2v-2h-2v2z"/></svg>`,
30
+ bookmark: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M17 3H7c-1.1 0-2 .9-2 2v16l7-3 7 3V5c0-1.1-.9-2-2-2z"/></svg>`,
31
+ attachment: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 0 1 5 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 0 0 5 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"/></svg>`,
32
+ comments: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M21 6h-2V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2v3a1 1 0 0 0 1 1h13l4 3v-17zM7 14H4V4h12v10H7z"/></svg>`,
33
+ annotations: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"/></svg>`,
34
+ search: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>`,
35
+ properties: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>`,
36
+ rightPanel: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14h-6V6h6v12z"/></svg>`,
37
+ // Tool icons
38
+ toolSelect: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 2l12 11.2-5.8.5 3.3 7.3-2.2 1-3.2-7.4L7 18.5V2z"/></svg>`,
39
+ toolHand: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2v0"/><path d="M14 10V4a2 2 0 0 0-2-2 2 2 0 0 0-2 2v2"/><path d="M10 10.5V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg>`,
40
+ // Seamless mode icons (4-page intersection: L-corners pointing to center vs cross)
41
+ seamlessOff: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10 2v8H2M14 2v8h8M10 22v-8H2M14 22v-8h8"/></svg>`,
42
+ seamlessOn: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M2 12h20"/></svg>`,
43
+ // Sticky note icon for text annotations
44
+ stickyNote: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H15l6-6V5c0-1.11-.9-2-2-2zm-7 8H7V9h5v2zm5-4H7V5h10v2zm-1 10v-4.5c0-.28.22-.5.5-.5H21l-5 5z"/></svg>`,
45
+ };
46
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../src/ui/icons/icons.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,IAAI,EAAE,8GAA8G;IACpH,UAAU,EAAE,+IAA+I;IAC3J,cAAc,EAAE,8IAA8I;IAC9J,WAAW,EAAE,8GAA8G;IAC3H,YAAY,EAAE,+GAA+G;IAC7H,WAAW,EAAE,wHAAwH;IACrI,MAAM,EAAE,oGAAoG;IAC5G,OAAO,EAAE,kFAAkF;IAC3F,QAAQ,EAAE,8vBAA8vB;IACxwB,qBAAqB;IACrB,aAAa,EAAE,qIAAqI;IACpJ,aAAa,EAAE,4JAA4J;IAC3K,oBAAoB;IACpB,SAAS,EAAE,qIAAqI;IAChJ,SAAS,EAAE,qLAAqL;IAChM,cAAc,EAAE,4MAA4M;IAC5N,UAAU,EAAE,oRAAoR;IAChS,gEAAgE;IAChE,OAAO,EAAE,4JAA4J;IACrK,QAAQ,EAAE,+JAA+J;IACzK,SAAS,EAAE,+JAA+J;IAC1K,SAAS,EAAE,4JAA4J;IACvK,kBAAkB;IAClB,UAAU,EAAE,oRAAoR;IAChS,OAAO,EAAE,2JAA2J;IACpK,QAAQ,EAAE,qHAAqH;IAC/H,UAAU,EAAE,+QAA+Q;IAC3R,QAAQ,EAAE,0KAA0K;IACpL,WAAW,EAAE,kNAAkN;IAC/N,MAAM,EAAE,2QAA2Q;IACnR,UAAU,EAAE,iKAAiK;IAC7K,UAAU,EAAE,6JAA6J;IACzK,aAAa;IACb,UAAU,EAAE,mHAAmH;IAC/H,QAAQ,EAAE,wYAAwY;IAClZ,mFAAmF;IACnF,WAAW,EAAE,wIAAwI;IACrJ,UAAU,EAAE,gHAAgH;IAC5H,wCAAwC;IACxC,UAAU,EAAE,oNAAoN;CAC1N,CAAC"}