@printwithsynergy/artwork-pdf-editor 0.1.6 → 0.3.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.
Files changed (249) hide show
  1. package/LICENSE +62 -0
  2. package/README.md +63 -2
  3. package/dist/components/AccessibilityHintsPanel.d.ts +142 -0
  4. package/dist/components/AccessibilityHintsPanel.d.ts.map +1 -0
  5. package/dist/components/AccessibilityHintsPanel.js +158 -0
  6. package/dist/components/AccessibilityHintsPanel.js.map +1 -0
  7. package/dist/components/AnnotationOverlay.d.ts +142 -0
  8. package/dist/components/AnnotationOverlay.d.ts.map +1 -0
  9. package/dist/components/AnnotationOverlay.js +141 -0
  10. package/dist/components/AnnotationOverlay.js.map +1 -0
  11. package/dist/components/AnnotationsSidebar.d.ts +98 -0
  12. package/dist/components/AnnotationsSidebar.d.ts.map +1 -0
  13. package/dist/components/AnnotationsSidebar.js +100 -0
  14. package/dist/components/AnnotationsSidebar.js.map +1 -0
  15. package/dist/components/BarcodeGeneratorPanel.d.ts +58 -0
  16. package/dist/components/BarcodeGeneratorPanel.d.ts.map +1 -0
  17. package/dist/components/BarcodeGeneratorPanel.js +91 -0
  18. package/dist/components/BarcodeGeneratorPanel.js.map +1 -0
  19. package/dist/components/BraillePanel.d.ts +99 -0
  20. package/dist/components/BraillePanel.d.ts.map +1 -0
  21. package/dist/components/BraillePanel.js +221 -0
  22. package/dist/components/BraillePanel.js.map +1 -0
  23. package/dist/components/BrandAssetsPanel.d.ts +130 -0
  24. package/dist/components/BrandAssetsPanel.d.ts.map +1 -0
  25. package/dist/components/BrandAssetsPanel.js +125 -0
  26. package/dist/components/BrandAssetsPanel.js.map +1 -0
  27. package/dist/components/BrandConsistencyPanel.d.ts +140 -0
  28. package/dist/components/BrandConsistencyPanel.d.ts.map +1 -0
  29. package/dist/components/BrandConsistencyPanel.js +158 -0
  30. package/dist/components/BrandConsistencyPanel.js.map +1 -0
  31. package/dist/components/ComplianceFindingsPanel.d.ts +62 -0
  32. package/dist/components/ComplianceFindingsPanel.d.ts.map +1 -0
  33. package/dist/components/ComplianceFindingsPanel.js +118 -0
  34. package/dist/components/ComplianceFindingsPanel.js.map +1 -0
  35. package/dist/components/DesignSuggestionsPanel.d.ts +148 -0
  36. package/dist/components/DesignSuggestionsPanel.d.ts.map +1 -0
  37. package/dist/components/DesignSuggestionsPanel.js +154 -0
  38. package/dist/components/DesignSuggestionsPanel.js.map +1 -0
  39. package/dist/components/DielineParametersPanel.d.ts +62 -0
  40. package/dist/components/DielineParametersPanel.d.ts.map +1 -0
  41. package/dist/components/DielineParametersPanel.js +170 -0
  42. package/dist/components/DielineParametersPanel.js.map +1 -0
  43. package/dist/components/DielinePreview.d.ts +150 -0
  44. package/dist/components/DielinePreview.d.ts.map +1 -0
  45. package/dist/components/DielinePreview.js +146 -0
  46. package/dist/components/DielinePreview.js.map +1 -0
  47. package/dist/components/EditorApp.d.ts +39 -5
  48. package/dist/components/EditorApp.d.ts.map +1 -1
  49. package/dist/components/EditorApp.js +110 -5
  50. package/dist/components/EditorApp.js.map +1 -1
  51. package/dist/components/EditorCanvas.d.ts +51 -2
  52. package/dist/components/EditorCanvas.d.ts.map +1 -1
  53. package/dist/components/EditorCanvas.js +117 -48
  54. package/dist/components/EditorCanvas.js.map +1 -1
  55. package/dist/components/EmailNotifyPanel.d.ts +165 -0
  56. package/dist/components/EmailNotifyPanel.d.ts.map +1 -0
  57. package/dist/components/EmailNotifyPanel.js +211 -0
  58. package/dist/components/EmailNotifyPanel.js.map +1 -0
  59. package/dist/components/FileDropZone.d.ts +9 -1
  60. package/dist/components/FileDropZone.d.ts.map +1 -1
  61. package/dist/components/FileDropZone.js +53 -5
  62. package/dist/components/FileDropZone.js.map +1 -1
  63. package/dist/components/FoldEditorPanel.d.ts +68 -0
  64. package/dist/components/FoldEditorPanel.d.ts.map +1 -0
  65. package/dist/components/FoldEditorPanel.js +65 -0
  66. package/dist/components/FoldEditorPanel.js.map +1 -0
  67. package/dist/components/FoldPreviewOverlay.d.ts +48 -0
  68. package/dist/components/FoldPreviewOverlay.d.ts.map +1 -0
  69. package/dist/components/FoldPreviewOverlay.js +182 -0
  70. package/dist/components/FoldPreviewOverlay.js.map +1 -0
  71. package/dist/components/Gs1DigitalLinkPanel.d.ts +103 -0
  72. package/dist/components/Gs1DigitalLinkPanel.d.ts.map +1 -0
  73. package/dist/components/Gs1DigitalLinkPanel.js +199 -0
  74. package/dist/components/Gs1DigitalLinkPanel.js.map +1 -0
  75. package/dist/components/HistoryPanel.d.ts +39 -0
  76. package/dist/components/HistoryPanel.d.ts.map +1 -0
  77. package/dist/components/HistoryPanel.js +72 -0
  78. package/dist/components/HistoryPanel.js.map +1 -0
  79. package/dist/components/IccSoftProofOverlay.d.ts +67 -0
  80. package/dist/components/IccSoftProofOverlay.d.ts.map +1 -0
  81. package/dist/components/IccSoftProofOverlay.js +119 -0
  82. package/dist/components/IccSoftProofOverlay.js.map +1 -0
  83. package/dist/components/ImposePanel.d.ts +71 -0
  84. package/dist/components/ImposePanel.d.ts.map +1 -0
  85. package/dist/components/ImposePanel.js +127 -0
  86. package/dist/components/ImposePanel.js.map +1 -0
  87. package/dist/components/InksPanel.d.ts +61 -0
  88. package/dist/components/InksPanel.d.ts.map +1 -0
  89. package/dist/components/InksPanel.js +84 -0
  90. package/dist/components/InksPanel.js.map +1 -0
  91. package/dist/components/JobSetupPanel.d.ts +118 -0
  92. package/dist/components/JobSetupPanel.d.ts.map +1 -0
  93. package/dist/components/JobSetupPanel.js +169 -0
  94. package/dist/components/JobSetupPanel.js.map +1 -0
  95. package/dist/components/LayersPanel.d.ts.map +1 -1
  96. package/dist/components/LayersPanel.js +1 -0
  97. package/dist/components/LayersPanel.js.map +1 -1
  98. package/dist/components/MarkLibraryPanel.d.ts +131 -0
  99. package/dist/components/MarkLibraryPanel.d.ts.map +1 -0
  100. package/dist/components/MarkLibraryPanel.js +184 -0
  101. package/dist/components/MarkLibraryPanel.js.map +1 -0
  102. package/dist/components/MisEstimateButton.d.ts +73 -0
  103. package/dist/components/MisEstimateButton.d.ts.map +1 -0
  104. package/dist/components/MisEstimateButton.js +57 -0
  105. package/dist/components/MisEstimateButton.js.map +1 -0
  106. package/dist/components/NutritionPanel.d.ts +118 -0
  107. package/dist/components/NutritionPanel.d.ts.map +1 -0
  108. package/dist/components/NutritionPanel.js +169 -0
  109. package/dist/components/NutritionPanel.js.map +1 -0
  110. package/dist/components/PageNavigator.d.ts +26 -0
  111. package/dist/components/PageNavigator.d.ts.map +1 -0
  112. package/dist/components/PageNavigator.js +96 -0
  113. package/dist/components/PageNavigator.js.map +1 -0
  114. package/dist/components/PaletteManager.d.ts +32 -0
  115. package/dist/components/PaletteManager.d.ts.map +1 -0
  116. package/dist/components/PaletteManager.js +89 -0
  117. package/dist/components/PaletteManager.js.map +1 -0
  118. package/dist/components/PaletteToSpotPanel.d.ts +122 -0
  119. package/dist/components/PaletteToSpotPanel.d.ts.map +1 -0
  120. package/dist/components/PaletteToSpotPanel.js +160 -0
  121. package/dist/components/PaletteToSpotPanel.js.map +1 -0
  122. package/dist/components/PreflightAutoFixPanel.d.ts +110 -0
  123. package/dist/components/PreflightAutoFixPanel.d.ts.map +1 -0
  124. package/dist/components/PreflightAutoFixPanel.js +119 -0
  125. package/dist/components/PreflightAutoFixPanel.js.map +1 -0
  126. package/dist/components/PreflightDiffPanel.d.ts +127 -0
  127. package/dist/components/PreflightDiffPanel.d.ts.map +1 -0
  128. package/dist/components/PreflightDiffPanel.js +0 -0
  129. package/dist/components/PreflightDiffPanel.js.map +1 -0
  130. package/dist/components/ProcessRulesPanel.d.ts +81 -0
  131. package/dist/components/ProcessRulesPanel.d.ts.map +1 -0
  132. package/dist/components/ProcessRulesPanel.js +143 -0
  133. package/dist/components/ProcessRulesPanel.js.map +1 -0
  134. package/dist/components/SlackNotifyPanel.d.ts +139 -0
  135. package/dist/components/SlackNotifyPanel.d.ts.map +1 -0
  136. package/dist/components/SlackNotifyPanel.js +133 -0
  137. package/dist/components/SlackNotifyPanel.js.map +1 -0
  138. package/dist/components/SmartSpotMatchPanel.d.ts +143 -0
  139. package/dist/components/SmartSpotMatchPanel.d.ts.map +1 -0
  140. package/dist/components/SmartSpotMatchPanel.js +159 -0
  141. package/dist/components/SmartSpotMatchPanel.js.map +1 -0
  142. package/dist/components/SwatchesPicker.d.ts +83 -0
  143. package/dist/components/SwatchesPicker.d.ts.map +1 -0
  144. package/dist/components/SwatchesPicker.js +151 -0
  145. package/dist/components/SwatchesPicker.js.map +1 -0
  146. package/dist/components/TacOverlay.d.ts +47 -0
  147. package/dist/components/TacOverlay.d.ts.map +1 -0
  148. package/dist/components/TacOverlay.js +116 -0
  149. package/dist/components/TacOverlay.js.map +1 -0
  150. package/dist/components/TrapEditorPanel.d.ts +52 -0
  151. package/dist/components/TrapEditorPanel.d.ts.map +1 -0
  152. package/dist/components/TrapEditorPanel.js +64 -0
  153. package/dist/components/TrapEditorPanel.js.map +1 -0
  154. package/dist/components/TrapPreviewOverlay.d.ts +64 -0
  155. package/dist/components/TrapPreviewOverlay.d.ts.map +1 -0
  156. package/dist/components/TrapPreviewOverlay.js +120 -0
  157. package/dist/components/TrapPreviewOverlay.js.map +1 -0
  158. package/dist/components/VariantMatrixPanel.d.ts +61 -0
  159. package/dist/components/VariantMatrixPanel.d.ts.map +1 -0
  160. package/dist/components/VariantMatrixPanel.js +97 -0
  161. package/dist/components/VariantMatrixPanel.js.map +1 -0
  162. package/dist/components/VariantMatrixVersionPanel.d.ts +122 -0
  163. package/dist/components/VariantMatrixVersionPanel.d.ts.map +1 -0
  164. package/dist/components/VariantMatrixVersionPanel.js +162 -0
  165. package/dist/components/VariantMatrixVersionPanel.js.map +1 -0
  166. package/dist/components/WebhookNotifyPanel.d.ts +160 -0
  167. package/dist/components/WebhookNotifyPanel.d.ts.map +1 -0
  168. package/dist/components/WebhookNotifyPanel.js +100 -0
  169. package/dist/components/WebhookNotifyPanel.js.map +1 -0
  170. package/dist/components/WhiteUnderbasePanel.d.ts +107 -0
  171. package/dist/components/WhiteUnderbasePanel.d.ts.map +1 -0
  172. package/dist/components/WhiteUnderbasePanel.js +104 -0
  173. package/dist/components/WhiteUnderbasePanel.js.map +1 -0
  174. package/dist/data/dielines.json +35 -0
  175. package/dist/hooks/useEditorMode.d.ts +25 -5
  176. package/dist/hooks/useEditorMode.d.ts.map +1 -1
  177. package/dist/hooks/useEditorMode.js +18 -5
  178. package/dist/hooks/useEditorMode.js.map +1 -1
  179. package/dist/index.d.ts +49 -2
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.js +49 -2
  182. package/dist/index.js.map +1 -1
  183. package/dist/lens/dieline-overlay.d.ts +25 -0
  184. package/dist/lens/dieline-overlay.d.ts.map +1 -0
  185. package/dist/lens/dieline-overlay.js +50 -0
  186. package/dist/lens/dieline-overlay.js.map +1 -0
  187. package/dist/lens/index.d.ts +27 -0
  188. package/dist/lens/index.d.ts.map +1 -0
  189. package/dist/lens/index.js +28 -0
  190. package/dist/lens/index.js.map +1 -0
  191. package/dist/lens/preflight-findings.d.ts +21 -0
  192. package/dist/lens/preflight-findings.d.ts.map +1 -0
  193. package/dist/lens/preflight-findings.js +82 -0
  194. package/dist/lens/preflight-findings.js.map +1 -0
  195. package/dist/lib/barcode-scan.d.ts +154 -0
  196. package/dist/lib/barcode-scan.d.ts.map +1 -0
  197. package/dist/lib/barcode-scan.js +152 -0
  198. package/dist/lib/barcode-scan.js.map +1 -0
  199. package/dist/lib/color-math.d.ts +76 -0
  200. package/dist/lib/color-math.d.ts.map +1 -0
  201. package/dist/lib/color-math.js +96 -0
  202. package/dist/lib/color-math.js.map +1 -0
  203. package/dist/lib/dieline-template.d.ts +169 -0
  204. package/dist/lib/dieline-template.d.ts.map +1 -1
  205. package/dist/lib/dieline-template.js +229 -1
  206. package/dist/lib/dieline-template.js.map +1 -1
  207. package/dist/lib/editor-config.d.ts +384 -1
  208. package/dist/lib/editor-config.d.ts.map +1 -1
  209. package/dist/lib/editor-config.js +89 -2
  210. package/dist/lib/editor-config.js.map +1 -1
  211. package/dist/lib/fold-geometry.d.ts +144 -0
  212. package/dist/lib/fold-geometry.d.ts.map +1 -0
  213. package/dist/lib/fold-geometry.js +138 -0
  214. package/dist/lib/fold-geometry.js.map +1 -0
  215. package/dist/lib/merge-tokens.d.ts +81 -0
  216. package/dist/lib/merge-tokens.d.ts.map +1 -0
  217. package/dist/lib/merge-tokens.js +88 -0
  218. package/dist/lib/merge-tokens.js.map +1 -0
  219. package/dist/lib/palette-registry.d.ts +40 -0
  220. package/dist/lib/palette-registry.d.ts.map +1 -0
  221. package/dist/lib/palette-registry.js +49 -0
  222. package/dist/lib/palette-registry.js.map +1 -0
  223. package/dist/lib/panel-anchor.d.ts +101 -0
  224. package/dist/lib/panel-anchor.d.ts.map +1 -0
  225. package/dist/lib/panel-anchor.js +68 -0
  226. package/dist/lib/panel-anchor.js.map +1 -0
  227. package/dist/lib/preflight/checks.d.ts.map +1 -1
  228. package/dist/lib/preflight/checks.js +71 -0
  229. package/dist/lib/preflight/checks.js.map +1 -1
  230. package/dist/lib/preflight/types.d.ts.map +1 -1
  231. package/dist/lib/preflight/types.js +11 -0
  232. package/dist/lib/preflight/types.js.map +1 -1
  233. package/dist/lib/rasterize.d.ts +93 -0
  234. package/dist/lib/rasterize.d.ts.map +1 -0
  235. package/dist/lib/rasterize.js +117 -0
  236. package/dist/lib/rasterize.js.map +1 -0
  237. package/dist/lib/separations-registry.d.ts +99 -0
  238. package/dist/lib/separations-registry.d.ts.map +1 -0
  239. package/dist/lib/separations-registry.js +59 -0
  240. package/dist/lib/separations-registry.js.map +1 -0
  241. package/dist/lib/unwired.d.ts +29 -0
  242. package/dist/lib/unwired.d.ts.map +1 -0
  243. package/dist/lib/unwired.js +58 -0
  244. package/dist/lib/unwired.js.map +1 -0
  245. package/package.json +29 -11
  246. package/dist/components/SeparationsPanel.d.ts +0 -9
  247. package/dist/components/SeparationsPanel.d.ts.map +0 -1
  248. package/dist/components/SeparationsPanel.js +0 -168
  249. package/dist/components/SeparationsPanel.js.map +0 -1
