@pixerate/editor 0.112.0 → 0.114.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 (129) hide show
  1. package/THIRD_PARTY_NOTICES.md +11 -0
  2. package/dist/animation-editor/index.cjs +60 -54
  3. package/dist/animation-editor/index.cjs.map +1 -1
  4. package/dist/animation-editor/index.d.cts +3 -3
  5. package/dist/animation-editor/index.d.ts +3 -3
  6. package/dist/animation-editor/index.js +14 -8
  7. package/dist/animation-editor/index.js.map +1 -1
  8. package/dist/builtin-CY97ppKM.d.cts +354 -0
  9. package/dist/builtin-CY97ppKM.d.ts +354 -0
  10. package/dist/canvas/index.cjs +3 -3
  11. package/dist/canvas/index.cjs.map +1 -1
  12. package/dist/canvas/index.js +9 -9
  13. package/dist/chunk-26PGXHY7.cjs +753 -0
  14. package/dist/chunk-26PGXHY7.cjs.map +1 -0
  15. package/dist/chunk-2OJACTPR.cjs +929 -0
  16. package/dist/chunk-2OJACTPR.cjs.map +1 -0
  17. package/dist/chunk-3UFGNHSP.js +929 -0
  18. package/dist/chunk-3UFGNHSP.js.map +1 -0
  19. package/dist/{chunk-YGIMK4NX.cjs → chunk-5OVJHMZQ.cjs} +757 -825
  20. package/dist/chunk-5OVJHMZQ.cjs.map +1 -0
  21. package/dist/chunk-643B2HKC.cjs +534 -0
  22. package/dist/chunk-643B2HKC.cjs.map +1 -0
  23. package/dist/chunk-6FCKOS2B.js +534 -0
  24. package/dist/chunk-6FCKOS2B.js.map +1 -0
  25. package/dist/chunk-BRLYOPLT.js +2574 -0
  26. package/dist/chunk-BRLYOPLT.js.map +1 -0
  27. package/dist/{chunk-LQEEDHOP.js → chunk-C6C5PDKU.js} +759 -761
  28. package/dist/chunk-C6C5PDKU.js.map +1 -0
  29. package/dist/chunk-DFQEX3AM.cjs +781 -0
  30. package/dist/chunk-DFQEX3AM.cjs.map +1 -0
  31. package/dist/{chunk-CZOXTEMN.js → chunk-EUVSQ25B.js} +336 -404
  32. package/dist/chunk-EUVSQ25B.js.map +1 -0
  33. package/dist/chunk-G5NMLUVF.cjs +2574 -0
  34. package/dist/chunk-G5NMLUVF.cjs.map +1 -0
  35. package/dist/chunk-LKCYANMW.js +781 -0
  36. package/dist/chunk-LKCYANMW.js.map +1 -0
  37. package/dist/{chunk-W3GXSUSQ.cjs → chunk-LPLCWZTM.cjs} +5087 -1283
  38. package/dist/chunk-LPLCWZTM.cjs.map +1 -0
  39. package/dist/chunk-MMVHBKMM.js +753 -0
  40. package/dist/chunk-MMVHBKMM.js.map +1 -0
  41. package/dist/{chunk-POGBUYWE.cjs → chunk-ST7E3NEE.cjs} +857 -859
  42. package/dist/chunk-ST7E3NEE.cjs.map +1 -0
  43. package/dist/{chunk-7VOHOPLW.cjs → chunk-TCKIXI46.cjs} +59 -59
  44. package/dist/{chunk-7VOHOPLW.cjs.map → chunk-TCKIXI46.cjs.map} +1 -1
  45. package/dist/{chunk-XIOMMGPD.cjs → chunk-TFOPHZ3U.cjs} +1 -1
  46. package/dist/chunk-TFOPHZ3U.cjs.map +1 -0
  47. package/dist/{chunk-Z4BC6M74.js → chunk-UBIXVXPR.js} +2 -2
  48. package/dist/{chunk-BLWCAQCW.js → chunk-VXR7XWMF.js} +4574 -770
  49. package/dist/chunk-VXR7XWMF.js.map +1 -0
  50. package/dist/{chunk-HNS7UHCM.js → chunk-XK5LZKBD.js} +1 -1
  51. package/dist/chunk-XK5LZKBD.js.map +1 -0
  52. package/dist/cms/index.cjs +146 -0
  53. package/dist/cms/index.cjs.map +1 -0
  54. package/dist/cms/index.d.cts +51 -0
  55. package/dist/cms/index.d.ts +51 -0
  56. package/dist/cms/index.js +146 -0
  57. package/dist/{export-DNu_Jr8p.d.ts → export-_1dUKwpF.d.ts} +326 -195
  58. package/dist/{export-DBba-buV.d.cts → export-b6NjCZ5-.d.cts} +326 -195
  59. package/dist/image-editor/index.cjs +2377 -1291
  60. package/dist/image-editor/index.cjs.map +1 -1
  61. package/dist/image-editor/index.d.cts +149 -97
  62. package/dist/image-editor/index.d.ts +149 -97
  63. package/dist/image-editor/index.js +1343 -257
  64. package/dist/image-editor/index.js.map +1 -1
  65. package/dist/opentype-BZEOSOX3.d.ts +188 -0
  66. package/dist/opentype-Dpe75vL5.d.cts +188 -0
  67. package/dist/paint/index.cjs +63 -4
  68. package/dist/paint/index.cjs.map +1 -1
  69. package/dist/paint/index.d.cts +30 -3
  70. package/dist/paint/index.d.ts +30 -3
  71. package/dist/paint/index.js +62 -3
  72. package/dist/paint-editor/index.cjs +146 -145
  73. package/dist/paint-editor/index.cjs.map +1 -1
  74. package/dist/paint-editor/index.d.cts +9 -8
  75. package/dist/paint-editor/index.d.ts +9 -8
  76. package/dist/paint-editor/index.js +6 -5
  77. package/dist/paint-editor/index.js.map +1 -1
  78. package/dist/raster/index.cjs +53 -3
  79. package/dist/raster/index.cjs.map +1 -1
  80. package/dist/raster/index.d.cts +62 -91
  81. package/dist/raster/index.d.ts +62 -91
  82. package/dist/raster/index.js +59 -9
  83. package/dist/{render-BEriFuqK.d.cts → render-B1K_OoLy.d.cts} +87 -2
  84. package/dist/{render-tjzKaik-.d.ts → render-CrmHOgpo.d.ts} +87 -2
  85. package/dist/{blending-aOE6Y3UE.d.cts → retouch-Bxkuc0KH.d.cts} +219 -2
  86. package/dist/{blending-DXl06NSx.d.ts → retouch-Do6tBs2H.d.ts} +219 -2
  87. package/dist/{surface-C8RRg_Bh.d.ts → surface-Cn30xIV6.d.cts} +6 -1
  88. package/dist/{surface-C8RRg_Bh.d.cts → surface-Cn30xIV6.d.ts} +6 -1
  89. package/dist/{svg-D_cfkhlB.d.cts → svg-BnRj0q8i.d.cts} +16 -4
  90. package/dist/{svg-wIaKLrU0.d.ts → svg-CmmBFfGT.d.ts} +16 -4
  91. package/dist/{types-DtL_qLFz.d.ts → types-1SUQKDAw.d.ts} +273 -4
  92. package/dist/{types-DyQq-WPY.d.cts → types-yINF17Ta.d.cts} +273 -4
  93. package/dist/vector/index.cjs +12170 -7343
  94. package/dist/vector/index.cjs.map +1 -1
  95. package/dist/vector/index.d.cts +1579 -16
  96. package/dist/vector/index.d.ts +1579 -16
  97. package/dist/vector/index.js +6303 -1476
  98. package/dist/vector/index.js.map +1 -1
  99. package/dist/warp-B39VsOtd.d.cts +348 -0
  100. package/dist/warp-DMN30aY6.d.ts +348 -0
  101. package/dist/zlib-dxQdgHyN.d.cts +95 -0
  102. package/dist/zlib-dxQdgHyN.d.ts +95 -0
  103. package/package.json +6 -1
  104. package/skills/pixerate-image-editor/SKILL.md +34 -34
  105. package/skills/pixerate-image-editor/references/color-management.md +37 -0
  106. package/skills/pixerate-image-editor/references/photoshop-files.md +39 -0
  107. package/skills/pixerate-image-editor/references/retouching.md +36 -0
  108. package/skills/pixerate-vector/SKILL.md +154 -5
  109. package/dist/chunk-BLWCAQCW.js.map +0 -1
  110. package/dist/chunk-CZOXTEMN.js.map +0 -1
  111. package/dist/chunk-FTBZPI77.cjs +0 -1
  112. package/dist/chunk-FTBZPI77.cjs.map +0 -1
  113. package/dist/chunk-HNS7UHCM.js.map +0 -1
  114. package/dist/chunk-JLYX4V57.cjs +0 -2001
  115. package/dist/chunk-JLYX4V57.cjs.map +0 -1
  116. package/dist/chunk-KB2YBCVS.js +0 -2001
  117. package/dist/chunk-KB2YBCVS.js.map +0 -1
  118. package/dist/chunk-LQEEDHOP.js.map +0 -1
  119. package/dist/chunk-POGBUYWE.cjs.map +0 -1
  120. package/dist/chunk-VKK5VS2T.js +0 -1
  121. package/dist/chunk-W3GXSUSQ.cjs.map +0 -1
  122. package/dist/chunk-XIOMMGPD.cjs.map +0 -1
  123. package/dist/chunk-YGIMK4NX.cjs.map +0 -1
  124. package/dist/homography-CZ-tFjay.d.cts +0 -50
  125. package/dist/homography-Ctfjoc1b.d.ts +0 -50
  126. package/dist/warp-CWHZzE3x.d.ts +0 -118
  127. package/dist/warp-D5jz_tN7.d.cts +0 -118
  128. /package/dist/{chunk-Z4BC6M74.js.map → chunk-UBIXVXPR.js.map} +0 -0
  129. /package/dist/{chunk-VKK5VS2T.js.map → cms/index.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { B as BlendMode, R as RasterRect, T as TileKey, P as Pigment } from './surface-C8RRg_Bh.js';
1
+ import { a as BlendMode, R as RasterRect, i as TileKey, Y as Pigment } from './surface-Cn30xIV6.js';
2
2
 
3
3
  /**
4
4
  * The brush engine (a subset of photocraft's `crates/paint`): a computed round tip with size,
@@ -483,4 +483,221 @@ declare class SmudgeTip {
483
483
  dab(medium: TileMedium, d: SmudgeDab, rect: RasterRect, cov: ArrayLike<number>): void;
484
484
  }
485
485
 
486
- export { tipShape as $, blendRadius as A, type BrushSettings as B, CoverageMap as C, type Dab as D, EMPTY_MIXER_LOAD as E, blenderDab as F, cleanMixer as G, coverageTileCoord as H, createBlenderScratch as I, dabCoverage as J, dabRect as K, exchangeRates as L, type MixerSettings as M, loadMixer as N, mixerRates as O, type PaintTileTarget as P, normalizeBlender as Q, type RgbTriple as R, type SmudgeSettings as S, TileMedium as T, normalizeBrush as U, normalizeMixer as V, normalizeSmudge as W, rasterizeDab as X, smoothPoints as Y, tipFalloff as Z, tipReach as _, type MixingModel as a, walkDabs as a0, type BlenderSettings as b, type StrokePoint as c, type MixerLoad as d, MAX_BRUSH_SIZE as e, StrokeCoverage as f, type MixerTarget as g, MixerStroke as h, type StrokeApply as i, type BlenderScratch as j, DEFAULT_BLENDER as k, DEFAULT_BRUSH as l, DEFAULT_MIXER as m, DEFAULT_SMUDGE as n, DabWalker as o, type ExchangeRates as p, MIXER_DRAIN as q, MIXER_PICKUP_RATE as r, MIXING_MODELS as s, PaintExchange as t, type PaintMedium as u, type PaintSample as v, type SmudgeDab as w, SmudgeTip as x, type TileMediumOptions as y, applyStrokeToTile as z };
486
+ /**
487
+ * The retouching tools on the shared brush engine: Clone Stamp, Healing Brush, Spot Healing
488
+ * Brush, Smudge, Dodge, Burn and Sponge. Two stroke shapes cover them all:
489
+ *
490
+ * - **Accumulate, then composite** (Clone Stamp, Dodge, Burn; the Healing tools' result): the
491
+ * stroke's dabs build up one `CoverageMap` (flow builds towards the dab's opacity ceiling), and
492
+ * per-pixel paint taken from the pre-stroke state (a cloned source, a toned copy of the pixel,
493
+ * a healed patch) is composited through it with `applyRetouchToTile`. Pixels painted earlier in
494
+ * the stroke are never sampled again, and overlapping dabs never exceed the stroke's opacity.
495
+ * - **Sequential dabs** (Smudge, Sponge): `RetouchDabStroke` runs each dab in order over live
496
+ * tiles, so dab n sees what dab n − 1 did.
497
+ *
498
+ * The Healing Brush clones while it is drawn and, when the stroke ends, replaces the clone with a
499
+ * seamless clone (`healPixels`, Poisson blending): the source's texture with the colour and light
500
+ * of the pixels around the stroke. The Spot Healing Brush finds its own source (`spotHealPixels`).
501
+ *
502
+ * Tone curves (`dodgeBurnCurve`, `dodgeBurn`, `sponge`) are photocraft's, made to behave like
503
+ * Photoshop's tools: the chosen range moves most, black and white stay put for midtones, and
504
+ * Protect Tones works on luma so hue and saturation are kept. Data in, pixels out; no DOM.
505
+ */
506
+
507
+ /** The tonal range Dodge and Burn work on most. */
508
+ type ToneRange = 'shadows' | 'midtones' | 'highlights';
509
+ declare const TONE_RANGES: readonly ToneRange[];
510
+ /** Rec. 601 luma of straight RGB (0..1). */
511
+ declare function luma(r: number, g: number, b: number): number;
512
+ /** The dodge (or burn) transfer of one value `v` (0..1) at exposure `e` (0..1). */
513
+ declare function dodgeBurnCurve(v: number, e: number, range: ToneRange, burn: boolean): number;
514
+ /**
515
+ * Dodge (or burn) straight RGB `c` (0..1, written in place) at exposure `e`. With `protectTones`
516
+ * the curve moves luma and the colour is scaled to it (hue and saturation kept); otherwise each
517
+ * channel goes through the curve.
518
+ */
519
+ declare function dodgeBurn(c: number[], e: number, range: ToneRange, burn: boolean, protectTones: boolean): number[];
520
+ /** HSV saturation (chroma / max) of straight RGB. */
521
+ declare function saturationOf(r: number, g: number, b: number): number;
522
+ /**
523
+ * Sponge: moves straight RGB `c` (written in place) away from (`saturate`) or towards its luma
524
+ * grey by `amount` (0..1). `vibrance` damps it where it would clip: saturating touches already
525
+ * saturated colours less, desaturating touches near-greys less. Gamut-compressed, never clipped.
526
+ */
527
+ declare function sponge(c: number[], amount: number, saturate: boolean, vibrance: boolean): number[];
528
+ /** Per-dab strength so that one pass over a point totals about `e`, whatever the spacing. */
529
+ declare function perDabStrength(e: number, spacing: number): number;
530
+ /** Which pixels the Clone Stamp and the Healing tools sample. */
531
+ type RetouchSample = 'current' | 'current-below' | 'all';
532
+ declare const RETOUCH_SAMPLES: readonly RetouchSample[];
533
+ /** How the Spot Healing Brush finds its source. */
534
+ type SpotHealType = 'proximity-match' | 'smooth';
535
+ declare const SPOT_HEAL_TYPES: readonly SpotHealType[];
536
+ /** The retouching tools' options. */
537
+ interface RetouchSettings {
538
+ /** Clone / heal: keep the source offset from stroke to stroke (default true); off, every stroke starts at the source point. */
539
+ aligned: boolean;
540
+ /** Clone / heal / spot heal: what is sampled (default `current`: the target layer). */
541
+ sample: RetouchSample;
542
+ /** Spot heal: `proximity-match` (default: the best matching patch nearby) or `smooth` (a smooth fill from the edges). */
543
+ spotType: SpotHealType;
544
+ /** Dodge / burn: the tonal range (default `midtones`). */
545
+ range: ToneRange;
546
+ /** Dodge / burn: exposure 0..1 (default 0.5). */
547
+ exposure: number;
548
+ /** Dodge / burn: tone luma only, keeping hue and saturation (default true). */
549
+ protectTones: boolean;
550
+ /** Sponge: `desaturate` (default) or `saturate`. */
551
+ spongeMode: 'desaturate' | 'saturate';
552
+ /** Sponge: damp the change where colours would clip (default true). */
553
+ vibrance: boolean;
554
+ /** Smudge: how strongly the finger carries and lays paint, 0..1 (default 0.5). */
555
+ strength: number;
556
+ }
557
+ declare const DEFAULT_RETOUCH: Readonly<RetouchSettings>;
558
+ /** Retouch settings with every field valid (missing or invalid fields from `base`). */
559
+ declare function normalizeRetouch(raw?: Partial<RetouchSettings>, base?: RetouchSettings): RetouchSettings;
560
+ /** Pixels a retouching stroke samples, by document pixel. */
561
+ interface PixelSource {
562
+ /** Straight RGBA 0..255 of document pixel (x, y) into `out`; false (and `out` zeroed) where there is nothing. */
563
+ sample(x: number, y: number, out: number[]): boolean;
564
+ }
565
+ /**
566
+ * A source over raster tiles (layer pixels, a mask, or composite tiles): `readTile` gives tile
567
+ * (tx, ty) in source space or `null` when it is empty; source pixel = document pixel − `offset`.
568
+ * One-channel tiles read as grey (alpha 255). Tiles are cached, so make one per stroke.
569
+ */
570
+ declare class TilePixelSource implements PixelSource {
571
+ private readonly readTile;
572
+ readonly channels: 1 | 4;
573
+ readonly offset: {
574
+ x: number;
575
+ y: number;
576
+ };
577
+ private readonly cache;
578
+ private lastKey;
579
+ private last;
580
+ constructor(readTile: (tx: number, ty: number) => Uint8ClampedArray | null, channels: 1 | 4, offset?: {
581
+ x: number;
582
+ y: number;
583
+ });
584
+ sample(x: number, y: number, out: number[]): boolean;
585
+ }
586
+ /** A source over a region of float RGBA pixels (0..255), e.g. a healed patch. */
587
+ declare class RegionPixelSource implements PixelSource {
588
+ readonly rect: RasterRect;
589
+ readonly data: Float32Array;
590
+ constructor(rect: RasterRect, data: Float32Array);
591
+ sample(x: number, y: number, out: number[]): boolean;
592
+ }
593
+ /** `rect` of a source, shifted by (dx, dy), as float RGBA 0..255 (`rect.width × rect.height × 4`). */
594
+ declare function readSourceRegion(source: PixelSource, rect: RasterRect, dx?: number, dy?: number): Float32Array;
595
+ /** What a coverage-based retouching stroke lays through its coverage. */
596
+ type RetouchPaint =
597
+ /** Source pixels at document pixel + (dx, dy) (Clone Stamp, a healed patch). */
598
+ {
599
+ kind: 'source';
600
+ source: PixelSource;
601
+ dx: number;
602
+ dy: number;
603
+ }
604
+ /** The target pixel itself, toned (Dodge, Burn): `tone` edits straight RGB 0..1 in place. */
605
+ | {
606
+ kind: 'tone';
607
+ tone: (rgb: number[]) => void;
608
+ }
609
+ /** A flat colour (the Spot Healing Brush's trail while it is drawn), RGBA 0..255. */
610
+ | {
611
+ kind: 'color';
612
+ color: readonly [number, number, number, number];
613
+ };
614
+ /** How a coverage-based retouching stroke composites. */
615
+ interface RetouchApply {
616
+ /** Stroke opacity 0..1. */
617
+ opacity: number;
618
+ /** Blend mode for source paint (default normal). */
619
+ blend?: BlendMode;
620
+ lockTransparency: boolean;
621
+ /** Selection coverage (document space, canvas-sized), or `null`. */
622
+ selection: {
623
+ width: number;
624
+ height: number;
625
+ data: ArrayLike<number>;
626
+ } | null;
627
+ /** Layer offset (target pixels are in layer space). */
628
+ offset: {
629
+ x: number;
630
+ y: number;
631
+ };
632
+ }
633
+ /**
634
+ * Composites `paint` through the stroke's coverage over `tileData` (target tile (tx, ty) as it was
635
+ * before the stroke, layer space; RGBA, or one byte per pixel for masks) and returns the new tile.
636
+ * With `into` (the previous result) and `region` (document space), only `region` is recomputed.
637
+ * Tone paint keeps alpha; source and colour paint composite with `blend` (source-over by
638
+ * default), keeping alpha on a locked layer.
639
+ */
640
+ declare function applyRetouchToTile(coverage: CoverageMap, tileData: Uint8ClampedArray, channels: 1 | 4, tx: number, ty: number, paint: RetouchPaint, s: RetouchApply, options?: {
641
+ into?: Uint8ClampedArray;
642
+ region?: RasterRect;
643
+ }): Uint8ClampedArray;
644
+ /** The tone function of a Dodge or Burn stroke. */
645
+ declare function toneOf(tool: 'dodge' | 'burn', settings: Pick<RetouchSettings, 'exposure' | 'range' | 'protectTones'>): (rgb: number[]) => void;
646
+ /**
647
+ * Heals `src` into `dst` over `mask` (all `w × h`, RGBA floats 0..255): a seamless clone solved
648
+ * only over the mask's bounds plus a one-pixel fixed ring; elsewhere the result is `dst`.
649
+ */
650
+ declare function healPixels(w: number, h: number, src: Float32Array, dst: Float32Array, mask: ArrayLike<boolean | number>): Float32Array;
651
+ /**
652
+ * Spot healing: fills `hole` (`w × h`) of `img` (RGBA floats 0..255) with no given source, then
653
+ * heals the fill into its surroundings. `proximity-match` copies the best matching nearby patch
654
+ * (falling back to `smooth` when none fits); `smooth` interpolates the edges inwards. `size` is
655
+ * the brush diameter in pixels. Returns the healed pixels over the whole grid.
656
+ */
657
+ declare function spotHealPixels(w: number, h: number, img: Float32Array, hole: ArrayLike<boolean | number>, size: number, type: SpotHealType,
658
+ /** Told the patch offset it copied (`null`: a smooth fill). */
659
+ onOffset?: (offset: [number, number] | null) => void): Float32Array;
660
+ /** The window a Spot Healing stroke over `bounds` looks for texture in: the bounds grown by their size, on the canvas. */
661
+ declare function spotHealWindow(bounds: RasterRect, canvas: {
662
+ width: number;
663
+ height: number;
664
+ }): RasterRect;
665
+ /**
666
+ * One dab of a sequential retouching stroke: `cov` is the tip's pure coverage over `rect`
667
+ * (document space, 0..1); `d.alpha` is the flow and `d.opacity` the pressure opacity.
668
+ */
669
+ type RetouchDabEffect = (medium: TileMedium, d: Dab, rect: RasterRect, cov: Float32Array) => void;
670
+ /**
671
+ * A stroke whose dabs edit live tiles in order (Smudge, Sponge). Feed points with `push` (any
672
+ * chunks give the same dabs), end with `finish`; each returns the document rectangles it touched.
673
+ */
674
+ declare class RetouchDabStroke {
675
+ readonly brush: BrushSettings;
676
+ private readonly effect;
677
+ dabCount: number;
678
+ bounds: RasterRect | null;
679
+ private readonly walker;
680
+ private readonly medium;
681
+ private smoothPos;
682
+ private buf;
683
+ constructor(brush: BrushSettings, target: PaintTileTarget, effect: RetouchDabEffect);
684
+ push(points: readonly StrokePoint[]): RasterRect[];
685
+ finish(last?: StrokePoint): RasterRect[];
686
+ private smooth;
687
+ private paint;
688
+ }
689
+ /** The Smudge's per-dab effect: a `SmudgeTip` whose strength carries and lays the paint. */
690
+ declare function smudgeEffect(brush: BrushSettings, strength: number, mixing?: SmudgeSettings['mixing']): RetouchDabEffect;
691
+ /** The Sponge's per-dab effect: each dab moves saturation by about half its flow, compounding over passes. */
692
+ declare function spongeEffect(brush: BrushSettings, saturate: boolean, vibrance: boolean): RetouchDabEffect;
693
+ /**
694
+ * An RGBA view of one-channel tiles (masks), for the sequential-dab tools: reads expand grey to
695
+ * opaque RGB, writes land in RGBA copies, and `flush` writes their red channel back through
696
+ * `target.writeTile`. Alpha is locked, so a mask's values are all a dab changes.
697
+ */
698
+ declare function rgbaViewOfGrey(target: PaintTileTarget): {
699
+ target: PaintTileTarget;
700
+ flush(): void;
701
+ };
702
+
703
+ export { cleanMixer as $, type PixelSource as A, type BrushSettings as B, CoverageMap as C, type Dab as D, EMPTY_MIXER_LOAD as E, RETOUCH_SAMPLES as F, RegionPixelSource as G, type RetouchDabEffect as H, RetouchDabStroke as I, type RetouchSample as J, SPOT_HEAL_TYPES as K, type SmudgeDab as L, type MixerSettings as M, SmudgeTip as N, type SpotHealType as O, type PaintTileTarget as P, TileMedium as Q, type RgbTriple as R, type SmudgeSettings as S, TONE_RANGES as T, type TileMediumOptions as U, TilePixelSource as V, type ToneRange as W, applyRetouchToTile as X, applyStrokeToTile as Y, blendRadius as Z, blenderDab as _, type MixingModel as a, coverageTileCoord as a0, createBlenderScratch as a1, dabCoverage as a2, dabRect as a3, dodgeBurn as a4, dodgeBurnCurve as a5, exchangeRates as a6, healPixels as a7, loadMixer as a8, luma as a9, mixerRates as aa, normalizeBlender as ab, normalizeBrush as ac, normalizeMixer as ad, normalizeRetouch as ae, normalizeSmudge as af, perDabStrength as ag, rasterizeDab as ah, readSourceRegion as ai, rgbaViewOfGrey as aj, saturationOf as ak, smoothPoints as al, smudgeEffect as am, sponge as an, spongeEffect as ao, spotHealPixels as ap, spotHealWindow as aq, tipFalloff as ar, tipReach as as, tipShape as at, toneOf as au, walkDabs as av, type BlenderSettings as b, type StrokePoint as c, type MixerLoad as d, MAX_BRUSH_SIZE as e, type RetouchSettings as f, StrokeCoverage as g, type MixerTarget as h, MixerStroke as i, type RetouchApply as j, type RetouchPaint as k, type StrokeApply as l, type BlenderScratch as m, DEFAULT_BLENDER as n, DEFAULT_BRUSH as o, DEFAULT_MIXER as p, DEFAULT_RETOUCH as q, DEFAULT_SMUDGE as r, DabWalker as s, type ExchangeRates as t, MIXER_DRAIN as u, MIXER_PICKUP_RATE as v, MIXING_MODELS as w, PaintExchange as x, type PaintMedium as y, type PaintSample as z };
@@ -223,6 +223,11 @@ interface Tile {
223
223
  readonly data: Uint8ClampedArray;
224
224
  /** The packed value of every pixel when the tile is uniform, else `null`. */
225
225
  readonly uniform: number | null;
226
+ /**
227
+ * High bit depth samples (see `./deep`): 16-bit sRGB-encoded or 32-bit linear float, of which
228
+ * `data` is the 8-bit rendering. Missing: the tile is 8-bit.
229
+ */
230
+ readonly deep?: Uint16Array | Float32Array;
226
231
  }
227
232
  /**
228
233
  * An immutable tiled surface. `channels` is 4 (RGBA) for layers and 1 for masks. Missing tiles
@@ -316,4 +321,4 @@ declare function collectTiles(surface: TiledSurface, into: Set<Tile>): void;
316
321
  /** True when two surfaces hold the same pixels (cheap when they share tiles). */
317
322
  declare function surfacesEqual(a: TiledSurface, b: TiledSurface): boolean;
318
323
 
319
- export { solidSurface as $, collectTiles as A, type BlendMode as B, contentBounds as C, createPigment as D, emptySurface as E, fillRect as F, finishTile as G, isSeparableBlendMode as H, lerpPigment as I, lerpPigmentInto as J, mixPigment8 as K, mixPigmentRgb as L, type MaskSurface as M, mixPigments as N, normalizeBlendMode as O, type Pigment as P, packRgba as Q, type RasterRect as R, SHADOW_AMBIENT as S, type TileKey as T, pigment8 as U, readPixel as V, readRegion as W, reflectanceToRgb as X, rgbToReflectance as Y, setLum as Z, setPigmentColor as _, TiledSurface as a, surfaceBytes as a0, surfaceFromPixels as a1, surfacesEqual as a2, tileCoord as a3, tileKey as a4, tileRect as a5, tilesInRect as a6, translateSurface as a7, uniformTile as a8, writeRegion as a9, type PixelSurface as b, type BlendModeInfo as c, BLEND_MODES as d, PAINTERLY_BLEND_MODES as e, type Tile as f, isPainterlyBlendMode as g, PIGMENT_BANDS as h, isBlendMode as i, PIGMENT_LAMBDA_MIN as j, PIGMENT_LAMBDA_STEP as k, PIGMENT_WAVELENGTHS as l, type PigmentOptions as m, type PigmentRgb as n, type Rgb as o, type Rgba as p, SurfaceDraft as q, TILE as r, standardBlendMode as s, TILE_SHIFT as t, blendChannel as u, blendImageData as v, blendLum as w, blendPixel as x, blendRgb as y, canvasCompositeOperation as z };
324
+ export { PIGMENT_LAMBDA_STEP as $, normalizeBlendMode as A, BLEND_MODES as B, packRgba as C, pigment8 as D, readPixel as E, readRegion as F, setLum as G, solidSurface as H, standardBlendMode as I, surfaceBytes as J, surfaceFromPixels as K, surfacesEqual as L, type MaskSurface as M, tileCoord as N, tileKey as O, PAINTERLY_BLEND_MODES as P, tileRect as Q, type RasterRect as R, SHADOW_AMBIENT as S, TILE as T, tilesInRect as U, translateSurface as V, uniformTile as W, writeRegion as X, type Pigment as Y, PIGMENT_BANDS as Z, PIGMENT_LAMBDA_MIN as _, type BlendMode as a, PIGMENT_WAVELENGTHS as a0, type PigmentOptions as a1, type PigmentRgb as a2, createPigment as a3, lerpPigment as a4, lerpPigmentInto as a5, mixPigments as a6, reflectanceToRgb as a7, rgbToReflectance as a8, setPigmentColor as a9, type BlendModeInfo as b, type PixelSurface as c, type Rgb as d, type Rgba as e, SurfaceDraft as f, TILE_SHIFT as g, type Tile as h, type TileKey as i, TiledSurface as j, blendChannel as k, blendImageData as l, blendLum as m, blendPixel as n, blendRgb as o, canvasCompositeOperation as p, collectTiles as q, contentBounds as r, emptySurface as s, fillRect as t, finishTile as u, isBlendMode as v, isPainterlyBlendMode as w, isSeparableBlendMode as x, mixPigment8 as y, mixPigmentRgb as z };
@@ -223,6 +223,11 @@ interface Tile {
223
223
  readonly data: Uint8ClampedArray;
224
224
  /** The packed value of every pixel when the tile is uniform, else `null`. */
225
225
  readonly uniform: number | null;
226
+ /**
227
+ * High bit depth samples (see `./deep`): 16-bit sRGB-encoded or 32-bit linear float, of which
228
+ * `data` is the 8-bit rendering. Missing: the tile is 8-bit.
229
+ */
230
+ readonly deep?: Uint16Array | Float32Array;
226
231
  }
227
232
  /**
228
233
  * An immutable tiled surface. `channels` is 4 (RGBA) for layers and 1 for masks. Missing tiles
@@ -316,4 +321,4 @@ declare function collectTiles(surface: TiledSurface, into: Set<Tile>): void;
316
321
  /** True when two surfaces hold the same pixels (cheap when they share tiles). */
317
322
  declare function surfacesEqual(a: TiledSurface, b: TiledSurface): boolean;
318
323
 
319
- export { solidSurface as $, collectTiles as A, type BlendMode as B, contentBounds as C, createPigment as D, emptySurface as E, fillRect as F, finishTile as G, isSeparableBlendMode as H, lerpPigment as I, lerpPigmentInto as J, mixPigment8 as K, mixPigmentRgb as L, type MaskSurface as M, mixPigments as N, normalizeBlendMode as O, type Pigment as P, packRgba as Q, type RasterRect as R, SHADOW_AMBIENT as S, type TileKey as T, pigment8 as U, readPixel as V, readRegion as W, reflectanceToRgb as X, rgbToReflectance as Y, setLum as Z, setPigmentColor as _, TiledSurface as a, surfaceBytes as a0, surfaceFromPixels as a1, surfacesEqual as a2, tileCoord as a3, tileKey as a4, tileRect as a5, tilesInRect as a6, translateSurface as a7, uniformTile as a8, writeRegion as a9, type PixelSurface as b, type BlendModeInfo as c, BLEND_MODES as d, PAINTERLY_BLEND_MODES as e, type Tile as f, isPainterlyBlendMode as g, PIGMENT_BANDS as h, isBlendMode as i, PIGMENT_LAMBDA_MIN as j, PIGMENT_LAMBDA_STEP as k, PIGMENT_WAVELENGTHS as l, type PigmentOptions as m, type PigmentRgb as n, type Rgb as o, type Rgba as p, SurfaceDraft as q, TILE as r, standardBlendMode as s, TILE_SHIFT as t, blendChannel as u, blendImageData as v, blendLum as w, blendPixel as x, blendRgb as y, canvasCompositeOperation as z };
324
+ export { PIGMENT_LAMBDA_STEP as $, normalizeBlendMode as A, BLEND_MODES as B, packRgba as C, pigment8 as D, readPixel as E, readRegion as F, setLum as G, solidSurface as H, standardBlendMode as I, surfaceBytes as J, surfaceFromPixels as K, surfacesEqual as L, type MaskSurface as M, tileCoord as N, tileKey as O, PAINTERLY_BLEND_MODES as P, tileRect as Q, type RasterRect as R, SHADOW_AMBIENT as S, TILE as T, tilesInRect as U, translateSurface as V, uniformTile as W, writeRegion as X, type Pigment as Y, PIGMENT_BANDS as Z, PIGMENT_LAMBDA_MIN as _, type BlendMode as a, PIGMENT_WAVELENGTHS as a0, type PigmentOptions as a1, type PigmentRgb as a2, createPigment as a3, lerpPigment as a4, lerpPigmentInto as a5, mixPigments as a6, reflectanceToRgb as a7, rgbToReflectance as a8, setPigmentColor as a9, type BlendModeInfo as b, type PixelSurface as c, type Rgb as d, type Rgba as e, SurfaceDraft as f, TILE_SHIFT as g, type Tile as h, type TileKey as i, TiledSurface as j, blendChannel as k, blendImageData as l, blendLum as m, blendPixel as n, blendRgb as o, canvasCompositeOperation as p, collectTiles as q, contentBounds as r, emptySurface as s, fillRect as t, finishTile as u, isBlendMode as v, isPainterlyBlendMode as w, isSeparableBlendMode as x, mixPigment8 as y, mixPigmentRgb as z };
@@ -1,5 +1,5 @@
1
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';
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 VectorInstanceNode, k as VectorFilterType, l as VectorFilterParamsMap, m as VectorFilter, n as VectorGradient, o as Vec2, p as VectorGradientUnits, q as VectorGradientSpread, r as VectorGradientType, s as VectorPaint, t as VectorMatrix, u as VectorGradientStop, v as VectorStrokeAlign, w as VectorSubpath, x as VectorDocument, y as VectorWidthPoint } from './types-yINF17Ta.cjs';
3
3
 
