rtistree 0.5.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 (181) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +99 -0
  4. package/THIRD_PARTY_NOTICES.md +25 -0
  5. package/dist/art-direction.d.ts +77 -0
  6. package/dist/art-direction.js +186 -0
  7. package/dist/art-direction.js.map +1 -0
  8. package/dist/artifacts.d.ts +24 -0
  9. package/dist/artifacts.js +49 -0
  10. package/dist/artifacts.js.map +1 -0
  11. package/dist/assets.d.ts +16 -0
  12. package/dist/assets.js +96 -0
  13. package/dist/assets.js.map +1 -0
  14. package/dist/benchmark.d.ts +76 -0
  15. package/dist/benchmark.js +118 -0
  16. package/dist/benchmark.js.map +1 -0
  17. package/dist/cli.d.ts +2 -0
  18. package/dist/cli.js +300 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/commands.d.ts +5315 -0
  21. package/dist/commands.js +591 -0
  22. package/dist/commands.js.map +1 -0
  23. package/dist/components.d.ts +20 -0
  24. package/dist/components.js +98 -0
  25. package/dist/components.js.map +1 -0
  26. package/dist/construction.d.ts +53 -0
  27. package/dist/construction.js +80 -0
  28. package/dist/construction.js.map +1 -0
  29. package/dist/critique.d.ts +44 -0
  30. package/dist/critique.js +45 -0
  31. package/dist/critique.js.map +1 -0
  32. package/dist/detail.d.ts +5 -0
  33. package/dist/detail.js +52 -0
  34. package/dist/detail.js.map +1 -0
  35. package/dist/document.d.ts +64 -0
  36. package/dist/document.js +56 -0
  37. package/dist/document.js.map +1 -0
  38. package/dist/export.d.ts +405 -0
  39. package/dist/export.js +344 -0
  40. package/dist/export.js.map +1 -0
  41. package/dist/font-inspection.d.ts +8 -0
  42. package/dist/font-inspection.js +34 -0
  43. package/dist/font-inspection.js.map +1 -0
  44. package/dist/graphics.d.ts +9 -0
  45. package/dist/graphics.js +72 -0
  46. package/dist/graphics.js.map +1 -0
  47. package/dist/history-storage.d.ts +10 -0
  48. package/dist/history-storage.js +59 -0
  49. package/dist/history-storage.js.map +1 -0
  50. package/dist/index.d.ts +27 -0
  51. package/dist/index.js +28 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/layout.d.ts +18 -0
  54. package/dist/layout.js +155 -0
  55. package/dist/layout.js.map +1 -0
  56. package/dist/loader.d.ts +9 -0
  57. package/dist/loader.js +108 -0
  58. package/dist/loader.js.map +1 -0
  59. package/dist/mcp.d.ts +4 -0
  60. package/dist/mcp.js +223 -0
  61. package/dist/mcp.js.map +1 -0
  62. package/dist/merge.d.ts +6 -0
  63. package/dist/merge.js +49 -0
  64. package/dist/merge.js.map +1 -0
  65. package/dist/native.d.ts +3 -0
  66. package/dist/native.js +6 -0
  67. package/dist/native.js.map +1 -0
  68. package/dist/paint.d.ts +9 -0
  69. package/dist/paint.js +331 -0
  70. package/dist/paint.js.map +1 -0
  71. package/dist/path-edit.d.ts +20 -0
  72. package/dist/path-edit.js +30 -0
  73. package/dist/path-edit.js.map +1 -0
  74. package/dist/pdf-output.d.ts +21 -0
  75. package/dist/pdf-output.js +297 -0
  76. package/dist/pdf-output.js.map +1 -0
  77. package/dist/pipeline.d.ts +39 -0
  78. package/dist/pipeline.js +227 -0
  79. package/dist/pipeline.js.map +1 -0
  80. package/dist/print-scene.d.ts +490 -0
  81. package/dist/print-scene.js +55 -0
  82. package/dist/print-scene.js.map +1 -0
  83. package/dist/production-workflow.d.ts +251 -0
  84. package/dist/production-workflow.js +335 -0
  85. package/dist/production-workflow.js.map +1 -0
  86. package/dist/program-worker.d.ts +1 -0
  87. package/dist/program-worker.js +31 -0
  88. package/dist/program-worker.js.map +1 -0
  89. package/dist/program.d.ts +85 -0
  90. package/dist/program.js +246 -0
  91. package/dist/program.js.map +1 -0
  92. package/dist/project-config.d.ts +91 -0
  93. package/dist/project-config.js +187 -0
  94. package/dist/project-config.js.map +1 -0
  95. package/dist/project.d.ts +897 -0
  96. package/dist/project.js +347 -0
  97. package/dist/project.js.map +1 -0
  98. package/dist/raster-edit.d.ts +61 -0
  99. package/dist/raster-edit.js +91 -0
  100. package/dist/raster-edit.js.map +1 -0
  101. package/dist/raster-studio.d.ts +84 -0
  102. package/dist/raster-studio.js +236 -0
  103. package/dist/raster-studio.js.map +1 -0
  104. package/dist/render.d.ts +79 -0
  105. package/dist/render.js +437 -0
  106. package/dist/render.js.map +1 -0
  107. package/dist/rich-text.d.ts +10 -0
  108. package/dist/rich-text.js +56 -0
  109. package/dist/rich-text.js.map +1 -0
  110. package/dist/schema.d.ts +1912 -0
  111. package/dist/schema.js +571 -0
  112. package/dist/schema.js.map +1 -0
  113. package/dist/spatial.d.ts +10 -0
  114. package/dist/spatial.js +29 -0
  115. package/dist/spatial.js.map +1 -0
  116. package/dist/studio-reference.d.ts +153 -0
  117. package/dist/studio-reference.js +39 -0
  118. package/dist/studio-reference.js.map +1 -0
  119. package/dist/svg.d.ts +5 -0
  120. package/dist/svg.js +315 -0
  121. package/dist/svg.js.map +1 -0
  122. package/dist/techniques.d.ts +74 -0
  123. package/dist/techniques.js +164 -0
  124. package/dist/techniques.js.map +1 -0
  125. package/dist/verify.d.ts +36 -0
  126. package/dist/verify.js +277 -0
  127. package/dist/verify.js.map +1 -0
  128. package/dist/viewport.d.ts +3 -0
  129. package/dist/viewport.js +71 -0
  130. package/dist/viewport.js.map +1 -0
  131. package/dist/workflow.d.ts +53 -0
  132. package/dist/workflow.js +66 -0
  133. package/dist/workflow.js.map +1 -0
  134. package/docs/agent-art-workflow.md +201 -0
  135. package/docs/agent-setup.md +83 -0
  136. package/docs/atelier.md +117 -0
  137. package/docs/cli-reference.md +61 -0
  138. package/docs/decisions/001-runtime-and-renderer.md +35 -0
  139. package/docs/decisions/002-composable-scenes-and-history.md +28 -0
  140. package/docs/decisions/003-editing-refinement-and-agent-validation.md +45 -0
  141. package/docs/decisions/004-print-production-and-projects.md +19 -0
  142. package/docs/decisions/005-programmable-digital-art.md +15 -0
  143. package/docs/decisions/006-staged-2d-art-production.md +13 -0
  144. package/docs/decisions/007-foundation-first-art-direction.md +13 -0
  145. package/docs/decisions/008-agent-onboarding-and-trial-lessons.md +48 -0
  146. package/docs/engine-overview.md +174 -0
  147. package/docs/evolution.md +179 -0
  148. package/docs/getting-started.md +107 -0
  149. package/docs/next-milestone.md +61 -0
  150. package/docs/previews/a3-production.json +36 -0
  151. package/docs/previews/benchmark.json +42 -0
  152. package/docs/previews/landscape.png +0 -0
  153. package/docs/previews/performance.json +24 -0
  154. package/docs/previews/poster.png +0 -0
  155. package/docs/production.md +107 -0
  156. package/docs/releasing.md +60 -0
  157. package/docs/scene-format.md +126 -0
  158. package/docs/studio.md +108 -0
  159. package/examples/hello/README.md +14 -0
  160. package/examples/hello/refine.json +10 -0
  161. package/examples/hello/render.mjs +9 -0
  162. package/examples/hello/scene.json +19 -0
  163. package/licenses/DM-Serif-Display-OFL.txt +93 -0
  164. package/licenses/Inter-OFL.txt +93 -0
  165. package/package.json +84 -0
  166. package/schemas/authoring.schema.json +2177 -0
  167. package/schemas/brief.schema.json +57 -0
  168. package/schemas/command.schema.json +3154 -0
  169. package/schemas/construction.schema.json +159 -0
  170. package/schemas/critique.schema.json +101 -0
  171. package/schemas/document.schema.json +41 -0
  172. package/schemas/export.schema.json +89 -0
  173. package/schemas/fragment.schema.json +1861 -0
  174. package/schemas/patch.schema.json +3177 -0
  175. package/schemas/pipeline.schema.json +205 -0
  176. package/schemas/production.schema.json +452 -0
  177. package/schemas/program.schema.json +152 -0
  178. package/schemas/project.schema.json +115 -0
  179. package/schemas/raster-read.schema.json +42 -0
  180. package/schemas/raster-write.schema.json +75 -0
  181. package/schemas/scene.schema.json +2014 -0
