@docmentis/udoc-viewer 0.1.0 → 0.1.2

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 (264) hide show
  1. package/dist/styles.css +1331 -0
  2. package/dist/wasm/udoc_bg.wasm +0 -0
  3. package/dist/worker/WorkerClient.js +1 -1
  4. package/package.json +15 -6
  5. package/dist/WorkerClient.d.ts +0 -36
  6. package/dist/WorkerClient.d.ts.map +0 -1
  7. package/dist/WorkerClient.js +0 -121
  8. package/dist/WorkerClient.js.map +0 -1
  9. package/dist/annotation/AnnotationLayer.d.ts +0 -166
  10. package/dist/annotation/AnnotationLayer.d.ts.map +0 -1
  11. package/dist/annotation/AnnotationLayer.js +0 -1090
  12. package/dist/annotation/AnnotationLayer.js.map +0 -1
  13. package/dist/annotation/index.d.ts +0 -6
  14. package/dist/annotation/index.d.ts.map +0 -1
  15. package/dist/annotation/index.js +0 -6
  16. package/dist/annotation/index.js.map +0 -1
  17. package/dist/components/FloatingBar.d.ts +0 -102
  18. package/dist/components/FloatingBar.d.ts.map +0 -1
  19. package/dist/components/FloatingBar.js +0 -513
  20. package/dist/components/FloatingBar.js.map +0 -1
  21. package/dist/components/Header.d.ts +0 -46
  22. package/dist/components/Header.d.ts.map +0 -1
  23. package/dist/components/Header.js +0 -93
  24. package/dist/components/Header.js.map +0 -1
  25. package/dist/components/index.d.ts +0 -6
  26. package/dist/components/index.d.ts.map +0 -1
  27. package/dist/components/index.js +0 -4
  28. package/dist/components/index.js.map +0 -1
  29. package/dist/components/panels/CommentsPanel.d.ts +0 -33
  30. package/dist/components/panels/CommentsPanel.d.ts.map +0 -1
  31. package/dist/components/panels/CommentsPanel.js +0 -176
  32. package/dist/components/panels/CommentsPanel.js.map +0 -1
  33. package/dist/components/panels/OutlinePanel.d.ts +0 -30
  34. package/dist/components/panels/OutlinePanel.d.ts.map +0 -1
  35. package/dist/components/panels/OutlinePanel.js +0 -144
  36. package/dist/components/panels/OutlinePanel.js.map +0 -1
  37. package/dist/components/panels/ThumbnailsPanel.d.ts +0 -51
  38. package/dist/components/panels/ThumbnailsPanel.d.ts.map +0 -1
  39. package/dist/components/panels/ThumbnailsPanel.js +0 -160
  40. package/dist/components/panels/ThumbnailsPanel.js.map +0 -1
  41. package/dist/components/panels/index.d.ts +0 -7
  42. package/dist/components/panels/index.d.ts.map +0 -1
  43. package/dist/components/panels/index.js +0 -4
  44. package/dist/components/panels/index.js.map +0 -1
  45. package/dist/constants.d.ts +0 -25
  46. package/dist/constants.d.ts.map +0 -1
  47. package/dist/constants.js +0 -46
  48. package/dist/constants.js.map +0 -1
  49. package/dist/core/NavigationController.d.ts +0 -54
  50. package/dist/core/NavigationController.d.ts.map +0 -1
  51. package/dist/core/NavigationController.js +0 -145
  52. package/dist/core/NavigationController.js.map +0 -1
  53. package/dist/core/PerfTimer.d.ts +0 -12
  54. package/dist/core/PerfTimer.d.ts.map +0 -1
  55. package/dist/core/PerfTimer.js +0 -32
  56. package/dist/core/PerfTimer.js.map +0 -1
  57. package/dist/core/ViewerState.d.ts +0 -108
  58. package/dist/core/ViewerState.d.ts.map +0 -1
  59. package/dist/core/ViewerState.js +0 -179
  60. package/dist/core/ViewerState.js.map +0 -1
  61. package/dist/core/constants.d.ts +0 -24
  62. package/dist/core/constants.d.ts.map +0 -1
  63. package/dist/core/constants.js +0 -42
  64. package/dist/core/constants.js.map +0 -1
  65. package/dist/core/index.d.ts +0 -8
  66. package/dist/core/index.d.ts.map +0 -1
  67. package/dist/core/index.js +0 -11
  68. package/dist/core/index.js.map +0 -1
  69. package/dist/core/types.d.ts +0 -573
  70. package/dist/core/types.d.ts.map +0 -1
  71. package/dist/core/types.js +0 -5
  72. package/dist/core/types.js.map +0 -1
  73. package/dist/icons/icons.d.ts +0 -41
  74. package/dist/icons/icons.d.ts.map +0 -1
  75. package/dist/icons/icons.js +0 -51
  76. package/dist/icons/icons.js.map +0 -1
  77. package/dist/icons/index.d.ts +0 -3
  78. package/dist/icons/index.d.ts.map +0 -1
  79. package/dist/icons/index.js +0 -2
  80. package/dist/icons/index.js.map +0 -1
  81. package/dist/layout/BandManager.d.ts +0 -87
  82. package/dist/layout/BandManager.d.ts.map +0 -1
  83. package/dist/layout/BandManager.js +0 -185
  84. package/dist/layout/BandManager.js.map +0 -1
  85. package/dist/layout/LayoutCalculator.d.ts +0 -42
  86. package/dist/layout/LayoutCalculator.d.ts.map +0 -1
  87. package/dist/layout/LayoutCalculator.js +0 -180
  88. package/dist/layout/LayoutCalculator.js.map +0 -1
  89. package/dist/layout/LayoutState.d.ts +0 -46
  90. package/dist/layout/LayoutState.d.ts.map +0 -1
  91. package/dist/layout/LayoutState.js +0 -109
  92. package/dist/layout/LayoutState.js.map +0 -1
  93. package/dist/layout/TransitionCoordinator.d.ts +0 -11
  94. package/dist/layout/TransitionCoordinator.d.ts.map +0 -1
  95. package/dist/layout/TransitionCoordinator.js +0 -22
  96. package/dist/layout/TransitionCoordinator.js.map +0 -1
  97. package/dist/layout/index.d.ts +0 -7
  98. package/dist/layout/index.d.ts.map +0 -1
  99. package/dist/layout/index.js +0 -4
  100. package/dist/layout/index.js.map +0 -1
  101. package/dist/rendering/BandManager.d.ts +0 -87
  102. package/dist/rendering/BandManager.d.ts.map +0 -1
  103. package/dist/rendering/BandManager.js +0 -185
  104. package/dist/rendering/BandManager.js.map +0 -1
  105. package/dist/rendering/PageCache.d.ts +0 -75
  106. package/dist/rendering/PageCache.d.ts.map +0 -1
  107. package/dist/rendering/PageCache.js +0 -122
  108. package/dist/rendering/PageCache.js.map +0 -1
  109. package/dist/rendering/RenderQueue.d.ts +0 -75
  110. package/dist/rendering/RenderQueue.d.ts.map +0 -1
  111. package/dist/rendering/RenderQueue.js +0 -105
  112. package/dist/rendering/RenderQueue.js.map +0 -1
  113. package/dist/rendering/ThumbnailQueue.d.ts +0 -57
  114. package/dist/rendering/ThumbnailQueue.d.ts.map +0 -1
  115. package/dist/rendering/ThumbnailQueue.js +0 -85
  116. package/dist/rendering/ThumbnailQueue.js.map +0 -1
  117. package/dist/rendering/index.d.ts +0 -13
  118. package/dist/rendering/index.d.ts.map +0 -1
  119. package/dist/rendering/index.js +0 -10
  120. package/dist/rendering/index.js.map +0 -1
  121. package/dist/rendering/types.d.ts +0 -72
  122. package/dist/rendering/types.d.ts.map +0 -1
  123. package/dist/rendering/types.js +0 -5
  124. package/dist/rendering/types.js.map +0 -1
  125. package/dist/styles/index.d.ts +0 -6
  126. package/dist/styles/index.d.ts.map +0 -1
  127. package/dist/styles/index.js +0 -1221
  128. package/dist/styles/index.js.map +0 -1
  129. package/dist/types.d.ts +0 -6
  130. package/dist/types.d.ts.map +0 -1
  131. package/dist/types.js +0 -6
  132. package/dist/types.js.map +0 -1
  133. package/dist/ui/Component.d.ts +0 -127
  134. package/dist/ui/Component.d.ts.map +0 -1
  135. package/dist/ui/Component.js +0 -201
  136. package/dist/ui/Component.js.map +0 -1
  137. package/dist/ui/annotation/AnnotationLayer.d.ts +0 -90
  138. package/dist/ui/annotation/AnnotationLayer.d.ts.map +0 -1
  139. package/dist/ui/annotation/AnnotationLayer.js +0 -322
  140. package/dist/ui/annotation/AnnotationLayer.js.map +0 -1
  141. package/dist/ui/annotation/LinkRenderer.d.ts +0 -32
  142. package/dist/ui/annotation/LinkRenderer.d.ts.map +0 -1
  143. package/dist/ui/annotation/LinkRenderer.js +0 -74
  144. package/dist/ui/annotation/LinkRenderer.js.map +0 -1
  145. package/dist/ui/annotation/MarkupRenderer.d.ts +0 -40
  146. package/dist/ui/annotation/MarkupRenderer.d.ts.map +0 -1
  147. package/dist/ui/annotation/MarkupRenderer.js +0 -154
  148. package/dist/ui/annotation/MarkupRenderer.js.map +0 -1
  149. package/dist/ui/annotation/ShapeRenderer.d.ts +0 -46
  150. package/dist/ui/annotation/ShapeRenderer.d.ts.map +0 -1
  151. package/dist/ui/annotation/ShapeRenderer.js +0 -376
  152. package/dist/ui/annotation/ShapeRenderer.js.map +0 -1
  153. package/dist/ui/annotation/TextRenderer.d.ts +0 -36
  154. package/dist/ui/annotation/TextRenderer.d.ts.map +0 -1
  155. package/dist/ui/annotation/TextRenderer.js +0 -199
  156. package/dist/ui/annotation/TextRenderer.js.map +0 -1
  157. package/dist/ui/annotation/index.d.ts +0 -17
  158. package/dist/ui/annotation/index.d.ts.map +0 -1
  159. package/dist/ui/annotation/index.js +0 -13
  160. package/dist/ui/annotation/index.js.map +0 -1
  161. package/dist/ui/annotation/utils.d.ts +0 -40
  162. package/dist/ui/annotation/utils.d.ts.map +0 -1
  163. package/dist/ui/annotation/utils.js +0 -62
  164. package/dist/ui/annotation/utils.js.map +0 -1
  165. package/dist/ui/components/CommentsContent.d.ts +0 -35
  166. package/dist/ui/components/CommentsContent.d.ts.map +0 -1
  167. package/dist/ui/components/CommentsContent.js +0 -203
  168. package/dist/ui/components/CommentsContent.js.map +0 -1
  169. package/dist/ui/components/FloatingBar.d.ts +0 -55
  170. package/dist/ui/components/FloatingBar.d.ts.map +0 -1
  171. package/dist/ui/components/FloatingBar.js +0 -585
  172. package/dist/ui/components/FloatingBar.js.map +0 -1
  173. package/dist/ui/components/Header.d.ts +0 -29
  174. package/dist/ui/components/Header.d.ts.map +0 -1
  175. package/dist/ui/components/Header.js +0 -127
  176. package/dist/ui/components/Header.js.map +0 -1
  177. package/dist/ui/components/LeftPanel.d.ts +0 -54
  178. package/dist/ui/components/LeftPanel.d.ts.map +0 -1
  179. package/dist/ui/components/LeftPanel.js +0 -202
  180. package/dist/ui/components/LeftPanel.js.map +0 -1
  181. package/dist/ui/components/OutlineContent.d.ts +0 -34
  182. package/dist/ui/components/OutlineContent.d.ts.map +0 -1
  183. package/dist/ui/components/OutlineContent.js +0 -147
  184. package/dist/ui/components/OutlineContent.js.map +0 -1
  185. package/dist/ui/components/RightPanel.d.ts +0 -52
  186. package/dist/ui/components/RightPanel.d.ts.map +0 -1
  187. package/dist/ui/components/RightPanel.js +0 -142
  188. package/dist/ui/components/RightPanel.js.map +0 -1
  189. package/dist/ui/components/Viewport.d.ts +0 -70
  190. package/dist/ui/components/Viewport.d.ts.map +0 -1
  191. package/dist/ui/components/Viewport.js +0 -173
  192. package/dist/ui/components/Viewport.js.map +0 -1
  193. package/dist/ui/components/index.d.ts +0 -11
  194. package/dist/ui/components/index.d.ts.map +0 -1
  195. package/dist/ui/components/index.js +0 -10
  196. package/dist/ui/components/index.js.map +0 -1
  197. package/dist/ui/icons/icons.d.ts +0 -43
  198. package/dist/ui/icons/icons.d.ts.map +0 -1
  199. package/dist/ui/icons/icons.js +0 -46
  200. package/dist/ui/icons/icons.js.map +0 -1
  201. package/dist/ui/icons/index.d.ts +0 -11
  202. package/dist/ui/icons/index.d.ts.map +0 -1
  203. package/dist/ui/icons/index.js +0 -18
  204. package/dist/ui/icons/index.js.map +0 -1
  205. package/dist/ui/index.d.ts +0 -7
  206. package/dist/ui/index.d.ts.map +0 -1
  207. package/dist/ui/index.js +0 -9
  208. package/dist/ui/index.js.map +0 -1
  209. package/dist/ui/styles/base.css.d.ts +0 -5
  210. package/dist/ui/styles/base.css.d.ts.map +0 -1
  211. package/dist/ui/styles/base.css.js +0 -49
  212. package/dist/ui/styles/base.css.js.map +0 -1
  213. package/dist/ui/styles/floating-bar.css.d.ts +0 -5
  214. package/dist/ui/styles/floating-bar.css.d.ts.map +0 -1
  215. package/dist/ui/styles/floating-bar.css.js +0 -417
  216. package/dist/ui/styles/floating-bar.css.js.map +0 -1
  217. package/dist/ui/styles/header.css.d.ts +0 -5
  218. package/dist/ui/styles/header.css.d.ts.map +0 -1
  219. package/dist/ui/styles/header.css.js +0 -49
  220. package/dist/ui/styles/header.css.js.map +0 -1
  221. package/dist/ui/styles/index.d.ts +0 -21
  222. package/dist/ui/styles/index.d.ts.map +0 -1
  223. package/dist/ui/styles/index.js +0 -48
  224. package/dist/ui/styles/index.js.map +0 -1
  225. package/dist/ui/styles/panels.css.d.ts +0 -5
  226. package/dist/ui/styles/panels.css.d.ts.map +0 -1
  227. package/dist/ui/styles/panels.css.js +0 -446
  228. package/dist/ui/styles/panels.css.js.map +0 -1
  229. package/dist/ui/styles/responsive.css.d.ts +0 -5
  230. package/dist/ui/styles/responsive.css.d.ts.map +0 -1
  231. package/dist/ui/styles/responsive.css.js +0 -201
  232. package/dist/ui/styles/responsive.css.js.map +0 -1
  233. package/dist/ui/styles/variables.css.d.ts +0 -6
  234. package/dist/ui/styles/variables.css.d.ts.map +0 -1
  235. package/dist/ui/styles/variables.css.js +0 -75
  236. package/dist/ui/styles/variables.css.js.map +0 -1
  237. package/dist/ui/styles/viewport.css.d.ts +0 -5
  238. package/dist/ui/styles/viewport.css.d.ts.map +0 -1
  239. package/dist/ui/styles/viewport.css.js +0 -87
  240. package/dist/ui/styles/viewport.css.js.map +0 -1
  241. package/dist/view/LayoutCalculator.d.ts +0 -42
  242. package/dist/view/LayoutCalculator.d.ts.map +0 -1
  243. package/dist/view/LayoutCalculator.js +0 -180
  244. package/dist/view/LayoutCalculator.js.map +0 -1
  245. package/dist/view/TransitionCoordinator.d.ts +0 -11
  246. package/dist/view/TransitionCoordinator.d.ts.map +0 -1
  247. package/dist/view/TransitionCoordinator.js +0 -22
  248. package/dist/view/TransitionCoordinator.js.map +0 -1
  249. package/dist/view/ViewState.d.ts +0 -46
  250. package/dist/view/ViewState.d.ts.map +0 -1
  251. package/dist/view/ViewState.js +0 -109
  252. package/dist/view/ViewState.js.map +0 -1
  253. package/dist/view/index.d.ts +0 -7
  254. package/dist/view/index.d.ts.map +0 -1
  255. package/dist/view/index.js +0 -4
  256. package/dist/view/index.js.map +0 -1
  257. package/dist/worker/types.d.ts +0 -81
  258. package/dist/worker/types.d.ts.map +0 -1
  259. package/dist/worker/types.js +0 -6
  260. package/dist/worker/types.js.map +0 -1
  261. package/dist/worker.d.ts +0 -2
  262. package/dist/worker.d.ts.map +0 -1
  263. package/dist/worker.js +0 -205
  264. package/dist/worker.js.map +0 -1
