@pixerate/editor 0.133.0 → 0.134.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/dist/animation-editor/index.cjs +55 -55
- package/dist/animation-editor/index.d.cts +4 -4
- package/dist/animation-editor/index.d.ts +4 -4
- package/dist/animation-editor/index.js +2 -2
- package/dist/{bezier-DL2wPsFf.d.cts → bezier-J8i4uqSH.d.cts} +1 -1
- package/dist/{bezier-BAGdL89w.d.ts → bezier-lNEOp0Jx.d.ts} +1 -1
- package/dist/canvas/index.d.cts +7 -7
- package/dist/canvas/index.d.ts +7 -7
- package/dist/{chunk-VGZSIXX3.js → chunk-7RJ6P7MI.js} +2 -2
- package/dist/{chunk-AOCFL7L7.js → chunk-ESIWZMMK.js} +2 -2
- package/dist/{chunk-FOBB6AIO.js → chunk-HHTCDFZC.js} +97 -5
- package/dist/chunk-HHTCDFZC.js.map +1 -0
- package/dist/{chunk-2QKUD3E2.cjs → chunk-T6TV6HY6.cjs} +36 -36
- package/dist/{chunk-2QKUD3E2.cjs.map → chunk-T6TV6HY6.cjs.map} +1 -1
- package/dist/{chunk-65GNHOD4.cjs → chunk-YAFS2QFZ.cjs} +82 -82
- package/dist/{chunk-65GNHOD4.cjs.map → chunk-YAFS2QFZ.cjs.map} +1 -1
- package/dist/{chunk-F7GGEAO2.cjs → chunk-Z2H7KECK.cjs} +151 -59
- package/dist/chunk-Z2H7KECK.cjs.map +1 -0
- package/dist/effects/index.d.cts +4 -4
- package/dist/effects/index.d.ts +4 -4
- package/dist/{export-BICOEM9d.d.cts → export-BGdT02aL.d.cts} +3 -3
- package/dist/{export-zB4HITwP.d.ts → export-DMeG6E06.d.ts} +1 -1
- package/dist/{export-XnuX8FZ2.d.ts → export-Dng22YB8.d.ts} +3 -3
- package/dist/{export-CeFplzAW.d.cts → export-KzubBKo7.d.cts} +1 -1
- package/dist/{helpers-cssRNUzH.d.ts → helpers-Coa4e2j_.d.ts} +12 -0
- package/dist/{helpers-BuKdqUlM.d.cts → helpers-DHl28yLO.d.cts} +12 -0
- package/dist/image-editor/index.cjs +610 -610
- package/dist/image-editor/index.d.cts +8 -8
- package/dist/image-editor/index.d.ts +8 -8
- package/dist/image-editor/index.js +2 -2
- package/dist/{opentype-C3iyIFRx.d.cts → opentype-BWR7Qv8W.d.cts} +1 -1
- package/dist/{opentype-DG5Lkwul.d.ts → opentype-Dfcx6wFx.d.ts} +1 -1
- package/dist/paint-editor/index.cjs +7 -7
- package/dist/paint-editor/index.d.cts +5 -5
- package/dist/paint-editor/index.d.ts +5 -5
- package/dist/paint-editor/index.js +2 -2
- package/dist/{pathfinder-DKLt4UDG.d.ts → pathfinder-Celbi3e6.d.ts} +1 -1
- package/dist/{pathfinder-8vXik95z.d.cts → pathfinder-D8KQ6blQ.d.cts} +1 -1
- package/dist/{pool-C69pkWRz.d.ts → pool-8JZGWHvR.d.ts} +1 -1
- package/dist/{pool-VAWcYUbs.d.cts → pool-BfuxBKTd.d.cts} +1 -1
- package/dist/{svg-CEYpvsgH.d.ts → svg-CxxqG3_W.d.ts} +2 -2
- package/dist/{svg-BThlZmja.d.cts → svg-pwXWq6s2.d.cts} +2 -2
- package/dist/{tools-CRnZJXXr.d.cts → tools-3EBjR91b.d.cts} +1 -1
- package/dist/{tools-CVGqEpO8.d.ts → tools-y1M6O3UT.d.ts} +1 -1
- package/dist/vector/index.cjs +1292 -1035
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +183 -91
- package/dist/vector/index.d.ts +183 -91
- package/dist/vector/index.js +267 -10
- package/dist/vector/index.js.map +1 -1
- package/dist/video-editor/index.d.cts +4 -4
- package/dist/video-editor/index.d.ts +4 -4
- package/dist/{warp-mKylbLiF.d.ts → warp-C1gwu2G_.d.ts} +1 -1
- package/dist/{warp-ChcFDdlT.d.cts → warp-Ceqdz7kj.d.cts} +1 -1
- package/package.json +1 -1
- package/skills/pixerate-vector/SKILL.md +12 -53
- package/skills/pixerate-vector/references/pitfalls.md +62 -0
- package/dist/chunk-F7GGEAO2.cjs.map +0 -1
- package/dist/chunk-FOBB6AIO.js.map +0 -1
- /package/dist/{chunk-VGZSIXX3.js.map → chunk-7RJ6P7MI.js.map} +0 -0
- /package/dist/{chunk-AOCFL7L7.js.map → chunk-ESIWZMMK.js.map} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { V as VideoProject, a as VideoAnimatable, b as VideoAsset, c as VideoAssetProxy, d as VideoClip, e as VideoClipAnimation, f as VideoClipEffect, g as VideoEffectRef, h as VideoEffectValues, i as VideoGrade, j as VideoGradeLut, k as VideoKeyframes, l as VideoMarker, m as VideoSequence, n as VideoTrack, o as VideoTranscriptWord, p as VideoTransform, q as VideoTransition, v as videoKeysOf, r as VideoTrackKind, s as VideoPlacementMode, t as VideoKeyframeProperty, u as VideoKey, w as VideoMediaClip, x as VideoEffectsEngine, y as VideoLayer, z as VideoFrame, A as VideoRect, B as VideoEffectPlace, C as VideoFfmpegOptions, D as VideoFfmpegExport, E as VideoEdlOptions, F as VideoFadeCurve, G as VideoFit, H as VideoBlendMode, I as VideoAssetKind, J as VideoClipAnimationEffect, K as VideoTransitionType } from '../export-
|
|
2
|
-
export { L as VIDEO_BLEND_MODES, M as VIDEO_CLIP_ANIMATION_EFFECTS, N as VIDEO_CLIP_TYPES, O as VIDEO_EASE_NAMES, P as VIDEO_EFFECT_PLACES, Q as VIDEO_FADE_CURVES, R as VIDEO_FITS, S as VIDEO_KEYFRAME_LIMITS, T as VIDEO_KEYFRAME_PROPERTIES, U as VIDEO_PLACEMENT_MODES, W as VIDEO_TRANSFORM_PROPERTIES, X as VIDEO_TRANSITION_TYPES, Y as VIDEO_WIPE_DIRECTIONS, Z as VideoAudioSource, _ as VideoClipType, $ as VideoColorClip, a0 as VideoEase, a1 as VideoEffectClip, a2 as VideoEffectJob, a3 as VideoEffectUse, a4 as VideoEffectsEngineOptions, a5 as VideoLayerEffect, a6 as VideoLoudnessMeasurement, a7 as VideoLoudnessTarget, a8 as VideoSequenceClip, a9 as VideoTextClip, aa as VideoWipeDirection, ab as checkVideoEffectPlace, ac as checkVideoEffectValues, ad as ffmpegFilterValue, ae as isVideoKeyframes, af as mixEffectPixels, ag as overEffectPixels, ah as parseVideoLoudnessMeasurement, ai as placeVideoRect, aj as removeVideoKey, ak as retimeVideoAnimatable, al as setVideoKey, am as sortVideoKeys, an as splitVideoAnimatable, ao as toVideoEdl, ap as toVideoFfmpeg, aq as toVideoLoudnessMeasure, ar as videoClipEffectUses, as as videoClipSoundGain, at as videoEaseBezier, au as videoEaseProgress, av as videoEffectFrameTime, aw as videoEffectLayerKey, ax as videoEffectValuesAt, ay as videoFadeCurveGain, az as videoFfmpegUnsupportedEffects, aA as videoFrameAt, aB as videoFrameLeafLayers, aC as videoKeyframeBreakpoints, aD as videoKeyframeFfmpegExpr, aE as videoLayersUseEffects, aF as videoLayersWithoutTransitionEffects, aG as videoProjectEffects, aH as videoShellQuote, aI as videoTextStyle, aJ as videoTitleFrame, aK as videoTransformAt, aL as videoTransitionAudioCurve, aM as videoTransitionEase, aN as videoValueAt } from '../export-
|
|
1
|
+
import { V as VideoProject, a as VideoAnimatable, b as VideoAsset, c as VideoAssetProxy, d as VideoClip, e as VideoClipAnimation, f as VideoClipEffect, g as VideoEffectRef, h as VideoEffectValues, i as VideoGrade, j as VideoGradeLut, k as VideoKeyframes, l as VideoMarker, m as VideoSequence, n as VideoTrack, o as VideoTranscriptWord, p as VideoTransform, q as VideoTransition, v as videoKeysOf, r as VideoTrackKind, s as VideoPlacementMode, t as VideoKeyframeProperty, u as VideoKey, w as VideoMediaClip, x as VideoEffectsEngine, y as VideoLayer, z as VideoFrame, A as VideoRect, B as VideoEffectPlace, C as VideoFfmpegOptions, D as VideoFfmpegExport, E as VideoEdlOptions, F as VideoFadeCurve, G as VideoFit, H as VideoBlendMode, I as VideoAssetKind, J as VideoClipAnimationEffect, K as VideoTransitionType } from '../export-KzubBKo7.cjs';
|
|
2
|
+
export { L as VIDEO_BLEND_MODES, M as VIDEO_CLIP_ANIMATION_EFFECTS, N as VIDEO_CLIP_TYPES, O as VIDEO_EASE_NAMES, P as VIDEO_EFFECT_PLACES, Q as VIDEO_FADE_CURVES, R as VIDEO_FITS, S as VIDEO_KEYFRAME_LIMITS, T as VIDEO_KEYFRAME_PROPERTIES, U as VIDEO_PLACEMENT_MODES, W as VIDEO_TRANSFORM_PROPERTIES, X as VIDEO_TRANSITION_TYPES, Y as VIDEO_WIPE_DIRECTIONS, Z as VideoAudioSource, _ as VideoClipType, $ as VideoColorClip, a0 as VideoEase, a1 as VideoEffectClip, a2 as VideoEffectJob, a3 as VideoEffectUse, a4 as VideoEffectsEngineOptions, a5 as VideoLayerEffect, a6 as VideoLoudnessMeasurement, a7 as VideoLoudnessTarget, a8 as VideoSequenceClip, a9 as VideoTextClip, aa as VideoWipeDirection, ab as checkVideoEffectPlace, ac as checkVideoEffectValues, ad as ffmpegFilterValue, ae as isVideoKeyframes, af as mixEffectPixels, ag as overEffectPixels, ah as parseVideoLoudnessMeasurement, ai as placeVideoRect, aj as removeVideoKey, ak as retimeVideoAnimatable, al as setVideoKey, am as sortVideoKeys, an as splitVideoAnimatable, ao as toVideoEdl, ap as toVideoFfmpeg, aq as toVideoLoudnessMeasure, ar as videoClipEffectUses, as as videoClipSoundGain, at as videoEaseBezier, au as videoEaseProgress, av as videoEffectFrameTime, aw as videoEffectLayerKey, ax as videoEffectValuesAt, ay as videoFadeCurveGain, az as videoFfmpegUnsupportedEffects, aA as videoFrameAt, aB as videoFrameLeafLayers, aC as videoKeyframeBreakpoints, aD as videoKeyframeFfmpegExpr, aE as videoLayersUseEffects, aF as videoLayersWithoutTransitionEffects, aG as videoProjectEffects, aH as videoShellQuote, aI as videoTextStyle, aJ as videoTitleFrame, aK as videoTransformAt, aL as videoTransitionAudioCurve, aM as videoTransitionEase, aN as videoValueAt } from '../export-KzubBKo7.cjs';
|
|
3
3
|
import { A as AnimationPlayer, C as Clock } from '../player-CmbY3218.cjs';
|
|
4
4
|
import { b as AnimationLoopMode } from '../evaluate-BsxYieLN.cjs';
|
|
5
5
|
import { H as HistoryManager } from '../HistoryManager-DeQQMBCj.cjs';
|
|
6
|
-
import { v as EffectsSlot, E as EffectProvider, f as EffectDescription, e as EffectValue } from '../helpers-
|
|
6
|
+
import { v as EffectsSlot, E as EffectProvider, f as EffectDescription, e as EffectValue } from '../helpers-DHl28yLO.cjs';
|
|
7
7
|
import { a as AgentToolProvider } from '../registry-BqA1AZt0.cjs';
|
|
8
|
-
import { A as AppliedEffectInfo } from '../tools-
|
|
8
|
+
import { A as AppliedEffectInfo } from '../tools-3EBjR91b.cjs';
|
|
9
9
|
import '../easing-lM0Xo9Ni.cjs';
|
|
10
10
|
import '../types-DsiXGmjo.cjs';
|
|
11
11
|
import '../schema-Di0CS6Pe.cjs';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { V as VideoProject, a as VideoAnimatable, b as VideoAsset, c as VideoAssetProxy, d as VideoClip, e as VideoClipAnimation, f as VideoClipEffect, g as VideoEffectRef, h as VideoEffectValues, i as VideoGrade, j as VideoGradeLut, k as VideoKeyframes, l as VideoMarker, m as VideoSequence, n as VideoTrack, o as VideoTranscriptWord, p as VideoTransform, q as VideoTransition, v as videoKeysOf, r as VideoTrackKind, s as VideoPlacementMode, t as VideoKeyframeProperty, u as VideoKey, w as VideoMediaClip, x as VideoEffectsEngine, y as VideoLayer, z as VideoFrame, A as VideoRect, B as VideoEffectPlace, C as VideoFfmpegOptions, D as VideoFfmpegExport, E as VideoEdlOptions, F as VideoFadeCurve, G as VideoFit, H as VideoBlendMode, I as VideoAssetKind, J as VideoClipAnimationEffect, K as VideoTransitionType } from '../export-
|
|
2
|
-
export { L as VIDEO_BLEND_MODES, M as VIDEO_CLIP_ANIMATION_EFFECTS, N as VIDEO_CLIP_TYPES, O as VIDEO_EASE_NAMES, P as VIDEO_EFFECT_PLACES, Q as VIDEO_FADE_CURVES, R as VIDEO_FITS, S as VIDEO_KEYFRAME_LIMITS, T as VIDEO_KEYFRAME_PROPERTIES, U as VIDEO_PLACEMENT_MODES, W as VIDEO_TRANSFORM_PROPERTIES, X as VIDEO_TRANSITION_TYPES, Y as VIDEO_WIPE_DIRECTIONS, Z as VideoAudioSource, _ as VideoClipType, $ as VideoColorClip, a0 as VideoEase, a1 as VideoEffectClip, a2 as VideoEffectJob, a3 as VideoEffectUse, a4 as VideoEffectsEngineOptions, a5 as VideoLayerEffect, a6 as VideoLoudnessMeasurement, a7 as VideoLoudnessTarget, a8 as VideoSequenceClip, a9 as VideoTextClip, aa as VideoWipeDirection, ab as checkVideoEffectPlace, ac as checkVideoEffectValues, ad as ffmpegFilterValue, ae as isVideoKeyframes, af as mixEffectPixels, ag as overEffectPixels, ah as parseVideoLoudnessMeasurement, ai as placeVideoRect, aj as removeVideoKey, ak as retimeVideoAnimatable, al as setVideoKey, am as sortVideoKeys, an as splitVideoAnimatable, ao as toVideoEdl, ap as toVideoFfmpeg, aq as toVideoLoudnessMeasure, ar as videoClipEffectUses, as as videoClipSoundGain, at as videoEaseBezier, au as videoEaseProgress, av as videoEffectFrameTime, aw as videoEffectLayerKey, ax as videoEffectValuesAt, ay as videoFadeCurveGain, az as videoFfmpegUnsupportedEffects, aA as videoFrameAt, aB as videoFrameLeafLayers, aC as videoKeyframeBreakpoints, aD as videoKeyframeFfmpegExpr, aE as videoLayersUseEffects, aF as videoLayersWithoutTransitionEffects, aG as videoProjectEffects, aH as videoShellQuote, aI as videoTextStyle, aJ as videoTitleFrame, aK as videoTransformAt, aL as videoTransitionAudioCurve, aM as videoTransitionEase, aN as videoValueAt } from '../export-
|
|
1
|
+
import { V as VideoProject, a as VideoAnimatable, b as VideoAsset, c as VideoAssetProxy, d as VideoClip, e as VideoClipAnimation, f as VideoClipEffect, g as VideoEffectRef, h as VideoEffectValues, i as VideoGrade, j as VideoGradeLut, k as VideoKeyframes, l as VideoMarker, m as VideoSequence, n as VideoTrack, o as VideoTranscriptWord, p as VideoTransform, q as VideoTransition, v as videoKeysOf, r as VideoTrackKind, s as VideoPlacementMode, t as VideoKeyframeProperty, u as VideoKey, w as VideoMediaClip, x as VideoEffectsEngine, y as VideoLayer, z as VideoFrame, A as VideoRect, B as VideoEffectPlace, C as VideoFfmpegOptions, D as VideoFfmpegExport, E as VideoEdlOptions, F as VideoFadeCurve, G as VideoFit, H as VideoBlendMode, I as VideoAssetKind, J as VideoClipAnimationEffect, K as VideoTransitionType } from '../export-DMeG6E06.js';
|
|
2
|
+
export { L as VIDEO_BLEND_MODES, M as VIDEO_CLIP_ANIMATION_EFFECTS, N as VIDEO_CLIP_TYPES, O as VIDEO_EASE_NAMES, P as VIDEO_EFFECT_PLACES, Q as VIDEO_FADE_CURVES, R as VIDEO_FITS, S as VIDEO_KEYFRAME_LIMITS, T as VIDEO_KEYFRAME_PROPERTIES, U as VIDEO_PLACEMENT_MODES, W as VIDEO_TRANSFORM_PROPERTIES, X as VIDEO_TRANSITION_TYPES, Y as VIDEO_WIPE_DIRECTIONS, Z as VideoAudioSource, _ as VideoClipType, $ as VideoColorClip, a0 as VideoEase, a1 as VideoEffectClip, a2 as VideoEffectJob, a3 as VideoEffectUse, a4 as VideoEffectsEngineOptions, a5 as VideoLayerEffect, a6 as VideoLoudnessMeasurement, a7 as VideoLoudnessTarget, a8 as VideoSequenceClip, a9 as VideoTextClip, aa as VideoWipeDirection, ab as checkVideoEffectPlace, ac as checkVideoEffectValues, ad as ffmpegFilterValue, ae as isVideoKeyframes, af as mixEffectPixels, ag as overEffectPixels, ah as parseVideoLoudnessMeasurement, ai as placeVideoRect, aj as removeVideoKey, ak as retimeVideoAnimatable, al as setVideoKey, am as sortVideoKeys, an as splitVideoAnimatable, ao as toVideoEdl, ap as toVideoFfmpeg, aq as toVideoLoudnessMeasure, ar as videoClipEffectUses, as as videoClipSoundGain, at as videoEaseBezier, au as videoEaseProgress, av as videoEffectFrameTime, aw as videoEffectLayerKey, ax as videoEffectValuesAt, ay as videoFadeCurveGain, az as videoFfmpegUnsupportedEffects, aA as videoFrameAt, aB as videoFrameLeafLayers, aC as videoKeyframeBreakpoints, aD as videoKeyframeFfmpegExpr, aE as videoLayersUseEffects, aF as videoLayersWithoutTransitionEffects, aG as videoProjectEffects, aH as videoShellQuote, aI as videoTextStyle, aJ as videoTitleFrame, aK as videoTransformAt, aL as videoTransitionAudioCurve, aM as videoTransitionEase, aN as videoValueAt } from '../export-DMeG6E06.js';
|
|
3
3
|
import { A as AnimationPlayer, C as Clock } from '../player-BK2kKbfd.js';
|
|
4
4
|
import { b as AnimationLoopMode } from '../evaluate-BbCeF6pt.js';
|
|
5
5
|
import { H as HistoryManager } from '../HistoryManager-DWSLd6Tf.js';
|
|
6
|
-
import { v as EffectsSlot, E as EffectProvider, f as EffectDescription, e as EffectValue } from '../helpers-
|
|
6
|
+
import { v as EffectsSlot, E as EffectProvider, f as EffectDescription, e as EffectValue } from '../helpers-Coa4e2j_.js';
|
|
7
7
|
import { a as AgentToolProvider } from '../registry-D-4fit9C.js';
|
|
8
|
-
import { A as AppliedEffectInfo } from '../tools-
|
|
8
|
+
import { A as AppliedEffectInfo } from '../tools-y1M6O3UT.js';
|
|
9
9
|
import '../easing-lM0Xo9Ni.js';
|
|
10
10
|
import '../types-DsiXGmjo.js';
|
|
11
11
|
import '../schema-Di0CS6Pe.js';
|
package/package.json
CHANGED
|
@@ -306,6 +306,17 @@ the browser's shaper they are kept but not drawn until outlines are available.
|
|
|
306
306
|
| `vector.setResizing` | Set how children of a frame follow it on resize (`horizontal`, `vertical`; a missing axis keeps its value). Fails on objects not directly inside a frame. Returns `{ nodes: [{ id, horizontal, vertical }] }`. |
|
|
307
307
|
| `vector.exportFrameSvg` | Export one frame as an SVG of its own size (its corner at the origin). Returns `{ svg, width, height }`; use it per artboard instead of `vector.exportSvg`. |
|
|
308
308
|
|
|
309
|
+
### Pages and master pages
|
|
310
|
+
|
|
311
|
+
| Command | Use it to |
|
|
312
|
+
| --- | --- |
|
|
313
|
+
| `vector.listPages` | Read the pages (top-level frames in order, with `number`, `masterId`, `bounds`) and master pages (`usedBy`, `bounds`: place master art inside them). |
|
|
314
|
+
| `vector.addPage` | Add a page right of the others (`after`, `name`, `masterId`); the first page takes the artboard's art in. Add art with `parentId`. Returns `{ id }` and the pages. |
|
|
315
|
+
| `vector.addMasterPage` | Add a master page (`assignTo` page ids or "all"): art in it (parentId) shows on its pages, laid out by `resizing`; text can show `{page}` and `{pages}`. Use for headers, footers, page numbers, backgrounds. |
|
|
316
|
+
| `vector.setPageMaster` | Make pages use a master, or none with null. |
|
|
317
|
+
| `vector.movePage` | Reorder a page (`index` from 0); numbers follow. |
|
|
318
|
+
| `vector.goToPage` | Select a page and show it to the user. |
|
|
319
|
+
|
|
309
320
|
### Connectors
|
|
310
321
|
|
|
311
322
|
| Command | Use it to |
|
|
@@ -417,32 +428,11 @@ the animation editor.
|
|
|
417
428
|
|
|
418
429
|
## Pitfalls
|
|
419
430
|
|
|
420
|
-
|
|
421
|
-
`vector.setGradient` or as stops, and other tools see them as SVG patterns. Point indices
|
|
422
|
-
shift after `vector.removeFreeformPoint`; read them again with `vector.getShading`.
|
|
423
|
-
|
|
424
|
-
- A connector's geometry is regenerated after every edit while an end is glued: editing its
|
|
425
|
-
anchors directly does not stick. Unglue the end (`vector.setConnector` with `null`) or change
|
|
426
|
-
`route` instead. Connectors cannot be glued to connectors.
|
|
427
|
-
|
|
428
|
-
- Scaling a frame (`vector.scale`, the selection handles) lays its children out by their
|
|
429
|
-
constraints, so it is a resize, not a zoom; group the frame (or scale its children) to scale the
|
|
430
|
-
art itself. A frame clips by default: objects moved outside it disappear (`clip: false` shows
|
|
431
|
-
them). Moving an object over a frame does not put it inside; use `vector.frameSelection` or
|
|
432
|
-
`adopt`.
|
|
431
|
+
The most common ones are below. Read [references/pitfalls.md](references/pitfalls.md) before working with connectors, frames, masks, filters, text, symbols, constraints, blends, gradient meshes or live corners.
|
|
433
432
|
|
|
434
|
-
- The `d` in `vector.list` draws live corners cut, which adds anchors. On a path with corner
|
|
435
|
-
radii, anchor indices counted from `d` do not match the stored anchors; count anchors on a path
|
|
436
|
-
without corners, or clear corners first.
|
|
437
433
|
- `d` and anchor positions are in the node's own space; `bounds` are in document space. For
|
|
438
434
|
rotated nodes (`rotation` not 0), `vector.moveAnchor` and `vector.bendSegment` take document
|
|
439
435
|
coordinates, so compute them from the drawn position, not from `d`.
|
|
440
|
-
- `vector.boolean` without `live` fails when the result is empty (shapes that do not overlap)
|
|
441
|
-
and consumes its inputs. Subtract removes upper shapes from the lowest: restack with
|
|
442
|
-
`vector.arrange` first.
|
|
443
|
-
- `vector.blend`, `vector.group` and live booleans need nodes that share a parent.
|
|
444
|
-
- Blend in-betweens are locked and regenerate; edit the keys, not the steps.
|
|
445
|
-
- `strokeAlign` inside and outside only apply when every subpath is closed.
|
|
446
436
|
- Stroke widths, corner radii and effect sizes are kept when scaling: scale them yourself if the
|
|
447
437
|
design should grow proportionally.
|
|
448
438
|
- `vector.importSvg` without `replace` adds on top; with `replace: true` it discards the current
|
|
@@ -450,36 +440,5 @@ the animation editor.
|
|
|
450
440
|
- With a stack, `vector.setStyle` `fill` / `stroke` and the stroke settings edit only the top
|
|
451
441
|
layer, and `fill: null` / `stroke: null` remove every layer. Edit other layers with
|
|
452
442
|
`vector.updateFill` / `vector.updateStroke`, by the index `vector.getAppearance` reports.
|
|
453
|
-
- Layer indexes shift after a remove or a move: use the stack each write returns.
|
|
454
|
-
- Path effects apply to the whole node, every layer alike. Blend in-betweens mix the top fill and
|
|
455
|
-
stroke only.
|
|
456
|
-
- In a mask group the order matters: the bottom child is always the mask. `vector.arrange` inside
|
|
457
|
-
the group can change which object masks; deleting the mask releases the group instead.
|
|
458
|
-
- A mask group's path effects act on its contents, not on the mask. Hit-testing, bounds,
|
|
459
|
-
snapping and booleans use the masked result; an opacity mask counts wherever it paints, even
|
|
460
|
-
where it is dark.
|
|
461
|
-
- Filters and blend modes are drawn, not geometry: bounds, snapping, booleans and Outline Stroke
|
|
462
|
-
ignore them. A node's blend mode and filter isolate its layers, so layer blend modes inside a
|
|
463
|
-
node with a filter mix only with the node's own layers. Background blur is not available.
|
|
464
|
-
- Text positions are code units: an emoji or other character outside the Basic Multilingual
|
|
465
|
-
Plane counts 2. Take ranges from `vector.getText` rather than counting characters yourself.
|
|
466
|
-
- Scaling text scales its font size (by the square root of the area change) and an area box per
|
|
467
|
-
axis; it is never stretched. Skew is not kept on text.
|
|
468
|
-
- Without an outline shaper (`vector.listFonts` `outlines: false`), text exports as SVG `<text>`
|
|
469
|
-
positioned character by character; other viewers need the same fonts installed. Create Outlines
|
|
470
|
-
(with an outline shaper) when the SVG must look the same everywhere.
|
|
471
|
-
- An instance's `transform` may scale; its art's strokes scale with it unless `scaleStrokes: false`.
|
|
472
|
-
Transform commands act on the instance, not the art: edit the art with `vector.editSymbol`.
|
|
473
|
-
- While a symbol is being edited (`vector.listSymbols` `editing`), `vector.list` lists its art, not
|
|
474
|
-
the document. Always finish with `vector.exitSymbolEdit`. A symbol cannot contain an instance
|
|
475
|
-
of itself (directly or through another symbol).
|
|
476
|
-
- Constraint refs to anchors give them stable ids; later anchor edits keep them, but rebuilding a
|
|
477
|
-
path (booleans, Outline Stroke, Expand) drops them, and constraints on missing anchors are
|
|
478
|
-
removed. `segment` means the straight line between two anchors, even when the segment is curved;
|
|
479
|
-
`tangent` / `smooth` on one anchor act on its handles.
|
|
480
|
-
- After any edit the solver moves the rest of the geometry to keep the constraints; the anchors
|
|
481
|
-
you just moved move least. A fixed or fully constrained part will not move: remove or change a
|
|
482
|
-
constraint first.
|
|
483
|
-
- `vector.typeOnPath` consumes the path. Duplicate it first if the path should stay visible.
|
|
484
443
|
- A command that fails changes nothing; read its message (for example "Nothing is selected; pass
|
|
485
444
|
ids.") and retry with the missing input.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Vector editor pitfalls by area
|
|
2
|
+
|
|
3
|
+
Detail moved out of SKILL.md (progressive disclosure). Each pitfall says what goes wrong and what to do instead.
|
|
4
|
+
|
|
5
|
+
- Mesh and freeform fills draw as fine tiles, not SVG gradients: they cannot be edited with
|
|
6
|
+
`vector.setGradient` or as stops, and other tools see them as SVG patterns. Point indices
|
|
7
|
+
shift after `vector.removeFreeformPoint`; read them again with `vector.getShading`.
|
|
8
|
+
|
|
9
|
+
- A connector's geometry is regenerated after every edit while an end is glued: editing its
|
|
10
|
+
anchors directly does not stick. Unglue the end (`vector.setConnector` with `null`) or change
|
|
11
|
+
`route` instead. Connectors cannot be glued to connectors.
|
|
12
|
+
|
|
13
|
+
- Scaling a frame (`vector.scale`, the selection handles) lays its children out by their
|
|
14
|
+
constraints, so it is a resize, not a zoom; group the frame (or scale its children) to scale the
|
|
15
|
+
art itself. A frame clips by default: objects moved outside it disappear (`clip: false` shows
|
|
16
|
+
them). Moving an object over a frame does not put it inside; use `vector.frameSelection` or
|
|
17
|
+
`adopt`.
|
|
18
|
+
|
|
19
|
+
- The `d` in `vector.list` draws live corners cut, which adds anchors. On a path with corner
|
|
20
|
+
radii, anchor indices counted from `d` do not match the stored anchors; count anchors on a path
|
|
21
|
+
without corners, or clear corners first.
|
|
22
|
+
- `vector.boolean` without `live` fails when the result is empty (shapes that do not overlap)
|
|
23
|
+
and consumes its inputs. Subtract removes upper shapes from the lowest: restack with
|
|
24
|
+
`vector.arrange` first.
|
|
25
|
+
- `vector.blend`, `vector.group` and live booleans need nodes that share a parent.
|
|
26
|
+
- Blend in-betweens are locked and regenerate; edit the keys, not the steps.
|
|
27
|
+
- `strokeAlign` inside and outside only apply when every subpath is closed.
|
|
28
|
+
- Layer indexes shift after a remove or a move: use the stack each write returns.
|
|
29
|
+
- Path effects apply to the whole node, every layer alike. Blend in-betweens mix the top fill and
|
|
30
|
+
stroke only.
|
|
31
|
+
- In a mask group the order matters: the bottom child is always the mask. `vector.arrange` inside
|
|
32
|
+
the group can change which object masks; deleting the mask releases the group instead.
|
|
33
|
+
- A mask group's path effects act on its contents, not on the mask. Hit-testing, bounds,
|
|
34
|
+
snapping and booleans use the masked result; an opacity mask counts wherever it paints, even
|
|
35
|
+
where it is dark.
|
|
36
|
+
- Filters and blend modes are drawn, not geometry: bounds, snapping, booleans and Outline Stroke
|
|
37
|
+
ignore them. A node's blend mode and filter isolate its layers, so layer blend modes inside a
|
|
38
|
+
node with a filter mix only with the node's own layers. Background blur is not available.
|
|
39
|
+
- Text positions are code units: an emoji or other character outside the Basic Multilingual
|
|
40
|
+
Plane counts 2. Take ranges from `vector.getText` rather than counting characters yourself.
|
|
41
|
+
- Scaling text scales its font size (by the square root of the area change) and an area box per
|
|
42
|
+
axis; it is never stretched. Skew is not kept on text.
|
|
43
|
+
- Without an outline shaper (`vector.listFonts` `outlines: false`), text exports as SVG `<text>`
|
|
44
|
+
positioned character by character; other viewers need the same fonts installed. Create Outlines
|
|
45
|
+
(with an outline shaper) when the SVG must look the same everywhere.
|
|
46
|
+
- An instance's `transform` may scale; its art's strokes scale with it unless `scaleStrokes: false`.
|
|
47
|
+
Transform commands act on the instance, not the art: edit the art with `vector.editSymbol`.
|
|
48
|
+
- While a symbol is being edited (`vector.listSymbols` `editing`), `vector.list` lists its art, not
|
|
49
|
+
the document. Always finish with `vector.exitSymbolEdit`. A symbol cannot contain an instance
|
|
50
|
+
of itself (directly or through another symbol).
|
|
51
|
+
- Constraint refs to anchors give them stable ids; later anchor edits keep them, but rebuilding a
|
|
52
|
+
path (booleans, Outline Stroke, Expand) drops them, and constraints on missing anchors are
|
|
53
|
+
removed. `segment` means the straight line between two anchors, even when the segment is curved;
|
|
54
|
+
`tangent` / `smooth` on one anchor act on its handles.
|
|
55
|
+
- After any edit the solver moves the rest of the geometry to keep the constraints; the anchors
|
|
56
|
+
you just moved move least. A fixed or fully constrained part will not move: remove or change a
|
|
57
|
+
constraint first.
|
|
58
|
+
- `vector.typeOnPath` consumes the path. Duplicate it first if the path should stay visible.
|
|
59
|
+
- Master art on a page is drawn from its master page and is locked there: edit the master page
|
|
60
|
+
(its id from `vector.listPages`, `parentId` to add to it), not the page. Give master objects
|
|
61
|
+
`resizing` (for example `vertical: "bottom"` for a footer) so they sit right on pages of other
|
|
62
|
+
sizes. Master pages are not pages: they are not numbered and PDF export by artboards skips them.
|