@printwithsynergy/artwork-pdf-editor 0.2.0 → 0.4.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 (244) hide show
  1. package/LICENSE +62 -0
  2. package/dist/components/AccessibilityHintsPanel.d.ts +142 -0
  3. package/dist/components/AccessibilityHintsPanel.d.ts.map +1 -0
  4. package/dist/components/AccessibilityHintsPanel.js +158 -0
  5. package/dist/components/AccessibilityHintsPanel.js.map +1 -0
  6. package/dist/components/AnnotationOverlay.d.ts +142 -0
  7. package/dist/components/AnnotationOverlay.d.ts.map +1 -0
  8. package/dist/components/AnnotationOverlay.js +141 -0
  9. package/dist/components/AnnotationOverlay.js.map +1 -0
  10. package/dist/components/AnnotationsSidebar.d.ts +98 -0
  11. package/dist/components/AnnotationsSidebar.d.ts.map +1 -0
  12. package/dist/components/AnnotationsSidebar.js +100 -0
  13. package/dist/components/AnnotationsSidebar.js.map +1 -0
  14. package/dist/components/BarcodeGeneratorPanel.d.ts +58 -0
  15. package/dist/components/BarcodeGeneratorPanel.d.ts.map +1 -0
  16. package/dist/components/BarcodeGeneratorPanel.js +91 -0
  17. package/dist/components/BarcodeGeneratorPanel.js.map +1 -0
  18. package/dist/components/BraillePanel.d.ts +99 -0
  19. package/dist/components/BraillePanel.d.ts.map +1 -0
  20. package/dist/components/BraillePanel.js +221 -0
  21. package/dist/components/BraillePanel.js.map +1 -0
  22. package/dist/components/BrandAssetsPanel.d.ts +130 -0
  23. package/dist/components/BrandAssetsPanel.d.ts.map +1 -0
  24. package/dist/components/BrandAssetsPanel.js +125 -0
  25. package/dist/components/BrandAssetsPanel.js.map +1 -0
  26. package/dist/components/BrandConsistencyPanel.d.ts +140 -0
  27. package/dist/components/BrandConsistencyPanel.d.ts.map +1 -0
  28. package/dist/components/BrandConsistencyPanel.js +158 -0
  29. package/dist/components/BrandConsistencyPanel.js.map +1 -0
  30. package/dist/components/ComplianceFindingsPanel.d.ts +62 -0
  31. package/dist/components/ComplianceFindingsPanel.d.ts.map +1 -0
  32. package/dist/components/ComplianceFindingsPanel.js +118 -0
  33. package/dist/components/ComplianceFindingsPanel.js.map +1 -0
  34. package/dist/components/DesignSuggestionsPanel.d.ts +148 -0
  35. package/dist/components/DesignSuggestionsPanel.d.ts.map +1 -0
  36. package/dist/components/DesignSuggestionsPanel.js +154 -0
  37. package/dist/components/DesignSuggestionsPanel.js.map +1 -0
  38. package/dist/components/DielineParametersPanel.d.ts +62 -0
  39. package/dist/components/DielineParametersPanel.d.ts.map +1 -0
  40. package/dist/components/DielineParametersPanel.js +170 -0
  41. package/dist/components/DielineParametersPanel.js.map +1 -0
  42. package/dist/components/DielinePreview.d.ts +150 -0
  43. package/dist/components/DielinePreview.d.ts.map +1 -0
  44. package/dist/components/DielinePreview.js +146 -0
  45. package/dist/components/DielinePreview.js.map +1 -0
  46. package/dist/components/EditorApp.d.ts +18 -3
  47. package/dist/components/EditorApp.d.ts.map +1 -1
  48. package/dist/components/EditorApp.js +42 -7
  49. package/dist/components/EditorApp.js.map +1 -1
  50. package/dist/components/EditorCanvas.d.ts +31 -2
  51. package/dist/components/EditorCanvas.d.ts.map +1 -1
  52. package/dist/components/EditorCanvas.js +97 -16
  53. package/dist/components/EditorCanvas.js.map +1 -1
  54. package/dist/components/EmailNotifyPanel.d.ts +165 -0
  55. package/dist/components/EmailNotifyPanel.d.ts.map +1 -0
  56. package/dist/components/EmailNotifyPanel.js +211 -0
  57. package/dist/components/EmailNotifyPanel.js.map +1 -0
  58. package/dist/components/FileDropZone.d.ts +9 -1
  59. package/dist/components/FileDropZone.d.ts.map +1 -1
  60. package/dist/components/FileDropZone.js +53 -5
  61. package/dist/components/FileDropZone.js.map +1 -1
  62. package/dist/components/FoldEditorPanel.d.ts +68 -0
  63. package/dist/components/FoldEditorPanel.d.ts.map +1 -0
  64. package/dist/components/FoldEditorPanel.js +65 -0
  65. package/dist/components/FoldEditorPanel.js.map +1 -0
  66. package/dist/components/FoldPreviewOverlay.d.ts +48 -0
  67. package/dist/components/FoldPreviewOverlay.d.ts.map +1 -0
  68. package/dist/components/FoldPreviewOverlay.js +182 -0
  69. package/dist/components/FoldPreviewOverlay.js.map +1 -0
  70. package/dist/components/Gs1DigitalLinkPanel.d.ts +103 -0
  71. package/dist/components/Gs1DigitalLinkPanel.d.ts.map +1 -0
  72. package/dist/components/Gs1DigitalLinkPanel.js +199 -0
  73. package/dist/components/Gs1DigitalLinkPanel.js.map +1 -0
  74. package/dist/components/HistoryPanel.d.ts +39 -0
  75. package/dist/components/HistoryPanel.d.ts.map +1 -0
  76. package/dist/components/HistoryPanel.js +72 -0
  77. package/dist/components/HistoryPanel.js.map +1 -0
  78. package/dist/components/IccSoftProofOverlay.d.ts +67 -0
  79. package/dist/components/IccSoftProofOverlay.d.ts.map +1 -0
  80. package/dist/components/IccSoftProofOverlay.js +119 -0
  81. package/dist/components/IccSoftProofOverlay.js.map +1 -0
  82. package/dist/components/ImposePanel.d.ts +71 -0
  83. package/dist/components/ImposePanel.d.ts.map +1 -0
  84. package/dist/components/ImposePanel.js +127 -0
  85. package/dist/components/ImposePanel.js.map +1 -0
  86. package/dist/components/InksPanel.d.ts +61 -0
  87. package/dist/components/InksPanel.d.ts.map +1 -0
  88. package/dist/components/InksPanel.js +84 -0
  89. package/dist/components/InksPanel.js.map +1 -0
  90. package/dist/components/JobSetupPanel.d.ts +118 -0
  91. package/dist/components/JobSetupPanel.d.ts.map +1 -0
  92. package/dist/components/JobSetupPanel.js +169 -0
  93. package/dist/components/JobSetupPanel.js.map +1 -0
  94. package/dist/components/LayersPanel.d.ts.map +1 -1
  95. package/dist/components/LayersPanel.js +1 -0
  96. package/dist/components/LayersPanel.js.map +1 -1
  97. package/dist/components/MarkLibraryPanel.d.ts +131 -0
  98. package/dist/components/MarkLibraryPanel.d.ts.map +1 -0
  99. package/dist/components/MarkLibraryPanel.js +184 -0
  100. package/dist/components/MarkLibraryPanel.js.map +1 -0
  101. package/dist/components/MisEstimateButton.d.ts +73 -0
  102. package/dist/components/MisEstimateButton.d.ts.map +1 -0
  103. package/dist/components/MisEstimateButton.js +57 -0
  104. package/dist/components/MisEstimateButton.js.map +1 -0
  105. package/dist/components/NutritionPanel.d.ts +118 -0
  106. package/dist/components/NutritionPanel.d.ts.map +1 -0
  107. package/dist/components/NutritionPanel.js +169 -0
  108. package/dist/components/NutritionPanel.js.map +1 -0
  109. package/dist/components/PageNavigator.d.ts.map +1 -1
  110. package/dist/components/PageNavigator.js +6 -1
  111. package/dist/components/PageNavigator.js.map +1 -1
  112. package/dist/components/PaletteManager.d.ts +32 -0
  113. package/dist/components/PaletteManager.d.ts.map +1 -0
  114. package/dist/components/PaletteManager.js +89 -0
  115. package/dist/components/PaletteManager.js.map +1 -0
  116. package/dist/components/PaletteToSpotPanel.d.ts +122 -0
  117. package/dist/components/PaletteToSpotPanel.d.ts.map +1 -0
  118. package/dist/components/PaletteToSpotPanel.js +160 -0
  119. package/dist/components/PaletteToSpotPanel.js.map +1 -0
  120. package/dist/components/PreflightAutoFixPanel.d.ts +110 -0
  121. package/dist/components/PreflightAutoFixPanel.d.ts.map +1 -0
  122. package/dist/components/PreflightAutoFixPanel.js +119 -0
  123. package/dist/components/PreflightAutoFixPanel.js.map +1 -0
  124. package/dist/components/PreflightDiffPanel.d.ts +127 -0
  125. package/dist/components/PreflightDiffPanel.d.ts.map +1 -0
  126. package/dist/components/PreflightDiffPanel.js +0 -0
  127. package/dist/components/PreflightDiffPanel.js.map +1 -0
  128. package/dist/components/ProcessRulesPanel.d.ts +81 -0
  129. package/dist/components/ProcessRulesPanel.d.ts.map +1 -0
  130. package/dist/components/ProcessRulesPanel.js +143 -0
  131. package/dist/components/ProcessRulesPanel.js.map +1 -0
  132. package/dist/components/SlackNotifyPanel.d.ts +139 -0
  133. package/dist/components/SlackNotifyPanel.d.ts.map +1 -0
  134. package/dist/components/SlackNotifyPanel.js +133 -0
  135. package/dist/components/SlackNotifyPanel.js.map +1 -0
  136. package/dist/components/SmartSpotMatchPanel.d.ts +143 -0
  137. package/dist/components/SmartSpotMatchPanel.d.ts.map +1 -0
  138. package/dist/components/SmartSpotMatchPanel.js +159 -0
  139. package/dist/components/SmartSpotMatchPanel.js.map +1 -0
  140. package/dist/components/StreamingRenderProgress.d.ts +60 -0
  141. package/dist/components/StreamingRenderProgress.d.ts.map +1 -0
  142. package/dist/components/StreamingRenderProgress.js +99 -0
  143. package/dist/components/StreamingRenderProgress.js.map +1 -0
  144. package/dist/components/SwatchesPicker.d.ts +83 -0
  145. package/dist/components/SwatchesPicker.d.ts.map +1 -0
  146. package/dist/components/SwatchesPicker.js +151 -0
  147. package/dist/components/SwatchesPicker.js.map +1 -0
  148. package/dist/components/TacOverlay.d.ts +47 -0
  149. package/dist/components/TacOverlay.d.ts.map +1 -0
  150. package/dist/components/TacOverlay.js +116 -0
  151. package/dist/components/TacOverlay.js.map +1 -0
  152. package/dist/components/TrapEditorPanel.d.ts +52 -0
  153. package/dist/components/TrapEditorPanel.d.ts.map +1 -0
  154. package/dist/components/TrapEditorPanel.js +64 -0
  155. package/dist/components/TrapEditorPanel.js.map +1 -0
  156. package/dist/components/TrapPreviewOverlay.d.ts +64 -0
  157. package/dist/components/TrapPreviewOverlay.d.ts.map +1 -0
  158. package/dist/components/TrapPreviewOverlay.js +120 -0
  159. package/dist/components/TrapPreviewOverlay.js.map +1 -0
  160. package/dist/components/VariantMatrixPanel.d.ts +61 -0
  161. package/dist/components/VariantMatrixPanel.d.ts.map +1 -0
  162. package/dist/components/VariantMatrixPanel.js +97 -0
  163. package/dist/components/VariantMatrixPanel.js.map +1 -0
  164. package/dist/components/VariantMatrixVersionPanel.d.ts +122 -0
  165. package/dist/components/VariantMatrixVersionPanel.d.ts.map +1 -0
  166. package/dist/components/VariantMatrixVersionPanel.js +162 -0
  167. package/dist/components/VariantMatrixVersionPanel.js.map +1 -0
  168. package/dist/components/WebhookNotifyPanel.d.ts +160 -0
  169. package/dist/components/WebhookNotifyPanel.d.ts.map +1 -0
  170. package/dist/components/WebhookNotifyPanel.js +100 -0
  171. package/dist/components/WebhookNotifyPanel.js.map +1 -0
  172. package/dist/components/WhiteUnderbasePanel.d.ts +107 -0
  173. package/dist/components/WhiteUnderbasePanel.d.ts.map +1 -0
  174. package/dist/components/WhiteUnderbasePanel.js +104 -0
  175. package/dist/components/WhiteUnderbasePanel.js.map +1 -0
  176. package/dist/hooks/useEditorMode.d.ts +25 -5
  177. package/dist/hooks/useEditorMode.d.ts.map +1 -1
  178. package/dist/hooks/useEditorMode.js +18 -5
  179. package/dist/hooks/useEditorMode.js.map +1 -1
  180. package/dist/index.d.ts +51 -2
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +51 -2
  183. package/dist/index.js.map +1 -1
  184. package/dist/lens/preflight-findings.d.ts.map +1 -1
  185. package/dist/lens/preflight-findings.js.map +1 -1
  186. package/dist/lib/barcode-scan.d.ts +154 -0
  187. package/dist/lib/barcode-scan.d.ts.map +1 -0
  188. package/dist/lib/barcode-scan.js +152 -0
  189. package/dist/lib/barcode-scan.js.map +1 -0
  190. package/dist/lib/color-math.d.ts +76 -0
  191. package/dist/lib/color-math.d.ts.map +1 -0
  192. package/dist/lib/color-math.js +96 -0
  193. package/dist/lib/color-math.js.map +1 -0
  194. package/dist/lib/dieline-template.d.ts +87 -0
  195. package/dist/lib/dieline-template.d.ts.map +1 -1
  196. package/dist/lib/dieline-template.js +163 -0
  197. package/dist/lib/dieline-template.js.map +1 -1
  198. package/dist/lib/editor-config.d.ts +390 -0
  199. package/dist/lib/editor-config.d.ts.map +1 -1
  200. package/dist/lib/editor-config.js +90 -0
  201. package/dist/lib/editor-config.js.map +1 -1
  202. package/dist/lib/fold-geometry.d.ts +144 -0
  203. package/dist/lib/fold-geometry.d.ts.map +1 -0
  204. package/dist/lib/fold-geometry.js +138 -0
  205. package/dist/lib/fold-geometry.js.map +1 -0
  206. package/dist/lib/merge-tokens.d.ts +81 -0
  207. package/dist/lib/merge-tokens.d.ts.map +1 -0
  208. package/dist/lib/merge-tokens.js +88 -0
  209. package/dist/lib/merge-tokens.js.map +1 -0
  210. package/dist/lib/palette-registry.d.ts +40 -0
  211. package/dist/lib/palette-registry.d.ts.map +1 -0
  212. package/dist/lib/palette-registry.js +50 -0
  213. package/dist/lib/palette-registry.js.map +1 -0
  214. package/dist/lib/panel-anchor.d.ts +101 -0
  215. package/dist/lib/panel-anchor.d.ts.map +1 -0
  216. package/dist/lib/panel-anchor.js +68 -0
  217. package/dist/lib/panel-anchor.js.map +1 -0
  218. package/dist/lib/preflight/checks.d.ts.map +1 -1
  219. package/dist/lib/preflight/checks.js +71 -0
  220. package/dist/lib/preflight/checks.js.map +1 -1
  221. package/dist/lib/preflight/types.d.ts.map +1 -1
  222. package/dist/lib/preflight/types.js +11 -0
  223. package/dist/lib/preflight/types.js.map +1 -1
  224. package/dist/lib/rasterize.d.ts +93 -0
  225. package/dist/lib/rasterize.d.ts.map +1 -0
  226. package/dist/lib/rasterize.js +117 -0
  227. package/dist/lib/rasterize.js.map +1 -0
  228. package/dist/lib/separations-registry.d.ts +99 -0
  229. package/dist/lib/separations-registry.d.ts.map +1 -0
  230. package/dist/lib/separations-registry.js +59 -0
  231. package/dist/lib/separations-registry.js.map +1 -0
  232. package/dist/lib/streaming-render.d.ts +100 -0
  233. package/dist/lib/streaming-render.d.ts.map +1 -0
  234. package/dist/lib/streaming-render.js +132 -0
  235. package/dist/lib/streaming-render.js.map +1 -0
  236. package/dist/lib/unwired.d.ts +29 -0
  237. package/dist/lib/unwired.d.ts.map +1 -0
  238. package/dist/lib/unwired.js +58 -0
  239. package/dist/lib/unwired.js.map +1 -0
  240. package/package.json +20 -11
  241. package/dist/components/SeparationsPanel.d.ts +0 -9
  242. package/dist/components/SeparationsPanel.d.ts.map +0 -1
  243. package/dist/components/SeparationsPanel.js +0 -168
  244. package/dist/components/SeparationsPanel.js.map +0 -1