@@ -0,0 +1,146 @@
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
+ /** Default preview size. Tight enough for a sidebar slot, big enough
5
+ * to read panel roles at a glance. */
6
+ const DEFAULT_SIZE_PX = 160;
7
+ /** SVG gutter around the dieline so panel strokes don't kiss the edge. */
8
+ const GUTTER_PX = 8;
9
+ /** Pixel tolerance for treating two panel-bbox edges as "touching".
10
+ * In viewport-projected coords a half-pixel slop covers float drift
11
+ * from the bbox → scaled-corner pipeline without spuriously matching
12
+ * visibly-separated panels. Hosts that need a stricter test can drive
13
+ * `computeDielinePreviewLayout` themselves over their own constant. */
14
+ const ADJACENCY_TOLERANCE_PX = 0.5;
15
+ /**
16
+ * Pure geometry helper — projects the panel registry + fold config
17
+ * into the preview viewport at `sizePx` square. Exposed for tests
18
+ * and for hosts that want to drive their own SVG / canvas renderer
19
+ * over the same numbers.
20
+ *
21
+ * Returns an empty layout when `panels` is empty; collapses to a
22
+ * unit scale when every panel has zero extent (mid-edit guard).
23
+ *
24
+ * @public
25
+ */
26
+ export function computeDielinePreviewLayout(panelMetadata, foldConfig, sizePx) {
27
+ if (panelMetadata.panels.length === 0) {
28
+ return { panels: [], hinges: [], scale: 1 };
29
+ }
30
+ // AABB across every panel's bbox in source units.
31
+ let minX = Number.POSITIVE_INFINITY;
32
+ let minY = Number.POSITIVE_INFINITY;
33
+ let maxX = Number.NEGATIVE_INFINITY;
34
+ let maxY = Number.NEGATIVE_INFINITY;
35
+ for (const p of panelMetadata.panels) {
36
+ if (p.bbox.x < minX)
37
+ minX = p.bbox.x;
38
+ if (p.bbox.y < minY)
39
+ minY = p.bbox.y;
40
+ if (p.bbox.x + p.bbox.width > maxX)
41
+ maxX = p.bbox.x + p.bbox.width;
42
+ if (p.bbox.y + p.bbox.height > maxY)
43
+ maxY = p.bbox.y + p.bbox.height;
44
+ }
45
+ const spanX = maxX - minX;
46
+ const spanY = maxY - minY;
47
+ const longest = Math.max(spanX, spanY);
48
+ // Defensive: degenerate registries (all-zero bboxes) get unit scale
49
+ // so we still render *something* and don't divide by zero.
50
+ const scale = longest > 0 ? (sizePx - 2 * GUTTER_PX) / longest : 1;
51
+ const panels = panelMetadata.panels.map((p) => {
52
+ const out = {
53
+ id: p.id,
54
+ x: GUTTER_PX + (p.bbox.x - minX) * scale,
55
+ y: GUTTER_PX + (p.bbox.y - minY) * scale,
56
+ width: p.bbox.width * scale,
57
+ height: p.bbox.height * scale,
58
+ };
59
+ if (p.name !== undefined)
60
+ out.name = p.name;
61
+ if (p.role !== undefined)
62
+ out.role = p.role;
63
+ return out;
64
+ });
65
+ const panelById = new Map(panels.map((p) => [p.id, p]));
66
+ const hinges = [];
67
+ if (foldConfig) {
68
+ for (const edge of foldConfig.edges) {
69
+ const a = panelById.get(edge.panelA);
70
+ const b = panelById.get(edge.panelB);
71
+ if (!a || !b)
72
+ continue;
73
+ // Hinge segment = the overlap of the two panels' bbox edges.
74
+ // For non-touching panels we still draw a connector between
75
+ // their bbox centers so the operator can see the fold intent.
76
+ hinges.push({
77
+ id: edge.id,
78
+ ...hingeBetween(a, b),
79
+ direction: edge.direction ?? "mountain",
80
+ });
81
+ }
82
+ }
83
+ return { panels, hinges, scale };
84
+ }
85
+ /**
86
+ * Compute the hinge segment between two laid-out panels. Returns the
87
+ * shared bbox edge when the panels touch; otherwise returns a connector
88
+ * between their centers so dangling-fold cases still render visibly.
89
+ */
90
+ function hingeBetween(a, b) {
91
+ const aRight = a.x + a.width;
92
+ const aBottom = a.y + a.height;
93
+ const bRight = b.x + b.width;
94
+ const bBottom = b.y + b.height;
95
+ // Horizontal-adjacent: a is left of b, edge is x = aRight ≈ b.x.
96
+ if (Math.abs(aRight - b.x) < ADJACENCY_TOLERANCE_PX ||
97
+ Math.abs(bRight - a.x) < ADJACENCY_TOLERANCE_PX) {
98
+ const x = Math.abs(aRight - b.x) < ADJACENCY_TOLERANCE_PX ? aRight : a.x;
99
+ const y1 = Math.max(a.y, b.y);
100
+ const y2 = Math.min(aBottom, bBottom);
101
+ return { x1: x, y1, x2: x, y2 };
102
+ }
103
+ // Vertical-adjacent: a is above b, edge is y = aBottom ≈ b.y.
104
+ if (Math.abs(aBottom - b.y) < ADJACENCY_TOLERANCE_PX ||
105
+ Math.abs(bBottom - a.y) < ADJACENCY_TOLERANCE_PX) {
106
+ const y = Math.abs(aBottom - b.y) < ADJACENCY_TOLERANCE_PX ? aBottom : a.y;
107
+ const x1 = Math.max(a.x, b.x);
108
+ const x2 = Math.min(aRight, bRight);
109
+ return { x1, y1: y, x2, y2: y };
110
+ }
111
+ // Non-touching: connect centers.
112
+ return {
113
+ x1: a.x + a.width / 2,
114
+ y1: a.y + a.height / 2,
115
+ x2: b.x + b.width / 2,
116
+ y2: b.y + b.height / 2,
117
+ };
118
+ }
119
+ /**
120
+ * @public
121
+ */
122
+ export function DielinePreview({ panelMetadata, foldConfig, templateId, sizePx = DEFAULT_SIZE_PX, activePanelId, }) {
123
+ const headerLabel = templateId ? `Dieline preview — ${templateId}` : "Dieline preview";
124
+ if (!panelMetadata || panelMetadata.panels.length === 0) {
125
+ return (_jsxs("section", { "data-testid": "dieline-preview", "aria-label": "Dieline preview", style: { padding: "0.5rem" }, children: [_jsx("header", { style: { fontSize: "0.75rem", color: "#666", marginBottom: "0.5rem" }, children: headerLabel }), _jsx("div", { "data-testid": "dieline-preview-empty", style: {
126
+ width: sizePx,
127
+ height: sizePx,
128
+ display: "flex",
129
+ alignItems: "center",
130
+ justifyContent: "center",
131
+ border: "1px dashed #ccc",
132
+ borderRadius: 4,
133
+ color: "#888",
134
+ fontSize: "0.75rem",
135
+ textAlign: "center",
136
+ padding: "0.5rem",
137
+ boxSizing: "border-box",
138
+ }, children: "No dieline loaded" })] }));
139
+ }
140
+ const layout = computeDielinePreviewLayout(panelMetadata, foldConfig, sizePx);
141
+ return (_jsxs("section", { "data-testid": "dieline-preview", "aria-label": "Dieline preview", style: { padding: "0.5rem" }, children: [_jsx("header", { style: { fontSize: "0.75rem", color: "#666", marginBottom: "0.5rem" }, children: headerLabel }), _jsxs("svg", { "data-testid": "dieline-preview-svg", width: sizePx, height: sizePx, viewBox: `0 0 ${sizePx} ${sizePx}`, role: "img", "aria-label": `Dieline thumbnail with ${layout.panels.length} panel${layout.panels.length === 1 ? "" : "s"}`, style: { border: "1px solid #ddd", background: "#fafafa", borderRadius: 4 }, children: [layout.panels.map((p) => {
142
+ const isActive = p.id === activePanelId;
143
+ return (_jsx("rect", { "data-testid": `dieline-preview-panel-${p.id}`, x: p.x, y: p.y, width: p.width, height: p.height, fill: isActive ? "#e0ecff" : "#fff", stroke: isActive ? "#2563eb" : "#222", strokeWidth: isActive ? 1.5 : 1 }, p.id));
144
+ }), layout.hinges.map((h) => (_jsx("line", { "data-testid": `dieline-preview-hinge-${h.id}`, x1: h.x1, y1: h.y1, x2: h.x2, y2: h.y2, stroke: h.direction === "mountain" ? "#2563eb" : "#dc2626", strokeWidth: 1.5, strokeDasharray: h.direction === "valley" ? "3 2" : undefined }, h.id)))] })] }));
145
+ }
146
+ //# sourceMappingURL=DielinePreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DielinePreview.js","sourceRoot":"","sources":["../../src/components/DielinePreview.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type EditorMode } from "../hooks/useEditorMode";
2
- import { type EditorConfig } from "../lib/editor-config";
2
+ import { type Page } from "../lib/dieline-template";
3
+ import { type EditorConfig, type PaletteId } from "../lib/editor-config";
3
4
  import { type CanvasObj } from "./EditorCanvas";
