@printwithsynergy/lens-pdf 0.3.0-beta.81

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 (213) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +344 -0
  3. package/dist/browser/codexOverlay.d.ts +109 -0
  4. package/dist/browser/codexOverlay.d.ts.map +1 -0
  5. package/dist/browser/codexOverlay.js +256 -0
  6. package/dist/browser/codexOverlay.js.map +1 -0
  7. package/dist/browser/constants.d.ts +13 -0
  8. package/dist/browser/constants.d.ts.map +1 -0
  9. package/dist/browser/constants.js +13 -0
  10. package/dist/browser/constants.js.map +1 -0
  11. package/dist/browser/index.d.ts +211 -0
  12. package/dist/browser/index.d.ts.map +1 -0
  13. package/dist/browser/index.js +1190 -0
  14. package/dist/browser/index.js.map +1 -0
  15. package/dist/browser/pantone-gold.d.ts +59 -0
  16. package/dist/browser/pantone-gold.d.ts.map +1 -0
  17. package/dist/browser/pantone-gold.js +237 -0
  18. package/dist/browser/pantone-gold.js.map +1 -0
  19. package/dist/components/AnnotationCanvas.d.ts +27 -0
  20. package/dist/components/AnnotationCanvas.d.ts.map +1 -0
  21. package/dist/components/AnnotationCanvas.js +401 -0
  22. package/dist/components/AnnotationCanvas.js.map +1 -0
  23. package/dist/components/AnnotationNotesPanel.d.ts +15 -0
  24. package/dist/components/AnnotationNotesPanel.d.ts.map +1 -0
  25. package/dist/components/AnnotationNotesPanel.js +235 -0
  26. package/dist/components/AnnotationNotesPanel.js.map +1 -0
  27. package/dist/components/AnnotationThread.d.ts +18 -0
  28. package/dist/components/AnnotationThread.d.ts.map +1 -0
  29. package/dist/components/AnnotationThread.js +163 -0
  30. package/dist/components/AnnotationThread.js.map +1 -0
  31. package/dist/components/AnnotationToolbar.d.ts +39 -0
  32. package/dist/components/AnnotationToolbar.d.ts.map +1 -0
  33. package/dist/components/AnnotationToolbar.js +258 -0
  34. package/dist/components/AnnotationToolbar.js.map +1 -0
  35. package/dist/components/BoxOverlay.d.ts +20 -0
  36. package/dist/components/BoxOverlay.d.ts.map +1 -0
  37. package/dist/components/BoxOverlay.js +107 -0
  38. package/dist/components/BoxOverlay.js.map +1 -0
  39. package/dist/components/ColorPickerTool.d.ts +11 -0
  40. package/dist/components/ColorPickerTool.d.ts.map +1 -0
  41. package/dist/components/ColorPickerTool.js +220 -0
  42. package/dist/components/ColorPickerTool.js.map +1 -0
  43. package/dist/components/DensitometerTool.d.ts +25 -0
  44. package/dist/components/DensitometerTool.d.ts.map +1 -0
  45. package/dist/components/DensitometerTool.js +246 -0
  46. package/dist/components/DensitometerTool.js.map +1 -0
  47. package/dist/components/DielineInfoPanel.d.ts +27 -0
  48. package/dist/components/DielineInfoPanel.d.ts.map +1 -0
  49. package/dist/components/DielineInfoPanel.js +23 -0
  50. package/dist/components/DielineInfoPanel.js.map +1 -0
  51. package/dist/components/DielineOverlay.d.ts +10 -0
  52. package/dist/components/DielineOverlay.d.ts.map +1 -0
  53. package/dist/components/DielineOverlay.js +57 -0
  54. package/dist/components/DielineOverlay.js.map +1 -0
  55. package/dist/components/FindingsSidebar.d.ts +50 -0
  56. package/dist/components/FindingsSidebar.d.ts.map +1 -0
  57. package/dist/components/FindingsSidebar.js +78 -0
  58. package/dist/components/FindingsSidebar.js.map +1 -0
  59. package/dist/components/LayerCanvas.d.ts +30 -0
  60. package/dist/components/LayerCanvas.d.ts.map +1 -0
  61. package/dist/components/LayerCanvas.js +84 -0
  62. package/dist/components/LayerCanvas.js.map +1 -0
  63. package/dist/components/LayerPanel.d.ts +9 -0
  64. package/dist/components/LayerPanel.d.ts.map +1 -0
  65. package/dist/components/LayerPanel.js +144 -0
  66. package/dist/components/LayerPanel.js.map +1 -0
  67. package/dist/components/LensPDF.d.ts +61 -0
  68. package/dist/components/LensPDF.d.ts.map +1 -0
  69. package/dist/components/LensPDF.js +49 -0
  70. package/dist/components/LensPDF.js.map +1 -0
  71. package/dist/components/LensPDFDemo.d.ts +160 -0
  72. package/dist/components/LensPDFDemo.d.ts.map +1 -0
  73. package/dist/components/LensPDFDemo.js +1060 -0
  74. package/dist/components/LensPDFDemo.js.map +1 -0
  75. package/dist/components/LensPDFDemo.styles.d.ts +38 -0
  76. package/dist/components/LensPDFDemo.styles.d.ts.map +1 -0
  77. package/dist/components/LensPDFDemo.styles.js +282 -0
  78. package/dist/components/LensPDFDemo.styles.js.map +1 -0
  79. package/dist/components/LensPDFViewer.d.ts +79 -0
  80. package/dist/components/LensPDFViewer.d.ts.map +1 -0
  81. package/dist/components/LensPDFViewer.js +254 -0
  82. package/dist/components/LensPDFViewer.js.map +1 -0
  83. package/dist/components/MeasureTool.d.ts +16 -0
  84. package/dist/components/MeasureTool.d.ts.map +1 -0
  85. package/dist/components/MeasureTool.js +137 -0
  86. package/dist/components/MeasureTool.js.map +1 -0
  87. package/dist/components/MobileBottomSheet.d.ts +12 -0
  88. package/dist/components/MobileBottomSheet.d.ts.map +1 -0
  89. package/dist/components/MobileBottomSheet.js +113 -0
  90. package/dist/components/MobileBottomSheet.js.map +1 -0
  91. package/dist/components/MobileDrawer.d.ts +31 -0
  92. package/dist/components/MobileDrawer.d.ts.map +1 -0
  93. package/dist/components/MobileDrawer.js +67 -0
  94. package/dist/components/MobileDrawer.js.map +1 -0
  95. package/dist/components/PageCanvas.d.ts +33 -0
  96. package/dist/components/PageCanvas.d.ts.map +1 -0
  97. package/dist/components/PageCanvas.js +385 -0
  98. package/dist/components/PageCanvas.js.map +1 -0
  99. package/dist/components/PageNavigator.d.ts +18 -0
  100. package/dist/components/PageNavigator.d.ts.map +1 -0
  101. package/dist/components/PageNavigator.js +44 -0
  102. package/dist/components/PageNavigator.js.map +1 -0
  103. package/dist/components/SeparationCanvas.d.ts +12 -0
  104. package/dist/components/SeparationCanvas.d.ts.map +1 -0
  105. package/dist/components/SeparationCanvas.js +174 -0
  106. package/dist/components/SeparationCanvas.js.map +1 -0
  107. package/dist/components/TACHeatmapOverlay.d.ts +17 -0
  108. package/dist/components/TACHeatmapOverlay.d.ts.map +1 -0
  109. package/dist/components/TACHeatmapOverlay.js +119 -0
  110. package/dist/components/TACHeatmapOverlay.js.map +1 -0
  111. package/dist/components/ZoomControls.d.ts +11 -0
  112. package/dist/components/ZoomControls.d.ts.map +1 -0
  113. package/dist/components/ZoomControls.js +26 -0
  114. package/dist/components/ZoomControls.js.map +1 -0
  115. package/dist/components/defaultShellPlugins.d.ts +3 -0
  116. package/dist/components/defaultShellPlugins.d.ts.map +1 -0
  117. package/dist/components/defaultShellPlugins.js +273 -0
  118. package/dist/components/defaultShellPlugins.js.map +1 -0
  119. package/dist/components/index.d.ts +32 -0
  120. package/dist/components/index.d.ts.map +1 -0
  121. package/dist/components/index.js +32 -0
  122. package/dist/components/index.js.map +1 -0
  123. package/dist/components/presets.d.ts +8 -0
  124. package/dist/components/presets.d.ts.map +1 -0
  125. package/dist/components/presets.js +14 -0
  126. package/dist/components/presets.js.map +1 -0
  127. package/dist/components/shellPlugins.d.ts +105 -0
  128. package/dist/components/shellPlugins.d.ts.map +1 -0
  129. package/dist/components/shellPlugins.js +52 -0
  130. package/dist/components/shellPlugins.js.map +1 -0
  131. package/dist/components/useIsMobile.d.ts +16 -0
  132. package/dist/components/useIsMobile.d.ts.map +1 -0
  133. package/dist/components/useIsMobile.js +30 -0
  134. package/dist/components/useIsMobile.js.map +1 -0
  135. package/dist/fallback-pdfjs/index.d.ts +60 -0
  136. package/dist/fallback-pdfjs/index.d.ts.map +1 -0
  137. package/dist/fallback-pdfjs/index.js +163 -0
  138. package/dist/fallback-pdfjs/index.js.map +1 -0
  139. package/dist/host/LensPDFProvider.d.ts +36 -0
  140. package/dist/host/LensPDFProvider.d.ts.map +1 -0
  141. package/dist/host/LensPDFProvider.js +12 -0
  142. package/dist/host/LensPDFProvider.js.map +1 -0
  143. package/dist/host/index.d.ts +167 -0
  144. package/dist/host/index.d.ts.map +1 -0
  145. package/dist/host/index.js +173 -0
  146. package/dist/host/index.js.map +1 -0
  147. package/dist/host/pdfFallback.d.ts +50 -0
  148. package/dist/host/pdfFallback.d.ts.map +1 -0
  149. package/dist/host/pdfFallback.js +171 -0
  150. package/dist/host/pdfFallback.js.map +1 -0
  151. package/dist/host/pdfValidation.d.ts +45 -0
  152. package/dist/host/pdfValidation.d.ts.map +1 -0
  153. package/dist/host/pdfValidation.js +78 -0
  154. package/dist/host/pdfValidation.js.map +1 -0
  155. package/dist/host/shareLink.d.ts +80 -0
  156. package/dist/host/shareLink.d.ts.map +1 -0
  157. package/dist/host/shareLink.js +114 -0
  158. package/dist/host/shareLink.js.map +1 -0
  159. package/dist/host/useLensPDF.d.ts +73 -0
  160. package/dist/host/useLensPDF.d.ts.map +1 -0
  161. package/dist/host/useLensPDF.js +213 -0
  162. package/dist/host/useLensPDF.js.map +1 -0
  163. package/dist/index.d.ts +68 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +62 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/plugin/context.d.ts +70 -0
  168. package/dist/plugin/context.d.ts.map +1 -0
  169. package/dist/plugin/context.js +16 -0
  170. package/dist/plugin/context.js.map +1 -0
  171. package/dist/plugin/findings-location.d.ts +53 -0
  172. package/dist/plugin/findings-location.d.ts.map +1 -0
  173. package/dist/plugin/findings-location.js +72 -0
  174. package/dist/plugin/findings-location.js.map +1 -0
  175. package/dist/plugin/index.d.ts +19 -0
  176. package/dist/plugin/index.d.ts.map +1 -0
  177. package/dist/plugin/index.js +16 -0
  178. package/dist/plugin/index.js.map +1 -0
  179. package/dist/plugin/registry.d.ts +61 -0
  180. package/dist/plugin/registry.d.ts.map +1 -0
  181. package/dist/plugin/registry.js +102 -0
  182. package/dist/plugin/registry.js.map +1 -0
  183. package/dist/plugin/services.d.ts +380 -0
  184. package/dist/plugin/services.d.ts.map +1 -0
  185. package/dist/plugin/services.js +104 -0
  186. package/dist/plugin/services.js.map +1 -0
  187. package/dist/plugin/types.d.ts +198 -0
  188. package/dist/plugin/types.d.ts.map +1 -0
  189. package/dist/plugin/types.js +24 -0
  190. package/dist/plugin/types.js.map +1 -0
  191. package/dist/types/index.d.ts +191 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +95 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/units/index.d.ts +64 -0
  196. package/dist/units/index.d.ts.map +1 -0
  197. package/dist/units/index.js +98 -0
  198. package/dist/units/index.js.map +1 -0
  199. package/docs/architecture.md +90 -0
  200. package/docs/components.md +569 -0
  201. package/docs/contributing.md +78 -0
  202. package/docs/fallback.md +174 -0
  203. package/docs/lens-pdf-viewer.md +128 -0
  204. package/docs/licensing.md +78 -0
  205. package/docs/measurement-units.md +87 -0
  206. package/docs/plugins.md +256 -0
  207. package/docs/security.md +69 -0
  208. package/docs/server.md +212 -0
  209. package/docs/services.md +210 -0
  210. package/docs/share-links.md +111 -0
  211. package/docs/theming.md +164 -0
  212. package/docs/validation.md +83 -0
  213. package/package.json +139 -0