@@ -0,0 +1,591 @@
1
+ import { documentSchema } from './document.js';
2
+ import { pathSegmentSchema, pathData } from './path-edit.js';
3
+ import { shapePath } from './graphics.js';
4
+ import { PathOp } from './native.js';
5
+ import { inverse } from './spatial.js';
6
+ import { coordinateMatrix, worldScope } from './spatial.js';
7
+ import { z } from 'zod';
8
+ import { resolveLayout, flattenResolved } from './layout.js';
9
+ import { sceneSchema, fontSchema, assetSchema, rasterRegionSchema, shapeSchema, maskSchema, layoutSchema, generatorSchema, ruleSchema, blendSchema, boundsSchema, effectSchema, flattenLayers, layerSchema, paletteSchema, parseScene, rasterOperationSchema, styleSchema, } from './schema.js';
10
+ const target = { target: z.string() };
11
+ const stylePatchSchema = z.strictObject({
12
+ font: styleSchema.shape.font.removeDefault().optional(),
13
+ size: styleSchema.shape.size.removeDefault().optional(),
14
+ weight: styleSchema.shape.weight.removeDefault().optional(),
15
+ colour: styleSchema.shape.colour.removeDefault().optional(),
16
+ line_height: styleSchema.shape.line_height.removeDefault().optional(),
17
+ align: styleSchema.shape.align.removeDefault().optional(),
18
+ tracking: styleSchema.shape.tracking,
19
+ kerning: styleSchema.shape.kerning,
20
+ });
21
+ const geometryPatchSchema = z.strictObject({
22
+ bounds: layerSchema.shape.bounds,
23
+ width: layerSchema.shape.width,
24
+ height: layerSchema.shape.height,
25
+ anchor: layerSchema.shape.anchor.removeDefault().optional(),
26
+ aspect_ratio: layerSchema.shape.aspect_ratio,
27
+ grow: layerSchema.shape.grow,
28
+ });
29
+ export const commandSchema = z.discriminatedUnion('type', [
30
+ z.strictObject({ type: z.literal('restoreScene'), scene: sceneSchema }),
31
+ z.strictObject({ type: z.literal('setDocument'), document: documentSchema.nullable() }),
32
+ z.strictObject({
33
+ type: z.literal('setPath'),
34
+ ...target,
35
+ segments: z.array(pathSegmentSchema).min(1).max(4096),
36
+ }),
37
+ z.strictObject({
38
+ type: z.literal('setAffine'),
39
+ ...target,
40
+ matrix: layerSchema.shape.affine.unwrap().nullable(),
41
+ }),
42
+ z.strictObject({
43
+ type: z.literal('setCrop'),
44
+ ...target,
45
+ crop: boundsSchema.nullable(),
46
+ focal_point: layerSchema.shape.focal_point,
47
+ }),
48
+ z.strictObject({
49
+ type: z.literal('setPerspective'),
50
+ ...target,
51
+ corners: layerSchema.shape.perspective.unwrap().nullable(),
52
+ }),
53
+ z.strictObject({
54
+ type: z.literal('setTextRuns'),
55
+ ...target,
56
+ runs: layerSchema.shape.runs.unwrap(),
57
+ }),
58
+ z.strictObject({ type: z.literal('setParagraphStyle'), id: z.string(), style: styleSchema }),
59
+ z.strictObject({ type: z.literal('useParagraphStyle'), ...target, id: z.string() }),
60
+ z.strictObject({
61
+ type: z.literal('setAdjustmentStack'),
62
+ ...target,
63
+ operations: z.array(rasterOperationSchema).max(1000),
64
+ }),
65
+ z.strictObject({
66
+ type: z.literal('booleanPath'),
67
+ targets: z.array(z.string()).min(2).max(32),
68
+ id: z.string(),
69
+ operation: z.enum(['union', 'intersect', 'subtract', 'xor']),
70
+ }),
71
+ z.strictObject({ type: z.literal('registerFont'), id: z.string(), font: fontSchema }),
72
+ z.strictObject({ type: z.literal('removeFont'), id: z.string() }),
73
+ z.strictObject({ type: z.literal('promoteRegion'), ...target, region: rasterRegionSchema }),
74
+ z.strictObject({ type: z.literal('updateRegion'), ...target, region: rasterRegionSchema }),
75
+ z.strictObject({ type: z.literal('demoteRegion'), ...target, id: z.string() }),
76
+ z.strictObject({ type: z.literal('registerAsset'), id: z.string(), asset: assetSchema }),
77
+ z.strictObject({ type: z.literal('removeAsset'), id: z.string() }),
78
+ z.strictObject({ type: z.literal('setShape'), ...target, shape: shapeSchema }),
79
+ z.strictObject({ type: z.literal('setGenerator'), ...target, generator: generatorSchema }),
80
+ z.strictObject({
81
+ type: z.literal('setTransform'),
82
+ ...target,
83
+ transform: layerSchema.shape.transform.unwrap().nullable(),
84
+ }),
85
+ z.strictObject({ type: z.literal('setMask'), ...target, mask: maskSchema.nullable() }),
86
+ z.strictObject({ type: z.literal('setLayout'), ...target, layout: layoutSchema.nullable() }),
87
+ z.strictObject({ type: z.literal('setGeometry'), ...target, geometry: geometryPatchSchema }),
88
+ z.strictObject({
89
+ type: z.literal('setSource'),
90
+ ...target,
91
+ source: z.string(),
92
+ fit: layerSchema.shape.fit.removeDefault().optional(),
93
+ }),
94
+ z.strictObject({ type: z.literal('setVisibility'), ...target, visible: z.boolean() }),
95
+ z.strictObject({ type: z.literal('setRole'), ...target, role: z.string().nullable() }),
96
+ z.strictObject({ type: z.literal('setZ'), ...target, z: z.number().finite() }),
97
+ z.strictObject({ type: z.literal('setVerification'), rules: z.array(ruleSchema).max(256) }),
98
+ z.strictObject({
99
+ type: z.literal('updateEffect'),
100
+ ...target,
101
+ index: z.number().int().min(0),
102
+ effect: effectSchema,
103
+ }),
104
+ z.strictObject({ type: z.literal('removeEffect'), ...target, index: z.number().int().min(0) }),
105
+ z.strictObject({
106
+ type: z.literal('updateRasterOperation'),
107
+ ...target,
108
+ index: z.number().int().min(0),
109
+ operation: rasterOperationSchema,
110
+ }),
111
+ z.strictObject({
112
+ type: z.literal('removeRasterOperation'),
113
+ ...target,
114
+ index: z.number().int().min(0),
115
+ }),
116
+ z.strictObject({ type: z.literal('removeTile'), ...target, index: z.number().int().min(0) }),
117
+ z.strictObject({
118
+ type: z.literal('addLayer'),
119
+ layer: layerSchema,
120
+ parent: z.string().optional(),
121
+ }),
122
+ z.strictObject({ type: z.literal('removeLayer'), ...target }),
123
+ z.strictObject({
124
+ type: z.literal('moveLayer'),
125
+ ...target,
126
+ x: z.number().finite(),
127
+ y: z.number().finite(),
128
+ }),
129
+ z.strictObject({
130
+ type: z.literal('resizeLayer'),
131
+ ...target,
132
+ width: z.number().positive().max(8192),
133
+ height: z.number().positive().max(8192),
134
+ }),
135
+ z.strictObject({ type: z.literal('setOpacity'), ...target, opacity: z.number().min(0).max(1) }),
136
+ z.strictObject({ type: z.literal('setBlendMode'), ...target, blend_mode: blendSchema }),
137
+ z.strictObject({ type: z.literal('setText'), ...target, content: z.string().max(50000) }),
138
+ z.strictObject({ type: z.literal('setStyle'), ...target, style: stylePatchSchema }),
139
+ z.strictObject({ type: z.literal('applyEffect'), ...target, effect: effectSchema }),
140
+ z.strictObject({
141
+ type: z.literal('applyRasterOperation'),
142
+ ...target,
143
+ operation: rasterOperationSchema,
144
+ }),
145
+ z.strictObject({ type: z.literal('replaceTile'), ...target, tile: paletteSchema }),
146
+ z.strictObject({
147
+ type: z.literal('groupLayers'),
148
+ targets: z.array(z.string()).min(1),
149
+ id: z.string(),
150
+ role: z.string().optional(),
151
+ }),
152
+ z.strictObject({
153
+ type: z.literal('align'),
154
+ targets: z.array(z.string()).min(1),
155
+ axis: z.enum(['left', 'center', 'right', 'top', 'middle', 'bottom']),
156
+ }),
157
+ z.strictObject({
158
+ type: z.literal('distribute'),
159
+ targets: z.array(z.string()).min(3),
160
+ axis: z.enum(['horizontal', 'vertical']),
161
+ }),
162
+ ]);
163
+ export const patchSchema = z.strictObject({
164
+ commands: z.array(commandSchema).min(1).max(100),
165
+ reason: z.string().min(1).max(4000),
166
+ expected_hash: z.string().optional(),
167
+ });
168
+ export function findLayer(scene, id) {
169
+ const layer = flattenLayers(scene.layers).find((l) => l.id === id);
170
+ if (!layer)
171
+ throw new Error(`Unknown layer: ${id}`);
172
+ return layer;
173
+ }
174
+ function container(scene, id) {
175
+ function search(siblings, parent) {
176
+ if (siblings.some((l) => l.id === id))
177
+ return { siblings, parent };
178
+ for (const l of siblings) {
179
+ const match = search(l.children, l);
180
+ if (match)
181
+ return match;
182
+ }
183
+ }
184
+ const result = search(scene.layers);
185
+ if (!result)
186
+ throw new Error(`Unknown layer: ${id}`);
187
+ return result;
188
+ }
189
+ export function applyCommand(input, raw) {
190
+ const command = commandSchema.parse(raw), scene = structuredClone(input);
191
+ const layer = 'target' in command ? findLayer(scene, command.target) : undefined;
192
+ const nodes = flattenResolved(resolveLayout(scene));
193
+ function absolute(target) {
194
+ const box = nodes.find((n) => n.layer.id === target.id).bounds;
195
+ const parent = container(scene, target.id).parent;
196
+ if (parent?.layout && parent.layout.type !== 'absolute')
197
+ throw new Error('Move/resize/alignment require an absolute-layout parent');
198
+ target.bounds = [...box];
199
+ target.anchor = 'top-left';
200
+ delete target.width;
201
+ delete target.height;
202
+ return target.bounds;
203
+ }
204
+ function attach(value) {
205
+ if (value.space === 'layer' && !value.reference_size) {
206
+ const node = nodes.find((n) => n.layer.id === layer.id);
207
+ value.reference_size = [node.bounds[2], node.bounds[3]];
208
+ }
209
+ if ('mask' in value && value.mask)
210
+ attach(value.mask);
211
+ return value;
212
+ }
213
+ function replaceAt(items, index, value) {
214
+ if (index >= items.length)
215
+ throw new Error(`Index ${index} is out of range`);
216
+ if (value === undefined)
217
+ items.splice(index, 1);
218
+ else
219
+ items[index] = value;
220
+ }
221
+ switch (command.type) {
222
+ case 'restoreScene':
223
+ return parseScene(command.scene);
224
+ case 'setDocument':
225
+ if (command.document)
226
+ scene.document = command.document;
227
+ else
228
+ delete scene.document;
229
+ break;
230
+ case 'setPath':
231
+ if (layer.shape?.type !== 'path')
232
+ throw new Error('setPath requires a path shape');
233
+ layer.shape.d = pathData(command.segments);
234
+ break;
235
+ case 'setAffine':
236
+ if (command.matrix) {
237
+ layer.affine = command.matrix;
238
+ delete layer.transform;
239
+ }
240
+ else
241
+ delete layer.affine;
242
+ break;
243
+ case 'setCrop':
244
+ if (!layer.source)
245
+ throw new Error('Crop requires an image layer');
246
+ if (command.crop)
247
+ layer.crop = command.crop;
248
+ else
249
+ delete layer.crop;
250
+ if (command.focal_point)
251
+ layer.focal_point = command.focal_point;
252
+ break;
253
+ case 'setPerspective':
254
+ if (!layer.source)
255
+ throw new Error('Perspective requires an image layer');
256
+ if (command.corners)
257
+ layer.perspective = command.corners;
258
+ else
259
+ delete layer.perspective;
260
+ break;
261
+ case 'setTextRuns':
262
+ if (layer.type !== 'text')
263
+ throw new Error('Text runs require text layer');
264
+ layer.runs = command.runs;
265
+ layer.content = command.runs.map((r) => r.text).join('');
266
+ break;
267
+ case 'setParagraphStyle':
268
+ (scene.paragraph_styles ??= {})[command.id] = command.style;
269
+ for (const l of flattenLayers(scene.layers))
270
+ if (l.paragraph_style === command.id)
271
+ l.style = structuredClone(command.style);
272
+ break;
273
+ case 'useParagraphStyle':
274
+ if (layer.type !== 'text' || !scene.paragraph_styles?.[command.id])
275
+ throw new Error('Unknown paragraph style or non-text target');
276
+ layer.paragraph_style = command.id;
277
+ layer.style = structuredClone(scene.paragraph_styles[command.id]);
278
+ break;
279
+ case 'setAdjustmentStack':
280
+ layer.operations = command.operations.map(attach);
281
+ break;
282
+ case 'booleanPath': {
283
+ const selected = command.targets.map((id) => findLayer(scene, id));
284
+ if (new Set(command.targets).size !== selected.length)
285
+ throw new Error('Duplicate path operands');
286
+ if (selected.some((l) => l.mask ||
287
+ l.operations.length ||
288
+ l.effects.length ||
289
+ l.tiles.length ||
290
+ l.regions?.length))
291
+ throw new Error('Boolean operands must be unmasked vector geometry without raster effects');
292
+ if (selected.some((l) => l.type !== 'vector'))
293
+ throw new Error('Path booleans require vector operands');
294
+ const parent = container(scene, selected[0].id).parent;
295
+ if (selected.some((l) => container(scene, l.id).parent !== parent))
296
+ throw new Error('Path operands must share a parent');
297
+ if (parent?.layout && parent.layout.type !== 'absolute')
298
+ throw new Error('Path booleans require absolute layout');
299
+ const parentMatrix = parent
300
+ ? nodes.find((n) => n.layer.id === parent.id).matrix
301
+ : [1, 0, 0, 1, 0, 0];
302
+ const inv = inverse([...parentMatrix]);
303
+ const map = {
304
+ union: PathOp.Union,
305
+ intersect: PathOp.Intersect,
306
+ subtract: PathOp.Difference,
307
+ xor: PathOp.Xor,
308
+ };
309
+ const transform = (p, m) => p.transform({ a: m[0], b: m[1], c: m[2], d: m[3], e: m[4], f: m[5] });
310
+ const paths = selected.map((l) => {
311
+ const n = nodes.find((n) => n.layer.id === l.id);
312
+ return transform(transform(shapePath(l, n.bounds[2], n.bounds[3]), n.matrix), inv);
313
+ });
314
+ const path = paths.slice(1).reduce((p, q) => p.op(q, map[command.operation]), paths[0]);
315
+ const [x, y, right, bottom] = path.computeTightBounds();
316
+ if (right <= x || bottom <= y)
317
+ throw new Error('Boolean result is empty');
318
+ const result = layerSchema.parse({
319
+ id: command.id,
320
+ type: 'vector',
321
+ bounds: [x, y, right - x, bottom - y],
322
+ shape: {
323
+ type: 'path',
324
+ fill: selected[0].shape.fill,
325
+ stroke: selected[0].shape.stroke,
326
+ stroke_width: selected[0].shape.stroke_width,
327
+ d: transform(path, [1, 0, 0, 1, -x, -y]).toSVGString(),
328
+ },
329
+ });
330
+ const siblings = container(scene, selected[0].id).siblings;
331
+ for (let i = siblings.length - 1; i >= 0; i--)
332
+ if (command.targets.includes(siblings[i].id))
333
+ siblings.splice(i, 1);
334
+ siblings.push(result);
335
+ break;
336
+ }
337
+ case 'promoteRegion':
338
+ if (layer.regions?.some((r) => r.id === command.region.id))
339
+ throw new Error('Region already exists');
340
+ (layer.regions ??= []).push(attach(command.region));
341
+ break;
342
+ case 'updateRegion': {
343
+ const i = layer.regions?.findIndex((r) => r.id === command.region.id) ?? -1;
344
+ if (i < 0)
345
+ throw new Error('Unknown region');
346
+ layer.regions[i] = attach(command.region);
347
+ break;
348
+ }
349
+ case 'demoteRegion': {
350
+ const i = layer.regions?.findIndex((r) => r.id === command.id) ?? -1;
351
+ if (i < 0)
352
+ throw new Error('Unknown region');
353
+ layer.regions.splice(i, 1);
354
+ break;
355
+ }
356
+ case 'registerFont':
357
+ (scene.fonts ??= {})[command.id] = command.font;
358
+ break;
359
+ case 'removeFont':
360
+ if (!Object.hasOwn(scene.fonts ?? {}, command.id))
361
+ throw new Error('Unknown font');
362
+ delete scene.fonts[command.id];
363
+ break;
364
+ case 'registerAsset':
365
+ scene.assets[command.id] = command.asset;
366
+ break;
367
+ case 'removeAsset':
368
+ if (!Object.hasOwn(scene.assets, command.id))
369
+ throw new Error('Unknown asset');
370
+ delete scene.assets[command.id];
371
+ break;
372
+ case 'setShape':
373
+ layer.shape = command.shape;
374
+ break;
375
+ case 'setGenerator':
376
+ layer.generator = command.generator;
377
+ break;
378
+ case 'setTransform':
379
+ delete layer.affine;
380
+ if (command.transform)
381
+ layer.transform = command.transform;
382
+ else
383
+ delete layer.transform;
384
+ break;
385
+ case 'setMask':
386
+ if (command.mask)
387
+ layer.mask = attach(command.mask);
388
+ else
389
+ delete layer.mask;
390
+ break;
391
+ case 'setLayout':
392
+ if (command.layout)
393
+ layer.layout = command.layout;
394
+ else
395
+ delete layer.layout;
396
+ break;
397
+ case 'setGeometry':
398
+ Object.assign(layer, command.geometry);
399
+ break;
400
+ case 'setSource':
401
+ layer.source = command.source;
402
+ if (command.fit)
403
+ layer.fit = command.fit;
404
+ break;
405
+ case 'setVisibility':
406
+ layer.visible = command.visible;
407
+ break;
408
+ case 'setRole':
409
+ if (command.role !== null)
410
+ layer.role = command.role;
411
+ else
412
+ delete layer.role;
413
+ break;
414
+ case 'setZ':
415
+ layer.z = command.z;
416
+ break;
417
+ case 'setVerification':
418
+ scene.verification.rules = command.rules;
419
+ break;
420
+ case 'updateEffect':
421
+ replaceAt(layer.effects, command.index, command.effect);
422
+ break;
423
+ case 'removeEffect':
424
+ replaceAt(layer.effects, command.index);
425
+ break;
426
+ case 'updateRasterOperation':
427
+ replaceAt(layer.operations, command.index, attach(command.operation));
428
+ break;
429
+ case 'removeRasterOperation':
430
+ replaceAt(layer.operations, command.index);
431
+ break;
432
+ case 'removeTile':
433
+ replaceAt(layer.tiles, command.index);
434
+ break;
435
+ case 'addLayer': {
436
+ const parent = command.parent ? findLayer(scene, command.parent) : undefined;
437
+ if (parent && parent.type !== 'group')
438
+ throw new Error('Parent must be a group');
439
+ (parent?.children ?? scene.layers).push(command.layer);
440
+ break;
441
+ }
442
+ case 'removeLayer': {
443
+ const { siblings } = container(scene, command.target);
444
+ siblings.splice(siblings.findIndex((l) => l.id === command.target), 1);
445
+ break;
446
+ }
447
+ case 'moveLayer': {
448
+ const b = absolute(layer);
449
+ b[0] = command.x;
450
+ b[1] = command.y;
451
+ break;
452
+ }
453
+ case 'resizeLayer': {
454
+ const b = absolute(layer);
455
+ b[2] = command.width;
456
+ b[3] = command.height;
457
+ break;
458
+ }
459
+ case 'setOpacity':
460
+ layer.opacity = command.opacity;
461
+ break;
462
+ case 'setBlendMode':
463
+ layer.blend_mode = command.blend_mode;
464
+ break;
465
+ case 'setText':
466
+ if (layer.type !== 'text')
467
+ throw new Error('setText requires a text layer');
468
+ layer.content = command.content;
469
+ delete layer.runs;
470
+ break;
471
+ case 'setStyle':
472
+ if (layer.type !== 'text')
473
+ throw new Error('setStyle requires a text layer');
474
+ layer.style = styleSchema.parse({ ...layer.style, ...command.style });
475
+ break;
476
+ case 'applyEffect':
477
+ layer.effects.push(command.effect);
478
+ break;
479
+ case 'applyRasterOperation':
480
+ layer.operations.push(attach(command.operation));
481
+ break;
482
+ case 'replaceTile': {
483
+ attach(command.tile);
484
+ const tileIndex = layer.tiles.findIndex((t) => t.bounds.every((v, i) => v === command.tile.bounds[i]));
485
+ if (tileIndex >= 0)
486
+ layer.tiles[tileIndex] = command.tile;
487
+ else
488
+ layer.tiles.push(command.tile);
489
+ break;
490
+ }
491
+ case 'groupLayers': {
492
+ if (new Set(command.targets).size !== command.targets.length)
493
+ throw new Error('Duplicate group targets');
494
+ const { siblings, parent } = container(scene, command.targets[0]);
495
+ if (command.targets.some((id) => container(scene, id).siblings !== siblings))
496
+ throw new Error('Grouped layers must be siblings');
497
+ if (parent?.layout && parent.layout.type !== 'absolute')
498
+ throw new Error('Grouping requires an absolute-layout parent');
499
+ const selected = siblings.filter((l) => command.targets.includes(l.id));
500
+ for (const selectedLayer of selected)
501
+ absolute(selectedLayer);
502
+ const parentNode = parent ? nodes.find((n) => n.layer.id === parent.id) : undefined;
503
+ const bounds = [
504
+ 0,
505
+ 0,
506
+ parentNode?.bounds[2] ?? scene.canvas.width,
507
+ parentNode?.bounds[3] ?? scene.canvas.height,
508
+ ];
509
+ const group = layerSchema.parse({
510
+ id: command.id,
511
+ type: 'group',
512
+ role: command.role,
513
+ bounds,
514
+ z: Math.min(...selected.map((l) => l.z)),
515
+ children: selected,
516
+ });
517
+ const start = siblings.indexOf(selected[0]);
518
+ for (let i = siblings.length - 1; i >= 0; i--)
519
+ if (command.targets.includes(siblings[i].id))
520
+ siblings.splice(i, 1);
521
+ siblings.splice(start, 0, group);
522
+ break;
523
+ }
524
+ case 'align':
525
+ case 'distribute': {
526
+ if (new Set(command.targets).size !== command.targets.length)
527
+ throw new Error('Duplicate targets');
528
+ const selected = command.targets.map((id) => findLayer(scene, id)), base = container(scene, selected[0].id);
529
+ if (selected.some((l) => container(scene, l.id).siblings !== base.siblings))
530
+ throw new Error('Alignment targets must be siblings');
531
+ const boxes = selected.map(absolute);
532
+ if (command.type === 'align') {
533
+ const horizontal = ['left', 'center', 'right'].includes(command.axis), p = horizontal ? 0 : 1, s = horizontal ? 2 : 3;
534
+ const lo = Math.min(...boxes.map((b) => b[p])), hi = Math.max(...boxes.map((b) => b[p] + b[s]));
535
+ for (const b of boxes)
536
+ b[p] = ['left', 'top'].includes(command.axis)
537
+ ? lo
538
+ : ['right', 'bottom'].includes(command.axis)
539
+ ? hi - b[s]
540
+ : (lo + hi - b[s]) / 2;
541
+ }
542
+ else {
543
+ const p = command.axis === 'horizontal' ? 0 : 1, s = p + 2;
544
+ boxes.sort((a, b) => a[p] - b[p]);
545
+ const lo = boxes[0][p], hi = boxes.at(-1)[p] + boxes.at(-1)[s], gap = (hi - lo - boxes.reduce((sum, b) => sum + b[s], 0)) / (boxes.length - 1);
546
+ let cursor = lo;
547
+ for (const b of boxes) {
548
+ b[p] = cursor;
549
+ cursor += b[s] + gap;
550
+ }
551
+ }
552
+ break;
553
+ }
554
+ }
555
+ return parseScene(scene);
556
+ }
557
+ export function commandScopes(command, before, after) {
558
+ const scopes = [];
559
+ function add(value, scene) {
560
+ const node = flattenResolved(resolveLayout(scene)).find((n) => n.layer.id === ('target' in command ? command.target : ''));
561
+ scopes.push(value.space === 'layer'
562
+ ? worldScope(value.bounds, coordinateMatrix(value, node))
563
+ : value.bounds);
564
+ }
565
+ if (command.type === 'promoteRegion' || command.type === 'updateRegion')
566
+ add(findLayer(after, command.target).regions.find((r) => r.id === command.region.id), after);
567
+ if (command.type === 'updateRegion' || command.type === 'demoteRegion') {
568
+ const id = command.type === 'demoteRegion' ? command.id : command.region.id;
569
+ add(findLayer(before, command.target).regions.find((r) => r.id === id), before);
570
+ }
571
+ if (command.type === 'setAdjustmentStack') {
572
+ for (const value of findLayer(before, command.target).operations)
573
+ add(value, before);
574
+ for (const value of findLayer(after, command.target).operations)
575
+ add(value, after);
576
+ }
577
+ if (command.type === 'applyRasterOperation')
578
+ add(findLayer(after, command.target).operations.at(-1), after);
579
+ if (command.type === 'updateRasterOperation') {
580
+ add(findLayer(after, command.target).operations[command.index], after);
581
+ add(findLayer(before, command.target).operations[command.index], before);
582
+ }
583
+ if (command.type === 'replaceTile')
584
+ add(command.tile, after);
585
+ if (command.type === 'removeRasterOperation')
586
+ add(findLayer(before, command.target).operations[command.index], before);
587
+ if (command.type === 'removeTile')
588
+ add(findLayer(before, command.target).tiles[command.index], before);
589
+ return scopes;
590
+ }
591
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const componentSchema: z.ZodObject<{
3
+ parameters: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
4
+ layers: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5
+ }, z.core.$strict>;
6
+ export type Component = z.infer<typeof componentSchema>;
7
+ export declare const componentsSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
8
+ parameters: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
9
+ layers: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
10
+ }, z.core.$strict>>;
11
+ export declare const instanceSchema: z.ZodObject<{
12
+ use: z.ZodString;
13
+ id: z.ZodString;
14
+ params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
15
+ bounds: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
16
+ role: z.ZodOptional<z.ZodString>;
17
+ z: z.ZodOptional<z.ZodNumber>;
18
+ transform: z.ZodOptional<z.ZodUnknown>;
19
+ }, z.core.$strict>;
20
+ export declare function expandComponents(input: unknown[], definitions: Record<string, Component>, stack?: string[]): unknown[];