@@ -1,46 +0,0 @@
1
- import type { BandLayout, LayoutResult, SlotLayout } from './LayoutCalculator';
2
- export type DisplayMode = 'single' | 'scroll';
3
- export interface ScaledSlotLayout extends SlotLayout {
4
- width: number;
5
- height: number;
6
- x: number;
7
- y: number;
8
- }
9
- export interface ScaledBandLayout {
10
- band: BandLayout;
11
- width: number;
12
- height: number;
13
- slots: ScaledSlotLayout[];
14
- colWidths: number[];
15
- rowHeights: number[];
16
- }
17
- interface SlotLookupEntry {
18
- bandIndex: number;
19
- slot: ScaledSlotLayout;
20
- }
21
- export declare class LayoutState {
22
- private layout;
23
- private scaledBands;
24
- private bandOffsets;
25
- private totalHeight;
26
- private totalWidth;
27
- private slotLookup;
28
- private zoom;
29
- setLayout(layout: LayoutResult, zoom: number): void;
30
- getBandCount(): number;
31
- getBand(index: number): ScaledBandLayout | null;
32
- getBandOffset(index: number): number;
33
- getBandOffsets(): number[];
34
- getTotalHeight(): number;
35
- getTotalWidth(): number;
36
- getBandIndexForPage(pageIndex: number): number;
37
- getBandIndexForOffset(offsetY: number): number;
38
- getSlotForPage(pageIndex: number): SlotLookupEntry | null;
39
- getPageCenter(pageIndex: number): {
40
- x: number;
41
- y: number;
42
- } | null;
43
- private rebuildScaled;
44
- }
45
- export {};
46
- //# sourceMappingURL=LayoutState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LayoutState.d.ts","sourceRoot":"","sources":["../../src/layout/LayoutState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,UAAU,eAAe;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;CAC1B;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,IAAI,CAAK;IAEjB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMnD,YAAY,IAAI,MAAM;IAItB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAI/C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpC,cAAc,IAAI,MAAM,EAAE;IAI1B,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAK9C,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAsB9C,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIzD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAWjE,OAAO,CAAC,aAAa;CAmCxB"}
@@ -1,109 +0,0 @@
1
- export class LayoutState {
2
- layout = { bands: [], pageToBand: [] };
3
- scaledBands = [];
4
- bandOffsets = [];
5
- totalHeight = 0;
6
- totalWidth = 0;
7
- slotLookup = [];
8
- zoom = 1;
9
- setLayout(layout, zoom) {
10
- this.layout = layout;
11
- this.zoom = zoom;
12
- this.rebuildScaled();
13
- }
14
- getBandCount() {
15
- return this.layout.bands.length;
16
- }
17
- getBand(index) {
18
- return this.scaledBands[index] ?? null;
19
- }
20
- getBandOffset(index) {
21
- return this.bandOffsets[index] ?? 0;
22
- }
23
- getBandOffsets() {
24
- return this.bandOffsets.slice();
25
- }
26
- getTotalHeight() {
27
- return this.totalHeight;
28
- }
29
- getTotalWidth() {
30
- return this.totalWidth;
31
- }
32
- getBandIndexForPage(pageIndex) {
33
- const index = this.layout.pageToBand[pageIndex];
34
- return index === undefined || index < 0 ? 0 : index;
35
- }
36
- getBandIndexForOffset(offsetY) {
37
- if (this.scaledBands.length === 0)
38
- return 0;
39
- if (offsetY <= 0)
40
- return 0;
41
- if (offsetY >= this.totalHeight)
42
- return this.scaledBands.length - 1;
43
- let low = 0;
44
- let high = this.scaledBands.length - 1;
45
- while (low <= high) {
46
- const mid = Math.floor((low + high) / 2);
47
- const top = this.bandOffsets[mid];
48
- const bottom = top + this.scaledBands[mid].height;
49
- if (offsetY < top) {
50
- high = mid - 1;
51
- }
52
- else if (offsetY > bottom) {
53
- low = mid + 1;
54
- }
55
- else {
56
- return mid;
57
- }
58
- }
59
- return Math.max(0, Math.min(low, this.scaledBands.length - 1));
60
- }
61
- getSlotForPage(pageIndex) {
62
- return this.slotLookup[pageIndex] ?? null;
63
- }
64
- getPageCenter(pageIndex) {
65
- const entry = this.getSlotForPage(pageIndex);
66
- if (!entry)
67
- return null;
68
- const { slot, bandIndex } = entry;
69
- const bandTop = this.bandOffsets[bandIndex] ?? 0;
70
- return {
71
- x: slot.x + slot.width / 2,
72
- y: bandTop + slot.y + slot.height / 2,
73
- };
74
- }
75
- rebuildScaled() {
76
- this.scaledBands = this.layout.bands.map((band) => {
77
- const slots = band.slots.map((slot) => ({
78
- ...slot,
79
- width: slot.baseWidth * this.zoom,
80
- height: slot.baseHeight * this.zoom,
81
- x: slot.baseX * this.zoom,
82
- y: slot.baseY * this.zoom,
83
- }));
84
- return {
85
- band,
86
- width: band.baseWidth * this.zoom,
87
- height: band.baseHeight * this.zoom,
88
- slots,
89
- colWidths: band.colWidths.map((width) => width * this.zoom),
90
- rowHeights: band.rowHeights.map((height) => height * this.zoom),
91
- };
92
- });
93
- this.bandOffsets = [];
94
- this.totalHeight = 0;
95
- this.totalWidth = 0;
96
- for (const band of this.scaledBands) {
97
- this.bandOffsets.push(this.totalHeight);
98
- this.totalHeight += band.height;
99
- this.totalWidth = Math.max(this.totalWidth, band.width);
100
- }
101
- this.slotLookup = new Array(this.layout.pageToBand.length).fill(null);
102
- this.scaledBands.forEach((band, bandIndex) => {
103
- for (const slot of band.slots) {
104
- this.slotLookup[slot.pageIndex] = { bandIndex, slot };
105
- }
106
- });
107
- }
108
- }
109
- //# sourceMappingURL=LayoutState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LayoutState.js","sourceRoot":"","sources":["../../src/layout/LayoutState.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { DisplayMode } from './LayoutState';
2
- export interface BandWindow {
3
- start: number;
4
- end: number;
5
- }
6
- export declare class TransitionCoordinator {
7
- private windowRadius;
8
- constructor(windowRadius?: number);
9
- getWindow(currentBandIndex: number, bandCount: number, displayMode: DisplayMode, previousDisplayMode?: DisplayMode): BandWindow;
10
- }
11
- //# sourceMappingURL=TransitionCoordinator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransitionCoordinator.d.ts","sourceRoot":"","sources":["../../src/layout/TransitionCoordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,YAAY,CAAS;gBAEjB,YAAY,GAAE,MAAU;IAIpC,SAAS,CACL,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,mBAAmB,CAAC,EAAE,WAAW,GAClC,UAAU;CAmBhB"}
@@ -1,22 +0,0 @@
1
- export class TransitionCoordinator {
2
- windowRadius;
3
- constructor(windowRadius = 2) {
4
- this.windowRadius = windowRadius;
5
- }
6
- getWindow(currentBandIndex, bandCount, displayMode, previousDisplayMode) {
7
- if (bandCount <= 0) {
8
- return { start: 0, end: 0 };
9
- }
10
- const clampedCurrent = Math.max(0, Math.min(currentBandIndex, bandCount - 1));
11
- if (displayMode === 'single') {
12
- return { start: clampedCurrent, end: clampedCurrent };
13
- }
14
- const radius = previousDisplayMode === 'single'
15
- ? Math.max(1, this.windowRadius)
16
- : this.windowRadius;
17
- const start = Math.max(0, clampedCurrent - radius);
18
- const end = Math.min(bandCount - 1, clampedCurrent + radius);
19
- return { start, end };
20
- }
21
- }
22
- //# sourceMappingURL=TransitionCoordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransitionCoordinator.js","sourceRoot":"","sources":["../../src/layout/TransitionCoordinator.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,qBAAqB;IACtB,YAAY,CAAS;IAE7B,YAAY,eAAuB,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,SAAS,CACL,gBAAwB,EACxB,SAAiB,EACjB,WAAwB,EACxB,mBAAiC;QAEjC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACjB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAE9E,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,KAAK,QAAQ;YAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,CAAC;QAC7D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC1B,CAAC;CACJ"}
@@ -1,7 +0,0 @@
1
- export { LayoutCalculator } from './LayoutCalculator';
2
- export type { PageSize, SlotLayout, BandLayout, LayoutResult, } from './LayoutCalculator';
3
- export { LayoutState } from './LayoutState';
4
- export type { ScaledBandLayout, ScaledSlotLayout } from './LayoutState';
5
- export { BandManager } from './BandManager';
6
- export type { BandManagerDeps, BandPageCallbacks } from './BandManager';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,4 +0,0 @@
1
- export { LayoutCalculator } from './LayoutCalculator';
2
- export { LayoutState } from './LayoutState';
3
- export { BandManager } from './BandManager';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -1,87 +0,0 @@
1
- import type { ViewerState } from '../core/ViewerState';
2
- import type { LayoutState } from '../layout/LayoutState';
3
- import type { AnnotationLayer } from '../ui/annotation';
4
- /**
5
- * Dependencies required by BandManager.
6
- */
7
- export interface BandManagerDeps {
8
- state: ViewerState;
9
- layoutState: LayoutState;
10
- bandContainer: HTMLDivElement;
11
- content: HTMLDivElement;
12
- topSpacer: HTMLDivElement;
13
- bottomSpacer: HTMLDivElement;
14
- annotationLayer: AnnotationLayer;
15
- getEffectivePadding: () => number;
16
- getEffectiveTotalHeight: () => number;
17
- getCurrentBandIndex: () => number;
18
- }
19
- /**
20
- * Callbacks for page-related operations during band updates.
21
- */
22
- export interface BandPageCallbacks {
23
- ensurePageView: (pageIndex: number) => HTMLElement;
24
- preparePageRender: (pageIndex: number, width: number, height: number, token: number) => void;
25
- getDisplaySize: (pageIndex: number) => {
26
- width: number;
27
- height: number;
28
- };
29
- cleanupInactivePages: (activePages: Set<number>) => void;
30
- }
31
- /**
32
- * Manages band virtualization and DOM rendering.
33
- *
34
- * Bands are horizontal rows of pages that are rendered into the viewport.
35
- * This class handles:
36
- * - Creating and updating band DOM elements
37
- * - Managing band positioning with pixel-snapping to avoid gaps
38
- * - Coordinating with page rendering through callbacks
39
- */
40
- export declare class BandManager {
41
- private deps;
42
- private callbacks;
43
- private bandElements;
44
- private isApplyingLayout;
45
- constructor(deps: BandManagerDeps, callbacks: BandPageCallbacks);
46
- /**
47
- * Check if layout is currently being applied.
48
- */
49
- isApplying(): boolean;
50
- /**
51
- * Get the band elements map (for external management if needed).
52
- */
53
- getBandElements(): Map<number, HTMLDivElement>;
54
- /**
55
- * Clear all band elements.
56
- */
57
- clearBandElements(): void;
58
- /**
59
- * Snap a value to device pixel boundaries to eliminate sub-pixel rendering gaps.
60
- */
61
- private snapToPixel;
62
- /**
63
- * Get the snapped top position for a band by accumulating snapped heights.
64
- * This ensures no gaps between adjacent bands regardless of zoom level.
65
- */
66
- getSnappedBandTop(bandIndex: number): number;
67
- /**
68
- * Apply layout to the DOM for the given window of bands.
69
- */
70
- applyLayoutToDom(window: {
71
- start: number;
72
- end: number;
73
- }, token: number): void;
74
- /**
75
- * Create a new band element.
76
- */
77
- private createBandElement;
78
- /**
79
- * Update a band element with current slot content.
80
- */
81
- private updateBandElement;
82
- /**
83
- * Clear the display - reset all band-related DOM elements.
84
- */
85
- clearDisplay(): void;
86
- }
87
- //# sourceMappingURL=BandManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BandManager.d.ts","sourceRoot":"","sources":["../../src/rendering/BandManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,cAAc,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,cAAc,CAAC;IAC1B,YAAY,EAAE,cAAc,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,MAAM,CAAC;IACtC,mBAAmB,EAAE,MAAM,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,CAAC;IACnD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7F,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,oBAAoB,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CAC5D;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,gBAAgB,CAAS;gBAErB,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB;IAK/D;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAI9C;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAW5C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgE7E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2DzB;;OAEG;IACH,YAAY,IAAI,IAAI;CAUvB"}
@@ -1,185 +0,0 @@
1
- import { PAGE_GAP_SIZE } from '../core/types';
2
- /**
3
- * Manages band virtualization and DOM rendering.
4
- *
5
- * Bands are horizontal rows of pages that are rendered into the viewport.
6
- * This class handles:
7
- * - Creating and updating band DOM elements
8
- * - Managing band positioning with pixel-snapping to avoid gaps
9
- * - Coordinating with page rendering through callbacks
10
- */
11
- export class BandManager {
12
- deps;
13
- callbacks;
14
- bandElements = new Map();
15
- isApplyingLayout = false;
16
- constructor(deps, callbacks) {
17
- this.deps = deps;
18
- this.callbacks = callbacks;
19
- }
20
- /**
21
- * Check if layout is currently being applied.
22
- */
23
- isApplying() {
24
- return this.isApplyingLayout;
25
- }
26
- /**
27
- * Get the band elements map (for external management if needed).
28
- */
29
- getBandElements() {
30
- return this.bandElements;
31
- }
32
- /**
33
- * Clear all band elements.
34
- */
35
- clearBandElements() {
36
- this.bandElements.clear();
37
- }
38
- /**
39
- * Snap a value to device pixel boundaries to eliminate sub-pixel rendering gaps.
40
- */
41
- snapToPixel(value) {
42
- const dpr = globalThis.devicePixelRatio || 1;
43
- return Math.round(value * dpr) / dpr;
44
- }
45
- /**
46
- * Get the snapped top position for a band by accumulating snapped heights.
47
- * This ensures no gaps between adjacent bands regardless of zoom level.
48
- */
49
- getSnappedBandTop(bandIndex) {
50
- const { state, layoutState } = this.deps;
51
- const gap = this.snapToPixel(state.get('seamless') ? 0 : PAGE_GAP_SIZE * state.get('zoom'));
52
- let top = 0;
53
- for (let i = 0; i < bandIndex; i++) {
54
- const band = layoutState.getBand(i);
55
- if (band)
56
- top += this.snapToPixel(band.height) + gap;
57
- }
58
- return top;
59
- }
60
- /**
61
- * Apply layout to the DOM for the given window of bands.
62
- */
63
- applyLayoutToDom(window, token) {
64
- const { state, layoutState, bandContainer, content, topSpacer, bottomSpacer, annotationLayer } = this.deps;
65
- const bandCount = layoutState.getBandCount();
66
- if (bandCount === 0)
67
- return;
68
- this.isApplyingLayout = true;
69
- const gapSize = state.get('seamless') ? 0 : PAGE_GAP_SIZE * state.get('zoom');
70
- const snappedGap = this.snapToPixel(gapSize);
71
- const currentBandIndex = this.deps.getCurrentBandIndex();
72
- const displayMode = state.get('displayMode');
73
- const activeWindow = displayMode === 'single'
74
- ? { start: currentBandIndex, end: currentBandIndex }
75
- : window;
76
- let totalHeight = layoutState.getTotalHeight();
77
- let totalWidth = layoutState.getTotalWidth();
78
- if (displayMode === 'single') {
79
- const band = layoutState.getBand(currentBandIndex);
80
- if (band) {
81
- totalHeight = band.height;
82
- totalWidth = band.width;
83
- }
84
- }
85
- else {
86
- totalHeight = this.deps.getEffectiveTotalHeight();
87
- }
88
- const effectivePadding = this.deps.getEffectivePadding();
89
- content.style.width = `${Math.max(0, totalWidth) + effectivePadding * 2}px`;
90
- content.style.height = `${Math.max(0, totalHeight) + effectivePadding * 2}px`;
91
- content.style.padding = `${effectivePadding}px`;
92
- topSpacer.style.height = '0px';
93
- bottomSpacer.style.height = '0px';
94
- bandContainer.style.height = `${Math.max(0, totalHeight)}px`;
95
- const fragment = document.createDocumentFragment();
96
- const activePages = new Set();
97
- // Compute band positions from accumulated snapped heights to eliminate sub-pixel gaps
98
- let bandTop = this.getSnappedBandTop(activeWindow.start);
99
- for (let i = activeWindow.start; i <= activeWindow.end; i++) {
100
- const band = layoutState.getBand(i);
101
- if (!band)
102
- continue;
103
- for (const slot of band.slots) {
104
- activePages.add(slot.pageIndex);
105
- }
106
- const bandEl = this.bandElements.get(i) ?? this.createBandElement(i);
107
- bandEl.style.top = displayMode === 'scroll' ? `${bandTop}px` : '0px';
108
- this.updateBandElement(bandEl, band, gapSize, token);
109
- fragment.appendChild(bandEl);
110
- bandTop += this.snapToPixel(band.height) + snappedGap;
111
- }
112
- bandContainer.replaceChildren(fragment);
113
- this.callbacks.cleanupInactivePages(activePages);
114
- this.isApplyingLayout = false;
115
- }
116
- /**
117
- * Create a new band element.
118
- */
119
- createBandElement(bandIndex) {
120
- const bandEl = document.createElement('div');
121
- bandEl.className = 'udoc-band';
122
- bandEl.dataset.bandIndex = String(bandIndex);
123
- const inner = document.createElement('div');
124
- inner.className = 'udoc-band-inner';
125
- bandEl.appendChild(inner);
126
- this.bandElements.set(bandIndex, bandEl);
127
- return bandEl;
128
- }
129
- /**
130
- * Update a band element with current slot content.
131
- */
132
- updateBandElement(bandEl, band, gapSize, token) {
133
- const inner = bandEl.firstElementChild;
134
- if (!inner)
135
- return;
136
- const { state, annotationLayer } = this.deps;
137
- const snappedHeight = this.snapToPixel(band.height);
138
- const snappedWidth = this.snapToPixel(band.width);
139
- const snappedGap = this.snapToPixel(gapSize);
140
- bandEl.style.height = `${snappedHeight}px`;
141
- inner.style.width = `${snappedWidth}px`;
142
- inner.style.height = `${snappedHeight}px`;
143
- inner.style.gridTemplateColumns = band.colWidths.map((w) => `${this.snapToPixel(w)}px`).join(' ');
144
- inner.style.gridTemplateRows = band.rowHeights.map((h) => `${this.snapToPixel(h)}px`).join(' ');
145
- inner.style.columnGap = `${snappedGap}px`;
146
- inner.style.rowGap = `${snappedGap}px`;
147
- // Update annotation layer zoom before rendering
148
- annotationLayer.setZoom(state.get('zoom'));
149
- const fragment = document.createDocumentFragment();
150
- for (const slot of band.slots) {
151
- const slotEl = document.createElement('div');
152
- slotEl.className = 'udoc-slot';
153
- slotEl.style.gridColumn = String(slot.col + 1);
154
- slotEl.style.gridRow = String(slot.row + 1);
155
- // Create a wrapper to hold both the page and annotation overlay
156
- const wrapper = document.createElement('div');
157
- wrapper.className = 'udoc-page-wrapper';
158
- wrapper.style.position = 'relative';
159
- wrapper.dataset.pageIndex = String(slot.pageIndex);
160
- const viewElement = this.callbacks.ensurePageView(slot.pageIndex);
161
- wrapper.appendChild(viewElement);
162
- // Render annotations into the wrapper
163
- annotationLayer.renderPageAnnotations(wrapper, slot.pageIndex);
164
- slotEl.appendChild(wrapper);
165
- fragment.appendChild(slotEl);
166
- const displaySize = this.callbacks.getDisplaySize(slot.pageIndex);
167
- this.callbacks.preparePageRender(slot.pageIndex, displaySize.width || slot.width, displaySize.height || slot.height, token);
168
- }
169
- inner.replaceChildren(fragment);
170
- }
171
- /**
172
- * Clear the display - reset all band-related DOM elements.
173
- */
174
- clearDisplay() {
175
- const { bandContainer, topSpacer, bottomSpacer, content } = this.deps;
176
- this.bandElements.clear();
177
- bandContainer.replaceChildren();
178
- topSpacer.style.height = '0px';
179
- bottomSpacer.style.height = '0px';
180
- bandContainer.style.height = '';
181
- content.style.width = '';
182
- content.style.height = '';
183
- }
184
- }
185
- //# sourceMappingURL=BandManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BandManager.js","sourceRoot":"","sources":["../../src/rendering/BandManager.ts"],"names":[],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- /**
2
- * LRU cache for rendered page images.
3
- *
4
- * Caches rendered page images as blob URLs to avoid re-rendering
5
- * when scrolling back to previously viewed pages.
6
- */
7
- import type { CachedPage, PageView } from './types';
8
- /**
9
- * Options for the page cache.
10
- */
11
- export interface PageCacheOptions {
12
- /** Maximum number of pages to cache. Set to 0 to disable caching. */
13
- maxSize: number;
14
- /** Render format - only 'png' supports caching */
15
- renderFormat: 'png' | 'rgba';
16
- }
17
- /**
18
- * LRU cache for rendered page images.
19
- */
20
- export declare class PageCache {
21
- private cache;
22
- private options;
23
- constructor(options: PageCacheOptions);
24
- /**
25
- * Check if caching is enabled.
26
- */
27
- isEnabled(): boolean;
28
- /**
29
- * Update cache options.
30
- */
31
- setOptions(options: Partial<PageCacheOptions>): void;
32
- /**
33
- * Store a rendered page in the cache.
34
- *
35
- * @param pageIndex Page index
36
- * @param view Page view with blobUrl to cache
37
- * @returns true if stored successfully, false if caching not possible
38
- */
39
- store(pageIndex: number, view: PageView): boolean;
40
- /**
41
- * Take a cached page from the cache (removes it from cache).
42
- *
43
- * @param pageIndex Page index
44
- * @param renderWidth Render width to match
45
- * @param renderHeight Render height to match
46
- * @returns The cached page if found, null otherwise
47
- */
48
- take(pageIndex: number, renderWidth: number, renderHeight: number): CachedPage | null;
49
- /**
50
- * Check if a page is cached.
51
- *
52
- * @param pageIndex Page index
53
- * @param renderWidth Render width to match
54
- * @param renderHeight Render height to match
55
- * @returns true if cached
56
- */
57
- has(pageIndex: number, renderWidth: number, renderHeight: number): boolean;
58
- /**
59
- * Clear all cached pages and revoke blob URLs.
60
- */
61
- clear(): void;
62
- /**
63
- * Get the number of cached pages.
64
- */
65
- get size(): number;
66
- /**
67
- * Trim the cache to the maximum size, removing oldest entries.
68
- */
69
- private trim;
70
- /**
71
- * Generate a cache key for a page at a specific render size.
72
- */
73
- private getKey;
74
- }
75
- //# sourceMappingURL=PageCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageCache.d.ts","sourceRoot":"","sources":["../../src/rendering/PageCache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,YAAY,EAAE,KAAK,GAAG,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,gBAAgB;IAIrC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAMpD;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO;IAwBjD;;;;;;;OAOG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAWrF;;;;;;;OAOG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAK1E;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,MAAM;CAGjB"}