@docmentis/udoc-viewer 0.5.2 → 0.5.3

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 (211) hide show
  1. package/package.json +1 -1
  2. package/dist/package.json +0 -56
  3. package/dist/src/UDocClient.d.ts +0 -383
  4. package/dist/src/UDocClient.d.ts.map +0 -1
  5. package/dist/src/UDocClient.js +0 -428
  6. package/dist/src/UDocClient.js.map +0 -1
  7. package/dist/src/UDocViewer.d.ts +0 -271
  8. package/dist/src/UDocViewer.d.ts.map +0 -1
  9. package/dist/src/UDocViewer.js +0 -769
  10. package/dist/src/UDocViewer.js.map +0 -1
  11. package/dist/src/fonts.d.ts +0 -29
  12. package/dist/src/fonts.d.ts.map +0 -1
  13. package/dist/src/fonts.js +0 -30
  14. package/dist/src/fonts.js.map +0 -1
  15. package/dist/src/index.d.ts +0 -9
  16. package/dist/src/index.d.ts.map +0 -1
  17. package/dist/src/index.js +0 -8
  18. package/dist/src/index.js.map +0 -1
  19. package/dist/src/performance/PerformanceCounter.d.ts +0 -132
  20. package/dist/src/performance/PerformanceCounter.d.ts.map +0 -1
  21. package/dist/src/performance/PerformanceCounter.js +0 -129
  22. package/dist/src/performance/PerformanceCounter.js.map +0 -1
  23. package/dist/src/performance/index.d.ts +0 -2
  24. package/dist/src/performance/index.d.ts.map +0 -1
  25. package/dist/src/performance/index.js +0 -2
  26. package/dist/src/performance/index.js.map +0 -1
  27. package/dist/src/ui/framework/component.d.ts +0 -68
  28. package/dist/src/ui/framework/component.d.ts.map +0 -1
  29. package/dist/src/ui/framework/component.js +0 -87
  30. package/dist/src/ui/framework/component.js.map +0 -1
  31. package/dist/src/ui/framework/dom.d.ts +0 -19
  32. package/dist/src/ui/framework/dom.d.ts.map +0 -1
  33. package/dist/src/ui/framework/dom.js +0 -29
  34. package/dist/src/ui/framework/dom.js.map +0 -1
  35. package/dist/src/ui/framework/events.d.ts +0 -18
  36. package/dist/src/ui/framework/events.d.ts.map +0 -1
  37. package/dist/src/ui/framework/events.js +0 -23
  38. package/dist/src/ui/framework/events.js.map +0 -1
  39. package/dist/src/ui/framework/index.d.ts +0 -15
  40. package/dist/src/ui/framework/index.d.ts.map +0 -1
  41. package/dist/src/ui/framework/index.js +0 -15
  42. package/dist/src/ui/framework/index.js.map +0 -1
  43. package/dist/src/ui/framework/selectors.d.ts +0 -51
  44. package/dist/src/ui/framework/selectors.d.ts.map +0 -1
  45. package/dist/src/ui/framework/selectors.js +0 -30
  46. package/dist/src/ui/framework/selectors.js.map +0 -1
  47. package/dist/src/ui/framework/store.d.ts +0 -37
  48. package/dist/src/ui/framework/store.d.ts.map +0 -1
  49. package/dist/src/ui/framework/store.js +0 -54
  50. package/dist/src/ui/framework/store.js.map +0 -1
  51. package/dist/src/ui/viewer/actions.d.ts +0 -131
  52. package/dist/src/ui/viewer/actions.d.ts.map +0 -1
  53. package/dist/src/ui/viewer/actions.js +0 -2
  54. package/dist/src/ui/viewer/actions.js.map +0 -1
  55. package/dist/src/ui/viewer/annotation/LinkRenderer.d.ts +0 -9
  56. package/dist/src/ui/viewer/annotation/LinkRenderer.d.ts.map +0 -1
  57. package/dist/src/ui/viewer/annotation/LinkRenderer.js +0 -17
  58. package/dist/src/ui/viewer/annotation/LinkRenderer.js.map +0 -1
  59. package/dist/src/ui/viewer/annotation/MarkupRenderer.d.ts +0 -21
  60. package/dist/src/ui/viewer/annotation/MarkupRenderer.d.ts.map +0 -1
  61. package/dist/src/ui/viewer/annotation/MarkupRenderer.js +0 -138
  62. package/dist/src/ui/viewer/annotation/MarkupRenderer.js.map +0 -1
  63. package/dist/src/ui/viewer/annotation/ShapeRenderer.d.ts +0 -33
  64. package/dist/src/ui/viewer/annotation/ShapeRenderer.d.ts.map +0 -1
  65. package/dist/src/ui/viewer/annotation/ShapeRenderer.js +0 -378
  66. package/dist/src/ui/viewer/annotation/ShapeRenderer.js.map +0 -1
  67. package/dist/src/ui/viewer/annotation/TextRenderer.d.ts +0 -23
  68. package/dist/src/ui/viewer/annotation/TextRenderer.d.ts.map +0 -1
  69. package/dist/src/ui/viewer/annotation/TextRenderer.js +0 -196
  70. package/dist/src/ui/viewer/annotation/TextRenderer.js.map +0 -1
  71. package/dist/src/ui/viewer/annotation/index.d.ts +0 -8
  72. package/dist/src/ui/viewer/annotation/index.d.ts.map +0 -1
  73. package/dist/src/ui/viewer/annotation/index.js +0 -8
  74. package/dist/src/ui/viewer/annotation/index.js.map +0 -1
  75. package/dist/src/ui/viewer/annotation/render.d.ts +0 -24
  76. package/dist/src/ui/viewer/annotation/render.d.ts.map +0 -1
  77. package/dist/src/ui/viewer/annotation/render.js +0 -184
  78. package/dist/src/ui/viewer/annotation/render.js.map +0 -1
  79. package/dist/src/ui/viewer/annotation/types.d.ts +0 -239
  80. package/dist/src/ui/viewer/annotation/types.d.ts.map +0 -1
  81. package/dist/src/ui/viewer/annotation/types.js +0 -7
  82. package/dist/src/ui/viewer/annotation/types.js.map +0 -1
  83. package/dist/src/ui/viewer/annotation/utils.d.ts +0 -37
  84. package/dist/src/ui/viewer/annotation/utils.d.ts.map +0 -1
  85. package/dist/src/ui/viewer/annotation/utils.js +0 -82
  86. package/dist/src/ui/viewer/annotation/utils.js.map +0 -1
  87. package/dist/src/ui/viewer/components/AnnotationPanel.d.ts +0 -19
  88. package/dist/src/ui/viewer/components/AnnotationPanel.d.ts.map +0 -1
  89. package/dist/src/ui/viewer/components/AnnotationPanel.js +0 -284
  90. package/dist/src/ui/viewer/components/AnnotationPanel.js.map +0 -1
  91. package/dist/src/ui/viewer/components/FloatingToolbar.d.ts +0 -9
  92. package/dist/src/ui/viewer/components/FloatingToolbar.d.ts.map +0 -1
  93. package/dist/src/ui/viewer/components/FloatingToolbar.js +0 -305
  94. package/dist/src/ui/viewer/components/FloatingToolbar.js.map +0 -1
  95. package/dist/src/ui/viewer/components/LeftPanel.d.ts +0 -10
  96. package/dist/src/ui/viewer/components/LeftPanel.d.ts.map +0 -1
  97. package/dist/src/ui/viewer/components/LeftPanel.js +0 -165
  98. package/dist/src/ui/viewer/components/LeftPanel.js.map +0 -1
  99. package/dist/src/ui/viewer/components/LoadingOverlay.d.ts +0 -12
  100. package/dist/src/ui/viewer/components/LoadingOverlay.d.ts.map +0 -1
  101. package/dist/src/ui/viewer/components/LoadingOverlay.js +0 -88
  102. package/dist/src/ui/viewer/components/LoadingOverlay.js.map +0 -1
  103. package/dist/src/ui/viewer/components/OutlinePanel.d.ts +0 -10
  104. package/dist/src/ui/viewer/components/OutlinePanel.d.ts.map +0 -1
  105. package/dist/src/ui/viewer/components/OutlinePanel.js +0 -169
  106. package/dist/src/ui/viewer/components/OutlinePanel.js.map +0 -1
  107. package/dist/src/ui/viewer/components/PasswordDialog.d.ts +0 -15
  108. package/dist/src/ui/viewer/components/PasswordDialog.d.ts.map +0 -1
  109. package/dist/src/ui/viewer/components/PasswordDialog.js +0 -143
  110. package/dist/src/ui/viewer/components/PasswordDialog.js.map +0 -1
  111. package/dist/src/ui/viewer/components/RightPanel.d.ts +0 -9
  112. package/dist/src/ui/viewer/components/RightPanel.d.ts.map +0 -1
  113. package/dist/src/ui/viewer/components/RightPanel.js +0 -102
  114. package/dist/src/ui/viewer/components/RightPanel.js.map +0 -1
  115. package/dist/src/ui/viewer/components/Spread.d.ts +0 -43
  116. package/dist/src/ui/viewer/components/Spread.d.ts.map +0 -1
  117. package/dist/src/ui/viewer/components/Spread.js +0 -345
  118. package/dist/src/ui/viewer/components/Spread.js.map +0 -1
  119. package/dist/src/ui/viewer/components/ThumbnailPanel.d.ts +0 -11
  120. package/dist/src/ui/viewer/components/ThumbnailPanel.d.ts.map +0 -1
  121. package/dist/src/ui/viewer/components/ThumbnailPanel.js +0 -240
  122. package/dist/src/ui/viewer/components/ThumbnailPanel.js.map +0 -1
  123. package/dist/src/ui/viewer/components/Toolbar.d.ts +0 -9
  124. package/dist/src/ui/viewer/components/Toolbar.d.ts.map +0 -1
  125. package/dist/src/ui/viewer/components/Toolbar.js +0 -93
  126. package/dist/src/ui/viewer/components/Toolbar.js.map +0 -1
  127. package/dist/src/ui/viewer/components/ViewModeMenu.d.ts +0 -9
  128. package/dist/src/ui/viewer/components/ViewModeMenu.d.ts.map +0 -1
  129. package/dist/src/ui/viewer/components/ViewModeMenu.js +0 -169
  130. package/dist/src/ui/viewer/components/ViewModeMenu.js.map +0 -1
  131. package/dist/src/ui/viewer/components/Viewport.d.ts +0 -10
  132. package/dist/src/ui/viewer/components/Viewport.d.ts.map +0 -1
  133. package/dist/src/ui/viewer/components/Viewport.js +0 -1076
  134. package/dist/src/ui/viewer/components/Viewport.js.map +0 -1
  135. package/dist/src/ui/viewer/effects.d.ts +0 -8
  136. package/dist/src/ui/viewer/effects.d.ts.map +0 -1
  137. package/dist/src/ui/viewer/effects.js +0 -207
  138. package/dist/src/ui/viewer/effects.js.map +0 -1
  139. package/dist/src/ui/viewer/icons.d.ts +0 -32
  140. package/dist/src/ui/viewer/icons.d.ts.map +0 -1
  141. package/dist/src/ui/viewer/icons.js +0 -44
  142. package/dist/src/ui/viewer/icons.js.map +0 -1
  143. package/dist/src/ui/viewer/index.d.ts +0 -6
  144. package/dist/src/ui/viewer/index.d.ts.map +0 -1
  145. package/dist/src/ui/viewer/index.js +0 -6
  146. package/dist/src/ui/viewer/index.js.map +0 -1
  147. package/dist/src/ui/viewer/layout/index.d.ts +0 -3
  148. package/dist/src/ui/viewer/layout/index.d.ts.map +0 -1
  149. package/dist/src/ui/viewer/layout/index.js +0 -3
  150. package/dist/src/ui/viewer/layout/index.js.map +0 -1
  151. package/dist/src/ui/viewer/layout/pixelAlign.d.ts +0 -7
  152. package/dist/src/ui/viewer/layout/pixelAlign.d.ts.map +0 -1
  153. package/dist/src/ui/viewer/layout/pixelAlign.js +0 -22
  154. package/dist/src/ui/viewer/layout/pixelAlign.js.map +0 -1
  155. package/dist/src/ui/viewer/layout/spreadLayout.d.ts +0 -93
  156. package/dist/src/ui/viewer/layout/spreadLayout.d.ts.map +0 -1
  157. package/dist/src/ui/viewer/layout/spreadLayout.js +0 -315
  158. package/dist/src/ui/viewer/layout/spreadLayout.js.map +0 -1
  159. package/dist/src/ui/viewer/navigation.d.ts +0 -80
  160. package/dist/src/ui/viewer/navigation.d.ts.map +0 -1
  161. package/dist/src/ui/viewer/navigation.js +0 -59
  162. package/dist/src/ui/viewer/navigation.js.map +0 -1
  163. package/dist/src/ui/viewer/reducer.d.ts +0 -4
  164. package/dist/src/ui/viewer/reducer.d.ts.map +0 -1
  165. package/dist/src/ui/viewer/reducer.js +0 -305
  166. package/dist/src/ui/viewer/reducer.js.map +0 -1
  167. package/dist/src/ui/viewer/shell.d.ts +0 -34
  168. package/dist/src/ui/viewer/shell.d.ts.map +0 -1
  169. package/dist/src/ui/viewer/shell.js +0 -93
  170. package/dist/src/ui/viewer/shell.js.map +0 -1
  171. package/dist/src/ui/viewer/state.d.ts +0 -89
  172. package/dist/src/ui/viewer/state.d.ts.map +0 -1
  173. package/dist/src/ui/viewer/state.js +0 -55
  174. package/dist/src/ui/viewer/state.js.map +0 -1
  175. package/dist/src/ui/viewer/styles-inline.d.ts +0 -2
  176. package/dist/src/ui/viewer/styles-inline.d.ts.map +0 -1
  177. package/dist/src/ui/viewer/styles-inline.js +0 -1584
  178. package/dist/src/ui/viewer/styles-inline.js.map +0 -1
  179. package/dist/src/ui/viewer/text/index.d.ts +0 -7
  180. package/dist/src/ui/viewer/text/index.d.ts.map +0 -1
  181. package/dist/src/ui/viewer/text/index.js +0 -3
  182. package/dist/src/ui/viewer/text/index.js.map +0 -1
  183. package/dist/src/ui/viewer/text/render.d.ts +0 -19
  184. package/dist/src/ui/viewer/text/render.d.ts.map +0 -1
  185. package/dist/src/ui/viewer/text/render.js +0 -228
  186. package/dist/src/ui/viewer/text/render.js.map +0 -1
  187. package/dist/src/ui/viewer/text/selection.d.ts +0 -12
  188. package/dist/src/ui/viewer/text/selection.d.ts.map +0 -1
  189. package/dist/src/ui/viewer/text/selection.js +0 -70
  190. package/dist/src/ui/viewer/text/selection.js.map +0 -1
  191. package/dist/src/ui/viewer/text/types.d.ts +0 -37
  192. package/dist/src/ui/viewer/text/types.d.ts.map +0 -1
  193. package/dist/src/ui/viewer/text/types.js +0 -7
  194. package/dist/src/ui/viewer/text/types.js.map +0 -1
  195. package/dist/src/wasm/LICENSE +0 -104
  196. package/dist/src/wasm/udoc.d.ts +0 -480
  197. package/dist/src/wasm/udoc.js +0 -1738
  198. package/dist/src/wasm/udoc_bg.wasm +0 -0
  199. package/dist/src/wasm/udoc_bg.wasm.d.ts +0 -45
  200. package/dist/src/worker/WorkerClient.d.ts +0 -335
  201. package/dist/src/worker/WorkerClient.d.ts.map +0 -1
  202. package/dist/src/worker/WorkerClient.js +0 -903
  203. package/dist/src/worker/WorkerClient.js.map +0 -1
  204. package/dist/src/worker/index.d.ts +0 -4
  205. package/dist/src/worker/index.d.ts.map +0 -1
  206. package/dist/src/worker/index.js +0 -2
  207. package/dist/src/worker/index.js.map +0 -1
  208. package/dist/src/worker/worker.d.ts +0 -437
  209. package/dist/src/worker/worker.d.ts.map +0 -1
  210. package/dist/src/worker/worker.js +0 -237
  211. package/dist/src/worker/worker.js.map +0 -1
