@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.
- package/LICENSE +62 -0
- package/dist/components/AccessibilityHintsPanel.d.ts +142 -0
- package/dist/components/AccessibilityHintsPanel.d.ts.map +1 -0
- package/dist/components/AccessibilityHintsPanel.js +158 -0
- package/dist/components/AccessibilityHintsPanel.js.map +1 -0
- package/dist/components/AnnotationOverlay.d.ts +142 -0
- package/dist/components/AnnotationOverlay.d.ts.map +1 -0
- package/dist/components/AnnotationOverlay.js +141 -0
- package/dist/components/AnnotationOverlay.js.map +1 -0
- package/dist/components/AnnotationsSidebar.d.ts +98 -0
- package/dist/components/AnnotationsSidebar.d.ts.map +1 -0
- package/dist/components/AnnotationsSidebar.js +100 -0
- package/dist/components/AnnotationsSidebar.js.map +1 -0
- package/dist/components/BarcodeGeneratorPanel.d.ts +58 -0
- package/dist/components/BarcodeGeneratorPanel.d.ts.map +1 -0
- package/dist/components/BarcodeGeneratorPanel.js +91 -0
- package/dist/components/BarcodeGeneratorPanel.js.map +1 -0
- package/dist/components/BraillePanel.d.ts +99 -0
- package/dist/components/BraillePanel.d.ts.map +1 -0
- package/dist/components/BraillePanel.js +221 -0
- package/dist/components/BraillePanel.js.map +1 -0
- package/dist/components/BrandAssetsPanel.d.ts +130 -0
- package/dist/components/BrandAssetsPanel.d.ts.map +1 -0
- package/dist/components/BrandAssetsPanel.js +125 -0
- package/dist/components/BrandAssetsPanel.js.map +1 -0
- package/dist/components/BrandConsistencyPanel.d.ts +140 -0
- package/dist/components/BrandConsistencyPanel.d.ts.map +1 -0
- package/dist/components/BrandConsistencyPanel.js +158 -0
- package/dist/components/BrandConsistencyPanel.js.map +1 -0
- package/dist/components/ComplianceFindingsPanel.d.ts +62 -0
- package/dist/components/ComplianceFindingsPanel.d.ts.map +1 -0
- package/dist/components/ComplianceFindingsPanel.js +118 -0
- package/dist/components/ComplianceFindingsPanel.js.map +1 -0
- package/dist/components/DesignSuggestionsPanel.d.ts +148 -0
- package/dist/components/DesignSuggestionsPanel.d.ts.map +1 -0
- package/dist/components/DesignSuggestionsPanel.js +154 -0
- package/dist/components/DesignSuggestionsPanel.js.map +1 -0
- package/dist/components/DielineParametersPanel.d.ts +62 -0
- package/dist/components/DielineParametersPanel.d.ts.map +1 -0
- package/dist/components/DielineParametersPanel.js +170 -0
- package/dist/components/DielineParametersPanel.js.map +1 -0
- package/dist/components/DielinePreview.d.ts +150 -0
- package/dist/components/DielinePreview.d.ts.map +1 -0
- package/dist/components/DielinePreview.js +146 -0
- package/dist/components/DielinePreview.js.map +1 -0
- package/dist/components/EditorApp.d.ts +18 -3
- package/dist/components/EditorApp.d.ts.map +1 -1
- package/dist/components/EditorApp.js +42 -7
- package/dist/components/EditorApp.js.map +1 -1
- package/dist/components/EditorCanvas.d.ts +31 -2
- package/dist/components/EditorCanvas.d.ts.map +1 -1
- package/dist/components/EditorCanvas.js +97 -16
- package/dist/components/EditorCanvas.js.map +1 -1
- package/dist/components/EmailNotifyPanel.d.ts +165 -0
- package/dist/components/EmailNotifyPanel.d.ts.map +1 -0
- package/dist/components/EmailNotifyPanel.js +211 -0
- package/dist/components/EmailNotifyPanel.js.map +1 -0
- package/dist/components/FileDropZone.d.ts +9 -1
- package/dist/components/FileDropZone.d.ts.map +1 -1
- package/dist/components/FileDropZone.js +53 -5
- package/dist/components/FileDropZone.js.map +1 -1
- package/dist/components/FoldEditorPanel.d.ts +68 -0
- package/dist/components/FoldEditorPanel.d.ts.map +1 -0
- package/dist/components/FoldEditorPanel.js +65 -0
- package/dist/components/FoldEditorPanel.js.map +1 -0
- package/dist/components/FoldPreviewOverlay.d.ts +48 -0
- package/dist/components/FoldPreviewOverlay.d.ts.map +1 -0
- package/dist/components/FoldPreviewOverlay.js +182 -0
- package/dist/components/FoldPreviewOverlay.js.map +1 -0
- package/dist/components/Gs1DigitalLinkPanel.d.ts +103 -0
- package/dist/components/Gs1DigitalLinkPanel.d.ts.map +1 -0
- package/dist/components/Gs1DigitalLinkPanel.js +199 -0
- package/dist/components/Gs1DigitalLinkPanel.js.map +1 -0
- package/dist/components/HistoryPanel.d.ts +39 -0
- package/dist/components/HistoryPanel.d.ts.map +1 -0
- package/dist/components/HistoryPanel.js +72 -0
- package/dist/components/HistoryPanel.js.map +1 -0
- package/dist/components/IccSoftProofOverlay.d.ts +67 -0
- package/dist/components/IccSoftProofOverlay.d.ts.map +1 -0
- package/dist/components/IccSoftProofOverlay.js +119 -0
- package/dist/components/IccSoftProofOverlay.js.map +1 -0
- package/dist/components/ImposePanel.d.ts +71 -0
- package/dist/components/ImposePanel.d.ts.map +1 -0
- package/dist/components/ImposePanel.js +127 -0
- package/dist/components/ImposePanel.js.map +1 -0
- package/dist/components/InksPanel.d.ts +61 -0
- package/dist/components/InksPanel.d.ts.map +1 -0
- package/dist/components/InksPanel.js +84 -0
- package/dist/components/InksPanel.js.map +1 -0
- package/dist/components/JobSetupPanel.d.ts +118 -0
- package/dist/components/JobSetupPanel.d.ts.map +1 -0
- package/dist/components/JobSetupPanel.js +169 -0
- package/dist/components/JobSetupPanel.js.map +1 -0
- package/dist/components/LayersPanel.d.ts.map +1 -1
- package/dist/components/LayersPanel.js +1 -0
- package/dist/components/LayersPanel.js.map +1 -1
- package/dist/components/MarkLibraryPanel.d.ts +131 -0
- package/dist/components/MarkLibraryPanel.d.ts.map +1 -0
- package/dist/components/MarkLibraryPanel.js +184 -0
- package/dist/components/MarkLibraryPanel.js.map +1 -0
- package/dist/components/MisEstimateButton.d.ts +73 -0
- package/dist/components/MisEstimateButton.d.ts.map +1 -0
- package/dist/components/MisEstimateButton.js +57 -0
- package/dist/components/MisEstimateButton.js.map +1 -0
- package/dist/components/NutritionPanel.d.ts +118 -0
- package/dist/components/NutritionPanel.d.ts.map +1 -0
- package/dist/components/NutritionPanel.js +169 -0
- package/dist/components/NutritionPanel.js.map +1 -0
- package/dist/components/PageNavigator.d.ts.map +1 -1
- package/dist/components/PageNavigator.js +6 -1
- package/dist/components/PageNavigator.js.map +1 -1
- package/dist/components/PaletteManager.d.ts +32 -0
- package/dist/components/PaletteManager.d.ts.map +1 -0
- package/dist/components/PaletteManager.js +89 -0
- package/dist/components/PaletteManager.js.map +1 -0
- package/dist/components/PaletteToSpotPanel.d.ts +122 -0
- package/dist/components/PaletteToSpotPanel.d.ts.map +1 -0
- package/dist/components/PaletteToSpotPanel.js +160 -0
- package/dist/components/PaletteToSpotPanel.js.map +1 -0
- package/dist/components/PreflightAutoFixPanel.d.ts +110 -0
- package/dist/components/PreflightAutoFixPanel.d.ts.map +1 -0
- package/dist/components/PreflightAutoFixPanel.js +119 -0
- package/dist/components/PreflightAutoFixPanel.js.map +1 -0
- package/dist/components/PreflightDiffPanel.d.ts +127 -0
- package/dist/components/PreflightDiffPanel.d.ts.map +1 -0
- package/dist/components/PreflightDiffPanel.js +0 -0
- package/dist/components/PreflightDiffPanel.js.map +1 -0
- package/dist/components/ProcessRulesPanel.d.ts +81 -0
- package/dist/components/ProcessRulesPanel.d.ts.map +1 -0
- package/dist/components/ProcessRulesPanel.js +143 -0
- package/dist/components/ProcessRulesPanel.js.map +1 -0
- package/dist/components/SlackNotifyPanel.d.ts +139 -0
- package/dist/components/SlackNotifyPanel.d.ts.map +1 -0
- package/dist/components/SlackNotifyPanel.js +133 -0
- package/dist/components/SlackNotifyPanel.js.map +1 -0
- package/dist/components/SmartSpotMatchPanel.d.ts +143 -0
- package/dist/components/SmartSpotMatchPanel.d.ts.map +1 -0
- package/dist/components/SmartSpotMatchPanel.js +159 -0
- package/dist/components/SmartSpotMatchPanel.js.map +1 -0
- package/dist/components/StreamingRenderProgress.d.ts +60 -0
- package/dist/components/StreamingRenderProgress.d.ts.map +1 -0
- package/dist/components/StreamingRenderProgress.js +99 -0
- package/dist/components/StreamingRenderProgress.js.map +1 -0
- package/dist/components/SwatchesPicker.d.ts +83 -0
- package/dist/components/SwatchesPicker.d.ts.map +1 -0
- package/dist/components/SwatchesPicker.js +151 -0
- package/dist/components/SwatchesPicker.js.map +1 -0
- package/dist/components/TacOverlay.d.ts +47 -0
- package/dist/components/TacOverlay.d.ts.map +1 -0
- package/dist/components/TacOverlay.js +116 -0
- package/dist/components/TacOverlay.js.map +1 -0
- package/dist/components/TrapEditorPanel.d.ts +52 -0
- package/dist/components/TrapEditorPanel.d.ts.map +1 -0
- package/dist/components/TrapEditorPanel.js +64 -0
- package/dist/components/TrapEditorPanel.js.map +1 -0
- package/dist/components/TrapPreviewOverlay.d.ts +64 -0
- package/dist/components/TrapPreviewOverlay.d.ts.map +1 -0
- package/dist/components/TrapPreviewOverlay.js +120 -0
- package/dist/components/TrapPreviewOverlay.js.map +1 -0
- package/dist/components/VariantMatrixPanel.d.ts +61 -0
- package/dist/components/VariantMatrixPanel.d.ts.map +1 -0
- package/dist/components/VariantMatrixPanel.js +97 -0
- package/dist/components/VariantMatrixPanel.js.map +1 -0
- package/dist/components/VariantMatrixVersionPanel.d.ts +122 -0
- package/dist/components/VariantMatrixVersionPanel.d.ts.map +1 -0
- package/dist/components/VariantMatrixVersionPanel.js +162 -0
- package/dist/components/VariantMatrixVersionPanel.js.map +1 -0
- package/dist/components/WebhookNotifyPanel.d.ts +160 -0
- package/dist/components/WebhookNotifyPanel.d.ts.map +1 -0
- package/dist/components/WebhookNotifyPanel.js +100 -0
- package/dist/components/WebhookNotifyPanel.js.map +1 -0
- package/dist/components/WhiteUnderbasePanel.d.ts +107 -0
- package/dist/components/WhiteUnderbasePanel.d.ts.map +1 -0
- package/dist/components/WhiteUnderbasePanel.js +104 -0
- package/dist/components/WhiteUnderbasePanel.js.map +1 -0
- package/dist/hooks/useEditorMode.d.ts +25 -5
- package/dist/hooks/useEditorMode.d.ts.map +1 -1
- package/dist/hooks/useEditorMode.js +18 -5
- package/dist/hooks/useEditorMode.js.map +1 -1
- package/dist/index.d.ts +51 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -2
- package/dist/index.js.map +1 -1
- package/dist/lens/preflight-findings.d.ts.map +1 -1
- package/dist/lens/preflight-findings.js.map +1 -1
- package/dist/lib/barcode-scan.d.ts +154 -0
- package/dist/lib/barcode-scan.d.ts.map +1 -0
- package/dist/lib/barcode-scan.js +152 -0
- package/dist/lib/barcode-scan.js.map +1 -0
- package/dist/lib/color-math.d.ts +76 -0
- package/dist/lib/color-math.d.ts.map +1 -0
- package/dist/lib/color-math.js +96 -0
- package/dist/lib/color-math.js.map +1 -0
- package/dist/lib/dieline-template.d.ts +87 -0
- package/dist/lib/dieline-template.d.ts.map +1 -1
- package/dist/lib/dieline-template.js +163 -0
- package/dist/lib/dieline-template.js.map +1 -1
- package/dist/lib/editor-config.d.ts +390 -0
- package/dist/lib/editor-config.d.ts.map +1 -1
- package/dist/lib/editor-config.js +90 -0
- package/dist/lib/editor-config.js.map +1 -1
- package/dist/lib/fold-geometry.d.ts +144 -0
- package/dist/lib/fold-geometry.d.ts.map +1 -0
- package/dist/lib/fold-geometry.js +138 -0
- package/dist/lib/fold-geometry.js.map +1 -0
- package/dist/lib/merge-tokens.d.ts +81 -0
- package/dist/lib/merge-tokens.d.ts.map +1 -0
- package/dist/lib/merge-tokens.js +88 -0
- package/dist/lib/merge-tokens.js.map +1 -0
- package/dist/lib/palette-registry.d.ts +40 -0
- package/dist/lib/palette-registry.d.ts.map +1 -0
- package/dist/lib/palette-registry.js +50 -0
- package/dist/lib/palette-registry.js.map +1 -0
- package/dist/lib/panel-anchor.d.ts +101 -0
- package/dist/lib/panel-anchor.d.ts.map +1 -0
- package/dist/lib/panel-anchor.js +68 -0
- package/dist/lib/panel-anchor.js.map +1 -0
- package/dist/lib/preflight/checks.d.ts.map +1 -1
- package/dist/lib/preflight/checks.js +71 -0
- package/dist/lib/preflight/checks.js.map +1 -1
- package/dist/lib/preflight/types.d.ts.map +1 -1
- package/dist/lib/preflight/types.js +11 -0
- package/dist/lib/preflight/types.js.map +1 -1
- package/dist/lib/rasterize.d.ts +93 -0
- package/dist/lib/rasterize.d.ts.map +1 -0
- package/dist/lib/rasterize.js +117 -0
- package/dist/lib/rasterize.js.map +1 -0
- package/dist/lib/separations-registry.d.ts +99 -0
- package/dist/lib/separations-registry.d.ts.map +1 -0
- package/dist/lib/separations-registry.js +59 -0
- package/dist/lib/separations-registry.js.map +1 -0
- package/dist/lib/streaming-render.d.ts +100 -0
- package/dist/lib/streaming-render.d.ts.map +1 -0
- package/dist/lib/streaming-render.js +132 -0
- package/dist/lib/streaming-render.js.map +1 -0
- package/dist/lib/unwired.d.ts +29 -0
- package/dist/lib/unwired.d.ts.map +1 -0
- package/dist/lib/unwired.js +58 -0
- package/dist/lib/unwired.js.map +1 -0
- package/package.json +20 -11
- package/dist/components/SeparationsPanel.d.ts +0 -9
- package/dist/components/SeparationsPanel.d.ts.map +0 -1
- package/dist/components/SeparationsPanel.js +0 -168
- 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":"
|
|
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":"
|
|
1
|
+
{"version":3,"file":"editor-config.d.ts","sourceRoot":"","sources":["../../src/lib/editor-config.ts"],"names":[],"mappings":"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"}
|