4
4
  /**
5
5
  * Live appearance: path effect stacks and live boolean groups, evaluated on demand while the
@@ -99,7 +99,10 @@ declare function createVectorEffect<K extends VectorEffectType>(type: K, id: str
99
99
  }> | null;
100
100
  /** The node's effects that take part (enabled, of a known type). */
101
101
  declare function activeVectorEffects(node: VectorNode): VectorEffect[];
102
- /** Whether the node itself draws differently from its stored geometry (effects or a live boolean). */
102
+ /**
103
+ * Whether the node itself draws differently from its stored geometry (effects or a live boolean).
104
+ * Text always does: it draws as its glyphs.
105
+ */
103
106
  declare function hasOwnVectorAppearance(node: VectorNode): boolean;
104
107
  /** Whether the node or anything inside it has a live appearance. */
105
108
  declare function hasVectorAppearance(node: VectorNode): boolean;
@@ -126,6 +129,8 @@ interface VectorBooleanOperand {
126
129
  declare function foldVectorBooleanOperands(operands: readonly VectorBooleanOperand[]): BezierPath;
127
130
  /** Applies an effect stack to shapes, top to bottom (disabled effects skipped). */
128
131
  declare function applyVectorEffects(shapes: readonly VectorAppearanceShape[], effects: readonly VectorEffect[] | null | undefined): VectorAppearanceShape[];
132
+ /** What an instance draws as a plain group (cached per instance object; see `vectorInstanceGroup`). */
133
+ declare function vectorInstanceDrawn(node: VectorInstanceNode): VectorGroupNode;
129
134
  /** The shapes of a child in its parent's space (hidden children have none), ordered by its index. */
130
135
  declare function vectorChildAppearanceShapes(child: VectorNode, index: number): VectorAppearanceShape[];
131
136
  /** The paths entering effect `effectId` of the node's stack (those above it applied), in the node's own space. */
@@ -161,7 +166,7 @@ declare function vectorAppearanceNodes(node: VectorNode): VectorPathNode[];
161
166
  * otherwise, like any live group, it becomes a group with that id holding one path per shape
162
167
  * (ids `<id>~fx<n>`). Groups without effects of their own keep their structure. Cached per node.
163
168
  */
164
- declare function expandVectorAppearance(node: VectorNode): VectorNode;
169
+ declare function expandVectorAppearance(node: VectorNode): VectorPathNode | VectorGroupNode;
165
170
  /** Every node of a list expanded (the same array when nothing in it is live). */
166
171
  declare function expandVectorAppearances(nodes: readonly VectorNode[]): VectorNode[];
167
172
  /**
@@ -559,6 +564,13 @@ interface VectorSvgExportOptions {
559
564
  * or clip it (the animation editor's reveals and its Flair export use this).
560
565
  */
561
566
  wrap?: Readonly<Record<string, readonly VectorSvgWrapper[]>>;
567
+ /**
568
+ * How text is written: `text` (default) as SVG `<text>` placed character by character, or
569
+ * `outlines` as its glyph outlines (needs an outline shaper; otherwise text stays text). Text with
570
+ * path effects is always written as outlines when it has them. Either way the text is kept for
571
+ * import.
572
+ */
573
+ text?: 'text' | 'outlines';
562
574
  }