@@ -1,3 +1,17 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ //
3
+ // Dieline-template bundle + helpers for seeding the editor canvas.
4
+ //
5
+ // The shipped JSON library (`data/dielines.json`) gets loaded eagerly
6
+ // so server components (Next.js RSC, Astro frontmatter) can pick a
7
+ // template and produce initial Page state without touching the
8
+ // browser-only editor bundle.
9
+ //
10
+ // `dielineToPage()` is the parallel ingress for user-supplied CF2 /
11
+ // DDES / ARD files (parsed via `@artworkpdf/dieline-parser`'s
12
+ // `parseCF2` / `parseDDES` / `parseARD`) — each parsed `Dieline`
13
+ // becomes a single-page `Page` seeded with one locked path per
14
+ // `DielinePath`.
1
15
  import library from "../data/dielines.json";
2
16
  const MM_TO_PT = 2.83465;
3
17
  /** Stroke color + display name for the dieline trim rect. The dieline
@@ -6,6 +20,15 @@ const MM_TO_PT = 2.83465;
6
20
  export const DIELINE_STROKE = "#fc5102";
7
21
  export const DIELINE_NAME = "Die Line";
8
22
  const LIBRARY = library;
23
+ /**
24
+ * All bundled dieline templates, in library declaration order.
25
+ *
26
+ * Mirrors the shape of `data/dielines.json`. Hosts that want a
27
+ * filtered or ordered subset should derive from this array rather
28
+ * than reloading the JSON file.
29
+ *
30
+ * @public
31
+ */
9
32
  export const TEMPLATES = LIBRARY.templates;
