@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.
- package/LICENSE +661 -0
- package/README.md +344 -0
- package/dist/browser/codexOverlay.d.ts +109 -0
- package/dist/browser/codexOverlay.d.ts.map +1 -0
- package/dist/browser/codexOverlay.js +256 -0
- package/dist/browser/codexOverlay.js.map +1 -0
- package/dist/browser/constants.d.ts +13 -0
- package/dist/browser/constants.d.ts.map +1 -0
- package/dist/browser/constants.js +13 -0
- package/dist/browser/constants.js.map +1 -0
- package/dist/browser/index.d.ts +211 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +1190 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/pantone-gold.d.ts +59 -0
- package/dist/browser/pantone-gold.d.ts.map +1 -0
- package/dist/browser/pantone-gold.js +237 -0
- package/dist/browser/pantone-gold.js.map +1 -0
- package/dist/components/AnnotationCanvas.d.ts +27 -0
- package/dist/components/AnnotationCanvas.d.ts.map +1 -0
- package/dist/components/AnnotationCanvas.js +401 -0
- package/dist/components/AnnotationCanvas.js.map +1 -0
- package/dist/components/AnnotationNotesPanel.d.ts +15 -0
- package/dist/components/AnnotationNotesPanel.d.ts.map +1 -0
- package/dist/components/AnnotationNotesPanel.js +235 -0
- package/dist/components/AnnotationNotesPanel.js.map +1 -0
- package/dist/components/AnnotationThread.d.ts +18 -0
- package/dist/components/AnnotationThread.d.ts.map +1 -0
- package/dist/components/AnnotationThread.js +163 -0
- package/dist/components/AnnotationThread.js.map +1 -0
- package/dist/components/AnnotationToolbar.d.ts +39 -0
- package/dist/components/AnnotationToolbar.d.ts.map +1 -0
- package/dist/components/AnnotationToolbar.js +258 -0
- package/dist/components/AnnotationToolbar.js.map +1 -0
- package/dist/components/BoxOverlay.d.ts +20 -0
- package/dist/components/BoxOverlay.d.ts.map +1 -0
- package/dist/components/BoxOverlay.js +107 -0
- package/dist/components/BoxOverlay.js.map +1 -0
- package/dist/components/ColorPickerTool.d.ts +11 -0
- package/dist/components/ColorPickerTool.d.ts.map +1 -0
- package/dist/components/ColorPickerTool.js +220 -0
- package/dist/components/ColorPickerTool.js.map +1 -0
- package/dist/components/DensitometerTool.d.ts +25 -0
- package/dist/components/DensitometerTool.d.ts.map +1 -0
- package/dist/components/DensitometerTool.js +246 -0
- package/dist/components/DensitometerTool.js.map +1 -0
- package/dist/components/DielineInfoPanel.d.ts +27 -0
- package/dist/components/DielineInfoPanel.d.ts.map +1 -0
- package/dist/components/DielineInfoPanel.js +23 -0
- package/dist/components/DielineInfoPanel.js.map +1 -0
- package/dist/components/DielineOverlay.d.ts +10 -0
- package/dist/components/DielineOverlay.d.ts.map +1 -0
- package/dist/components/DielineOverlay.js +57 -0
- package/dist/components/DielineOverlay.js.map +1 -0
- package/dist/components/FindingsSidebar.d.ts +50 -0
- package/dist/components/FindingsSidebar.d.ts.map +1 -0
- package/dist/components/FindingsSidebar.js +78 -0
- package/dist/components/FindingsSidebar.js.map +1 -0
- package/dist/components/LayerCanvas.d.ts +30 -0
- package/dist/components/LayerCanvas.d.ts.map +1 -0
- package/dist/components/LayerCanvas.js +84 -0
- package/dist/components/LayerCanvas.js.map +1 -0
- package/dist/components/LayerPanel.d.ts +9 -0
- package/dist/components/LayerPanel.d.ts.map +1 -0
- package/dist/components/LayerPanel.js +144 -0
- package/dist/components/LayerPanel.js.map +1 -0
- package/dist/components/LensPDF.d.ts +61 -0
- package/dist/components/LensPDF.d.ts.map +1 -0
- package/dist/components/LensPDF.js +49 -0
- package/dist/components/LensPDF.js.map +1 -0
- package/dist/components/LensPDFDemo.d.ts +160 -0
- package/dist/components/LensPDFDemo.d.ts.map +1 -0
- package/dist/components/LensPDFDemo.js +1060 -0
- package/dist/components/LensPDFDemo.js.map +1 -0
- package/dist/components/LensPDFDemo.styles.d.ts +38 -0
- package/dist/components/LensPDFDemo.styles.d.ts.map +1 -0
- package/dist/components/LensPDFDemo.styles.js +282 -0
- package/dist/components/LensPDFDemo.styles.js.map +1 -0
- package/dist/components/LensPDFViewer.d.ts +79 -0
- package/dist/components/LensPDFViewer.d.ts.map +1 -0
- package/dist/components/LensPDFViewer.js +254 -0
- package/dist/components/LensPDFViewer.js.map +1 -0
- package/dist/components/MeasureTool.d.ts +16 -0
- package/dist/components/MeasureTool.d.ts.map +1 -0
- package/dist/components/MeasureTool.js +137 -0
- package/dist/components/MeasureTool.js.map +1 -0
- package/dist/components/MobileBottomSheet.d.ts +12 -0
- package/dist/components/MobileBottomSheet.d.ts.map +1 -0
- package/dist/components/MobileBottomSheet.js +113 -0
- package/dist/components/MobileBottomSheet.js.map +1 -0
- package/dist/components/MobileDrawer.d.ts +31 -0
- package/dist/components/MobileDrawer.d.ts.map +1 -0
- package/dist/components/MobileDrawer.js +67 -0
- package/dist/components/MobileDrawer.js.map +1 -0
- package/dist/components/PageCanvas.d.ts +33 -0
- package/dist/components/PageCanvas.d.ts.map +1 -0
- package/dist/components/PageCanvas.js +385 -0
- package/dist/components/PageCanvas.js.map +1 -0
- package/dist/components/PageNavigator.d.ts +18 -0
- package/dist/components/PageNavigator.d.ts.map +1 -0
- package/dist/components/PageNavigator.js +44 -0
- package/dist/components/PageNavigator.js.map +1 -0
- package/dist/components/SeparationCanvas.d.ts +12 -0
- package/dist/components/SeparationCanvas.d.ts.map +1 -0
- package/dist/components/SeparationCanvas.js +174 -0
- package/dist/components/SeparationCanvas.js.map +1 -0
- package/dist/components/TACHeatmapOverlay.d.ts +17 -0
- package/dist/components/TACHeatmapOverlay.d.ts.map +1 -0
- package/dist/components/TACHeatmapOverlay.js +119 -0
- package/dist/components/TACHeatmapOverlay.js.map +1 -0
- package/dist/components/ZoomControls.d.ts +11 -0
- package/dist/components/ZoomControls.d.ts.map +1 -0
- package/dist/components/ZoomControls.js +26 -0
- package/dist/components/ZoomControls.js.map +1 -0
- package/dist/components/defaultShellPlugins.d.ts +3 -0
- package/dist/components/defaultShellPlugins.d.ts.map +1 -0
- package/dist/components/defaultShellPlugins.js +273 -0
- package/dist/components/defaultShellPlugins.js.map +1 -0
- package/dist/components/index.d.ts +32 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +32 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/presets.d.ts +8 -0
- package/dist/components/presets.d.ts.map +1 -0
- package/dist/components/presets.js +14 -0
- package/dist/components/presets.js.map +1 -0
- package/dist/components/shellPlugins.d.ts +105 -0
- package/dist/components/shellPlugins.d.ts.map +1 -0
- package/dist/components/shellPlugins.js +52 -0
- package/dist/components/shellPlugins.js.map +1 -0
- package/dist/components/useIsMobile.d.ts +16 -0
- package/dist/components/useIsMobile.d.ts.map +1 -0
- package/dist/components/useIsMobile.js +30 -0
- package/dist/components/useIsMobile.js.map +1 -0
- package/dist/fallback-pdfjs/index.d.ts +60 -0
- package/dist/fallback-pdfjs/index.d.ts.map +1 -0
- package/dist/fallback-pdfjs/index.js +163 -0
- package/dist/fallback-pdfjs/index.js.map +1 -0
- package/dist/host/LensPDFProvider.d.ts +36 -0
- package/dist/host/LensPDFProvider.d.ts.map +1 -0
- package/dist/host/LensPDFProvider.js +12 -0
- package/dist/host/LensPDFProvider.js.map +1 -0
- package/dist/host/index.d.ts +167 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +173 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pdfFallback.d.ts +50 -0
- package/dist/host/pdfFallback.d.ts.map +1 -0
- package/dist/host/pdfFallback.js +171 -0
- package/dist/host/pdfFallback.js.map +1 -0
- package/dist/host/pdfValidation.d.ts +45 -0
- package/dist/host/pdfValidation.d.ts.map +1 -0
- package/dist/host/pdfValidation.js +78 -0
- package/dist/host/pdfValidation.js.map +1 -0
- package/dist/host/shareLink.d.ts +80 -0
- package/dist/host/shareLink.d.ts.map +1 -0
- package/dist/host/shareLink.js +114 -0
- package/dist/host/shareLink.js.map +1 -0
- package/dist/host/useLensPDF.d.ts +73 -0
- package/dist/host/useLensPDF.d.ts.map +1 -0
- package/dist/host/useLensPDF.js +213 -0
- package/dist/host/useLensPDF.js.map +1 -0
- package/dist/index.d.ts +68 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin/context.d.ts +70 -0
- package/dist/plugin/context.d.ts.map +1 -0
- package/dist/plugin/context.js +16 -0
- package/dist/plugin/context.js.map +1 -0
- package/dist/plugin/findings-location.d.ts +53 -0
- package/dist/plugin/findings-location.d.ts.map +1 -0
- package/dist/plugin/findings-location.js +72 -0
- package/dist/plugin/findings-location.js.map +1 -0
- package/dist/plugin/index.d.ts +19 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +16 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/registry.d.ts +61 -0
- package/dist/plugin/registry.d.ts.map +1 -0
- package/dist/plugin/registry.js +102 -0
- package/dist/plugin/registry.js.map +1 -0
- package/dist/plugin/services.d.ts +380 -0
- package/dist/plugin/services.d.ts.map +1 -0
- package/dist/plugin/services.js +104 -0
- package/dist/plugin/services.js.map +1 -0
- package/dist/plugin/types.d.ts +198 -0
- package/dist/plugin/types.d.ts.map +1 -0
- package/dist/plugin/types.js +24 -0
- package/dist/plugin/types.js.map +1 -0
- package/dist/types/index.d.ts +191 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +95 -0
- package/dist/types/index.js.map +1 -0
- package/dist/units/index.d.ts +64 -0
- package/dist/units/index.d.ts.map +1 -0
- package/dist/units/index.js +98 -0
- package/dist/units/index.js.map +1 -0
- package/docs/architecture.md +90 -0
- package/docs/components.md +569 -0
- package/docs/contributing.md +78 -0
- package/docs/fallback.md +174 -0
- package/docs/lens-pdf-viewer.md +128 -0
- package/docs/licensing.md +78 -0
- package/docs/measurement-units.md +87 -0
- package/docs/plugins.md +256 -0
- package/docs/security.md +69 -0
- package/docs/server.md +212 -0
- package/docs/services.md +210 -0
- package/docs/share-links.md +111 -0
- package/docs/theming.md +164 -0
- package/docs/validation.md +83 -0
- 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"}
|