563
575
  /** A group written round a node (see `VectorSvgExportOptions.wrap`). */
564
576
  interface VectorSvgWrapper {
@@ -653,4 +665,4 @@ declare function parseSvgTransform(value: string | undefined): AffineMatrix;
653
665
  /** Parses SVG markup into a vector document. Throws when there is no `<svg>` element. */
654
666
  declare function parseVectorSvg(svg: string, options?: VectorSvgImportOptions): VectorDocument;
655
667
 
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 };
668
+ 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, vectorNodeLocalPaintBounds 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, vectorInstanceDrawn as aX, vectorLiveBooleanSteps as aY, vectorNodeEnvelope as aZ, vectorNodeFilterSvg 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, vectorOperandOperation as b0, vectorPaintToSvg as b1, vectorPathLocalBounds as b2, vectorStrokeSvgParts as b3, widthProfileFromAttribute as b4, widthProfileToAttribute as b5, 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 };
@@ -1,5 +1,5 @@
1
1
  import { B as BezierPath, A as AffineMatrix, S as SvgGradientDef } from './bezier-DYBvLgUH.js';
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-DtL_qLFz.js';
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 VectorInstanceNode, k as VectorFilterType, l as VectorFilterParamsMap, m as VectorFilter, n as VectorGradient, o as Vec2, p as VectorGradientUnits, q as VectorGradientSpread, r as VectorGradientType, s as VectorPaint, t as VectorMatrix, u as VectorGradientStop, v as VectorStrokeAlign, w as VectorSubpath, x as VectorDocument, y as VectorWidthPoint } from './types-1SUQKDAw.js';
3
3
 
