@pixerate/editor 0.107.0 → 0.109.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 (78) hide show
  1. package/THIRD_PARTY_NOTICES.md +4 -0
  2. package/dist/animation/index.cjs +5 -5
  3. package/dist/animation/index.cjs.map +1 -1
  4. package/dist/animation/index.js +9 -9
  5. package/dist/animation-editor/index.cjs +59 -59
  6. package/dist/animation-editor/index.cjs.map +1 -1
  7. package/dist/animation-editor/index.d.cts +2 -1
  8. package/dist/animation-editor/index.d.ts +2 -1
  9. package/dist/animation-editor/index.js +29 -29
  10. package/dist/canvas/index.cjs +27 -27
  11. package/dist/canvas/index.cjs.map +1 -1
  12. package/dist/canvas/index.js +11 -11
  13. package/dist/{chunk-2FGRTYJN.cjs → chunk-477UVMNR.cjs} +3 -3
  14. package/dist/{chunk-2FGRTYJN.cjs.map → chunk-477UVMNR.cjs.map} +1 -1
  15. package/dist/{chunk-T3QZ6S47.cjs → chunk-AZTZRLDI.cjs} +40 -2
  16. package/dist/chunk-AZTZRLDI.cjs.map +1 -0
  17. package/dist/{chunk-63EFQCT5.js → chunk-BLWCAQCW.js} +2879 -3362
  18. package/dist/chunk-BLWCAQCW.js.map +1 -0
  19. package/dist/{chunk-G4BIYE6R.js → chunk-CFMWALBM.js} +39 -1
  20. package/dist/chunk-CFMWALBM.js.map +1 -0
  21. package/dist/{chunk-FRD3FUXI.cjs → chunk-D37BX2ZA.cjs} +2081 -460
  22. package/dist/chunk-D37BX2ZA.cjs.map +1 -0
  23. package/dist/chunk-JLYX4V57.cjs +2001 -0
  24. package/dist/chunk-JLYX4V57.cjs.map +1 -0
  25. package/dist/chunk-KB2YBCVS.js +2001 -0
  26. package/dist/chunk-KB2YBCVS.js.map +1 -0
  27. package/dist/{chunk-SOROZ2BF.js → chunk-RE77QYUF.js} +1938 -317
  28. package/dist/chunk-RE77QYUF.js.map +1 -0
  29. package/dist/{chunk-KANRAHTL.cjs → chunk-W3GXSUSQ.cjs} +2830 -3313
  30. package/dist/chunk-W3GXSUSQ.cjs.map +1 -0
  31. package/dist/{chunk-JK6M6V7G.js → chunk-Z3YWVUWT.js} +4 -4
  32. package/dist/{export-a9bnF7Cl.d.ts → export-BLPLaE6Z.d.ts} +417 -16
  33. package/dist/{export-JGWQEPJn.d.cts → export-DSUc4fQD.d.cts} +417 -16
  34. package/dist/image-editor/index.cjs +1527 -1001
  35. package/dist/image-editor/index.cjs.map +1 -1
  36. package/dist/image-editor/index.d.cts +73 -9
  37. package/dist/image-editor/index.d.ts +73 -9
  38. package/dist/image-editor/index.js +814 -288
  39. package/dist/image-editor/index.js.map +1 -1
  40. package/dist/paint-editor/index.cjs +252 -64
  41. package/dist/paint-editor/index.cjs.map +1 -1
  42. package/dist/paint-editor/index.d.cts +101 -4
  43. package/dist/paint-editor/index.d.ts +101 -4
  44. package/dist/paint-editor/index.js +196 -8
  45. package/dist/paint-editor/index.js.map +1 -1
  46. package/dist/raster/index.cjs +4 -2
  47. package/dist/raster/index.cjs.map +1 -1
  48. package/dist/raster/index.d.cts +3 -129
  49. package/dist/raster/index.d.ts +3 -129
  50. package/dist/raster/index.js +3 -1
  51. package/dist/{compositor-D92URMlm.d.cts → render-C-fO_mes.d.cts} +135 -1
  52. package/dist/{compositor-Kt_M4ruo.d.ts → render-OLIMk_v0.d.ts} +135 -1
  53. package/dist/{svg-vme0PLNo.d.ts → svg-D_cfkhlB.d.cts} +6 -608
  54. package/dist/{svg-Bj1MQFh6.d.cts → svg-wIaKLrU0.d.ts} +6 -608
  55. package/dist/types-DtL_qLFz.d.ts +630 -0
  56. package/dist/types-DyQq-WPY.d.cts +630 -0
  57. package/dist/vector/index.cjs +1080 -1051
  58. package/dist/vector/index.cjs.map +1 -1
  59. package/dist/vector/index.d.cts +268 -7
  60. package/dist/vector/index.d.ts +268 -7
  61. package/dist/vector/index.js +495 -466
  62. package/dist/vector/index.js.map +1 -1
  63. package/dist/video-editor/index.cjs +3 -3
  64. package/dist/video-editor/index.js +2 -2
  65. package/package.json +1 -1
  66. package/skills/pixerate-image-editor/SKILL.md +50 -7
  67. package/skills/pixerate-vector/SKILL.md +35 -5
  68. package/dist/chunk-63EFQCT5.js.map +0 -1
  69. package/dist/chunk-DWGZUSES.cjs +0 -694
  70. package/dist/chunk-DWGZUSES.cjs.map +0 -1
  71. package/dist/chunk-FRD3FUXI.cjs.map +0 -1
  72. package/dist/chunk-G4BIYE6R.js.map +0 -1
  73. package/dist/chunk-KANRAHTL.cjs.map +0 -1
  74. package/dist/chunk-KKREERP2.js +0 -694
  75. package/dist/chunk-KKREERP2.js.map +0 -1
  76. package/dist/chunk-SOROZ2BF.js.map +0 -1
  77. package/dist/chunk-T3QZ6S47.cjs.map +0 -1
  78. /package/dist/{chunk-JK6M6V7G.js.map → chunk-Z3YWVUWT.js.map} +0 -0