4
5
  import { type TopBarProps } from "./TopBar";
5
6
  type Phase = "upload" | "checking" | "preflight" | "editor";
@@ -16,22 +17,55 @@ export type EditorAppProps = {
16
17
  demo?: boolean;
17
18
  /** Starting phase. Set `"editor"` to skip the upload step. */
18
19
  initialPhase?: Phase;
19
- /** Seed objects for the canvas — typically from `templateToInitialState`. */
20
+ /** Seed objects for the canvas — typically from `templateToInitialState`.
21
+ * Single-page convenience; for multi-page documents pass `initialPages`. */
20
22
  initialObjects?: CanvasObj[];
21
- /** Seed page size for the canvas — typically from `templateToInitialState`. */
23
+ /** Seed page size for the canvas — typically from `templateToInitialState`.
24
+ * Single-page convenience; for multi-page documents pass `initialPages`. */
22
25
  initialPageSize?: {
23
26
  width: number;
24
27
  height: number;
25
28
  };
29
+ /**
30
+ * Multi-page seed. Each entry is a {@link Page} with its own
31
+ * `objects`, `pageSize`, and `bleedMm`. Takes precedence over the
32
+ * single-page `initialObjects` / `initialPageSize` props when supplied.
33
+ *
34
+ * A `PageNavigator` strip renders above the canvas on desktop and a
35
+ * "Pages" section appears in the mobile drawer; users can switch
36
+ * between pages, add (duplicate) pages, and delete pages. Per-page
37
+ * state (objects, pageSize, bleedMm) is preserved across switches.
38
+ * Each page has its own undo history.
39
+ *
40
+ * Pair with `templatesToPages` / `templateSetToPages` helpers to seed
41
+ * known multi-page documents (e.g. carton front + back).
42
+ */
43
+ initialPages?: Page[];
26
44
  /** Initial mode preference. `"auto"` resolves by viewport. */
27
45
  preferMode?: EditorMode | "auto";
28
46
  /** Per-instance flag overrides. Merged into mode + global defaults. */
29
47
  config?: Partial<EditorConfig>;
30
- /** Bleed margin in millimetres. Defaults to {@link DEFAULT_BLEED_MM} (0.125 in). */
48
+ /** Bleed margin in millimetres. Defaults to {@link DEFAULT_BLEED_MM} (0.125 in).
49
+ * Ignored when `initialPages` is supplied (each page carries its own bleed). */
31
50
  bleedMm?: number;
32
51
  /** Host-supplied top bar configuration (logo, extra CTAs, etc.). */
33
52
  topBar?: Partial<TopBarProps>;
53
+ /**
54
+ * Initial palette-visibility map. Each {@link PaletteId} entry is
55
+ * `true` (visible) or `false` (hidden); absent ids default to
56
+ * visible. Merged into `config.panelVisibility` once at mount; the
57
+ * host's `onPanelVisibilityChange` callback receives the merged
58
+ * next-state on every toggle.
59
+ */
60
+ initialPanelVisibility?: Partial<Record<PaletteId, boolean>>;
61
+ /**
62
+ * Fires whenever the user toggles a palette via `PaletteManager`
63
+ * (desktop) or the mobile drawer's "Panels" section. The host is
64
+ * responsible for persisting (e.g. localStorage keyed by user +
65
+ * document) — the editor doesn't own this state.
66
+ */
67
+ onPanelVisibilityChange?: (next: Partial<Record<PaletteId, boolean>>) => void;
34
68
  };