4
4
  /**
5
5
  * Live appearance: path effect stacks and live boolean groups, evaluated on demand while the
@@ -99,7 +99,10 @@ declare function createVectorEffect<K extends VectorEffectType>(type: K, id: str
99
99
  }> | null;
100
100
  /** The node's effects that take part (enabled, of a known type). */
101
101
  declare function activeVectorEffects(node: VectorNode): VectorEffect[];
102
- /** Whether the node itself draws differently from its stored geometry (effects or a live boolean). */
102
+ /**
103
+ * Whether the node itself draws differently from its stored geometry (effects or a live boolean).
104
+ * Text always does: it draws as its glyphs.
105
+ */
103
106
  declare function hasOwnVectorAppearance(node: VectorNode): boolean;
104
107
  /** Whether the node or anything inside it has a live appearance. */
105
108
  declare function hasVectorAppearance(node: VectorNode): boolean;
@@ -126,6 +129,8 @@ interface VectorBooleanOperand {
126
129
  declare function foldVectorBooleanOperands(operands: readonly VectorBooleanOperand[]): BezierPath;
127
130
  /** Applies an effect stack to shapes, top to bottom (disabled effects skipped). */
128
131
  declare function applyVectorEffects(shapes: readonly VectorAppearanceShape[], effects: readonly VectorEffect[] | null | undefined): VectorAppearanceShape[];
132
+ /** What an instance draws as a plain group (cached per instance object; see `vectorInstanceGroup`). */
133
+ declare function vectorInstanceDrawn(node: VectorInstanceNode): VectorGroupNode;
129
134
  /** The shapes of a child in its parent's space (hidden children have none), ordered by its index. */
130
135
  declare function vectorChildAppearanceShapes(child: VectorNode, index: number): VectorAppearanceShape[];
131
136
  /** The paths entering effect `effectId` of the node's stack (those above it applied), in the node's own space. */
@@ -161,7 +166,7 @@ declare function vectorAppearanceNodes(node: VectorNode): VectorPathNode[];
161
166
  * otherwise, like any live group, it becomes a group with that id holding one path per shape
162
167
  * (ids `<id>~fx<n>`). Groups without effects of their own keep their structure. Cached per node.
163
168
  */
164
- declare function expandVectorAppearance(node: VectorNode): VectorNode;
169
+ declare function expandVectorAppearance(node: VectorNode): VectorPathNode | VectorGroupNode;
165
170
  /** Every node of a list expanded (the same array when nothing in it is live). */
166
171
  declare function expandVectorAppearances(nodes: readonly VectorNode[]): VectorNode[];
167
172
  /**
@@ -559,6 +564,13 @@ interface VectorSvgExportOptions {
559
564
  * or clip it (the animation editor's reveals and its Flair export use this).
560
565
  */
561
566
  wrap?: Readonly<Record<string, readonly VectorSvgWrapper[]>>;
567
+ /**
568
+ * How text is written: `text` (default) as SVG `<text>` placed character by character, or
569
+ * `outlines` as its glyph outlines (needs an outline shaper; otherwise text stays text). Text with
570
+ * path effects is always written as outlines when it has them. Either way the text is kept for
571
+ * import.
572
+ */
573
+ text?: 'text' | 'outlines';
562
574
  }
563
575
  /** A group written round a node (see `VectorSvgExportOptions.wrap`). */
564
576
  interface VectorSvgWrapper {
@@ -653,4 +665,4 @@ declare function parseSvgTransform(value: string | undefined): AffineMatrix;
653
665
  /** Parses SVG markup into a vector document. Throws when there is no `<svg>` element. */
654
666
  declare function parseVectorSvg(svg: string, options?: VectorSvgImportOptions): VectorDocument;
655
667
 
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 };
668
+ 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, vectorNodeLocalPaintBounds 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, vectorInstanceDrawn as aX, vectorLiveBooleanSteps as aY, vectorNodeEnvelope as aZ, vectorNodeFilterSvg 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, vectorOperandOperation as b0, vectorPaintToSvg as b1, vectorPathLocalBounds as b2, vectorStrokeSvgParts as b3, widthProfileFromAttribute as b4, widthProfileToAttribute as b5, 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 };