@@ -1,609 +1,5 @@
1
- import { C as CanvasGradientDef, B as BezierPath, A as AffineMatrix, S as SvgGradientDef } from './bezier-DYBvLgUH.js';
2
- import { W as WarpStyle, a as WarpMesh } from './types-CwMPoRMU.js';
3
-
4
- /** An affine matrix `[a, b, c, d, e, f]`: `x' = a·x + c·y + e`, `y' = b·x + d·y + f` (SVG order). */
5
- type VectorMatrix = readonly [number, number, number, number, number, number];
6
- /** A point in document coordinates. */
7
- interface Vec2 {
8
- x: number;
9
- y: number;
10
- }
11
- /**
12
- * How an anchor's handles relate:
13
- * - `corner`: handles move independently (or are absent).
14
- * - `smooth`: handles stay on one line through the anchor, lengths independent.
15
- * - `symmetric`: handles stay on one line with equal lengths.
16
- */
17
- type VectorAnchorType = 'corner' | 'smooth' | 'symmetric';
18
- /**
19
- * Live corner shapes: `round` (an arc tangent to both sides), `inverted` (an arc centred on
20
- * the corner, cut into the shape) and `chamfer` (a straight bevel).
21
- */
22
- type VectorCornerKind = 'round' | 'inverted' | 'chamfer';
23
- declare const VECTOR_CORNER_KINDS: readonly VectorCornerKind[];
24
- /**
25
- * A live corner: drawn rounded (or cut) at render, hit-test, bounds, boolean, outline and export
26
- * time while the stored anchor stays sharp. The radius shrinks to fit when the sides are short:
27
- * the cut reaches at most halfway along each side.
28
- */
29
- interface VectorCorner {
30
- radius: number;
31
- /** Default `round`. */
32
- kind?: VectorCornerKind;
33
- }
34
- /**
35
- * One anchor of a subpath. Handles are absolute document positions; a missing (or `null`)
36
- * handle sits on the anchor, so a segment with no handles at either end is a straight line.
37
- */
38
- interface VectorAnchor {
39
- x: number;
40
- y: number;
41
- /** Control point of the segment arriving at this anchor. */
42
- in?: Vec2 | null;
43
- /** Control point of the segment leaving this anchor. */
44
- out?: Vec2 | null;
45
- /** Default `corner`. */
46
- type?: VectorAnchorType;
47
- /** Live corner radius. Ignored on smooth / symmetric anchors and the ends of open subpaths. */
48
- corner?: VectorCorner | null;
49
- }
50
- /** A chain of anchors joined by line or cubic Bézier segments. */
51
- interface VectorSubpath {
52
- anchors: VectorAnchor[];
53
- /** Joins the last anchor back to the first. */
54
- closed: boolean;
55
- }
56
- /**
57
- * Gradient styles: `linear` (start → end), `radial` (centred on the start, reaching the end;
58
- * focal point and aspect), `conic` (an angle sweep around the start, from the end's direction
59
- * towards the aspect handle's: clockwise on screen), `reflected` (linear mirrored about the
60
- * start) and `diamond` (`|u| + |v|` in the gradient's frame: a rhombus through the end and the
61
- * aspect handle).
62
- */
63
- type VectorGradientType = 'linear' | 'radial' | 'conic' | 'reflected' | 'diamond';
64
- declare const VECTOR_GRADIENT_TYPES: readonly VectorGradientType[];
65
- /** What a gradient paints past its ends: the end colours, mirrored periods or repeated periods. */
66
- type VectorGradientSpread = 'pad' | 'reflect' | 'repeat';
67
- declare const VECTOR_GRADIENT_SPREADS: readonly VectorGradientSpread[];
68
- /** Where colours mix between stops: sRGB (SVG's own), linear light or Oklab. */
69
- type VectorGradientInterpolation = 'srgb' | 'linear' | 'oklab';
70
- declare const VECTOR_GRADIENT_INTERPOLATIONS: readonly VectorGradientInterpolation[];
71
- /**
72
- * The space a gradient's points are in: fractions of the shape's bounding box (SVG's
73
- * `objectBoundingBox`, the default) or the node's own coordinates (`userSpaceOnUse`).
74
- */
75
- type VectorGradientUnits = 'objectBoundingBox' | 'userSpaceOnUse';
76
- /**
77
- * How a gradient lies on a stroke: `within` (laid over the stroke's area like a fill), `along`
78
- * (t runs from 0 at the start of each subpath to 1 at its end) or `across` (from the stroke's
79
- * left edge to its right edge, looking along the path).
80
- */
81
- type VectorStrokeGradientMode = 'within' | 'along' | 'across';
82
- declare const VECTOR_STROKE_GRADIENT_MODES: readonly VectorStrokeGradientMode[];
83
- /** A colour stop. `opacity` multiplies the colour's own alpha. */
84
- interface VectorGradientStop {
85
- /** 0–1. */
86
- offset: number;
87
- color: string;
88
- /** 0–1, default 1. */
89
- opacity?: number;
90
- /**
91
- * Where, between this stop and the next (0–1 of the way), the colour is half-way between
92
- * them. Default 0.5 (an even mix).
93
- */
94
- midpoint?: number;
95
- }
96
- /**
97
- * A gradient paint. `CanvasGradientDef` (the canvas package's linear `angle` / radial
98
- * `cx, cy, r` gradients) is a valid value: those fields are the shorthand form. Explicit
99
- * geometry (`start` / `end`, in `units`) wins over the shorthand.
100
- */
101
- interface VectorGradient {
102
- type: VectorGradientType;
103
- stops: VectorGradientStop[];
104
- /**
105
- * Shorthand direction in degrees, CSS style (0 points up, clockwise): a linear or reflected
106
- * gradient's direction across the box (default 180), a conic gradient's start angle or a
107
- * diamond's turn (default 90).
108
- */
109
- angle?: number;
110
- /** Shorthand centre and radius of radial, conic and diamond gradients (fractions of the box, default 0.5). */
111
- cx?: number;
112
- cy?: number;
113
- r?: number;
114
- /** Where t = 0: a linear gradient's start, the centre of the other styles. */
115
- start?: Vec2;
116
- /** Where t = 1 along the gradient's main axis (a radial gradient's radius). */
117
- end?: Vec2;
118
- /**
119
- * The end of the secondary axis (radial, conic and diamond): its distance from `start` over
120
- * the main axis' length is the aspect ratio. Absent: square to the main axis, as long.
121
- */
122
- width?: Vec2 | null;
123
- /** A radial gradient's focal point (where t = 0); absent: the centre. */
124
- focal?: Vec2 | null;
125
- /** Radius of the focal circle as a fraction of the radius (SVG `fr`, default 0). */
126
- focalRadius?: number;
127
- /** Space of `start`, `end`, `width` and `focal` (default `objectBoundingBox`). */
128
- units?: VectorGradientUnits;
129
- /** Default `pad`. */
130
- spread?: VectorGradientSpread;
131
- /** Default `srgb`. */
132
- interpolation?: VectorGradientInterpolation;
133
- /**
134
- * 0–1: how far the colours follow a smooth spline through the stops instead of straight
135
- * lines (Photoshop's Smoothness). Default 0.
136
- */
137
- smoothness?: number;
138
- /** On a stroke: how the gradient lies on it (default `within`). Ignored on fills. */
139
- strokeMode?: VectorStrokeGradientMode;
140
- }
141
- /** A fill or stroke: any CSS colour, a gradient, or `null` / `'none'` for no paint. */
142
- type VectorPaint = string | VectorGradient | CanvasGradientDef | null;
143
- type VectorFillRule = 'nonzero' | 'evenodd';
144
- type VectorLineCap = 'butt' | 'round' | 'square';
145
- type VectorLineJoin = 'miter' | 'round' | 'bevel';
146
- /**
147
- * Where the stroke sits on the outline: centred on it, inside the shape or outside it. Only
148
- * shapes whose subpaths are all closed have an inside; open paths always stroke centred.
149
- */
150
- type VectorStrokeAlign = 'center' | 'inside' | 'outside';
151
- /** Arrowheads and end markers for the ends of open paths. */
152
- type VectorArrowhead = 'triangle' | 'arrow' | 'open' | 'circle' | 'square' | 'bar';
153
- declare const VECTOR_ARROWHEADS: readonly VectorArrowhead[];
154
- /**
155
- * `extend`: the head's tip sits past the end point and the path keeps its length; `tip`: the
156
- * tip sits on the end point and the stroke is shortened under the head.
157
- */
158
- type VectorArrowAlign = 'extend' | 'tip';
159
- /**
160
- * One point of a variable-width stroke profile. `t` is the position along the subpath by
161
- * length (0 at its start, 1 at its end); `left` and `right` are how far the stroke reaches on
162
- * each side, as multiples of half the stroke width (looking along the path on screen, y down).
163
- * A uniform stroke has 1 on both sides. Two points at the same `t` make a step.
164
- */
165
- interface VectorWidthPoint {
166
- t: number;
167
- left: number;
168
- right: number;
169
- }
170
- /**
171
- * Blend modes of paint layers and nodes: the set SVG and CSS `mix-blend-mode` draw, named as the
172
- * image editor names them (`@pixerate/editor/image-editor` `BlendMode`). `linear-dodge` draws as
173
- * CSS `plus-lighter`. The image editor's other modes (linear burn, vivid light, pigment, …) have
174
- * no SVG equivalent and are not offered.
175
- */
176
- type VectorBlendMode = 'normal' | 'darken' | 'multiply' | 'color-burn' | 'lighten' | 'screen' | 'color-dodge' | 'linear-dodge' | 'overlay' | 'soft-light' | 'hard-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity';
177
- /** Every vector blend mode, in the image editor's (Photoshop's) menu order. */
178
- declare const VECTOR_BLEND_MODES: readonly VectorBlendMode[];
179
- /** One fill of a path's fill stack (`VectorStyle.fills`). */
180
- interface VectorPaintLayer {
181
- /** A colour, a gradient, or `null` for none. */
182
- paint: VectorPaint;
183
- /** 0–1, default 1. Multiplies the paint's own alpha. */
184
- opacity?: number;
185
- /** How the layer mixes with what is under it (the layers below, then the backdrop). Default `normal`. */
186
- blendMode?: VectorBlendMode;
187
- /** Hidden layers are kept but not drawn or hit. Default true. */
188
- visible?: boolean;
189
- }
190
- /** The settings each stroke layer has of its own (the stroke shorthand fields of `VectorStyle`). */
191
- type VectorStrokeSettings = Pick<VectorStyle, 'strokeWidth' | 'strokeLinecap' | 'strokeLinejoin' | 'strokeDasharray' | 'strokeAlign' | 'startArrow' | 'endArrow' | 'arrowAlign' | 'startArrowScale' | 'endArrowScale' | 'strokeWidthProfile'>;
192
- /**
193
- * What a stroke layer draws. Only `paint` (a paint along the outline, the default) exists today.
194
- * Other kinds are the extension point for strokes drawn some other way, such as a raster
195
- * brushstroke from `@pixerate/editor/paint` laid along the path: a layer with an unknown kind is
196
- * kept through edits, load and SVG round trips, listed to agents, and skipped when drawing and
197
- * hit-testing.
198
- */
199
- type VectorStrokeLayerKind = 'paint';
200
- /** One stroke of a path's stroke stack (`VectorStyle.strokes`): a paint plus its own stroke settings. */
201
- interface VectorStrokeLayer extends VectorPaintLayer, VectorStrokeSettings {
202
- /** Default `paint`. See `VectorStrokeLayerKind`. */
203
- kind?: VectorStrokeLayerKind;
204
- }
205
- /** Paint and stroke settings of a path. */
206
- interface VectorStyle {
207
- fill?: VectorPaint;
208
- stroke?: VectorPaint;
209
- /** Default 1. */
210
- strokeWidth?: number;
211
- strokeLinecap?: VectorLineCap;
212
- strokeLinejoin?: VectorLineJoin;
213
- strokeDasharray?: number[];
214
- /** Default `nonzero`. */
215
- fillRule?: VectorFillRule;
216
- /** Default `center`. */
217
- strokeAlign?: VectorStrokeAlign;
218
- /** Head at the start of the first subpath when it is open, or none. */
219
- startArrow?: VectorArrowhead | null;
220
- /** Head at the end of the last subpath when it is open, or none. */
221
- endArrow?: VectorArrowhead | null;
222
- /** Default `extend`. */
223
- arrowAlign?: VectorArrowAlign;
224
- /** Size of the start head as a multiple of the stroke width (default 1: a head 4 widths long). */
225
- startArrowScale?: number;
226
- /** Size of the end head (default 1). */
227
- endArrowScale?: number;
228
- /**
229
- * Variable width: side scales along each subpath, interpolated with a monotone cubic (see
230
- * `widthProfileAt`). Absent, empty or `null` strokes at a uniform width. A profiled stroke is
231
- * drawn as its filled outline.
232
- */
233
- strokeWidthProfile?: VectorWidthPoint[] | null;
234
- /**
235
- * The fill stack, bottom to top. Absent: `fill` alone is the stack (one layer, or none without
236
- * a paint). Present: it is the truth, and `fill` mirrors its top layer's paint. The shorthand
237
- * stays writable: setting `fill` to a paint repaints the top layer, `null` clears the stack.
238
- * Stacks of one plain layer (full opacity, `normal`, visible) are stored as the shorthand.
239
- */
240
- fills?: VectorPaintLayer[] | null;
241
- /**
242
- * The stroke stack, bottom to top, drawn over every fill. Like `fills`: absent, `stroke` and the
243
- * stroke settings above are the one stroke; present, they mirror its top layer, and writing them
244
- * edits that layer (`stroke: null` clears the stack).
245
- */
246
- strokes?: VectorStrokeLayer[] | null;
247
- }
248
- interface VectorNodeBase {
249
- id: string;
250
- name?: string;
251
- /** Default true. */
252
- visible?: boolean;
253
- /** Locked nodes are drawn but cannot be picked or edited on the canvas. */
254
- locked?: boolean;
255
- /** 0–1, default 1. */
256
- opacity?: number;
257
- /**
258
- * Placement in the parent's space: a rigid matrix (rotation + translation). Anchors and
259
- * children are in the node's own space. Omitted for unrotated nodes, whose positions are
260
- * stored directly. Scale and skew are never stored here — `transformVectorNode` bakes
261
- * them into the geometry, so stroke widths and the rotated selection box stay exact.
262
- */
263
- transform?: VectorMatrix;
264
- /**
265
- * An in-between a blend group generated from its keys. Steps are rebuilt whenever a key or
266
- * the blend options change, and are locked (clicks select the blend group).
267
- */
268
- blendStep?: boolean;
269
- /**
270
- * Live path effects, applied top to bottom: each acts on every path above it (the node's own
271
- * outline, or a group's children, then the result of the effects before it), and effects after a
272
- * repeater act on its copies. The stored anchors and children never change.
273
- */
274
- effects?: VectorEffect[] | null;
275
- /**
276
- * As an operand of a live boolean group: how it combines with the result of the operands below
277
- * it. Absent: the group's `liveBoolean` operation.
278
- */
279
- booleanOperation?: VectorBooleanOperation | null;
280
- /** How the whole node (all its paint, filters included) mixes with what is under it. Default `normal`. */
281
- blendMode?: VectorBlendMode;
282
- /**
283
- * Visual filters (drop and inner shadows, glows, blurs, feather), applied to everything the
284
- * node draws. Unlike path `effects` they never change geometry: bounds, hit-testing and
285
- * booleans ignore them.
286
- */
287
- filters?: VectorFilter[] | null;
288
- }
289
- /** A shape made of one or more subpaths (holes and compound shapes included). */
290
- interface VectorPathNode extends VectorNodeBase, VectorStyle {
291
- type: 'path';
292
- subpaths: VectorSubpath[];
293
- }
294
- /**
295
- * How a blend spaces its in-betweens: a number of `steps` between each pair of keys, a fixed
296
- * `distance` between steps along the spine, or `smoothColor` (as many steps as the colours
297
- * need for a smooth ramp; by distance when the colours match).
298
- */
299
- type VectorBlendSpacing = 'steps' | 'distance' | 'smoothColor';
300
- declare const VECTOR_BLEND_SPACINGS: readonly VectorBlendSpacing[];
301
- /** Settings of a blend. */
302
- interface VectorBlendOptions {
303
- /** Default `steps`. */
304
- spacing?: VectorBlendSpacing;
305
- /** Steps between each pair of keys with `steps` spacing (default 5). */
306
- steps?: number;
307
- /** Distance between steps along the spine with `distance` spacing (default 20). */
308
- distance?: number;
309
- /** Turn the steps with the spine's direction (default `false`: they keep the keys' orientation). */
310
- orientToSpine?: boolean;
311
- /** Move anchors in straight lines instead of the rotation-aware morph (default `false`). */
312
- linear?: boolean;
313
- }
314
- /** A live blend: the group's keys plus how the in-betweens are made and laid out. */
315
- interface VectorBlend extends VectorBlendOptions {
316
- /**
317
- * A replaced spine in the group's space: the steps follow it instead of the straight lines
318
- * between the keys' centres (the keys sit along it, spread evenly by arc length).
319
- */
320
- spine?: VectorSubpath | null;
321
- /** The anchor of each key's first subpath its blend starts from, by key id (the Blend tool's clicks). */
322
- starts?: Record<string, number>;
323
- }
324
- /** A group of nodes that select and transform together. */
325
- interface VectorGroupNode extends VectorNodeBase {
326
- type: 'group';
327
- children: VectorNode[];
328
- /**
329
- * Makes the group a live blend: its children that are not `blendStep`s are the keys, in
330
- * stacking order, and the steps between them are regenerated whenever a key changes.
331
- */
332
- blend?: VectorBlend | null;
333
- /**
334
- * Makes the group a live boolean: its children stay editable operands, folded bottom to top
335
- * (each by its own `booleanOperation` or this one), and the group draws as the result in the
336
- * bottom operand's style.
337
- */
338
- liveBoolean?: VectorBooleanOperation | null;
339
- }
340
- type VectorNode = VectorPathNode | VectorGroupNode;
341
- /** A vector drawing: an artboard and its nodes, bottom to top. */
342
- interface VectorDocument {
343
- width: number;
344
- height: number;
345
- /** Artboard colour (default: transparent). */
346
- background?: string;
347
- nodes: VectorNode[];
348
- }
349
- /** An axis-aligned rectangle. */
350
- interface VectorBounds {
351
- x: number;
352
- y: number;
353
- width: number;
354
- height: number;
355
- }
356
- /** Identifies one anchor of a path node. */
357
- interface VectorAnchorRef {
358
- nodeId: string;
359
- subpath: number;
360
- index: number;
361
- }
362
- /** Identifies one handle of an anchor. */
363
- interface VectorHandleRef extends VectorAnchorRef {
364
- handle: 'in' | 'out';
365
- }
366
- /**
367
- * Canvas tools. `direct` edits anchors, handles and segments; the shape tools drag out a new
368
- * shape; `scissors` cuts a path at a point, `knife` cuts filled shapes along a freehand stroke,
369
- * `eraser` rubs out the area under one and `width` drags a stroke's width at a point.
370
- * `shapeBuilder` merges (Alt: deletes) the faces the selected shapes make, and `paintBucket`
371
- * fills the region the visible outlines enclose around a click with a new shape. `blend`
372
- * blends the shape clicked first into the one clicked next (clicking an anchor of a closed path
373
- * starts the blend there). `envelope` edits the mesh of the selection's envelope: drag its
374
- * anchors and handles, or inside a patch to pull the surface.
375
- */
376
- type VectorTool = 'select' | 'direct' | 'pen' | 'pencil' | 'rect' | 'ellipse' | 'polygon' | 'star' | 'line' | 'scissors' | 'knife' | 'eraser' | 'width' | 'shapeBuilder' | 'paintBucket' | 'blend' | 'gradient' | 'envelope';
377
- declare const VECTOR_TOOLS: readonly VectorTool[];
378
- /** Keyboard modifiers held during a pointer event. */
379
- interface VectorModifiers {
380
- shift?: boolean;
381
- alt?: boolean;
382
- /** Cmd on macOS, Ctrl elsewhere. */
383
- mod?: boolean;
384
- }
385
- /** The eight resize handles of a selection box and the rotation handle. */
386
- type VectorTransformHandle = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w' | 'rotate';
387
- declare const VECTOR_TRANSFORM_HANDLES: readonly VectorTransformHandle[];
388
- /** Pan and zoom of the canvas: `screen = document × zoom + (x, y)`. */
389
- interface VectorViewport {
390
- /** Screen position of the document origin, in screen pixels. */
391
- x: number;
392
- y: number;
393
- zoom: number;
394
- }
395
- /** What the next shape and pen path are drawn with. */
396
- interface VectorDefaults extends VectorStyle {
397
- /** Sides of the polygon tool (default 6). */
398
- polygonSides?: number;
399
- /** Points of the star tool (default 5). */
400
- starPoints?: number;
401
- /** Inner radius of the star tool as a fraction of the outer one (default 0.5). */
402
- starInnerRatio?: number;
403
- /** Live corner radius the rectangle, polygon and star tools give their corners (default 0). */
404
- cornerRadius?: number;
405
- /** Corner kind of those tools (default `round`). */
406
- cornerKind?: VectorCornerKind;
407
- }
408
- type VectorAlign = 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom';
409
- type VectorDistribute = 'horizontal' | 'vertical';
410
- type VectorBooleanOperation = 'union' | 'subtract' | 'intersect' | 'exclude';
411
- /**
412
- * Pathfinder operations: `divide` (every face its own shape), `trim` (hidden parts removed),
413
- * `merge` (Trim, then touching parts of one fill joined), `crop` (the top shape crops the others),
414
- * `outline` (outlines cut into open strokes where they meet) and `minusBack` (the top shape minus
415
- * everything below it).
416
- */
417
- type VectorPathfinderOperation = 'divide' | 'trim' | 'merge' | 'crop' | 'outline' | 'minusBack';
418
- declare const VECTOR_PATHFINDER_OPERATIONS: readonly VectorPathfinderOperation[];
419
- type VectorArrange = 'front' | 'forward' | 'backward' | 'back';
420
- /** Average: line anchors up on a horizontal line (same y), a vertical one (same x), or both. */
421
- type VectorAverageAxis = 'horizontal' | 'vertical' | 'both';
422
- /**
423
- * Live path effects (After Effects' path operators): `trim` (Trim Paths), `roundCorners`,
424
- * `puckerBloat`, `twist`, `zigzag`, `wiggle` (Wiggle Paths), `offset` (Offset Paths), `merge`
425
- * (Merge Paths), `repeater` and `envelope` (an envelope distortion: a warp preset or a mesh).
426
- */
427
- type VectorEffectType = 'trim' | 'roundCorners' | 'puckerBloat' | 'twist' | 'zigzag' | 'wiggle' | 'offset' | 'merge' | 'repeater' | 'envelope';
428
- declare const VECTOR_EFFECT_TYPES: readonly VectorEffectType[];
429
- /** Warp presets (Photoshop's fifteen, in menu order); shared with the image editor (`src/geom`). */
430
- type VectorWarpStyle = WarpStyle;
431
- /**
432
- * A grid of bicubic Bézier patches mapping a source box onto the plane. `us` / `vs` are the patch
433
- * boundaries as fractions of the box (increasing, first 0, last 1); `points` is the
434
- * `(3·(us.length − 1) + 1) × (3·(vs.length − 1) + 1)` control grid, row by row, in the node's own
435
- * space. Neighbouring patches share their edge row: anchors sit where both indices are multiples
436
- * of 3, handles where one is. Shared with the image editor (`src/geom`).
437
- */
438
- type VectorWarpMesh = WarpMesh;
439
- /** Merge Paths modes: a compound path (no boolean), union, the first minus the others, intersection or exclusion. */
440
- type VectorMergeMode = 'merge' | 'add' | 'subtract' | 'intersect' | 'exclude';
441
- declare const VECTOR_MERGE_MODES: readonly VectorMergeMode[];
442
- /** Parameters of each effect type. Lengths are in the node's own units, angles in degrees, percentages 0–100. */
443
- interface VectorEffectParamsMap {
444
- trim: {
445
- /** Start and end of the kept part, percent of the length (swapped when start > end). */
446
- start: number;
447
- end: number;
448
- /** Shifts both, in degrees (360° = once round). */
449
- offset: number;
450
- /**
451
- * `simultaneous`: every path trimmed by the same fractions of its own length;
452
- * `individual`: the paths laid end to end in stacking order and trimmed as one length.
453
- */
454
- mode: 'simultaneous' | 'individual';
455
- };
456
- roundCorners: {
457
- radius: number;
458
- };
459
- /** Percent, −100 (pucker: spiky) to 100 (bloat: bulging). */
460
- puckerBloat: {
461
- amount: number;
462
- };
463
- twist: {
464
- /** Turn at the farthest point from the centre (none at the centre). */
465
- angle: number;
466
- /** The centre as an offset from the middle of the paths' bounds. */
467
- center: Vec2;
468
- };
469
- zigzag: {
470
- /** How far the points move to either side. */
471
- size: number;
472
- /** Ridges per segment. */
473
- ridges: number;
474
- /** Rounded waves instead of sharp zig zags. */
475
- smooth: boolean;
476
- };
477
- wiggle: {
478
- /** Largest displacement. */
479
- size: number;
480
- /** Points added per segment. */
481
- detail: number;
482
- smooth: boolean;
483
- /** Wiggles per second. */
484
- speed: number;
485
- /** Percent: how much neighbouring points move together. */
486
- correlation: number;
487
- /** Degrees (360° = one wiggle). */
488
- phase: number;
489
- /** The same seed (and time) always gives the same wiggle. */
490
- seed: number;
491
- /** Seconds: where along the wiggle's motion it is drawn. */
492
- time: number;
493
- };
494
- offset: {
495
- /** Grows (positive) or shrinks (negative) the shapes. */
496
- amount: number;
497
- join: VectorLineJoin;
498
- miterLimit: number;
499
- /** Copies, copy i offset by `amount · (i + 1 + copyOffset)`. */
500
- copies: number;
501
- copyOffset: number;
502
- };
503
- merge: {
504
- mode: VectorMergeMode;
505
- };
506
- repeater: {
507
- /** Copies, the original included; a fraction fades the last copy. */
508
- copies: number;
509
- /** Shifts the copies along: copy i is transformed `i + offset` times. */
510
- offset: number;
511
- /** Each step: move, about `anchor` turn by `rotation` and scale by `scale` percent. */
512
- position: Vec2;
513
- /** Offset from the middle of the paths' bounds. */
514
- anchor: Vec2;
515
- rotation: number;
516
- scale: Vec2;
517
- /** Percent opacity of the first and last copies (in between interpolated). */
518
- startOpacity: number;
519
- endOpacity: number;
520
- /** `below`: each copy draws under the one before it; `above`: over it. */
521
- composite: 'below' | 'above';
522
- };
523
- /**
524
- * Envelope distortion: the paths above it are mapped from their combined bounds through a warp
525
- * preset (bend and horizontal / vertical distortion in percent) or, with style `mesh`, through
526
- * `mesh` (null: the flat mesh of `columns × rows` patches over the bounds). The bounds are
527
- * taken afresh each time, so editing the contents keeps the envelope.
528
- */
529
- envelope: {
530
- style: VectorWarpStyle | 'mesh';
531
- bend: number;
532
- horizontal: number;
533
- vertical: number;
534
- orientation: 'horizontal' | 'vertical';
535
- /** Patches of the mesh (a preset turns into a mesh of this size when it is edited). */
536
- rows: number;
537
- columns: number;
538
- mesh: VectorWarpMesh | null;
539
- };
540
- }
541
- /** One entry of an effect stack. */
542
- type VectorEffect = {
543
- [K in VectorEffectType]: {
544
- /** Unique within the node. */
545
- id: string;
546
- type: K;
547
- /** Disabled effects are skipped. Default true. */
548
- enabled?: boolean;
549
- params: VectorEffectParamsMap[K];
550
- };
551
- }[VectorEffectType];
552
- /** Identifies one segment of a path node: from anchor `segment` to the next. */
553
- interface VectorSegmentRef {
554
- nodeId: string;
555
- subpath: number;
556
- segment: number;
557
- }
558
- /**
559
- * Visual filters: `dropShadow` (the node's silhouette, offset and blurred, under it),
560
- * `innerShadow` (a shadow cast inside the edges), `outerGlow` / `innerGlow` (an unoffset glow
561
- * outside or inside the edges), `layerBlur` (the whole node blurred) and `feather` (edges faded
562
- * to transparent).
563
- */
564
- type VectorFilterType = 'dropShadow' | 'innerShadow' | 'outerGlow' | 'innerGlow' | 'layerBlur' | 'feather';
565
- declare const VECTOR_FILTER_TYPES: readonly VectorFilterType[];
566
- /** A shadow or glow: colour, offset, blur and spread in the node's own units. */
567
- interface VectorShadowParams {
568
- color: string;
569
- /** 0–1: multiplies the colour's own alpha. */
570
- opacity: number;
571
- /** Blur radius (the SVG / CSS standard deviation is half of it). */
572
- blur: number;
573
- /** Grows the silhouette before blurring (inner effects: chokes it inwards). */
574
- spread: number;
575
- }
576
- /** Parameters of each filter type. Lengths are in the node's own units. */
577
- interface VectorFilterParamsMap {
578
- dropShadow: VectorShadowParams & {
579
- offsetX: number;
580
- offsetY: number;
581
- };
582
- innerShadow: VectorShadowParams & {
583
- offsetX: number;
584
- offsetY: number;
585
- };
586
- outerGlow: VectorShadowParams;
587
- innerGlow: VectorShadowParams;
588
- layerBlur: {
589
- radius: number;
590
- };
591
- /** Fades the edges over `radius` inwards. */
592
- feather: {
593
- radius: number;
594
- };
595
- }
596
- /** One entry of a node's filter stack. */
597
- type VectorFilter = {
598
- [K in VectorFilterType]: {
599
- /** Unique within the node. */
600
- id: string;
601
- type: K;
602
- /** Disabled filters are skipped. Default true. */
603
- enabled?: boolean;
604
- params: VectorFilterParamsMap[K];
605
- };
606
- }[VectorFilterType];
1
+ import { B as BezierPath, A as AffineMatrix, S as SvgGradientDef } from './bezier-BfwIbVTl.cjs';
2
+ import { V as VectorEffectType, a as VectorEffectParamsMap, b as VectorPathNode, c as VectorFillRule, d as VectorBooleanOperation, e as VectorNode, f as VectorEffect, g as VectorGroupNode, h as VectorBounds, i as VectorWarpMesh, j as VectorFilterType, k as VectorFilterParamsMap, l as VectorFilter, m as VectorGradient, n as Vec2, o as VectorGradientUnits, p as VectorGradientSpread, q as VectorGradientType, r as VectorPaint, s as VectorMatrix, t as VectorGradientStop, u as VectorStrokeAlign, v as VectorSubpath, w as VectorDocument, x as VectorWidthPoint } from './types-DyQq-WPY.cjs';
607
3
 