35
- export declare function EditorApp({ demo, initialPhase, initialObjects, initialPageSize, preferMode, config: configOverrides, bleedMm, topBar, }: EditorAppProps): import("react/jsx-runtime").JSX.Element;
69
+ export declare function EditorApp({ demo, initialPhase, initialObjects, initialPageSize, initialPages, preferMode, config: configOverrides, bleedMm, topBar, initialPanelVisibility, onPanelVisibilityChange, }: EditorAppProps): import("react/jsx-runtime").JSX.Element;
36
70
  export {};
37
71
  //# sourceMappingURL=EditorApp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorApp.d.ts","sourceRoot":"","sources":["../../src/components/EditorApp.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,wBAAwB,CAAC;AAIxE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AAG9D,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,KAAK,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;6DACyD;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8DAA8D;IAC9D,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B,+EAA+E;IAC/E,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,8DAA8D;IAC9D,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACjC,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,IAAY,EACZ,YAAuB,EACvB,cAAc,EACd,eAAe,EACf,UAAmB,EACnB,MAAM,EAAE,eAAe,EACvB,OAA0B,EAC1B,MAAM,GACP,EAAE,cAAc,2CAmJhB"}
1
+ {"version":3,"file":"EditorApp.d.ts","sourceRoot":"","sources":["../../src/components/EditorApp.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,wBAAwB,CAAC;AAIxE,OAAO,EAAiB,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAGf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AAI9D,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,KAAK,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;6DACyD;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8DAA8D;IAC9D,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B;iFAC6E;IAC7E,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACjC,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B;qFACiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;CAC/E,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,IAAY,EACZ,YAAuB,EACvB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,UAAmB,EACnB,MAAM,EAAE,eAAe,EACvB,OAA0B,EAC1B,MAAM,EACN,sBAAsB,EACtB,uBAAuB,GACxB,EAAE,cAAc,2CAmShB"}
@@ -6,20 +6,94 @@ import { useEditorMode } from "../hooks/useEditorMode";
6
6
  import { useIsMobile } from "../hooks/useIsMobile";
7
7
  import { usePreflight } from "../hooks/usePreflight";
8
8
  import { DEFAULT_BLEED_MM } from "../lib/bleed";
9
- import { resolveConfig } from "../lib/editor-config";
9
+ import { dielineToPage } from "../lib/dieline-template";
10
+ import { isPanelVisible, resolveConfig, } from "../lib/editor-config";
10
11
  import { EditorCanvas } from "./EditorCanvas";
11
12
  import { FileDropZone } from "./FileDropZone";
13
+ import { PageNavigator } from "./PageNavigator";
12
14
  import { PreflightPanel } from "./PreflightPanel";
13
15
  import { TopBar } from "./TopBar";
14
- export function EditorApp({ demo = false, initialPhase = "upload", initialObjects, initialPageSize, preferMode = "auto", config: configOverrides, bleedMm = DEFAULT_BLEED_MM, topBar, }) {
16
+ export function EditorApp({ demo = false, initialPhase = "upload", initialObjects, initialPageSize, initialPages, preferMode = "auto", config: configOverrides, bleedMm = DEFAULT_BLEED_MM, topBar, initialPanelVisibility, onPanelVisibilityChange, }) {
17
+ // Multi-page seed wins over the single-page convenience props. We
18
+ // wrap legacy `initialObjects` / `initialPageSize` into a single-page
19
+ // array so the rest of EditorApp can treat everything as multi-page.
20
+ const seededPages = (() => {
21
+ if (initialPages && initialPages.length > 0)
22
+ return initialPages;
23
+ return [
24
+ {
25
+ id: "page-1",
26
+ objects: initialObjects ?? [],
27
+ pageSize: initialPageSize ?? { width: 595, height: 842 },
28
+ bleedMm,
29
+ },
30
+ ];
31
+ })();
32
+ const [pages, setPages] = useState(seededPages);
33
+ const [currentPageIndex, setCurrentPageIndex] = useState(0);
34
+ const clampedPageIndex = Math.min(Math.max(currentPageIndex, 0), pages.length - 1);
35
+ // `pages` is seeded with at least one entry and `handleDeletePage`
36
+ // refuses to drop the last one, so `pages[clampedPageIndex]` is always
37
+ // defined. The non-null assertion makes the invariant explicit; a
38
+ // misuse would crash here instead of silently swapping back to the
39
+ // seeded default.
40
+ // biome-ignore lint/style/noNonNullAssertion: pages is non-empty by construction
41
+ const activePage = pages[clampedPageIndex];
42
+ function updateActivePage(patch) {
43
+ setPages((prev) => prev.map((p, i) => (i === clampedPageIndex ? { ...p, ...patch } : p)));
44
+ }
45
+ function handleAddPage() {
46
+ // Duplicate the active page; user can edit / pick a new dieline from there.
47
+ setPages((prev) => {
48
+ const src = prev[clampedPageIndex];
49
+ if (!src)
50
+ return prev;
51
+ const dup = {
52
+ ...src,
53
+ id: `page-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`,
54
+ objects: src.objects.map((o) => ({ ...o })),
55
+ };
56
+ const next = [...prev];
57
+ next.splice(clampedPageIndex + 1, 0, dup);
58
+ return next;
59
+ });
60
+ setCurrentPageIndex((i) => i + 1);
61
+ }
62
+ function handleDeletePage() {
63
+ // Deleting the current page should keep the user on the *next* page
64
+ // (now at the same index in the shorter array). Only fall back to the
65
+ // previous page when the deleted one was the last in the list.
66
+ if (pages.length <= 1)
67
+ return;
68
+ const deletedIdx = clampedPageIndex;
69
+ const nextPages = pages.filter((_, i) => i !== deletedIdx);
70
+ setPages(nextPages);
71
+ setCurrentPageIndex(Math.min(deletedIdx, nextPages.length - 1));
72
+ }
15
73
  const { mode, setMode } = useEditorMode(preferMode);
16
74
  const [phase, setPhase] = useState(initialPhase);
17
75
  const [file, setFile] = useState(null);
18
76
  const [report, setReport] = useState(null);
19
77
  const { state: preflightState, run: runPreflight } = usePreflight();
20
78
  const [menuOpen, setMenuOpen] = useState(false);
79
+ const [panelVisibility, setPanelVisibility] = useState(initialPanelVisibility ?? {});
21
80
  const isMobile = useIsMobile();
22
- const config = resolveConfig(mode, configOverrides);
81
+ // Per-instance overrides merge config.panelVisibility (if set) on
82
+ // top of the editor's mutable panelVisibility state. The mutable
83
+ // state wins so user toggles outlive a config-override prop change.
84
+ const baseConfig = resolveConfig(mode, configOverrides);
85
+ const config = {
86
+ ...baseConfig,
87
+ panelVisibility: { ...baseConfig.panelVisibility, ...panelVisibility },
88
+ };
89
+ function updatePanelVisibility(next) {
90
+ setPanelVisibility(next);
91
+ onPanelVisibilityChange?.(next);
92
+ }
93
+ // Silence "unused" — kept for the upcoming PaletteManager + mobile
94
+ // "Panels" section wire-up; safe to expose now so hosts can preload
95
+ // visibility from a callback round-trip without later refactors.
96
+ void updatePanelVisibility;
23
97
  async function handleFile(f) {
24
98
  setFile(f);
25
99
  setPhase("checking");
@@ -32,6 +106,17 @@ export function EditorApp({ demo = false, initialPhase = "upload", initialObject
32
106
  setPhase("upload");
33
107
  }
34
108
  }
109
+ function handleDieline(dieline) {
110
+ // S2 ingress: a parsed CF2 / DDES / ARD dieline skips the PDF
111
+ // preflight phase (there's nothing to preflight — a dieline file
112
+ // has no rasters, fonts, or color spaces to validate). Seed the
113
+ // pages array directly from `dielineToPage` and jump to the
114
+ // editor.
115
+ const seeded = dielineToPage(dieline, bleedMm);
116
+ setPages([seeded]);
117
+ setCurrentPageIndex(0);
118
+ setPhase("editor");
119
+ }
35
120
  function handleSendToLint() {
36
121
  alert("Job queued for lint node analysis.");
37
122
  }
@@ -47,13 +132,33 @@ export function EditorApp({ demo = false, initialPhase = "upload", initialObject
47
132
  flexDirection: "column",
48
133
  alignItems: "center",
49
134
  gap: "1.25rem",
50
- }, children: [_jsx(FileDropZone, { onFile: handleFile }), !demo && (_jsx("a", { href: "/demo", target: "_blank", rel: "noopener noreferrer", style: {
135
+ }, children: [_jsx(FileDropZone, { onFile: handleFile, onDieline: handleDieline }), !demo && (_jsx("a", { href: "/demo", target: "_blank", rel: "noopener noreferrer", style: {
51
136
  fontSize: "0.85rem",
52
137
  color: "#fc5102",
53
138
  fontWeight: 600,
54
139
  textDecoration: "none",
55
140
  opacity: 0.85,
56
- }, children: "Try the demo editor (no file needed) \u2192" }))] })), phase === "checking" && (_jsx("p", { style: { color: "#995b30" }, children: "Running preflight checks\u2026" })), phase === "preflight" && report && config.enable_preflight_banner && (_jsx(PreflightPanel, { report: report, onProceed: () => setPhase("editor"), onSendToLint: handleSendToLint })), phase === "preflight" && report && !config.enable_preflight_banner && (_jsx(AutoAdvance, { onContinue: () => setPhase("editor") })), phase === "editor" && (_jsx(EditorCanvas, { file: file, report: report, demo: demo, mode: mode, onModeChange: setMode, config: config, bleedMm: bleedMm, isMobile: isMobile, menuOpen: menuOpen, onMenuOpenChange: setMenuOpen, ...(initialObjects ? { initialObjects } : {}), ...(initialPageSize ? { initialPageSize } : {}) }))] }), demo && phase !== "editor" && (_jsx("footer", { style: {
141
+ }, children: "Try the demo editor (no file needed) \u2192" }))] })), phase === "checking" && (_jsx("p", { style: { color: "#995b30" }, children: "Running preflight checks\u2026" })), phase === "preflight" &&
142
+ report &&
143
+ config.enable_preflight_banner &&
144
+ isPanelVisible(config, "preflight") && (_jsx(PreflightPanel, { report: report, onProceed: () => setPhase("editor"), onSendToLint: handleSendToLint })), phase === "preflight" &&
145
+ report &&
146
+ (!config.enable_preflight_banner || !isPanelVisible(config, "preflight")) && (_jsx(AutoAdvance, { onContinue: () => setPhase("editor") })), phase === "editor" && activePage && (_jsxs("div", { style: {
147
+ display: "flex",
148
+ flexDirection: "column",
149
+ width: "100%",
150
+ height: "100%",
151
+ }, children: [pages.length > 1 && !isMobile && (_jsx(PageNavigator, { pages: pages, currentPageIndex: currentPageIndex, onSelect: setCurrentPageIndex, onAddPage: handleAddPage, ...(pages.length > 1 ? { onDeletePage: handleDeletePage } : {}), variant: "strip" })), _jsx(EditorCanvas, { file: file, report: report, demo: demo, mode: mode, onModeChange: setMode, config: config, bleedMm: activePage.bleedMm, isMobile: isMobile, menuOpen: menuOpen, onMenuOpenChange: setMenuOpen, initialObjects: activePage.objects, initialPageSize: activePage.pageSize, ...(activePage.separations !== undefined
152
+ ? { initialSeparations: activePage.separations }
153
+ : {}), onObjectsChange: (objects) => updateActivePage({ objects }), onPageSizeChange: (pageSize) => updateActivePage({ pageSize }), onBleedMmChange: (bleedMmValue) => updateActivePage({ bleedMm: bleedMmValue }), onSeparationsChange: (separations) => updateActivePage({ separations }), prependDrawerSections: pages.length > 1 || isMobile
154
+ ? [
155
+ {
156
+ title: "Pages",
157
+ defaultOpen: true,
158
+ content: (_jsx(PageNavigator, { pages: pages, currentPageIndex: currentPageIndex, onSelect: setCurrentPageIndex, onAddPage: handleAddPage, ...(pages.length > 1 ? { onDeletePage: handleDeletePage } : {}), variant: "stack" })),
159
+ },
160
+ ]
161
+ : [] }, activePage.id)] }))] }), demo && phase !== "editor" && (_jsx("footer", { style: {
57
162
  background: "#1a0f08",
58
163
  borderTop: "1px solid #3d1a00",
59
164
  padding: "0.5rem 1.25rem",
@@ -1 +1 @@
1
- {"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/components/EditorApp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/components/EditorApp.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,22 @@
1
1
  import type { EditorConfig } from "../lib/editor-config";
2
2
  import type { PreflightReport } from "../lib/preflight/types";
3
- type ObjType = "rect" | "ellipse" | "text" | "image";
3
+ import { type EditorSeparation } from "../lib/separations-registry";
4
+ type ObjType = "rect" | "ellipse" | "text" | "image" | "path";
5
+ /**
6
+ * One renderable object on the editor canvas.
7
+ *
8
+ * Intentionally a flat, structural shape (not the richer
9
+ * `@artworkpdf/document-model` `ArtworkObject`) — the published
10
+ * package stays consumable by hosts that don't pull in the
11
+ * document-model dep. The structural fields here mirror the
12
+ * `JobSubmitRequest` payload sent to `apps/service`.
13
+ *
14
+ * `name` falls back to `type` when absent; `locked` makes the object
15
+ * non-interactive (used for the dieline trim rect so users can't
16
+ * drag the trim out of position).
17
+ *
18
+ * @public
19
+ */
4
20
  export type CanvasObj = {
5
21
  id: string;
6
22
  type: ObjType;
@@ -42,7 +58,40 @@ type Props = {
42
58
  isMobile?: boolean;
43
59
  menuOpen?: boolean;
44
60
  onMenuOpenChange?: (open: boolean) => void;
61
+ /** Fired whenever the canvas's objects change (drawing, drag, transform,
62
+ * delete, undo/redo, applyDieline). Used by the multi-page wrapper to
63
+ * keep the parent's `pages` array in sync. */
64
+ onObjectsChange?: (objects: CanvasObj[]) => void;
65
+ /** Fired whenever the page size changes (template apply, bleed override,
66
+ * uploaded-PDF parse). */
67
+ onPageSizeChange?: (pageSize: {
68
+ width: number;
69
+ height: number;
70
+ }) => void;
71
+ /** Fired whenever the bleed value changes (drawer input or URL prop sync). */
72
+ onBleedMmChange?: (bleedMm: number) => void;
73
+ /** AI4: initial spots registered on this page. Threads through to
74
+ * compile-pdf's `separationsOverride` at export time.
75
+ *
76
+ * **Seed-only semantic:** like `initialObjects` and
77
+ * `initialPageSize`, this prop is read once at mount. EditorApp's
78
+ * multi-page wrapper re-mounts EditorCanvas on each page switch
79
+ * (via `key={activePage.id}`), so the per-page seed flows
80
+ * naturally. Hosts that mutate this prop on the live component
81
+ * without changing the `key` will not see the change reflected. */
82
+ initialSeparations?: EditorSeparation[];
83
+ /** Fired whenever the spot registry changes (register/unregister via
84
+ * the fill/stroke pickers' "as spot" affordance). */
85
+ onSeparationsChange?: (separations: EditorSeparation[]) => void;
86
+ /** Extra collapsible sections added to the *top* of the mobile drawer
87
+ * (used by `EditorApp` to insert the `PageNavigator` stack when the
88
+ * document is multi-page). */
89
+ prependDrawerSections?: Array<{
90
+ title: string;
91
+ content: import("react").ReactNode;
92
+ defaultOpen?: boolean;
93
+ }>;
45
94
  };
46
- export declare function EditorCanvas({ file, report, demo, initialObjects, initialPageSize, mode, onModeChange, config, bleedMm: bleedMmProp, isMobile, menuOpen, onMenuOpenChange, }: Props): import("react/jsx-runtime").JSX.Element;
95
+ export declare function EditorCanvas({ file, report, demo, initialObjects, initialPageSize, mode, onModeChange, config, bleedMm: bleedMmProp, isMobile, menuOpen, onMenuOpenChange, onObjectsChange, onPageSizeChange, onBleedMmChange, initialSeparations, onSeparationsChange, prependDrawerSections, }: Props): import("react/jsx-runtime").JSX.Element;
47
96
  export {};
48
97
  //# sourceMappingURL=EditorCanvas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCanvas.d.ts","sourceRoot":"","sources":["../../src/components/EditorCanvas.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAgC9D,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;iEAC6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;oEAEgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAMF,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C,CAAC;AA2IF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACN,IAAY,EACZ,cAAc,EACd,eAAe,EACf,IAAc,EACd,YAAY,EACZ,MAAM,EACN,OAAO,EAAE,WAA8B,EACvC,QAAgB,EAChB,QAAgB,EAChB,gBAAgB,GACjB,EAAE,KAAK,2CAkoCP"}
1
+ {"version":3,"file":"EditorCanvas.d.ts","sourceRoot":"","sources":["../../src/components/EditorCanvas.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,6BAA6B,CAAC;AA0CrC,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;iEAC6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;oEAEgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAMF,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C;;mDAE+C;IAC/C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IACjD;+BAC2B;IAC3B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzE,8EAA8E;IAC9E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;;;;;;;wEAQoE;IACpE,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;0DACsD;IACtD,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAChE;;mCAE+B;IAC/B,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,OAAO,OAAO,EAAE,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC,CAAC;CACJ,CAAC;AAkKF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACN,IAAY,EACZ,cAAc,EACd,eAAe,EACf,IAAc,EACd,YAAY,EACZ,MAAM,EACN,OAAO,EAAE,WAA8B,EACvC,QAAgB,EAChB,QAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,qBAA0B,GAC3B,EAAE,KAAK,2CAkuCP"}