@1agh/maude 0.15.0 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/cli/commands/design.mjs +108 -2
- package/package.json +12 -18
- package/plugins/design/dev-server/annotations-context-toolbar.tsx +8 -8
- package/plugins/design/dev-server/annotations-layer.tsx +8 -10
- package/plugins/design/dev-server/api.ts +227 -3
- package/plugins/design/dev-server/bin/_enumerate-artboards-playwright.mjs +40 -0
- package/plugins/design/dev-server/bin/_html-playwright.mjs +129 -0
- package/plugins/design/dev-server/bin/_pdf-playwright.mjs +105 -0
- package/plugins/design/dev-server/bin/_png-playwright.mjs +143 -0
- package/plugins/design/dev-server/bin/_pptx-playwright.mjs +98 -0
- package/plugins/design/dev-server/bin/_svg-playwright.mjs +141 -0
- package/plugins/design/dev-server/canvas-lib.tsx +12 -13
- package/plugins/design/dev-server/canvas-shell.tsx +111 -9
- package/plugins/design/dev-server/client/app.jsx +71 -143
- package/plugins/design/dev-server/client/comments-overlay.css +381 -0
- package/plugins/design/dev-server/client/styles/3-shell.css +1 -10
- package/plugins/design/dev-server/client/styles/4-components.css +5 -161
- package/plugins/design/dev-server/client/styles.css +5 -160
- package/plugins/design/dev-server/comments-overlay.tsx +1156 -0
- package/plugins/design/dev-server/context-menu.tsx +36 -9
- package/plugins/design/dev-server/dist/client.bundle.js +52 -211
- package/plugins/design/dev-server/dist/styles.css +1 -218
- package/plugins/design/dev-server/export-dialog.tsx +401 -0
- package/plugins/design/dev-server/exporters/_browser-bundles.ts +89 -0
- package/plugins/design/dev-server/exporters/canva-handoff-prompt.ts +74 -0
- package/plugins/design/dev-server/exporters/canva.ts +126 -0
- package/plugins/design/dev-server/exporters/html.ts +103 -0
- package/plugins/design/dev-server/exporters/index.ts +135 -0
- package/plugins/design/dev-server/exporters/pdf.ts +109 -0
- package/plugins/design/dev-server/exporters/png.ts +136 -0
- package/plugins/design/dev-server/exporters/pptx.ts +263 -0
- package/plugins/design/dev-server/exporters/scope.ts +196 -0
- package/plugins/design/dev-server/exporters/svg.ts +122 -0
- package/plugins/design/dev-server/exporters/zip.ts +109 -0
- package/plugins/design/dev-server/http.ts +109 -0
- package/plugins/design/dev-server/input-router.tsx +21 -0
- package/plugins/design/dev-server/inspect.ts +1 -1
- package/plugins/design/dev-server/server.mjs +1 -1
- package/plugins/design/dev-server/test/canvas-meta-api.test.ts +0 -10
- package/plugins/design/dev-server/test/comments-api.test.ts +229 -0
- package/plugins/design/dev-server/test/exporters/canva.test.ts +64 -0
- package/plugins/design/dev-server/test/exporters/endpoint.test.ts +121 -0
- package/plugins/design/dev-server/test/exporters/history.test.ts +79 -0
- package/plugins/design/dev-server/test/exporters/html.test.ts +26 -0
- package/plugins/design/dev-server/test/exporters/pdf.test.ts +53 -0
- package/plugins/design/dev-server/test/exporters/png.test.ts +32 -0
- package/plugins/design/dev-server/test/exporters/pptx.test.ts +31 -0
- package/plugins/design/dev-server/test/exporters/scope.test.ts +0 -0
- package/plugins/design/dev-server/test/exporters/svg.test.ts +29 -0
- package/plugins/design/dev-server/test/exporters/zip.test.ts +105 -0
- package/plugins/design/dev-server/tool-palette.tsx +34 -16
- package/plugins/design/templates/_shell.html +33 -0
|
@@ -74,6 +74,27 @@ function noop(name: string) {
|
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
// Phase 6.5 T9 — export hooks. The default registry items use noop() so the
|
|
78
|
+
// menu still renders when the dialog provider isn't mounted; consumers wire
|
|
79
|
+
// real `openExport(scope)` callbacks by passing a custom registry to
|
|
80
|
+
// <ContextMenuProvider extra>. Pattern matches the existing Phase 5 noop
|
|
81
|
+
// affordances.
|
|
82
|
+
function defaultExportItem(label: string, scopeHint: string): MenuItem {
|
|
83
|
+
return {
|
|
84
|
+
id: `export-${scopeHint}`,
|
|
85
|
+
label,
|
|
86
|
+
shortcut: scopeHint === 'selection' ? '⌘E' : undefined,
|
|
87
|
+
onSelect: () => {
|
|
88
|
+
const detail = { scope: scopeHint };
|
|
89
|
+
try {
|
|
90
|
+
window.dispatchEvent(new CustomEvent('maude:open-export', { detail }));
|
|
91
|
+
} catch {
|
|
92
|
+
/* SSR / non-window environments */
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
77
98
|
const DEFAULT_REGISTRY: ContextRegistry = {
|
|
78
99
|
element: [
|
|
79
100
|
[
|
|
@@ -82,6 +103,7 @@ const DEFAULT_REGISTRY: ContextRegistry = {
|
|
|
82
103
|
{ id: 'copy-id', label: 'Copy data-cd-id', onSelect: noop('copy-id') },
|
|
83
104
|
{ id: 'inspect', label: 'Inspect', shortcut: '⌥I', onSelect: noop('inspect') },
|
|
84
105
|
],
|
|
106
|
+
[defaultExportItem('Export selection…', 'selection')],
|
|
85
107
|
[
|
|
86
108
|
{ id: 'hide', label: 'Hide', shortcut: '⌘⇧H', onSelect: noop('hide') },
|
|
87
109
|
{ id: 'lock', label: 'Lock', shortcut: '⌘⇧L', onSelect: noop('lock') },
|
|
@@ -92,6 +114,7 @@ const DEFAULT_REGISTRY: ContextRegistry = {
|
|
|
92
114
|
{ id: 'rename', label: 'Rename', shortcut: '↵', onSelect: noop('rename-artboard') },
|
|
93
115
|
{ id: 'duplicate', label: 'Duplicate', shortcut: '⌘D', onSelect: noop('duplicate-artboard') },
|
|
94
116
|
],
|
|
117
|
+
[defaultExportItem('Export this artboard…', 'artboard')],
|
|
95
118
|
[
|
|
96
119
|
{ id: 'fit-one', label: 'Fit just this artboard', onSelect: noop('fit-one') },
|
|
97
120
|
{ id: 'reset-pos', label: 'Reset position', onSelect: noop('reset-artboard-pos') },
|
|
@@ -108,6 +131,10 @@ const DEFAULT_REGISTRY: ContextRegistry = {
|
|
|
108
131
|
{ id: 'fit-view', label: 'Fit to view', shortcut: '1', onSelect: noop('fit-view') },
|
|
109
132
|
{ id: 'reset-view', label: 'Reset view', shortcut: '⌘0', onSelect: noop('reset-view') },
|
|
110
133
|
],
|
|
134
|
+
[
|
|
135
|
+
defaultExportItem('Export project (ZIP)…', 'project-raw'),
|
|
136
|
+
defaultExportItem('Export canvas as separate…', 'canvas-as-separate'),
|
|
137
|
+
],
|
|
111
138
|
],
|
|
112
139
|
overlay: [],
|
|
113
140
|
};
|
|
@@ -131,15 +158,15 @@ const MENU_CSS = `
|
|
|
131
158
|
.dc-context-menu {
|
|
132
159
|
position: fixed;
|
|
133
160
|
z-index: 7;
|
|
134
|
-
background: var(--bg-1, #fff);
|
|
135
|
-
border: 1px solid var(--
|
|
136
|
-
border-radius:
|
|
137
|
-
box-shadow: var(--
|
|
161
|
+
background: var(--u-bg-2, var(--bg-1, #fff));
|
|
162
|
+
border: 1px solid var(--u-fg-0, #1c1917);
|
|
163
|
+
border-radius: 0;
|
|
164
|
+
box-shadow: 4px 4px 0 var(--u-fg-0, #1c1917);
|
|
138
165
|
padding: 4px;
|
|
139
166
|
min-width: 220px;
|
|
140
|
-
font:
|
|
167
|
+
font-family: var(--u-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
141
168
|
font-size: 12px;
|
|
142
|
-
color: var(--fg-0, rgba(20,15,10,0.92));
|
|
169
|
+
color: var(--u-fg-0, var(--fg-0, rgba(20,15,10,0.92)));
|
|
143
170
|
user-select: none;
|
|
144
171
|
}
|
|
145
172
|
.dc-context-menu .dc-menu-sep {
|
|
@@ -152,8 +179,8 @@ const MENU_CSS = `
|
|
|
152
179
|
justify-content: space-between;
|
|
153
180
|
align-items: center;
|
|
154
181
|
gap: 16px;
|
|
155
|
-
padding:
|
|
156
|
-
border-radius:
|
|
182
|
+
padding: 5px 12px;
|
|
183
|
+
border-radius: 0;
|
|
157
184
|
cursor: pointer;
|
|
158
185
|
background: transparent;
|
|
159
186
|
border: 0;
|
|
@@ -164,7 +191,7 @@ const MENU_CSS = `
|
|
|
164
191
|
}
|
|
165
192
|
.dc-context-menu .dc-menu-item:hover,
|
|
166
193
|
.dc-context-menu .dc-menu-item:focus-visible {
|
|
167
|
-
background: var(--bg-3, rgba(0,0,0,0.05));
|
|
194
|
+
background: var(--u-bg-3, var(--bg-3, rgba(0,0,0,0.05)));
|
|
168
195
|
outline: none;
|
|
169
196
|
}
|
|
170
197
|
.dc-context-menu .dc-menu-item[disabled] {
|