@@ -0,0 +1,258 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { createPortal } from "react-dom";
4
+ import { useCallback, useEffect, useRef, useState, } from "react";
5
+ /** Mouse-pointer silhouette — reads as “select” better than a lone △. */
6
+ function SelectToolIcon() {
7
+ return (_jsx("svg", { width: 15, height: 15, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": true, children: _jsx("path", { d: "M6 3l12 8.5L13 14l2 7-7-5.5L6 21V3z" }) }));
8
+ }
9
+ const TOOLS = [
10
+ {
11
+ id: "pen",
12
+ label: "Pen",
13
+ tooltip: "Pen — click and drag to draw freehand strokes in the active colour.",
14
+ icon: "\u270E",
15
+ },
16
+ {
17
+ id: "pointer",
18
+ label: "Select & move",
19
+ tooltip: "Select — click a stroke, shape, or text you added, then drag to move or resize. Does nothing on empty artwork until you draw something else first.",
20
+ icon: _jsx(SelectToolIcon, {}),
21
+ },
22
+ {
23
+ id: "arrow",
24
+ label: "Arrow",
25
+ tooltip: "Arrow — press, drag, release to draw a line with an arrowhead at the end.",
26
+ icon: "\u2192",
27
+ },
28
+ {
29
+ id: "rectangle",
30
+ label: "Rectangle",
31
+ tooltip: "Rectangle — drag diagonally to draw an outlined rectangle.",
32
+ icon: "\u25A1",
33
+ },
34
+ {
35
+ id: "ellipse",
36
+ label: "Ellipse",
37
+ tooltip: "Ellipse — drag diagonally to draw an outlined ellipse or circle.",
38
+ icon: "\u25CB",
39
+ },
40
+ {
41
+ id: "text",
42
+ label: "Text",
43
+ tooltip: "Text — click once to place an editable text label.",
44
+ icon: "T",
45
+ },
46
+ {
47
+ id: "highlight",
48
+ label: "Highlight",
49
+ tooltip: "Highlight — drag diagonally to fill a translucent rectangle (uses active colour).",
50
+ icon: "\u2588",
51
+ },
52
+ ];
53
+ const PRESET_COLORS = [
54
+ "#ef4444",
55
+ "#f59e0b",
56
+ "#22c55e",
57
+ "#3b82f6",
58
+ "#8b5cf6",
59
+ "#000000",
60
+ "#ffffff",
61
+ ];
62
+ const ACCENT = "#e50c6a";
63
+ function wrapperStyle(compact) {
64
+ return {
65
+ display: "flex",
66
+ alignItems: "center",
67
+ gap: compact ? 8 : 6,
68
+ rowGap: compact ? 8 : undefined,
69
+ padding: compact ? "8px 12px" : "6px 10px",
70
+ borderRadius: 8,
71
+ border: "1px solid rgba(255, 255, 255, 0.1)",
72
+ background: "rgba(15, 12, 25, 0.92)",
73
+ backdropFilter: "blur(8px)",
74
+ color: "#f5f3f7",
75
+ fontSize: 13,
76
+ boxShadow: "0 6px 18px rgba(0, 0, 0, 0.45)",
77
+ flexWrap: "wrap",
78
+ position: "relative",
79
+ };
80
+ }
81
+ /**
82
+ * Inner group wrapper. On compact / mobile hosts each group sets
83
+ * ``flex-basis: 100%`` so it always takes its own row — guarantees
84
+ * the toolbar reads as three clear lines (Tools / Colors / Actions)
85
+ * instead of an unpredictable organic wrap. Desktop keeps the groups
86
+ * inline; the outer wrapper's ``flex-wrap: wrap`` still handles
87
+ * narrow desktop viewports.
88
+ */
89
+ function groupStyle(compact) {
90
+ return {
91
+ display: "flex",
92
+ flexWrap: "wrap",
93
+ alignItems: "center",
94
+ gap: compact ? 8 : 6,
95
+ flexBasis: compact ? "100%" : "auto",
96
+ justifyContent: compact ? "center" : "flex-start",
97
+ };
98
+ }
99
+ function toolButtonStyle(active, touch) {
100
+ const size = touch ? 40 : 28;
101
+ return {
102
+ width: size,
103
+ height: size,
104
+ display: "inline-flex",
105
+ alignItems: "center",
106
+ justifyContent: "center",
107
+ borderRadius: 6,
108
+ border: `1px solid ${active ? ACCENT : "rgba(255,255,255,0.1)"}`,
109
+ background: active ? ACCENT : "transparent",
110
+ color: active ? "#fff" : "inherit",
111
+ cursor: "pointer",
112
+ fontSize: touch ? 18 : 14,
113
+ fontWeight: 600,
114
+ padding: 0,
115
+ lineHeight: 1,
116
+ };
117
+ }
118
+ function dividerStyle(touch) {
119
+ return {
120
+ width: 1,
121
+ height: touch ? 24 : 18,
122
+ background: "rgba(255, 255, 255, 0.15)",
123
+ margin: "0 4px",
124
+ flexShrink: 0,
125
+ };
126
+ }
127
+ function swatchStyle(color, active, touch) {
128
+ const size = touch ? 26 : 18;
129
+ return {
130
+ width: size,
131
+ height: size,
132
+ borderRadius: "50%",
133
+ border: active
134
+ ? `2px solid ${ACCENT}`
135
+ : "2px solid rgba(255, 255, 255, 0.2)",
136
+ background: color,
137
+ cursor: "pointer",
138
+ padding: 0,
139
+ transform: active ? "scale(1.1)" : "scale(1)",
140
+ transition: "transform 0.12s ease",
141
+ };
142
+ }
143
+ function actionButtonStyle(disabled, touch) {
144
+ return {
145
+ padding: touch ? "8px 14px" : "4px 10px",
146
+ borderRadius: 6,
147
+ border: "1px solid rgba(255, 255, 255, 0.15)",
148
+ background: "transparent",
149
+ color: "inherit",
150
+ cursor: disabled ? "not-allowed" : "pointer",
151
+ opacity: disabled ? 0.4 : 1,
152
+ fontSize: touch ? 14 : 12,
153
+ fontWeight: 500,
154
+ };
155
+ }
156
+ const savingLabelStyle = {
157
+ fontSize: 11,
158
+ opacity: 0.65,
159
+ fontVariantNumeric: "tabular-nums",
160
+ marginLeft: 4,
161
+ };
162
+ function customColorInputStyle(touch) {
163
+ const size = touch ? 32 : 22;
164
+ return {
165
+ width: size,
166
+ height: size,
167
+ cursor: "pointer",
168
+ border: "none",
169
+ padding: 0,
170
+ background: "transparent",
171
+ borderRadius: 4,
172
+ marginLeft: 2,
173
+ };
174
+ }
175
+ const floatingTipStyle = {
176
+ position: "fixed",
177
+ zIndex: 10000,
178
+ maxWidth: 280,
179
+ padding: "8px 10px",
180
+ borderRadius: 6,
181
+ fontSize: 12,
182
+ lineHeight: 1.4,
183
+ fontWeight: 500,
184
+ color: "#f1f5f9",
185
+ background: "rgba(15, 12, 25, 0.98)",
186
+ border: "1px solid rgba(255,255,255,0.12)",
187
+ boxShadow: "0 8px 24px rgba(0,0,0,0.5)",
188
+ pointerEvents: "none",
189
+ textAlign: "left",
190
+ };
191
+ /**
192
+ * Self-styled annotation toolbar — works in any host with no Tailwind
193
+ * config required. Shows a visible floating tooltip on hover / focus
194
+ * (not only the native `title` attribute) so touch and fast users
195
+ * still discover what each control does.
196
+ *
197
+ * @public
198
+ */
199
+ export function AnnotationToolbar({ activeTool, onToolChange, strokeColor, onStrokeColorChange, onUndo, onRedo, canUndo, canRedo, saving, compact = false, }) {
200
+ const [tip, setTip] = useState(null);
201
+ const leaveTimer = useRef(null);
202
+ const clearLeaveTimer = useCallback(() => {
203
+ if (leaveTimer.current) {
204
+ clearTimeout(leaveTimer.current);
205
+ leaveTimer.current = null;
206
+ }
207
+ }, []);
208
+ const showTip = useCallback((text, el) => {
209
+ clearLeaveTimer();
210
+ const r = el.getBoundingClientRect();
211
+ setTip({
212
+ text,
213
+ left: r.left + r.width / 2,
214
+ top: r.top,
215
+ });
216
+ }, [clearLeaveTimer]);
217
+ const hideTipDelayed = useCallback(() => {
218
+ clearLeaveTimer();
219
+ leaveTimer.current = setTimeout(() => setTip(null), 120);
220
+ }, [clearLeaveTimer]);
221
+ const hideTip = useCallback(() => {
222
+ clearLeaveTimer();
223
+ setTip(null);
224
+ }, [clearLeaveTimer]);
225
+ useEffect(() => () => {
226
+ clearLeaveTimer();
227
+ }, [clearLeaveTimer]);
228
+ const tipNode = tip &&
229
+ typeof document !== "undefined" &&
230
+ createPortal(_jsx("div", { style: {
231
+ ...floatingTipStyle,
232
+ left: tip.left,
233
+ top: tip.top,
234
+ transform: "translate(-50%, calc(-100% - 6px))",
235
+ }, role: "tooltip", children: tip.text }), document.body);
236
+ return (_jsxs("div", { style: wrapperStyle(compact), children: [tipNode, _jsx("div", { style: groupStyle(compact), children: TOOLS.map((tool) => (_jsx("button", { type: "button", onClick: () => onToolChange(tool.id), style: toolButtonStyle(activeTool === tool.id, compact), title: tool.tooltip, "aria-label": tool.label, "aria-pressed": activeTool === tool.id, onMouseEnter: (e) => showTip(tool.tooltip, e.currentTarget), onMouseLeave: hideTipDelayed, onFocus: (e) => showTip(tool.tooltip, e.currentTarget), onBlur: hideTip, children: tool.icon }, tool.id))) }), !compact && _jsx("span", { style: dividerStyle(compact) }), _jsxs("div", { style: groupStyle(compact), children: [PRESET_COLORS.map((color) => (_jsx("button", { type: "button", onClick: () => onStrokeColorChange(color), style: swatchStyle(color, strokeColor.toLowerCase() === color, compact), title: `${color} — click to use as stroke / fill colour`, "aria-label": `Use colour ${color}`, onMouseEnter: (e) => showTip(`Stroke / fill: ${color} — click to make it the active colour for pen, shapes, and text.`, e.currentTarget), onMouseLeave: hideTipDelayed, onFocus: (e) => showTip(`Stroke / fill: ${color} — click to make it the active colour for pen, shapes, and text.`, e.currentTarget), onBlur: hideTip }, color))), _jsx("input", { type: "color", value: strokeColor, onChange: (e) => onStrokeColorChange(e.target.value), style: customColorInputStyle(compact), title: "Open the system colour picker for a custom colour", "aria-label": "Custom colour", onMouseEnter: (e) => showTip("Custom colour — opens the system colour wheel (browser / OS).", e.currentTarget), onMouseLeave: hideTipDelayed, onFocus: (e) => showTip("Custom colour — opens the system colour wheel (browser / OS).", e.currentTarget), onBlur: hideTip })] }), !compact && _jsx("span", { style: dividerStyle(compact) }), _jsxs("div", { style: groupStyle(compact), children: [_jsx("button", { type: "button", onClick: onUndo, disabled: !canUndo, style: actionButtonStyle(!canUndo, compact), title: "Undo the last change to annotations on this page", onMouseEnter: (e) => {
237
+ if (!canUndo)
238
+ return;
239
+ showTip("Undo — step back one change (draw, move, delete, etc.).", e.currentTarget);
240
+ }, onMouseLeave: hideTipDelayed, onFocus: (e) => {
241
+ if (!canUndo)
242
+ return;
243
+ showTip("Undo — step back one change (draw, move, delete, etc.).", e.currentTarget);
244
+ }, onBlur: hideTip, children: "Undo" }), _jsx("button", { type: "button", onClick: onRedo, disabled: !canRedo, style: actionButtonStyle(!canRedo, compact), title: "Redo the last change you undid", onMouseEnter: (e) => {
245
+ if (!canRedo)
246
+ return;
247
+ showTip("Redo — re-apply the last undone change.", e.currentTarget);
248
+ }, onMouseLeave: hideTipDelayed, onFocus: (e) => {
249
+ if (!canRedo)
250
+ return;
251
+ showTip("Redo — re-apply the last undone change.", e.currentTarget);
252
+ }, onBlur: hideTip, children: "Redo" }), _jsx("span", { style: savingLabelStyle, title: saving
253
+ ? "Writing your annotations to the in-memory store…"
254
+ : "Last change is saved in this session (browser tab only)", onMouseEnter: (e) => showTip(saving
255
+ ? "Saving — writing the canvas to the browser store…"
256
+ : "Saved — annotations for this page are kept in this tab until you close or reload.", e.currentTarget), onMouseLeave: hideTipDelayed, children: saving ? "Saving…" : "Saved" })] })] }));
257
+ }
258
+ //# sourceMappingURL=AnnotationToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnotationToolbar.js","sourceRoot":"","sources":["../../components/AnnotationToolbar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { DielineResult, PageInfo } from "../types";
2
+ interface BoxOverlayProps {
3
+ page: PageInfo;
4
+ canvasWidth: number;
5
+ canvasHeight: number;
6
+ /** Dieline payload; used to drop a per-region info icon at the
7
+ * centroid of each artwork cut area, in addition to the
8
+ * standard trim/bleed/crop page boxes. */
9
+ dieline?: DielineResult | null;
10
+ }
11
+ /**
12
+ * BoxOverlay — Trim / Bleed / Crop box indicators with a clickable
13
+ * info icon per box that reveals the dimensions in both millimetres
14
+ * and inches. Multi-artwork files (front + back in one PDF) can have
15
+ * different trim/bleed regions per page; the per-box popover lets
16
+ * operators verify each one without mental conversion.
17
+ */
18
+ export declare function BoxOverlay({ page, canvasWidth, canvasHeight, dieline }: BoxOverlayProps): import("react/jsx-runtime").JSX.Element | null;
19
+ export {};
20
+ //# sourceMappingURL=BoxOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxOverlay.d.ts","sourceRoot":"","sources":["../../components/BoxOverlay.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAExD,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB;;+CAE2C;IAC3C,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CAChC;AAuCD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,eAAe,kDAiPvF"}
@@ -0,0 +1,107 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ /** Convert a PDF-coordinate box to pixel-space for the canvas. */
5
+ function boxToPixels(box, page, canvasWidth, canvasHeight) {
6
+ const scaleX = canvasWidth / page.width_pts;
7
+ const scaleY = canvasHeight / page.height_pts;
8
+ const mb = page.media_box;
9
+ return {
10
+ left: (box.x0 - mb.x0) * scaleX,
11
+ top: canvasHeight - (box.y1 - mb.y0) * scaleY,
12
+ width: (box.x1 - box.x0) * scaleX,
13
+ height: (box.y1 - box.y0) * scaleY,
14
+ };
15
+ }
16
+ function ptToMm(pts) {
17
+ return pts * 25.4 / 72;
18
+ }
19
+ function ptToInches(pts) {
20
+ return pts / 72;
21
+ }
22
+ function formatSize(widthPts, heightPts) {
23
+ return {
24
+ mm: `${ptToMm(widthPts).toFixed(2)} × ${ptToMm(heightPts).toFixed(2)} mm`,
25
+ inches: `${ptToInches(widthPts).toFixed(3)} × ${ptToInches(heightPts).toFixed(3)} in`,
26
+ };
27
+ }
28
+ /**
29
+ * BoxOverlay — Trim / Bleed / Crop box indicators with a clickable
30
+ * info icon per box that reveals the dimensions in both millimetres
31
+ * and inches. Multi-artwork files (front + back in one PDF) can have
32
+ * different trim/bleed regions per page; the per-box popover lets
33
+ * operators verify each one without mental conversion.
34
+ */
35
+ export function BoxOverlay({ page, canvasWidth, canvasHeight, dieline }) {
36
+ const [openPopover, setOpenPopover] = useState(null);
37
+ const boxes = [];
38
+ if (page.trim_box) {
39
+ boxes.push({
40
+ label: "Trim",
41
+ color: "#3b82f6",
42
+ dashArray: "none",
43
+ box: page.trim_box,
44
+ });
45
+ }
46
+ if (page.bleed_box) {
47
+ boxes.push({
48
+ label: "Bleed",
49
+ color: "#22c55e",
50
+ dashArray: "8 4",
51
+ box: page.bleed_box,
52
+ });
53
+ }
54
+ if (page.crop_box) {
55
+ boxes.push({
56
+ label: "Crop",
57
+ color: "#a855f7",
58
+ dashArray: "4 2",
59
+ box: page.crop_box,
60
+ });
61
+ }
62
+ // Dieline regions become first-class boxes alongside trim/bleed/crop.
63
+ // The info chip at the centroid still drives the click-to-show-size
64
+ // popover below; the rectangle is purely informational so operators
65
+ // can see at a glance WHERE the dieline lives on the page without
66
+ // having to click anything. Render in red (matches the chip color)
67
+ // with a 4-2 dash pattern so it doesn't compete with trim's solid
68
+ // blue.
69
+ const dielineRegions = dieline?.regions ?? [];
70
+ const dielineColor = dieline?.multi_color ? "#ef4444" : "#dc2626";
71
+ if (boxes.length === 0 && dielineRegions.length === 0)
72
+ return null;
73
+ return (_jsxs("div", { style: { position: "absolute", inset: 0, zIndex: 15 }, children: [_jsxs("svg", { width: canvasWidth, height: canvasHeight, style: { pointerEvents: "none" }, children: [dielineRegions.map((region, idx) => {
74
+ const box = { x0: region.x0, y0: region.y0, x1: region.x1, y1: region.y1 };
75
+ const px = boxToPixels(box, page, canvasWidth, canvasHeight);
76
+ const label = dielineRegions.length > 1 ? `Dieline ${idx + 1}` : "Dieline";
77
+ return (_jsxs("g", { children: [_jsx("rect", { x: px.left, y: px.top, width: px.width, height: px.height, fill: "none", stroke: dielineColor, strokeWidth: 1.5, strokeDasharray: "6 3", opacity: 0.85 }), _jsx("text", { x: px.left + 4, y: Math.max(12, px.top - 4), fill: dielineColor, style: { font: "10px ui-sans-serif, system-ui, -apple-system, sans-serif" }, children: label })] }, `die-rect-${idx}`));
78
+ }), boxes.map(({ label, color, dashArray, box }) => {
79
+ const px = boxToPixels(box, page, canvasWidth, canvasHeight);
80
+ return (_jsxs("g", { children: [_jsx("rect", { x: px.left, y: px.top, width: px.width, height: px.height, fill: "none", stroke: color, strokeWidth: 1.5, strokeDasharray: dashArray, opacity: 0.8 }), _jsx("text", { x: px.left + 22, y: px.top - 4, fill: color, fontSize: 10, fontWeight: "bold", fontFamily: "sans-serif", children: label })] }, label));
81
+ })] }), boxes.map(({ label, color, box }) => {
82
+ const px = boxToPixels(box, page, canvasWidth, canvasHeight);
83
+ const size = formatSize(box.x1 - box.x0, box.y1 - box.y0);
84
+ const isOpen = openPopover === label;
85
+ return (_jsxs("div", { className: "absolute", style: {
86
+ left: Math.max(0, px.left + 4),
87
+ top: Math.max(0, px.top - 20),
88
+ }, children: [_jsx("button", { type: "button", "aria-label": `${label} size`, onClick: (e) => {
89
+ e.stopPropagation();
90
+ setOpenPopover(isOpen ? null : label);
91
+ }, className: "flex h-4 w-4 items-center justify-center rounded-full text-[10px] font-bold text-white shadow ring-1 ring-black/20", style: { backgroundColor: color }, title: `Show ${label.toLowerCase()} size`, children: "i" }), isOpen && (_jsxs("div", { className: "absolute left-5 top-0 z-20 w-max rounded-md bg-black/90 px-3 py-2 text-xs text-white shadow-xl", onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "mb-1 flex items-center gap-2 border-b border-white/10 pb-1", children: [_jsx("span", { className: "inline-block h-2 w-2 rounded-sm", style: { backgroundColor: color } }), _jsxs("span", { className: "font-semibold", children: [label, " size"] })] }), _jsxs("div", { className: "grid grid-cols-[auto_auto] gap-x-3 gap-y-0.5", children: [_jsx("span", { className: "text-slate-400", children: "Metric" }), _jsx("span", { className: "font-mono", children: size.mm }), _jsx("span", { className: "text-slate-400", children: "Imperial" }), _jsx("span", { className: "font-mono", children: size.inches })] })] }))] }, `icon-${label}`));
92
+ }), dieline?.regions?.map((region, idx) => {
93
+ const label = `Dieline ${idx + 1}`;
94
+ const box = { x0: region.x0, y0: region.y0, x1: region.x1, y1: region.y1 };
95
+ const px = boxToPixels(box, page, canvasWidth, canvasHeight);
96
+ const size = formatSize(region.x1 - region.x0, region.y1 - region.y0);
97
+ const isOpen = openPopover === label;
98
+ const cx = px.left + px.width / 2;
99
+ const cy = px.top + px.height / 2;
100
+ const color = dieline.multi_color ? "#ef4444" : "#dc2626";
101
+ return (_jsxs("div", { className: "absolute", style: { left: Math.max(0, cx - 8), top: Math.max(0, cy - 8) }, children: [_jsx("button", { type: "button", "aria-label": `${label} size`, onClick: (e) => {
102
+ e.stopPropagation();
103
+ setOpenPopover(isOpen ? null : label);
104
+ }, className: "flex h-4 w-4 items-center justify-center rounded-full text-[10px] font-bold text-white shadow ring-1 ring-black/20", style: { backgroundColor: color }, title: `Show ${label.toLowerCase()} size`, children: "i" }), isOpen && (_jsxs("div", { className: "absolute left-5 top-0 z-20 w-max rounded-md bg-black/90 px-3 py-2 text-xs text-white shadow-xl", onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "mb-1 flex items-center gap-2 border-b border-white/10 pb-1", children: [_jsx("span", { className: "inline-block h-2 w-2 rounded-sm", style: { backgroundColor: color } }), _jsx("span", { className: "font-semibold", children: label }), dieline.multi_color && (_jsx("span", { className: "ml-1 rounded bg-red-500/20 px-1 py-0.5 text-[9px] font-semibold text-red-300", children: "multi-colour" }))] }), _jsxs("div", { className: "grid grid-cols-[auto_auto] gap-x-3 gap-y-0.5", children: [_jsx("span", { className: "text-slate-400", children: "Metric" }), _jsx("span", { className: "font-mono", children: size.mm }), _jsx("span", { className: "text-slate-400", children: "Imperial" }), _jsx("span", { className: "font-mono", children: size.inches })] })] }))] }, `die-${idx}`));
105
+ }), _jsxs("div", { className: "pointer-events-none absolute bottom-2 left-2 rounded bg-black/70 p-2 text-xs text-white", children: [_jsx("p", { className: "mb-1 font-semibold", children: "Page Boxes" }), boxes.map(({ label, color }) => (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "inline-block h-2 w-4 rounded", style: { backgroundColor: color } }), _jsx("span", { children: label })] }, label)))] })] }));
106
+ }
107
+ //# sourceMappingURL=BoxOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxOverlay.js","sourceRoot":"","sources":["../../components/BoxOverlay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface ColorPickerToolProps {
2
+ jobId: string;
3
+ pageNum: number;
4
+ pageWidthPts: number;
5
+ pageHeightPts: number;
6
+ canvasWidth: number;
7
+ canvasHeight: number;
8
+ }
9
+ export declare function ColorPickerTool({ jobId: _jobId, pageNum, pageWidthPts, pageHeightPts, canvasWidth, canvasHeight, }: ColorPickerToolProps): import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
11
+ //# sourceMappingURL=ColorPickerTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorPickerTool.d.ts","sourceRoot":"","sources":["../../components/ColorPickerTool.tsx"],"names":[],"mappings":"AAaA,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,GACb,EAAE,oBAAoB,kDA6TtB"}