@docmentis/udoc-viewer 0.1.0 → 0.1.1

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 (263) hide show
  1. package/dist/wasm/udoc_bg.wasm +0 -0
  2. package/dist/worker/WorkerClient.js +1 -1
  3. package/package.json +11 -3
  4. package/dist/WorkerClient.d.ts +0 -36
  5. package/dist/WorkerClient.d.ts.map +0 -1
  6. package/dist/WorkerClient.js +0 -121
  7. package/dist/WorkerClient.js.map +0 -1
  8. package/dist/annotation/AnnotationLayer.d.ts +0 -166
  9. package/dist/annotation/AnnotationLayer.d.ts.map +0 -1
  10. package/dist/annotation/AnnotationLayer.js +0 -1090
  11. package/dist/annotation/AnnotationLayer.js.map +0 -1
  12. package/dist/annotation/index.d.ts +0 -6
  13. package/dist/annotation/index.d.ts.map +0 -1
  14. package/dist/annotation/index.js +0 -6
  15. package/dist/annotation/index.js.map +0 -1
  16. package/dist/components/FloatingBar.d.ts +0 -102
  17. package/dist/components/FloatingBar.d.ts.map +0 -1
  18. package/dist/components/FloatingBar.js +0 -513
  19. package/dist/components/FloatingBar.js.map +0 -1
  20. package/dist/components/Header.d.ts +0 -46
  21. package/dist/components/Header.d.ts.map +0 -1
  22. package/dist/components/Header.js +0 -93
  23. package/dist/components/Header.js.map +0 -1
  24. package/dist/components/index.d.ts +0 -6
  25. package/dist/components/index.d.ts.map +0 -1
  26. package/dist/components/index.js +0 -4
  27. package/dist/components/index.js.map +0 -1
  28. package/dist/components/panels/CommentsPanel.d.ts +0 -33
  29. package/dist/components/panels/CommentsPanel.d.ts.map +0 -1
  30. package/dist/components/panels/CommentsPanel.js +0 -176
  31. package/dist/components/panels/CommentsPanel.js.map +0 -1
  32. package/dist/components/panels/OutlinePanel.d.ts +0 -30
  33. package/dist/components/panels/OutlinePanel.d.ts.map +0 -1
  34. package/dist/components/panels/OutlinePanel.js +0 -144
  35. package/dist/components/panels/OutlinePanel.js.map +0 -1
  36. package/dist/components/panels/ThumbnailsPanel.d.ts +0 -51
  37. package/dist/components/panels/ThumbnailsPanel.d.ts.map +0 -1
  38. package/dist/components/panels/ThumbnailsPanel.js +0 -160
  39. package/dist/components/panels/ThumbnailsPanel.js.map +0 -1
  40. package/dist/components/panels/index.d.ts +0 -7
  41. package/dist/components/panels/index.d.ts.map +0 -1
  42. package/dist/components/panels/index.js +0 -4
  43. package/dist/components/panels/index.js.map +0 -1
  44. package/dist/constants.d.ts +0 -25
  45. package/dist/constants.d.ts.map +0 -1
  46. package/dist/constants.js +0 -46
  47. package/dist/constants.js.map +0 -1
  48. package/dist/core/NavigationController.d.ts +0 -54
  49. package/dist/core/NavigationController.d.ts.map +0 -1
  50. package/dist/core/NavigationController.js +0 -145
  51. package/dist/core/NavigationController.js.map +0 -1
  52. package/dist/core/PerfTimer.d.ts +0 -12
  53. package/dist/core/PerfTimer.d.ts.map +0 -1
  54. package/dist/core/PerfTimer.js +0 -32
  55. package/dist/core/PerfTimer.js.map +0 -1
  56. package/dist/core/ViewerState.d.ts +0 -108
  57. package/dist/core/ViewerState.d.ts.map +0 -1
  58. package/dist/core/ViewerState.js +0 -179
  59. package/dist/core/ViewerState.js.map +0 -1
  60. package/dist/core/constants.d.ts +0 -24
  61. package/dist/core/constants.d.ts.map +0 -1
  62. package/dist/core/constants.js +0 -42
  63. package/dist/core/constants.js.map +0 -1
  64. package/dist/core/index.d.ts +0 -8
  65. package/dist/core/index.d.ts.map +0 -1
  66. package/dist/core/index.js +0 -11
  67. package/dist/core/index.js.map +0 -1
  68. package/dist/core/types.d.ts +0 -573
  69. package/dist/core/types.d.ts.map +0 -1
  70. package/dist/core/types.js +0 -5
  71. package/dist/core/types.js.map +0 -1
  72. package/dist/icons/icons.d.ts +0 -41
  73. package/dist/icons/icons.d.ts.map +0 -1
  74. package/dist/icons/icons.js +0 -51
  75. package/dist/icons/icons.js.map +0 -1
  76. package/dist/icons/index.d.ts +0 -3
  77. package/dist/icons/index.d.ts.map +0 -1
  78. package/dist/icons/index.js +0 -2
  79. package/dist/icons/index.js.map +0 -1
  80. package/dist/layout/BandManager.d.ts +0 -87
  81. package/dist/layout/BandManager.d.ts.map +0 -1
  82. package/dist/layout/BandManager.js +0 -185
  83. package/dist/layout/BandManager.js.map +0 -1
  84. package/dist/layout/LayoutCalculator.d.ts +0 -42
  85. package/dist/layout/LayoutCalculator.d.ts.map +0 -1
  86. package/dist/layout/LayoutCalculator.js +0 -180
  87. package/dist/layout/LayoutCalculator.js.map +0 -1
  88. package/dist/layout/LayoutState.d.ts +0 -46
  89. package/dist/layout/LayoutState.d.ts.map +0 -1
  90. package/dist/layout/LayoutState.js +0 -109
  91. package/dist/layout/LayoutState.js.map +0 -1
  92. package/dist/layout/TransitionCoordinator.d.ts +0 -11
  93. package/dist/layout/TransitionCoordinator.d.ts.map +0 -1
  94. package/dist/layout/TransitionCoordinator.js +0 -22
  95. package/dist/layout/TransitionCoordinator.js.map +0 -1
  96. package/dist/layout/index.d.ts +0 -7
  97. package/dist/layout/index.d.ts.map +0 -1
  98. package/dist/layout/index.js +0 -4
  99. package/dist/layout/index.js.map +0 -1
  100. package/dist/rendering/BandManager.d.ts +0 -87
  101. package/dist/rendering/BandManager.d.ts.map +0 -1
  102. package/dist/rendering/BandManager.js +0 -185
  103. package/dist/rendering/BandManager.js.map +0 -1
  104. package/dist/rendering/PageCache.d.ts +0 -75
  105. package/dist/rendering/PageCache.d.ts.map +0 -1
  106. package/dist/rendering/PageCache.js +0 -122
  107. package/dist/rendering/PageCache.js.map +0 -1
  108. package/dist/rendering/RenderQueue.d.ts +0 -75
  109. package/dist/rendering/RenderQueue.d.ts.map +0 -1
  110. package/dist/rendering/RenderQueue.js +0 -105
  111. package/dist/rendering/RenderQueue.js.map +0 -1
  112. package/dist/rendering/ThumbnailQueue.d.ts +0 -57
  113. package/dist/rendering/ThumbnailQueue.d.ts.map +0 -1
  114. package/dist/rendering/ThumbnailQueue.js +0 -85
  115. package/dist/rendering/ThumbnailQueue.js.map +0 -1
  116. package/dist/rendering/index.d.ts +0 -13
  117. package/dist/rendering/index.d.ts.map +0 -1
  118. package/dist/rendering/index.js +0 -10
  119. package/dist/rendering/index.js.map +0 -1
  120. package/dist/rendering/types.d.ts +0 -72
  121. package/dist/rendering/types.d.ts.map +0 -1
  122. package/dist/rendering/types.js +0 -5
  123. package/dist/rendering/types.js.map +0 -1
  124. package/dist/styles/index.d.ts +0 -6
  125. package/dist/styles/index.d.ts.map +0 -1
  126. package/dist/styles/index.js +0 -1221
  127. package/dist/styles/index.js.map +0 -1
  128. package/dist/types.d.ts +0 -6
  129. package/dist/types.d.ts.map +0 -1
  130. package/dist/types.js +0 -6
  131. package/dist/types.js.map +0 -1
  132. package/dist/ui/Component.d.ts +0 -127
  133. package/dist/ui/Component.d.ts.map +0 -1
  134. package/dist/ui/Component.js +0 -201
  135. package/dist/ui/Component.js.map +0 -1
  136. package/dist/ui/annotation/AnnotationLayer.d.ts +0 -90
  137. package/dist/ui/annotation/AnnotationLayer.d.ts.map +0 -1
  138. package/dist/ui/annotation/AnnotationLayer.js +0 -322
  139. package/dist/ui/annotation/AnnotationLayer.js.map +0 -1
  140. package/dist/ui/annotation/LinkRenderer.d.ts +0 -32
  141. package/dist/ui/annotation/LinkRenderer.d.ts.map +0 -1
  142. package/dist/ui/annotation/LinkRenderer.js +0 -74
  143. package/dist/ui/annotation/LinkRenderer.js.map +0 -1
  144. package/dist/ui/annotation/MarkupRenderer.d.ts +0 -40
  145. package/dist/ui/annotation/MarkupRenderer.d.ts.map +0 -1
  146. package/dist/ui/annotation/MarkupRenderer.js +0 -154
  147. package/dist/ui/annotation/MarkupRenderer.js.map +0 -1
  148. package/dist/ui/annotation/ShapeRenderer.d.ts +0 -46
  149. package/dist/ui/annotation/ShapeRenderer.d.ts.map +0 -1
  150. package/dist/ui/annotation/ShapeRenderer.js +0 -376
  151. package/dist/ui/annotation/ShapeRenderer.js.map +0 -1
  152. package/dist/ui/annotation/TextRenderer.d.ts +0 -36
  153. package/dist/ui/annotation/TextRenderer.d.ts.map +0 -1
  154. package/dist/ui/annotation/TextRenderer.js +0 -199
  155. package/dist/ui/annotation/TextRenderer.js.map +0 -1
  156. package/dist/ui/annotation/index.d.ts +0 -17
  157. package/dist/ui/annotation/index.d.ts.map +0 -1
  158. package/dist/ui/annotation/index.js +0 -13
  159. package/dist/ui/annotation/index.js.map +0 -1
  160. package/dist/ui/annotation/utils.d.ts +0 -40
  161. package/dist/ui/annotation/utils.d.ts.map +0 -1
  162. package/dist/ui/annotation/utils.js +0 -62
  163. package/dist/ui/annotation/utils.js.map +0 -1
  164. package/dist/ui/components/CommentsContent.d.ts +0 -35
  165. package/dist/ui/components/CommentsContent.d.ts.map +0 -1
  166. package/dist/ui/components/CommentsContent.js +0 -203
  167. package/dist/ui/components/CommentsContent.js.map +0 -1
  168. package/dist/ui/components/FloatingBar.d.ts +0 -55
  169. package/dist/ui/components/FloatingBar.d.ts.map +0 -1
  170. package/dist/ui/components/FloatingBar.js +0 -585
  171. package/dist/ui/components/FloatingBar.js.map +0 -1
  172. package/dist/ui/components/Header.d.ts +0 -29
  173. package/dist/ui/components/Header.d.ts.map +0 -1
  174. package/dist/ui/components/Header.js +0 -127
  175. package/dist/ui/components/Header.js.map +0 -1
  176. package/dist/ui/components/LeftPanel.d.ts +0 -54
  177. package/dist/ui/components/LeftPanel.d.ts.map +0 -1
  178. package/dist/ui/components/LeftPanel.js +0 -202
  179. package/dist/ui/components/LeftPanel.js.map +0 -1
  180. package/dist/ui/components/OutlineContent.d.ts +0 -34
  181. package/dist/ui/components/OutlineContent.d.ts.map +0 -1
  182. package/dist/ui/components/OutlineContent.js +0 -147
  183. package/dist/ui/components/OutlineContent.js.map +0 -1
  184. package/dist/ui/components/RightPanel.d.ts +0 -52
  185. package/dist/ui/components/RightPanel.d.ts.map +0 -1
  186. package/dist/ui/components/RightPanel.js +0 -142
  187. package/dist/ui/components/RightPanel.js.map +0 -1
  188. package/dist/ui/components/Viewport.d.ts +0 -70
  189. package/dist/ui/components/Viewport.d.ts.map +0 -1
  190. package/dist/ui/components/Viewport.js +0 -173
  191. package/dist/ui/components/Viewport.js.map +0 -1
  192. package/dist/ui/components/index.d.ts +0 -11
  193. package/dist/ui/components/index.d.ts.map +0 -1
  194. package/dist/ui/components/index.js +0 -10
  195. package/dist/ui/components/index.js.map +0 -1
  196. package/dist/ui/icons/icons.d.ts +0 -43
  197. package/dist/ui/icons/icons.d.ts.map +0 -1
  198. package/dist/ui/icons/icons.js +0 -46
  199. package/dist/ui/icons/icons.js.map +0 -1
  200. package/dist/ui/icons/index.d.ts +0 -11
  201. package/dist/ui/icons/index.d.ts.map +0 -1
  202. package/dist/ui/icons/index.js +0 -18
  203. package/dist/ui/icons/index.js.map +0 -1
  204. package/dist/ui/index.d.ts +0 -7
  205. package/dist/ui/index.d.ts.map +0 -1
  206. package/dist/ui/index.js +0 -9
  207. package/dist/ui/index.js.map +0 -1
  208. package/dist/ui/styles/base.css.d.ts +0 -5
  209. package/dist/ui/styles/base.css.d.ts.map +0 -1
  210. package/dist/ui/styles/base.css.js +0 -49
  211. package/dist/ui/styles/base.css.js.map +0 -1
  212. package/dist/ui/styles/floating-bar.css.d.ts +0 -5
  213. package/dist/ui/styles/floating-bar.css.d.ts.map +0 -1
  214. package/dist/ui/styles/floating-bar.css.js +0 -417
  215. package/dist/ui/styles/floating-bar.css.js.map +0 -1
  216. package/dist/ui/styles/header.css.d.ts +0 -5
  217. package/dist/ui/styles/header.css.d.ts.map +0 -1
  218. package/dist/ui/styles/header.css.js +0 -49
  219. package/dist/ui/styles/header.css.js.map +0 -1
  220. package/dist/ui/styles/index.d.ts +0 -21
  221. package/dist/ui/styles/index.d.ts.map +0 -1
  222. package/dist/ui/styles/index.js +0 -48
  223. package/dist/ui/styles/index.js.map +0 -1
  224. package/dist/ui/styles/panels.css.d.ts +0 -5
  225. package/dist/ui/styles/panels.css.d.ts.map +0 -1
  226. package/dist/ui/styles/panels.css.js +0 -446
  227. package/dist/ui/styles/panels.css.js.map +0 -1
  228. package/dist/ui/styles/responsive.css.d.ts +0 -5
  229. package/dist/ui/styles/responsive.css.d.ts.map +0 -1
  230. package/dist/ui/styles/responsive.css.js +0 -201
  231. package/dist/ui/styles/responsive.css.js.map +0 -1
  232. package/dist/ui/styles/variables.css.d.ts +0 -6
  233. package/dist/ui/styles/variables.css.d.ts.map +0 -1
  234. package/dist/ui/styles/variables.css.js +0 -75
  235. package/dist/ui/styles/variables.css.js.map +0 -1
  236. package/dist/ui/styles/viewport.css.d.ts +0 -5
  237. package/dist/ui/styles/viewport.css.d.ts.map +0 -1
  238. package/dist/ui/styles/viewport.css.js +0 -87
  239. package/dist/ui/styles/viewport.css.js.map +0 -1
  240. package/dist/view/LayoutCalculator.d.ts +0 -42
  241. package/dist/view/LayoutCalculator.d.ts.map +0 -1
  242. package/dist/view/LayoutCalculator.js +0 -180
  243. package/dist/view/LayoutCalculator.js.map +0 -1
  244. package/dist/view/TransitionCoordinator.d.ts +0 -11
  245. package/dist/view/TransitionCoordinator.d.ts.map +0 -1
  246. package/dist/view/TransitionCoordinator.js +0 -22
  247. package/dist/view/TransitionCoordinator.js.map +0 -1
  248. package/dist/view/ViewState.d.ts +0 -46
  249. package/dist/view/ViewState.d.ts.map +0 -1
  250. package/dist/view/ViewState.js +0 -109
  251. package/dist/view/ViewState.js.map +0 -1
  252. package/dist/view/index.d.ts +0 -7
  253. package/dist/view/index.d.ts.map +0 -1
  254. package/dist/view/index.js +0 -4
  255. package/dist/view/index.js.map +0 -1
  256. package/dist/worker/types.d.ts +0 -81
  257. package/dist/worker/types.d.ts.map +0 -1
  258. package/dist/worker/types.js +0 -6
  259. package/dist/worker/types.js.map +0 -1
  260. package/dist/worker.d.ts +0 -2
  261. package/dist/worker.d.ts.map +0 -1
  262. package/dist/worker.js +0 -205
  263. package/dist/worker.js.map +0 -1