608
4
  /**
609
5
  * Live appearance: path effect stacks and live boolean groups, evaluated on demand while the
@@ -730,6 +126,8 @@ interface VectorBooleanOperand {
730
126
  declare function foldVectorBooleanOperands(operands: readonly VectorBooleanOperand[]): BezierPath;
731
127
  /** Applies an effect stack to shapes, top to bottom (disabled effects skipped). */
732
128
  declare function applyVectorEffects(shapes: readonly VectorAppearanceShape[], effects: readonly VectorEffect[] | null | undefined): VectorAppearanceShape[];
129
+ /** The shapes of a child in its parent's space (hidden children have none), ordered by its index. */
130
+ declare function vectorChildAppearanceShapes(child: VectorNode, index: number): VectorAppearanceShape[];
733
131
  /** The paths entering effect `effectId` of the node's stack (those above it applied), in the node's own space. */
734
132
  declare function vectorEffectInputPaths(node: VectorNode, effectId: string): BezierPath[] | null;
735
133
  /** The box effect `effectId` (an envelope) bends: the combined bounds of the paths entering it, in the node's own space. */
@@ -779,7 +177,7 @@ declare function sanitizeVectorEffects(value: unknown): VectorEffect[];
779
177
  declare function transformVectorEffects(effects: readonly VectorEffect[], m: AffineMatrix, node?: VectorNode): VectorEffect[];