@@ -1,196 +0,0 @@
1
- import { colorToRgb, scaleBounds, createSvgOverlay, createSvgElement } from "./utils";
2
- /** Fixed icon size for sticky note annotations (in CSS pixels). */
3
- const STICKY_NOTE_ICON_SIZE = 18;
4
- /** Default sticky note color (yellow-orange). */
5
- const DEFAULT_STICKY_NOTE_COLOR = { r: 1, g: 0.8, b: 0.2 };
6
- /**
7
- * Create SVG icon for sticky note with specified color.
8
- */
9
- function createStickyNoteSvg(color) {
10
- const r = Math.round(color.r * 255);
11
- const g = Math.round(color.g * 255);
12
- const b = Math.round(color.b * 255);
13
- const fill = `rgb(${r}, ${g}, ${b})`;
14
- // Darker shade for stroke
15
- const strokeR = Math.round(color.r * 180);
16
- const strokeG = Math.round(color.g * 180);
17
- const strokeB = Math.round(color.b * 180);
18
- const stroke = `rgb(${strokeR}, ${strokeG}, ${strokeB})`;
19
- return `<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
20
- <path d="M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z" fill="${fill}" stroke="${stroke}" stroke-width="1"/>
21
- </svg>`;
22
- }
23
- /**
24
- * Render a text (sticky note) annotation.
25
- */
26
- export function renderText(layer, annotation, scale, onShowPopup) {
27
- const el = document.createElement("div");
28
- el.className = "udoc-annotation udoc-annotation--text";
29
- // Position at bottom-left of bounds (PDF anchor point), with fixed icon size
30
- el.style.position = "absolute";
31
- el.style.left = `${annotation.bounds.x * scale}px`;
32
- el.style.top = `${(annotation.bounds.y + annotation.bounds.height) * scale - STICKY_NOTE_ICON_SIZE}px`;
33
- el.style.width = `${STICKY_NOTE_ICON_SIZE}px`;
34
- el.style.height = `${STICKY_NOTE_ICON_SIZE}px`;
35
- el.style.pointerEvents = "auto";
36
- el.style.cursor = "pointer";
37
- // Create SVG with annotation color or default
38
- const color = annotation.color || DEFAULT_STICKY_NOTE_COLOR;
39
- el.innerHTML = createStickyNoteSvg(color);
40
- // Store annotation data for popup
41
- el.dataset.annotationType = "text";
42
- el.dataset.annotation = JSON.stringify({
43
- contents: annotation.contents,
44
- metadata: annotation.metadata
45
- });
46
- // Set tooltip as fallback
47
- const contents = annotation.metadata?.contents || annotation.contents;
48
- if (contents) {
49
- el.title = contents;
50
- }
51
- // Add click handler for popup
52
- if (annotation.metadata && onShowPopup) {
53
- const colorStr = colorToRgb(color, "rgb(255, 208, 0)");
54
- el.addEventListener("click", (e) => {
55
- e.stopPropagation();
56
- onShowPopup(el, annotation.metadata, colorStr);
57
- });
58
- }
59
- layer.appendChild(el);
60
- return el;
61
- }
62
- /**
63
- * Render a free text annotation.
64
- */
65
- export function renderFreeText(layer, annotation, scale) {
66
- const scaled = scaleBounds(annotation.bounds, scale);
67
- const color = colorToRgb(annotation.color, "rgb(0, 0, 0)");
68
- const borderColor = colorToRgb(annotation.borderColor, "transparent");
69
- const el = document.createElement("div");
70
- el.className = "udoc-annotation udoc-annotation--freetext";
71
- el.style.position = "absolute";
72
- el.style.left = `${scaled.x}px`;
73
- el.style.top = `${scaled.y}px`;
74
- el.style.width = `${scaled.width}px`;
75
- el.style.height = `${scaled.height}px`;
76
- el.style.color = color;
77
- el.style.border = `1px solid ${borderColor}`;
78
- el.style.fontSize = `${12 * (scale / 96 * 72)}px`; // Approximate font scaling
79
- el.style.fontFamily = "Helvetica, Arial, sans-serif";
80
- el.style.textAlign = annotation.justification || "left";
81
- el.style.overflow = "hidden";
82
- el.style.wordWrap = "break-word";
83
- el.style.pointerEvents = "none";
84
- el.style.padding = "2px";
85
- el.style.boxSizing = "border-box";
86
- if (annotation.contents) {
87
- el.textContent = annotation.contents;
88
- }
89
- // Render callout line if present
90
- if (annotation.calloutLine && annotation.calloutLine.length >= 2) {
91
- const svg = createSvgOverlay();
92
- const lineColor = colorToRgb(annotation.borderColor, "rgb(0, 0, 0)");
93
- const strokeWidth = Math.max(1, scale);
94
- const pathData = annotation.calloutLine
95
- .map((point, i) => {
96
- const x = point.x * scale;
97
- const y = point.y * scale;
98
- return `${i === 0 ? "M" : "L"} ${x} ${y}`;
99
- })
100
- .join(" ");
101
- const path = createSvgElement("path");
102
- path.setAttribute("d", pathData);
103
- path.setAttribute("stroke", lineColor);
104
- path.setAttribute("stroke-width", String(strokeWidth));
105
- path.setAttribute("fill", "none");
106
- svg.appendChild(path);
107
- layer.appendChild(svg);
108
- }
109
- layer.appendChild(el);
110
- return el;
111
- }
112
- /**
113
- * Render a stamp annotation.
114
- */
115
- export function renderStamp(layer, annotation, scale) {
116
- const scaled = scaleBounds(annotation.bounds, scale);
117
- const color = colorToRgb(annotation.color, "rgb(255, 0, 0)");
118
- const el = document.createElement("div");
119
- el.className = "udoc-annotation udoc-annotation--stamp";
120
- el.style.position = "absolute";
121
- el.style.left = `${scaled.x}px`;
122
- el.style.top = `${scaled.y}px`;
123
- el.style.width = `${scaled.width}px`;
124
- el.style.height = `${scaled.height}px`;
125
- el.style.display = "flex";
126
- el.style.alignItems = "center";
127
- el.style.justifyContent = "center";
128
- el.style.pointerEvents = "none";
129
- // Only show text for standard stamps without custom appearance
130
- if (!annotation.hasCustomAppearance && annotation.name) {
131
- // Estimate zoom factor from scale (scale ≈ 1.333 * zoom at 96 DPI)
132
- const zoomFactor = scale / 1.333;
133
- const label = document.createElement("span");
134
- label.style.color = color;
135
- label.style.fontSize = `${Math.min(scaled.height * 0.4, 16 * zoomFactor)}px`;
136
- label.style.fontWeight = "bold";
137
- label.style.fontFamily = "Helvetica, Arial, sans-serif";
138
- label.style.textTransform = "uppercase";
139
- label.style.border = `2px solid ${color}`;
140
- label.style.padding = `${2 * zoomFactor}px ${4 * zoomFactor}px`;
141
- label.style.transform = "rotate(-15deg)";
142
- label.style.whiteSpace = "nowrap";
143
- label.textContent = annotation.name;
144
- el.appendChild(label);
145
- }
146
- layer.appendChild(el);
147
- return el;
148
- }
149
- /** Fixed caret icon size (in CSS pixels at 100% zoom) */
150
- const CARET_ICON_SIZE = 12;
151
- /**
152
- * Render a caret annotation.
153
- */
154
- export function renderCaret(layer, annotation, scale) {
155
- const svg = createSvgOverlay();
156
- const color = colorToRgb(annotation.color, "rgb(0, 128, 255)");
157
- const opacity = annotation.opacity ?? 1;
158
- const scaled = scaleBounds(annotation.bounds, scale);
159
- const g = createSvgElement("g");
160
- g.setAttribute("opacity", String(opacity));
161
- // Use fixed icon size scaled by zoom (scale already includes zoom factor)
162
- // At 100% zoom with 96 DPI, scale is approximately 1.333
163
- const zoomFactor = scale / 1.333; // Approximate zoom factor
164
- const iconSize = Math.max(CARET_ICON_SIZE * zoomFactor, scaled.height);
165
- // Draw caret symbol (^) or paragraph marker
166
- if (annotation.symbol === "P") {
167
- // Paragraph symbol (pilcrow)
168
- const text = createSvgElement("text");
169
- text.setAttribute("x", String(scaled.x + scaled.width / 2));
170
- text.setAttribute("y", String(scaled.y + scaled.height * 0.8));
171
- text.setAttribute("fill", color);
172
- text.setAttribute("font-size", String(iconSize));
173
- text.setAttribute("text-anchor", "middle");
174
- text.textContent = "\u00B6"; // Pilcrow sign
175
- g.appendChild(text);
176
- }
177
- else {
178
- // Default caret (^) - draw as an inverted V
179
- const caretHeight = Math.min(scaled.height, iconSize);
180
- const caretWidth = caretHeight * 0.8;
181
- const centerX = scaled.x + scaled.width / 2;
182
- const bottomY = scaled.y + scaled.height;
183
- const path = createSvgElement("path");
184
- path.setAttribute("d", `M ${centerX - caretWidth / 2} ${bottomY} L ${centerX} ${bottomY - caretHeight} L ${centerX + caretWidth / 2} ${bottomY}`);
185
- path.setAttribute("stroke", color);
186
- path.setAttribute("stroke-width", String(Math.max(2, 2 * zoomFactor)));
187
- path.setAttribute("fill", "none");
188
- path.setAttribute("stroke-linecap", "round");
189
- path.setAttribute("stroke-linejoin", "round");
190
- g.appendChild(path);
191
- }
192
- svg.appendChild(g);
193
- layer.appendChild(svg);
194
- return svg;
195
- }
196
- //# sourceMappingURL=TextRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextRenderer.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/annotation/TextRenderer.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Annotation module - types, utilities, and renderers.
3
- */
4
- export type { Annotation, AnnotationType, Rect, Point, Quad, AnnotationColor, MarkupMetadata, Destination, DestinationDisplay, LinkAction, LinkAnnotation, HighlightAnnotation, UnderlineAnnotation, StrikeOutAnnotation, SquigglyAnnotation, TextAnnotation, FreeTextAnnotation, StampAnnotation, CaretAnnotation, LineAnnotation, SquareAnnotation, CircleAnnotation, PolygonAnnotation, PolyLineAnnotation, InkAnnotation, RedactAnnotation, TextAnnotationIcon, TextJustification, CaretSymbol, LineEnding, BorderStyle } from "./types";
5
- export { colorToRgba, colorToRgb, scalePoint, scaleBounds, applyBoundsStyle, createSvgOverlay, createSvgElement, boundsMatch } from "./utils";
6
- export { renderAnnotation, renderAnnotationsToLayer, closeAnnotationPopup, showAnnotationPopup } from "./render";
7
- export type { ShowPopupCallback } from "./render";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/annotation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACR,UAAU,EACV,cAAc,EACd,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,eAAe,EACf,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EAEV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAEhB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,WAAW,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EACH,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EACH,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Annotation module - types, utilities, and renderers.
3
- */
4
- // Utilities
5
- export { colorToRgba, colorToRgb, scalePoint, scaleBounds, applyBoundsStyle, createSvgOverlay, createSvgElement, boundsMatch } from "./utils";
6
- // Render functions
7
- export { renderAnnotation, renderAnnotationsToLayer, closeAnnotationPopup, showAnnotationPopup } from "./render";
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/annotation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuCH,YAAY;AACZ,OAAO,EACH,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACd,MAAM,SAAS,CAAC;AAEjB,mBAAmB;AACnB,OAAO,EACH,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,UAAU,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Main annotation rendering module.
3
- *
4
- * Coordinates all specialized renderers and provides a unified API.
5
- */
6
- import type { Annotation, Rect, MarkupMetadata } from "./types";
7
- import * as TextRenderer from "./TextRenderer";
8
- export type { ShowPopupCallback } from "./TextRenderer";
9
- /**
10
- * Render a single annotation element.
11
- */
12
- export declare function renderAnnotation(layer: HTMLElement, annotation: Annotation, scale: number, onShowPopup?: TextRenderer.ShowPopupCallback): Element | null;
13
- /**
14
- * Render all annotations into an annotation layer element.
15
- */
16
- export declare function renderAnnotationsToLayer(layer: HTMLDivElement, annotations: Annotation[], scale: number, highlightBounds?: Rect | null, onShowPopup?: TextRenderer.ShowPopupCallback): void;
17
- /** Close the currently active popup. */
18
- export declare function closeAnnotationPopup(): void;
19
- /** Show popup for an annotation. */
20
- export declare function showAnnotationPopup(annotation: {
21
- metadata?: MarkupMetadata;
22
- contents?: string;
23
- }, anchorEl: HTMLElement, container: HTMLElement): void;
24
- //# sourceMappingURL=render.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/annotation/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACR,UAAU,EAiBV,IAAI,EACJ,cAAc,EACjB,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAG/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiCxD;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,YAAY,CAAC,iBAAiB,GAC7C,OAAO,GAAG,IAAI,CA8ChB;AAiBD;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,UAAU,EAAE,EACzB,KAAK,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,IAAI,GAAG,IAAI,EAC7B,WAAW,CAAC,EAAE,YAAY,CAAC,iBAAiB,GAC7C,IAAI,CA2BN;AASD,wCAAwC;AACxC,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,oCAAoC;AACpC,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5D,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,WAAW,GACvB,IAAI,CAgEN"}
@@ -1,184 +0,0 @@
1
- import { boundsMatch, applyBoundsStyle } from "./utils";
2
- import * as MarkupRenderer from "./MarkupRenderer";
3
- import * as LinkRenderer from "./LinkRenderer";
4
- import * as TextRenderer from "./TextRenderer";
5
- import * as ShapeRenderer from "./ShapeRenderer";
6
- /** Check if annotation type uses full-layer SVG overlay or inset: 0 container. */
7
- function isSvgBasedAnnotation(type) {
8
- // These annotation types render as full-layer SVG overlays
9
- return (type === "caret" ||
10
- type === "line" ||
11
- type === "square" ||
12
- type === "circle" ||
13
- type === "polygon" ||
14
- type === "polyLine" ||
15
- type === "ink" ||
16
- type === "redact");
17
- }
18
- /** Check if annotation type uses full-layer container (inset: 0). */
19
- function isFullLayerAnnotation(type) {
20
- return type === "highlight" || type === "underline" || type === "strikeOut" || type === "squiggly";
21
- }
22
- /**
23
- * Create a highlight indicator element for an annotation.
24
- * Used for full-layer annotations where we can't just add a class to the container.
25
- */
26
- function createHighlightIndicator(bounds, scale) {
27
- const el = document.createElement("div");
28
- el.className = "udoc-annotation-highlight-indicator";
29
- applyBoundsStyle(el, bounds, scale);
30
- return el;
31
- }
32
- /**
33
- * Render a single annotation element.
34
- */
35
- export function renderAnnotation(layer, annotation, scale, onShowPopup) {
36
- switch (annotation.type) {
37
- // Link
38
- case "link":
39
- return LinkRenderer.renderLink(layer, annotation, scale);
40
- // Markup annotations
41
- case "highlight":
42
- return MarkupRenderer.renderHighlight(layer, annotation, scale);
43
- case "underline":
44
- return MarkupRenderer.renderUnderline(layer, annotation, scale);
45
- case "strikeOut":
46
- return MarkupRenderer.renderStrikeOut(layer, annotation, scale);
47
- case "squiggly":
48
- return MarkupRenderer.renderSquiggly(layer, annotation, scale);
49
- // Text annotations
50
- case "text":
51
- return TextRenderer.renderText(layer, annotation, scale, onShowPopup);
52
- case "freeText":
53
- return TextRenderer.renderFreeText(layer, annotation, scale);
54
- case "stamp":
55
- return TextRenderer.renderStamp(layer, annotation, scale);
56
- case "caret":
57
- return TextRenderer.renderCaret(layer, annotation, scale);
58
- // Shape annotations
59
- case "line":
60
- return ShapeRenderer.renderLine(layer, annotation, scale);
61
- case "square":
62
- return ShapeRenderer.renderSquare(layer, annotation, scale);
63
- case "circle":
64
- return ShapeRenderer.renderCircle(layer, annotation, scale);
65
- case "polygon":
66
- return ShapeRenderer.renderPolygon(layer, annotation, scale);
67
- case "polyLine":
68
- return ShapeRenderer.renderPolyLine(layer, annotation, scale);
69
- case "ink":
70
- return ShapeRenderer.renderInk(layer, annotation, scale);
71
- case "redact":
72
- return ShapeRenderer.renderRedact(layer, annotation, scale);
73
- default:
74
- // Unknown annotation type - create generic placeholder
75
- return createGenericAnnotation(layer, annotation, scale);
76
- }
77
- }
78
- /**
79
- * Create a generic placeholder for unknown annotation types.
80
- */
81
- function createGenericAnnotation(layer, annotation, scale) {
82
- const el = document.createElement("div");
83
- el.className = `udoc-annotation udoc-annotation--${annotation.type}`;
84
- applyBoundsStyle(el, annotation.bounds, scale);
85
- layer.appendChild(el);
86
- return el;
87
- }
88
- /**
89
- * Render all annotations into an annotation layer element.
90
- */
91
- export function renderAnnotationsToLayer(layer, annotations, scale, highlightBounds, onShowPopup) {
92
- // Skip if no annotations to render
93
- if (annotations.length === 0) {
94
- if (layer.childElementCount > 0) {
95
- layer.innerHTML = "";
96
- }
97
- return;
98
- }
99
- layer.innerHTML = "";
100
- for (const annotation of annotations) {
101
- const el = renderAnnotation(layer, annotation, scale, onShowPopup);
102
- if (el) {
103
- // Check if this annotation should be highlighted
104
- if (highlightBounds && boundsMatch(annotation.bounds, highlightBounds)) {
105
- if (isFullLayerAnnotation(annotation.type) || isSvgBasedAnnotation(annotation.type)) {
106
- // For full-layer or SVG-based annotations, add a separate highlight indicator
107
- const indicator = createHighlightIndicator(annotation.bounds, scale);
108
- layer.appendChild(indicator);
109
- }
110
- else {
111
- // For bounded annotations, add class directly
112
- el.classList.add("udoc-annotation--highlighted");
113
- }
114
- }
115
- }
116
- }
117
- }
118
- // =============================================================================
119
- // Popup Management
120
- // =============================================================================
121
- /** Currently active popup element (only one popup at a time). */
122
- let activePopup = null;
123
- /** Close the currently active popup. */
124
- export function closeAnnotationPopup() {
125
- if (activePopup) {
126
- activePopup.remove();
127
- activePopup = null;
128
- }
129
- }
130
- /** Show popup for an annotation. */
131
- export function showAnnotationPopup(annotation, anchorEl, container) {
132
- // Close any existing popup
133
- closeAnnotationPopup();
134
- const contents = annotation.metadata?.contents || annotation.contents;
135
- if (!contents)
136
- return;
137
- const popup = document.createElement("div");
138
- popup.className = "udoc-annotation-popup";
139
- // Header with author and close button
140
- const header = document.createElement("div");
141
- header.className = "udoc-annotation-popup__header";
142
- const author = document.createElement("span");
143
- author.className = "udoc-annotation-popup__author";
144
- author.textContent = annotation.metadata?.author || "Note";
145
- header.appendChild(author);
146
- const closeBtn = document.createElement("button");
147
- closeBtn.className = "udoc-annotation-popup__close";
148
- closeBtn.innerHTML = `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>`;
149
- closeBtn.onclick = (e) => {
150
- e.stopPropagation();
151
- closeAnnotationPopup();
152
- };
153
- header.appendChild(closeBtn);
154
- popup.appendChild(header);
155
- // Content
156
- const content = document.createElement("div");
157
- content.className = "udoc-annotation-popup__content";
158
- content.textContent = contents;
159
- popup.appendChild(content);
160
- // Position popup near the anchor element
161
- const anchorRect = anchorEl.getBoundingClientRect();
162
- const containerRect = container.getBoundingClientRect();
163
- // Position to the right of the icon, within the container
164
- const left = anchorRect.right - containerRect.left + 4;
165
- const top = anchorRect.top - containerRect.top;
166
- popup.style.left = `${left}px`;
167
- popup.style.top = `${top}px`;
168
- container.appendChild(popup);
169
- activePopup = popup;
170
- // Adjust if popup goes outside container
171
- requestAnimationFrame(() => {
172
- const popupRect = popup.getBoundingClientRect();
173
- // Check right edge
174
- if (popupRect.right > containerRect.right - 8) {
175
- // Position to the left of the icon instead
176
- popup.style.left = `${anchorRect.left - containerRect.left - popupRect.width - 4}px`;
177
- }
178
- // Check bottom edge
179
- if (popupRect.bottom > containerRect.bottom - 8) {
180
- popup.style.top = `${containerRect.bottom - containerRect.top - popupRect.height - 8}px`;
181
- }
182
- });
183
- }
184
- //# sourceMappingURL=render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/annotation/render.ts"],"names":[],"mappings":"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"}