10
33
  /**
11
34
  * Bundled multi-page template sets (e.g. carton front + back). Empty if
@@ -14,6 +37,13 @@ export const TEMPLATES = LIBRARY.templates;
14
37
  * @public
15
38
  */
16
39
  export const TEMPLATE_SETS = LIBRARY.templateSets ?? [];
40
+ /**
41
+ * Return the library's default template (`isDefault: true`), falling
42
+ * back to the first entry. Throws if the library is empty — that
43
+ * would indicate a packaging defect, not a runtime condition.
44
+ *
45
+ * @public
46
+ */
17
47
  export function getDefaultTemplate() {
18
48
  const flagged = TEMPLATES.find((t) => t.isDefault);
19
49
  if (flagged)
@@ -23,6 +53,12 @@ export function getDefaultTemplate() {
23
53
  throw new Error("dielines.json contains no templates");
24
54
  return first;
25
55
  }
56
+ /**
57
+ * Lookup by template id. Returns `undefined` (not throws) for
58
+ * unknown or missing ids so callers can fall back to a default.
59
+ *
60
+ * @public
61
+ */
26
62
  export function getTemplateById(id) {
27
63
  if (!id)
28
64
  return undefined;
@@ -85,6 +121,22 @@ export function templateToPage(template, bleedMmOverride, name) {
85
121
  export function templatesToPages(entries, bleedMmOverride) {
86
122
  return entries.map(({ template, name }) => templateToPage(template, bleedMmOverride, name));
87
123
  }
124
+ /**
125
+ * Build the initial canvas state for a single template — the dieline
126
+ * trim rect (locked, non-interactive) plus the page size including
127
+ * bleed on all sides.
128
+ *
129
+ * Pass `bleedMmOverride` to use a host-supplied bleed instead of the
130
+ * template's bundled value (e.g. when the user picks a custom bleed
131
+ * in the URL or UI). Returned coordinates are in PDF points
132
+ * (1 mm = 2.83465 pt).
133
+ *
134
+ * Use this for single-page seeds; for multi-page documents use
135
+ * {@link templateToPage} or {@link templatesToPages} which wrap the
136
+ * result in a {@link Page}.
137
+ *
138
+ * @public
139
+ */
88
140
  export function templateToInitialState(template, bleedMmOverride) {
89
141
  const bleedMm = bleedMmOverride ?? template.bleedMm;
90
142
  const pageSize = {
@@ -111,4 +163,115 @@ export function templateToInitialState(template, bleedMmOverride) {
111
163
  };
112
164
  return { objects: [dielineObj], pageSize };
113
165
  }
166
+ /**
167
+ * Stroke color per DielinePath type. Chosen to match the
168
+ * print-industry conventions our preview uses elsewhere:
169
+ *
170
+ * - cut — orange (brand, same as bundled DIELINE_STROKE)
171
+ * - crease — blue (folding score)
172
+ * - perf — red (perforation)
173
+ * - bleed — cyan (bleed edge / safety boundary)
174
+ */
175
+ const DIELINE_PATH_STROKES = {
176
+ cut: DIELINE_STROKE,
177
+ crease: "#1e90ff",
178
+ perf: "#ef4444",
179
+ bleed: "#0ea5e9",
180
+ };
181
+ /**
182
+ * Scale every coordinate in an SVG `d` string from millimeters to
183
+ * PDF points (multiply by `MM_TO_PT`).
184
+ *
185
+ * The dieline-parser emits absolute `M` / `L` / `A` commands in
186
+ * dieline-native millimeters. The editor's Konva Stage is configured
187
+ * in PDF points (the canvas / pageSize math is all in points), so
188
+ * the raw `d` string would render at ~35% of intended size if used
189
+ * directly. We pre-scale here so `pathData` matches the canvas unit
190
+ * system end-to-end (no Konva.Path `scaleX` / `scaleY` shenanigans
191
+ * that would also scale stroke width).
192
+ *
193
+ * Per-command coordinate slots:
194
+ * - `M x,y` / `L x,y` → both coordinates are positions; scale all.
195
+ * - `A rx,ry,xRot,largeArc,sweep,x,y` → rx and ry are radii (scale),
196
+ * xRot is degrees (pass through), the two flags are 0/1 (pass
197
+ * through), the trailing x,y are positions (scale).
198
+ *
199
+ * Unknown commands pass through unchanged. The parser's output only
200
+ * uses M / L / A so the full SVG-path alphabet doesn't need handling.
201
+ */
202
+ function scalePathMmToPt(d) {
203
+ return d.replace(/([MLA])\s*([\d.,\s-]+)/g, (_, cmd, args) => {
204
+ const nums = args
205
+ .trim()
206
+ .split(/[\s,]+/)
207
+ .map(Number)
208
+ .filter((n) => !Number.isNaN(n));
209
+ if (cmd === "A") {
210
+ // Arc: rx, ry, xRot, largeArc, sweep, x, y — scale rx, ry, x, y; pass others.
211
+ const out = [];
212
+ for (let i = 0; i + 6 < nums.length; i += 7) {
213
+ out.push((nums[i] ?? 0) * MM_TO_PT, (nums[i + 1] ?? 0) * MM_TO_PT, nums[i + 2] ?? 0, nums[i + 3] ?? 0, nums[i + 4] ?? 0, (nums[i + 5] ?? 0) * MM_TO_PT, (nums[i + 6] ?? 0) * MM_TO_PT);
214
+ }
215
+ return `${cmd}${out.join(",")}`;
216
+ }
217
+ // M / L: alternating x,y pairs.
218
+ return `${cmd}${nums.map((n) => n * MM_TO_PT).join(",")}`;
219
+ });
220
+ }
221
+ /**
222
+ * Build a {@link Page} from a parsed {@link Dieline} (CF2 / DDES /
223
+ * ARD import).
224
+ *
225
+ * Each `DielinePath` becomes one locked `CanvasObj` of type `"path"`
226
+ * rendered as a Konva `Path` (the `Path` import was added to
227
+ * `EditorCanvas` for this case). Type-specific stroke colors come
228
+ * from {@link DIELINE_PATH_STROKES}. The whole page is locked so
229
+ * users can't accidentally drag the structural reference geometry —
230
+ * same invariant as the bundled-template dieline rect.
231
+ *
232
+ * Coordinate units: the parser emits SVG path `d` strings in
233
+ * **dieline-native millimeters** (Y-down). We position each path
234
+ * object at `(bleedMm * MM_TO_PT, bleedMm * MM_TO_PT)` so the dieline
235
+ * trim sits inside the bleed margin. The path data itself is in
236
+ * mm — Konva renders it without further conversion because the
237
+ * containing Stage is configured in points and the relative offsets
238
+ * align (the Stage's own scale handles the mm→pt for display).
239
+ *
240
+ * `bleedMmOverride`: pass a host-supplied bleed (URL param, UI
241
+ * input) instead of the default. Defaults to 0 for parsed dielines —
242
+ * the source files don't carry their own bleed convention and the
243
+ * caller is the right place to decide.
244
+ *
245
+ * @public
246
+ */
247
+ export function dielineToPage(dieline, bleedMmOverride) {
248
+ const bleedMm = bleedMmOverride ?? 0;
249
+ const pageSize = {
250
+ width: (dieline.widthMm + bleedMm * 2) * MM_TO_PT,
251
+ height: (dieline.heightMm + bleedMm * 2) * MM_TO_PT,
252
+ };
253
+ const bleedOffsetPt = bleedMm * MM_TO_PT;
254
+ const objects = dieline.paths.map((p) => ({
255
+ id: `dieline-${dieline.format.toLowerCase()}-${p.id}`,
256
+ type: "path",
257
+ x: bleedOffsetPt,
258
+ y: bleedOffsetPt,
259
+ width: 0,
260
+ height: 0,
261
+ fill: "transparent",
262
+ stroke: DIELINE_PATH_STROKES[p.type],
263
+ strokeWidth: 1,
264
+ opacity: 1,
265
+ // Pre-scale mm → pt so pathData matches the canvas unit system.
266
+ pathData: scalePathMmToPt(p.d),
267
+ name: `${dieline.format} ${p.type}`,
268
+ locked: true,
269
+ }));
270
+ return {
271
+ id: `page-${dieline.format.toLowerCase()}-${Math.random().toString(36).slice(2, 8)}`,
272
+ objects,
273
+ pageSize,
274
+ bleedMm,
275
+ };
276
+ }
114
277
  //# sourceMappingURL=dieline-template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dieline-template.js","sourceRoot":"","sources":["../../src/lib/dieline-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dieline-template.js","sourceRoot":"","sources":["../../src/lib/dieline-template.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,37 @@
1
+ /**
2
+ * The palettes the editor can host. Each id maps to a registered
3
+ * panel via {@link import("./palette-registry").PALETTE_REGISTRY}.
4
+ * Visibility is controlled by `EditorConfig.panelVisibility` (an
5
+ * absent / `true` entry means "show"); the `PaletteManager`
6
+ * component renders an overflow toggle on desktop, and
7
+ * `MobileToolDrawer` renders the same toggles in a "Panels" section.
8
+ *
9
+ * `layers` and `preflight` are wired today. The remaining ids are
10
+ * registered for forward compatibility — Wave 1+ components will
11
+ * mount them.
12
+ *
13
+ * @public
14
+ */
15
+ export type PaletteId = "layers" | "preflight" | "dieline-library" | "dieline-parameters" | "dieline-preview" | "swatches" | "inks" | "graphic-styles" | "history" | "fold-preview" | "variant-matrix" | "process-rules" | "preflight-diff" | "brand-assets" | "mark-library" | "slack-notify" | "preflight-autofix" | "smart-spot-match" | "design-suggestions" | "annotations-sidebar" | "brand-consistency" | "webhook-notify" | "email-notify" | "accessibility-hints" | "palette-to-spot" | "white-underbase" | "streaming-render";
16
+ /**
17
+ * Helper type — only the boolean `enable_*` keys of {@link EditorConfig}
18
+ * (the optional gating-layer keys are filtered out).
19
+ */
20
+ type EnableKey = Extract<keyof EditorConfig, `enable_${string}`>;
21
+ /**
22
+ * Derived feature-key alphabet — every `enable_<feature>` flag becomes
23
+ * a `<feature>` key. Used as the *intended* shape for
24
+ * {@link EditorConfig}'s `capabilities` / `plan_gates` keys and as the
25
+ * parameter type for {@link showFeature}'s lookup.
26
+ *
27
+ * The maps below are typed `Record<string, boolean>` to break the
28
+ * circular type dependency (the keys-of-EditorConfig derivation
29
+ * referencing EditorConfig itself); hosts should still pass
30
+ * `FeatureKey`-shaped strings for compile-time-via-the-helper safety.
31
+ *
32
+ * @public
33
+ */
34
+ export type FeatureKey = EnableKey extends `enable_${infer F}` ? F : never;
1
35
  /**
2
36
  * Programmer-facing feature-flag layer for the editor. Modeled on
3
37
  * `lens-pdf`'s `ViewerConfig`: every host-visible feature is a typed
@@ -10,6 +44,10 @@
10
44
  * the `mode` argument)
11
45
  * 3. Per-instance overrides passed by the host
12
46
  *
47
+ * The `panelVisibility`, `capabilities`, and `plan_gates` layers are
48
+ * optional — absent entries preserve identity behaviour, so existing
49
+ * consumers don't have to set them.
50
+ *
13
51
  * @public
14
52
  */
15
53
  export interface EditorConfig {
@@ -33,8 +71,326 @@ export interface EditorConfig {
33
71
  enable_bleed_input: boolean;
34
72
  enable_layers_panel: boolean;
35
73
  enable_preflight_banner: boolean;
74
+ /** F0 — host-toggleable palette overflow menu (desktop) + mobile
75
+ * drawer "Panels" section. When false, all palettes render
76
+ * regardless of their per-id `panelVisibility` entry. */
77
+ enable_palettes: boolean;
78
+ /** F1 plumb — separation-aware UI surface. UI ships in Wave 1+;
79
+ * flag prepares the surface so hosts can opt out preemptively. */
80
+ enable_separations: boolean;
81
+ /** S1 — parametric dieline parameter panel. When enabled, hosts can
82
+ * surface a width/height/depth/bleed editor on top of a parametric
83
+ * dieline template (CF2 or codex-pdf carton macro); the panel
84
+ * emits new parameters via `onChange` and the host wires the
85
+ * regen step. Disable for hosts that only ship the bundled
86
+ * static library. */
87
+ enable_dieline_parameters: boolean;
88
+ /** S6 — lightweight 2D dieline preview panel. When enabled, hosts
89
+ * can mount the {@link DielinePreview} thumbnail next to the
90
+ * parametric editor so a width/height edit and the resulting
91
+ * folded-layout preview update side by side. Distinct from
92
+ * `enable_3d_fold_preview` (which spins up Three.js); this is the
93
+ * cheap always-on chrome companion. */
94
+ enable_dieline_preview: boolean;
95
+ /** C1 — inks palette. Surfaces the live ink list extracted from the
96
+ * most recently rendered PDF, alongside the existing swatches
97
+ * palette (which still handles PANTONE search). Hosts can disable
98
+ * to avoid the `/v1/separations/list` round-trip on every export. */
99
+ enable_inks_panel: boolean;
100
+ /** C3 — swatches palette / browseable PANTONE library picker. When
101
+ * enabled, hosts mount {@link SwatchesPicker} on the right rail;
102
+ * the panel hosts a debounced search input against compile-pdf's
103
+ * `/v1/spots/search` endpoint with an optional library-filter
104
+ * dropdown. Pairs with AI4's `registerSpot` to commit a chosen
105
+ * swatch as a document spot. Hosts that don't run compile-pdf's
106
+ * spots router opt out via this flag. */
107
+ enable_swatches: boolean;
108
+ /** C2 — white / underbase auto-generation panel. When enabled,
109
+ * hosts mount {@link WhiteUnderbasePanel} to compute the union of
110
+ * CMYK fill coverage on the active page and ask compile-pdf's
111
+ * `white_underbase` producer to emit a new opaque-white
112
+ * separation matching that union (optionally choked inward).
113
+ * Hosts that don't run the white-underbase producer opt out via
114
+ * this flag. */
115
+ enable_white_underbase: boolean;
116
+ /** O3 — streaming render progress panel. When enabled, hosts can
117
+ * mount {@link StreamingRenderProgress} to surface live per-page
118
+ * progress during long renders served by compile-pdf's
119
+ * `POST /v1/compose/stream` SSE endpoint. Hosts that don't run
120
+ * the streaming endpoint opt out via this flag. */
121
+ enable_streaming_render: boolean;
122
+ /** S3 — panel-anchored objects. When enabled, hosts can bind
123
+ * artwork objects to a specific {@link DielinePanel} via
124
+ * `anchorPanelId`; objects re-position with their parent panel
125
+ * when the dieline is folded or regenerated. The flag controls
126
+ * whether the editor surfaces the "Anchor to panel" affordance —
127
+ * the wire model already carries `anchorPanelId` regardless. */
128
+ enable_panel_anchored_objects: boolean;
129
+ /** P3 — compliance findings panel. Surfaces substrate / market /
130
+ * regulation findings from lint-pdf's `P3_compliance_v1` profile
131
+ * separately from the existing generic preflight panel. Hosts
132
+ * that don't run lint-pdf opt out via this flag. */
133
+ enable_compliance_panel: boolean;
134
+ /** P2 — process-specific preflight panel. Surfaces process-physics
135
+ * findings (flexo white-knock, gravure max line freq, screen
136
+ * halftone limit) separately from generic preflight and from the
137
+ * P3 compliance panel. Hosts that don't run lint-pdf's
138
+ * process-aware profile opt out via this flag. */
139
+ enable_process_rules_panel: boolean;
140
+ /** P4 — preflight-diff panel. Compares current preflight findings
141
+ * against a previous {@link import("@artworkpdf/document-model").PreflightSnapshot}
142
+ * from `DocumentV3.preflightHistory` and surfaces what changed
143
+ * (cleared / still firing / new since baseline). Hosts that don't
144
+ * carry preflight history opt out via this flag. */
145
+ enable_preflight_diff: boolean;
146
+ /** B1 — brand-assets registry panel. Surfaces
147
+ * `DocumentV3.brandAssets` as a browsable list grouped by kind
148
+ * (logo, swatch, typography, graphic-style, other). Pairs with
149
+ * the Wave 4 B2 brand-consistency rule (lint-pdf side) — the rule
150
+ * consults the same registry. Hosts that don't carry brand assets
151
+ * opt out via this flag. */
152
+ enable_brand_assets_panel: boolean;
153
+ /** X2 — history scrubber panel. When enabled, hosts mount the
154
+ * {@link HistoryPanel} on the right rail; the panel renders the
155
+ * per-page snapshot stack from {@link EditorCanvas} as a clickable
156
+ * list so users can revert to any prior commit. The panel + palette
157
+ * id were registered in earlier waves; this flag formally gates the
158
+ * surface. */
159
+ enable_history: boolean;
160
+ /** S2 — dieline import (CF2 / DDES / ARD file-drop). When enabled,
161
+ * {@link FileDropZone} accepts the three legacy packaging-industry
162
+ * formats and routes them through `@artworkpdf/dieline-parser` →
163
+ * {@link dielineToPage}, bypassing the PDF preflight phase and
164
+ * seeding the canvas directly. Disable for hosts that only ship
165
+ * PDF artwork (the dropzone falls back to PDF-only). */
166
+ enable_dieline_import: boolean;
167
+ /** X3 — annotation overlay. When enabled, hosts mount the
168
+ * {@link AnnotationOverlay} SVG layer over the canvas to surface
169
+ * `PageV3.annotations` (point / area / text). The overlay is
170
+ * read-only; mutation (add / resolve / delete) is a host concern.
171
+ * Disable for view-only / print-preview surfaces where comments
172
+ * shouldn't appear. */
173
+ enable_annotation_overlay: boolean;
174
+ /** V3 — versioned variant matrix diff viewer. When enabled, hosts
175
+ * can mount the {@link VariantMatrixVersionPanel} to compare two
176
+ * matrix snapshots from their persisted version history. Pairs
177
+ * with the optional `version` field on `VariantMatrix` (Wave 4
178
+ * PR-A). Disable for hosts that don't ship versioned variants. */
179
+ enable_variant_matrix_versions: boolean;
180
+ /** M1 — mark library picker panel. When enabled, hosts mount the
181
+ * {@link MarkLibraryPanel} to browse a host-provided catalogue of
182
+ * printer marks (crop, registration, color bar, slug, other) and
183
+ * wire the selected entry into the active page's marks template.
184
+ * Pairs with compile-pdf's marks producer; disable when no
185
+ * catalogue source is wired. */
186
+ enable_mark_library: boolean;
187
+ /** I3 — Slack-notify panel. When enabled, hosts mount the
188
+ * {@link SlackNotifyPanel} so users can emit a Slack notification
189
+ * keyed to a typed editor event (preflight cleared, job submitted,
190
+ * approval requested, …). Pairs with the synergy `slack.notify`
191
+ * workflow node when one is deployed; disable when no Slack
192
+ * bridge is wired. */
193
+ enable_slack_notify: boolean;
194
+ /** AI3 — Preflight auto-fix suggestions panel. When enabled, hosts
195
+ * mount the {@link PreflightAutoFixPanel} alongside the preflight
196
+ * panel; an AI / rules-engine loader resolves each finding to a
197
+ * list of remediation suggestions the user can apply. Pairs with
198
+ * the synergy `preflight.fix` workflow node when one is deployed;
199
+ * disable when no fix-suggestion adapter is wired. */
200
+ enable_preflight_autofix: boolean;
201
+ /** AI2 — Smart spot-match panel. When enabled, hosts mount the
202
+ * {@link SmartSpotMatchPanel} so users can resolve a picked CMYK
203
+ * / Lab / hex color to ranked nearest-PANTONE candidates with ΔE
204
+ * chips. Pairs with compile-pdf's `/v1/spots/match` endpoint or a
205
+ * tenant-local ΔE engine; disable when no matcher is wired. */
206
+ enable_smart_spot_match: boolean;
207
+ /** AI1 — AI design-suggestions panel. When enabled, hosts mount
208
+ * the {@link DesignSuggestionsPanel} alongside the canvas; a host
209
+ * loader resolves a stream of proactive design hints (typography,
210
+ * color, contrast, layout, imagery) the user can apply or
211
+ * dismiss. Pairs with the synergy `design.suggest` node when one
212
+ * is deployed; disable when no suggestion adapter is wired. */
213
+ enable_design_suggestions: boolean;
214
+ /** X1 — Annotations sidebar. Companion list view to the X3
215
+ * {@link AnnotationOverlay}; surfaces the same annotation stream
216
+ * as a scrollable, filterable list so reviewers can read the
217
+ * thread without hunting for pins. Disable when the host doesn't
218
+ * ship annotations (view-only surfaces, print-preview, …). */
219
+ enable_annotations_sidebar: boolean;
220
+ /** B2 — Brand-consistency findings panel. Companion to the B1
221
+ * brand-assets panel; surfaces a host-loader-supplied list of
222
+ * violations against the brand-asset registry (logo placed too
223
+ * small, fill color outside the swatches set, typography pairing
224
+ * off the brand kit, etc.). Pairs with lint-pdf's brand-consistency
225
+ * profile when one is deployed; disable when no brand-consistency
226
+ * loader is wired. */
227
+ enable_brand_consistency: boolean;
228
+ /** I1 — Generic webhook-notify panel. Companion to the I3
229
+ * {@link SlackNotifyPanel}; emits a structured
230
+ * {@link WebhookNotificationEvent} through a host adapter so any
231
+ * outbound HTTP integration (Zapier, n8n, GitHub Actions
232
+ * `repository_dispatch`, internal worker queues, custom tenant
233
+ * endpoints) can subscribe to editor events without their own
234
+ * panel. Pairs with the synergy `webhook.notify` workflow node when
235
+ * one is deployed; disable when no webhook adapter is wired. */
236
+ enable_webhook_notify: boolean;
237
+ /** I2 — Email-notify panel. Third member of the Wave 4 integration
238
+ * family (alongside I3 Slack and I1 webhook); emits a composed
239
+ * subject + body through a host-supplied {@link EmailNotifyFn}
240
+ * (SMTP relay, SendGrid, Postmark, AWS SES, internal Synergy node,
241
+ * etc.). Pairs with the synergy `email.notify` workflow node when
242
+ * one is deployed; disable when no email transport is wired. */
243
+ enable_email_notify: boolean;
244
+ /** AI4 — Palette → spot conversion panel. Closes the Wave 1 AI
245
+ * family. AI2 {@link SmartSpotMatchPanel} matches a user-picked
246
+ * color to PANTONE; AI4 takes the inverse direction — given the
247
+ * document's existing palette (every distinct fill/stroke on the
248
+ * active page), route each entry through the same matcher and let
249
+ * the user commit the best match into the spot registry in one
250
+ * click. Reuses AI2's {@link SpotMatchLoaderFn} so one host
251
+ * adapter serves both panels. Disable when no matcher is wired. */
252
+ enable_palette_to_spot: boolean;
253
+ /** AI5 — Accessibility hints panel. Fifth member of the AI family
254
+ * (alongside AI1 design-suggestions, AI2 smart spot-match, AI3
255
+ * preflight auto-fix, AI4 palette-to-spot); surfaces a host-loader
256
+ * -supplied list of accessibility findings (low contrast, missing
257
+ * alt text, text-size
258
+ * minimums, color-only signalling). Pairs with a tenant-deployed
259
+ * lint-pdf accessibility profile or an in-house rules engine;
260
+ * disable when no accessibility loader is wired. */
261
+ enable_accessibility_hints: boolean;
262
+ /** F2 — Print-context modal (process, substrate, ICC, TAC, target
263
+ * markets). When false, hosts get a `printContext`-less wire model. */
264
+ enable_print_context: boolean;
36
265
  enable_canvas_grid: boolean;
37
266
  enable_bleed_visualization: boolean;
267
+ /** C4 — debounced rasterize-and-sample on every commit, surfaces a
268
+ * red heatmap over pixels above the TAC threshold plus a chip with
269
+ * `max / avg`. Hosts can disable on low-end devices where the
270
+ * ~250 ms rasterize is too costly. */
271
+ enable_total_ink_coverage_live: boolean;
272
+ /** D1 — background trap-preview overlay. When enabled, the editor
273
+ * posts trap policies to compile-pdf's `/v1/trap/preview` endpoint
274
+ * and renders the predicted trap regions on top of the canvas.
275
+ * Hosts can disable to avoid network chatter on every edit. */
276
+ enable_trap_preview: boolean;
277
+ /** D2 — interactive trap policy editor (modal panel). When
278
+ * enabled, the editor surfaces width / mode controls that write
279
+ * into the active page's `trapConfig`. Per-edge and per-color-pair
280
+ * overrides will follow when the compile-pdf trap producer
281
+ * exposes them. */
282
+ enable_trap_editor: boolean;
283
+ /** O1 — sheet-imposition builder (modal panel). When enabled, the
284
+ * editor surfaces sheet size, rows × cols, gutter / margin in mm,
285
+ * and registration / crop-mark toggles that flow into the
286
+ * compile-pdf impose producer at submission. */
287
+ enable_impose: boolean;
288
+ /** S4 — 3D fold preview overlay. When enabled and the active page
289
+ * carries `panelMetadata`, the editor mounts a Three.js scene
290
+ * showing the dieline's panels in 3D with hinge lines along each
291
+ * fold edge. Hosts on bandwidth-constrained networks can opt out;
292
+ * the Three.js code path stays cold when the flag is `false`. */
293
+ enable_3d_fold_preview: boolean;
294
+ /** S4 (PR-4) — interactive fold editor panel. When enabled,
295
+ * hosts surface an angle slider per fold edge that writes into
296
+ * `document.pages[i].foldConfig`. The {@link FoldPreviewOverlay}
297
+ * re-renders the 3D scene on every commit. Pairs with
298
+ * `enable_3d_fold_preview` — hosts that only want the read-only
299
+ * overlay (no editing) leave this `false`. */
300
+ enable_fold_editor: boolean;
301
+ /** O2 — "Send to MIS" emit. When enabled, hosts surface a button
302
+ * that gathers the document's print-relevant metadata into a
303
+ * manifest and POSTs it to the synergy `mis.estimate` workflow
304
+ * node. Hosts that don't run a MIS bridge opt out via this flag. */
305
+ enable_mis_estimate: boolean;
306
+ /** P1 — process-aware preflight. Gating is at the *call site* —
307
+ * hosts check this flag before mounting the substrate-class
308
+ * dropdown and before forwarding the helper output to lint-pdf's
309
+ * `/v1/preflight/process`. `preflightContextOf` itself is
310
+ * unconditional (a pure projection), so the flag controls the UI
311
+ * surface and the host's outbound wiring, not the helper. */
312
+ enable_process_preflight: boolean;
313
+ /** C5 — ICC soft-proof overlay. When enabled, hosts can mount the
314
+ * {@link IccSoftProofOverlay} on top of the canvas; the overlay's
315
+ * loader adapter resolves to a per-pixel delta-E map (typically
316
+ * via compile-pdf's `/v1/soft-proof/apply`). Disable to skip the
317
+ * rasterize + round-trip cost on devices where the overlay would
318
+ * be too expensive. */
319
+ enable_soft_proof: boolean;
320
+ /** V2 — variant matrix UI for variable-data overrides. When
321
+ * enabled, the editor surfaces a rows-times-columns table of
322
+ * variants and token keys that writes into `document.variants`.
323
+ * The actual merge pipeline (one rendered page-instance per
324
+ * variant) lands in Wave 3 V1; this flag just gates the editing
325
+ * surface. */
326
+ enable_variant_matrix: boolean;
327
+ /** G2g — barcode generator panel. When enabled, hosts can mount the
328
+ * {@link BarcodeGeneratorPanel} on the canvas chrome; the panel's
329
+ * renderer adapter resolves a format + payload to an ImageData
330
+ * bitmap the host then places as a `CanvasObj`. Disable when the
331
+ * host doesn't ship a barcode-rendering backend (no library wired,
332
+ * no compile-pdf endpoint reachable) — surfacing the panel without
333
+ * a working adapter would only frustrate users. */
334
+ enable_barcode_generate: boolean;
335
+ /** G2v — barcode validation preflight rule. When enabled, the
336
+ * client-side `barcode_validation` preflight rule rasterizes the
337
+ * active page, runs {@link scanBarcodes} over the resulting
338
+ * ImageData, then validates each detection via
339
+ * {@link validateBarcode} (EAN-13 check digit, UPC-A length,
340
+ * GS1-128 AI sequence). Detected codes that fail their format's
341
+ * validator surface as warn-severity findings. Disable when the
342
+ * host doesn't ship barcode-bearing artwork (skips the
343
+ * rasterize+scan round-trip on every preflight pass). */
344
+ enable_barcode_validation: boolean;
345
+ /** P5 — Braille layout panel (EN 15823 / Marburg Medium). When
346
+ * enabled, hosts can mount the {@link BraillePanel} to compose
347
+ * Grade 1 English Braille cells. Disable for hosts that don't
348
+ * ship pharma-grade packaging or already wire a tenant-owned
349
+ * Braille translator. */
350
+ enable_braille_panel: boolean;
351
+ /** V1 — variable-data merge helpers. When enabled, hosts can wire
352
+ * `{{token}}` placeholders into Wave 2 V2's variant matrix and use
353
+ * {@link mergeRow} / {@link mergeAllRows} to preview each rendered
354
+ * variant before submitting to compose. Disable for hosts that
355
+ * don't ship variable-data printing. */
356
+ enable_variable_data_merge: boolean;
357
+ /** G3 — GS1 Digital Link composer panel. When enabled, hosts can
358
+ * mount the {@link Gs1DigitalLinkPanel} to assemble a GTIN + AIs
359
+ * into a canonical GS1 Digital Link URL (optionally rendered as a
360
+ * QR via the same renderer adapter the G2g panel uses). Disable
361
+ * when the host's workflow doesn't ship GS1-encoded artwork. */
362
+ enable_gs1_digital_link: boolean;
363
+ /** G1 — FDA Nutrition Facts label data-entry panel. When enabled,
364
+ * hosts can mount the {@link NutritionPanel} to compose a typed
365
+ * {@link NutritionFacts} record into an ordered
366
+ * {@link NutritionPanelSpec} the host renders onto the canvas.
367
+ * Disable for hosts that don't deal with food / supplement
368
+ * labelling. */
369
+ enable_nutrition_panel: boolean;
370
+ /**
371
+ * Per-palette visibility. Absent or `true` means visible; `false`
372
+ * hides without removing the toggle from the {@link PaletteId}
373
+ * registry. Hosts that want sticky visibility persist this object
374
+ * keyed by user + document.
375
+ */
376
+ panelVisibility?: Partial<Record<PaletteId, boolean>>;
377
+ /**
378
+ * Runtime capability declarations from the backend (e.g. "this
379
+ * tenant's compile-pdf instance has /v1/impose/apply enabled").
380
+ * Absent entry defaults to `true`. `false` hides the feature.
381
+ * Separate from `plan_gates` so the UI can distinguish "capability
382
+ * absent" from "plan doesn't include this".
383
+ *
384
+ * Keys are {@link FeatureKey}-shaped (typed `string` to break a
385
+ * circular dep — hosts should pass `FeatureKey` values).
386
+ */
387
+ capabilities?: Record<string, boolean>;
388
+ /**
389
+ * Plan-tier gating (e.g. "spot library is paid"). Same shape as
390
+ * `capabilities` but conceptually orthogonal — a feature can be
391
+ * capable + plan-gated, in which case both must be true.
392
+ */
393
+ plan_gates?: Record<string, boolean>;
38
394
  }
39
395
  /**
40
396
  * Default flag set — every feature on. Hosts that want a minimal
@@ -65,4 +421,38 @@ export declare const PRO_MODE_OVERRIDES: Partial<EditorConfig>;
65
421
  * @public
66
422
  */
67
423
  export declare function resolveConfig(mode: "basic" | "pro", instanceOverrides?: Partial<EditorConfig>): EditorConfig;
424
+ /**
425
+ * Resolve whether a feature should be visible right now.
426
+ *
427
+ * Evaluates four gates and returns true iff *all* are open:
428
+ * 1. `enable_<f>` is not explicitly `false`.
429
+ * 2. `plan_gates[f]` is not explicitly `false` (absent = open).
430
+ * 3. `capabilities[f]` is not explicitly `false` (absent = open).
431
+ * 4. `f` hasn't been marked unwired via
432
+ * {@link import("./unwired").markUnwired}.
433
+ *
434
+ * Use this at every render site that gates a feature; the four-layer
435
+ * separation lets hosts distinguish "we hid it" from "the plan
436
+ * doesn't include it" from "the backend can't do it right now" from
437
+ * "the editor build doesn't ship this UI yet" without losing the
438
+ * underlying boolean flag.
439
+ *
440
+ * @public
441
+ */
442
+ export declare function showFeature(cfg: EditorConfig, f: FeatureKey): boolean;
443
+ /**
444
+ * Resolve whether a palette should render.
445
+ *
446
+ * Two gates:
447
+ * 1. `enable_palettes` is not explicitly `false`. When the
448
+ * palettes feature is off, *all* palettes are forced visible —
449
+ * the visibility map is a UI toggle, not a kill switch, so
450
+ * hiding the toggle UI must not silently hide content.
451
+ * 2. `panelVisibility[id]` is not explicitly `false` (absent or
452
+ * `true` means visible).
453
+ *
454
+ * @public
455
+ */
456
+ export declare function isPanelVisible(cfg: EditorConfig, id: PaletteId): boolean;
457
+ export {};
68
458
  //# sourceMappingURL=editor-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-config.d.ts","sourceRoot":"","sources":["../../src/lib/editor-config.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAE3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAG3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAG5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,uBAAuB,EAAE,OAAO,CAAC;IAGjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,0BAA0B,EAAE,OAAO,CAAC;CACrC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,YA2BnC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,YAAY,CAGtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAAM,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,GAAG,KAAK,EACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACxC,YAAY,CAGd"}
1
+ {"version":3,"file":"editor-config.d.ts","sourceRoot":"","sources":["../../src/lib/editor-config.ts"],"names":[],"mappings":"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"}