@printwithsynergy/artwork-pdf-editor 0.1.6 → 0.2.0
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/README.md +63 -2
- package/dist/components/EditorApp.d.ts +23 -4
- package/dist/components/EditorApp.d.ts.map +1 -1
- package/dist/components/EditorApp.js +72 -2
- package/dist/components/EditorApp.js.map +1 -1
- package/dist/components/EditorCanvas.d.ts +21 -1
- package/dist/components/EditorCanvas.d.ts.map +1 -1
- package/dist/components/EditorCanvas.js +22 -34
- package/dist/components/EditorCanvas.js.map +1 -1
- package/dist/components/PageNavigator.d.ts +26 -0
- package/dist/components/PageNavigator.d.ts.map +1 -0
- package/dist/components/PageNavigator.js +91 -0
- package/dist/components/PageNavigator.js.map +1 -0
- package/dist/data/dielines.json +35 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lens/dieline-overlay.d.ts +25 -0
- package/dist/lens/dieline-overlay.d.ts.map +1 -0
- package/dist/lens/dieline-overlay.js +50 -0
- package/dist/lens/dieline-overlay.js.map +1 -0
- package/dist/lens/index.d.ts +27 -0
- package/dist/lens/index.d.ts.map +1 -0
- package/dist/lens/index.js +28 -0
- package/dist/lens/index.js.map +1 -0
- package/dist/lens/preflight-findings.d.ts +21 -0
- package/dist/lens/preflight-findings.d.ts.map +1 -0
- package/dist/lens/preflight-findings.js +82 -0
- package/dist/lens/preflight-findings.js.map +1 -0
- package/dist/lib/dieline-template.d.ts +82 -0
- package/dist/lib/dieline-template.d.ts.map +1 -1
- package/dist/lib/dieline-template.js +66 -1
- package/dist/lib/dieline-template.js.map +1 -1
- package/dist/lib/editor-config.d.ts +0 -1
- package/dist/lib/editor-config.d.ts.map +1 -1
- package/dist/lib/editor-config.js +0 -2
- package/dist/lib/editor-config.js.map +1 -1
- package/package.json +11 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Page } from "../lib/dieline-template";
|
|
2
|
+
/**
|
|
3
|
+
* Multi-page navigation strip. Lives:
|
|
4
|
+
* • in the desktop toolbar (thin horizontal row)
|
|
5
|
+
* • in the mobile drawer's "Pages" section (full-width buttons)
|
|
6
|
+
*
|
|
7
|
+
* Stays purely presentational — receives the current pages array +
|
|
8
|
+
* active index + change callbacks from `EditorApp`. No state of its
|
|
9
|
+
* own.
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export type PageNavigatorProps = {
|
|
14
|
+
pages: Page[];
|
|
15
|
+
currentPageIndex: number;
|
|
16
|
+
onSelect: (index: number) => void;
|
|
17
|
+
/** Append a duplicate of the current page. */
|
|
18
|
+
onAddPage?: () => void;
|
|
19
|
+
/** Remove the active page (disabled when only one remains). */
|
|
20
|
+
onDeletePage?: () => void;
|
|
21
|
+
/** Layout variant. `"strip"` is the thin desktop row; `"stack"` is the
|
|
22
|
+
* full-width vertical list in the mobile drawer. */
|
|
23
|
+
variant?: "strip" | "stack";
|
|
24
|
+
};
|
|
25
|
+
export declare function PageNavigator({ pages, currentPageIndex, onSelect, onAddPage, onDeletePage, variant, }: PageNavigatorProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=PageNavigator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageNavigator.d.ts","sourceRoot":"","sources":["../../src/components/PageNavigator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;yDACqD;IACrD,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B,CAAC;AAQF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,OAAiB,GAClB,EAAE,kBAAkB,2CAsLpB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
"use client";
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
const BG = "#120a04";
|
|
5
|
+
const PANEL_BG = "#1a0f08";
|
|
6
|
+
const BORDER = "#3d1a00";
|
|
7
|
+
const BRAND = "#fc5102";
|
|
8
|
+
const MUTED = "#888";
|
|
9
|
+
export function PageNavigator({ pages, currentPageIndex, onSelect, onAddPage, onDeletePage, variant = "strip", }) {
|
|
10
|
+
const canDelete = pages.length > 1 && onDeletePage !== undefined;
|
|
11
|
+
if (variant === "stack") {
|
|
12
|
+
return (_jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.2rem", padding: "0.4rem 0.65rem" }, children: [_jsx("div", { role: "tablist", "aria-label": "Pages", "aria-orientation": "vertical", style: { display: "flex", flexDirection: "column", gap: "0.2rem" }, children: pages.map((p, i) => {
|
|
13
|
+
const active = i === currentPageIndex;
|
|
14
|
+
return (_jsxs("button", { type: "button", role: "tab", "aria-selected": active, "aria-label": `Page ${i + 1}${p.name ? `: ${p.name}` : ""}`, onClick: () => onSelect(i), style: {
|
|
15
|
+
display: "flex",
|
|
16
|
+
alignItems: "center",
|
|
17
|
+
gap: "0.55rem",
|
|
18
|
+
padding: "0.45rem 0.6rem",
|
|
19
|
+
background: active ? "#241308" : "transparent",
|
|
20
|
+
border: `1px solid ${active ? BRAND : "transparent"}`,
|
|
21
|
+
borderRadius: 4,
|
|
22
|
+
color: active ? BRAND : "#ddd",
|
|
23
|
+
cursor: "pointer",
|
|
24
|
+
fontFamily: "inherit",
|
|
25
|
+
fontSize: "0.82rem",
|
|
26
|
+
textAlign: "left",
|
|
27
|
+
}, children: [_jsx("span", { "aria-hidden": true, style: { fontFamily: "monospace", color: MUTED, fontSize: "0.7rem" }, children: i + 1 }), _jsx("span", { style: { flex: 1 }, children: p.name ?? `Page ${i + 1}` }), active && (_jsx("span", { "aria-hidden": true, style: { color: BRAND }, children: "\u25CF" }))] }, p.id));
|
|
28
|
+
}) }), (onAddPage || canDelete) && (_jsxs("div", { style: { display: "flex", gap: "0.4rem", marginTop: "0.4rem" }, children: [onAddPage && (_jsx("button", { type: "button", onClick: onAddPage, style: stackActionStyle, "aria-label": "Add page", children: "+ Add page" })), canDelete && (_jsx("button", { type: "button", onClick: onDeletePage, style: { ...stackActionStyle, color: "#e57373", borderColor: "#5a1a1a" }, "aria-label": "Delete current page", children: "\u2715 Delete" }))] }))] }));
|
|
29
|
+
}
|
|
30
|
+
// strip — thin desktop row
|
|
31
|
+
return (_jsxs("div", { role: "tablist", "aria-label": "Pages", "aria-orientation": "horizontal", style: {
|
|
32
|
+
display: "flex",
|
|
33
|
+
alignItems: "center",
|
|
34
|
+
gap: "0.3rem",
|
|
35
|
+
padding: "0.25rem 0.6rem",
|
|
36
|
+
background: PANEL_BG,
|
|
37
|
+
borderBottom: `1px solid ${BORDER}`,
|
|
38
|
+
flexShrink: 0,
|
|
39
|
+
flexWrap: "wrap",
|
|
40
|
+
}, children: [_jsx("span", { "aria-hidden": true, style: {
|
|
41
|
+
fontSize: "0.7rem",
|
|
42
|
+
color: MUTED,
|
|
43
|
+
letterSpacing: "0.08em",
|
|
44
|
+
textTransform: "uppercase",
|
|
45
|
+
fontWeight: 600,
|
|
46
|
+
marginRight: "0.4rem",
|
|
47
|
+
}, children: "Pages" }), pages.map((p, i) => {
|
|
48
|
+
const active = i === currentPageIndex;
|
|
49
|
+
return (_jsxs("button", { type: "button", role: "tab", "aria-selected": active, "aria-label": `Page ${i + 1}${p.name ? `: ${p.name}` : ""}`, onClick: () => onSelect(i), title: p.name ?? `Page ${i + 1}`, style: {
|
|
50
|
+
background: active ? BRAND : "transparent",
|
|
51
|
+
color: active ? "#fff" : "#ccc",
|
|
52
|
+
border: `1px solid ${active ? BRAND : BORDER}`,
|
|
53
|
+
borderRadius: 4,
|
|
54
|
+
padding: "0.18rem 0.55rem",
|
|
55
|
+
fontSize: "0.75rem",
|
|
56
|
+
cursor: "pointer",
|
|
57
|
+
fontFamily: "inherit",
|
|
58
|
+
}, children: [i + 1, p.name ? (_jsx("span", { style: { marginLeft: "0.35rem", color: active ? "#fff" : MUTED }, children: p.name })) : null] }, p.id));
|
|
59
|
+
}), onAddPage && (_jsx("button", { type: "button", onClick: onAddPage, title: "Add page", style: {
|
|
60
|
+
background: "transparent",
|
|
61
|
+
color: MUTED,
|
|
62
|
+
border: `1px dashed ${BORDER}`,
|
|
63
|
+
borderRadius: 4,
|
|
64
|
+
padding: "0.18rem 0.55rem",
|
|
65
|
+
fontSize: "0.75rem",
|
|
66
|
+
cursor: "pointer",
|
|
67
|
+
fontFamily: "inherit",
|
|
68
|
+
marginLeft: "0.2rem",
|
|
69
|
+
}, children: "+" })), canDelete && (_jsx("button", { type: "button", onClick: onDeletePage, title: "Delete current page", style: {
|
|
70
|
+
background: "transparent",
|
|
71
|
+
color: "#e57373",
|
|
72
|
+
border: "1px solid #5a1a1a",
|
|
73
|
+
borderRadius: 4,
|
|
74
|
+
padding: "0.18rem 0.5rem",
|
|
75
|
+
fontSize: "0.7rem",
|
|
76
|
+
cursor: "pointer",
|
|
77
|
+
fontFamily: "inherit",
|
|
78
|
+
}, children: "\u2715" }))] }));
|
|
79
|
+
}
|
|
80
|
+
const stackActionStyle = {
|
|
81
|
+
flex: 1,
|
|
82
|
+
background: BG,
|
|
83
|
+
color: MUTED,
|
|
84
|
+
border: `1px solid ${BORDER}`,
|
|
85
|
+
borderRadius: 4,
|
|
86
|
+
padding: "0.35rem 0.5rem",
|
|
87
|
+
fontSize: "0.75rem",
|
|
88
|
+
cursor: "pointer",
|
|
89
|
+
fontFamily: "inherit",
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=PageNavigator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageNavigator.js","sourceRoot":"","sources":["../../src/components/PageNavigator.tsx"],"names":[],"mappings":"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"}
|
package/dist/data/dielines.json
CHANGED
|
@@ -182,5 +182,40 @@
|
|
|
182
182
|
"previewSvg": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 54.8 80.2'><rect x='2' y='2' width='50.8' height='76.2' fill='none' stroke='#333' stroke-width='0.5' rx='3'/><line x1='2' y1='12' x2='52.8' y2='12' stroke='#666' stroke-width='0.3'/><text x='27.4' y='47' text-anchor='middle' font-size='6' fill='#666'>Sachet</text><text x='27.4' y='56' text-anchor='middle' font-size='4' fill='#999'>2×3″</text></svg>",
|
|
183
183
|
"tags": ["sachet", "single-serve", "condiment", "sample", "hotel"]
|
|
184
184
|
}
|
|
185
|
+
],
|
|
186
|
+
"templateSets": [
|
|
187
|
+
{
|
|
188
|
+
"id": "carton-6x4x2-set",
|
|
189
|
+
"name": "Carton 6×4×2 (front + back)",
|
|
190
|
+
"description": "Two-sided dieline for a 6×4×2 straight-tuck carton. Front and back share the same trim.",
|
|
191
|
+
"category": "carton-set",
|
|
192
|
+
"pages": [
|
|
193
|
+
{ "templateId": "carton-6x4x2", "name": "Front" },
|
|
194
|
+
{ "templateId": "carton-6x4x2", "name": "Back" }
|
|
195
|
+
],
|
|
196
|
+
"tags": ["carton", "box", "multi-page", "front-back"]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"id": "carton-8x6x3-set",
|
|
200
|
+
"name": "Carton 8×6×3 (front + back)",
|
|
201
|
+
"description": "Two-sided dieline for an 8×6×3 straight-tuck carton.",
|
|
202
|
+
"category": "carton-set",
|
|
203
|
+
"pages": [
|
|
204
|
+
{ "templateId": "carton-8x6x3", "name": "Front" },
|
|
205
|
+
{ "templateId": "carton-8x6x3", "name": "Back" }
|
|
206
|
+
],
|
|
207
|
+
"tags": ["carton", "box", "multi-page", "front-back"]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"id": "standup-pouch-4x6-set",
|
|
211
|
+
"name": "Stand-Up Pouch 4×6 (front + back)",
|
|
212
|
+
"description": "Two-sided dieline for a 4×6 stand-up pouch — front graphic + back panel.",
|
|
213
|
+
"category": "pouch-set",
|
|
214
|
+
"pages": [
|
|
215
|
+
{ "templateId": "standup-pouch-4x6", "name": "Front" },
|
|
216
|
+
{ "templateId": "standup-pouch-4x6", "name": "Back" }
|
|
217
|
+
],
|
|
218
|
+
"tags": ["pouch", "stand-up", "multi-page", "front-back"]
|
|
219
|
+
}
|
|
185
220
|
]
|
|
186
221
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,6 @@ export { MobileToolDrawer, type MobileToolDrawerProps } from "./components/Mobil
|
|
|
18
18
|
export { useIsMobile } from "./hooks/useIsMobile";
|
|
19
19
|
export { type EditorMode, useEditorMode } from "./hooks/useEditorMode";
|
|
20
20
|
export { type EditorConfig, DEFAULT_EDITOR_CONFIG, BASIC_MODE_OVERRIDES, PRO_MODE_OVERRIDES, resolveConfig, } from "./lib/editor-config";
|
|
21
|
-
export { type DielineTemplate, TEMPLATES, getDefaultTemplate, getTemplateById, templateToInitialState, } from "./lib/dieline-template";
|
|
21
|
+
export { type DielineTemplate, type Page, type TemplateSet, TEMPLATES, TEMPLATE_SETS, getDefaultTemplate, getTemplateById, getTemplateSetById, templateToInitialState, templateToPage, templatesToPages, templateSetToPages, } from "./lib/dieline-template";
|
|
22
22
|
export { DEFAULT_BLEED_MM, parseBleed, formatBleed } from "./lib/bleed";
|
|
23
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACL,KAAK,YAAY,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,eAAe,EACpB,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACL,KAAK,YAAY,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,6 @@ export { MobileToolDrawer } from "./components/MobileToolDrawer";
|
|
|
18
18
|
export { useIsMobile } from "./hooks/useIsMobile";
|
|
19
19
|
export { useEditorMode } from "./hooks/useEditorMode";
|
|
20
20
|
export { DEFAULT_EDITOR_CONFIG, BASIC_MODE_OVERRIDES, PRO_MODE_OVERRIDES, resolveConfig, } from "./lib/editor-config";
|
|
21
|
-
export { TEMPLATES, getDefaultTemplate, getTemplateById, templateToInitialState, } from "./lib/dieline-template";
|
|
21
|
+
export { TEMPLATES, TEMPLATE_SETS, getDefaultTemplate, getTemplateById, getTemplateSetById, templateToInitialState, templateToPage, templatesToPages, templateSetToPages, } from "./lib/dieline-template";
|
|
22
22
|
export { DEFAULT_BLEED_MM, parseBleed, formatBleed } from "./lib/bleed";
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAuB,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAuC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAA8B,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAmB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAuB,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAuC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAA8B,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAmB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { OverlayPlugin } from "@printwithsynergy/lens-pdf";
|
|
2
|
+
import type { DielineTemplate } from "../lib/dieline-template";
|
|
3
|
+
/**
|
|
4
|
+
* Build a lens-pdf overlay plugin that renders the dieline trim + bleed
|
|
5
|
+
* lines over a rendered PDF. Mount via `register()` or pass into
|
|
6
|
+
* `<LensPDF plugins={...}>`.
|
|
7
|
+
*
|
|
8
|
+
* `pages` maps 1-indexed PDF page numbers to the dieline template +
|
|
9
|
+
* effective bleed used to render that page. The same artwork-pdf
|
|
10
|
+
* dieline-template helpers used during editing produce the values to
|
|
11
|
+
* pass here.
|
|
12
|
+
*
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export declare function dielineOverlayPlugin(opts: {
|
|
16
|
+
pages: Record<number, {
|
|
17
|
+
template: DielineTemplate;
|
|
18
|
+
bleedMm: number;
|
|
19
|
+
}>;
|
|
20
|
+
/** Override the trim-line color. Defaults to artwork-pdf brand orange. */
|
|
21
|
+
trimColor?: string;
|
|
22
|
+
/** Override the bleed-line color. Defaults to lens-pdf cyan. */
|
|
23
|
+
bleedColor?: string;
|
|
24
|
+
}): OverlayPlugin;
|
|
25
|
+
//# sourceMappingURL=dieline-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dieline-overlay.d.ts","sourceRoot":"","sources":["../../src/lens/dieline-overlay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,aAAa,CA+DhB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
"use client";
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
const MM_TO_PT = 2.83465;
|
|
5
|
+
const DIELINE_STROKE = "#fc5102";
|
|
6
|
+
const BLEED_STROKE = "#0ea5e9";
|
|
7
|
+
/**
|
|
8
|
+
* Build a lens-pdf overlay plugin that renders the dieline trim + bleed
|
|
9
|
+
* lines over a rendered PDF. Mount via `register()` or pass into
|
|
10
|
+
* `<LensPDF plugins={...}>`.
|
|
11
|
+
*
|
|
12
|
+
* `pages` maps 1-indexed PDF page numbers to the dieline template +
|
|
13
|
+
* effective bleed used to render that page. The same artwork-pdf
|
|
14
|
+
* dieline-template helpers used during editing produce the values to
|
|
15
|
+
* pass here.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export function dielineOverlayPlugin(opts) {
|
|
20
|
+
return {
|
|
21
|
+
id: "artworkpdf.overlay.dieline",
|
|
22
|
+
version: "1.0.0",
|
|
23
|
+
slot: "overlay.canvas",
|
|
24
|
+
mount(ctx) {
|
|
25
|
+
const entry = opts.pages[ctx.page];
|
|
26
|
+
if (!entry)
|
|
27
|
+
return null;
|
|
28
|
+
const { template, bleedMm } = entry;
|
|
29
|
+
const pageDims = ctx.document.pageDimensions[ctx.page - 1];
|
|
30
|
+
if (!pageDims)
|
|
31
|
+
return null;
|
|
32
|
+
const trimColor = opts.trimColor ?? DIELINE_STROKE;
|
|
33
|
+
const bleedColor = opts.bleedColor ?? BLEED_STROKE;
|
|
34
|
+
// Page = trim + 2 × bleed. Convert to PDF points using PDF dims.
|
|
35
|
+
// PDF point origin is bottom-left; lens-pdf overlay coordinates
|
|
36
|
+
// are top-left (CSS-style), so we mirror y to match.
|
|
37
|
+
const pageWidthPt = pageDims.width;
|
|
38
|
+
const pageHeightPt = pageDims.height;
|
|
39
|
+
const bleedPt = bleedMm * MM_TO_PT;
|
|
40
|
+
const trimWidthPt = template.trimBox.width * MM_TO_PT;
|
|
41
|
+
const trimHeightPt = template.trimBox.height * MM_TO_PT;
|
|
42
|
+
return (_jsxs("svg", { width: "100%", height: "100%", viewBox: `0 0 ${pageWidthPt} ${pageHeightPt}`, preserveAspectRatio: "none", style: {
|
|
43
|
+
position: "absolute",
|
|
44
|
+
inset: 0,
|
|
45
|
+
pointerEvents: "none",
|
|
46
|
+
}, "aria-hidden": true, children: [_jsx("title", { children: "Dieline overlay" }), _jsx("rect", { x: 0, y: 0, width: pageWidthPt, height: pageHeightPt, fill: "none", stroke: bleedColor, strokeWidth: 1, strokeDasharray: "6 4" }), _jsx("rect", { x: bleedPt, y: bleedPt, width: trimWidthPt, height: trimHeightPt, fill: "none", stroke: trimColor, strokeWidth: 1 })] }));
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=dieline-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dieline-overlay.js","sourceRoot":"","sources":["../../src/lens/dieline-overlay.tsx"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,YAAY,CAAC;;AAIb,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAMpC;IACC,OAAO;QACL,EAAE,EAAE,4BAA4B;QAChC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,gBAAgB;QACtB,KAAK,CAAC,GAAkB;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC;YAEnD,iEAAiE;YACjE,gEAAgE;YAChE,qDAAqD;YACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;YACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;YACrC,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;YACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;YAExD,OAAO,CACL,eACE,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAE,OAAO,WAAW,IAAI,YAAY,EAAE,EAC7C,mBAAmB,EAAC,MAAM,EAC1B,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,MAAM;iBACtB,kCAGD,8CAA8B,EAE9B,eACE,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,CAAC,EACd,eAAe,EAAC,KAAK,GACrB,EAEF,eACE,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,CAAC,GACd,IACE,CACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* artwork-pdf plugins for `@printwithsynergy/lens-pdf`.
|
|
3
|
+
*
|
|
4
|
+
* Use this subpath only when you also have `lens-pdf` installed.
|
|
5
|
+
* Hosts that mount the editor without lens-pdf don't need this.
|
|
6
|
+
*
|
|
7
|
+
* Quick start:
|
|
8
|
+
*
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { LensPDF } from "@printwithsynergy/lens-pdf";
|
|
11
|
+
* import { dielineOverlayPlugin, preflightFindingsPlugin }
|
|
12
|
+
* from "@printwithsynergy/artwork-pdf-editor/lens";
|
|
13
|
+
*
|
|
14
|
+
* <LensPDF
|
|
15
|
+
* pdfUrl={blobUrl}
|
|
16
|
+
* plugins={[
|
|
17
|
+
* dielineOverlayPlugin({ pages: { 1: { template: tpl, bleedMm: 3.175 } } }),
|
|
18
|
+
* preflightFindingsPlugin({ report }),
|
|
19
|
+
* ]}
|
|
20
|
+
* />
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
*/
|
|
25
|
+
export { dielineOverlayPlugin } from "./dieline-overlay";
|
|
26
|
+
export { preflightFindingsPlugin } from "./preflight-findings";
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lens/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/**
|
|
3
|
+
* artwork-pdf plugins for `@printwithsynergy/lens-pdf`.
|
|
4
|
+
*
|
|
5
|
+
* Use this subpath only when you also have `lens-pdf` installed.
|
|
6
|
+
* Hosts that mount the editor without lens-pdf don't need this.
|
|
7
|
+
*
|
|
8
|
+
* Quick start:
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { LensPDF } from "@printwithsynergy/lens-pdf";
|
|
12
|
+
* import { dielineOverlayPlugin, preflightFindingsPlugin }
|
|
13
|
+
* from "@printwithsynergy/artwork-pdf-editor/lens";
|
|
14
|
+
*
|
|
15
|
+
* <LensPDF
|
|
16
|
+
* pdfUrl={blobUrl}
|
|
17
|
+
* plugins={[
|
|
18
|
+
* dielineOverlayPlugin({ pages: { 1: { template: tpl, bleedMm: 3.175 } } }),
|
|
19
|
+
* preflightFindingsPlugin({ report }),
|
|
20
|
+
* ]}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
export { dielineOverlayPlugin } from "./dieline-overlay";
|
|
27
|
+
export { preflightFindingsPlugin } from "./preflight-findings";
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lens/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PanelPlugin } from "@printwithsynergy/lens-pdf";
|
|
2
|
+
import type { PreflightReport } from "../lib/preflight/types";
|
|
3
|
+
/**
|
|
4
|
+
* Build a lens-pdf panel plugin that surfaces an artwork-pdf
|
|
5
|
+
* `PreflightReport` in the right-hand panel. Reuses the same preflight
|
|
6
|
+
* types the editor's pre-render PreflightPanel consumed.
|
|
7
|
+
*
|
|
8
|
+
* Pass the latest report when registering (or via a closure that re-reads
|
|
9
|
+
* a host store). Each issue renders as a clickable row; in this first
|
|
10
|
+
* pass we just list them — wiring to canvas-highlight (an OverlayItem
|
|
11
|
+
* round-trip) comes in a follow-up.
|
|
12
|
+
*
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export declare function preflightFindingsPlugin(opts: {
|
|
16
|
+
/** The artwork-pdf preflight report to display. */
|
|
17
|
+
report: PreflightReport | null;
|
|
18
|
+
/** Optional click handler. Receives the issue + 1-indexed page. */
|
|
19
|
+
onIssueClick?: (issue: PreflightReport["issues"][number]) => void;
|
|
20
|
+
}): PanelPlugin;
|
|
21
|
+
//# sourceMappingURL=preflight-findings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight-findings.d.ts","sourceRoot":"","sources":["../../src/lens/preflight-findings.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO9D;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,mDAAmD;IACnD,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,mEAAmE;IACnE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CACnE,GAAG,WAAW,CA8Hd"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
"use client";
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
const PANEL_BG = "#1a0f08";
|
|
5
|
+
const BORDER = "#3d1a00";
|
|
6
|
+
const BRAND = "#fc5102";
|
|
7
|
+
const MUTED = "#888";
|
|
8
|
+
/**
|
|
9
|
+
* Build a lens-pdf panel plugin that surfaces an artwork-pdf
|
|
10
|
+
* `PreflightReport` in the right-hand panel. Reuses the same preflight
|
|
11
|
+
* types the editor's pre-render PreflightPanel consumed.
|
|
12
|
+
*
|
|
13
|
+
* Pass the latest report when registering (or via a closure that re-reads
|
|
14
|
+
* a host store). Each issue renders as a clickable row; in this first
|
|
15
|
+
* pass we just list them — wiring to canvas-highlight (an OverlayItem
|
|
16
|
+
* round-trip) comes in a follow-up.
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export function preflightFindingsPlugin(opts) {
|
|
21
|
+
return {
|
|
22
|
+
id: "artworkpdf.panel.preflight",
|
|
23
|
+
version: "1.0.0",
|
|
24
|
+
slot: "panel.right",
|
|
25
|
+
title: "Preflight",
|
|
26
|
+
order: 10,
|
|
27
|
+
mount(_ctx) {
|
|
28
|
+
const report = opts.report;
|
|
29
|
+
if (!report) {
|
|
30
|
+
return (_jsx("div", { style: {
|
|
31
|
+
padding: "0.75rem",
|
|
32
|
+
fontSize: "0.78rem",
|
|
33
|
+
color: MUTED,
|
|
34
|
+
background: PANEL_BG,
|
|
35
|
+
height: "100%",
|
|
36
|
+
}, children: "No preflight report attached to this document." }));
|
|
37
|
+
}
|
|
38
|
+
return (_jsxs("div", { style: {
|
|
39
|
+
background: PANEL_BG,
|
|
40
|
+
color: "#ddd",
|
|
41
|
+
height: "100%",
|
|
42
|
+
display: "flex",
|
|
43
|
+
flexDirection: "column",
|
|
44
|
+
fontSize: "0.8rem",
|
|
45
|
+
}, children: [_jsxs("header", { style: {
|
|
46
|
+
padding: "0.5rem 0.75rem",
|
|
47
|
+
borderBottom: `1px solid ${BORDER}`,
|
|
48
|
+
display: "flex",
|
|
49
|
+
alignItems: "center",
|
|
50
|
+
gap: "0.5rem",
|
|
51
|
+
}, children: [_jsx("span", { style: {
|
|
52
|
+
width: 8,
|
|
53
|
+
height: 8,
|
|
54
|
+
borderRadius: 4,
|
|
55
|
+
background: report.passed ? "#2e7d32" : "#b71c1c",
|
|
56
|
+
}, "aria-hidden": true }), _jsx("span", { style: { fontWeight: 600 }, children: report.passed ? "Passed" : "Issues found" }), _jsxs("span", { style: { marginLeft: "auto", color: MUTED, fontSize: "0.7rem" }, children: [report.issues.length, " issue", report.issues.length === 1 ? "" : "s"] })] }), _jsxs("ul", { style: {
|
|
57
|
+
flex: 1,
|
|
58
|
+
overflowY: "auto",
|
|
59
|
+
listStyle: "none",
|
|
60
|
+
margin: 0,
|
|
61
|
+
padding: 0,
|
|
62
|
+
}, children: [report.issues.length === 0 && (_jsx("li", { style: { padding: "0.75rem", color: MUTED }, children: "No issues." })), report.issues.map((issue, i) => (_jsx("li", { style: { borderBottom: `1px solid ${BORDER}` }, children: _jsxs("button", { type: "button", onClick: () => opts.onIssueClick?.(issue), style: {
|
|
63
|
+
width: "100%",
|
|
64
|
+
background: "transparent",
|
|
65
|
+
border: "none",
|
|
66
|
+
padding: "0.55rem 0.75rem",
|
|
67
|
+
textAlign: "left",
|
|
68
|
+
color: "#ddd",
|
|
69
|
+
cursor: opts.onIssueClick ? "pointer" : "default",
|
|
70
|
+
fontFamily: "inherit",
|
|
71
|
+
fontSize: "0.78rem",
|
|
72
|
+
}, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem" }, children: [_jsx("span", { style: {
|
|
73
|
+
fontSize: "0.6rem",
|
|
74
|
+
letterSpacing: "0.08em",
|
|
75
|
+
textTransform: "uppercase",
|
|
76
|
+
color: issue.severity === "block" ? "#ef5350" : "#ffb74d",
|
|
77
|
+
fontWeight: 600,
|
|
78
|
+
}, children: issue.severity }), _jsx("span", { style: { color: BRAND, fontSize: "0.7rem", fontFamily: "monospace" }, children: issue.checkName }), issue.page !== undefined && (_jsxs("span", { style: { marginLeft: "auto", color: MUTED, fontSize: "0.7rem" }, children: ["p.", issue.page] }))] }), _jsx("div", { style: { marginTop: "0.2rem", lineHeight: 1.4 }, children: issue.message })] }) }, `${issue.checkName}-${i}`)))] })] }));
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=preflight-findings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight-findings.js","sourceRoot":"","sources":["../../src/lens/preflight-findings.tsx"],"names":[],"mappings":"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"}
|
|
@@ -25,9 +25,91 @@ export type DielineTemplate = {
|
|
|
25
25
|
* rather than being lumped in with artwork spot inks. */
|
|
26
26
|
export declare const DIELINE_STROKE = "#fc5102";
|
|
27
27
|
export declare const DIELINE_NAME = "Die Line";
|
|
28
|
+
/**
|
|
29
|
+
* A multi-page dieline set — an ordered list of {@link DielineTemplate}
|
|
30
|
+
* ids that compose a single multi-page artwork document (e.g. a carton's
|
|
31
|
+
* front + back, or pouch front + back).
|
|
32
|
+
*
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export type TemplateSet = {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
category: string;
|
|
40
|
+
pages: Array<{
|
|
41
|
+
templateId: string;
|
|
42
|
+
name?: string;
|
|
43
|
+
}>;
|
|
44
|
+
tags: string[];
|
|
45
|
+
isDefault?: boolean;
|
|
46
|
+
};
|
|
28
47
|
export declare const TEMPLATES: DielineTemplate[];
|
|
48
|
+
/**
|
|
49
|
+
* Bundled multi-page template sets (e.g. carton front + back). Empty if
|
|
50
|
+
* the library has none.
|
|
51
|
+
*
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
export declare const TEMPLATE_SETS: TemplateSet[];
|
|
29
55
|
export declare function getDefaultTemplate(): DielineTemplate;
|
|
30
56
|
export declare function getTemplateById(id: string | undefined): DielineTemplate | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Lookup a multi-page template set by id (e.g. `"carton-6x4x2-set"`).
|
|
59
|
+
* Returns `undefined` for unknown / missing.
|
|
60
|
+
*
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
export declare function getTemplateSetById(id: string | undefined): TemplateSet | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Expand a {@link TemplateSet} into an ordered list of {@link Page}s.
|
|
66
|
+
* Each set entry resolves to its `DielineTemplate`; unknown ids are
|
|
67
|
+
* skipped (so callers always get a non-throwing result they can fall
|
|
68
|
+
* back from).
|
|
69
|
+
*
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
export declare function templateSetToPages(set: TemplateSet, bleedMmOverride?: number): Page[];
|
|
73
|
+
/**
|
|
74
|
+
* One page of a multi-page artwork document. Carries the dieline rect
|
|
75
|
+
* + any user-drawn objects, plus the per-page geometry (pageSize, bleed).
|
|
76
|
+
* Used as the array element of {@link EditorAppProps.initialPages}.
|
|
77
|
+
*
|
|
78
|
+
* @public
|
|
79
|
+
*/
|
|
80
|
+
export type Page = {
|
|
81
|
+
/** Stable id (e.g. `uuid()` or ``page-${i}``) — used as a React key. */
|
|
82
|
+
id: string;
|
|
83
|
+
objects: CanvasObj[];
|
|
84
|
+
pageSize: {
|
|
85
|
+
width: number;
|
|
86
|
+
height: number;
|
|
87
|
+
};
|
|
88
|
+
bleedMm: number;
|
|
89
|
+
/** Source template id, when this page was seeded from a known dieline. */
|
|
90
|
+
templateId?: string;
|
|
91
|
+
/** Human label shown in the page navigator (e.g. "Front", "Back"). */
|
|
92
|
+
name?: string;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Build a {@link Page} from a {@link DielineTemplate}. Mirrors the
|
|
96
|
+
* single-page {@link templateToInitialState} output but in the new
|
|
97
|
+
* multi-page shape. Use this to seed `EditorAppProps.initialPages`.
|
|
98
|
+
*
|
|
99
|
+
* @public
|
|
100
|
+
*/
|
|
101
|
+
export declare function templateToPage(template: DielineTemplate, bleedMmOverride?: number, name?: string): Page;
|
|
102
|
+
/**
|
|
103
|
+
* Build a list of {@link Page}s from an ordered set of templates +
|
|
104
|
+
* per-page names. Convenience for multi-page document sets (e.g. a
|
|
105
|
+
* carton's front / back / spine).
|
|
106
|
+
*
|
|
107
|
+
* @public
|
|
108
|
+
*/
|
|
109
|
+
export declare function templatesToPages(entries: ReadonlyArray<{
|
|
110
|
+
template: DielineTemplate;
|
|
111
|
+
name?: string;
|
|
112
|
+
}>, bleedMmOverride?: number): Page[];
|
|
31
113
|
export declare function templateToInitialState(template: DielineTemplate, bleedMmOverride?: number): {
|
|
32
114
|
objects: CanvasObj[];
|
|
33
115
|
pageSize: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dieline-template.d.ts","sourceRoot":"","sources":["../../src/lib/dieline-template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAIF;;0DAE0D;AAC1D,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,eAAO,MAAM,SAAS,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"dieline-template.d.ts","sourceRoot":"","sources":["../../src/lib/dieline-template.ts"],"names":[],"mappings":"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"}
|