@@ -1,122 +0,0 @@
1
- /**
2
- * LRU cache for rendered page images.
3
- */
4
- export class PageCache {
5
- cache = new Map();
6
- options;
7
- constructor(options) {
8
- this.options = options;
9
- }
10
- /**
11
- * Check if caching is enabled.
12
- */
13
- isEnabled() {
14
- return this.options.renderFormat === 'png' && this.options.maxSize > 0;
15
- }
16
- /**
17
- * Update cache options.
18
- */
19
- setOptions(options) {
20
- this.options = { ...this.options, ...options };
21
- // Trim cache if max size was reduced
22
- this.trim();
23
- }
24
- /**
25
- * Store a rendered page in the cache.
26
- *
27
- * @param pageIndex Page index
28
- * @param view Page view with blobUrl to cache
29
- * @returns true if stored successfully, false if caching not possible
30
- */
31
- store(pageIndex, view) {
32
- if (!this.isEnabled())
33
- return false;
34
- if (!view.blobUrl)
35
- return false;
36
- if (view.renderWidth <= 0 || view.renderHeight <= 0)
37
- return false;
38
- const key = this.getKey(pageIndex, view.renderWidth, view.renderHeight);
39
- const existing = this.cache.get(key);
40
- // Revoke old URL if it's different
41
- if (existing && existing.url !== view.blobUrl) {
42
- URL.revokeObjectURL(existing.url);
43
- }
44
- this.cache.set(key, {
45
- pageIndex,
46
- renderWidth: view.renderWidth,
47
- renderHeight: view.renderHeight,
48
- url: view.blobUrl,
49
- });
50
- this.trim();
51
- return true;
52
- }
53
- /**
54
- * Take a cached page from the cache (removes it from cache).
55
- *
56
- * @param pageIndex Page index
57
- * @param renderWidth Render width to match
58
- * @param renderHeight Render height to match
59
- * @returns The cached page if found, null otherwise
60
- */
61
- take(pageIndex, renderWidth, renderHeight) {
62
- if (!this.isEnabled())
63
- return null;
64
- const key = this.getKey(pageIndex, renderWidth, renderHeight);
65
- const cached = this.cache.get(key);
66
- if (!cached)
67
- return null;
68
- this.cache.delete(key);
69
- return cached;
70
- }
71
- /**
72
- * Check if a page is cached.
73
- *
74
- * @param pageIndex Page index
75
- * @param renderWidth Render width to match
76
- * @param renderHeight Render height to match
77
- * @returns true if cached
78
- */
79
- has(pageIndex, renderWidth, renderHeight) {
80
- if (!this.isEnabled())
81
- return false;
82
- return this.cache.has(this.getKey(pageIndex, renderWidth, renderHeight));
83
- }
84
- /**
85
- * Clear all cached pages and revoke blob URLs.
86
- */
87
- clear() {
88
- for (const entry of this.cache.values()) {
89
- URL.revokeObjectURL(entry.url);
90
- }
91
- this.cache.clear();
92
- }
93
- /**
94
- * Get the number of cached pages.
95
- */
96
- get size() {
97
- return this.cache.size;
98
- }
99
- /**
100
- * Trim the cache to the maximum size, removing oldest entries.
101
- */
102
- trim() {
103
- const limit = Math.max(0, this.options.maxSize);
104
- while (this.cache.size > limit) {
105
- const oldestKey = this.cache.keys().next().value;
106
- if (!oldestKey)
107
- break;
108
- const entry = this.cache.get(oldestKey);
109
- if (entry) {
110
- URL.revokeObjectURL(entry.url);
111
- }
112
- this.cache.delete(oldestKey);
113
- }
114
- }
115
- /**
116
- * Generate a cache key for a page at a specific render size.
117
- */
118
- getKey(pageIndex, renderWidth, renderHeight) {
119
- return `${pageIndex}:${renderWidth}x${renderHeight}`;
120
- }
121
- }
122
- //# sourceMappingURL=PageCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageCache.js","sourceRoot":"","sources":["../../src/rendering/PageCache.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,OAAO,SAAS;IACV,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;IAC3C,OAAO,CAAmB;IAElC,YAAY,OAAyB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAkC;QACzC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/C,qCAAqC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAiB,EAAE,IAAc;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAElE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,mCAAmC;QACnC,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5C,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAChB,SAAS;YACT,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,EAAE,IAAI,CAAC,OAAO;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,SAAiB,EAAE,WAAmB,EAAE,YAAoB;QAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAC,SAAiB,EAAE,WAAmB,EAAE,YAAoB;QAC5D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO,KAAK,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,IAAI;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,SAAS;gBAAE,MAAM;YAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,KAAK,EAAE,CAAC;gBACR,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,SAAiB,EAAE,WAAmB,EAAE,YAAoB;QACvE,OAAO,GAAG,SAAS,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;IACzD,CAAC;CACJ"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Queue for managing page render requests.
3
- *
4
- * Handles queuing, deduplication, and sequential processing of render requests.
5
- * Renders are processed one at a time to avoid overwhelming the worker.
6
- */
7
- import type { PageRenderRequest } from './types';
8
- /**
9
- * Callback for processing a render request.
10
- */
11
- export type RenderCallback = (request: PageRenderRequest) => Promise<void>;
12
- /**
13
- * Queue for managing page render requests.
14
- */
15
- export declare class RenderQueue {
16
- /** Pending render requests by page index */
17
- private queue;
18
- /** Whether a render is currently in progress */
19
- private isRendering;
20
- /** Callback to process render requests */
21
- private onRender;
22
- /** Current render token (incremented to invalidate old requests) */
23
- private currentToken;
24
- constructor(onRender: RenderCallback);
25
- /**
26
- * Get a new token for render requests.
27
- * Call this when the zoom/layout changes to invalidate old requests.
28
- */
29
- nextToken(): number;
30
- /**
31
- * Get the current token.
32
- */
33
- getToken(): number;
34
- /**
35
- * Enqueue a render request.
36
- * If a request for the same page is already queued, it will be replaced.
37
- *
38
- * @param request The render request
39
- */
40
- enqueue(request: PageRenderRequest): void;
41
- /**
42
- * Enqueue multiple render requests.
43
- *
44
- * @param requests The render requests
45
- */
46
- enqueueAll(requests: PageRenderRequest[]): void;
47
- /**
48
- * Cancel a pending render request for a page.
49
- *
50
- * @param pageIndex The page index
51
- * @returns true if a request was cancelled
52
- */
53
- cancel(pageIndex: number): boolean;
54
- /**
55
- * Clear all pending render requests.
56
- */
57
- clear(): void;
58
- /**
59
- * Check if a render is currently in progress.
60
- */
61
- isProcessing(): boolean;
62
- /**
63
- * Get the number of pending requests.
64
- */
65
- get size(): number;
66
- /**
67
- * Check if a page has a pending request.
68
- */
69
- has(pageIndex: number): boolean;
70
- /**
71
- * Process the next request in the queue.
72
- */
73
- private process;
74
- }
75
- //# sourceMappingURL=RenderQueue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderQueue.d.ts","sourceRoot":"","sources":["../../src/rendering/RenderQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3E;;GAEG;AACH,qBAAa,WAAW;IACpB,4CAA4C;IAC5C,OAAO,CAAC,KAAK,CAA6C;IAE1D,gDAAgD;IAChD,OAAO,CAAC,WAAW,CAAS;IAE5B,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAiB;IAEjC,oEAAoE;IACpE,OAAO,CAAC,YAAY,CAAK;gBAEb,QAAQ,EAAE,cAAc;IAIpC;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAKzC;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAO/C;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;YACW,OAAO;CAkBxB"}
@@ -1,105 +0,0 @@
1
- /**
2
- * Queue for managing page render requests.
3
- */
4
- export class RenderQueue {
5
- /** Pending render requests by page index */
6
- queue = new Map();
7
- /** Whether a render is currently in progress */
8
- isRendering = false;
9
- /** Callback to process render requests */
10
- onRender;
11
- /** Current render token (incremented to invalidate old requests) */
12
- currentToken = 0;
13
- constructor(onRender) {
14
- this.onRender = onRender;
15
- }
16
- /**
17
- * Get a new token for render requests.
18
- * Call this when the zoom/layout changes to invalidate old requests.
19
- */
20
- nextToken() {
21
- return ++this.currentToken;
22
- }
23
- /**
24
- * Get the current token.
25
- */
26
- getToken() {
27
- return this.currentToken;
28
- }
29
- /**
30
- * Enqueue a render request.
31
- * If a request for the same page is already queued, it will be replaced.
32
- *
33
- * @param request The render request
34
- */
35
- enqueue(request) {
36
- this.queue.set(request.pageIndex, request);
37
- this.process();
38
- }
39
- /**
40
- * Enqueue multiple render requests.
41
- *
42
- * @param requests The render requests
43
- */
44
- enqueueAll(requests) {
45
- for (const request of requests) {
46
- this.queue.set(request.pageIndex, request);
47
- }
48
- this.process();
49
- }
50
- /**
51
- * Cancel a pending render request for a page.
52
- *
53
- * @param pageIndex The page index
54
- * @returns true if a request was cancelled
55
- */
56
- cancel(pageIndex) {
57
- return this.queue.delete(pageIndex);
58
- }
59
- /**
60
- * Clear all pending render requests.
61
- */
62
- clear() {
63
- this.queue.clear();
64
- }
65
- /**
66
- * Check if a render is currently in progress.
67
- */
68
- isProcessing() {
69
- return this.isRendering;
70
- }
71
- /**
72
- * Get the number of pending requests.
73
- */
74
- get size() {
75
- return this.queue.size;
76
- }
77
- /**
78
- * Check if a page has a pending request.
79
- */
80
- has(pageIndex) {
81
- return this.queue.has(pageIndex);
82
- }
83
- /**
84
- * Process the next request in the queue.
85
- */
86
- async process() {
87
- if (this.isRendering)
88
- return;
89
- const iterator = this.queue.values().next();
90
- if (iterator.done)
91
- return;
92
- const request = iterator.value;
93
- this.queue.delete(request.pageIndex);
94
- this.isRendering = true;
95
- try {
96
- await this.onRender(request);
97
- }
98
- finally {
99
- this.isRendering = false;
100
- // Process next request
101
- this.process();
102
- }
103
- }
104
- }
105
- //# sourceMappingURL=RenderQueue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderQueue.js","sourceRoot":"","sources":["../../src/rendering/RenderQueue.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB,4CAA4C;IACpC,KAAK,GAAmC,IAAI,GAAG,EAAE,CAAC;IAE1D,gDAAgD;IACxC,WAAW,GAAG,KAAK,CAAC;IAE5B,0CAA0C;IAClC,QAAQ,CAAiB;IAEjC,oEAAoE;IAC5D,YAAY,GAAG,CAAC,CAAC;IAEzB,YAAY,QAAwB;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAA0B;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAA6B;QACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAiB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,YAAY;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAiB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO;QACjB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,IAAI;YAAE,OAAO;QAE1B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,uBAAuB;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Queue for managing thumbnail render requests.
3
- *
4
- * Handles queuing and sequential processing of thumbnail render requests.
5
- * Thumbnails are rendered one at a time to avoid overwhelming the worker.
6
- */
7
- import type { ThumbnailRenderRequest } from './types';
8
- /**
9
- * Callback for processing a thumbnail render request.
10
- */
11
- export type ThumbnailRenderCallback = (request: ThumbnailRenderRequest) => Promise<void>;
12
- /**
13
- * Queue for managing thumbnail render requests.
14
- */
15
- export declare class ThumbnailQueue {
16
- /** Pending thumbnail render requests */
17
- private queue;
18
- /** Whether a render is currently in progress */
19
- private isRendering;
20
- /** Callback to process render requests */
21
- private onRender;
22
- constructor(onRender: ThumbnailRenderCallback);
23
- /**
24
- * Enqueue a thumbnail render request.
25
- *
26
- * @param request The thumbnail render request
27
- */
28
- enqueue(request: ThumbnailRenderRequest): void;
29
- /**
30
- * Cancel a pending thumbnail render request.
31
- *
32
- * @param pageIndex The page index
33
- * @returns true if a request was cancelled
34
- */
35
- cancel(pageIndex: number): boolean;
36
- /**
37
- * Clear all pending thumbnail render requests.
38
- */
39
- clear(): void;
40
- /**
41
- * Check if a render is currently in progress.
42
- */
43
- isProcessing(): boolean;
44
- /**
45
- * Get the number of pending requests.
46
- */
47
- get size(): number;
48
- /**
49
- * Check if a page has a pending thumbnail request.
50
- */
51
- has(pageIndex: number): boolean;
52
- /**
53
- * Process the next request in the queue.
54
- */
55
- private process;
56
- }
57
- //# sourceMappingURL=ThumbnailQueue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThumbnailQueue.d.ts","sourceRoot":"","sources":["../../src/rendering/ThumbnailQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzF;;GAEG;AACH,qBAAa,cAAc;IACvB,wCAAwC;IACxC,OAAO,CAAC,KAAK,CAAgC;IAE7C,gDAAgD;IAChD,OAAO,CAAC,WAAW,CAAS;IAE5B,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAA0B;gBAE9B,QAAQ,EAAE,uBAAuB;IAI7C;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAS9C;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IASlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;YACW,OAAO;CAexB"}
@@ -1,85 +0,0 @@
1
- /**
2
- * Queue for managing thumbnail render requests.
3
- */
4
- export class ThumbnailQueue {
5
- /** Pending thumbnail render requests */
6
- queue = [];
7
- /** Whether a render is currently in progress */
8
- isRendering = false;
9
- /** Callback to process render requests */
10
- onRender;
11
- constructor(onRender) {
12
- this.onRender = onRender;
13
- }
14
- /**
15
- * Enqueue a thumbnail render request.
16
- *
17
- * @param request The thumbnail render request
18
- */
19
- enqueue(request) {
20
- // Check if already queued
21
- const existing = this.queue.find(r => r.pageIndex === request.pageIndex);
22
- if (!existing) {
23
- this.queue.push(request);
24
- }
25
- this.process();
26
- }
27
- /**
28
- * Cancel a pending thumbnail render request.
29
- *
30
- * @param pageIndex The page index
31
- * @returns true if a request was cancelled
32
- */
33
- cancel(pageIndex) {
34
- const index = this.queue.findIndex(r => r.pageIndex === pageIndex);
35
- if (index >= 0) {
36
- this.queue.splice(index, 1);
37
- return true;
38
- }
39
- return false;
40
- }
41
- /**
42
- * Clear all pending thumbnail render requests.
43
- */
44
- clear() {
45
- this.queue = [];
46
- }
47
- /**
48
- * Check if a render is currently in progress.
49
- */
50
- isProcessing() {
51
- return this.isRendering;
52
- }
53
- /**
54
- * Get the number of pending requests.
55
- */
56
- get size() {
57
- return this.queue.length;
58
- }
59
- /**
60
- * Check if a page has a pending thumbnail request.
61
- */
62
- has(pageIndex) {
63
- return this.queue.some(r => r.pageIndex === pageIndex);
64
- }
65
- /**
66
- * Process the next request in the queue.
67
- */
68
- async process() {
69
- if (this.isRendering)
70
- return;
71
- if (this.queue.length === 0)
72
- return;
73
- const request = this.queue.shift();
74
- this.isRendering = true;
75
- try {
76
- await this.onRender(request);
77
- }
78
- finally {
79
- this.isRendering = false;
80
- // Process next request
81
- this.process();
82
- }
83
- }
84
- }
85
- //# sourceMappingURL=ThumbnailQueue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThumbnailQueue.js","sourceRoot":"","sources":["../../src/rendering/ThumbnailQueue.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,MAAM,OAAO,cAAc;IACvB,wCAAwC;IAChC,KAAK,GAA6B,EAAE,CAAC;IAE7C,gDAAgD;IACxC,WAAW,GAAG,KAAK,CAAC;IAE5B,0CAA0C;IAClC,QAAQ,CAA0B;IAE1C,YAAY,QAAiC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAA+B;QACnC,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAiB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACnE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,YAAY;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAiB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO;QACjB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;QAEpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,uBAAuB;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Rendering module for page and thumbnail rendering.
3
- *
4
- * This module provides queue management and caching for rendered pages.
5
- */
6
- export * from './types';
7
- export { PageCache } from './PageCache';
8
- export type { PageCacheOptions } from './PageCache';
9
- export { RenderQueue } from './RenderQueue';
10
- export type { RenderCallback } from './RenderQueue';
11
- export { ThumbnailQueue } from './ThumbnailQueue';
12
- export type { ThumbnailRenderCallback } from './ThumbnailQueue';
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Rendering module for page and thumbnail rendering.
3
- *
4
- * This module provides queue management and caching for rendered pages.
5
- */
6
- export * from './types';
7
- export { PageCache } from './PageCache';
8
- export { RenderQueue } from './RenderQueue';
9
- export { ThumbnailQueue } from './ThumbnailQueue';
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,72 +0,0 @@
1
- /**
2
- * Types for the rendering module.
3
- */
4
- /**
5
- * A render request for a page.
6
- */
7
- export interface PageRenderRequest {
8
- /** Page index (0-based) */
9
- pageIndex: number;
10
- /** Display width in CSS pixels */
11
- displayWidth: number;
12
- /** Display height in CSS pixels */
13
- displayHeight: number;
14
- /** Render width in device pixels */
15
- renderWidth: number;
16
- /** Render height in device pixels */
17
- renderHeight: number;
18
- /** Token to identify this render request (for cancellation) */
19
- token: number;
20
- /** Priority: 'high' for visible pages, 'normal' for prefetch, 'low' for thumbnails */
21
- priority?: 'high' | 'normal' | 'low';
22
- }
23
- /**
24
- * A render request for a thumbnail.
25
- */
26
- export interface ThumbnailRenderRequest {
27
- /** Page index (0-based) */
28
- pageIndex: number;
29
- /** Target image element */
30
- img: HTMLImageElement;
31
- /** Thumbnail width */
32
- width: number;
33
- /** Thumbnail height */
34
- height: number;
35
- }
36
- /**
37
- * A cached page entry.
38
- */
39
- export interface CachedPage {
40
- /** Page index (0-based) */
41
- pageIndex: number;
42
- /** Render width used for this cache entry */
43
- renderWidth: number;
44
- /** Render height used for this cache entry */
45
- renderHeight: number;
46
- /** Blob URL for the rendered image */
47
- url: string;
48
- }
49
- /**
50
- * State for a page view element.
51
- */
52
- export interface PageView {
53
- /** The image or canvas element */
54
- element: HTMLImageElement | HTMLCanvasElement;
55
- /** Current display width */
56
- displayWidth: number;
57
- /** Current display height */
58
- displayHeight: number;
59
- /** Current render width (0 if not rendered) */
60
- renderWidth: number;
61
- /** Current render height (0 if not rendered) */
62
- renderHeight: number;
63
- /** Pending render width (0 if no pending render) */
64
- pendingRenderWidth: number;
65
- /** Pending render height (0 if no pending render) */
66
- pendingRenderHeight: number;
67
- /** Token for pending render (0 if no pending render) */
68
- pendingRenderToken: number;
69
- /** Blob URL for the current image (null if using canvas or not rendered) */
70
- blobUrl: string | null;
71
- }
72
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rendering/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,GAAG,EAAE,gBAAgB,CAAC;IACtB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,kCAAkC;IAClC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IAC9C,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Types for the rendering module.
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/rendering/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Viewer CSS styles exported as a string for runtime injection.
3
- * This maintains backward compatibility - users don't need to manually include CSS.
4
- */
5
- export declare const VIEWER_STYLES = "/* Root container */\n.udoc-viewer-root {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: system-ui, -apple-system, sans-serif;\n background: #e0e0e0;\n}\n\n/* Header bar */\n.udoc-header {\n height: 40px;\n background: #fff;\n border-bottom: 1px solid #e0e0e0;\n display: flex;\n align-items: center;\n padding: 0 8px;\n flex-shrink: 0;\n gap: 8px;\n}\n\n.udoc-header-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 6px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #555;\n}\n\n.udoc-header-btn:hover {\n background: #f0f0f0;\n}\n\n.udoc-header-btn svg {\n width: 20px;\n height: 20px;\n}\n\n\n.udoc-header-actions {\n display: flex;\n gap: 4px;\n margin-left: auto;\n}\n\n/* Main content area */\n.udoc-main {\n flex: 1;\n display: flex;\n overflow: hidden;\n position: relative;\n}\n\n/* Panels */\n.udoc-panel {\n display: flex;\n background: #f8f9fa;\n flex-shrink: 0;\n transition: width 0.2s ease;\n overflow: hidden;\n}\n\n.udoc-panel.collapsed {\n width: 0 !important;\n}\n\n.udoc-panel.left {\n border-right: 1px solid #e0e0e0;\n flex-direction: row;\n}\n\n.udoc-panel.right {\n border-left: 1px solid #e0e0e0;\n}\n\n.udoc-panel.no-tabs {\n flex-direction: row;\n}\n\n.udoc-header-btn.active {\n background: #e0e0e0;\n color: #3498db;\n}\n\n.udoc-panel-tabs {\n width: 36px;\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n gap: 4px;\n background: #f0f0f0;\n flex-shrink: 0;\n}\n\n.udoc-panel.left .udoc-panel-tabs {\n border-right: 1px solid #e0e0e0;\n}\n\n.udoc-panel.right .udoc-panel-tabs {\n border-left: 1px solid #e0e0e0;\n}\n\n.udoc-panel-tab {\n width: 28px;\n height: 28px;\n margin: 0 4px;\n border: none;\n background: none;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n}\n\n.udoc-panel-tab:hover {\n background: #e0e0e0;\n}\n\n.udoc-panel-tab.selected {\n background: #fff;\n color: #3498db;\n}\n\n.udoc-panel-tab svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-panel-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-width: 0;\n padding: 8px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.udoc-panel-resize {\n width: 4px;\n cursor: col-resize;\n background: transparent;\n transition: background 0.15s;\n flex-shrink: 0;\n}\n\n.udoc-panel-resize:hover,\n.udoc-panel-resize.resizing {\n background: #3498db;\n}\n\n.udoc-panel-placeholder {\n padding: 24px 16px;\n text-align: center;\n color: #999;\n font-size: 13px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.udoc-panel-placeholder svg {\n width: 32px;\n height: 32px;\n opacity: 0.5;\n}\n\n/* Comments panel */\n.udoc-comments-list {\n padding: 0;\n}\n\n.udoc-comments-page-group {\n border-bottom: 1px solid #e0e0e0;\n}\n\n.udoc-comments-page-group:last-child {\n border-bottom: none;\n}\n\n.udoc-comments-page-header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: #333;\n background: #f5f5f5;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n\n.udoc-comments-page-header:hover {\n background: #eee;\n}\n\n.udoc-comments-page-header svg {\n width: 16px;\n height: 16px;\n color: #666;\n transition: transform 0.2s;\n}\n\n.udoc-comments-page-collapsed .udoc-comments-page-header svg {\n transform: rotate(-90deg);\n}\n\n.udoc-comments-page-count {\n margin-left: auto;\n font-size: 11px;\n font-weight: 500;\n color: #888;\n background: #e0e0e0;\n padding: 2px 6px;\n border-radius: 10px;\n}\n\n.udoc-comments-page-content {\n overflow: hidden;\n transition: max-height 0.2s ease-out, opacity 0.2s ease-out;\n}\n\n.udoc-comments-page-collapsed .udoc-comments-page-content {\n max-height: 0;\n opacity: 0;\n}\n\n.udoc-comment-item {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.udoc-comment-item:hover {\n background: #f5f7f9;\n}\n\n.udoc-comment-reply {\n background: transparent;\n}\n\n.udoc-comment-depth-1 {\n padding-left: 36px;\n}\n\n.udoc-comment-depth-2 {\n padding-left: 56px;\n}\n\n.udoc-comment-depth-3 {\n padding-left: 76px;\n}\n\n.udoc-comment-reply:hover {\n background: #f5f7f9;\n}\n\n.udoc-comment-icon {\n flex-shrink: 0;\n display: flex;\n align-items: flex-start;\n padding-top: 2px;\n color: #888;\n}\n\n.udoc-comment-icon svg {\n width: 16px;\n height: 16px;\n}\n\n.udoc-comment-body {\n flex: 1;\n min-width: 0;\n}\n\n.udoc-comment-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.udoc-comment-author {\n font-size: 12px;\n font-weight: 600;\n color: #333;\n}\n\n.udoc-comment-status {\n font-size: 10px;\n font-weight: 500;\n padding: 2px 6px;\n border-radius: 3px;\n margin-left: auto;\n}\n\n.udoc-comment-status-accepted {\n background: #d4edda;\n color: #155724;\n}\n\n.udoc-comment-status-rejected,\n.udoc-comment-status-cancelled {\n background: #f8d7da;\n color: #721c24;\n}\n\n.udoc-comment-status-completed {\n background: #cce5ff;\n color: #004085;\n}\n\n.udoc-comment-status-marked {\n background: #fff3cd;\n color: #856404;\n}\n\n.udoc-comment-status-none,\n.udoc-comment-status-unmarked {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.udoc-comment-contents {\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.udoc-comment-toggle {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-top: 8px;\n padding: 2px 0;\n background: transparent;\n border: none;\n font-size: 11px;\n color: #888;\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.udoc-comment-toggle:hover {\n color: #333;\n}\n\n.udoc-comment-toggle svg {\n width: 14px;\n height: 14px;\n transition: transform 0.2s;\n}\n\n.udoc-comment-toggle-expanded svg {\n transform: rotate(90deg);\n}\n\n.udoc-comment-replies {\n margin-top: 4px;\n margin-bottom: 4px;\n overflow: hidden;\n transition: max-height 0.2s ease-out, opacity 0.2s ease-out, margin 0.2s ease-out;\n}\n\n.udoc-comment-replies-collapsed {\n max-height: 0;\n opacity: 0;\n pointer-events: none;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.udoc-thumbnail {\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: 4px;\n padding: 4px;\n background: #fff;\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n transition: border-color 0.15s;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.udoc-thumbnail:hover {\n border-color: #bbb;\n}\n\n.udoc-thumbnail.selected {\n border-color: #3498db;\n}\n\n.udoc-thumbnail img {\n display: block;\n width: 100%;\n height: auto;\n background: #fff;\n}\n\n.udoc-thumbnail img:not([src]) {\n visibility: hidden;\n}\n\n.udoc-thumbnail-label {\n text-align: center;\n font-size: 11px;\n color: #666;\n margin-top: 4px;\n}\n\n/* Outline */\n.udoc-outline {\n padding: 8px 0;\n}\n\n.udoc-outline-node {\n /* Container for item + children */\n}\n\n.udoc-outline-item {\n display: flex;\n align-items: center;\n padding: 6px 12px;\n font-size: 13px;\n color: #333;\n border-left: 2px solid transparent;\n transition: background-color 0.15s, border-color 0.15s;\n}\n\n.udoc-outline-item.clickable {\n cursor: pointer;\n}\n\n.udoc-outline-item.clickable:hover {\n background-color: rgba(0, 0, 0, 0.04);\n border-left-color: #3498db;\n}\n\n.udoc-outline-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-right: 4px;\n cursor: pointer;\n border-radius: 3px;\n flex-shrink: 0;\n transition: background-color 0.15s;\n}\n\n.udoc-outline-toggle:hover {\n background-color: rgba(0, 0, 0, 0.08);\n}\n\n.udoc-outline-toggle svg {\n width: 12px;\n height: 12px;\n transition: transform 0.15s;\n}\n\n.udoc-outline-toggle.collapsed svg {\n transform: rotate(-90deg);\n}\n\n.udoc-outline-toggle-placeholder {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n flex-shrink: 0;\n}\n\n.udoc-outline-title {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.udoc-outline-children {\n overflow: hidden;\n transition: max-height 0.2s ease-out;\n}\n\n.udoc-outline-children.collapsed {\n max-height: 0 !important;\n}\n\n/* Viewport */\n.udoc-viewport {\n flex: 1;\n overflow: auto;\n position: relative;\n overscroll-behavior-x: none;\n}\n\n.udoc-content {\n display: flex;\n flex-direction: column;\n min-width: 100%;\n min-height: 100%;\n padding: 20px;\n box-sizing: border-box;\n}\n\n.udoc-spacer {\n width: 100%;\n flex-shrink: 0;\n}\n\n.udoc-band-container {\n position: relative;\n width: 100%;\n}\n\n.udoc-band {\n width: 100%;\n position: absolute;\n left: 0;\n display: flex;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.udoc-band-inner {\n display: grid;\n align-items: center;\n justify-items: center;\n}\n\n.udoc-slot {\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: visible;\n}\n\n.udoc-page {\n display: block;\n box-shadow: 0 2px 8px rgba(0,0,0,0.15);\n background: #fff;\n transform-origin: center center;\n opacity: 1;\n transition: opacity 0.12s ease;\n user-select: none;\n -webkit-user-drag: none;\n pointer-events: none;\n}\n\n.udoc-viewer-root.seamless .udoc-page {\n box-shadow: none;\n}\n\n.udoc-page[data-rendered=\"false\"] {\n opacity: 1;\n}\n\n/* Floating control bar */\n.udoc-floating-bar {\n position: absolute;\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(255, 255, 255, 0.95);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n border-radius: 8px;\n box-shadow: 0 2px 12px rgba(0,0,0,0.15);\n padding: 6px 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n z-index: 100;\n}\n\n.udoc-floating-bar-group {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.udoc-floating-bar button {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #555;\n}\n\n.udoc-floating-bar button:hover:not(:disabled) {\n background: #e8e8e8;\n}\n\n.udoc-floating-bar button.active {\n background: #e0e0e0;\n}\n\n.udoc-floating-bar button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.udoc-floating-bar button svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-floating-bar input {\n border: 1px solid #ddd;\n border-radius: 4px;\n padding: 4px 6px;\n font-size: 12px;\n text-align: center;\n background: #fff;\n}\n\n.udoc-floating-bar input:focus {\n outline: none;\n border-color: #3498db;\n}\n\n.udoc-page-input {\n width: 36px;\n}\n\n.udoc-floating-bar select {\n border: 1px solid #ddd;\n border-radius: 4px;\n padding: 4px 6px;\n font-size: 12px;\n background: #fff;\n cursor: pointer;\n}\n\n.udoc-floating-bar select:focus {\n outline: none;\n border-color: #3498db;\n}\n\n.udoc-separator {\n width: 1px;\n height: 20px;\n background: #ddd;\n margin: 0 4px;\n}\n\n.udoc-page-info {\n color: #666;\n font-size: 12px;\n white-space: nowrap;\n}\n\n/* Zoom dropdown */\n.udoc-zoom-dropdown {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.udoc-zoom-input-wrapper {\n display: flex;\n align-items: center;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: #fff;\n overflow: hidden;\n}\n\n.udoc-zoom-input-wrapper:focus-within {\n border-color: #3498db;\n}\n\n.udoc-floating-bar .udoc-zoom-input {\n border: none;\n padding: 4px 0 4px 6px;\n font-size: 12px;\n width: 44px;\n text-align: center;\n background: transparent;\n outline: none;\n}\n\n.udoc-zoom-input:disabled {\n opacity: 0.4;\n}\n\n.udoc-zoom-dropdown-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 4px;\n border: none;\n border-left: 1px solid #ddd;\n background: transparent;\n cursor: pointer;\n color: #555;\n}\n\n.udoc-zoom-dropdown-btn:hover:not(:disabled) {\n background: #f0f0f0;\n}\n\n.udoc-zoom-dropdown-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.udoc-zoom-dropdown-btn svg {\n width: 12px;\n height: 12px;\n}\n\n.udoc-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 4px);\n left: 0;\n background: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.15);\n padding: 4px 0;\n min-width: 140px;\n z-index: 200;\n display: none;\n}\n\n.udoc-dropdown-menu.open {\n display: block;\n}\n\n.udoc-dropdown-item {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n cursor: pointer;\n font-size: 13px;\n color: #333;\n}\n\n.udoc-dropdown-item:hover {\n background: #f5f5f5;\n}\n\n.udoc-dropdown-item.selected {\n color: #3498db;\n font-weight: 500;\n}\n\n.udoc-dropdown-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 0;\n}\n\n/* Settings popover */\n.udoc-settings-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #555;\n}\n\n.udoc-settings-btn:hover:not(:disabled) {\n background: #e8e8e8;\n}\n\n.udoc-settings-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.udoc-settings-btn svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-settings-popover {\n position: absolute;\n bottom: calc(100% + 4px);\n left: 0;\n background: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.15);\n padding: 12px;\n min-width: 180px;\n z-index: 200;\n display: none;\n}\n\n.udoc-settings-popover.open {\n display: block;\n}\n\n.udoc-settings-section {\n margin-bottom: 12px;\n}\n\n.udoc-settings-section:last-child {\n margin-bottom: 0;\n}\n\n.udoc-settings-label {\n font-size: 11px;\n font-weight: 600;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n}\n\n.udoc-settings-options {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.udoc-settings-option {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px;\n border: 1px solid #ddd;\n border-radius: 4px;\n cursor: pointer;\n color: #555;\n background: #fff;\n transition: all 0.15s;\n}\n\n.udoc-settings-option:hover {\n border-color: #bbb;\n background: #f5f5f5;\n}\n\n.udoc-settings-option.selected {\n background: #3498db;\n border-color: #3498db;\n color: #fff;\n}\n\n.udoc-settings-option svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-settings-option input {\n display: none;\n}\n\n.udoc-settings-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.udoc-settings-row select {\n border: 1px solid #ddd;\n border-radius: 4px;\n padding: 4px 6px;\n font-size: 12px;\n background: #fff;\n cursor: pointer;\n flex: 1;\n}\n\n.udoc-settings-row select:focus {\n outline: none;\n border-color: #3498db;\n}\n\n.udoc-settings-checkbox {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 12px;\n color: #333;\n}\n\n.udoc-settings-checkbox input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n cursor: pointer;\n}\n\n/* Empty state */\n.udoc-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #999;\n font-size: 14px;\n}\n\n/* Tool selector dropdown */\n.udoc-tool-dropdown {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.udoc-tool-dropdown-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n color: #555;\n font-size: 12px;\n}\n\n.udoc-tool-dropdown-btn:hover {\n background: #f5f5f5;\n}\n\n.udoc-tool-dropdown-btn svg {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n}\n\n.udoc-tool-dropdown-btn .udoc-tool-chevron {\n display: flex;\n align-items: center;\n}\n\n.udoc-tool-dropdown-btn .udoc-tool-chevron svg {\n width: 12px;\n height: 12px;\n}\n\n.udoc-tool-menu {\n position: absolute;\n bottom: calc(100% + 4px);\n left: 0;\n background: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.15);\n padding: 4px 0;\n min-width: 150px;\n z-index: 200;\n display: none;\n}\n\n.udoc-tool-menu.open {\n display: block;\n}\n\n.udoc-tool-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n font-size: 13px;\n color: #333;\n}\n\n.udoc-tool-item:hover {\n background: #f5f5f5;\n}\n\n.udoc-tool-item.selected {\n color: #3498db;\n font-weight: 500;\n}\n\n.udoc-tool-item svg {\n width: 18px;\n height: 18px;\n}\n\n.udoc-tool-item .udoc-tool-shortcut {\n margin-left: auto;\n font-size: 11px;\n color: #999;\n}\n\n/* Cursor styles for tools */\n.udoc-viewport.tool-hand {\n cursor: grab;\n}\n\n.udoc-viewport.tool-hand.panning {\n cursor: grabbing;\n}\n\n.udoc-viewport.tool-select {\n cursor: default;\n}\n\n/* ===== Responsive: Mobile (<=768px) ===== */\n@media (max-width: 768px) {\n /* Collapse panels by default on mobile */\n .udoc-panel {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 280px !important;\n z-index: 150;\n box-shadow: 4px 0 20px rgba(0,0,0,0.15);\n }\n\n .udoc-panel.left {\n left: 0;\n transform: translateX(-100%);\n transition: transform 0.3s ease;\n }\n\n .udoc-panel.left:not(.collapsed) {\n transform: translateX(0);\n }\n\n .udoc-panel.right {\n right: 0;\n transform: translateX(100%);\n transition: transform 0.3s ease;\n flex-direction: row-reverse;\n }\n\n .udoc-panel.right:not(.collapsed) {\n transform: translateX(0);\n }\n\n .udoc-panel.collapsed {\n width: 280px !important;\n }\n\n /* Mobile overlay when panel is open */\n .udoc-panel-overlay {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n z-index: 140;\n }\n\n .udoc-viewer-root.panel-open .udoc-panel-overlay {\n display: block;\n }\n\n /* Reduce content padding */\n .udoc-content {\n padding: 8px;\n padding-bottom: 48px; /* Space for bottom toolbar (40px + 8px) */\n }\n\n /* Convert floating bar to full-width bottom toolbar - same height as header (40px) */\n .udoc-floating-bar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n transform: none;\n border-radius: 0;\n box-sizing: border-box;\n height: 40px;\n padding: 0 12px;\n gap: 8px;\n max-width: none;\n justify-content: center;\n box-shadow: 0 -2px 10px rgba(0,0,0,0.1);\n }\n\n /* Hide settings on mobile */\n .udoc-floating-bar .udoc-settings-wrapper {\n display: none;\n }\n\n /* Hide fullscreen button on mobile */\n .udoc-header-btn[title=\"Fullscreen\"] {\n display: none;\n }\n\n /* Touch targets for mobile - sized to fit within 40px toolbar */\n .udoc-floating-bar button {\n padding: 6px;\n min-width: 28px;\n min-height: 28px;\n }\n\n .udoc-floating-bar button svg {\n width: 18px;\n height: 18px;\n }\n\n /* Larger panel tab buttons for touch */\n .udoc-panel-tabs {\n width: 44px;\n padding: 8px 0;\n }\n\n .udoc-panel-tab {\n width: 36px;\n height: 36px;\n }\n\n .udoc-panel-tab svg {\n width: 22px;\n height: 22px;\n }\n\n /* Header adjustments */\n .udoc-header {\n padding: 0 4px;\n gap: 4px;\n }\n\n .udoc-header-btn {\n padding: 8px;\n }\n\n /* Hide document title on small screens to save space */\n .udoc-header-title {\n display: none;\n }\n\n /* Dropdown menus - position from bottom with more space */\n .udoc-dropdown-menu,\n .udoc-tool-menu,\n .udoc-settings-popover {\n bottom: calc(100% + 8px);\n }\n\n /* Settings popover - pop to left on mobile */\n .udoc-settings-popover {\n left: auto;\n right: 0;\n }\n\n .udoc-dropdown-item,\n .udoc-tool-item {\n padding: 12px 16px;\n }\n}\n\n/* ===== Responsive: Small Mobile (<=480px) ===== */\n@media (max-width: 480px) {\n .udoc-content {\n padding: 4px;\n padding-bottom: 48px; /* Space for bottom toolbar (40px + 8px) */\n }\n\n .udoc-floating-bar {\n padding: 0 8px;\n gap: 2px;\n }\n\n /* Hide zoom buttons, keep only page nav on very small screens */\n .udoc-floating-bar .udoc-zoom-controls {\n display: none;\n }\n\n /* Smaller page input */\n .udoc-page-input {\n width: 28px;\n padding: 2px 4px;\n font-size: 11px;\n }\n\n .udoc-page-info {\n font-size: 11px;\n }\n\n .udoc-separator {\n height: 16px;\n margin: 0 2px;\n }\n\n .udoc-header {\n padding: 0 4px;\n gap: 4px;\n }\n\n .udoc-header-btn {\n padding: 6px;\n }\n\n .udoc-header-btn svg {\n width: 18px;\n height: 18px;\n }\n}";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/styles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,aAAa,onsBA+rCxB,CAAC"}