@pixerate/editor 0.269.2 → 0.271.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/README.md +5 -2
- package/dist/agent/index.cjs +30 -30
- package/dist/agent/index.js +3 -3
- package/dist/animation-editor/index.cjs +62 -62
- package/dist/animation-editor/index.js +4 -4
- package/dist/canvas/editorDocument.d.cts +3 -1
- package/dist/canvas/editorDocument.d.ts +3 -1
- package/dist/canvas/index.cjs +53 -27
- package/dist/canvas/index.js +34 -8
- package/dist/chart/index.cjs +21 -21
- package/dist/chart/index.js +2 -2
- package/dist/{chunk-GBEF2D4P.js → chunk-23YL2EAB.js} +1 -1
- package/dist/{chunk-QGVTOCNB.js → chunk-6ZSFRRJI.js} +1 -1
- package/dist/{chunk-4YSPQGZW.js → chunk-B5W677L7.js} +1 -1
- package/dist/{chunk-4NMPUJUK.cjs → chunk-DDL3ZBHK.cjs} +86 -86
- package/dist/{chunk-T4JPGBW3.cjs → chunk-DGITFN73.cjs} +8 -8
- package/dist/{chunk-PY4GWSE2.cjs → chunk-EBFPMSJO.cjs} +27 -5
- package/dist/{chunk-NS62CQ2B.js → chunk-GAZPHCTV.js} +23 -2
- package/dist/{chunk-YYBW6DF2.cjs → chunk-GSLOH2IN.cjs} +2 -2
- package/dist/{chunk-56RHCIJV.cjs → chunk-JJ2H25JG.cjs} +237 -170
- package/dist/{chunk-CBVNCWJM.cjs → chunk-LBDC5434.cjs} +2 -2
- package/dist/{chunk-BENSE3VX.cjs → chunk-M2ZVPU7L.cjs} +23 -23
- package/dist/{chunk-MQ6MGIQM.js → chunk-NMZQMPFZ.js} +1 -1
- package/dist/{chunk-AI4F33IV.cjs → chunk-NQUKTRKN.cjs} +45 -45
- package/dist/{chunk-4CPOKP27.js → chunk-QYXUE37Q.js} +1 -1
- package/dist/{chunk-MWUZCEFT.js → chunk-S2XPXA47.js} +1 -1
- package/dist/{chunk-EHLOCVWB.js → chunk-T2URHAJX.js} +27 -5
- package/dist/{chunk-FUDP5QBB.js → chunk-TNHDCP4R.js} +70 -3
- package/dist/{chunk-VBRHE4AM.cjs → chunk-U2ASNGO6.cjs} +35 -35
- package/dist/{chunk-WKPXOGZZ.cjs → chunk-WPLGZBNE.cjs} +23 -2
- package/dist/{chunk-N3UMQVKX.js → chunk-X4FTNFIA.js} +1 -1
- package/dist/{chunk-2OQGPEHH.cjs → chunk-XUDMRMXQ.cjs} +2 -2
- package/dist/{chunk-THBJHPUL.js → chunk-YNFSH72F.js} +1 -1
- package/dist/diagram/index.cjs +2 -2
- package/dist/diagram/index.js +1 -1
- package/dist/effects/index.cjs +8 -5
- package/dist/effects/index.js +6 -3
- package/dist/effects/pool.d.cts +9 -0
- package/dist/effects/pool.d.ts +9 -0
- package/dist/effects/types.d.cts +2 -0
- package/dist/effects/types.d.ts +2 -0
- package/dist/extensions/index.cjs +5 -5
- package/dist/extensions/index.js +4 -4
- package/dist/gradient/index.cjs +2 -2
- package/dist/gradient/index.js +1 -1
- package/dist/history/HistoryManager.d.cts +9 -0
- package/dist/history/HistoryManager.d.ts +9 -0
- package/dist/history/index.cjs +2 -2
- package/dist/history/index.js +1 -1
- package/dist/history/types.d.cts +5 -2
- package/dist/history/types.d.ts +5 -2
- package/dist/image-editor/index.cjs +784 -784
- package/dist/image-editor/index.js +4 -4
- package/dist/index.cjs +10 -10
- package/dist/index.js +4 -4
- package/dist/paint-editor/controller.d.cts +75 -4
- package/dist/paint-editor/controller.d.ts +75 -4
- package/dist/paint-editor/effect-paint.d.cts +33 -8
- package/dist/paint-editor/effect-paint.d.ts +33 -8
- package/dist/paint-editor/effects.d.cts +4 -0
- package/dist/paint-editor/effects.d.ts +4 -0
- package/dist/paint-editor/index.cjs +692 -398
- package/dist/paint-editor/index.js +362 -68
- package/dist/paint-editor/stroke.d.cts +13 -5
- package/dist/paint-editor/stroke.d.ts +13 -5
- package/dist/parameters/index.cjs +2 -2
- package/dist/parameters/index.js +1 -1
- package/dist/vector/index.cjs +998 -998
- package/dist/vector/index.js +4 -4
- package/dist/video-editor/index.cjs +321 -321
- package/dist/video-editor/index.js +4 -4
- package/package.json +1 -1
- package/skills/pixerate-paint-editor/SKILL.md +2 -2
- package/skills/pixerate-paint-editor/references/effect-paint.md +28 -6
|
@@ -2601,13 +2601,76 @@ function vectorExtrudeFaces(path, params) {
|
|
|
2601
2601
|
// src/paint-editor/effect-paint.ts
|
|
2602
2602
|
var EFFECT_STRIP_HEIGHT = 256;
|
|
2603
2603
|
var EFFECT_MAP_REPEATS = ["repeat", "mirror", "clamp"];
|
|
2604
|
+
var MAX_EFFECT_PATH_POINTS = 256;
|
|
2605
|
+
var roundPathCoord = (v2) => Math.round(v2 * 100) / 100;
|
|
2606
|
+
function strokePathPoints(points, maxPoints = MAX_EFFECT_PATH_POINTS) {
|
|
2607
|
+
if (!points.length) return [];
|
|
2608
|
+
const clean2 = [points[0]];
|
|
2609
|
+
for (let i = 1; i < points.length; i++) {
|
|
2610
|
+
const p = points[i];
|
|
2611
|
+
const prev = clean2[clean2.length - 1];
|
|
2612
|
+
if (p.x !== prev.x || p.y !== prev.y) clean2.push(p);
|
|
2613
|
+
}
|
|
2614
|
+
if (clean2.length === 1) {
|
|
2615
|
+
const x = roundPathCoord(clean2[0].x);
|
|
2616
|
+
const y = roundPathCoord(clean2[0].y);
|
|
2617
|
+
return [x, y, x, y];
|
|
2618
|
+
}
|
|
2619
|
+
if (clean2.length <= maxPoints) {
|
|
2620
|
+
const out2 = [];
|
|
2621
|
+
for (const p of clean2) out2.push(roundPathCoord(p.x), roundPathCoord(p.y));
|
|
2622
|
+
return out2;
|
|
2623
|
+
}
|
|
2624
|
+
const lengths = [0];
|
|
2625
|
+
for (let i = 1; i < clean2.length; i++) {
|
|
2626
|
+
lengths.push(lengths[i - 1] + Math.hypot(clean2[i].x - clean2[i - 1].x, clean2[i].y - clean2[i - 1].y));
|
|
2627
|
+
}
|
|
2628
|
+
const total = lengths[lengths.length - 1];
|
|
2629
|
+
if (total <= 0) {
|
|
2630
|
+
const x = roundPathCoord(clean2[0].x);
|
|
2631
|
+
const y = roundPathCoord(clean2[0].y);
|
|
2632
|
+
return [x, y, x, y];
|
|
2633
|
+
}
|
|
2634
|
+
const out = [];
|
|
2635
|
+
let j = 0;
|
|
2636
|
+
for (let k = 0; k < maxPoints; k++) {
|
|
2637
|
+
const at2 = total * k / (maxPoints - 1);
|
|
2638
|
+
while (j < clean2.length - 2 && lengths[j + 1] < at2) j++;
|
|
2639
|
+
const span = lengths[j + 1] - lengths[j] || 1;
|
|
2640
|
+
const f = Math.min(1, Math.max(0, (at2 - lengths[j]) / span));
|
|
2641
|
+
const a = clean2[j];
|
|
2642
|
+
const b = clean2[j + 1];
|
|
2643
|
+
out.push(roundPathCoord(a.x + (b.x - a.x) * f), roundPathCoord(a.y + (b.y - a.y) * f));
|
|
2644
|
+
}
|
|
2645
|
+
return out;
|
|
2646
|
+
}
|
|
2647
|
+
function inferEffectPathControl(values) {
|
|
2648
|
+
if ("path" in values) return "path";
|
|
2649
|
+
for (const [k, v2] of Object.entries(values)) {
|
|
2650
|
+
if (Array.isArray(v2) && v2.length >= 4 && v2.every((n) => typeof n === "number")) return k;
|
|
2651
|
+
}
|
|
2652
|
+
for (const [k, v2] of Object.entries(values)) {
|
|
2653
|
+
if (typeof v2 === "string") return k;
|
|
2654
|
+
}
|
|
2655
|
+
return "path";
|
|
2656
|
+
}
|
|
2657
|
+
function withStrokePath(paint, points, control) {
|
|
2658
|
+
if (_optionalChain([paint, 'access', _55 => _55.map, 'optionalAccess', _56 => _56.by]) !== "path") return paint;
|
|
2659
|
+
const key = _nullishCoalesce(control, () => ( inferEffectPathControl(paint.values)));
|
|
2660
|
+
return {
|
|
2661
|
+
...paint,
|
|
2662
|
+
values: { ...paint.values, [key]: strokePathPoints(points) }
|
|
2663
|
+
};
|
|
2664
|
+
}
|
|
2604
2665
|
function effectPaintSize(p, canvas) {
|
|
2605
|
-
return p.map ? { width: p.map.length, height: EFFECT_STRIP_HEIGHT } : { width: canvas.width, height: canvas.height };
|
|
2666
|
+
return _optionalChain([p, 'access', _57 => _57.map, 'optionalAccess', _58 => _58.by]) === "stroke" ? { width: p.map.length, height: EFFECT_STRIP_HEIGHT } : { width: canvas.width, height: canvas.height };
|
|
2606
2667
|
}
|
|
2607
2668
|
function readEffectStrokeMap(raw) {
|
|
2608
|
-
if (raw === void 0 || raw === null || raw.by === "canvas") return void 0;
|
|
2669
|
+
if (raw === void 0 || raw === null || raw === "canvas" || raw.by === "canvas") return void 0;
|
|
2670
|
+
if (raw === "path") return { by: "path" };
|
|
2609
2671
|
const r = raw;
|
|
2610
|
-
if (r.by
|
|
2672
|
+
if (r.by === "path") return { by: "path" };
|
|
2673
|
+
if (r.by !== "stroke") throw new Error(`map.by ${JSON.stringify(r.by)} is not a mapping; use "canvas" (fixed to the canvas), "stroke" (along each stroke) or "path" (native path control).`);
|
|
2611
2674
|
const length2 = r.length === void 0 ? 300 : Number(r.length);
|
|
2612
2675
|
if (!(Number.isFinite(length2) && length2 >= 16 && length2 <= 4096)) throw new Error(`map.length ${JSON.stringify(r.length)} is out of range; use 16..4096 px of stroke per repeat.`);
|
|
2613
2676
|
const repeat = r.repeat === void 0 ? "repeat" : r.repeat;
|
|
@@ -2749,7 +2812,7 @@ function baseSampler(ref, art) {
|
|
|
2749
2812
|
const k = kind;
|
|
2750
2813
|
return (u, v2, seed) => _chunkRDFHWAHLcjs.stampCoverage.call(void 0, k, u, v2, seed);
|
|
2751
2814
|
}
|
|
2752
|
-
const a = _optionalChain([art, 'optionalCall',
|
|
2815
|
+
const a = _optionalChain([art, 'optionalCall', _59 => _59(ref)]);
|
|
2753
2816
|
if (!a || !(a.width > 0 && a.height > 0)) return null;
|
|
2754
2817
|
const hit = samplers.get(a);
|
|
2755
2818
|
if (hit) return hit;
|
|
@@ -2871,8 +2934,8 @@ function clonePaper(p) {
|
|
|
2871
2934
|
}
|
|
2872
2935
|
function readOffset(raw, d) {
|
|
2873
2936
|
const o = raw && typeof raw === "object" ? raw : null;
|
|
2874
|
-
const x = o && typeof o.x === "number" && Number.isFinite(o.x) ? Math.round(o.x) : _nullishCoalesce(_optionalChain([d, 'optionalAccess',
|
|
2875
|
-
const y = o && typeof o.y === "number" && Number.isFinite(o.y) ? Math.round(o.y) : _nullishCoalesce(_optionalChain([d, 'optionalAccess',
|
|
2937
|
+
const x = o && typeof o.x === "number" && Number.isFinite(o.x) ? Math.round(o.x) : _nullishCoalesce(_optionalChain([d, 'optionalAccess', _60 => _60.x]), () => ( 0));
|
|
2938
|
+
const y = o && typeof o.y === "number" && Number.isFinite(o.y) ? Math.round(o.y) : _nullishCoalesce(_optionalChain([d, 'optionalAccess', _61 => _61.y]), () => ( 0));
|
|
2876
2939
|
return x || y ? { offset: { x, y } } : {};
|
|
2877
2940
|
}
|
|
2878
2941
|
function readTuning(raw, d) {
|
|
@@ -3001,7 +3064,7 @@ var TipGrain = class _TipGrain {
|
|
|
3001
3064
|
const paper = new (0, _chunkNIBFKXMDcjs.PaperGrain)({ pattern: settings.source, seed: 0, scale: settings.scale, tiling: "repeat", dry: tuning2, wet: tuning2 });
|
|
3002
3065
|
return new _TipGrain(paper, settings);
|
|
3003
3066
|
}
|
|
3004
|
-
const a = _optionalChain([art, 'optionalCall',
|
|
3067
|
+
const a = _optionalChain([art, 'optionalCall', _62 => _62(settings.source)]);
|
|
3005
3068
|
if (!a || !(a.width > 0 && a.height > 0)) return null;
|
|
3006
3069
|
return new _TipGrain(new ImageGrain(a.width, a.height, a.data, settings.contrast, settings.invert, settings.scale), settings);
|
|
3007
3070
|
}
|
|
@@ -3262,7 +3325,7 @@ var DryStroke = (_class3 = class {
|
|
|
3262
3325
|
this.stamp = brush.stamp ? stampSampler(brush.stamp, options.stampArt, brush.tip.hardness) : null;
|
|
3263
3326
|
this.tipGrain = TipGrain.create(brush.tipGrain, options.stampArt);
|
|
3264
3327
|
this.smoother = new PenSmoother(brush.tip.smoothing, brush.pressureSmoothing);
|
|
3265
|
-
this.copies = _optionalChain([options, 'access',
|
|
3328
|
+
this.copies = _optionalChain([options, 'access', _63 => _63.copies, 'optionalAccess', _64 => _64.length]) ? options.copies : [IDENTITY_COPY];
|
|
3266
3329
|
this.walkers = this.copies.map((c, i) => new PenDabWalker(brush, (_nullishCoalesce(options.seed, () => ( 0))) + i * 7919 | 0, c.linear));
|
|
3267
3330
|
this.depth = options.grain && !options.grain.flat ? Math.min(1, Math.max(0, options.paperDepth * brush.grain)) : 0;
|
|
3268
3331
|
}
|
|
@@ -3325,7 +3388,7 @@ var DryStroke = (_class3 = class {
|
|
|
3325
3388
|
const vals = this.buf.subarray(0, n);
|
|
3326
3389
|
if (this.stamp) rasterizeStampDab(m, this.stamp, d.index, rect, vals);
|
|
3327
3390
|
else _chunkNIBFKXMDcjs.rasterizeDab.call(void 0, m, hardness, rect, vals);
|
|
3328
|
-
_optionalChain([this, 'access',
|
|
3391
|
+
_optionalChain([this, 'access', _65 => _65.tipGrain, 'optionalAccess', _66 => _66.apply, 'call', _67 => _67(vals, rect, { x: m.x, y: m.y, angle: m.angle, travel: d.travel })]);
|
|
3329
3392
|
if (this.depth > 0 && grain) {
|
|
3330
3393
|
for (let yy = 0, k = 0; yy < rect.height; yy++) {
|
|
3331
3394
|
const y = rect.y + yy + 0.5;
|
|
@@ -3406,7 +3469,7 @@ var PaintDabStroke = (_class4 = class {
|
|
|
3406
3469
|
this.stamp = brush.engine === "dab" && brush.stamp ? stampSampler(brush.stamp, options.stampArt, brush.tip.hardness) : null;
|
|
3407
3470
|
this.tipGrain = TipGrain.create(brush.tipGrain, options.stampArt);
|
|
3408
3471
|
this.smoother = new PenSmoother(brush.tip.smoothing, brush.pressureSmoothing);
|
|
3409
|
-
this.copies = _optionalChain([options, 'access',
|
|
3472
|
+
this.copies = _optionalChain([options, 'access', _68 => _68.copies, 'optionalAccess', _69 => _69.length]) ? options.copies : [IDENTITY_COPY];
|
|
3410
3473
|
const exchanging = brush.engine === "mixer" || brush.engine === "dab";
|
|
3411
3474
|
const rates = brush.engine === "mixer" ? _chunkNIBFKXMDcjs.mixerRates.call(void 0, brush.mixer) : _chunkNIBFKXMDcjs.exchangeRates.call(void 0, brush.behavior.pickup, brush.behavior.mix, 1, brush.behavior.mixing);
|
|
3412
3475
|
this.mixing = brush.engine === "mixer" ? brush.mixer.mixing : brush.behavior.mixing;
|
|
@@ -3419,7 +3482,7 @@ var PaintDabStroke = (_class4 = class {
|
|
|
3419
3482
|
this.depth = options.grain && !options.grain.flat ? Math.min(1, Math.max(0, options.paperDepth * brush.grain)) : 0;
|
|
3420
3483
|
this.coverage = brush.engine === "dab" ? new (0, _chunkNIBFKXMDcjs.CoverageMap)() : null;
|
|
3421
3484
|
this.sampler = exchanging && options.paint ? new (0, _chunkNIBFKXMDcjs.PaintGradientSampler)(options.paint, _nullishCoalesce(options.seed, () => ( 0))) : null;
|
|
3422
|
-
const table = _optionalChain([this, 'access',
|
|
3485
|
+
const table = _optionalChain([this, 'access', _70 => _70.sampler, 'optionalAccess', _71 => _71.acrossTip]) ? this.sampler.tipTable(GRADIENT_STEPS) : null;
|
|
3423
3486
|
this.gradient = table ? table.map((e) => e.rgb) : null;
|
|
3424
3487
|
this.gradientAlpha = table && table.some((e) => e.alpha < 1) ? table.map((e) => e.alpha) : null;
|
|
3425
3488
|
this.scratch = brush.engine === "blender" ? _chunkNIBFKXMDcjs.createBlenderScratch.call(void 0, ) : null;
|
|
@@ -3454,7 +3517,7 @@ var PaintDabStroke = (_class4 = class {
|
|
|
3454
3517
|
|
|
3455
3518
|
/** What copy 0's brush carries after the dabs so far (mixer and wet-capable dab brushes). */
|
|
3456
3519
|
get load() {
|
|
3457
|
-
return _nullishCoalesce(_optionalChain([this, 'access',
|
|
3520
|
+
return _nullishCoalesce(_optionalChain([this, 'access', _72 => _72.states, 'access', _73 => _73[0], 'access', _74 => _74.exchange, 'optionalAccess', _75 => _75.load]), () => ( null));
|
|
3458
3521
|
}
|
|
3459
3522
|
push(points) {
|
|
3460
3523
|
const rects = [];
|
|
@@ -3504,7 +3567,7 @@ var PaintDabStroke = (_class4 = class {
|
|
|
3504
3567
|
tip.fill(0);
|
|
3505
3568
|
if (this.stamp) rasterizeStampDab({ ...d, alpha: 1 }, this.stamp, d.index, rect, tip);
|
|
3506
3569
|
else _chunkNIBFKXMDcjs.rasterizeDab.call(void 0, { ...d, alpha: 1 }, this.brush.tip.hardness, rect, tip);
|
|
3507
|
-
_optionalChain([this, 'access',
|
|
3570
|
+
_optionalChain([this, 'access', _76 => _76.tipGrain, 'optionalAccess', _77 => _77.apply, 'call', _78 => _78(tip, rect, d)]);
|
|
3508
3571
|
if (!(this.depth > 0 && this.options.grain)) return { tip, cov: tip };
|
|
3509
3572
|
const cov = this.cov.subarray(0, n);
|
|
3510
3573
|
const grain = this.options.grain;
|
|
@@ -3708,7 +3771,7 @@ var WetStrokeDriver = (_class5 = class {
|
|
|
3708
3771
|
|
|
3709
3772
|
/** What copy 0's brush carries after the dabs so far. */
|
|
3710
3773
|
get load() {
|
|
3711
|
-
return _nullishCoalesce(_optionalChain([this, 'access',
|
|
3774
|
+
return _nullishCoalesce(_optionalChain([this, 'access', _79 => _79.states, 'access', _80 => _80[0], 'access', _81 => _81.exchange, 'optionalAccess', _82 => _82.load]), () => ( null));
|
|
3712
3775
|
}
|
|
3713
3776
|
/** Whether every point (and the end) has been applied. */
|
|
3714
3777
|
get done() {
|
|
@@ -3927,8 +3990,8 @@ var PaintWetLayers = (_class6 = class {
|
|
|
3927
3990
|
if (mode === this.gpuMode) return this.engineInfo();
|
|
3928
3991
|
this.gpuMode = mode;
|
|
3929
3992
|
if (mode === "off") {
|
|
3930
|
-
_optionalChain([this, 'access',
|
|
3931
|
-
_optionalChain([this, 'access',
|
|
3993
|
+
_optionalChain([this, 'access', _83 => _83.world, 'optionalAccess', _84 => _84.attachGpu, 'call', _85 => _85(null)]);
|
|
3994
|
+
_optionalChain([this, 'access', _86 => _86.gpu, 'optionalAccess', _87 => _87.destroy, 'call', _88 => _88()]);
|
|
3932
3995
|
this.gpu = null;
|
|
3933
3996
|
this.gpuSupport = null;
|
|
3934
3997
|
} else if (this.world) this.startGpu();
|
|
@@ -3936,13 +3999,13 @@ var PaintWetLayers = (_class6 = class {
|
|
|
3936
3999
|
}
|
|
3937
4000
|
engineInfo() {
|
|
3938
4001
|
const w = this.world;
|
|
3939
|
-
const base = { mode: this.gpuMode, adapter: _nullishCoalesce(_optionalChain([this, 'access',
|
|
4002
|
+
const base = { mode: this.gpuMode, adapter: _nullishCoalesce(_optionalChain([this, 'access', _89 => _89.gpuSupport, 'optionalAccess', _90 => _90.adapter]), () => ( null)), maxTiles: _nullishCoalesce(_optionalChain([this, 'access', _91 => _91.gpuSupport, 'optionalAccess', _92 => _92.maxSlots]), () => ( 0)), minTiles: this.gpuMinTiles, activeTiles: _nullishCoalesce(_optionalChain([w, 'optionalAccess', _93 => _93.activeTiles, 'call', _94 => _94()]), () => ( 0)), cpu: this.backend() };
|
|
3940
4003
|
if (this.gpuMode === "off") return { ...base, state: "off", reason: "Forced to the CPU." };
|
|
3941
4004
|
if (this.gpuStarting) return { ...base, state: "starting", reason: null };
|
|
3942
|
-
if (_optionalChain([w, 'optionalAccess',
|
|
4005
|
+
if (_optionalChain([w, 'optionalAccess', _95 => _95.gpuError])) return { ...base, state: "failed", reason: w.gpuError };
|
|
3943
4006
|
if (this.gpuSupport && !this.gpuSupport.supported) return { ...base, state: "unavailable", reason: this.gpuSupport.reason };
|
|
3944
4007
|
if (!this.gpu) return { ...base, state: "not-started", reason: "Starts with the first wet stroke." };
|
|
3945
|
-
if (_optionalChain([w, 'optionalAccess',
|
|
4008
|
+
if (_optionalChain([w, 'optionalAccess', _96 => _96.gpuActive])) return { ...base, state: "active", reason: null };
|
|
3946
4009
|
return { ...base, state: "standby", reason: `The GPU takes over at ${this.gpuMinTiles} wet tiles (256 px).` };
|
|
3947
4010
|
}
|
|
3948
4011
|
/** The world (made on first use, at the canvas size). */
|
|
@@ -3981,13 +4044,13 @@ var PaintWetLayers = (_class6 = class {
|
|
|
3981
4044
|
if (!this.canExtend(left2, top)) throw new Error("Wet paint only moves by whole 256 px tiles, between strokes.");
|
|
3982
4045
|
for (const [id, s] of this.settings) if (s.flow.center) this.settings.set(id, { ...s, flow: { ...s.flow, center: { x: s.flow.center.x + left2, y: s.flow.center.y + top } } });
|
|
3983
4046
|
const old = this.world;
|
|
3984
|
-
const snap = _optionalChain([old, 'optionalAccess',
|
|
4047
|
+
const snap = _optionalChain([old, 'optionalAccess', _97 => _97.laneIds, 'call', _98 => _98(), 'access', _99 => _99.length]) ? old.snapshot() : null;
|
|
3985
4048
|
this.dropWorld();
|
|
3986
4049
|
this.lastTick = null;
|
|
3987
4050
|
this.stepsOwed = 0;
|
|
3988
4051
|
if (!old || !snap) return;
|
|
3989
4052
|
const moved = _chunkJ5VQYK7Tcjs.moveWetSnapshot.call(void 0, snap, old, { width, height }, left2, top, (l) => {
|
|
3990
|
-
const flow = _optionalChain([this, 'access',
|
|
4053
|
+
const flow = _optionalChain([this, 'access', _100 => _100.settings, 'access', _101 => _101.get, 'call', _102 => _102(l.id), 'optionalAccess', _103 => _103.flow]);
|
|
3991
4054
|
return {
|
|
3992
4055
|
base: _chunk474IQG74cjs.translateSurface.call(void 0, l.base, left2, top),
|
|
3993
4056
|
...l.light ? { light: _chunk474IQG74cjs.translateSurface.call(void 0, l.light, left2, top) } : {},
|
|
@@ -4006,11 +4069,11 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4006
4069
|
}
|
|
4007
4070
|
/** Layers holding a wet layer (wet or drying). */
|
|
4008
4071
|
wetLayerIds() {
|
|
4009
|
-
return _nullishCoalesce(_optionalChain([this, 'access',
|
|
4072
|
+
return _nullishCoalesce(_optionalChain([this, 'access', _104 => _104.world, 'optionalAccess', _105 => _105.laneIds, 'call', _106 => _106()]), () => ( []));
|
|
4010
4073
|
}
|
|
4011
4074
|
/** Whether a batch is running (edits wait). */
|
|
4012
4075
|
get busy() {
|
|
4013
|
-
return Boolean(_optionalChain([this, 'access',
|
|
4076
|
+
return Boolean(_optionalChain([this, 'access', _107 => _107.world, 'optionalAccess', _108 => _108.busy]));
|
|
4014
4077
|
}
|
|
4015
4078
|
/** Resolves when no batch is running. */
|
|
4016
4079
|
async idle() {
|
|
@@ -4039,13 +4102,13 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4039
4102
|
setParams(layerId, update) {
|
|
4040
4103
|
const s = this.settingsOf(layerId);
|
|
4041
4104
|
s.params = _chunkJ5VQYK7Tcjs.normalizeWetParams.call(void 0, update, s.params);
|
|
4042
|
-
if (_optionalChain([this, 'access',
|
|
4105
|
+
if (_optionalChain([this, 'access', _109 => _109.world, 'optionalAccess', _110 => _110.hasLane, 'call', _111 => _111(layerId)])) this.world.setParams(layerId, s.params);
|
|
4043
4106
|
return { ...s.params };
|
|
4044
4107
|
}
|
|
4045
4108
|
setFlow(layerId, update) {
|
|
4046
4109
|
const s = this.settingsOf(layerId);
|
|
4047
4110
|
s.flow = _chunkJ5VQYK7Tcjs.normalizeFlow.call(void 0, update, s.flow);
|
|
4048
|
-
if (_optionalChain([this, 'access',
|
|
4111
|
+
if (_optionalChain([this, 'access', _112 => _112.world, 'optionalAccess', _113 => _113.hasLane, 'call', _114 => _114(layerId)])) {
|
|
4049
4112
|
const { width, height } = this.host.canvas();
|
|
4050
4113
|
this.world.setFlow(layerId, _chunkJ5VQYK7Tcjs.flowField.call(void 0, s.flow, width, height), s.flow.strength);
|
|
4051
4114
|
}
|
|
@@ -4053,29 +4116,29 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4053
4116
|
}
|
|
4054
4117
|
setTilt(update) {
|
|
4055
4118
|
this.tilt = _chunkJ5VQYK7Tcjs.normalizeTilt.call(void 0, update, this.tilt);
|
|
4056
|
-
_optionalChain([this, 'access',
|
|
4119
|
+
_optionalChain([this, 'access', _115 => _115.world, 'optionalAccess', _116 => _116.setTilt, 'call', _117 => _117(this.tilt)]);
|
|
4057
4120
|
return { ...this.tilt };
|
|
4058
4121
|
}
|
|
4059
4122
|
/** The paper changed. */
|
|
4060
4123
|
paperChanged() {
|
|
4061
|
-
_optionalChain([this, 'access',
|
|
4124
|
+
_optionalChain([this, 'access', _118 => _118.world, 'optionalAccess', _119 => _119.setPaper, 'call', _120 => _120(wetPaperInput(this.host.paper()))]);
|
|
4062
4125
|
}
|
|
4063
4126
|
/** A layer as tools describe it. */
|
|
4064
4127
|
info(layerId) {
|
|
4065
4128
|
const s = this.settingsOf(layerId);
|
|
4066
|
-
const st = _optionalChain([this, 'access',
|
|
4129
|
+
const st = _optionalChain([this, 'access', _121 => _121.world, 'optionalAccess', _122 => _122.hasLane, 'call', _123 => _123(layerId)]) ? this.world.stats(layerId) : null;
|
|
4067
4130
|
return {
|
|
4068
4131
|
layerId,
|
|
4069
4132
|
wet: Boolean(st && st.wetCells > 0),
|
|
4070
|
-
wetCells: _nullishCoalesce(_optionalChain([st, 'optionalAccess',
|
|
4071
|
-
wetBounds: _nullishCoalesce(_optionalChain([st, 'optionalAccess',
|
|
4072
|
-
activeTiles: _nullishCoalesce(_optionalChain([st, 'optionalAccess',
|
|
4133
|
+
wetCells: _nullishCoalesce(_optionalChain([st, 'optionalAccess', _124 => _124.wetCells]), () => ( 0)),
|
|
4134
|
+
wetBounds: _nullishCoalesce(_optionalChain([st, 'optionalAccess', _125 => _125.wetBounds]), () => ( null)),
|
|
4135
|
+
activeTiles: _nullishCoalesce(_optionalChain([st, 'optionalAccess', _126 => _126.activeTiles]), () => ( 0)),
|
|
4073
4136
|
params: { ...s.params },
|
|
4074
4137
|
flow: { ...s.flow }
|
|
4075
4138
|
};
|
|
4076
4139
|
}
|
|
4077
4140
|
backend() {
|
|
4078
|
-
return _nullishCoalesce(_optionalChain([this, 'access',
|
|
4141
|
+
return _nullishCoalesce(_optionalChain([this, 'access', _127 => _127.world, 'optionalAccess', _128 => _128.backend, 'call', _129 => _129()]), () => ( null));
|
|
4079
4142
|
}
|
|
4080
4143
|
/** Shows the current wet pixels (at most `maxTiles` reshaded per layer). */
|
|
4081
4144
|
syncDisplays(maxTiles = Infinity) {
|
|
@@ -4124,7 +4187,7 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4124
4187
|
const w = this.world;
|
|
4125
4188
|
if (!w) return;
|
|
4126
4189
|
for (const id of w.laneIds()) {
|
|
4127
|
-
if (w.isActive(id) || _optionalChain([this, 'access',
|
|
4190
|
+
if (w.isActive(id) || _optionalChain([this, 'access', _130 => _130.driver, 'optionalAccess', _131 => _131.init, 'access', _132 => _132.laneId]) === id) continue;
|
|
4128
4191
|
const base = w.getBase(id);
|
|
4129
4192
|
const light = w.isLit(id) ? w.getLight(id) : null;
|
|
4130
4193
|
w.removeLane(id);
|
|
@@ -4206,7 +4269,7 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4206
4269
|
if (!d || !this.world) return;
|
|
4207
4270
|
const rects = d.flush();
|
|
4208
4271
|
if (rects.length) this.syncDisplays(DISPLAY_TILES_PER_TICK);
|
|
4209
|
-
if (d.done) _optionalChain([this, 'access',
|
|
4272
|
+
if (d.done) _optionalChain([this, 'access', _133 => _133.onDriverDone, 'optionalCall', _134 => _134(d)]);
|
|
4210
4273
|
}
|
|
4211
4274
|
/** Called when a live stroke that ended mid-batch has finished applying. */
|
|
4212
4275
|
__init56() {this.onDriverDone = null}
|
|
@@ -4250,13 +4313,13 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4250
4313
|
/** The layer's light paint with all its wet paint dried (`null` without a wet layer or light), without changing anything. */
|
|
4251
4314
|
bakedLight(layerId) {
|
|
4252
4315
|
const w = this.world;
|
|
4253
|
-
if (!_optionalChain([w, 'optionalAccess',
|
|
4316
|
+
if (!_optionalChain([w, 'optionalAccess', _135 => _135.hasLane, 'call', _136 => _136(layerId)]) || !w.isLit(layerId)) return null;
|
|
4254
4317
|
return w.bakedLight(layerId);
|
|
4255
4318
|
}
|
|
4256
4319
|
/** The layer's pixels with all its wet paint dried (deterministic), without changing anything. */
|
|
4257
4320
|
bakedSurface(layerId) {
|
|
4258
4321
|
const w = this.world;
|
|
4259
|
-
if (!_optionalChain([w, 'optionalAccess',
|
|
4322
|
+
if (!_optionalChain([w, 'optionalAccess', _137 => _137.hasLane, 'call', _138 => _138(layerId)])) return null;
|
|
4260
4323
|
return w.bakedSurface(layerId);
|
|
4261
4324
|
}
|
|
4262
4325
|
/** A snapshot of the world for undo (`null` when there is none). */
|
|
@@ -4277,13 +4340,13 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4277
4340
|
this.syncDisplays();
|
|
4278
4341
|
}
|
|
4279
4342
|
dropWorld() {
|
|
4280
|
-
_optionalChain([this, 'access',
|
|
4343
|
+
_optionalChain([this, 'access', _139 => _139.world, 'optionalAccess', _140 => _140.destroy, 'call', _141 => _141()]);
|
|
4281
4344
|
this.world = null;
|
|
4282
4345
|
this.driver = null;
|
|
4283
4346
|
}
|
|
4284
4347
|
/** Forgets everything wet (a new canvas, a resize, opening a document). */
|
|
4285
4348
|
reset() {
|
|
4286
|
-
_optionalChain([this, 'access',
|
|
4349
|
+
_optionalChain([this, 'access', _142 => _142.world, 'optionalAccess', _143 => _143.destroy, 'call', _144 => _144()]);
|
|
4287
4350
|
this.world = null;
|
|
4288
4351
|
this.driver = null;
|
|
4289
4352
|
this.settings.clear();
|
|
@@ -4313,9 +4376,9 @@ var PaintWetLayers = (_class6 = class {
|
|
|
4313
4376
|
return out;
|
|
4314
4377
|
}
|
|
4315
4378
|
destroy() {
|
|
4316
|
-
_optionalChain([this, 'access',
|
|
4379
|
+
_optionalChain([this, 'access', _145 => _145.world, 'optionalAccess', _146 => _146.destroy, 'call', _147 => _147()]);
|
|
4317
4380
|
this.world = null;
|
|
4318
|
-
_optionalChain([this, 'access',
|
|
4381
|
+
_optionalChain([this, 'access', _148 => _148.gpu, 'optionalAccess', _149 => _149.destroy, 'call', _150 => _150()]);
|
|
4319
4382
|
this.gpu = null;
|
|
4320
4383
|
}
|
|
4321
4384
|
}, _class6);
|
|
@@ -4357,8 +4420,8 @@ function place(input, brush, options, pad = 0) {
|
|
|
4357
4420
|
const [r, g, b, a] = options.color;
|
|
4358
4421
|
const hex = "#" + [r, g, b].map((v2) => Math.round(Math.min(255, Math.max(0, v2))).toString(16).padStart(2, "0")).join("");
|
|
4359
4422
|
const source = _nullishCoalesce(options.paint, () => ( null));
|
|
4360
|
-
const paint = _optionalChain([source, 'optionalAccess',
|
|
4361
|
-
const color2 = _optionalChain([source, 'optionalAccess',
|
|
4423
|
+
const paint = _optionalChain([source, 'optionalAccess', _151 => _151.type]) === "gradient" ? _chunkNIBFKXMDcjs.resolvePaintGradient.call(void 0, _chunkNIBFKXMDcjs.scalePaintGradient.call(void 0, source, scale3), { paint: hex, secondary: "#ffffff" }) : null;
|
|
4424
|
+
const color2 = _optionalChain([source, 'optionalAccess', _152 => _152.type]) === "color" ? hexRgb(source.color) : [r / 255, g / 255, b / 255];
|
|
4362
4425
|
return { points, brush: sized, rect, scale: scale3, color: color2, alpha: Math.min(1, Math.max(0, a / 255)), paint };
|
|
4363
4426
|
}
|
|
4364
4427
|
function hexRgb(hex) {
|
|
@@ -4468,7 +4531,7 @@ var WetBrushstrokeJob = (_class7 = class {
|
|
|
4468
4531
|
return this.final;
|
|
4469
4532
|
}
|
|
4470
4533
|
destroy() {
|
|
4471
|
-
_optionalChain([this, 'access',
|
|
4534
|
+
_optionalChain([this, 'access', _153 => _153.world, 'optionalAccess', _154 => _154.destroy, 'call', _155 => _155()]);
|
|
4472
4535
|
}
|
|
4473
4536
|
bake() {
|
|
4474
4537
|
if (!this.world || !this.placed) return EMPTY;
|
|
@@ -4493,8 +4556,8 @@ function renderBackdropBrushstroke(input, brush, options) {
|
|
|
4493
4556
|
const area = { x: 0, y: 0, width: rect.width, height: rect.height };
|
|
4494
4557
|
const before = options.backdrop ? options.backdrop(rect, placed.scale) : new Uint8ClampedArray(rect.width * rect.height * 4);
|
|
4495
4558
|
if (before.length !== rect.width * rect.height * 4) throw new Error(`The backdrop must be ${rect.width}\xD7${rect.height} RGBA pixels.`);
|
|
4496
|
-
const cached = _optionalChain([options, 'access',
|
|
4497
|
-
const hit = _optionalChain([cached, 'optionalAccess',
|
|
4559
|
+
const cached = _optionalChain([options, 'access', _156 => _156.cache, 'optionalCall', _157 => _157(before)]);
|
|
4560
|
+
const hit = _optionalChain([cached, 'optionalAccess', _158 => _158.get, 'call', _159 => _159()]);
|
|
4498
4561
|
if (hit) return hit;
|
|
4499
4562
|
const base = _chunk474IQG74cjs.writeRegion.call(void 0, _chunk474IQG74cjs.emptySurface.call(void 0, 4), area, before);
|
|
4500
4563
|
const live = /* @__PURE__ */ new Map();
|
|
@@ -4502,7 +4565,7 @@ function renderBackdropBrushstroke(input, brush, options) {
|
|
|
4502
4565
|
offset: { x: 0, y: 0 },
|
|
4503
4566
|
lockTransparency: false,
|
|
4504
4567
|
selection: null,
|
|
4505
|
-
readTile: (tx, ty) => _nullishCoalesce(_nullishCoalesce(live.get(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty)), () => ( _optionalChain([base, 'access',
|
|
4568
|
+
readTile: (tx, ty) => _nullishCoalesce(_nullishCoalesce(live.get(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty)), () => ( _optionalChain([base, 'access', _160 => _160.tiles, 'access', _161 => _161.get, 'call', _162 => _162(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty)), 'optionalAccess', _163 => _163.data]))), () => ( null)),
|
|
4506
4569
|
writeTile: (tx, ty) => {
|
|
4507
4570
|
const key = _chunk474IQG74cjs.tileKey.call(void 0, tx, ty);
|
|
4508
4571
|
let t = live.get(key);
|
|
@@ -4520,7 +4583,7 @@ function renderBackdropBrushstroke(input, brush, options) {
|
|
|
4520
4583
|
for (const [key, data] of live) tiles.set(key, { data, uniform: null });
|
|
4521
4584
|
_chunk474IQG74cjs.readRegion.call(void 0, new (0, _chunk474IQG74cjs.TiledSurface)(4, tiles), area, after);
|
|
4522
4585
|
const result = cropped(after, placed, stroke.dabCount, (i) => after[i] !== before[i] || after[i + 1] !== before[i + 1] || after[i + 2] !== before[i + 2] || after[i + 3] !== before[i + 3]);
|
|
4523
|
-
_optionalChain([cached, 'optionalAccess',
|
|
4586
|
+
_optionalChain([cached, 'optionalAccess', _164 => _164.set, 'call', _165 => _165(result)]);
|
|
4524
4587
|
return result;
|
|
4525
4588
|
}
|
|
4526
4589
|
|
|
@@ -4568,7 +4631,7 @@ function vectorBrushstrokeBrushError(id, user = []) {
|
|
|
4568
4631
|
}
|
|
4569
4632
|
function vectorBrushstrokeDefaultColour(id, user = [], scheme = "light") {
|
|
4570
4633
|
const brush = _nullishCoalesce(_chunkEU2ZZA6Lcjs.BRUSH_PRESETS.find((b) => b.id === id), () => ( user.find((b) => b.id === id)));
|
|
4571
|
-
return brush ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, _optionalChain([brush, 'access',
|
|
4634
|
+
return brush ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, _optionalChain([brush, 'access', _166 => _166.colour, 'optionalAccess', _167 => _167.default]), scheme) : null;
|
|
4572
4635
|
}
|
|
4573
4636
|
function sanitizeVectorBrushstroke(value, user = []) {
|
|
4574
4637
|
if (!value || typeof value !== "object") return null;
|
|
@@ -4692,7 +4755,7 @@ function strokePaintOf(node, layer, brush, length2) {
|
|
|
4692
4755
|
const color2 = [c[0] * 255, c[1] * 255, c[2] * 255, c[3] * 255].map(Math.round);
|
|
4693
4756
|
if (layer.brush.paint) return { color: color2, paint: layer.brush.paint, within: null };
|
|
4694
4757
|
const g = layer.paint;
|
|
4695
|
-
if (isVectorGradient(g) && _optionalChain([g, 'access',
|
|
4758
|
+
if (isVectorGradient(g) && _optionalChain([g, 'access', _168 => _168.stops, 'optionalAccess', _169 => _169.length])) {
|
|
4696
4759
|
const mode = _nullishCoalesce(g.strokeMode, () => ( "within"));
|
|
4697
4760
|
if (mode === "along") return { color: [color2[0], color2[1], color2[2], 255], paint: gradientPaint(g, { by: "distance", length: Math.max(1, length2), repeat: REPEAT[_nullishCoalesce(g.spread, () => ( "pad"))], unit: "px" }), within: null };
|
|
4698
4761
|
if (mode === "across") return { color: [color2[0], color2[1], color2[2], 255], paint: gradientPaint(g, { by: "across-tip" }), within: null };
|
|
@@ -4847,7 +4910,7 @@ function vectorBrushstrokeImages(node, layer, context = {}) {
|
|
|
4847
4910
|
const source = usesVectorBackdrop(engine) && backdropSource ? backdropSource(document2, node, Math.max(0, index), settle) : null;
|
|
4848
4911
|
const deps = source ? [...source.deps, wetGeneration] : null;
|
|
4849
4912
|
let byLayer = layerCache.get(node);
|
|
4850
|
-
const hit = _optionalChain([byLayer, 'optionalAccess',
|
|
4913
|
+
const hit = _optionalChain([byLayer, 'optionalAccess', _170 => _170.get, 'call', _171 => _171(layer)]);
|
|
4851
4914
|
const stale = hit && (hit.pending.length && hit.pending.some((k) => wetSettled.has(k)) || settle === "now" && !hit.settled);
|
|
4852
4915
|
if (hit && sameDeps(hit.deps, deps) && !stale) return hit.images;
|
|
4853
4916
|
const brush = layer.brush.size ? { ...preset2, tip: { ...preset2.tip, size: layer.brush.size } } : preset2;
|
|
@@ -4872,7 +4935,7 @@ function vectorBrushstrokeImages(node, layer, context = {}) {
|
|
|
4872
4935
|
const key = mediaKey(input, brush, options);
|
|
4873
4936
|
stroke = renderBackdropBrushstroke(input, brush, {
|
|
4874
4937
|
...options,
|
|
4875
|
-
backdrop: _nullishCoalesce(_optionalChain([source, 'optionalAccess',
|
|
4938
|
+
backdrop: _nullishCoalesce(_optionalChain([source, 'optionalAccess', _172 => _172.backdrop]), () => ( null)),
|
|
4876
4939
|
cache: (bytes) => {
|
|
4877
4940
|
const k = `${key}:${hashBytes(bytes).toString(16)}`;
|
|
4878
4941
|
return { get: () => backdropResults.get(k), set: (img) => backdropResults.set(k, img) };
|
|
@@ -4976,7 +5039,7 @@ function withVectorFills(node, fills) {
|
|
|
4976
5039
|
const next = { ...node };
|
|
4977
5040
|
if (fills.length === 0 || fills.length === 1 && isPlainVectorPaintLayer(fills[0])) {
|
|
4978
5041
|
delete next.fills;
|
|
4979
|
-
next.fill = _nullishCoalesce(_optionalChain([fills, 'access',
|
|
5042
|
+
next.fill = _nullishCoalesce(_optionalChain([fills, 'access', _173 => _173[0], 'optionalAccess', _174 => _174.paint]), () => ( null));
|
|
4980
5043
|
return next;
|
|
4981
5044
|
}
|
|
4982
5045
|
next.fills = fills.map((l) => ({ ...l }));
|
|
@@ -5001,8 +5064,8 @@ function withVectorStrokes(node, strokes) {
|
|
|
5001
5064
|
var json = (v2) => JSON.stringify(_nullishCoalesce(v2, () => ( null)));
|
|
5002
5065
|
function strokeShorthandDiff(node, top) {
|
|
5003
5066
|
const out = [];
|
|
5004
|
-
if (json(node.stroke) !== json(_optionalChain([top, 'optionalAccess',
|
|
5005
|
-
for (const key of VECTOR_STROKE_SETTING_KEYS) if (json(node[key]) !== json(_optionalChain([top, 'optionalAccess',
|
|
5067
|
+
if (json(node.stroke) !== json(_optionalChain([top, 'optionalAccess', _175 => _175.paint]))) out.push("stroke");
|
|
5068
|
+
for (const key of VECTOR_STROKE_SETTING_KEYS) if (json(node[key]) !== json(_optionalChain([top, 'optionalAccess', _176 => _176[key]]))) out.push(key);
|
|
5006
5069
|
return out;
|
|
5007
5070
|
}
|
|
5008
5071
|
var checked = /* @__PURE__ */ new WeakSet();
|
|
@@ -5019,7 +5082,7 @@ function normalizeVectorPaintStacks(node, prefer = "shorthand") {
|
|
|
5019
5082
|
if (Array.isArray(node.fills)) {
|
|
5020
5083
|
let fills = node.fills;
|
|
5021
5084
|
const top = fills[fills.length - 1];
|
|
5022
|
-
if (prefer === "shorthand" && json(node.fill) !== json(_optionalChain([top, 'optionalAccess',
|
|
5085
|
+
if (prefer === "shorthand" && json(node.fill) !== json(_optionalChain([top, 'optionalAccess', _177 => _177.paint]))) {
|
|
5023
5086
|
if (!draws(node.fill)) fills = [];
|
|
5024
5087
|
else fills = top ? [...fills.slice(0, -1), { ...top, paint: node.fill }] : [{ paint: node.fill }];
|
|
5025
5088
|
}
|
|
@@ -5235,8 +5298,8 @@ var Measured = class {
|
|
|
5235
5298
|
append(sa, sb, out) {
|
|
5236
5299
|
for (const piece of _chunkGF2RBSDMcjs.trimSegments.call(void 0, this.segs, sa, sb, this.lens)) {
|
|
5237
5300
|
if (degenerate(piece)) continue;
|
|
5238
|
-
const last = _optionalChain([out, 'access',
|
|
5239
|
-
const end = _optionalChain([last, 'optionalAccess',
|
|
5301
|
+
const last = _optionalChain([out, 'access', _178 => _178[out.length - 1], 'optionalAccess', _179 => _179.segs]);
|
|
5302
|
+
const end = _optionalChain([last, 'optionalAccess', _180 => _180[last.length - 1], 'optionalAccess', _181 => _181.at, 'call', _182 => _182(-1)]);
|
|
5240
5303
|
if (!end || Math.hypot(end[0] - piece[0][0], end[1] - piece[0][1]) > 1e-6) out.push({ segs: [piece], closed: false });
|
|
5241
5304
|
else last.push(piece);
|
|
5242
5305
|
}
|
|
@@ -5548,9 +5611,9 @@ function vectorRepeaterCopies(r, pivot) {
|
|
|
5548
5611
|
for (let i = 0; i < n; i++) {
|
|
5549
5612
|
const k = i + offset;
|
|
5550
5613
|
let m = translateMatrix(-pivot.x, -pivot.y);
|
|
5551
|
-
m = multiplyMatrices(m, scaleMatrix(Math.pow((_nullishCoalesce(_optionalChain([r, 'access',
|
|
5614
|
+
m = multiplyMatrices(m, scaleMatrix(Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _183 => _183.scale, 'optionalAccess', _184 => _184.x]), () => ( 100))) / 100, k), Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _185 => _185.scale, 'optionalAccess', _186 => _186.y]), () => ( 100))) / 100, k)));
|
|
5552
5615
|
m = multiplyMatrices(m, rotateMatrix((_nullishCoalesce(r.rotation, () => ( 0))) * k));
|
|
5553
|
-
m = multiplyMatrices(m, translateMatrix(pivot.x + (_nullishCoalesce(_optionalChain([r, 'access',
|
|
5616
|
+
m = multiplyMatrices(m, translateMatrix(pivot.x + (_nullishCoalesce(_optionalChain([r, 'access', _187 => _187.position, 'optionalAccess', _188 => _188.x]), () => ( 0))) * k, pivot.y + (_nullishCoalesce(_optionalChain([r, 'access', _189 => _189.position, 'optionalAccess', _190 => _190.y]), () => ( 0))) * k));
|
|
5554
5617
|
const t = n > 1 ? i / (n - 1) : 0;
|
|
5555
5618
|
const partial = i + 1 === n && fract > 0 ? fract : 1;
|
|
5556
5619
|
out.push({ index: i, matrix: m, opacity: Math.min(1, Math.max(0, (so + (eo - so) * t) * partial)) });
|
|
@@ -5714,7 +5777,7 @@ function mapBezierPath(path, f, tolerance = 0.1, options = {}) {
|
|
|
5714
5777
|
|
|
5715
5778
|
// src/vector/frames.ts
|
|
5716
5779
|
function isVectorFrame(node) {
|
|
5717
|
-
return _optionalChain([node, 'optionalAccess',
|
|
5780
|
+
return _optionalChain([node, 'optionalAccess', _191 => _191.type]) === "group" && !!node.frame && !node.blend && !node.liveBoolean && !node.mask;
|
|
5718
5781
|
}
|
|
5719
5782
|
function vectorFrameRectPath(frame) {
|
|
5720
5783
|
const { x, y, width: w, height: h } = frame;
|
|
@@ -5759,8 +5822,8 @@ function placeSpan(rule, a0, a1, f0, f1, g0, g1) {
|
|
|
5759
5822
|
}
|
|
5760
5823
|
}
|
|
5761
5824
|
function vectorFrameChildMatrix(resizing, box, from, to) {
|
|
5762
|
-
const [x0, x1] = placeSpan(_nullishCoalesce(H[_nullishCoalesce(_optionalChain([resizing, 'optionalAccess',
|
|
5763
|
-
const [y0, y1] = placeSpan(_nullishCoalesce(V[_nullishCoalesce(_optionalChain([resizing, 'optionalAccess',
|
|
5825
|
+
const [x0, x1] = placeSpan(_nullishCoalesce(H[_nullishCoalesce(_optionalChain([resizing, 'optionalAccess', _192 => _192.horizontal]), () => ( "left"))], () => ( "start")), box.x, box.x + box.width, from.x, from.x + from.width, to.x, to.x + to.width);
|
|
5826
|
+
const [y0, y1] = placeSpan(_nullishCoalesce(V[_nullishCoalesce(_optionalChain([resizing, 'optionalAccess', _193 => _193.vertical]), () => ( "top"))], () => ( "start")), box.y, box.y + box.height, from.y, from.y + from.height, to.y, to.y + to.height);
|
|
5764
5827
|
const sx = box.width > 1e-9 ? (x1 - x0) / box.width : 1;
|
|
5765
5828
|
const sy = box.height > 1e-9 ? (y1 - y0) / box.height : 1;
|
|
5766
5829
|
return [sx, 0, 0, sy, x0 - sx * box.x, y0 - sy * box.y];
|
|
@@ -5816,7 +5879,7 @@ function vectorFrameDocument(doc, id, find) {
|
|
|
5816
5879
|
height,
|
|
5817
5880
|
...doc.background ? { background: doc.background } : {},
|
|
5818
5881
|
nodes: [placed],
|
|
5819
|
-
..._optionalChain([doc, 'access',
|
|
5882
|
+
..._optionalChain([doc, 'access', _194 => _194.symbols, 'optionalAccess', _195 => _195.length]) ? { symbols: doc.symbols } : {}
|
|
5820
5883
|
};
|
|
5821
5884
|
}
|
|
5822
5885
|
function getVectorFramePanel(state) {
|
|
@@ -5836,7 +5899,7 @@ function getVectorFramePanel(state) {
|
|
|
5836
5899
|
const one = (values) => values.every((v2) => v2 === values[0]) ? values[0] : "mixed";
|
|
5837
5900
|
return {
|
|
5838
5901
|
frame: f ? { id: f.id, name: _nullishCoalesce(f.name, () => ( "Frame")), artboard: parents.get(f.id) === null, frame: f.frame } : null,
|
|
5839
|
-
resizing: children.length ? { ids: children.map((c) => c.id), horizontal: one(children.map((c) => _nullishCoalesce(_optionalChain([c, 'access',
|
|
5902
|
+
resizing: children.length ? { ids: children.map((c) => c.id), horizontal: one(children.map((c) => _nullishCoalesce(_optionalChain([c, 'access', _196 => _196.resizing, 'optionalAccess', _197 => _197.horizontal]), () => ( "left")))), vertical: one(children.map((c) => _nullishCoalesce(_optionalChain([c, 'access', _198 => _198.resizing, 'optionalAccess', _199 => _199.vertical]), () => ( "top")))) } : null
|
|
5840
5903
|
};
|
|
5841
5904
|
}
|
|
5842
5905
|
|
|
@@ -6222,7 +6285,7 @@ function normalizeVectorFilterParams(type, params, base) {
|
|
|
6222
6285
|
if (!isVectorFilterType(type)) return null;
|
|
6223
6286
|
const out = { ...VECTOR_FILTER_DEFAULTS[type], ..._nullishCoalesce(base, () => ( {})) };
|
|
6224
6287
|
for (const spec of VECTOR_FILTER_PARAM_SPECS[type]) {
|
|
6225
|
-
const v2 = _optionalChain([params, 'optionalAccess',
|
|
6288
|
+
const v2 = _optionalChain([params, 'optionalAccess', _200 => _200[spec.key]]);
|
|
6226
6289
|
if (v2 === void 0) continue;
|
|
6227
6290
|
if (spec.kind === "number" && typeof v2 === "number" && Number.isFinite(v2)) out[spec.key] = Math.min(_nullishCoalesce(spec.max, () => ( Infinity)), Math.max(_nullishCoalesce(spec.min, () => ( -Infinity)), v2));
|
|
6228
6291
|
else if (spec.kind === "color" && typeof v2 === "string" && v2.trim()) out[spec.key] = v2.trim();
|
|
@@ -6354,7 +6417,7 @@ function vectorFilterSvg(filters, id, bounds) {
|
|
|
6354
6417
|
primitives.push(fe("feGaussianBlur", { in: body, stdDeviation: round(f.params.radius / 2), result: name("body") }));
|
|
6355
6418
|
body = name("body");
|
|
6356
6419
|
}
|
|
6357
|
-
const lastResult = _optionalChain([primitives, 'access',
|
|
6420
|
+
const lastResult = _optionalChain([primitives, 'access', _201 => _201[primitives.length - 1], 'optionalAccess', _202 => _202.attrs, 'access', _203 => _203.result]);
|
|
6358
6421
|
if (lastResult !== body) primitives.push(fe("feMerge", {}, [fe("feMergeNode", { in: body })]));
|
|
6359
6422
|
const pad = vectorFilterReach(active) + 2;
|
|
6360
6423
|
return {
|
|
@@ -6369,7 +6432,7 @@ function vectorFilterSvg(filters, id, bounds) {
|
|
|
6369
6432
|
var escapeAttr = (value) => value.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
6370
6433
|
function primitiveMarkup(p) {
|
|
6371
6434
|
const attrs = Object.entries(p.attrs).map(([k, v2]) => ` ${k}="${escapeAttr(String(v2))}"`).join("");
|
|
6372
|
-
return _optionalChain([p, 'access',
|
|
6435
|
+
return _optionalChain([p, 'access', _204 => _204.children, 'optionalAccess', _205 => _205.length]) ? `<${p.tag}${attrs}>${p.children.map(primitiveMarkup).join("")}</${p.tag}>` : `<${p.tag}${attrs}/>`;
|
|
6373
6436
|
}
|
|
6374
6437
|
function vectorFilterMarkup(filter, extra = "") {
|
|
6375
6438
|
return `<filter id="${escapeAttr(filter.id)}" filterUnits="userSpaceOnUse" x="${filter.x}" y="${filter.y}" width="${filter.width}" height="${filter.height}" color-interpolation-filters="sRGB"${extra}>${filter.primitives.map(primitiveMarkup).join("")}</filter>`;
|
|
@@ -6387,7 +6450,7 @@ function sanitizeVectorMask(value) {
|
|
|
6387
6450
|
return r.invert === true ? { type: r.type, invert: true } : { type: r.type };
|
|
6388
6451
|
}
|
|
6389
6452
|
function isVectorMaskGroup(node) {
|
|
6390
|
-
return _optionalChain([node, 'optionalAccess',
|
|
6453
|
+
return _optionalChain([node, 'optionalAccess', _206 => _206.type]) === "group" && !!node.mask && isVectorMaskType(node.mask.type) && !node.blend && !node.liveBoolean && node.children.length > 0;
|
|
6391
6454
|
}
|
|
6392
6455
|
function isVectorMaskActive(node) {
|
|
6393
6456
|
return isVectorMaskGroup(node) && node.children[0].visible !== false;
|
|
@@ -6422,7 +6485,7 @@ function vectorMaskRegionShapes(node, type, parent = IDENTITY_MATRIX, self = tru
|
|
|
6422
6485
|
if (!self && node.visible === false) return [];
|
|
6423
6486
|
if (isVectorFrame(node)) node = vectorFrameDrawn(node);
|
|
6424
6487
|
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
6425
|
-
if (isVectorMaskActive(node) || node.type === "group" && _optionalChain([node, 'access',
|
|
6488
|
+
if (isVectorMaskActive(node) || node.type === "group" && _optionalChain([node, 'access', _207 => _207.effects, 'optionalAccess', _208 => _208.length])) {
|
|
6426
6489
|
return vectorAppearanceShapes(node).flatMap((s) => regionOfPath(s.path, s.source, type, m));
|
|
6427
6490
|
}
|
|
6428
6491
|
const drawn = expandVectorAppearance(node);
|
|
@@ -6627,7 +6690,7 @@ function fitRuns(runs, length2, fallback) {
|
|
|
6627
6690
|
}
|
|
6628
6691
|
if (left2 > 0) {
|
|
6629
6692
|
if (out.length) out[out.length - 1] = { ...out[out.length - 1], length: out[out.length - 1].length + left2 };
|
|
6630
|
-
else out.push({ length: left2, style: _nullishCoalesce(_optionalChain([runs, 'access',
|
|
6693
|
+
else out.push({ length: left2, style: _nullishCoalesce(_optionalChain([runs, 'access', _209 => _209[runs.length - 1], 'optionalAccess', _210 => _210.style]), () => ( fallback)) });
|
|
6631
6694
|
}
|
|
6632
6695
|
return compact(out);
|
|
6633
6696
|
}
|
|
@@ -6637,7 +6700,7 @@ function styleAt(runs, index, fallback) {
|
|
|
6637
6700
|
if (index < at2 + r.length) return r.style;
|
|
6638
6701
|
at2 += r.length;
|
|
6639
6702
|
}
|
|
6640
|
-
return _nullishCoalesce(_optionalChain([runs, 'access',
|
|
6703
|
+
return _nullishCoalesce(_optionalChain([runs, 'access', _211 => _211[runs.length - 1], 'optionalAccess', _212 => _212.style]), () => ( fallback));
|
|
6641
6704
|
}
|
|
6642
6705
|
function restyleRange(runs, start, end, patch) {
|
|
6643
6706
|
const out = [];
|
|
@@ -6693,7 +6756,7 @@ function paragraphRanges(text) {
|
|
|
6693
6756
|
return out;
|
|
6694
6757
|
}
|
|
6695
6758
|
function fitParagraphRuns(runs, text) {
|
|
6696
|
-
const fallback = _nullishCoalesce(_optionalChain([runs, 'access',
|
|
6759
|
+
const fallback = _nullishCoalesce(_optionalChain([runs, 'access', _213 => _213[0], 'optionalAccess', _214 => _214.style]), () => ( {}));
|
|
6697
6760
|
const out = compact(paragraphRanges(text).map((p) => ({ length: p.end - p.start, style: styleAt(runs, p.start, fallback) })));
|
|
6698
6761
|
return out.length ? out : [{ length: 0, style: fallback }];
|
|
6699
6762
|
}
|
|
@@ -6743,7 +6806,7 @@ function textLineRect(l) {
|
|
|
6743
6806
|
var layoutCache = /* @__PURE__ */ new WeakMap();
|
|
6744
6807
|
function layoutText(layer, shaper) {
|
|
6745
6808
|
let byShaper = layoutCache.get(layer);
|
|
6746
|
-
const hit = _optionalChain([byShaper, 'optionalAccess',
|
|
6809
|
+
const hit = _optionalChain([byShaper, 'optionalAccess', _215 => _215.get, 'call', _216 => _216(shaper.id)]);
|
|
6747
6810
|
if (hit) return hit;
|
|
6748
6811
|
const out = computeLayout(layer, shaper);
|
|
6749
6812
|
if (!byShaper) {
|
|
@@ -6807,7 +6870,7 @@ function computeLayout(layer, shaper) {
|
|
|
6807
6870
|
const code = seg.charCodeAt(k);
|
|
6808
6871
|
if (isLow(code) && index > 0 && isHigh(text.charCodeAt(index - 1))) {
|
|
6809
6872
|
const prev = chars[chars.length - 1];
|
|
6810
|
-
if (_optionalChain([prev, 'optionalAccess',
|
|
6873
|
+
if (_optionalChain([prev, 'optionalAccess', _217 => _217.up])) {
|
|
6811
6874
|
chars.push({ index, ch: seg[k], advance: 0, style, up: prev.up, low: true });
|
|
6812
6875
|
} else chars.push({ index, ch: seg[k], advance, style, low: true });
|
|
6813
6876
|
continue;
|
|
@@ -7135,7 +7198,7 @@ function createCanvasTextShaper(options = {}) {
|
|
|
7135
7198
|
return null;
|
|
7136
7199
|
})));
|
|
7137
7200
|
const canvas = make(1, 1);
|
|
7138
|
-
const ctx = _optionalChain([canvas, 'optionalAccess',
|
|
7201
|
+
const ctx = _optionalChain([canvas, 'optionalAccess', _218 => _218.getContext, 'call', _219 => _219("2d")]);
|
|
7139
7202
|
if (!ctx || typeof ctx.measureText !== "function") return null;
|
|
7140
7203
|
const fallback = _nullishCoalesce(options.fallbackFamily, () => ( "sans-serif"));
|
|
7141
7204
|
const available = /* @__PURE__ */ new Map();
|
|
@@ -7208,10 +7271,10 @@ function createOutlineTextShaper(fonts, options = {}) {
|
|
|
7208
7271
|
const entries = fonts.map((f) => {
|
|
7209
7272
|
const e = "face" in f ? f : { face: f };
|
|
7210
7273
|
const names = e.face.names;
|
|
7211
|
-
const family = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(e.family, () => ( _optionalChain([names, 'optionalAccess',
|
|
7212
|
-
const weight = _nullishCoalesce(_nullishCoalesce(e.weight, () => ( _optionalChain([e, 'access',
|
|
7213
|
-
const italic = _nullishCoalesce(e.italic, () => ( Boolean((_nullishCoalesce(_optionalChain([e, 'access',
|
|
7214
|
-
const postScript = _nullishCoalesce(_optionalChain([names, 'optionalAccess',
|
|
7274
|
+
const family = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(e.family, () => ( _optionalChain([names, 'optionalAccess', _220 => _220.fontFamily, 'optionalAccess', _221 => _221.en]))), () => ( Object.values(_nullishCoalesce(_optionalChain([names, 'optionalAccess', _222 => _222.fontFamily]), () => ( {})))[0])), () => ( "Font"));
|
|
7275
|
+
const weight = _nullishCoalesce(_nullishCoalesce(e.weight, () => ( _optionalChain([e, 'access', _223 => _223.face, 'access', _224 => _224.tables, 'optionalAccess', _225 => _225.os2, 'optionalAccess', _226 => _226.usWeightClass]))), () => ( 400));
|
|
7276
|
+
const italic = _nullishCoalesce(e.italic, () => ( Boolean((_nullishCoalesce(_optionalChain([e, 'access', _227 => _227.face, 'access', _228 => _228.tables, 'optionalAccess', _229 => _229.os2, 'optionalAccess', _230 => _230.fsSelection]), () => ( 0))) & 1)));
|
|
7277
|
+
const postScript = _nullishCoalesce(_optionalChain([names, 'optionalAccess', _231 => _231.postScriptName, 'optionalAccess', _232 => _232.en]), () => ( Object.values(_nullishCoalesce(_optionalChain([names, 'optionalAccess', _233 => _233.postScriptName]), () => ( {})))[0]));
|
|
7215
7278
|
return { face: e.face, family, key: family.toLowerCase(), weight, italic, postScript };
|
|
7216
7279
|
});
|
|
7217
7280
|
const fallbackKey = (_nullishCoalesce(options.fallback, () => ( entries[0].family))).toLowerCase();
|
|
@@ -7258,12 +7321,12 @@ function createOutlineTextShaper(fonts, options = {}) {
|
|
|
7258
7321
|
return out;
|
|
7259
7322
|
},
|
|
7260
7323
|
outline(text, font, x, y, opts) {
|
|
7261
|
-
return toPath(pick(font).entry.face.getPath(text, x, y, font.size, _optionalChain([opts, 'optionalAccess',
|
|
7324
|
+
return toPath(pick(font).entry.face.getPath(text, x, y, font.size, _optionalChain([opts, 'optionalAccess', _234 => _234.vertical]) ? { kerning: true, vertical: true } : { kerning: true }).commands);
|
|
7262
7325
|
},
|
|
7263
7326
|
vertical(char, font) {
|
|
7264
7327
|
const { face } = pick(font).entry;
|
|
7265
7328
|
const k = font.size / face.unitsPerEm;
|
|
7266
|
-
const v2 = _optionalChain([face, 'access',
|
|
7329
|
+
const v2 = _optionalChain([face, 'access', _235 => _235.getVerticalMetrics, 'optionalCall', _236 => _236(char)]);
|
|
7267
7330
|
if (v2) return { advance: v2.advance * k, originY: v2.originY * k, alternate: v2.alternate };
|
|
7268
7331
|
return { advance: (face.ascender - face.descender) * k, originY: face.ascender * k, alternate: false };
|
|
7269
7332
|
},
|
|
@@ -7324,7 +7387,7 @@ function vectorTextHasOutlines() {
|
|
|
7324
7387
|
return typeof getVectorTextShaper().outline === "function";
|
|
7325
7388
|
}
|
|
7326
7389
|
function vectorTextFamilies() {
|
|
7327
|
-
return _nullishCoalesce(_optionalChain([getVectorTextShaper, 'call',
|
|
7390
|
+
return _nullishCoalesce(_optionalChain([getVectorTextShaper, 'call', _237 => _237(), 'access', _238 => _238.families, 'optionalCall', _239 => _239()]), () => ( ["sans-serif", "serif", "monospace"]));
|
|
7328
7391
|
}
|
|
7329
7392
|
var DEFAULT_VECTOR_FONT = { fontFamily: "sans-serif", fontWeight: 400, fontSize: 24 };
|
|
7330
7393
|
var VECTOR_CHARACTER_STYLE_KEYS = ["fontFamily", "fontWeight", "italic", "fontSize", "tracking", "leading", "baselineShift", "underline", "strikethrough", "upright"];
|
|
@@ -7500,7 +7563,7 @@ function computeLayout2(node, shaper) {
|
|
|
7500
7563
|
const fragments = [];
|
|
7501
7564
|
const lines = [];
|
|
7502
7565
|
let overflow = false;
|
|
7503
|
-
const fillOf = (f) => _optionalChain([runs, 'access',
|
|
7566
|
+
const fillOf = (f) => _optionalChain([runs, 'access', _240 => _240.find, 'call', _241 => _241((r) => f.start >= r.start && f.start < r.end), 'optionalAccess', _242 => _242.fill]);
|
|
7504
7567
|
const styleOf = (f) => {
|
|
7505
7568
|
const { color: _c, opacity: _o, postScriptName: _p, ...style } = f.style;
|
|
7506
7569
|
return style;
|
|
@@ -7539,11 +7602,11 @@ function computeLayout2(node, shaper) {
|
|
|
7539
7602
|
} else {
|
|
7540
7603
|
const line = text.lines[0];
|
|
7541
7604
|
const measure = measureVectorPath(subpathPath(frame.path), !!frame.flip);
|
|
7542
|
-
const align = _nullishCoalesce(_optionalChain([node, 'access',
|
|
7605
|
+
const align = _nullishCoalesce(_optionalChain([node, 'access', _243 => _243.paragraph, 'optionalAccess', _244 => _244.align]), () => ( "left"));
|
|
7543
7606
|
const start = Math.max(0, _nullishCoalesce(frame.start, () => ( 0)));
|
|
7544
7607
|
const end = Math.max(0, _nullishCoalesce(frame.end, () => ( 0)));
|
|
7545
7608
|
const upright = frame.orientation === "upright";
|
|
7546
|
-
const baselineOffset = pathBaselineOffset(_nullishCoalesce(frame.baseline, () => ( "baseline")), _nullishCoalesce(_optionalChain([line, 'optionalAccess',
|
|
7609
|
+
const baselineOffset = pathBaselineOffset(_nullishCoalesce(frame.baseline, () => ( "baseline")), _nullishCoalesce(_optionalChain([line, 'optionalAccess', _245 => _245.ascent]), () => ( 0)), _nullishCoalesce(_optionalChain([line, 'optionalAccess', _246 => _246.descent]), () => ( 0)));
|
|
7547
7610
|
if (line) {
|
|
7548
7611
|
const chars = line.chars.filter((c) => {
|
|
7549
7612
|
const lo = block.text.charCodeAt(c.index);
|
|
@@ -7552,7 +7615,7 @@ function computeLayout2(node, shaper) {
|
|
|
7552
7615
|
const advanceOf = (c) => {
|
|
7553
7616
|
const pair = charAt(block.text, c.index).length === 2;
|
|
7554
7617
|
const low = pair ? line.chars.find((d) => d.index === c.index + 1) : void 0;
|
|
7555
|
-
return c.advance + (_nullishCoalesce(_optionalChain([low, 'optionalAccess',
|
|
7618
|
+
return c.advance + (_nullishCoalesce(_optionalChain([low, 'optionalAccess', _247 => _247.advance]), () => ( 0)));
|
|
7556
7619
|
};
|
|
7557
7620
|
const pivots = chars.map((c) => c.x + advanceOf(c) / 2);
|
|
7558
7621
|
const positions = vectorPathTextPositions(pivots, [line.x, line.x + line.width], align, measure.length, start, end);
|
|
@@ -7607,7 +7670,7 @@ function computeLayout2(node, shaper) {
|
|
|
7607
7670
|
if (x0 < Infinity) bounds = { x: x0, y: y0, width: x1 - x0, height: y1 - y0 };
|
|
7608
7671
|
else if (frame.kind === "point") {
|
|
7609
7672
|
const l = text.lines[0];
|
|
7610
|
-
bounds = { x: frame.x, y: frame.y - (_nullishCoalesce(_optionalChain([l, 'optionalAccess',
|
|
7673
|
+
bounds = { x: frame.x, y: frame.y - (_nullishCoalesce(_optionalChain([l, 'optionalAccess', _248 => _248.ascent]), () => ( 0))), width: 0, height: (_nullishCoalesce(_optionalChain([l, 'optionalAccess', _249 => _249.ascent]), () => ( 0))) + (_nullishCoalesce(_optionalChain([l, 'optionalAccess', _250 => _250.descent]), () => ( 0))) };
|
|
7611
7674
|
}
|
|
7612
7675
|
}
|
|
7613
7676
|
return { shaper: shaper.id, glyphs, fragments, lines, origin, text, bounds, overflow, missingFonts: text.missingFonts };
|
|
@@ -7728,7 +7791,7 @@ function vectorTextCaret(node, index) {
|
|
|
7728
7791
|
const t = { x: Math.cos(r), y: Math.sin(r) };
|
|
7729
7792
|
const n2 = { x: -t.y, y: t.x };
|
|
7730
7793
|
const o = { x: g2.x + t.x * u, y: g2.y + t.y * u };
|
|
7731
|
-
return { top: { x: o.x - n2.x * g2.ascent, y: o.y - n2.y * g2.ascent }, bottom: { x: o.x + n2.x * g2.descent, y: o.y + n2.y * g2.descent }, line: _nullishCoalesce(_optionalChain([layout, 'access',
|
|
7794
|
+
return { top: { x: o.x - n2.x * g2.ascent, y: o.y - n2.y * g2.ascent }, bottom: { x: o.x + n2.x * g2.descent, y: o.y + n2.y * g2.descent }, line: _nullishCoalesce(_optionalChain([layout, 'access', _251 => _251.fragments, 'access', _252 => _252[g2.fragment], 'optionalAccess', _253 => _253.line]), () => ( 0)) };
|
|
7732
7795
|
};
|
|
7733
7796
|
if (node.frame.kind !== "path") {
|
|
7734
7797
|
const c = caretAt(layout.text, index);
|
|
@@ -7868,7 +7931,7 @@ function sanitizeVectorTextFrame(value, path = "frame") {
|
|
|
7868
7931
|
return { kind: "area", x: num2(f.x, `${path}.x`, -1e7, 1e7), y: num2(f.y, `${path}.y`, -1e7, 1e7), width: num2(f.width, `${path}.width`, 0, 1e7), height: num2(f.height, `${path}.height`, 0, 1e7) };
|
|
7869
7932
|
if (f.kind === "path") {
|
|
7870
7933
|
const sp = f.path;
|
|
7871
|
-
if (!sp || !Array.isArray(sp.anchors) || sp.anchors.length < 2 || !sp.anchors.every((a) => isNum(_optionalChain([a, 'optionalAccess',
|
|
7934
|
+
if (!sp || !Array.isArray(sp.anchors) || sp.anchors.length < 2 || !sp.anchors.every((a) => isNum(_optionalChain([a, 'optionalAccess', _254 => _254.x])) && isNum(_optionalChain([a, 'optionalAccess', _255 => _255.y])))) fail(`${path}.path must be a subpath with at least two anchors.`);
|
|
7872
7935
|
const out = { kind: "path", path: { closed: !!sp.closed, anchors: sp.anchors.map((a) => ({ ...a })) } };
|
|
7873
7936
|
if (f.start !== void 0 && f.start !== 0) out.start = num2(f.start, `${path}.start`, 0, 1e7);
|
|
7874
7937
|
if (f.end !== void 0 && f.end !== 0) out.end = num2(f.end, `${path}.end`, 0, 1e7);
|
|
@@ -7886,7 +7949,7 @@ function sanitizeVectorTextFrame(value, path = "frame") {
|
|
|
7886
7949
|
return fail(`${path}.kind must be point, area or path, got ${JSON.stringify(f.kind)}.`);
|
|
7887
7950
|
}
|
|
7888
7951
|
function normalizeVectorTextRuns(text, runs) {
|
|
7889
|
-
if (!_optionalChain([runs, 'optionalAccess',
|
|
7952
|
+
if (!_optionalChain([runs, 'optionalAccess', _256 => _256.length])) return null;
|
|
7890
7953
|
const cleaned = fitVectorTextRuns(
|
|
7891
7954
|
runs.map((r) => ({ length: r.length, style: stripUndefined(r.style) })),
|
|
7892
7955
|
text.length
|
|
@@ -7926,7 +7989,7 @@ function replaceVectorText(node, start, end, insert) {
|
|
|
7926
7989
|
const clean2 = insert.replace(/\r\n?/g, "\n");
|
|
7927
7990
|
const text = node.text.slice(0, start) + clean2 + node.text.slice(end);
|
|
7928
7991
|
let runs = null;
|
|
7929
|
-
if (_optionalChain([node, 'access',
|
|
7992
|
+
if (_optionalChain([node, 'access', _257 => _257.runs, 'optionalAccess', _258 => _258.length])) {
|
|
7930
7993
|
const fitted = fitVectorTextRuns(node.runs, node.text.length);
|
|
7931
7994
|
const style = styleAt(fitted, start > 0 ? start - 1 : start, {});
|
|
7932
7995
|
runs = normalizeVectorTextRuns(text, spliceRuns(fitted, start, end, clean2.length, style));
|
|
@@ -7942,7 +8005,7 @@ function styleVectorText(node, start, end, patch) {
|
|
|
7942
8005
|
if (whole) {
|
|
7943
8006
|
let next2 = { ...node, font: patchVectorCharacterStyle(node.font, fields, "style") };
|
|
7944
8007
|
const keys = Object.keys(fields).filter((k) => fields[k] !== void 0);
|
|
7945
|
-
if (_optionalChain([next2, 'access',
|
|
8008
|
+
if (_optionalChain([next2, 'access', _259 => _259.runs, 'optionalAccess', _260 => _260.length]) && (keys.length || fill !== void 0)) {
|
|
7946
8009
|
const runs2 = normalizeVectorTextRuns(
|
|
7947
8010
|
next2.text,
|
|
7948
8011
|
next2.runs.map((r) => {
|
|
@@ -7987,7 +8050,7 @@ function bakeVectorTextGeometry(node, m) {
|
|
|
7987
8050
|
...s.baselineShift !== void 0 ? { baselineShift: s.baselineShift * k } : {}
|
|
7988
8051
|
});
|
|
7989
8052
|
const font = scaleStyle(node.font);
|
|
7990
|
-
const runs = _optionalChain([node, 'access',
|
|
8053
|
+
const runs = _optionalChain([node, 'access', _261 => _261.runs, 'optionalAccess', _262 => _262.map, 'call', _263 => _263((r) => ({ length: r.length, style: scaleStyle(r.style) }))]);
|
|
7991
8054
|
const p = node.paragraph;
|
|
7992
8055
|
const paragraph = p ? {
|
|
7993
8056
|
...p,
|
|
@@ -8276,7 +8339,7 @@ function vectorInstanceGroup(node, bake) {
|
|
|
8276
8339
|
const m = _nullishCoalesce(node.transform, () => ( [1, 0, 0, 1, 0, 0]));
|
|
8277
8340
|
const { rigid, residual } = decomposeRigid(m);
|
|
8278
8341
|
const k = Math.sqrt(Math.abs(residual[0] * residual[3] - residual[1] * residual[2]));
|
|
8279
|
-
const hidden = new Set(_nullishCoalesce(_optionalChain([node, 'access',
|
|
8342
|
+
const hidden = new Set(_nullishCoalesce(_optionalChain([node, 'access', _264 => _264.overrides, 'optionalAccess', _265 => _265.hidden]), () => ( [])));
|
|
8280
8343
|
const keep = (list) => list.filter((n) => !hidden.has(n.id)).map((n) => n.type === "group" ? { ...n, children: keep(n.children) } : n);
|
|
8281
8344
|
let children = prefixVectorIds(keep(_nullishCoalesce(node.art, () => ( []))), node.id);
|
|
8282
8345
|
if (!isIdentityMatrix(residual)) children = children.map((c) => bake(c, residual));
|
|
@@ -8289,8 +8352,8 @@ function vectorInstanceGroup(node, bake) {
|
|
|
8289
8352
|
if (node.locked) group.locked = true;
|
|
8290
8353
|
if (node.opacity !== void 0) group.opacity = node.opacity;
|
|
8291
8354
|
if (node.blendMode) group.blendMode = node.blendMode;
|
|
8292
|
-
if (_optionalChain([node, 'access',
|
|
8293
|
-
if (_optionalChain([node, 'access',
|
|
8355
|
+
if (_optionalChain([node, 'access', _266 => _266.filters, 'optionalAccess', _267 => _267.length])) group.filters = node.filters;
|
|
8356
|
+
if (_optionalChain([node, 'access', _268 => _268.effects, 'optionalAccess', _269 => _269.length])) group.effects = node.effects;
|
|
8294
8357
|
if (node.booleanOperation) group.booleanOperation = node.booleanOperation;
|
|
8295
8358
|
if (node.blendStep) group.blendStep = true;
|
|
8296
8359
|
return group;
|
|
@@ -8543,8 +8606,8 @@ function vectorLensDrawn(node) {
|
|
|
8543
8606
|
if (wire) {
|
|
8544
8607
|
contents.push(shapePath(shape, id, changed, { fill: null, fills: void 0, stroke: wire, strokes: void 0, strokeWidth: 1, strokeAlign: void 0, strokeDasharray: void 0, strokeWidthProfile: void 0, opacity: Math.min(1, Math.max(0, lens.amount / 100)) }));
|
|
8545
8608
|
} else if (recolour) {
|
|
8546
|
-
const fills = _optionalChain([shape, 'access',
|
|
8547
|
-
const strokes = _optionalChain([shape, 'access',
|
|
8609
|
+
const fills = _optionalChain([shape, 'access', _270 => _270.source, 'access', _271 => _271.fills, 'optionalAccess', _272 => _272.map, 'call', _273 => _273((l) => ({ ...l, paint: _nullishCoalesce(mapVectorPaintColors(l.paint, recolour), () => ( null)) }))]);
|
|
8610
|
+
const strokes = _optionalChain([shape, 'access', _274 => _274.source, 'access', _275 => _275.strokes, 'optionalAccess', _276 => _276.map, 'call', _277 => _277((l) => ({ ...l, paint: _nullishCoalesce(mapVectorPaintColors(l.paint, recolour), () => ( null)) }))]);
|
|
8548
8611
|
contents.push(shapePath(shape, id, changed, { fill: _nullishCoalesce(mapVectorPaintColors(shape.source.fill, recolour), () => ( null)), stroke: _nullishCoalesce(mapVectorPaintColors(shape.source.stroke, recolour), () => ( null)), ...fills ? { fills } : {}, ...strokes ? { strokes } : {} }));
|
|
8549
8612
|
} else contents.push(shapePath(shape, id, changed));
|
|
8550
8613
|
}
|
|
@@ -8557,7 +8620,7 @@ function vectorLensDrawn(node) {
|
|
|
8557
8620
|
const { lens: _l, lensView: _v, transform: _t, opacity: _o, effects: _e, blendMode: _bm, filters: _f, ...style } = node;
|
|
8558
8621
|
const fillOpacity = lens.type === "transparency" ? 1 - Math.min(100, Math.max(0, lens.amount)) / 100 : 0;
|
|
8559
8622
|
children.push({ ...style, id: `${node.id}~lens-fill`, stroke: null, strokes: void 0, opacity: fillOpacity });
|
|
8560
|
-
const stroked = (_nullishCoalesce(_optionalChain([node, 'access',
|
|
8623
|
+
const stroked = (_nullishCoalesce(_optionalChain([node, 'access', _278 => _278.strokes, 'optionalAccess', _279 => _279.length]), () => ( 0))) > 0 || node.stroke != null && node.stroke !== "none";
|
|
8561
8624
|
if (stroked) children.push({ ...style, id: `${node.id}~lens-stroke`, fill: null, fills: void 0 });
|
|
8562
8625
|
const out = {
|
|
8563
8626
|
id: node.id,
|
|
@@ -8566,7 +8629,7 @@ function vectorLensDrawn(node) {
|
|
|
8566
8629
|
...node.transform ? { transform: node.transform } : {},
|
|
8567
8630
|
...node.opacity !== void 0 ? { opacity: node.opacity } : {},
|
|
8568
8631
|
...node.blendMode ? { blendMode: node.blendMode } : {},
|
|
8569
|
-
..._optionalChain([node, 'access',
|
|
8632
|
+
..._optionalChain([node, 'access', _280 => _280.filters, 'optionalAccess', _281 => _281.length]) ? { filters: node.filters } : {},
|
|
8570
8633
|
children
|
|
8571
8634
|
};
|
|
8572
8635
|
drawnCache2.set(node, out);
|
|
@@ -9567,7 +9630,7 @@ function normalizeVectorEffectParams(type, params, base) {
|
|
|
9567
9630
|
if (!defaults) return null;
|
|
9568
9631
|
const out = { ...defaults, ..._nullishCoalesce(base, () => ( {})) };
|
|
9569
9632
|
for (const spec of VECTOR_EFFECT_PARAM_SPECS[type]) {
|
|
9570
|
-
const v2 = _optionalChain([params, 'optionalAccess',
|
|
9633
|
+
const v2 = _optionalChain([params, 'optionalAccess', _282 => _282[spec.key]]);
|
|
9571
9634
|
if (v2 === void 0) continue;
|
|
9572
9635
|
if (spec.kind === "number" && typeof v2 === "number" && Number.isFinite(v2)) out[spec.key] = Math.min(_nullishCoalesce(spec.max, () => ( Infinity)), Math.max(_nullishCoalesce(spec.min, () => ( -Infinity)), v2));
|
|
9573
9636
|
else if (spec.kind === "boolean" && typeof v2 === "boolean") out[spec.key] = v2;
|
|
@@ -9579,7 +9642,7 @@ function normalizeVectorEffectParams(type, params, base) {
|
|
|
9579
9642
|
const o = out;
|
|
9580
9643
|
o.rows = Math.round(o.rows);
|
|
9581
9644
|
o.columns = Math.round(o.columns);
|
|
9582
|
-
const given = _optionalChain([params, 'optionalAccess',
|
|
9645
|
+
const given = _optionalChain([params, 'optionalAccess', _283 => _283.mesh]);
|
|
9583
9646
|
let mesh = given !== void 0 ? isValidWarpMesh(given) ? cloneMesh(given) : null : o.mesh;
|
|
9584
9647
|
if (o.style !== "mesh") mesh = null;
|
|
9585
9648
|
if (mesh && given !== void 0) {
|
|
@@ -9596,10 +9659,10 @@ function createVectorEffect(type, id, params) {
|
|
|
9596
9659
|
}
|
|
9597
9660
|
var isEnabled = (e) => e.enabled !== false && !!VECTOR_EFFECT_DEFAULTS[e.type];
|
|
9598
9661
|
function activeVectorEffects(node) {
|
|
9599
|
-
return _nullishCoalesce(_optionalChain([node, 'access',
|
|
9662
|
+
return _nullishCoalesce(_optionalChain([node, 'access', _284 => _284.effects, 'optionalAccess', _285 => _285.filter, 'call', _286 => _286(isEnabled)]), () => ( []));
|
|
9600
9663
|
}
|
|
9601
9664
|
function hasOwnVectorAppearance(node) {
|
|
9602
|
-
return node.type === "text" || node.type === "instance" || node.type === "group" && !!node.liveBoolean || isVectorFrame(node) || isVectorSymmetryGroup(node) || isVectorLens(node) || !!_optionalChain([node, 'access',
|
|
9665
|
+
return node.type === "text" || node.type === "instance" || node.type === "group" && !!node.liveBoolean || isVectorFrame(node) || isVectorSymmetryGroup(node) || isVectorLens(node) || !!_optionalChain([node, 'access', _287 => _287.effects, 'optionalAccess', _288 => _288.some, 'call', _289 => _289(isEnabled)]);
|
|
9603
9666
|
}
|
|
9604
9667
|
var liveCache = /* @__PURE__ */ new WeakMap();
|
|
9605
9668
|
function hasVectorAppearance(node) {
|
|
@@ -9611,7 +9674,7 @@ function hasVectorAppearance(node) {
|
|
|
9611
9674
|
return v2;
|
|
9612
9675
|
}
|
|
9613
9676
|
function isVectorLiveBoolean(node) {
|
|
9614
|
-
return _optionalChain([node, 'optionalAccess',
|
|
9677
|
+
return _optionalChain([node, 'optionalAccess', _290 => _290.type]) === "group" && !!node.liveBoolean;
|
|
9615
9678
|
}
|
|
9616
9679
|
function vectorOperandOperation(group, child) {
|
|
9617
9680
|
return _nullishCoalesce(_nullishCoalesce(child.booleanOperation, () => ( group.liveBoolean)), () => ( "union"));
|
|
@@ -9728,7 +9791,7 @@ var compareOrder = (a, b) => {
|
|
|
9728
9791
|
for (let i = 0; i < n; i++) if (a[i] !== b[i]) return a[i] - b[i];
|
|
9729
9792
|
return a.length - b.length;
|
|
9730
9793
|
};
|
|
9731
|
-
var add3 = (a, b) => ({ x: a.x + (_nullishCoalesce(_optionalChain([b, 'optionalAccess',
|
|
9794
|
+
var add3 = (a, b) => ({ x: a.x + (_nullishCoalesce(_optionalChain([b, 'optionalAccess', _291 => _291.x]), () => ( 0))), y: a.y + (_nullishCoalesce(_optionalChain([b, 'optionalAccess', _292 => _292.y]), () => ( 0))) });
|
|
9732
9795
|
var mapPaths = (shapes, fn) => {
|
|
9733
9796
|
const out = fn(shapes.map((s) => s.path));
|
|
9734
9797
|
return shapes.map((s, i) => ({ ...s, path: _nullishCoalesce(out[i], () => ( [])) }));
|
|
@@ -9756,7 +9819,7 @@ function contourShapes(shapes, c) {
|
|
|
9756
9819
|
const power = 2 ** (Math.min(100, Math.max(-100, c.acceleration)) / 50);
|
|
9757
9820
|
for (let k = 1; k <= n; k++) {
|
|
9758
9821
|
const [path] = offsetPaths([s.path], (outside ? 1 : -1) * step * k, c.join, c.miterLimit, 1, 0);
|
|
9759
|
-
if (!_optionalChain([path, 'optionalAccess',
|
|
9822
|
+
if (!_optionalChain([path, 'optionalAccess', _293 => _293.length])) break;
|
|
9760
9823
|
const t = (k / n) ** power;
|
|
9761
9824
|
const source = { ...s.source, fill: _nullishCoalesce(blendPaint(s.source.fill, c.fillColor, t), () => ( null)), stroke: _nullishCoalesce(blendPaint(s.source.stroke, c.strokeColor, t), () => ( null)), fills: void 0, strokes: void 0 };
|
|
9762
9825
|
out.push({ source, path, opacity: s.opacity, order: [outside ? n - k : k, ...s.order] });
|
|
@@ -9831,8 +9894,8 @@ function bevelShapes(shapes, b) {
|
|
|
9831
9894
|
out.push({ source, path: f.path, opacity: s.opacity, order: [...s.order, 1, k] });
|
|
9832
9895
|
});
|
|
9833
9896
|
const [middle] = offsetPaths([s.path], -b.width, "miter", 4, 1, 0);
|
|
9834
|
-
if (_optionalChain([middle, 'optionalAccess',
|
|
9835
|
-
const hasStroke = _optionalChain([s, 'access',
|
|
9897
|
+
if (_optionalChain([middle, 'optionalAccess', _294 => _294.length])) out.push({ ...s, source: fillOnly, path: middle, order: [...s.order, 2] });
|
|
9898
|
+
const hasStroke = _optionalChain([s, 'access', _295 => _295.source, 'access', _296 => _296.strokes, 'optionalAccess', _297 => _297.length]) || s.source.stroke != null && s.source.stroke !== "none";
|
|
9836
9899
|
if (hasStroke) out.push({ ...s, source: { ...s.source, fill: null, fills: void 0 }, order: [...s.order, 3] });
|
|
9837
9900
|
}
|
|
9838
9901
|
return out;
|
|
@@ -9965,10 +10028,10 @@ function vectorEffectInputBounds(node, effectId) {
|
|
|
9965
10028
|
return paths ? pathsBounds(paths) : null;
|
|
9966
10029
|
}
|
|
9967
10030
|
function vectorNodeEnvelope(node) {
|
|
9968
|
-
return _nullishCoalesce(_optionalChain([node, 'optionalAccess',
|
|
10031
|
+
return _nullishCoalesce(_optionalChain([node, 'optionalAccess', _298 => _298.effects, 'optionalAccess', _299 => _299.find, 'call', _300 => _300((e) => e.type === "envelope" && e.enabled !== false)]), () => ( null));
|
|
9969
10032
|
}
|
|
9970
10033
|
function vectorEnvelopeFrame(node, effectId) {
|
|
9971
|
-
const e = effectId ? _optionalChain([node, 'access',
|
|
10034
|
+
const e = effectId ? _optionalChain([node, 'access', _301 => _301.effects, 'optionalAccess', _302 => _302.find, 'call', _303 => _303((x) => x.id === effectId)]) : vectorNodeEnvelope(node);
|
|
9972
10035
|
if (!e || e.type !== "envelope") return null;
|
|
9973
10036
|
const bounds = vectorEffectInputBounds(node, e.id);
|
|
9974
10037
|
if (!bounds || !(bounds.width > 0 && bounds.height > 0)) return null;
|
|
@@ -10029,7 +10092,7 @@ function placement(node) {
|
|
|
10029
10092
|
...node.blendStep ? { blendStep: true } : {},
|
|
10030
10093
|
...node.booleanOperation ? { booleanOperation: node.booleanOperation } : {},
|
|
10031
10094
|
...node.blendMode ? { blendMode: node.blendMode } : {},
|
|
10032
|
-
..._optionalChain([node, 'access',
|
|
10095
|
+
..._optionalChain([node, 'access', _304 => _304.filters, 'optionalAccess', _305 => _305.length]) ? { filters: node.filters } : {}
|
|
10033
10096
|
};
|
|
10034
10097
|
}
|
|
10035
10098
|
function vectorAppearanceNodes(node) {
|
|
@@ -10161,7 +10224,7 @@ function vectorMasterPages(doc) {
|
|
|
10161
10224
|
function fillTokens(node, page, pages) {
|
|
10162
10225
|
const map = (s) => s.replace(/\{page\}/g, String(page)).replace(/\{pages\}/g, String(pages));
|
|
10163
10226
|
if (!/\{pages?\}/.test(node.text)) return node;
|
|
10164
|
-
if (!_optionalChain([node, 'access',
|
|
10227
|
+
if (!_optionalChain([node, 'access', _306 => _306.runs, 'optionalAccess', _307 => _307.length])) return { ...node, text: map(node.text) };
|
|
10165
10228
|
let at2 = 0;
|
|
10166
10229
|
let text = "";
|
|
10167
10230
|
const runs = [];
|
|
@@ -10184,7 +10247,7 @@ function vectorMasterArt(master, page, number, count) {
|
|
|
10184
10247
|
const f = page.frame;
|
|
10185
10248
|
const key = `${page.id}|${f.x}|${f.y}|${f.width}|${f.height}|${number}|${count}`;
|
|
10186
10249
|
let byKey = artCache.get(master);
|
|
10187
|
-
const hit = _optionalChain([byKey, 'optionalAccess',
|
|
10250
|
+
const hit = _optionalChain([byKey, 'optionalAccess', _308 => _308.get, 'call', _309 => _309(key)]);
|
|
10188
10251
|
if (hit) return hit;
|
|
10189
10252
|
const art = master.children.filter((c) => c.visible !== false).map((c) => {
|
|
10190
10253
|
const box = vectorNodeBounds(c);
|
|
@@ -10229,7 +10292,7 @@ function stripVectorMasterArt(doc) {
|
|
|
10229
10292
|
// src/vector/connectors.ts
|
|
10230
10293
|
var SIDES = ["top", "right", "bottom", "left", "center"];
|
|
10231
10294
|
function isVectorConnector(node) {
|
|
10232
|
-
return _optionalChain([node, 'optionalAccess',
|
|
10295
|
+
return _optionalChain([node, 'optionalAccess', _310 => _310.type]) === "path" && !!node.connector;
|
|
10233
10296
|
}
|
|
10234
10297
|
function vectorConnectionSites(nodes, id) {
|
|
10235
10298
|
const node = findVectorNode(nodes, id);
|
|
@@ -10286,7 +10349,7 @@ function facingSite(sites, toward) {
|
|
|
10286
10349
|
}
|
|
10287
10350
|
function storedEnds(node, world) {
|
|
10288
10351
|
const sp = node.subpaths[0];
|
|
10289
|
-
if (!_optionalChain([sp, 'optionalAccess',
|
|
10352
|
+
if (!_optionalChain([sp, 'optionalAccess', _311 => _311.anchors, 'access', _312 => _312.length])) return null;
|
|
10290
10353
|
const a = sp.anchors[0];
|
|
10291
10354
|
const b = sp.anchors[sp.anchors.length - 1];
|
|
10292
10355
|
return [applyMatrix(world, a), applyMatrix(world, b)];
|
|
@@ -10393,8 +10456,8 @@ function routeVectorConnector(nodes, id) {
|
|
|
10393
10456
|
}));
|
|
10394
10457
|
return {
|
|
10395
10458
|
subpaths: [{ closed: false, anchors: local }],
|
|
10396
|
-
startSide: _nullishCoalesce(_optionalChain([s, 'optionalAccess',
|
|
10397
|
-
endSide: _nullishCoalesce(_optionalChain([e, 'optionalAccess',
|
|
10459
|
+
startSide: _nullishCoalesce(_optionalChain([s, 'optionalAccess', _313 => _313.side]), () => ( null)),
|
|
10460
|
+
endSide: _nullishCoalesce(_optionalChain([e, 'optionalAccess', _314 => _314.side]), () => ( null)),
|
|
10398
10461
|
dropped: { start: !!startGlue && !s, end: !!endGlue && !e }
|
|
10399
10462
|
};
|
|
10400
10463
|
}
|
|
@@ -10406,7 +10469,7 @@ function sameSubpaths(a, b) {
|
|
|
10406
10469
|
const o = b[i];
|
|
10407
10470
|
return sp.closed === o.closed && sp.anchors.length === o.anchors.length && sp.anchors.every((p, k) => {
|
|
10408
10471
|
const q = o.anchors[k];
|
|
10409
|
-
return samePoint(p, q) && samePoint(p.in, q.in) && samePoint(p.out, q.out) && (_nullishCoalesce(_optionalChain([p, 'access',
|
|
10472
|
+
return samePoint(p, q) && samePoint(p.in, q.in) && samePoint(p.out, q.out) && (_nullishCoalesce(_optionalChain([p, 'access', _315 => _315.corner, 'optionalAccess', _316 => _316.radius]), () => ( 0))) === (_nullishCoalesce(_optionalChain([q, 'access', _317 => _317.corner, 'optionalAccess', _318 => _318.radius]), () => ( 0)));
|
|
10410
10473
|
});
|
|
10411
10474
|
});
|
|
10412
10475
|
}
|
|
@@ -10685,7 +10748,7 @@ function applyVectorCornersAttribute(subpaths, value) {
|
|
|
10685
10748
|
for (const item of value.trim().split(/\s+/)) {
|
|
10686
10749
|
const m = /^(\d+)\.(\d+):([\d.eE+-]+)(?::([a-z]+))?$/.exec(item);
|
|
10687
10750
|
if (!m) continue;
|
|
10688
|
-
const a = _optionalChain([subpaths, 'access',
|
|
10751
|
+
const a = _optionalChain([subpaths, 'access', _319 => _319[+m[1]], 'optionalAccess', _320 => _320.anchors, 'access', _321 => _321[+m[2]]]);
|
|
10689
10752
|
const radius = parseFloat(m[3]);
|
|
10690
10753
|
if (!a || !(radius > 0)) continue;
|
|
10691
10754
|
const kind = VECTOR_CORNER_KINDS.includes(m[4]) ? m[4] : void 0;
|
|
@@ -10710,7 +10773,7 @@ function vectorPaintToSvg(paint, gradientId, options = {}) {
|
|
|
10710
10773
|
const area2 = bounds2 ? { x: bounds2.x - reach2, y: bounds2.y - reach2, width: bounds2.width + 2 * reach2, height: bounds2.height + 2 * reach2 } : null;
|
|
10711
10774
|
const key2 = `${gradientId}|${_nullishCoalesce(options.role, () => ( "fill"))}|${_nullishCoalesce(options.precision, () => ( 3))}|${area2 ? [area2.x, area2.y, area2.width, area2.height].join(",") : ""}`;
|
|
10712
10775
|
let byKey2 = paintCache.get(paint);
|
|
10713
|
-
const hit = _optionalChain([byKey2, 'optionalAccess',
|
|
10776
|
+
const hit = _optionalChain([byKey2, 'optionalAccess', _322 => _322.get, 'call', _323 => _323(key2)]);
|
|
10714
10777
|
if (hit) return { value: `url(#${gradientId})`, defs: hit };
|
|
10715
10778
|
const defs2 = vectorShadedSvgDefs(paint, gradientId, { bounds: bounds2, area: area2, precision: _nullishCoalesce(options.precision, () => ( 3)) });
|
|
10716
10779
|
if (!byKey2) paintCache.set(paint, byKey2 = /* @__PURE__ */ new Map());
|
|
@@ -10722,7 +10785,7 @@ function vectorPaintToSvg(paint, gradientId, options = {}) {
|
|
|
10722
10785
|
const precision = _nullishCoalesce(options.precision, () => ( 3));
|
|
10723
10786
|
const key = `${gradientId}|${role}|${precision}`;
|
|
10724
10787
|
const owner = _nullishCoalesce(options.node, () => ( paint));
|
|
10725
|
-
const cached = _optionalChain([paintCache, 'access',
|
|
10788
|
+
const cached = _optionalChain([paintCache, 'access', _324 => _324.get, 'call', _325 => _325(owner), 'optionalAccess', _326 => _326.get, 'call', _327 => _327(key)]);
|
|
10726
10789
|
if (cached && (!options.node || (role === "fill" ? options.node.fill : options.node.stroke) === paint)) return { value: `url(#${gradientId})`, defs: cached };
|
|
10727
10790
|
const node = options.node;
|
|
10728
10791
|
const bounds = node ? vectorPathLocalBounds(node) : null;
|
|
@@ -10776,7 +10839,7 @@ function vectorNodeLocalPaintBounds(node) {
|
|
|
10776
10839
|
}
|
|
10777
10840
|
var filterCache = /* @__PURE__ */ new WeakMap();
|
|
10778
10841
|
function vectorNodeFilterSvg(node, id) {
|
|
10779
|
-
if (!_optionalChain([node, 'access',
|
|
10842
|
+
if (!_optionalChain([node, 'access', _328 => _328.filters, 'optionalAccess', _329 => _329.length])) return null;
|
|
10780
10843
|
const hit = filterCache.get(node);
|
|
10781
10844
|
if (hit && hit.id === id) return hit.filter;
|
|
10782
10845
|
const active = activeVectorFilters(node);
|
|
@@ -10862,7 +10925,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
10862
10925
|
if (node.type === "path" && node.lens) out2 += ` data-vector-lens="${escapeAttr2(JSON.stringify(node.lens))}"`;
|
|
10863
10926
|
const blend = vectorBlendModeCss(node.blendMode);
|
|
10864
10927
|
if (blend) out2 += ` style="mix-blend-mode:${blend}"`;
|
|
10865
|
-
if (_optionalChain([node, 'access',
|
|
10928
|
+
if (_optionalChain([node, 'access', _330 => _330.filters, 'optionalAccess', _331 => _331.length])) {
|
|
10866
10929
|
const filter = vectorNodeFilterSvg(node, `${prefix}filter-${node.id}`);
|
|
10867
10930
|
const data = ` data-vector-filters="${escapeAttr2(JSON.stringify(node.filters))}"`;
|
|
10868
10931
|
if (filter) {
|
|
@@ -10909,7 +10972,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
10909
10972
|
let out2 = ` stroke="${escapeAttr2(strokeValue)}" stroke-width="${num3(width)}"`;
|
|
10910
10973
|
if (node.strokeLinecap && node.strokeLinecap !== "butt") out2 += ` stroke-linecap="${node.strokeLinecap}"`;
|
|
10911
10974
|
if (node.strokeLinejoin && node.strokeLinejoin !== "miter") out2 += ` stroke-linejoin="${node.strokeLinejoin}"`;
|
|
10912
|
-
if (_optionalChain([node, 'access',
|
|
10975
|
+
if (_optionalChain([node, 'access', _332 => _332.strokeDasharray, 'optionalAccess', _333 => _333.length])) out2 += ` stroke-dasharray="${node.strokeDasharray.map(num3).join(" ")}"`;
|
|
10913
10976
|
return out2;
|
|
10914
10977
|
};
|
|
10915
10978
|
const liveCorners = (node) => {
|
|
@@ -10958,7 +11021,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
10958
11021
|
};
|
|
10959
11022
|
const emit2 = (node, depth) => {
|
|
10960
11023
|
if (node.visible === false && !options.includeHidden) return;
|
|
10961
|
-
const wrappers = _nullishCoalesce(_optionalChain([options, 'access',
|
|
11024
|
+
const wrappers = _nullishCoalesce(_optionalChain([options, 'access', _334 => _334.wrap, 'optionalAccess', _335 => _335[node.id]]), () => ( []));
|
|
10962
11025
|
wrappers.forEach((w2, i) => {
|
|
10963
11026
|
let attrs = w2.id !== void 0 ? ` id="${escapeAttr2(w2.id)}"` : "";
|
|
10964
11027
|
if (w2.transform) attrs += ` transform="${escapeAttr2(w2.transform)}"`;
|
|
@@ -10979,7 +11042,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
10979
11042
|
};
|
|
10980
11043
|
const emitMaskGroup = (node, depth) => {
|
|
10981
11044
|
const [source, ...contents] = node.children;
|
|
10982
|
-
const body = _optionalChain([node, 'access',
|
|
11045
|
+
const body = _optionalChain([node, 'access', _336 => _336.effects, 'optionalAccess', _337 => _337.length]) && contents.length ? [{ id: `${node.id}~content`, type: "group", effects: node.effects, children: contents }] : contents;
|
|
10983
11046
|
const settings = { type: node.mask.type, ...node.mask.invert ? { invert: true } : {} };
|
|
10984
11047
|
lines.push(`${indent(depth)}<g${common(node)} data-vector-mask="${escapeAttr2(JSON.stringify(settings))}">`);
|
|
10985
11048
|
const mask = vectorMaskRenderData(node, `${prefix}mask-${node.id}`, `${prefix}mask-filter-${node.id}`, precision);
|
|
@@ -10996,7 +11059,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
10996
11059
|
lines.push(`${indent(depth + 1)}<g data-vector-part="mask-source" display="none">`);
|
|
10997
11060
|
emitNode(source, depth + 2);
|
|
10998
11061
|
lines.push(`${indent(depth + 1)}</g>`);
|
|
10999
|
-
if (_optionalChain([mask, 'optionalAccess',
|
|
11062
|
+
if (_optionalChain([mask, 'optionalAccess', _338 => _338.clip])) {
|
|
11000
11063
|
defs.push(`<clipPath id="${escapeAttr2(mask.id)}">${mask.clip.map((c) => `<path d="${c.d}" clip-rule="${c.clipRule}"/>`).join("")}</clipPath>`);
|
|
11001
11064
|
ref = ` clip-path="url(#${escapeAttr2(mask.id)})"`;
|
|
11002
11065
|
}
|
|
@@ -11008,7 +11071,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
11008
11071
|
};
|
|
11009
11072
|
const emitTextElement = (node, depth, attrs) => {
|
|
11010
11073
|
const geometry = vectorTextGeometryNode(node);
|
|
11011
|
-
const fields = { text: node.text, font: node.font, ..._optionalChain([node, 'access',
|
|
11074
|
+
const fields = { text: node.text, font: node.font, ..._optionalChain([node, 'access', _339 => _339.runs, 'optionalAccess', _340 => _340.length]) ? { runs: node.runs } : {}, ...node.paragraph ? { paragraph: node.paragraph } : {}, frame: node.frame, ...node.orientation ? { orientation: node.orientation } : {}, ..._optionalChain([node, 'access', _341 => _341.effects, 'optionalAccess', _342 => _342.length]) ? { effects: node.effects } : {} };
|
|
11012
11075
|
let data = ` data-vector-text="${escapeAttr2(JSON.stringify(fields))}"`;
|
|
11013
11076
|
if (hasVectorPaintStacks(node)) data += ` data-vector-fills="${escapeAttr2(JSON.stringify(vectorFills(node)))}" data-vector-strokes="${escapeAttr2(JSON.stringify(vectorStrokes(node)))}"`;
|
|
11014
11077
|
else {
|
|
@@ -11050,12 +11113,12 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
11050
11113
|
};
|
|
11051
11114
|
const emitText = (node, depth) => {
|
|
11052
11115
|
const outlines = vectorTextPaths(node).outlines;
|
|
11053
|
-
const effects = !!_optionalChain([node, 'access',
|
|
11116
|
+
const effects = !!_optionalChain([node, 'access', _343 => _343.effects, 'optionalAccess', _344 => _344.some, 'call', _345 => _345((e) => e.enabled !== false)]);
|
|
11054
11117
|
if (!outlines || !effects && options.text !== "outlines") {
|
|
11055
11118
|
emitTextElement(node, depth, common(node));
|
|
11056
11119
|
return;
|
|
11057
11120
|
}
|
|
11058
|
-
lines.push(`${indent(depth)}<g${common(node)} data-vector-live="${escapeAttr2(JSON.stringify({ kind: "text", ..._optionalChain([node, 'access',
|
|
11121
|
+
lines.push(`${indent(depth)}<g${common(node)} data-vector-live="${escapeAttr2(JSON.stringify({ kind: "text", ..._optionalChain([node, 'access', _346 => _346.effects, 'optionalAccess', _347 => _347.length]) ? { effects: node.effects } : {} }))}">`);
|
|
11059
11122
|
lines.push(`${indent(depth + 1)}<g data-vector-part="appearance">`);
|
|
11060
11123
|
for (const shape of vectorAppearanceNodes(node)) emit2(shape, depth + 2);
|
|
11061
11124
|
lines.push(`${indent(depth + 1)}</g>`);
|
|
@@ -11069,7 +11132,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
11069
11132
|
const symbolRef = (symbolId) => {
|
|
11070
11133
|
const hit = symbolIds.get(symbolId);
|
|
11071
11134
|
if (hit) return hit;
|
|
11072
|
-
const sym2 = _optionalChain([doc, 'access',
|
|
11135
|
+
const sym2 = _optionalChain([doc, 'access', _348 => _348.symbols, 'optionalAccess', _349 => _349.find, 'call', _350 => _350((x) => x.id === symbolId)]);
|
|
11073
11136
|
if (!sym2) return null;
|
|
11074
11137
|
const id = `${prefix}symbol-${symbolId}`;
|
|
11075
11138
|
symbolIds.set(symbolId, id);
|
|
@@ -11079,20 +11142,20 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
11079
11142
|
};
|
|
11080
11143
|
const emitInstance = (node, depth) => {
|
|
11081
11144
|
const data = { symbolId: node.symbolId, ...node.scaleStrokes === false ? { scaleStrokes: false } : {}, ...node.overrides ? { overrides: node.overrides } : {} };
|
|
11082
|
-
const exact2 = !node.overrides && node.scaleStrokes !== false && !_optionalChain([node, 'access',
|
|
11145
|
+
const exact2 = !node.overrides && node.scaleStrokes !== false && !_optionalChain([node, 'access', _351 => _351.effects, 'optionalAccess', _352 => _352.length]) && !_optionalChain([node, 'access', _353 => _353.filters, 'optionalAccess', _354 => _354.length]);
|
|
11083
11146
|
const ref = symbolRef(node.symbolId);
|
|
11084
11147
|
if (exact2 && ref) {
|
|
11085
11148
|
lines.push(`${indent(depth)}<use${common(node)} href="#${escapeAttr2(ref)}" data-vector-instance="${escapeAttr2(JSON.stringify(data))}"/>`);
|
|
11086
11149
|
return;
|
|
11087
11150
|
}
|
|
11088
|
-
const full = { ...data, ...node.transform ? { transform: node.transform } : {}, ..._optionalChain([node, 'access',
|
|
11151
|
+
const full = { ...data, ...node.transform ? { transform: node.transform } : {}, ..._optionalChain([node, 'access', _355 => _355.effects, 'optionalAccess', _356 => _356.length]) ? { effects: node.effects } : {} };
|
|
11089
11152
|
lines.push(`${indent(depth)}<g data-vector-instance="${escapeAttr2(JSON.stringify(full))}">`);
|
|
11090
11153
|
emitNode(vectorInstanceDrawn(node), depth + 1);
|
|
11091
11154
|
lines.push(`${indent(depth)}</g>`);
|
|
11092
11155
|
};
|
|
11093
11156
|
const emitFrame = (node, depth) => {
|
|
11094
11157
|
const f = node.frame;
|
|
11095
|
-
const data = { ...f, ..._optionalChain([node, 'access',
|
|
11158
|
+
const data = { ...f, ..._optionalChain([node, 'access', _357 => _357.effects, 'optionalAccess', _358 => _358.length]) ? { effects: node.effects } : {} };
|
|
11096
11159
|
lines.push(`${indent(depth)}<g${common(node)} data-vector-frame="${escapeAttr2(JSON.stringify(data))}">`);
|
|
11097
11160
|
const rect = vectorFrameRectPath(f);
|
|
11098
11161
|
if (f.fill !== void 0 && f.fill !== null && f.fill !== "none") {
|
|
@@ -11107,7 +11170,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
11107
11170
|
ref = ` clip-path="url(#${escapeAttr2(id)})"`;
|
|
11108
11171
|
}
|
|
11109
11172
|
lines.push(`${indent(depth + 1)}<g data-vector-part="frame-contents"${ref}>`);
|
|
11110
|
-
if (_optionalChain([node, 'access',
|
|
11173
|
+
if (_optionalChain([node, 'access', _359 => _359.masterArt, 'optionalAccess', _360 => _360.length])) {
|
|
11111
11174
|
lines.push(`${indent(depth + 2)}<g data-vector-part="frame-master">`);
|
|
11112
11175
|
for (const child of node.masterArt) emit2(child, depth + 3);
|
|
11113
11176
|
lines.push(`${indent(depth + 2)}</g>`);
|
|
@@ -11136,7 +11199,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
11136
11199
|
if (hasOwnVectorAppearance(node)) {
|
|
11137
11200
|
const live2 = {
|
|
11138
11201
|
kind: node.type,
|
|
11139
|
-
..._optionalChain([node, 'access',
|
|
11202
|
+
..._optionalChain([node, 'access', _361 => _361.effects, 'optionalAccess', _362 => _362.length]) ? { effects: node.effects } : {},
|
|
11140
11203
|
...node.type === "group" && node.liveBoolean ? { liveBoolean: node.liveBoolean } : {},
|
|
11141
11204
|
...node.type === "group" && node.symmetry ? { symmetry: node.symmetry } : {}
|
|
11142
11205
|
};
|
|
@@ -11187,7 +11250,7 @@ function vectorDocumentToSvg(doc, options = {}) {
|
|
|
11187
11250
|
data += ` data-vector-width-profile="${widthProfileToAttribute(profile)}"`;
|
|
11188
11251
|
if (node.strokeLinecap && node.strokeLinecap !== "butt") data += ` data-vector-stroke-linecap="${node.strokeLinecap}"`;
|
|
11189
11252
|
if (node.strokeLinejoin && node.strokeLinejoin !== "miter") data += ` data-vector-stroke-linejoin="${node.strokeLinejoin}"`;
|
|
11190
|
-
if (_optionalChain([node, 'access',
|
|
11253
|
+
if (_optionalChain([node, 'access', _363 => _363.strokeDasharray, 'optionalAccess', _364 => _364.length])) data += ` data-vector-stroke-dasharray="${node.strokeDasharray.map(num3).join(" ")}"`;
|
|
11191
11254
|
}
|
|
11192
11255
|
lines.push(`${indent(depth)}<g${common(node)}${data}>`);
|
|
11193
11256
|
lines.push(`${indent(depth + 1)}<path data-vector-part="fill" d="${d}"${fillAttrs}${live}/>`);
|
|
@@ -11368,7 +11431,7 @@ function readStyle(el, parent, cssRules) {
|
|
|
11368
11431
|
const { mixBlendMode: _m, filter: _f, ...inherited } = parent;
|
|
11369
11432
|
const out = { ...inherited };
|
|
11370
11433
|
for (const [attr, key] of Object.entries(STYLE_KEYS)) if (el.attrs[attr] !== void 0) out[key] = el.attrs[attr].trim();
|
|
11371
|
-
if (_optionalChain([cssRules, 'optionalAccess',
|
|
11434
|
+
if (_optionalChain([cssRules, 'optionalAccess', _365 => _365.length])) {
|
|
11372
11435
|
for (const rule of cssRules) {
|
|
11373
11436
|
if (matchesSelector(el, rule.selector)) {
|
|
11374
11437
|
for (const [prop, val] of Object.entries(rule.properties)) {
|
|
@@ -11424,7 +11487,7 @@ function attrOrStyle(el, name) {
|
|
|
11424
11487
|
return el.attrs[name];
|
|
11425
11488
|
}
|
|
11426
11489
|
function urlId(value) {
|
|
11427
|
-
return _nullishCoalesce(_optionalChain([/^url\(\s*['"]?#([^'")\s]+)['"]?\s*\)/, 'access',
|
|
11490
|
+
return _nullishCoalesce(_optionalChain([/^url\(\s*['"]?#([^'")\s]+)['"]?\s*\)/, 'access', _366 => _366.exec, 'call', _367 => _367((_nullishCoalesce(value, () => ( ""))).trim()), 'optionalAccess', _368 => _368[1]]), () => ( null));
|
|
11428
11491
|
}
|
|
11429
11492
|
function clipRulesAsFillRules(el) {
|
|
11430
11493
|
const attrs = { ...el.attrs };
|
|
@@ -11489,9 +11552,9 @@ function resolveGradient(id, raw) {
|
|
|
11489
11552
|
for (let el = first; el && !chain.includes(el) && chain.length < 32; ) {
|
|
11490
11553
|
chain.push(el);
|
|
11491
11554
|
const href = _nullishCoalesce(el.attrs.href, () => ( el.attrs["xlink:href"]));
|
|
11492
|
-
el = _optionalChain([href, 'optionalAccess',
|
|
11555
|
+
el = _optionalChain([href, 'optionalAccess', _369 => _369.startsWith, 'call', _370 => _370("#")]) ? raw.get(href.slice(1)) : void 0;
|
|
11493
11556
|
}
|
|
11494
|
-
const attr = (name) => _optionalChain([chain, 'access',
|
|
11557
|
+
const attr = (name) => _optionalChain([chain, 'access', _371 => _371.find, 'call', _372 => _372((el) => el.attrs[name] !== void 0), 'optionalAccess', _373 => _373.attrs, 'access', _374 => _374[name]]);
|
|
11495
11558
|
const stops = _nullishCoalesce(chain.map(readStops).find((s) => s.length), () => ( []));
|
|
11496
11559
|
if (!stops.length) return null;
|
|
11497
11560
|
const user = attr("gradientUnits") === "userSpaceOnUse";
|
|
@@ -11663,7 +11726,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11663
11726
|
const stackedPath = (g, _style, m, meta) => {
|
|
11664
11727
|
const fillEl = g.children.find((c) => c.name === "path" && c.attrs["data-vector-part"] === "fill");
|
|
11665
11728
|
const subpaths = fillEl ? shapeOf(fillEl) : null;
|
|
11666
|
-
if (!_optionalChain([subpaths, 'optionalAccess',
|
|
11729
|
+
if (!_optionalChain([subpaths, 'optionalAccess', _375 => _375.length])) return null;
|
|
11667
11730
|
const parse = (v2) => {
|
|
11668
11731
|
try {
|
|
11669
11732
|
return v2 ? JSON.parse(v2) : [];
|
|
@@ -11682,7 +11745,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11682
11745
|
const key = (n) => JSON.stringify([n.subpaths, _nullishCoalesce(n.transform, () => ( null)), _nullishCoalesce(n.opacity, () => ( 1)), n.visible !== false, _nullishCoalesce(n.filters, () => ( null)), _nullishCoalesce(n.blendMode, () => ( "normal")), _nullishCoalesce(n.fillRule, () => ( "nonzero")), _nullishCoalesce(n.booleanOperation, () => ( null))]);
|
|
11683
11746
|
for (const n of nodes2) {
|
|
11684
11747
|
const prev = out[out.length - 1];
|
|
11685
|
-
if (_optionalChain([prev, 'optionalAccess',
|
|
11748
|
+
if (_optionalChain([prev, 'optionalAccess', _376 => _376.type]) === "path" && n.type === "path" && key(prev) === key(n)) {
|
|
11686
11749
|
const fills = vectorFills(n);
|
|
11687
11750
|
const strokesBefore = vectorStrokes(prev);
|
|
11688
11751
|
if (!(fills.length && strokesBefore.length)) {
|
|
@@ -11700,7 +11763,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11700
11763
|
const part = (name) => g.children.find((c) => c.name === "path" && c.attrs["data-vector-part"] === name);
|
|
11701
11764
|
const fillEl = part("fill");
|
|
11702
11765
|
const subpaths = fillEl ? shapeOf(fillEl) : null;
|
|
11703
|
-
if (!fillEl || !_optionalChain([subpaths, 'optionalAccess',
|
|
11766
|
+
if (!fillEl || !_optionalChain([subpaths, 'optionalAccess', _377 => _377.length])) return null;
|
|
11704
11767
|
const a = g.attrs;
|
|
11705
11768
|
const fs = readStyle(fillEl, style, styleRules);
|
|
11706
11769
|
const strokeEl = part("stroke");
|
|
@@ -11737,7 +11800,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11737
11800
|
...profile.length ? { strokeWidthProfile: profile } : {},
|
|
11738
11801
|
...keptCap ? { strokeLinecap: keptCap } : {},
|
|
11739
11802
|
...keptJoin ? { strokeLinejoin: keptJoin } : {},
|
|
11740
|
-
..._optionalChain([keptDash, 'optionalAccess',
|
|
11803
|
+
..._optionalChain([keptDash, 'optionalAccess', _378 => _378.length]) ? { strokeDasharray: keptDash } : {}
|
|
11741
11804
|
};
|
|
11742
11805
|
return placed(node, m);
|
|
11743
11806
|
};
|
|
@@ -11802,8 +11865,8 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11802
11865
|
} else {
|
|
11803
11866
|
const fill = json2(g.attrs["data-vector-fill"]);
|
|
11804
11867
|
const stroke = json2(g.attrs["data-vector-stroke"]);
|
|
11805
|
-
node.fill = fill == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call',
|
|
11806
|
-
node.stroke = stroke == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call',
|
|
11868
|
+
node.fill = fill == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call', _379 => _379([{ paint: fill }]), 'access', _380 => _380[0], 'optionalAccess', _381 => _381.paint]), () => ( null));
|
|
11869
|
+
node.stroke = stroke == null ? null : _nullishCoalesce(_optionalChain([sanitizeVectorFills, 'call', _382 => _382([{ paint: stroke }]), 'access', _383 => _383[0], 'optionalAccess', _384 => _384.paint]), () => ( null));
|
|
11807
11870
|
const settings = json2(g.attrs["data-vector-stroke-settings"]);
|
|
11808
11871
|
if (settings && typeof settings === "object") {
|
|
11809
11872
|
const strokes = sanitizeVectorStrokes([{ paint: _nullishCoalesce(node.stroke, () => ( "#000")), ...settings }]);
|
|
@@ -11839,8 +11902,8 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11839
11902
|
const anchor = attrOrStyle(el, "text-anchor");
|
|
11840
11903
|
const first0 = (v2) => _nullishCoalesce(numberList(v2)[0], () => ( 0));
|
|
11841
11904
|
const tspan = el.children.find((c) => c.name === "tspan");
|
|
11842
|
-
const x = el.attrs.x !== void 0 ? first0(el.attrs.x) : first0(_optionalChain([tspan, 'optionalAccess',
|
|
11843
|
-
const y = el.attrs.y !== void 0 ? first0(el.attrs.y) : first0(_optionalChain([tspan, 'optionalAccess',
|
|
11905
|
+
const x = el.attrs.x !== void 0 ? first0(el.attrs.x) : first0(_optionalChain([tspan, 'optionalAccess', _385 => _385.attrs, 'access', _386 => _386.x]));
|
|
11906
|
+
const y = el.attrs.y !== void 0 ? first0(el.attrs.y) : first0(_optionalChain([tspan, 'optionalAccess', _387 => _387.attrs, 'access', _388 => _388.y]));
|
|
11844
11907
|
const fillValue = _nullishCoalesce(attrOrStyle(el, "fill"), () => ( style.fill));
|
|
11845
11908
|
let node = {
|
|
11846
11909
|
id: idFor(el),
|
|
@@ -11871,12 +11934,12 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11871
11934
|
if (symbolOfElement.has(el)) return symbolOfElement.get(el);
|
|
11872
11935
|
symbolOfElement.set(el, null);
|
|
11873
11936
|
const own = json2(el.attrs["data-vector-symbol"]);
|
|
11874
|
-
let id = typeof _optionalChain([own, 'optionalAccess',
|
|
11937
|
+
let id = typeof _optionalChain([own, 'optionalAccess', _389 => _389.id]) === "string" && own.id ? own.id : _nullishCoalesce(el.attrs.id, () => ( createId()));
|
|
11875
11938
|
while (usedSymbolIds.has(id)) id = `${id}-${usedSymbolIds.size}`;
|
|
11876
11939
|
usedSymbolIds.add(id);
|
|
11877
11940
|
const style = readStyle(el, rootStyle, styleRules);
|
|
11878
11941
|
const nodes2 = el.name === "symbol" ? visit2(el, style, IDENTITY_MATRIX) : visitOne({ ...el, attrs: { ...el.attrs, transform: "" } }, rootStyle, parseSvgTransform(el.attrs.transform));
|
|
11879
|
-
symbols.push({ id, name: typeof _optionalChain([own, 'optionalAccess',
|
|
11942
|
+
symbols.push({ id, name: typeof _optionalChain([own, 'optionalAccess', _390 => _390.name]) === "string" && own.name ? own.name : _nullishCoalesce(el.attrs.id, () => ( "Symbol")), nodes: nodes2 });
|
|
11880
11943
|
symbolOfElement.set(el, id);
|
|
11881
11944
|
return id;
|
|
11882
11945
|
};
|
|
@@ -11888,13 +11951,13 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11888
11951
|
if (!symbolId) return null;
|
|
11889
11952
|
const own = json2(el.attrs["data-vector-instance"]);
|
|
11890
11953
|
const place3 = multiplyMatrices(translateMatrix(length(el.attrs.x), length(el.attrs.y)), m);
|
|
11891
|
-
const node = { id: idFor(el), type: "instance", ...meta, symbolId, ..._optionalChain([own, 'optionalAccess',
|
|
11954
|
+
const node = { id: idFor(el), type: "instance", ...meta, symbolId, ..._optionalChain([own, 'optionalAccess', _391 => _391.scaleStrokes]) === false ? { scaleStrokes: false } : {}, ..._optionalChain([own, 'optionalAccess', _392 => _392.overrides]) ? { overrides: own.overrides } : {} };
|
|
11892
11955
|
return isIdentityMatrix(place3) ? node : { ...node, transform: place3 };
|
|
11893
11956
|
};
|
|
11894
11957
|
const ownInstance = (g, m, meta) => {
|
|
11895
11958
|
const raw = json2(g.attrs["data-vector-instance"]);
|
|
11896
11959
|
if (!raw || typeof raw.symbolId !== "string") return null;
|
|
11897
|
-
const sym2 = [...byId.values()].find((e) => e.name === "symbol" && _optionalChain([json2, 'call',
|
|
11960
|
+
const sym2 = [...byId.values()].find((e) => e.name === "symbol" && _optionalChain([json2, 'call', _393 => _393(e.attrs["data-vector-symbol"]), 'optionalAccess', _394 => _394.id]) === raw.symbolId);
|
|
11898
11961
|
const symbolId = sym2 ? symbolFor(sym2) : raw.symbolId;
|
|
11899
11962
|
if (!symbolId) return null;
|
|
11900
11963
|
const t = Array.isArray(raw.transform) && raw.transform.length === 6 && raw.transform.every(Number.isFinite) ? raw.transform : IDENTITY_MATRIX;
|
|
@@ -11902,7 +11965,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11902
11965
|
const drawn = g.children.find((c) => c.name === "g");
|
|
11903
11966
|
const effects = sanitizeVectorEffects(raw.effects);
|
|
11904
11967
|
const node = {
|
|
11905
|
-
id: _nullishCoalesce(_optionalChain([drawn, 'optionalAccess',
|
|
11968
|
+
id: _nullishCoalesce(_optionalChain([drawn, 'optionalAccess', _395 => _395.attrs, 'access', _396 => _396.id]), () => ( idFor(g))),
|
|
11906
11969
|
type: "instance",
|
|
11907
11970
|
...meta,
|
|
11908
11971
|
symbolId,
|
|
@@ -11959,12 +12022,12 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11959
12022
|
const masked = (el, nodes2, m) => {
|
|
11960
12023
|
let out = nodes2;
|
|
11961
12024
|
const clipEl = rawMasks.get(_nullishCoalesce(urlId(attrOrStyle(el, "clip-path")), () => ( "")));
|
|
11962
|
-
if (_optionalChain([clipEl, 'optionalAccess',
|
|
12025
|
+
if (_optionalChain([clipEl, 'optionalAccess', _397 => _397.name]) === "clipPath") {
|
|
11963
12026
|
const source = maskNode(clipEl, m, out, clipEl.attrs.clipPathUnits);
|
|
11964
12027
|
if (source) out = [{ id: idFor({ name: "g", attrs: {}, children: [] }), type: "group", name: "Clip Group", mask: { type: "clip" }, children: [source, ...out] }];
|
|
11965
12028
|
}
|
|
11966
12029
|
const maskEl = rawMasks.get(_nullishCoalesce(urlId(attrOrStyle(el, "mask")), () => ( "")));
|
|
11967
|
-
if (_optionalChain([maskEl, 'optionalAccess',
|
|
12030
|
+
if (_optionalChain([maskEl, 'optionalAccess', _398 => _398.name]) === "mask") {
|
|
11968
12031
|
const source = maskNode(maskEl, m, out, maskEl.attrs.maskContentUnits);
|
|
11969
12032
|
const type = attrOrStyle(maskEl, "mask-type") === "alpha" ? "alpha" : "luminance";
|
|
11970
12033
|
if (source) out = [{ id: idFor({ name: "g", attrs: {}, children: [] }), type: "group", name: "Opacity Mask", mask: { type }, children: [source, ...out] }];
|
|
@@ -11986,19 +12049,19 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
11986
12049
|
let sourceEl = part("mask-source");
|
|
11987
12050
|
if (!sourceEl) {
|
|
11988
12051
|
const el = rawMasks.get(_nullishCoalesce(urlId(maskedEl.attrs.mask), () => ( "")));
|
|
11989
|
-
const invert2 = _optionalChain([el, 'optionalAccess',
|
|
12052
|
+
const invert2 = _optionalChain([el, 'optionalAccess', _399 => _399.children, 'access', _400 => _400.find, 'call', _401 => _401((c) => c.name === "g" && c.attrs["data-vector-part"] === "mask-invert")]);
|
|
11990
12053
|
sourceEl = _nullishCoalesce(invert2, () => ( el));
|
|
11991
12054
|
}
|
|
11992
12055
|
const source = sourceEl ? visit2(sourceEl, style, m)[0] : void 0;
|
|
11993
12056
|
let contents = visit2(maskedEl, style, m);
|
|
11994
12057
|
let effects;
|
|
11995
12058
|
const wrapper = contents.length === 1 && contents[0].type === "group" && contents[0].id === `${id}~content` ? contents[0] : null;
|
|
11996
|
-
if (_optionalChain([wrapper, 'optionalAccess',
|
|
12059
|
+
if (_optionalChain([wrapper, 'optionalAccess', _402 => _402.type]) === "group") {
|
|
11997
12060
|
effects = _nullishCoalesce(wrapper.effects, () => ( void 0));
|
|
11998
12061
|
contents = wrapper.children;
|
|
11999
12062
|
}
|
|
12000
12063
|
if (!source) return contents.length ? { id, type: "group", ...meta, children: contents } : null;
|
|
12001
|
-
return { id, type: "group", ...meta, mask, ..._optionalChain([effects, 'optionalAccess',
|
|
12064
|
+
return { id, type: "group", ...meta, mask, ..._optionalChain([effects, 'optionalAccess', _403 => _403.length]) ? { effects } : {}, children: [source, ...contents] };
|
|
12002
12065
|
};
|
|
12003
12066
|
const frameGroup = (g, style, m, meta) => {
|
|
12004
12067
|
const raw = parseJson(g.attrs["data-vector-frame"]);
|
|
@@ -12010,7 +12073,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
12010
12073
|
const { rigid, residual } = decomposeRigid(m);
|
|
12011
12074
|
const r = _chunkGF2RBSDMcjs.bezierPathBounds.call(void 0, _chunkGF2RBSDMcjs.transformBezierPath.call(void 0, subpathsToBezier(vectorFrameRectPath(frame)), residual));
|
|
12012
12075
|
const back = invertMatrix(rigid);
|
|
12013
|
-
const effects = sanitizeVectorEffects(_optionalChain([raw, 'optionalAccess',
|
|
12076
|
+
const effects = sanitizeVectorEffects(_optionalChain([raw, 'optionalAccess', _404 => _404.effects]));
|
|
12014
12077
|
return {
|
|
12015
12078
|
id,
|
|
12016
12079
|
type: "group",
|
|
@@ -12482,13 +12545,13 @@ function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, opt
|
|
|
12482
12545
|
}
|
|
12483
12546
|
if (isVectorMaskGroup(node)) {
|
|
12484
12547
|
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
12485
|
-
const entered = !!_optionalChain([options, 'access',
|
|
12548
|
+
const entered = !!_optionalChain([options, 'access', _405 => _405.entered, 'optionalAccess', _406 => _406.has, 'call', _407 => _407(node.id)]);
|
|
12486
12549
|
if (!entered && isVectorMaskActive(node) && !vectorMaskContains(node, applyMatrix(invertMatrix(m), p), tolerance)) return false;
|
|
12487
12550
|
const shown = !entered && hasOwnVectorAppearance(node) ? expandVectorAppearance(node).children : node.children;
|
|
12488
12551
|
for (let i = shown.length - 1; i >= 1; i--) if (hitTestVectorNode(shown[i], p, tolerance, m, options)) return true;
|
|
12489
12552
|
return entered && hitTestVectorMaskSource(node, p, tolerance, m, options);
|
|
12490
12553
|
}
|
|
12491
|
-
if (!(node.type === "group" && (!hasOwnVectorAppearance(node) || _optionalChain([options, 'access',
|
|
12554
|
+
if (!(node.type === "group" && (!hasOwnVectorAppearance(node) || _optionalChain([options, 'access', _408 => _408.entered, 'optionalAccess', _409 => _409.has, 'call', _410 => _410(node.id)])))) node = expandVectorAppearance(node);
|
|
12492
12555
|
if (node.type === "group") {
|
|
12493
12556
|
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
12494
12557
|
return node.children.some((c) => hitTestVectorNode(c, p, tolerance, m, options));
|
|
@@ -12500,7 +12563,7 @@ function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, opt
|
|
|
12500
12563
|
function hitTestVectorMaskSource(group, p, tolerance, m, options) {
|
|
12501
12564
|
const source = group.children[0];
|
|
12502
12565
|
if (source.visible === false) return false;
|
|
12503
|
-
if (_optionalChain([group, 'access',
|
|
12566
|
+
if (_optionalChain([group, 'access', _411 => _411.mask, 'optionalAccess', _412 => _412.type]) !== "clip") return hitTestVectorNode(source, p, tolerance, m, options);
|
|
12504
12567
|
const paths = collectPathNodes(source).filter((n) => n.visible !== false);
|
|
12505
12568
|
const pt2 = [p.x, p.y];
|
|
12506
12569
|
return paths.some((n) => {
|
|
@@ -12549,24 +12612,24 @@ function mapAnchor(a, m) {
|
|
|
12549
12612
|
}
|
|
12550
12613
|
function bakeIntoGeometry(node, m) {
|
|
12551
12614
|
if (isIdentityMatrix(m)) return node;
|
|
12552
|
-
if (_optionalChain([node, 'access',
|
|
12615
|
+
if (_optionalChain([node, 'access', _413 => _413.effects, 'optionalAccess', _414 => _414.length])) node = { ...node, effects: transformVectorEffects(node.effects, m, node) };
|
|
12553
12616
|
if (isVectorFrame(node)) return bakeFrame(node, m);
|
|
12554
12617
|
if (node.type === "group") {
|
|
12555
12618
|
const group = node;
|
|
12556
12619
|
const children = group.children.map((c) => transformVectorNode(c, m));
|
|
12557
12620
|
const sym2 = group.symmetry ? { symmetry: transformVectorSymmetry(group.symmetry, m) } : {};
|
|
12558
|
-
const spine = _optionalChain([group, 'access',
|
|
12621
|
+
const spine = _optionalChain([group, 'access', _415 => _415.blend, 'optionalAccess', _416 => _416.spine]);
|
|
12559
12622
|
if (!spine) return { ...group, ...sym2, children };
|
|
12560
12623
|
const moved = { closed: spine.closed, anchors: spine.anchors.map((a) => mapAnchor(a, m)) };
|
|
12561
12624
|
return { ...group, children, blend: { ...group.blend, spine: moved } };
|
|
12562
12625
|
}
|
|
12563
12626
|
const path = node.type === "text" ? bakeVectorTextGeometry(node, m) : node;
|
|
12564
12627
|
const flips = m[0] * m[3] - m[1] * m[2] < 0;
|
|
12565
|
-
const mirrored = flips && _optionalChain([path, 'access',
|
|
12628
|
+
const mirrored = flips && _optionalChain([path, 'access', _417 => _417.strokeWidthProfile, 'optionalAccess', _418 => _418.length]);
|
|
12566
12629
|
const layer = (l) => ({
|
|
12567
12630
|
...l,
|
|
12568
12631
|
...isVectorGradient(l.paint) || isVectorShadedPaint(l.paint) ? { paint: transformVectorPaint(l.paint, m) } : {},
|
|
12569
|
-
...flips && _optionalChain([l, 'access',
|
|
12632
|
+
...flips && _optionalChain([l, 'access', _419 => _419.strokeWidthProfile, 'optionalAccess', _420 => _420.length]) ? { strokeWidthProfile: mirrorWidthProfile(l.strokeWidthProfile) } : {}
|
|
12570
12633
|
});
|
|
12571
12634
|
return {
|
|
12572
12635
|
...path,
|
|
@@ -12801,7 +12864,7 @@ function roundSubpaths(subpaths, precision = 3) {
|
|
|
12801
12864
|
|
|
12802
12865
|
// src/vector/symmetry.ts
|
|
12803
12866
|
function isVectorSymmetryGroup(node) {
|
|
12804
|
-
return _optionalChain([node, 'optionalAccess',
|
|
12867
|
+
return _optionalChain([node, 'optionalAccess', _421 => _421.type]) === "group" && !!node.symmetry && !node.blend && !node.liveBoolean && !node.mask && !node.frame;
|
|
12805
12868
|
}
|
|
12806
12869
|
var rad = (deg) => deg * Math.PI / 180;
|
|
12807
12870
|
var exact = (v2) => Math.abs(v2) < 1e-12 ? 0 : v2;
|
|
@@ -13444,4 +13507,8 @@ function transformVectorSymmetry(s, m) {
|
|
|
13444
13507
|
|
|
13445
13508
|
|
|
13446
13509
|
|
|
13447
|
-
exports.isVectorMeshGradient = isVectorMeshGradient; exports.isVectorFreeformGradient = isVectorFreeformGradient; exports.isVectorShadedPaint = isVectorShadedPaint; exports.vectorRgbaToCss = vectorRgbaToCss; exports.VECTOR_MESH_MAX = VECTOR_MESH_MAX; exports.createVectorMeshGradient = createVectorMeshGradient; exports.vectorMeshPointAt = vectorMeshPointAt; exports.vectorMeshColorAt = vectorMeshColorAt; exports.vectorMeshLines = vectorMeshLines; exports.vectorFreeformSpreadScale = vectorFreeformSpreadScale; exports.vectorFreeformLineSegments = vectorFreeformLineSegments; exports.vectorFreeformField = vectorFreeformField; exports.sampleVectorFreeform = sampleVectorFreeform; exports.autoVectorFreeformGradient = autoVectorFreeformGradient; exports.vectorShadedSvgDefs = vectorShadedSvgDefs; exports.mapVectorShadedPaint = mapVectorShadedPaint; exports.transformVectorShadedPaint = transformVectorShadedPaint; exports.sanitizeVectorShadedPaint = sanitizeVectorShadedPaint; exports.removeVectorFreeformPoint = removeVectorFreeformPoint; exports.nearestVectorShadingPoint = nearestVectorShadingPoint; exports.VECTOR_CORNER_KINDS = VECTOR_CORNER_KINDS; exports.VECTOR_GRADIENT_TYPES = VECTOR_GRADIENT_TYPES; exports.VECTOR_GRADIENT_SPREADS = VECTOR_GRADIENT_SPREADS; exports.VECTOR_GRADIENT_INTERPOLATIONS = VECTOR_GRADIENT_INTERPOLATIONS; exports.VECTOR_STROKE_GRADIENT_MODES = VECTOR_STROKE_GRADIENT_MODES; exports.VECTOR_ARROWHEADS = VECTOR_ARROWHEADS; exports.VECTOR_BLEND_MODES = VECTOR_BLEND_MODES; exports.VECTOR_HORIZONTAL_RESIZING = VECTOR_HORIZONTAL_RESIZING; exports.VECTOR_VERTICAL_RESIZING = VECTOR_VERTICAL_RESIZING; exports.VECTOR_LENS_TYPES = VECTOR_LENS_TYPES; exports.VECTOR_CONNECTOR_SIDES = VECTOR_CONNECTOR_SIDES; exports.VECTOR_CONNECTOR_ROUTES = VECTOR_CONNECTOR_ROUTES; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_MASK_TYPES = VECTOR_MASK_TYPES; exports.VECTOR_SYMMETRY_MODES = VECTOR_SYMMETRY_MODES; exports.VECTOR_TEXT_ALIGNS = VECTOR_TEXT_ALIGNS; exports.VECTOR_PATH_TEXT_BASELINES = VECTOR_PATH_TEXT_BASELINES; exports.VECTOR_PERSPECTIVE_PLANES = VECTOR_PERSPECTIVE_PLANES; exports.VECTOR_CONSTRAINT_KINDS = VECTOR_CONSTRAINT_KINDS; exports.VECTOR_TOOLS = VECTOR_TOOLS; exports.VECTOR_TRANSFORM_HANDLES = VECTOR_TRANSFORM_HANDLES; exports.VECTOR_PATHFINDER_OPERATIONS = VECTOR_PATHFINDER_OPERATIONS; exports.VECTOR_EFFECT_TYPES = VECTOR_EFFECT_TYPES; exports.VECTOR_MERGE_MODES = VECTOR_MERGE_MODES; exports.VECTOR_FILTER_TYPES = VECTOR_FILTER_TYPES; exports.isVectorGradient = isVectorGradient; exports.parseVectorColor = parseVectorColor; exports.VECTOR_GRADIENT_MIN_STOPS = VECTOR_GRADIENT_MIN_STOPS; exports.gradientMidpointRemap = gradientMidpointRemap; exports.sortedVectorGradientStops = sortedVectorGradientStops; exports.vectorGradientNeedsExpansion = vectorGradientNeedsExpansion; exports.vectorGradientRamp = vectorGradientRamp; exports.sampleVectorGradient = sampleVectorGradient; exports.expandVectorGradientStops = expandVectorGradientStops; exports.samplePlainStops = samplePlainStops; exports.reverseVectorGradient = reverseVectorGradient; exports.insertVectorGradientStop = insertVectorGradientStop; exports.moveVectorGradientStop = moveVectorGradientStop; exports.removeVectorGradientStop = removeVectorGradientStop; exports.vectorGradientMidpointPosition = vectorGradientMidpointPosition; exports.vectorGradientMidpointFromPosition = vectorGradientMidpointFromPosition; exports.spanVectorGradientStops = spanVectorGradientStops; exports.hasExplicitGradientGeometry = hasExplicitGradientGeometry; exports.vectorGradientPoints = vectorGradientPoints; exports.vectorBoxMatrix = vectorBoxMatrix; exports.vectorGradientUnitsMatrix = vectorGradientUnitsMatrix; exports.vectorGradientMatrix = vectorGradientMatrix; exports.vectorGradientFocalParam = vectorGradientFocalParam; exports.vectorGradientParam = vectorGradientParam; exports.applyVectorGradientSpread = applyVectorGradientSpread; exports.vectorGradientTAt = vectorGradientTAt; exports.sampleVectorGradientAt = sampleVectorGradientAt; exports.vectorGradientAspect = vectorGradientAspect; exports.explicitVectorGradient = explicitVectorGradient; exports.pinVectorGradient = pinVectorGradient; exports.transformVectorGradient = transformVectorGradient; exports.mapVectorGradient = mapVectorGradient; exports.mapVectorPaint = mapVectorPaint; exports.transformVectorPaint = transformVectorPaint; exports.isCentredVectorGradient = isCentredVectorGradient; exports.vectorGradientHandles = vectorGradientHandles; exports.moveVectorGradientHandle = moveVectorGradientHandle; exports.setVectorGradientVector = setVectorGradientVector; exports.VECTOR_GRADIENT_MAX_PERIODS = VECTOR_GRADIENT_MAX_PERIODS; exports.periodicVectorGradientStops = periodicVectorGradientStops; exports.expandVectorGradientSpread = expandVectorGradientSpread; exports.vectorGradientArea = vectorGradientArea; exports.patternAttrs = patternAttrs; exports.vectorGradientSvgDefs = vectorGradientSvgDefs; exports.sampleVectorPaintDefAt = sampleVectorPaintDefAt; exports.sanitizeVectorGradient = sanitizeVectorGradient; exports.convertVectorGradient = convertVectorGradient; exports.defaultVectorGradient = defaultVectorGradient; exports.applyVectorGradientPatch = applyVectorGradientPatch; exports.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.matrixAbout = matrixAbout; exports.skewMatrix = skewMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; exports.isVectorSymmetryGroup = isVectorSymmetryGroup; exports.vectorSymmetryMatrices = vectorSymmetryMatrices; exports.vectorSymmetryDrawn = vectorSymmetryDrawn; exports.vectorSymmetryAxes = vectorSymmetryAxes; exports.sanitizeVectorSymmetry = sanitizeVectorSymmetry; exports.VECTOR_SYMMETRY_MODE_LABELS = VECTOR_SYMMETRY_MODE_LABELS; exports.transformVectorSymmetry = transformVectorSymmetry; exports.vectorCornerAt = vectorCornerAt; exports.vectorCorners = vectorCorners; exports.cornerSetback = cornerSetback; exports.fitCornerRadius = fitCornerRadius; exports.cornerBisectorPoint = cornerBisectorPoint; exports.cornerRadiusChange = cornerRadiusChange; exports.hasVectorCorners = hasVectorCorners; exports.expandVectorCornersOf = expandVectorCornersOf; exports.expandVectorCorners = expandVectorCorners; exports.setAnchorCorner = setAnchorCorner; exports.nextVectorCornerKind = nextVectorCornerKind; exports.setSubpathCorners = setSubpathCorners; exports.VECTOR_WIDTH_PROFILE_MAX_POINTS = VECTOR_WIDTH_PROFILE_MAX_POINTS; exports.VECTOR_WIDTH_PROFILE_MAX_SCALE = VECTOR_WIDTH_PROFILE_MAX_SCALE; exports.VECTOR_WIDTH_SAME_T = VECTOR_WIDTH_SAME_T; exports.VECTOR_WIDTH_PRESETS = VECTOR_WIDTH_PRESETS; exports.VECTOR_WIDTH_PRESET_IDS = VECTOR_WIDTH_PRESET_IDS; exports.sanitizeWidthProfile = sanitizeWidthProfile; exports.isUniformWidthProfile = isUniformWidthProfile; exports.widthProfileAt = widthProfileAt; exports.widthProfileMaxScale = widthProfileMaxScale; exports.widthProfilePreset = widthProfilePreset; exports.widthProfilePresetId = widthProfilePresetId; exports.reverseWidthProfile = reverseWidthProfile; exports.mirrorWidthProfile = mirrorWidthProfile; exports.insertWidthPoint = insertWidthPoint; exports.setWidthPoint = setWidthPoint; exports.removeWidthPoints = removeWidthPoints; exports.taperWaveFactor = taperWaveFactor; exports.generateWidthProfile = generateWidthProfile; exports.VECTOR_PRESSURE_NOMINAL = VECTOR_PRESSURE_NOMINAL; exports.pressureWidthProfile = pressureWidthProfile; exports.dashIntervals = dashIntervals; exports.variableStrokeRings = variableStrokeRings; exports.variableStrokeOutline = variableStrokeOutline; exports.nearestStrokePosition = nearestStrokePosition; exports.strokePositionPoint = strokePositionPoint; exports.isClosedBezierShape = isClosedBezierShape; exports.effectiveStrokeAlign = effectiveStrokeAlign; exports.strokeWidthProfileOf = strokeWidthProfileOf; exports.hasStrokeExtras = hasStrokeExtras; exports.vectorStrokeLineArea = vectorStrokeLineArea; exports.arrowheadWeight = arrowheadWeight; exports.arrowheadInset = arrowheadInset; exports.arrowheadPath = arrowheadPath; exports.vectorStrokeParts = vectorStrokeParts; exports.vectorStrokeOutlinePath = vectorStrokeOutlinePath; exports.hitTestVectorStroke = hitTestVectorStroke; exports.vectorStrokeReach = vectorStrokeReach; exports.vectorPaintSolid = vectorPaintSolid; exports.shadeVectorColor = shadeVectorColor; exports.vectorPathRings = vectorPathRings; exports.vectorExtrudeFaces = vectorExtrudeFaces; exports.EFFECT_STRIP_HEIGHT = EFFECT_STRIP_HEIGHT; exports.EFFECT_MAP_REPEATS = EFFECT_MAP_REPEATS; exports.effectPaintSize = effectPaintSize; exports.readEffectStrokeMap = readEffectStrokeMap; exports.effectPaintKey = effectPaintKey; exports.isPaintEffectPaint = isPaintEffectPaint; exports.readPaintEffectPaint = readPaintEffectPaint; exports.sampleEffectField = sampleEffectField; exports.sampleEffectAt = sampleEffectAt; exports.effectDabField = effectDabField; exports.stampSampler = stampSampler; exports.brushStickerRefs = brushStickerRefs; exports.PAPER_FAMILIES = PAPER_FAMILIES; exports.PAPER_LIBRARY = PAPER_LIBRARY; exports.DEFAULT_PAPER = DEFAULT_PAPER; exports.paperPreset = paperPreset; exports.clonePaper = clonePaper; exports.normalizePaper = normalizePaper; exports.hexToRgb8 = hexToRgb8; exports.renderPaper = renderPaper; exports.TipGrain = TipGrain; exports.penOrientation = penOrientation; exports.tiltToOrientation = tiltToOrientation; exports.PenSmoother = PenSmoother; exports.IDENTITY_COPY = IDENTITY_COPY; exports.PenDabWalker = PenDabWalker; exports.DryStroke = DryStroke; exports.mixerTip = mixerTip; exports.toStrokePoint = toStrokePoint; exports.multiColorPalette = multiColorPalette; exports.multiColorGradient = multiColorGradient; exports.multiColorForDab = multiColorForDab; exports.PaintDabStroke = PaintDabStroke; exports.wetPaperInput = wetPaperInput; exports.WetStrokeDriver = WetStrokeDriver; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.GPU_LEAD = GPU_LEAD; exports.PaintWetLayers = PaintWetLayers; exports.wetPigmentOf = wetPigmentOf; exports.VECTOR_WET_STEPS = VECTOR_WET_STEPS; exports.vectorMediaEngine = vectorMediaEngine; exports.usesVectorBackdrop = usesVectorBackdrop; exports.WetBrushstrokeJob = WetBrushstrokeJob; exports.renderWetBrushstroke = renderWetBrushstroke; exports.vectorBackdropRect = vectorBackdropRect; exports.renderBackdropBrushstroke = renderBackdropBrushstroke; exports.VECTOR_BRUSHSTROKE_SCALE = VECTOR_BRUSHSTROKE_SCALE; exports.isVectorBrushstrokeEngine = isVectorBrushstrokeEngine; exports.vectorBrushstrokeBrushes = vectorBrushstrokeBrushes; exports.vectorBrushstrokeBrush = vectorBrushstrokeBrush; exports.vectorBrushstrokeBrushOf = vectorBrushstrokeBrushOf; exports.vectorBrushstrokeBrushError = vectorBrushstrokeBrushError; exports.vectorBrushstrokeDefaultColour = vectorBrushstrokeDefaultColour; exports.sanitizeVectorBrushstroke = sanitizeVectorBrushstroke; exports.vectorBrushstrokePaintError = vectorBrushstrokePaintError; exports.readVectorBrushstrokePaint = readVectorBrushstrokePaint; exports.VECTOR_BRUSHSTROKE_MAX_SEED = VECTOR_BRUSHSTROKE_MAX_SEED; exports.sanitizeVectorBrushstrokePaper = sanitizeVectorBrushstrokePaper; exports.vectorBrushstrokeCharacterError = vectorBrushstrokeCharacterError; exports.randomVectorBrushstrokeSeed = randomVectorBrushstrokeSeed; exports.isVectorBrushstrokeLayer = isVectorBrushstrokeLayer; exports.vectorBrushstrokeReach = vectorBrushstrokeReach; exports.setVectorBackdropSource = setVectorBackdropSource; exports.onVectorBrushstrokesSettled = onVectorBrushstrokesSettled; exports.vectorBrushstrokesSettling = vectorBrushstrokesSettling; exports.settleVectorBrushstrokes = settleVectorBrushstrokes; exports.vectorBrushstrokeImages = vectorBrushstrokeImages; exports.VECTOR_STROKE_SETTING_KEYS = VECTOR_STROKE_SETTING_KEYS; exports.VECTOR_BLEND_MODE_LABELS = VECTOR_BLEND_MODE_LABELS; exports.isVectorBlendMode = isVectorBlendMode; exports.vectorBlendModeCss = vectorBlendModeCss; exports.vectorBlendModeFromCss = vectorBlendModeFromCss; exports.isPlainVectorPaintLayer = isPlainVectorPaintLayer; exports.isDrawnVectorPaintLayer = isDrawnVectorPaintLayer; exports.vectorFills = vectorFills; exports.vectorStrokeSettings = vectorStrokeSettings; exports.vectorStrokes = vectorStrokes; exports.hasVectorPaintStacks = hasVectorPaintStacks; exports.withVectorFills = withVectorFills; exports.withVectorStrokes = withVectorStrokes; exports.normalizeVectorPaintStacks = normalizeVectorPaintStacks; exports.sanitizeVectorFills = sanitizeVectorFills; exports.sanitizeVectorStrokeSettings = sanitizeVectorStrokeSettings; exports.sanitizeVectorStrokes = sanitizeVectorStrokes; exports.vectorPaintLayerNodes = vectorPaintLayerNodes; exports.needsVectorPaintLayers = needsVectorPaintLayers; exports.vectorStrokeStackReach = vectorStrokeStackReach; exports.hitTestVectorPaintLayer = hitTestVectorPaintLayer; exports.hitTestVectorPaintStack = hitTestVectorPaintStack; exports.vectorStacksHaveGradient = vectorStacksHaveGradient; exports.newVectorStrokeLayer = newVectorStrokeLayer; exports.vectorTargetPaint = vectorTargetPaint; exports.withVectorTargetPaint = withVectorTargetPaint; exports.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; exports.sweepPath = sweepPath; exports.twistPaths = twistPaths; exports.zigzagPaths = zigzagPaths; exports.wigglePaths = wigglePaths; exports.mergePaths = mergePaths; exports.vectorRepeaterCopies = vectorRepeaterCopies; exports.repeatPaths = repeatPaths; exports.pathsCenter = pathsCenter; exports.mapVectorPoints = mapVectorPoints; exports.mapVectorSubpaths = mapVectorSubpaths; exports.mapBezierPath = mapBezierPath; exports.isVectorFrame = isVectorFrame; exports.vectorFrameRectPath = vectorFrameRectPath; exports.vectorFrameDrawn = vectorFrameDrawn; exports.vectorFrameContains = vectorFrameContains; exports.vectorFrameChildMatrix = vectorFrameChildMatrix; exports.sanitizeVectorFrame = sanitizeVectorFrame; exports.sanitizeVectorResizing = sanitizeVectorResizing; exports.VECTOR_HORIZONTAL_RESIZING_LABELS = VECTOR_HORIZONTAL_RESIZING_LABELS; exports.VECTOR_VERTICAL_RESIZING_LABELS = VECTOR_VERTICAL_RESIZING_LABELS; exports.vectorBoundsInside = vectorBoundsInside; exports.vectorArtboards = vectorArtboards; exports.vectorFrameDocument = vectorFrameDocument; exports.getVectorFramePanel = getVectorFramePanel; exports.splitIntoFaces = splitIntoFaces; exports.knifePath = knifePath; exports.eraserRegion = eraserRegion; exports.eraseFromFill = eraseFromFill; exports.eraseFromOutline = eraseFromOutline; exports.polylineBounds = polylineBounds; exports.simplifyPolyline = simplifyPolyline; exports.VECTOR_FILTER_DEFAULTS = VECTOR_FILTER_DEFAULTS; exports.VECTOR_FILTER_LABELS = VECTOR_FILTER_LABELS; exports.VECTOR_FILTER_PARAM_SPECS = VECTOR_FILTER_PARAM_SPECS; exports.isVectorFilterType = isVectorFilterType; exports.normalizeVectorFilterParams = normalizeVectorFilterParams; exports.vectorFilterParamKeys = vectorFilterParamKeys; exports.createVectorFilter = createVectorFilter; exports.sanitizeVectorFilters = sanitizeVectorFilters; exports.activeVectorFilters = activeVectorFilters; exports.vectorFilterReach = vectorFilterReach; exports.vectorFilterSvg = vectorFilterSvg; exports.vectorFilterMarkup = vectorFilterMarkup; exports.VECTOR_FILTER_MENU = VECTOR_FILTER_MENU; exports.isVectorMaskType = isVectorMaskType; exports.sanitizeVectorMask = sanitizeVectorMask; exports.isVectorMaskGroup = isVectorMaskGroup; exports.isVectorMaskActive = isVectorMaskActive; exports.vectorMaskSource = vectorMaskSource; exports.vectorMaskContents = vectorMaskContents; exports.vectorMaskOwner = vectorMaskOwner; exports.vectorMaskSummary = vectorMaskSummary; exports.vectorMaskRegionShapes = vectorMaskRegionShapes; exports.vectorMaskRegion = vectorMaskRegion; exports.vectorMaskRegionPath = vectorMaskRegionPath; exports.vectorMaskContains = vectorMaskContains; exports.vectorMaskedShapes = vectorMaskedShapes; exports.vectorMaskedGeometry = vectorMaskedGeometry; exports.vectorMaskedLocalBounds = vectorMaskedLocalBounds; exports.vectorMaskContentBounds = vectorMaskContentBounds; exports.vectorMaskRenderData = vectorMaskRenderData; exports.DEFAULT_TEXT_STYLE = DEFAULT_TEXT_STYLE; exports.DEFAULT_AUTO_LEADING = DEFAULT_AUTO_LEADING; exports.fitRuns = fitRuns; exports.styleAt = styleAt; exports.restyleRange = restyleRange; exports.spliceRuns = spliceRuns; exports.paragraphRanges = paragraphRanges; exports.fitParagraphRuns = fitParagraphRuns; exports.fontOf = fontOf; exports.transformTextRect = transformTextRect; exports.lineToTextSpace = lineToTextSpace; exports.layoutText = layoutText; exports.textIndexAt = textIndexAt; exports.caretAt = caretAt; exports.textSelectionQuads = textSelectionQuads; exports.textArrowStep = textArrowStep; exports.textLineMove = textLineMove; exports.textDecorations = textDecorations; exports.textRectPath = textRectPath; exports.textFragmentOutline = textFragmentOutline; exports.drawTextFragment = drawTextFragment; exports.cssFontFamily = cssFontFamily; exports.cssFont = cssFont; exports.createCanvasTextShaper = createCanvasTextShaper; exports.createOutlineTextShaper = createOutlineTextShaper; exports.createMetricTextShaper = createMetricTextShaper; exports.setVectorTextShaper = setVectorTextShaper; exports.getVectorTextShaper = getVectorTextShaper; exports.vectorTextShaperGeneration = vectorTextShaperGeneration; exports.vectorTextHasOutlines = vectorTextHasOutlines; exports.vectorTextFamilies = vectorTextFamilies; exports.DEFAULT_VECTOR_FONT = DEFAULT_VECTOR_FONT; exports.VECTOR_CHARACTER_STYLE_KEYS = VECTOR_CHARACTER_STYLE_KEYS; exports.VECTOR_PARAGRAPH_STYLE_KEYS = VECTOR_PARAGRAPH_STYLE_KEYS; exports.VectorTextError = VectorTextError; exports.fitVectorTextRuns = fitVectorTextRuns; exports.vectorTextRuns = vectorTextRuns; exports.vectorTextStyleAt = vectorTextStyleAt; exports.measureVectorPath = measureVectorPath; exports.vectorPathAt = vectorPathAt; exports.vectorPathTextPositions = vectorPathTextPositions; exports.layoutVectorText = layoutVectorText; exports.glyphBox = glyphBox; exports.vectorTextPaths = vectorTextPaths; exports.vectorTextPaintSource = vectorTextPaintSource; exports.vectorTextCaret = vectorTextCaret; exports.vectorTextIndexAt = vectorTextIndexAt; exports.vectorTextSelectionQuads = vectorTextSelectionQuads; exports.patchVectorCharacterStyle = patchVectorCharacterStyle; exports.patchVectorParagraphStyle = patchVectorParagraphStyle; exports.sanitizeVectorTextFrame = sanitizeVectorTextFrame; exports.normalizeVectorTextRuns = normalizeVectorTextRuns; exports.vectorTextOrientation = vectorTextOrientation; exports.sanitizeVectorTextFields = sanitizeVectorTextFields; exports.vectorTextRange = vectorTextRange; exports.replaceVectorText = replaceVectorText; exports.styleVectorText = styleVectorText; exports.bakeVectorTextGeometry = bakeVectorTextGeometry; exports.vectorTextName = vectorTextName; exports.pathTextFrameFromBezier = pathTextFrameFromBezier; exports.vectorTextBoxOutline = vectorTextBoxOutline; exports.vectorTextSpans = vectorTextSpans; exports.vectorTextGeometryNode = vectorTextGeometryNode; exports.vectorTextSpanSvg = vectorTextSpanSvg; exports.VECTOR_SYMBOL_MAX_DEPTH = VECTOR_SYMBOL_MAX_DEPTH; exports.vectorSymbolsUsedIn = vectorSymbolsUsedIn; exports.vectorSymbolUses = vectorSymbolUses; exports.resolveVectorSymbols = resolveVectorSymbols; exports.stripVectorSymbolArt = stripVectorSymbolArt; exports.scaleVectorStrokeWidths = scaleVectorStrokeWidths; exports.tintVectorNode = tintVectorNode; exports.prefixVectorIds = prefixVectorIds; exports.vectorInstanceGroup = vectorInstanceGroup; exports.composeVectorMatrices = composeVectorMatrices; exports.vectorBevelFaces = vectorBevelFaces; exports.isVectorLens = isVectorLens; exports.VECTOR_LENS_LABELS = VECTOR_LENS_LABELS; exports.VECTOR_LENS_SPECS = VECTOR_LENS_SPECS; exports.sanitizeVectorLens = sanitizeVectorLens; exports.vectorLensColorMap = vectorLensColorMap; exports.mapVectorPaintColors = mapVectorPaintColors; exports.vectorLensDrawn = vectorLensDrawn; exports.resolveVectorLenses = resolveVectorLenses; exports.stripVectorLensViews = stripVectorLensViews; exports.WARP_STYLES = WARP_STYLES; exports.WARP_STYLE_LABELS = WARP_STYLE_LABELS; exports.warpPresetGrid = warpPresetGrid; exports.warpPresetMesh = warpPresetMesh; exports.warpMeshColumns = warpMeshColumns; exports.warpMeshRows = warpMeshRows; exports.isValidWarpMesh = isValidWarpMesh; exports.fitWarpMesh = fitWarpMesh; exports.identityWarpMesh = identityWarpMesh; exports.evalWarpMesh = evalWarpMesh; exports.splitWarpMeshU = splitWarpMeshU; exports.splitWarpMeshV = splitWarpMeshV; exports.removeWarpMeshSplitU = removeWarpMeshSplitU; exports.removeWarpMeshSplitV = removeWarpMeshSplitV; exports.mapWarpMeshPoints = mapWarpMeshPoints; exports.resizeWarpMesh = resizeWarpMesh; exports.warpMeshControlBounds = warpMeshControlBounds; exports.warpMeshParamAt = warpMeshParamAt; exports.dragWarpMeshPoint = dragWarpMeshPoint; exports.pullWarpMesh = pullWarpMesh; exports.warpMeshEditPoints = warpMeshEditPoints; exports.warpMeshGridCurves = warpMeshGridCurves; exports.vectorMeshFromOutline = vectorMeshFromOutline; exports.vectorMeshOutline = vectorMeshOutline; exports.VECTOR_EFFECT_DEFAULTS = VECTOR_EFFECT_DEFAULTS; exports.VECTOR_EFFECT_LABELS = VECTOR_EFFECT_LABELS; exports.VECTOR_EFFECT_PARAM_SPECS = VECTOR_EFFECT_PARAM_SPECS; exports.vectorEnvelopeMesh = vectorEnvelopeMesh; exports.vectorEnvelopeMap = vectorEnvelopeMap; exports.normalizeVectorEffectParams = normalizeVectorEffectParams; exports.createVectorEffect = createVectorEffect; exports.activeVectorEffects = activeVectorEffects; exports.hasOwnVectorAppearance = hasOwnVectorAppearance; exports.hasVectorAppearance = hasVectorAppearance; exports.isVectorLiveBoolean = isVectorLiveBoolean; exports.vectorOperandOperation = vectorOperandOperation; exports.vectorLiveBooleanSteps = vectorLiveBooleanSteps; exports.clearVectorLiveBooleanCache = clearVectorLiveBooleanCache; exports.foldVectorBooleanOperands = foldVectorBooleanOperands; exports.applyVectorEffects = applyVectorEffects; exports.vectorInstanceDrawn = vectorInstanceDrawn; exports.vectorChildAppearanceShapes = vectorChildAppearanceShapes; exports.vectorEffectInputPaths = vectorEffectInputPaths; exports.vectorEffectInputBounds = vectorEffectInputBounds; exports.vectorNodeEnvelope = vectorNodeEnvelope; exports.vectorEnvelopeFrame = vectorEnvelopeFrame; exports.vectorAppearanceShapes = vectorAppearanceShapes; exports.vectorAppearanceOutline = vectorAppearanceOutline; exports.vectorAppearanceNodes = vectorAppearanceNodes; exports.expandVectorAppearance = expandVectorAppearance; exports.expandVectorAppearances = expandVectorAppearances; exports.sanitizeVectorEffects = sanitizeVectorEffects; exports.transformVectorEffects = transformVectorEffects; exports.vectorEnteredGroups = vectorEnteredGroups; exports.isVectorMasterPage = isVectorMasterPage; exports.vectorPages = vectorPages; exports.vectorMasterPages = vectorMasterPages; exports.vectorMasterArt = vectorMasterArt; exports.resolveVectorMasterPages = resolveVectorMasterPages; exports.stripVectorMasterArt = stripVectorMasterArt; exports.isVectorConnector = isVectorConnector; exports.vectorConnectionSites = vectorConnectionSites; exports.nearestVectorConnectionSite = nearestVectorConnectionSite; exports.vectorConnectorWorldAnchors = vectorConnectorWorldAnchors; exports.routeVectorConnector = routeVectorConnector; exports.rerouteVectorConnectors = rerouteVectorConnectors; exports.sanitizeVectorConnector = sanitizeVectorConnector; exports.VECTOR_CONNECTOR_ROUTE_LABELS = VECTOR_CONNECTOR_ROUTE_LABELS; exports.VECTOR_CONNECTOR_SIDE_LABELS = VECTOR_CONNECTOR_SIDE_LABELS; exports.getVectorConnectorPanel = getVectorConnectorPanel; exports.vectorConnectorTargetAt = vectorConnectorTargetAt; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.vectorNodeLocalPaintBounds = vectorNodeLocalPaintBounds; exports.vectorNodeFilterSvg = vectorNodeFilterSvg; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg; exports.VECTOR_SPATIAL_MIN = VECTOR_SPATIAL_MIN; exports.VectorRTree = VectorRTree; exports.vectorNodePaintBox = vectorNodePaintBox; exports.vectorSpatialIndex = vectorSpatialIndex; exports.vectorNodesNear = vectorNodesNear; exports.cloneAnchor = cloneAnchor; exports.cloneSubpath = cloneSubpath; exports.cloneVectorNode = cloneVectorNode; exports.cloneVectorDocument = cloneVectorDocument; exports.hasPaint = hasPaint; exports.subpathSegmentCount = subpathSegmentCount; exports.subpathSegment = subpathSegment; exports.subpathsToBezier = subpathsToBezier; exports.vectorNodeToBezier = vectorNodeToBezier; exports.vectorPathData = vectorPathData; exports.inferAnchorType = inferAnchorType; exports.bezierToSubpaths = bezierToSubpaths; exports.walkVectorNodes = walkVectorNodes; exports.findVectorNode = findVectorNode; exports.locateVectorNode = locateVectorNode; exports.collectPaintedNodes = collectPaintedNodes; exports.collectPathNodes = collectPathNodes; exports.nodeMatrix = nodeMatrix; exports.vectorPathWorldBezier = vectorPathWorldBezier; exports.vectorNodeBounds = vectorNodeBounds; exports.unionBounds = unionBounds; exports.boundsIntersect = boundsIntersect; exports.boundsFromPoints = boundsFromPoints; exports.hitTestVectorNode = hitTestVectorNode; exports.vectorStrokeOutline = vectorStrokeOutline; exports.hitTestVectorNodes = hitTestVectorNodes; exports.nearestSegment = nearestSegment; exports.transformVectorNode = transformVectorNode; exports.vectorNodeRotation = vectorNodeRotation; exports.vectorWorldMatrix = vectorWorldMatrix; exports.vectorParentMatrix = vectorParentMatrix; exports.translateAnchor = translateAnchor; exports.moveAnchorHandle = moveAnchorHandle; exports.convertAnchor = convertAnchor; exports.insertAnchor = insertAnchor; exports.removeAnchors = removeAnchors; exports.reverseSubpath = reverseSubpath; exports.KAPPA = KAPPA2; exports.rectSubpath = rectSubpath; exports.ellipseSubpath = ellipseSubpath; exports.polygonSubpath = polygonSubpath; exports.starSubpath = starSubpath; exports.lineSubpath = lineSubpath; exports.roundSubpaths = roundSubpaths;
|
|
13510
|
+
|
|
13511
|
+
|
|
13512
|
+
|
|
13513
|
+
|
|
13514
|
+
exports.isVectorMeshGradient = isVectorMeshGradient; exports.isVectorFreeformGradient = isVectorFreeformGradient; exports.isVectorShadedPaint = isVectorShadedPaint; exports.vectorRgbaToCss = vectorRgbaToCss; exports.VECTOR_MESH_MAX = VECTOR_MESH_MAX; exports.createVectorMeshGradient = createVectorMeshGradient; exports.vectorMeshPointAt = vectorMeshPointAt; exports.vectorMeshColorAt = vectorMeshColorAt; exports.vectorMeshLines = vectorMeshLines; exports.vectorFreeformSpreadScale = vectorFreeformSpreadScale; exports.vectorFreeformLineSegments = vectorFreeformLineSegments; exports.vectorFreeformField = vectorFreeformField; exports.sampleVectorFreeform = sampleVectorFreeform; exports.autoVectorFreeformGradient = autoVectorFreeformGradient; exports.vectorShadedSvgDefs = vectorShadedSvgDefs; exports.mapVectorShadedPaint = mapVectorShadedPaint; exports.transformVectorShadedPaint = transformVectorShadedPaint; exports.sanitizeVectorShadedPaint = sanitizeVectorShadedPaint; exports.removeVectorFreeformPoint = removeVectorFreeformPoint; exports.nearestVectorShadingPoint = nearestVectorShadingPoint; exports.VECTOR_CORNER_KINDS = VECTOR_CORNER_KINDS; exports.VECTOR_GRADIENT_TYPES = VECTOR_GRADIENT_TYPES; exports.VECTOR_GRADIENT_SPREADS = VECTOR_GRADIENT_SPREADS; exports.VECTOR_GRADIENT_INTERPOLATIONS = VECTOR_GRADIENT_INTERPOLATIONS; exports.VECTOR_STROKE_GRADIENT_MODES = VECTOR_STROKE_GRADIENT_MODES; exports.VECTOR_ARROWHEADS = VECTOR_ARROWHEADS; exports.VECTOR_BLEND_MODES = VECTOR_BLEND_MODES; exports.VECTOR_HORIZONTAL_RESIZING = VECTOR_HORIZONTAL_RESIZING; exports.VECTOR_VERTICAL_RESIZING = VECTOR_VERTICAL_RESIZING; exports.VECTOR_LENS_TYPES = VECTOR_LENS_TYPES; exports.VECTOR_CONNECTOR_SIDES = VECTOR_CONNECTOR_SIDES; exports.VECTOR_CONNECTOR_ROUTES = VECTOR_CONNECTOR_ROUTES; exports.VECTOR_BLEND_SPACINGS = VECTOR_BLEND_SPACINGS; exports.VECTOR_MASK_TYPES = VECTOR_MASK_TYPES; exports.VECTOR_SYMMETRY_MODES = VECTOR_SYMMETRY_MODES; exports.VECTOR_TEXT_ALIGNS = VECTOR_TEXT_ALIGNS; exports.VECTOR_PATH_TEXT_BASELINES = VECTOR_PATH_TEXT_BASELINES; exports.VECTOR_PERSPECTIVE_PLANES = VECTOR_PERSPECTIVE_PLANES; exports.VECTOR_CONSTRAINT_KINDS = VECTOR_CONSTRAINT_KINDS; exports.VECTOR_TOOLS = VECTOR_TOOLS; exports.VECTOR_TRANSFORM_HANDLES = VECTOR_TRANSFORM_HANDLES; exports.VECTOR_PATHFINDER_OPERATIONS = VECTOR_PATHFINDER_OPERATIONS; exports.VECTOR_EFFECT_TYPES = VECTOR_EFFECT_TYPES; exports.VECTOR_MERGE_MODES = VECTOR_MERGE_MODES; exports.VECTOR_FILTER_TYPES = VECTOR_FILTER_TYPES; exports.isVectorGradient = isVectorGradient; exports.parseVectorColor = parseVectorColor; exports.VECTOR_GRADIENT_MIN_STOPS = VECTOR_GRADIENT_MIN_STOPS; exports.gradientMidpointRemap = gradientMidpointRemap; exports.sortedVectorGradientStops = sortedVectorGradientStops; exports.vectorGradientNeedsExpansion = vectorGradientNeedsExpansion; exports.vectorGradientRamp = vectorGradientRamp; exports.sampleVectorGradient = sampleVectorGradient; exports.expandVectorGradientStops = expandVectorGradientStops; exports.samplePlainStops = samplePlainStops; exports.reverseVectorGradient = reverseVectorGradient; exports.insertVectorGradientStop = insertVectorGradientStop; exports.moveVectorGradientStop = moveVectorGradientStop; exports.removeVectorGradientStop = removeVectorGradientStop; exports.vectorGradientMidpointPosition = vectorGradientMidpointPosition; exports.vectorGradientMidpointFromPosition = vectorGradientMidpointFromPosition; exports.spanVectorGradientStops = spanVectorGradientStops; exports.hasExplicitGradientGeometry = hasExplicitGradientGeometry; exports.vectorGradientPoints = vectorGradientPoints; exports.vectorBoxMatrix = vectorBoxMatrix; exports.vectorGradientUnitsMatrix = vectorGradientUnitsMatrix; exports.vectorGradientMatrix = vectorGradientMatrix; exports.vectorGradientFocalParam = vectorGradientFocalParam; exports.vectorGradientParam = vectorGradientParam; exports.applyVectorGradientSpread = applyVectorGradientSpread; exports.vectorGradientTAt = vectorGradientTAt; exports.sampleVectorGradientAt = sampleVectorGradientAt; exports.vectorGradientAspect = vectorGradientAspect; exports.explicitVectorGradient = explicitVectorGradient; exports.pinVectorGradient = pinVectorGradient; exports.transformVectorGradient = transformVectorGradient; exports.mapVectorGradient = mapVectorGradient; exports.mapVectorPaint = mapVectorPaint; exports.transformVectorPaint = transformVectorPaint; exports.isCentredVectorGradient = isCentredVectorGradient; exports.vectorGradientHandles = vectorGradientHandles; exports.moveVectorGradientHandle = moveVectorGradientHandle; exports.setVectorGradientVector = setVectorGradientVector; exports.VECTOR_GRADIENT_MAX_PERIODS = VECTOR_GRADIENT_MAX_PERIODS; exports.periodicVectorGradientStops = periodicVectorGradientStops; exports.expandVectorGradientSpread = expandVectorGradientSpread; exports.vectorGradientArea = vectorGradientArea; exports.patternAttrs = patternAttrs; exports.vectorGradientSvgDefs = vectorGradientSvgDefs; exports.sampleVectorPaintDefAt = sampleVectorPaintDefAt; exports.sanitizeVectorGradient = sanitizeVectorGradient; exports.convertVectorGradient = convertVectorGradient; exports.defaultVectorGradient = defaultVectorGradient; exports.applyVectorGradientPatch = applyVectorGradientPatch; exports.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.matrixAbout = matrixAbout; exports.skewMatrix = skewMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; exports.isVectorSymmetryGroup = isVectorSymmetryGroup; exports.vectorSymmetryMatrices = vectorSymmetryMatrices; exports.vectorSymmetryDrawn = vectorSymmetryDrawn; exports.vectorSymmetryAxes = vectorSymmetryAxes; exports.sanitizeVectorSymmetry = sanitizeVectorSymmetry; exports.VECTOR_SYMMETRY_MODE_LABELS = VECTOR_SYMMETRY_MODE_LABELS; exports.transformVectorSymmetry = transformVectorSymmetry; exports.vectorCornerAt = vectorCornerAt; exports.vectorCorners = vectorCorners; exports.cornerSetback = cornerSetback; exports.fitCornerRadius = fitCornerRadius; exports.cornerBisectorPoint = cornerBisectorPoint; exports.cornerRadiusChange = cornerRadiusChange; exports.hasVectorCorners = hasVectorCorners; exports.expandVectorCornersOf = expandVectorCornersOf; exports.expandVectorCorners = expandVectorCorners; exports.setAnchorCorner = setAnchorCorner; exports.nextVectorCornerKind = nextVectorCornerKind; exports.setSubpathCorners = setSubpathCorners; exports.VECTOR_WIDTH_PROFILE_MAX_POINTS = VECTOR_WIDTH_PROFILE_MAX_POINTS; exports.VECTOR_WIDTH_PROFILE_MAX_SCALE = VECTOR_WIDTH_PROFILE_MAX_SCALE; exports.VECTOR_WIDTH_SAME_T = VECTOR_WIDTH_SAME_T; exports.VECTOR_WIDTH_PRESETS = VECTOR_WIDTH_PRESETS; exports.VECTOR_WIDTH_PRESET_IDS = VECTOR_WIDTH_PRESET_IDS; exports.sanitizeWidthProfile = sanitizeWidthProfile; exports.isUniformWidthProfile = isUniformWidthProfile; exports.widthProfileAt = widthProfileAt; exports.widthProfileMaxScale = widthProfileMaxScale; exports.widthProfilePreset = widthProfilePreset; exports.widthProfilePresetId = widthProfilePresetId; exports.reverseWidthProfile = reverseWidthProfile; exports.mirrorWidthProfile = mirrorWidthProfile; exports.insertWidthPoint = insertWidthPoint; exports.setWidthPoint = setWidthPoint; exports.removeWidthPoints = removeWidthPoints; exports.taperWaveFactor = taperWaveFactor; exports.generateWidthProfile = generateWidthProfile; exports.VECTOR_PRESSURE_NOMINAL = VECTOR_PRESSURE_NOMINAL; exports.pressureWidthProfile = pressureWidthProfile; exports.dashIntervals = dashIntervals; exports.variableStrokeRings = variableStrokeRings; exports.variableStrokeOutline = variableStrokeOutline; exports.nearestStrokePosition = nearestStrokePosition; exports.strokePositionPoint = strokePositionPoint; exports.isClosedBezierShape = isClosedBezierShape; exports.effectiveStrokeAlign = effectiveStrokeAlign; exports.strokeWidthProfileOf = strokeWidthProfileOf; exports.hasStrokeExtras = hasStrokeExtras; exports.vectorStrokeLineArea = vectorStrokeLineArea; exports.arrowheadWeight = arrowheadWeight; exports.arrowheadInset = arrowheadInset; exports.arrowheadPath = arrowheadPath; exports.vectorStrokeParts = vectorStrokeParts; exports.vectorStrokeOutlinePath = vectorStrokeOutlinePath; exports.hitTestVectorStroke = hitTestVectorStroke; exports.vectorStrokeReach = vectorStrokeReach; exports.vectorPaintSolid = vectorPaintSolid; exports.shadeVectorColor = shadeVectorColor; exports.vectorPathRings = vectorPathRings; exports.vectorExtrudeFaces = vectorExtrudeFaces; exports.EFFECT_STRIP_HEIGHT = EFFECT_STRIP_HEIGHT; exports.EFFECT_MAP_REPEATS = EFFECT_MAP_REPEATS; exports.MAX_EFFECT_PATH_POINTS = MAX_EFFECT_PATH_POINTS; exports.strokePathPoints = strokePathPoints; exports.inferEffectPathControl = inferEffectPathControl; exports.withStrokePath = withStrokePath; exports.effectPaintSize = effectPaintSize; exports.readEffectStrokeMap = readEffectStrokeMap; exports.effectPaintKey = effectPaintKey; exports.isPaintEffectPaint = isPaintEffectPaint; exports.readPaintEffectPaint = readPaintEffectPaint; exports.sampleEffectField = sampleEffectField; exports.sampleEffectAt = sampleEffectAt; exports.effectDabField = effectDabField; exports.stampSampler = stampSampler; exports.brushStickerRefs = brushStickerRefs; exports.PAPER_FAMILIES = PAPER_FAMILIES; exports.PAPER_LIBRARY = PAPER_LIBRARY; exports.DEFAULT_PAPER = DEFAULT_PAPER; exports.paperPreset = paperPreset; exports.clonePaper = clonePaper; exports.normalizePaper = normalizePaper; exports.hexToRgb8 = hexToRgb8; exports.renderPaper = renderPaper; exports.TipGrain = TipGrain; exports.penOrientation = penOrientation; exports.tiltToOrientation = tiltToOrientation; exports.PenSmoother = PenSmoother; exports.IDENTITY_COPY = IDENTITY_COPY; exports.PenDabWalker = PenDabWalker; exports.DryStroke = DryStroke; exports.mixerTip = mixerTip; exports.toStrokePoint = toStrokePoint; exports.multiColorPalette = multiColorPalette; exports.multiColorGradient = multiColorGradient; exports.multiColorForDab = multiColorForDab; exports.PaintDabStroke = PaintDabStroke; exports.wetPaperInput = wetPaperInput; exports.WetStrokeDriver = WetStrokeDriver; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.GPU_LEAD = GPU_LEAD; exports.PaintWetLayers = PaintWetLayers; exports.wetPigmentOf = wetPigmentOf; exports.VECTOR_WET_STEPS = VECTOR_WET_STEPS; exports.vectorMediaEngine = vectorMediaEngine; exports.usesVectorBackdrop = usesVectorBackdrop; exports.WetBrushstrokeJob = WetBrushstrokeJob; exports.renderWetBrushstroke = renderWetBrushstroke; exports.vectorBackdropRect = vectorBackdropRect; exports.renderBackdropBrushstroke = renderBackdropBrushstroke; exports.VECTOR_BRUSHSTROKE_SCALE = VECTOR_BRUSHSTROKE_SCALE; exports.isVectorBrushstrokeEngine = isVectorBrushstrokeEngine; exports.vectorBrushstrokeBrushes = vectorBrushstrokeBrushes; exports.vectorBrushstrokeBrush = vectorBrushstrokeBrush; exports.vectorBrushstrokeBrushOf = vectorBrushstrokeBrushOf; exports.vectorBrushstrokeBrushError = vectorBrushstrokeBrushError; exports.vectorBrushstrokeDefaultColour = vectorBrushstrokeDefaultColour; exports.sanitizeVectorBrushstroke = sanitizeVectorBrushstroke; exports.vectorBrushstrokePaintError = vectorBrushstrokePaintError; exports.readVectorBrushstrokePaint = readVectorBrushstrokePaint; exports.VECTOR_BRUSHSTROKE_MAX_SEED = VECTOR_BRUSHSTROKE_MAX_SEED; exports.sanitizeVectorBrushstrokePaper = sanitizeVectorBrushstrokePaper; exports.vectorBrushstrokeCharacterError = vectorBrushstrokeCharacterError; exports.randomVectorBrushstrokeSeed = randomVectorBrushstrokeSeed; exports.isVectorBrushstrokeLayer = isVectorBrushstrokeLayer; exports.vectorBrushstrokeReach = vectorBrushstrokeReach; exports.setVectorBackdropSource = setVectorBackdropSource; exports.onVectorBrushstrokesSettled = onVectorBrushstrokesSettled; exports.vectorBrushstrokesSettling = vectorBrushstrokesSettling; exports.settleVectorBrushstrokes = settleVectorBrushstrokes; exports.vectorBrushstrokeImages = vectorBrushstrokeImages; exports.VECTOR_STROKE_SETTING_KEYS = VECTOR_STROKE_SETTING_KEYS; exports.VECTOR_BLEND_MODE_LABELS = VECTOR_BLEND_MODE_LABELS; exports.isVectorBlendMode = isVectorBlendMode; exports.vectorBlendModeCss = vectorBlendModeCss; exports.vectorBlendModeFromCss = vectorBlendModeFromCss; exports.isPlainVectorPaintLayer = isPlainVectorPaintLayer; exports.isDrawnVectorPaintLayer = isDrawnVectorPaintLayer; exports.vectorFills = vectorFills; exports.vectorStrokeSettings = vectorStrokeSettings; exports.vectorStrokes = vectorStrokes; exports.hasVectorPaintStacks = hasVectorPaintStacks; exports.withVectorFills = withVectorFills; exports.withVectorStrokes = withVectorStrokes; exports.normalizeVectorPaintStacks = normalizeVectorPaintStacks; exports.sanitizeVectorFills = sanitizeVectorFills; exports.sanitizeVectorStrokeSettings = sanitizeVectorStrokeSettings; exports.sanitizeVectorStrokes = sanitizeVectorStrokes; exports.vectorPaintLayerNodes = vectorPaintLayerNodes; exports.needsVectorPaintLayers = needsVectorPaintLayers; exports.vectorStrokeStackReach = vectorStrokeStackReach; exports.hitTestVectorPaintLayer = hitTestVectorPaintLayer; exports.hitTestVectorPaintStack = hitTestVectorPaintStack; exports.vectorStacksHaveGradient = vectorStacksHaveGradient; exports.newVectorStrokeLayer = newVectorStrokeLayer; exports.vectorTargetPaint = vectorTargetPaint; exports.withVectorTargetPaint = withVectorTargetPaint; exports.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; exports.sweepPath = sweepPath; exports.twistPaths = twistPaths; exports.zigzagPaths = zigzagPaths; exports.wigglePaths = wigglePaths; exports.mergePaths = mergePaths; exports.vectorRepeaterCopies = vectorRepeaterCopies; exports.repeatPaths = repeatPaths; exports.pathsCenter = pathsCenter; exports.mapVectorPoints = mapVectorPoints; exports.mapVectorSubpaths = mapVectorSubpaths; exports.mapBezierPath = mapBezierPath; exports.isVectorFrame = isVectorFrame; exports.vectorFrameRectPath = vectorFrameRectPath; exports.vectorFrameDrawn = vectorFrameDrawn; exports.vectorFrameContains = vectorFrameContains; exports.vectorFrameChildMatrix = vectorFrameChildMatrix; exports.sanitizeVectorFrame = sanitizeVectorFrame; exports.sanitizeVectorResizing = sanitizeVectorResizing; exports.VECTOR_HORIZONTAL_RESIZING_LABELS = VECTOR_HORIZONTAL_RESIZING_LABELS; exports.VECTOR_VERTICAL_RESIZING_LABELS = VECTOR_VERTICAL_RESIZING_LABELS; exports.vectorBoundsInside = vectorBoundsInside; exports.vectorArtboards = vectorArtboards; exports.vectorFrameDocument = vectorFrameDocument; exports.getVectorFramePanel = getVectorFramePanel; exports.splitIntoFaces = splitIntoFaces; exports.knifePath = knifePath; exports.eraserRegion = eraserRegion; exports.eraseFromFill = eraseFromFill; exports.eraseFromOutline = eraseFromOutline; exports.polylineBounds = polylineBounds; exports.simplifyPolyline = simplifyPolyline; exports.VECTOR_FILTER_DEFAULTS = VECTOR_FILTER_DEFAULTS; exports.VECTOR_FILTER_LABELS = VECTOR_FILTER_LABELS; exports.VECTOR_FILTER_PARAM_SPECS = VECTOR_FILTER_PARAM_SPECS; exports.isVectorFilterType = isVectorFilterType; exports.normalizeVectorFilterParams = normalizeVectorFilterParams; exports.vectorFilterParamKeys = vectorFilterParamKeys; exports.createVectorFilter = createVectorFilter; exports.sanitizeVectorFilters = sanitizeVectorFilters; exports.activeVectorFilters = activeVectorFilters; exports.vectorFilterReach = vectorFilterReach; exports.vectorFilterSvg = vectorFilterSvg; exports.vectorFilterMarkup = vectorFilterMarkup; exports.VECTOR_FILTER_MENU = VECTOR_FILTER_MENU; exports.isVectorMaskType = isVectorMaskType; exports.sanitizeVectorMask = sanitizeVectorMask; exports.isVectorMaskGroup = isVectorMaskGroup; exports.isVectorMaskActive = isVectorMaskActive; exports.vectorMaskSource = vectorMaskSource; exports.vectorMaskContents = vectorMaskContents; exports.vectorMaskOwner = vectorMaskOwner; exports.vectorMaskSummary = vectorMaskSummary; exports.vectorMaskRegionShapes = vectorMaskRegionShapes; exports.vectorMaskRegion = vectorMaskRegion; exports.vectorMaskRegionPath = vectorMaskRegionPath; exports.vectorMaskContains = vectorMaskContains; exports.vectorMaskedShapes = vectorMaskedShapes; exports.vectorMaskedGeometry = vectorMaskedGeometry; exports.vectorMaskedLocalBounds = vectorMaskedLocalBounds; exports.vectorMaskContentBounds = vectorMaskContentBounds; exports.vectorMaskRenderData = vectorMaskRenderData; exports.DEFAULT_TEXT_STYLE = DEFAULT_TEXT_STYLE; exports.DEFAULT_AUTO_LEADING = DEFAULT_AUTO_LEADING; exports.fitRuns = fitRuns; exports.styleAt = styleAt; exports.restyleRange = restyleRange; exports.spliceRuns = spliceRuns; exports.paragraphRanges = paragraphRanges; exports.fitParagraphRuns = fitParagraphRuns; exports.fontOf = fontOf; exports.transformTextRect = transformTextRect; exports.lineToTextSpace = lineToTextSpace; exports.layoutText = layoutText; exports.textIndexAt = textIndexAt; exports.caretAt = caretAt; exports.textSelectionQuads = textSelectionQuads; exports.textArrowStep = textArrowStep; exports.textLineMove = textLineMove; exports.textDecorations = textDecorations; exports.textRectPath = textRectPath; exports.textFragmentOutline = textFragmentOutline; exports.drawTextFragment = drawTextFragment; exports.cssFontFamily = cssFontFamily; exports.cssFont = cssFont; exports.createCanvasTextShaper = createCanvasTextShaper; exports.createOutlineTextShaper = createOutlineTextShaper; exports.createMetricTextShaper = createMetricTextShaper; exports.setVectorTextShaper = setVectorTextShaper; exports.getVectorTextShaper = getVectorTextShaper; exports.vectorTextShaperGeneration = vectorTextShaperGeneration; exports.vectorTextHasOutlines = vectorTextHasOutlines; exports.vectorTextFamilies = vectorTextFamilies; exports.DEFAULT_VECTOR_FONT = DEFAULT_VECTOR_FONT; exports.VECTOR_CHARACTER_STYLE_KEYS = VECTOR_CHARACTER_STYLE_KEYS; exports.VECTOR_PARAGRAPH_STYLE_KEYS = VECTOR_PARAGRAPH_STYLE_KEYS; exports.VectorTextError = VectorTextError; exports.fitVectorTextRuns = fitVectorTextRuns; exports.vectorTextRuns = vectorTextRuns; exports.vectorTextStyleAt = vectorTextStyleAt; exports.measureVectorPath = measureVectorPath; exports.vectorPathAt = vectorPathAt; exports.vectorPathTextPositions = vectorPathTextPositions; exports.layoutVectorText = layoutVectorText; exports.glyphBox = glyphBox; exports.vectorTextPaths = vectorTextPaths; exports.vectorTextPaintSource = vectorTextPaintSource; exports.vectorTextCaret = vectorTextCaret; exports.vectorTextIndexAt = vectorTextIndexAt; exports.vectorTextSelectionQuads = vectorTextSelectionQuads; exports.patchVectorCharacterStyle = patchVectorCharacterStyle; exports.patchVectorParagraphStyle = patchVectorParagraphStyle; exports.sanitizeVectorTextFrame = sanitizeVectorTextFrame; exports.normalizeVectorTextRuns = normalizeVectorTextRuns; exports.vectorTextOrientation = vectorTextOrientation; exports.sanitizeVectorTextFields = sanitizeVectorTextFields; exports.vectorTextRange = vectorTextRange; exports.replaceVectorText = replaceVectorText; exports.styleVectorText = styleVectorText; exports.bakeVectorTextGeometry = bakeVectorTextGeometry; exports.vectorTextName = vectorTextName; exports.pathTextFrameFromBezier = pathTextFrameFromBezier; exports.vectorTextBoxOutline = vectorTextBoxOutline; exports.vectorTextSpans = vectorTextSpans; exports.vectorTextGeometryNode = vectorTextGeometryNode; exports.vectorTextSpanSvg = vectorTextSpanSvg; exports.VECTOR_SYMBOL_MAX_DEPTH = VECTOR_SYMBOL_MAX_DEPTH; exports.vectorSymbolsUsedIn = vectorSymbolsUsedIn; exports.vectorSymbolUses = vectorSymbolUses; exports.resolveVectorSymbols = resolveVectorSymbols; exports.stripVectorSymbolArt = stripVectorSymbolArt; exports.scaleVectorStrokeWidths = scaleVectorStrokeWidths; exports.tintVectorNode = tintVectorNode; exports.prefixVectorIds = prefixVectorIds; exports.vectorInstanceGroup = vectorInstanceGroup; exports.composeVectorMatrices = composeVectorMatrices; exports.vectorBevelFaces = vectorBevelFaces; exports.isVectorLens = isVectorLens; exports.VECTOR_LENS_LABELS = VECTOR_LENS_LABELS; exports.VECTOR_LENS_SPECS = VECTOR_LENS_SPECS; exports.sanitizeVectorLens = sanitizeVectorLens; exports.vectorLensColorMap = vectorLensColorMap; exports.mapVectorPaintColors = mapVectorPaintColors; exports.vectorLensDrawn = vectorLensDrawn; exports.resolveVectorLenses = resolveVectorLenses; exports.stripVectorLensViews = stripVectorLensViews; exports.WARP_STYLES = WARP_STYLES; exports.WARP_STYLE_LABELS = WARP_STYLE_LABELS; exports.warpPresetGrid = warpPresetGrid; exports.warpPresetMesh = warpPresetMesh; exports.warpMeshColumns = warpMeshColumns; exports.warpMeshRows = warpMeshRows; exports.isValidWarpMesh = isValidWarpMesh; exports.fitWarpMesh = fitWarpMesh; exports.identityWarpMesh = identityWarpMesh; exports.evalWarpMesh = evalWarpMesh; exports.splitWarpMeshU = splitWarpMeshU; exports.splitWarpMeshV = splitWarpMeshV; exports.removeWarpMeshSplitU = removeWarpMeshSplitU; exports.removeWarpMeshSplitV = removeWarpMeshSplitV; exports.mapWarpMeshPoints = mapWarpMeshPoints; exports.resizeWarpMesh = resizeWarpMesh; exports.warpMeshControlBounds = warpMeshControlBounds; exports.warpMeshParamAt = warpMeshParamAt; exports.dragWarpMeshPoint = dragWarpMeshPoint; exports.pullWarpMesh = pullWarpMesh; exports.warpMeshEditPoints = warpMeshEditPoints; exports.warpMeshGridCurves = warpMeshGridCurves; exports.vectorMeshFromOutline = vectorMeshFromOutline; exports.vectorMeshOutline = vectorMeshOutline; exports.VECTOR_EFFECT_DEFAULTS = VECTOR_EFFECT_DEFAULTS; exports.VECTOR_EFFECT_LABELS = VECTOR_EFFECT_LABELS; exports.VECTOR_EFFECT_PARAM_SPECS = VECTOR_EFFECT_PARAM_SPECS; exports.vectorEnvelopeMesh = vectorEnvelopeMesh; exports.vectorEnvelopeMap = vectorEnvelopeMap; exports.normalizeVectorEffectParams = normalizeVectorEffectParams; exports.createVectorEffect = createVectorEffect; exports.activeVectorEffects = activeVectorEffects; exports.hasOwnVectorAppearance = hasOwnVectorAppearance; exports.hasVectorAppearance = hasVectorAppearance; exports.isVectorLiveBoolean = isVectorLiveBoolean; exports.vectorOperandOperation = vectorOperandOperation; exports.vectorLiveBooleanSteps = vectorLiveBooleanSteps; exports.clearVectorLiveBooleanCache = clearVectorLiveBooleanCache; exports.foldVectorBooleanOperands = foldVectorBooleanOperands; exports.applyVectorEffects = applyVectorEffects; exports.vectorInstanceDrawn = vectorInstanceDrawn; exports.vectorChildAppearanceShapes = vectorChildAppearanceShapes; exports.vectorEffectInputPaths = vectorEffectInputPaths; exports.vectorEffectInputBounds = vectorEffectInputBounds; exports.vectorNodeEnvelope = vectorNodeEnvelope; exports.vectorEnvelopeFrame = vectorEnvelopeFrame; exports.vectorAppearanceShapes = vectorAppearanceShapes; exports.vectorAppearanceOutline = vectorAppearanceOutline; exports.vectorAppearanceNodes = vectorAppearanceNodes; exports.expandVectorAppearance = expandVectorAppearance; exports.expandVectorAppearances = expandVectorAppearances; exports.sanitizeVectorEffects = sanitizeVectorEffects; exports.transformVectorEffects = transformVectorEffects; exports.vectorEnteredGroups = vectorEnteredGroups; exports.isVectorMasterPage = isVectorMasterPage; exports.vectorPages = vectorPages; exports.vectorMasterPages = vectorMasterPages; exports.vectorMasterArt = vectorMasterArt; exports.resolveVectorMasterPages = resolveVectorMasterPages; exports.stripVectorMasterArt = stripVectorMasterArt; exports.isVectorConnector = isVectorConnector; exports.vectorConnectionSites = vectorConnectionSites; exports.nearestVectorConnectionSite = nearestVectorConnectionSite; exports.vectorConnectorWorldAnchors = vectorConnectorWorldAnchors; exports.routeVectorConnector = routeVectorConnector; exports.rerouteVectorConnectors = rerouteVectorConnectors; exports.sanitizeVectorConnector = sanitizeVectorConnector; exports.VECTOR_CONNECTOR_ROUTE_LABELS = VECTOR_CONNECTOR_ROUTE_LABELS; exports.VECTOR_CONNECTOR_SIDE_LABELS = VECTOR_CONNECTOR_SIDE_LABELS; exports.getVectorConnectorPanel = getVectorConnectorPanel; exports.vectorConnectorTargetAt = vectorConnectorTargetAt; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.vectorNodeLocalPaintBounds = vectorNodeLocalPaintBounds; exports.vectorNodeFilterSvg = vectorNodeFilterSvg; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg; exports.VECTOR_SPATIAL_MIN = VECTOR_SPATIAL_MIN; exports.VectorRTree = VectorRTree; exports.vectorNodePaintBox = vectorNodePaintBox; exports.vectorSpatialIndex = vectorSpatialIndex; exports.vectorNodesNear = vectorNodesNear; exports.cloneAnchor = cloneAnchor; exports.cloneSubpath = cloneSubpath; exports.cloneVectorNode = cloneVectorNode; exports.cloneVectorDocument = cloneVectorDocument; exports.hasPaint = hasPaint; exports.subpathSegmentCount = subpathSegmentCount; exports.subpathSegment = subpathSegment; exports.subpathsToBezier = subpathsToBezier; exports.vectorNodeToBezier = vectorNodeToBezier; exports.vectorPathData = vectorPathData; exports.inferAnchorType = inferAnchorType; exports.bezierToSubpaths = bezierToSubpaths; exports.walkVectorNodes = walkVectorNodes; exports.findVectorNode = findVectorNode; exports.locateVectorNode = locateVectorNode; exports.collectPaintedNodes = collectPaintedNodes; exports.collectPathNodes = collectPathNodes; exports.nodeMatrix = nodeMatrix; exports.vectorPathWorldBezier = vectorPathWorldBezier; exports.vectorNodeBounds = vectorNodeBounds; exports.unionBounds = unionBounds; exports.boundsIntersect = boundsIntersect; exports.boundsFromPoints = boundsFromPoints; exports.hitTestVectorNode = hitTestVectorNode; exports.vectorStrokeOutline = vectorStrokeOutline; exports.hitTestVectorNodes = hitTestVectorNodes; exports.nearestSegment = nearestSegment; exports.transformVectorNode = transformVectorNode; exports.vectorNodeRotation = vectorNodeRotation; exports.vectorWorldMatrix = vectorWorldMatrix; exports.vectorParentMatrix = vectorParentMatrix; exports.translateAnchor = translateAnchor; exports.moveAnchorHandle = moveAnchorHandle; exports.convertAnchor = convertAnchor; exports.insertAnchor = insertAnchor; exports.removeAnchors = removeAnchors; exports.reverseSubpath = reverseSubpath; exports.KAPPA = KAPPA2; exports.rectSubpath = rectSubpath; exports.ellipseSubpath = ellipseSubpath; exports.polygonSubpath = polygonSubpath; exports.starSubpath = starSubpath; exports.lineSubpath = lineSubpath; exports.roundSubpaths = roundSubpaths;
|