780
178
  /**
781
179
  * The live groups (live booleans and groups with effects) being edited: those in `ids` and those
782
- * holding a node in `ids`. Their children are hit and outlined as stored instead of as drawn, so
180
+ * holding a node in `ids`; mask groups only when they hold one. Their children are hit and outlined as stored instead of as drawn, so
783
181
  * each operand can be picked (figcraft `crates/engine/src/booleans.rs`, `result_outline`).
784
182
  */
785
183
  declare function vectorEnteredGroups(nodes: readonly VectorNode[], ids: readonly string[]): Set<string>;
@@ -1255,4 +653,4 @@ declare function parseSvgTransform(value: string | undefined): AffineMatrix;
1255
653
  /** Parses SVG markup into a vector document. Throws when there is no `<svg>` element. */
1256
654
  declare function parseVectorSvg(svg: string, options?: VectorSvgImportOptions): VectorDocument;
1257
655
 
1258
- export { type VectorStrokeLayer as $, type VectorGradientPatch as A, type VectorBlendMode as B, type VectorFilterType as C, type VectorEffectType as D, type VectorEnvelopeParams as E, type VectorAlign as F, type VectorDistribute as G, type VectorArrange as H, type VectorBooleanOperation as I, type VectorAverageAxis as J, type VectorWarpMesh as K, type VectorArrowhead as L, type VectorBlendSpacing as M, type VectorGradientInterpolation as N, type VectorGradientSpread as O, type VectorGradientType as P, type VectorStrokeAlign as Q, type VectorStrokeGradientMode as R, type VectorFilterParamSpec as S, type VectorEffectParamSpec as T, type VectorRenderStrokeParts as U, type VectorDocument as V, type VectorPaintDef as W, type VectorRenderFilter as X, type VectorArrowAlign as Y, type VectorEffect as Z, type VectorPaintLayer as _, type VectorNode as a, explicitVectorGradient as a$, type VectorFilter as a0, type VectorBlend as a1, type VectorMergeMode as a2, type VectorLineJoin as a3, type VectorEffectParamsMap as a4, type VectorStrokeSettings as a5, VECTOR_ARROWHEADS as a6, VECTOR_BLEND_MODES as a7, VECTOR_BLEND_SPACINGS as a8, VECTOR_CORNER_KINDS as a9, type VectorGradientRamp as aA, type VectorGradientSvgOptions as aB, type VectorGradientUnits as aC, type VectorLineCap as aD, type VectorMatrix as aE, type VectorPaintSvgOptions as aF, type VectorRgba as aG, type VectorStrokeLayerKind as aH, type VectorSvgImportOptions as aI, type VectorSvgPatternDef as aJ, type VectorSvgWrapper as aK, type VectorWarpStyle as aL, activeVectorEffects as aM, activeVectorFilters as aN, applyVectorCornersAttribute as aO, applyVectorEffects as aP, applyVectorGradientPatch as aQ, applyVectorGradientSpread as aR, clearVectorLiveBooleanCache as aS, convertVectorGradient as aT, createVectorEffect as aU, createVectorFilter as aV, defaultVectorGradient as aW, expandVectorAppearance as aX, expandVectorAppearances as aY, expandVectorGradientSpread as aZ, expandVectorGradientStops as a_, VECTOR_EFFECT_DEFAULTS as aa, VECTOR_EFFECT_LABELS as ab, VECTOR_EFFECT_PARAM_SPECS as ac, VECTOR_EFFECT_TYPES as ad, VECTOR_FILTER_DEFAULTS as ae, VECTOR_FILTER_LABELS as af, VECTOR_FILTER_MENU as ag, VECTOR_FILTER_PARAM_SPECS as ah, VECTOR_FILTER_TYPES as ai, VECTOR_GRADIENT_INTERPOLATIONS as aj, VECTOR_GRADIENT_MAX_PERIODS as ak, VECTOR_GRADIENT_MIN_STOPS as al, VECTOR_GRADIENT_SPREADS as am, VECTOR_GRADIENT_TYPES as an, VECTOR_MERGE_MODES as ao, VECTOR_PATHFINDER_OPERATIONS as ap, VECTOR_STROKE_GRADIENT_MODES as aq, VECTOR_TOOLS as ar, VECTOR_TRANSFORM_HANDLES as as, type VectorAppearanceShape as at, type VectorBooleanOperand as au, type VectorCorner as av, type VectorFillRule as aw, type VectorFilterParamsMap as ax, type VectorFilterPrimitive as ay, type VectorGradientPoints as az, type VectorBounds as b, vectorGradientRamp as b$, foldVectorBooleanOperands as b0, gradientMidpointRemap as b1, hasExplicitGradientGeometry as b2, hasOwnVectorAppearance as b3, hasVectorAppearance as b4, insertVectorGradientStop as b5, isCentredVectorGradient as b6, isVectorFilterType as b7, isVectorGradient as b8, isVectorLiveBoolean as b9, transformVectorPaint as bA, vectorAppearanceNodes as bB, vectorAppearanceOutline as bC, vectorAppearanceShapes as bD, vectorBoxMatrix as bE, vectorCornersAttribute as bF, vectorDocumentToSvg as bG, vectorEffectInputBounds as bH, vectorEffectInputPaths as bI, vectorEnteredGroups as bJ, vectorEnvelopeFrame as bK, vectorEnvelopeMap as bL, vectorEnvelopeMesh as bM, vectorFilterMarkup as bN, vectorFilterParamKeys as bO, vectorFilterReach as bP, vectorFilterSvg as bQ, vectorGradientArea as bR, vectorGradientAspect as bS, vectorGradientFocalParam as bT, vectorGradientHandles as bU, vectorGradientMatrix as bV, vectorGradientMidpointFromPosition as bW, vectorGradientMidpointPosition as bX, vectorGradientNeedsExpansion as bY, vectorGradientParam as bZ, vectorGradientPoints as b_, mapVectorGradient as ba, mapVectorPaint as bb, moveVectorGradientHandle as bc, moveVectorGradientStop as bd, normalizeVectorEffectParams as be, normalizeVectorFilterParams as bf, parseSvgTransform as bg, parseVectorColor as bh, parseVectorSvg as bi, patternAttrs as bj, periodicVectorGradientStops as bk, pinVectorGradient as bl, removeVectorGradientStop as bm, reverseVectorGradient as bn, samplePlainStops as bo, sampleVectorGradient as bp, sampleVectorGradientAt as bq, sampleVectorPaintDefAt as br, sanitizeVectorEffects as bs, sanitizeVectorFilters as bt, sanitizeVectorGradient as bu, setVectorGradientVector as bv, sortedVectorGradientStops as bw, spanVectorGradientStops as bx, transformVectorEffects as by, transformVectorGradient as bz, type VectorSvgExportOptions as c, vectorGradientSvgDefs as c0, vectorGradientTAt as c1, vectorGradientUnitsMatrix as c2, vectorLiveBooleanSteps as c3, vectorNodeEnvelope as c4, vectorNodeFilterSvg as c5, vectorNodeLocalPaintBounds as c6, vectorOperandOperation as c7, vectorPaintToSvg as c8, vectorPathLocalBounds as c9, vectorStrokeSvgParts as ca, widthProfileFromAttribute as cb, widthProfileToAttribute as cc, type Vec2 as d, type VectorSubpath as e, type VectorAnchor as f, type VectorPathNode as g, type VectorAnchorType as h, type VectorPaint as i, type VectorGroupNode as j, type VectorCornerKind as k, type VectorWidthPoint as l, type VectorGradientHandle as m, type VectorGradient as n, type VectorGradientStop as o, type VectorViewport as p, type VectorTransformHandle as q, type VectorAnchorRef as r, type VectorPathfinderOperation as s, type VectorTool as t, type VectorDefaults as u, type VectorStyle as v, type VectorHandleRef as w, type VectorSegmentRef as x, type VectorBlendOptions as y, type VectorModifiers as z };
656
+ export { isVectorGradient as $, type VectorSvgPatternDef as A, type VectorSvgWrapper as B, activeVectorEffects as C, activeVectorFilters as D, applyVectorCornersAttribute as E, applyVectorEffects as F, applyVectorGradientPatch as G, applyVectorGradientSpread as H, clearVectorLiveBooleanCache as I, convertVectorGradient as J, createVectorEffect as K, createVectorFilter as L, defaultVectorGradient as M, expandVectorAppearance as N, expandVectorAppearances as O, expandVectorGradientSpread as P, expandVectorGradientStops as Q, explicitVectorGradient as R, foldVectorBooleanOperands as S, gradientMidpointRemap as T, hasExplicitGradientGeometry as U, type VectorSvgExportOptions as V, hasOwnVectorAppearance as W, hasVectorAppearance as X, insertVectorGradientStop as Y, isCentredVectorGradient as Z, isVectorFilterType as _, type VectorGradientHandle as a, vectorOperandOperation as a$, isVectorLiveBoolean as a0, mapVectorGradient as a1, mapVectorPaint as a2, moveVectorGradientHandle as a3, moveVectorGradientStop as a4, normalizeVectorEffectParams as a5, normalizeVectorFilterParams as a6, parseSvgTransform as a7, parseVectorColor as a8, parseVectorSvg as a9, vectorEffectInputPaths as aA, vectorEnteredGroups as aB, vectorEnvelopeFrame as aC, vectorEnvelopeMap as aD, vectorEnvelopeMesh as aE, vectorFilterMarkup as aF, vectorFilterParamKeys as aG, vectorFilterReach as aH, vectorFilterSvg as aI, vectorGradientArea as aJ, vectorGradientAspect as aK, vectorGradientFocalParam as aL, vectorGradientHandles as aM, vectorGradientMatrix as aN, vectorGradientMidpointFromPosition as aO, vectorGradientMidpointPosition as aP, vectorGradientNeedsExpansion as aQ, vectorGradientParam as aR, vectorGradientPoints as aS, vectorGradientRamp as aT, vectorGradientSvgDefs as aU, vectorGradientTAt as aV, vectorGradientUnitsMatrix as aW, vectorLiveBooleanSteps as aX, vectorNodeEnvelope as aY, vectorNodeFilterSvg as aZ, vectorNodeLocalPaintBounds as a_, patternAttrs as aa, periodicVectorGradientStops as ab, pinVectorGradient as ac, removeVectorGradientStop as ad, reverseVectorGradient as ae, samplePlainStops as af, sampleVectorGradient as ag, sampleVectorGradientAt as ah, sampleVectorPaintDefAt as ai, sanitizeVectorEffects as aj, sanitizeVectorFilters as ak, sanitizeVectorGradient as al, setVectorGradientVector as am, sortedVectorGradientStops as an, spanVectorGradientStops as ao, transformVectorEffects as ap, transformVectorGradient as aq, transformVectorPaint as ar, vectorAppearanceNodes as as, vectorAppearanceOutline as at, vectorAppearanceShapes as au, vectorBoxMatrix as av, vectorChildAppearanceShapes as aw, vectorCornersAttribute as ax, vectorDocumentToSvg as ay, vectorEffectInputBounds as az, type VectorGradientPatch as b, vectorPaintToSvg as b0, vectorPathLocalBounds as b1, vectorStrokeSvgParts as b2, widthProfileFromAttribute as b3, widthProfileToAttribute as b4, type VectorEnvelopeParams as c, type VectorRenderFilter as d, type VectorAppearanceShape as e, type VectorFilterParamSpec as f, type VectorEffectParamSpec as g, type VectorRenderStrokeParts as h, type VectorPaintDef as i, VECTOR_EFFECT_DEFAULTS as j, VECTOR_EFFECT_LABELS as k, VECTOR_EFFECT_PARAM_SPECS as l, VECTOR_FILTER_DEFAULTS as m, VECTOR_FILTER_LABELS as n, VECTOR_FILTER_MENU as o, VECTOR_FILTER_PARAM_SPECS as p, VECTOR_GRADIENT_MAX_PERIODS as q, VECTOR_GRADIENT_MIN_STOPS as r, type VectorBooleanOperand as s, type VectorFilterPrimitive as t, type VectorGradientPoints as u, type VectorGradientRamp as v, type VectorGradientSvgOptions as w, type VectorPaintSvgOptions as x, type VectorRgba as y, type VectorSvgImportOptions as z };