@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,160 +0,0 @@
1
- import { THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT } from '../../constants';
2
- /**
3
- * Panel component for displaying page thumbnails with lazy loading.
4
- */
5
- export class ThumbnailsPanel {
6
- container = null;
7
- callbacks;
8
- observer = null;
9
- blobUrls = new Map();
10
- queue = [];
11
- isRendering = false;
12
- pauseRendering = false;
13
- currentPage = 0;
14
- pageCount = 0;
15
- constructor(callbacks) {
16
- this.callbacks = callbacks;
17
- }
18
- /**
19
- * Render thumbnails into the given container.
20
- */
21
- render(container, pageCount, currentPage) {
22
- this.container = container;
23
- this.pageCount = pageCount;
24
- this.currentPage = currentPage;
25
- this.clear();
26
- // Set up IntersectionObserver for lazy loading
27
- this.observer = new IntersectionObserver((entries) => {
28
- for (const entry of entries) {
29
- if (entry.isIntersecting) {
30
- const img = entry.target;
31
- const pageIndex = parseInt(img.dataset.pageIndex, 10);
32
- const width = parseInt(img.dataset.thumbWidth, 10);
33
- const height = parseInt(img.dataset.thumbHeight, 10);
34
- // Stop observing this thumbnail
35
- this.observer?.unobserve(img);
36
- // Queue the thumbnail for rendering
37
- this.enqueueThumbnail(pageIndex, img, width, height);
38
- }
39
- }
40
- }, {
41
- root: container.parentElement, // The panel element
42
- rootMargin: '100px', // Pre-load thumbnails 100px before they become visible
43
- });
44
- for (let i = 0; i < pageCount; i++) {
45
- const { width: pageWidth, height: pageHeight } = this.callbacks.getPageSize(i);
46
- // Calculate thumbnail size maintaining aspect ratio
47
- const scale = Math.min(THUMBNAIL_WIDTH / pageWidth, THUMBNAIL_HEIGHT / pageHeight);
48
- const thumbWidth = Math.round(pageWidth * scale);
49
- const thumbHeight = Math.round(pageHeight * scale);
50
- // Create thumbnail container
51
- const thumb = document.createElement('div');
52
- thumb.className = 'udoc-thumbnail';
53
- if (i === currentPage) {
54
- thumb.classList.add('selected');
55
- }
56
- thumb.addEventListener('click', () => this.callbacks.onPageClick(i));
57
- // Create placeholder image with data attributes for lazy loading
58
- const img = document.createElement('img');
59
- img.style.maxWidth = `${thumbWidth}px`;
60
- img.style.aspectRatio = `${thumbWidth} / ${thumbHeight}`;
61
- img.alt = `Page ${i + 1}`;
62
- img.dataset.pageIndex = String(i);
63
- img.dataset.thumbWidth = String(thumbWidth);
64
- img.dataset.thumbHeight = String(thumbHeight);
65
- // Page number label
66
- const label = document.createElement('div');
67
- label.className = 'udoc-thumbnail-label';
68
- label.textContent = String(i + 1);
69
- thumb.append(img, label);
70
- container.appendChild(thumb);
71
- // Observe the image for lazy loading
72
- this.observer.observe(img);
73
- }
74
- }
75
- /**
76
- * Update the currently selected page and scroll it into view.
77
- * @param scrollBehavior - 'auto' for instant scroll, 'smooth' for animated
78
- */
79
- setCurrentPage(pageIndex, scrollBehavior = 'smooth') {
80
- if (!this.container)
81
- return;
82
- if (this.currentPage === pageIndex)
83
- return;
84
- this.currentPage = pageIndex;
85
- const thumbnails = this.container.querySelectorAll('.udoc-thumbnail');
86
- thumbnails.forEach((thumb, index) => {
87
- thumb.classList.toggle('selected', index === pageIndex);
88
- });
89
- // Scroll selected thumbnail into view
90
- const selected = this.container.querySelector('.udoc-thumbnail.selected');
91
- selected?.scrollIntoView({ block: 'nearest', behavior: scrollBehavior });
92
- }
93
- /**
94
- * Pause thumbnail rendering (e.g., during scroll).
95
- */
96
- pause() {
97
- this.pauseRendering = true;
98
- }
99
- /**
100
- * Resume thumbnail rendering.
101
- */
102
- resume() {
103
- this.pauseRendering = false;
104
- this.processQueue();
105
- }
106
- /**
107
- * Clear all thumbnails and release resources.
108
- */
109
- clear() {
110
- // Disconnect observer
111
- if (this.observer) {
112
- this.observer.disconnect();
113
- this.observer = null;
114
- }
115
- // Revoke all blob URLs
116
- for (const url of this.blobUrls.values()) {
117
- URL.revokeObjectURL(url);
118
- }
119
- this.blobUrls.clear();
120
- // Clear queue
121
- this.queue = [];
122
- this.isRendering = false;
123
- // Clear container
124
- if (this.container) {
125
- this.container.innerHTML = '';
126
- }
127
- }
128
- /**
129
- * Destroy the panel and release all resources.
130
- */
131
- destroy() {
132
- this.clear();
133
- this.container = null;
134
- }
135
- enqueueThumbnail(pageIndex, img, width, height) {
136
- this.queue.push({ pageIndex, img, width, height });
137
- this.processQueue();
138
- }
139
- async processQueue() {
140
- if (this.pauseRendering || this.isRendering)
141
- return;
142
- const next = this.queue.shift();
143
- if (!next)
144
- return;
145
- this.isRendering = true;
146
- try {
147
- const url = await this.callbacks.renderThumbnail(next.pageIndex, next.width, next.height);
148
- this.blobUrls.set(next.pageIndex, url);
149
- next.img.src = url;
150
- }
151
- catch (error) {
152
- console.error(`Failed to render thumbnail for page ${next.pageIndex}:`, error);
153
- }
154
- finally {
155
- this.isRendering = false;
156
- this.processQueue();
157
- }
158
- }
159
- }
160
- //# sourceMappingURL=ThumbnailsPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThumbnailsPanel.js","sourceRoot":"","sources":["../../../src/components/panels/ThumbnailsPanel.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export { ThumbnailsPanel } from './ThumbnailsPanel';
2
- export type { ThumbnailsPanelCallbacks } from './ThumbnailsPanel';
3
- export { OutlinePanel } from './OutlinePanel';
4
- export type { OutlinePanelCallbacks } from './OutlinePanel';
5
- export { CommentsPanel } from './CommentsPanel';
6
- export type { CommentsPanelCallbacks } from './CommentsPanel';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,4 +0,0 @@
1
- export { ThumbnailsPanel } from './ThumbnailsPanel';
2
- export { OutlinePanel } from './OutlinePanel';
3
- export { CommentsPanel } from './CommentsPanel';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,25 +0,0 @@
1
- import type { UDocViewerOptions } from './types';
2
- export { PAGE_GAP_SIZE } from './types';
3
- /**
4
- * Zoom levels for stepped zoom (used by zoomIn/zoomOut buttons).
5
- */
6
- export declare const ZOOM_LEVELS: number[];
7
- /**
8
- * Default options for UDocViewer.
9
- */
10
- export declare const DEFAULT_OPTIONS: Required<UDocViewerOptions>;
11
- /**
12
- * PDF uses 72 points per inch, CSS uses 96 pixels per inch.
13
- * This factor converts PDF points to CSS pixels at "actual size" (100% zoom).
14
- */
15
- export declare const POINTS_TO_CSS_PIXELS: number;
16
- /**
17
- * Empty 1x1 transparent GIF used as placeholder image.
18
- */
19
- export declare const EMPTY_IMAGE_DATA_URL = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";
20
- /**
21
- * Thumbnail display dimensions.
22
- */
23
- export declare const THUMBNAIL_WIDTH = 120;
24
- export declare const THUMBNAIL_HEIGHT = 160;
25
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,WAAW,UAA6D,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAqBvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAU,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,oBAAoB,+DAA+D,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,gBAAgB,MAAM,CAAC"}
package/dist/constants.js DELETED
@@ -1,46 +0,0 @@
1
- // Re-export PAGE_GAP_SIZE for convenience
2
- export { PAGE_GAP_SIZE } from './types';
3
- /**
4
- * Zoom levels for stepped zoom (used by zoomIn/zoomOut buttons).
5
- */
6
- export const ZOOM_LEVELS = [0.1, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 2.0, 3.0, 4.0, 5.0];
7
- /**
8
- * Default options for UDocViewer.
9
- */
10
- export const DEFAULT_OPTIONS = {
11
- initialZoom: 1.0,
12
- initialZoomMode: 'fit-page',
13
- displayMode: 'scroll',
14
- layoutMode: 'single',
15
- rotation: 0,
16
- seamless: false,
17
- grid: { columns: 2, rows: 2 },
18
- maxZoom: 5.0,
19
- minZoom: 0.05,
20
- zoomStep: 0.25,
21
- renderFormat: 'png',
22
- pageCacheSize: 100,
23
- showHeader: true,
24
- showSidebar: true,
25
- sidebarOpen: false,
26
- showLeftPanel: true,
27
- leftPanelOpen: false,
28
- showRightPanel: true,
29
- rightPanelOpen: false,
30
- showFloatingBar: true,
31
- };
32
- /**
33
- * PDF uses 72 points per inch, CSS uses 96 pixels per inch.
34
- * This factor converts PDF points to CSS pixels at "actual size" (100% zoom).
35
- */
36
- export const POINTS_TO_CSS_PIXELS = 96 / 72;
37
- /**
38
- * Empty 1x1 transparent GIF used as placeholder image.
39
- */
40
- export const EMPTY_IMAGE_DATA_URL = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
41
- /**
42
- * Thumbnail display dimensions.
43
- */
44
- export const THUMBNAIL_WIDTH = 120;
45
- export const THUMBNAIL_HEIGHT = 160;
46
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgC;IACxD,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,UAAU;IAC3B,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7B,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,GAAG;IAClB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,IAAI;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,4DAA4D,CAAC;AAEjG;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC"}
@@ -1,54 +0,0 @@
1
- import type { ViewerState } from './ViewerState';
2
- import type { LayoutState } from '../layout/LayoutState';
3
- import type { DestinationDisplay } from './types';
4
- /**
5
- * Dependencies required by NavigationController.
6
- */
7
- export interface NavigationDeps {
8
- state: ViewerState;
9
- layoutState: LayoutState;
10
- viewport: HTMLElement;
11
- getEffectivePadding: () => number;
12
- getEffectiveBandOffset: (bandIndex: number) => number;
13
- }
14
- /**
15
- * Handles scroll position calculations and navigation within the document.
16
- *
17
- * This controller manages:
18
- * - Scrolling to page centers
19
- * - Scrolling to specific destinations (PDF destinations with various display types)
20
- * - Calculating page positions in content coordinates
21
- */
22
- export declare class NavigationController {
23
- private deps;
24
- private suppressScrollHandling;
25
- constructor(deps: NavigationDeps);
26
- /**
27
- * Scroll to center a page in the viewport.
28
- */
29
- scrollToPageCenter(pageIndex: number): void;
30
- /**
31
- * Scroll to a specific destination within a page.
32
- *
33
- * Converts document coordinates (points, top-left origin) to viewport scroll position.
34
- */
35
- scrollToDestination(pageIndex: number, display: DestinationDisplay): void;
36
- /**
37
- * Get the center position of a page in content coordinates.
38
- */
39
- getPageCenterInContent(pageIndex: number): {
40
- x: number;
41
- y: number;
42
- } | null;
43
- /**
44
- * Check if scroll handling is currently suppressed.
45
- */
46
- isScrollSuppressed(): boolean;
47
- /**
48
- * Execute an action with scroll handling suppressed.
49
- * This prevents scroll events from triggering page change detection
50
- * while programmatically setting scroll position.
51
- */
52
- withScrollSuppressed(action: () => void): void;
53
- }
54
- //# sourceMappingURL=NavigationController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavigationController.d.ts","sourceRoot":"","sources":["../../src/core/NavigationController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,sBAAsB,CAAS;gBAE3B,IAAI,EAAE,cAAc;IAIhC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAe3C;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAoFzE;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAe1E;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI;CAOjD"}
@@ -1,145 +0,0 @@
1
- import { POINTS_TO_CSS_PIXELS } from './constants';
2
- /**
3
- * Handles scroll position calculations and navigation within the document.
4
- *
5
- * This controller manages:
6
- * - Scrolling to page centers
7
- * - Scrolling to specific destinations (PDF destinations with various display types)
8
- * - Calculating page positions in content coordinates
9
- */
10
- export class NavigationController {
11
- deps;
12
- suppressScrollHandling = false;
13
- constructor(deps) {
14
- this.deps = deps;
15
- }
16
- /**
17
- * Scroll to center a page in the viewport.
18
- */
19
- scrollToPageCenter(pageIndex) {
20
- const center = this.getPageCenterInContent(pageIndex);
21
- if (!center)
22
- return;
23
- const { viewport } = this.deps;
24
- const padding = this.deps.getEffectivePadding();
25
- const scrollLeft = center.x + padding - viewport.clientWidth / 2;
26
- const scrollTop = center.y + padding - viewport.clientHeight / 2;
27
- this.withScrollSuppressed(() => {
28
- viewport.scrollLeft = scrollLeft;
29
- viewport.scrollTop = scrollTop;
30
- });
31
- }
32
- /**
33
- * Scroll to a specific destination within a page.
34
- *
35
- * Converts document coordinates (points, top-left origin) to viewport scroll position.
36
- */
37
- scrollToDestination(pageIndex, display) {
38
- const entry = this.deps.layoutState.getSlotForPage(pageIndex);
39
- if (!entry) {
40
- // Fallback to page center if slot not found
41
- this.scrollToPageCenter(pageIndex);
42
- return;
43
- }
44
- const { state, viewport } = this.deps;
45
- const padding = this.deps.getEffectivePadding();
46
- const zoom = state.get('zoom');
47
- const displayMode = state.get('displayMode');
48
- const bandOffset = displayMode === 'scroll'
49
- ? this.deps.getEffectiveBandOffset(entry.bandIndex)
50
- : 0;
51
- // Page origin in content coordinates (CSS pixels × zoom)
52
- const pageOriginX = entry.slot.x;
53
- const pageOriginY = bandOffset + entry.slot.y;
54
- // Calculate scroll position based on display type
55
- let scrollLeft;
56
- let scrollTop;
57
- switch (display.type) {
58
- case 'fitH':
59
- case 'fitBH': {
60
- // Fit width - scroll Y to specified top position
61
- const top = display.top ?? 0;
62
- const contentY = pageOriginY + top * POINTS_TO_CSS_PIXELS * zoom;
63
- // Center horizontally, position top at viewport top
64
- scrollLeft = pageOriginX + entry.slot.width / 2 + padding - viewport.clientWidth / 2;
65
- scrollTop = contentY + padding;
66
- break;
67
- }
68
- case 'fitV':
69
- case 'fitBV': {
70
- // Fit height - scroll X to specified left position
71
- const left = display.left ?? 0;
72
- const contentX = pageOriginX + left * POINTS_TO_CSS_PIXELS * zoom;
73
- // Position left at viewport left, center vertically
74
- scrollLeft = contentX + padding;
75
- scrollTop = pageOriginY + entry.slot.height / 2 + padding - viewport.clientHeight / 2;
76
- break;
77
- }
78
- case 'xyz': {
79
- // Go to specific position
80
- const left = display.left ?? 0;
81
- const top = display.top ?? 0;
82
- const contentX = pageOriginX + left * POINTS_TO_CSS_PIXELS * zoom;
83
- const contentY = pageOriginY + top * POINTS_TO_CSS_PIXELS * zoom;
84
- // Position (left, top) at viewport top-left corner
85
- scrollLeft = contentX + padding;
86
- scrollTop = contentY + padding;
87
- break;
88
- }
89
- case 'fitR': {
90
- // Fit rectangle - scroll to center of rectangle
91
- const centerX = (display.left + display.right) / 2;
92
- const centerY = (display.top + display.bottom) / 2;
93
- const contentX = pageOriginX + centerX * POINTS_TO_CSS_PIXELS * zoom;
94
- const contentY = pageOriginY + centerY * POINTS_TO_CSS_PIXELS * zoom;
95
- // Center the rectangle in viewport
96
- scrollLeft = contentX + padding - viewport.clientWidth / 2;
97
- scrollTop = contentY + padding - viewport.clientHeight / 2;
98
- break;
99
- }
100
- default:
101
- // For fit/fitB, just center the page
102
- this.scrollToPageCenter(pageIndex);
103
- return;
104
- }
105
- this.withScrollSuppressed(() => {
106
- viewport.scrollLeft = Math.max(0, scrollLeft);
107
- viewport.scrollTop = Math.max(0, scrollTop);
108
- });
109
- }
110
- /**
111
- * Get the center position of a page in content coordinates.
112
- */
113
- getPageCenterInContent(pageIndex) {
114
- const entry = this.deps.layoutState.getSlotForPage(pageIndex);
115
- if (!entry)
116
- return null;
117
- const displayMode = this.deps.state.get('displayMode');
118
- const bandOffset = displayMode === 'scroll'
119
- ? this.deps.getEffectiveBandOffset(entry.bandIndex)
120
- : 0;
121
- return {
122
- x: entry.slot.x + entry.slot.width / 2,
123
- y: bandOffset + entry.slot.y + entry.slot.height / 2,
124
- };
125
- }
126
- /**
127
- * Check if scroll handling is currently suppressed.
128
- */
129
- isScrollSuppressed() {
130
- return this.suppressScrollHandling;
131
- }
132
- /**
133
- * Execute an action with scroll handling suppressed.
134
- * This prevents scroll events from triggering page change detection
135
- * while programmatically setting scroll position.
136
- */
137
- withScrollSuppressed(action) {
138
- this.suppressScrollHandling = true;
139
- action();
140
- requestAnimationFrame(() => {
141
- this.suppressScrollHandling = false;
142
- });
143
- }
144
- }
145
- //# sourceMappingURL=NavigationController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavigationController.js","sourceRoot":"","sources":["../../src/core/NavigationController.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Performance timing helper for debugging and profiling.
3
- * Provides simple start/end markers with elapsed time logging.
4
- */
5
- export declare class PerfTimer {
6
- private startTime;
7
- private marks;
8
- constructor();
9
- start(name: string): void;
10
- end(name: string): void;
11
- }
12
- //# sourceMappingURL=PerfTimer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerfTimer.d.ts","sourceRoot":"","sources":["../../src/core/PerfTimer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAkC;;IAO/C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAY1B"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Performance timing helper for debugging and profiling.
3
- * Provides simple start/end markers with elapsed time logging.
4
- */
5
- export class PerfTimer {
6
- startTime;
7
- marks = new Map();
8
- constructor() {
9
- this.startTime = performance.now();
10
- console.log('[perf] timer-start @0.0ms');
11
- }
12
- start(name) {
13
- const now = performance.now();
14
- const elapsed = now - this.startTime;
15
- this.marks.set(name, now);
16
- console.log(`[perf] ${name}-start @${elapsed.toFixed(1)}ms`);
17
- }
18
- end(name) {
19
- const now = performance.now();
20
- const startTime = this.marks.get(name);
21
- const elapsed = now - this.startTime;
22
- if (startTime !== undefined) {
23
- const duration = now - startTime;
24
- console.log(`[perf] ${name}-end @${elapsed.toFixed(1)}ms (duration: ${duration.toFixed(1)}ms)`);
25
- this.marks.delete(name);
26
- }
27
- else {
28
- console.log(`[perf] ${name}-end @${elapsed.toFixed(1)}ms (no start)`);
29
- }
30
- }
31
- }
32
- //# sourceMappingURL=PerfTimer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerfTimer.js","sourceRoot":"","sources":["../../src/core/PerfTimer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,SAAS;IACV,SAAS,CAAS;IAClB,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/C;QACI,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAY;QACd,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;CACJ"}
@@ -1,108 +0,0 @@
1
- import type { ZoomMode, DisplayMode, LayoutMode, Rotation, GridOptions, LeftPanelTab, RightPanelTab, Tool } from './types';
2
- /**
3
- * Map of all viewer state properties and their types.
4
- */
5
- export interface ViewerStateMap {
6
- isLoading: boolean;
7
- isLoaded: boolean;
8
- pageCount: number;
9
- currentPage: number;
10
- zoom: number;
11
- zoomMode: ZoomMode;
12
- displayMode: DisplayMode;
13
- layoutMode: LayoutMode;
14
- rotation: Rotation;
15
- seamless: boolean;
16
- grid: GridOptions;
17
- leftPanelOpen: boolean;
18
- rightPanelOpen: boolean;
19
- leftPanelActiveTab: LeftPanelTab;
20
- rightPanelActiveTab: RightPanelTab;
21
- activeTool: Tool;
22
- isFullscreen: boolean;
23
- }
24
- /**
25
- * Default state values for the viewer.
26
- */
27
- export declare const DEFAULT_STATE: ViewerStateMap;
28
- /**
29
- * Callback type for state change listeners.
30
- */
31
- export type StateListener<K extends keyof ViewerStateMap> = (value: ViewerStateMap[K], oldValue: ViewerStateMap[K]) => void;
32
- /**
33
- * Centralized reactive state management for the viewer.
34
- *
35
- * Provides a simple pub/sub pattern for state changes, allowing components
36
- * to subscribe to specific state keys and be notified when they change.
37
- *
38
- * @example
39
- * ```typescript
40
- * const state = new ViewerState();
41
- *
42
- * // Subscribe to zoom changes
43
- * const unsubscribe = state.subscribe('zoom', (newZoom, oldZoom) => {
44
- * console.log(`Zoom changed from ${oldZoom} to ${newZoom}`);
45
- * });
46
- *
47
- * // Update state
48
- * state.set('zoom', 1.5);
49
- *
50
- * // Cleanup
51
- * unsubscribe();
52
- * ```
53
- */
54
- export declare class ViewerState {
55
- private state;
56
- private listeners;
57
- private batchDepth;
58
- private pendingNotifications;
59
- constructor(initialState?: Partial<ViewerStateMap>);
60
- /**
61
- * Get a state value.
62
- */
63
- get<K extends keyof ViewerStateMap>(key: K): ViewerStateMap[K];
64
- /**
65
- * Get a snapshot of the entire state.
66
- */
67
- getAll(): Readonly<ViewerStateMap>;
68
- /**
69
- * Set a state value and notify subscribers.
70
- * Uses strict equality (===) to determine if the value has changed.
71
- */
72
- set<K extends keyof ViewerStateMap>(key: K, value: ViewerStateMap[K]): void;
73
- /**
74
- * Subscribe to state changes for a specific key.
75
- * @returns Unsubscribe function
76
- */
77
- subscribe<K extends keyof ViewerStateMap>(key: K, callback: StateListener<K>): () => void;
78
- /**
79
- * Batch multiple state updates together.
80
- * Notifications are deferred until the batch completes.
81
- *
82
- * @example
83
- * ```typescript
84
- * state.batch(() => {
85
- * state.set('zoom', 1.5);
86
- * state.set('zoomMode', 'custom');
87
- * });
88
- * // Both notifications fire together after batch completes
89
- * ```
90
- */
91
- batch(updates: () => void): void;
92
- /**
93
- * Update multiple state values at once.
94
- * This is a convenience method that wraps updates in a batch.
95
- */
96
- update(updates: Partial<ViewerStateMap>): void;
97
- /**
98
- * Reset state to initial values, optionally with overrides.
99
- */
100
- reset(overrides?: Partial<ViewerStateMap>): void;
101
- /**
102
- * Remove all listeners. Useful for cleanup.
103
- */
104
- clearListeners(): void;
105
- private notify;
106
- private flushNotifications;
107
- }
108
- //# sourceMappingURL=ViewerState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ViewerState.d.ts","sourceRoot":"","sources":["../../src/core/ViewerState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,IAAI,EACP,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,cAAc;IAE3B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IAGpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAGlB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,YAAY,CAAC;IACjC,mBAAmB,EAAE,aAAa,CAAC;IAGnC,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAkB3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,cAAc,IAAI,CACxD,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,oBAAoB,CAA0E;gBAE1F,YAAY,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAKlD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAI9D;;OAEG;IACH,MAAM,IAAI,QAAQ,CAAC,cAAc,CAAC;IAIlC;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAoB3E;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,cAAc,EACpC,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAC3B,MAAM,IAAI;IAYb;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAYhC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAQ9C;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAShD;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB,OAAO,CAAC,MAAM;IAkBd,OAAO,CAAC,kBAAkB;CAQ7B"}