@pixerate/editor 0.96.0 → 0.98.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/THIRD_PARTY_NOTICES.md +4 -2
- package/dist/animation-editor/index.cjs +55 -53
- package/dist/animation-editor/index.cjs.map +1 -1
- package/dist/animation-editor/index.d.cts +3 -2
- package/dist/animation-editor/index.d.ts +3 -2
- package/dist/animation-editor/index.js +11 -9
- package/dist/animation-editor/index.js.map +1 -1
- package/dist/chunk-DWGZUSES.cjs +694 -0
- package/dist/chunk-DWGZUSES.cjs.map +1 -0
- package/dist/chunk-GX332W2C.js +181 -0
- package/dist/chunk-GX332W2C.js.map +1 -0
- package/dist/{chunk-7MD7C6XQ.cjs → chunk-JF5PXN7W.cjs} +96 -744
- package/dist/chunk-JF5PXN7W.cjs.map +1 -0
- package/dist/chunk-KKREERP2.js +694 -0
- package/dist/chunk-KKREERP2.js.map +1 -0
- package/dist/chunk-MUUXNRU4.cjs +181 -0
- package/dist/chunk-MUUXNRU4.cjs.map +1 -0
- package/dist/{chunk-KFTQ2PKP.js → chunk-WIR377F6.js} +1001 -61
- package/dist/chunk-WIR377F6.js.map +1 -0
- package/dist/{chunk-T422YCHR.cjs → chunk-WT6ZAWJP.cjs} +1023 -83
- package/dist/chunk-WT6ZAWJP.cjs.map +1 -0
- package/dist/{chunk-4JLB2USO.js → chunk-YGZNGDIT.js} +45 -693
- package/dist/chunk-YGZNGDIT.js.map +1 -0
- package/dist/image-editor/index.cjs +1519 -360
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +378 -5
- package/dist/image-editor/index.d.ts +378 -5
- package/dist/image-editor/index.js +1244 -85
- package/dist/image-editor/index.js.map +1 -1
- package/dist/raster/index.cjs +25 -2
- package/dist/raster/index.cjs.map +1 -1
- package/dist/raster/index.d.cts +143 -4
- package/dist/raster/index.d.ts +143 -4
- package/dist/raster/index.js +25 -2
- package/dist/{svg-ymShkNtu.d.cts → svg-C9r284x8.d.cts} +6 -9
- package/dist/{svg-Dh17jCyA.d.ts → svg-MVKBqwD4.d.ts} +6 -9
- package/dist/types-CwMPoRMU.d.cts +40 -0
- package/dist/types-CwMPoRMU.d.ts +40 -0
- package/dist/vector/index.cjs +490 -554
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +154 -292
- package/dist/vector/index.d.ts +154 -292
- package/dist/vector/index.js +91 -155
- package/dist/vector/index.js.map +1 -1
- package/dist/warp-B8rAguzs.d.ts +165 -0
- package/dist/warp-nYs2DPrx.d.cts +165 -0
- package/package.json +1 -1
- package/skills/pixerate-image-editor/SKILL.md +49 -3
- package/dist/chunk-4JLB2USO.js.map +0 -1
- package/dist/chunk-7MD7C6XQ.cjs.map +0 -1
- package/dist/chunk-KFTQ2PKP.js.map +0 -1
- package/dist/chunk-T422YCHR.cjs.map +0 -1
|
@@ -32,6 +32,32 @@ var _chunkXGD3FSNCcjs = require('./chunk-XGD3FSNC.cjs');
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
var _chunkDWGZUSEScjs = require('./chunk-DWGZUSES.cjs');
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
35
61
|
var _chunkMR3Z4OQIcjs = require('./chunk-MR3Z4OQI.cjs');
|
|
36
62
|
|
|
37
63
|
|
|
@@ -2001,573 +2027,6 @@ function mapBezierPath(path, f, tolerance = 0.1, options = {}) {
|
|
|
2001
2027
|
}
|
|
2002
2028
|
|
|
2003
2029
|
// src/vector/warp.ts
|
|
2004
|
-
var VECTOR_WARP_STYLES = [
|
|
2005
|
-
"arc",
|
|
2006
|
-
"arcLower",
|
|
2007
|
-
"arcUpper",
|
|
2008
|
-
"arch",
|
|
2009
|
-
"bulge",
|
|
2010
|
-
"shellLower",
|
|
2011
|
-
"shellUpper",
|
|
2012
|
-
"flag",
|
|
2013
|
-
"wave",
|
|
2014
|
-
"fish",
|
|
2015
|
-
"rise",
|
|
2016
|
-
"fisheye",
|
|
2017
|
-
"inflate",
|
|
2018
|
-
"squeeze",
|
|
2019
|
-
"twist"
|
|
2020
|
-
];
|
|
2021
|
-
var VECTOR_WARP_STYLE_LABELS = {
|
|
2022
|
-
arc: "Arc",
|
|
2023
|
-
arcLower: "Arc Lower",
|
|
2024
|
-
arcUpper: "Arc Upper",
|
|
2025
|
-
arch: "Arch",
|
|
2026
|
-
bulge: "Bulge",
|
|
2027
|
-
shellLower: "Shell Lower",
|
|
2028
|
-
shellUpper: "Shell Upper",
|
|
2029
|
-
flag: "Flag",
|
|
2030
|
-
wave: "Wave",
|
|
2031
|
-
fish: "Fish",
|
|
2032
|
-
rise: "Rise",
|
|
2033
|
-
fisheye: "Fisheye",
|
|
2034
|
-
inflate: "Inflate",
|
|
2035
|
-
squeeze: "Squeeze",
|
|
2036
|
-
twist: "Twist"
|
|
2037
|
-
};
|
|
2038
|
-
function restGrid() {
|
|
2039
|
-
return [0, 1, 2, 3].map((j) => [0, 1, 2, 3].map((i) => [i / 3, j / 3]));
|
|
2040
|
-
}
|
|
2041
|
-
function edgeArc(y, b, up, h) {
|
|
2042
|
-
if (Math.abs(b) < 1e-9) return [0, 1, 2, 3].map((i) => [i / 3, y]);
|
|
2043
|
-
const th = Math.abs(b) * Math.PI;
|
|
2044
|
-
const k = 4 / 3 * Math.tan(th / 4) * 0.5 / Math.sin(th / 2);
|
|
2045
|
-
const s = b > 0 === up ? -1 : 1;
|
|
2046
|
-
const c = Math.cos(th / 2);
|
|
2047
|
-
const n = Math.sin(th / 2);
|
|
2048
|
-
const dy = s * k * n / h;
|
|
2049
|
-
return [
|
|
2050
|
-
[0, y],
|
|
2051
|
-
[k * c, y + dy],
|
|
2052
|
-
[1 - k * c, y + dy],
|
|
2053
|
-
[1, y]
|
|
2054
|
-
];
|
|
2055
|
-
}
|
|
2056
|
-
function arcGrid(b, h) {
|
|
2057
|
-
if (Math.abs(b) < 1e-9) return restGrid();
|
|
2058
|
-
const up = b > 0;
|
|
2059
|
-
const th = Math.abs(b) * Math.PI;
|
|
2060
|
-
const r = 0.5 / Math.sin(th / 2);
|
|
2061
|
-
const k = 4 / 3 * Math.tan(th / 4);
|
|
2062
|
-
const s = up ? -1 : 1;
|
|
2063
|
-
const cy = up ? h + r * Math.cos(th / 2) : -r * Math.cos(th / 2);
|
|
2064
|
-
return [0, 1, 2, 3].map((j) => {
|
|
2065
|
-
const v2 = j / 3;
|
|
2066
|
-
const big = r + h * (up ? 1 - v2 : v2);
|
|
2067
|
-
const at2 = (a) => [0.5 + big * Math.sin(a), cy + s * big * Math.cos(a)];
|
|
2068
|
-
const tangent2 = (a) => [Math.cos(a), -s * Math.sin(a)];
|
|
2069
|
-
const p0 = at2(-th / 2);
|
|
2070
|
-
const p3 = at2(th / 2);
|
|
2071
|
-
const t0 = tangent2(-th / 2);
|
|
2072
|
-
const t1 = tangent2(th / 2);
|
|
2073
|
-
const l = k * big;
|
|
2074
|
-
const pts = [p0, [p0[0] + l * t0[0], p0[1] + l * t0[1]], [p3[0] - l * t1[0], p3[1] - l * t1[1]], p3];
|
|
2075
|
-
return pts.map((p) => [p[0], p[1] / h]);
|
|
2076
|
-
});
|
|
2077
|
-
}
|
|
2078
|
-
function blendRows(top, bottom) {
|
|
2079
|
-
return [0, 1, 2, 3].map((j) => {
|
|
2080
|
-
const t = j / 3;
|
|
2081
|
-
return [0, 1, 2, 3].map((i) => [top[i][0] + (bottom[i][0] - top[i][0]) * t, top[i][1] + (bottom[i][1] - top[i][1]) * t]);
|
|
2082
|
-
});
|
|
2083
|
-
}
|
|
2084
|
-
var INNER = [
|
|
2085
|
-
[1, 1, -1, -1],
|
|
2086
|
-
[1, 2, 1, -1],
|
|
2087
|
-
[2, 1, -1, 1],
|
|
2088
|
-
[2, 2, 1, 1]
|
|
2089
|
-
];
|
|
2090
|
-
function vectorWarpPresetGrid(style, b, hd, vd, vertical, aspect) {
|
|
2091
|
-
const h = vertical ? 1 / aspect : aspect;
|
|
2092
|
-
if (vertical) [hd, vd] = [vd, hd];
|
|
2093
|
-
let g = restGrid();
|
|
2094
|
-
switch (style) {
|
|
2095
|
-
case "arc":
|
|
2096
|
-
g = arcGrid(b, h);
|
|
2097
|
-
break;
|
|
2098
|
-
case "arch":
|
|
2099
|
-
g = [0, 1, 2, 3].map((j) => edgeArc(j / 3, b, true, h));
|
|
2100
|
-
break;
|
|
2101
|
-
case "bulge":
|
|
2102
|
-
g = blendRows(edgeArc(0, b, true, h), edgeArc(1, b, false, h));
|
|
2103
|
-
break;
|
|
2104
|
-
case "arcLower":
|
|
2105
|
-
g = blendRows(g[0], edgeArc(1, b, false, h));
|
|
2106
|
-
break;
|
|
2107
|
-
case "arcUpper":
|
|
2108
|
-
g = blendRows(edgeArc(0, b, true, h), g[3]);
|
|
2109
|
-
break;
|
|
2110
|
-
// The bulging edge and the outer points of the row next to it come from Arc (bent the other
|
|
2111
|
-
// way for Shell Lower); the rest stays put.
|
|
2112
|
-
case "shellLower": {
|
|
2113
|
-
const a = arcGrid(-b, h);
|
|
2114
|
-
g[3] = a[3];
|
|
2115
|
-
g[2][0] = a[2][0];
|
|
2116
|
-
g[2][3] = a[2][3];
|
|
2117
|
-
break;
|
|
2118
|
-
}
|
|
2119
|
-
case "shellUpper": {
|
|
2120
|
-
const a = arcGrid(b, h);
|
|
2121
|
-
g[0] = a[0];
|
|
2122
|
-
g[1][0] = a[1][0];
|
|
2123
|
-
g[1][3] = a[1][3];
|
|
2124
|
-
break;
|
|
2125
|
-
}
|
|
2126
|
-
case "flag":
|
|
2127
|
-
for (const row of g) {
|
|
2128
|
-
row[1][1] -= 2 * b;
|
|
2129
|
-
row[2][1] += 2 * b;
|
|
2130
|
-
}
|
|
2131
|
-
break;
|
|
2132
|
-
case "wave":
|
|
2133
|
-
for (const row of g.slice(1, 3)) {
|
|
2134
|
-
row[1][1] += 4 / 3 * b;
|
|
2135
|
-
row[2][1] -= 4 / 3 * b;
|
|
2136
|
-
}
|
|
2137
|
-
break;
|
|
2138
|
-
case "fish":
|
|
2139
|
-
[-2, -2 / 3, 2 / 3, 2].forEach((f, j) => {
|
|
2140
|
-
g[j][1][1] += f * b;
|
|
2141
|
-
g[j][2][1] -= f * b;
|
|
2142
|
-
});
|
|
2143
|
-
break;
|
|
2144
|
-
case "rise":
|
|
2145
|
-
for (const row of g) {
|
|
2146
|
-
row[0][1] += 2 * b;
|
|
2147
|
-
row[1][1] += 2 * b;
|
|
2148
|
-
}
|
|
2149
|
-
break;
|
|
2150
|
-
case "fisheye":
|
|
2151
|
-
for (const [j, i, dx, dy] of INNER) {
|
|
2152
|
-
g[j][i][0] += dx * 2 * b / 3;
|
|
2153
|
-
g[j][i][1] += dy * 2 * b / 3;
|
|
2154
|
-
}
|
|
2155
|
-
break;
|
|
2156
|
-
// Edge midpoints move out (Inflate) or the sides in (Squeeze) by b/3, the inner points by b/9.
|
|
2157
|
-
case "inflate":
|
|
2158
|
-
case "squeeze": {
|
|
2159
|
-
const s = style === "inflate" ? 1 : -1;
|
|
2160
|
-
for (const p of g[0].slice(1, 3)) p[1] -= b / 3;
|
|
2161
|
-
for (const p of g[3].slice(1, 3)) p[1] += b / 3;
|
|
2162
|
-
for (const row of g.slice(1, 3)) {
|
|
2163
|
-
row[0][0] -= s * b / 3;
|
|
2164
|
-
row[3][0] += s * b / 3;
|
|
2165
|
-
}
|
|
2166
|
-
for (const [j, i, dx, dy] of INNER) {
|
|
2167
|
-
g[j][i][0] += s * dx * b / 9;
|
|
2168
|
-
g[j][i][1] += dy * b / 9;
|
|
2169
|
-
}
|
|
2170
|
-
break;
|
|
2171
|
-
}
|
|
2172
|
-
// The inner points turn round the centre (the other way for a negative bend).
|
|
2173
|
-
case "twist": {
|
|
2174
|
-
const a = Math.abs(b);
|
|
2175
|
-
if (b >= 0) {
|
|
2176
|
-
g[1][1][0] += a;
|
|
2177
|
-
g[1][2][1] += a;
|
|
2178
|
-
g[2][1][1] -= a;
|
|
2179
|
-
g[2][2][0] -= a;
|
|
2180
|
-
} else {
|
|
2181
|
-
g[1][1][1] += a;
|
|
2182
|
-
g[1][2][0] -= a;
|
|
2183
|
-
g[2][1][0] += a;
|
|
2184
|
-
g[2][2][1] -= a;
|
|
2185
|
-
}
|
|
2186
|
-
break;
|
|
2187
|
-
}
|
|
2188
|
-
}
|
|
2189
|
-
if (vd !== 0) {
|
|
2190
|
-
const moved = (row, s) => {
|
|
2191
|
-
const m = [(row[0][0] + row[3][0]) / 2, (row[0][1] + row[3][1]) / 2];
|
|
2192
|
-
return row.map((p) => [m[0] + (p[0] - m[0]) * s - p[0], m[1] + (p[1] - m[1]) * s - p[1]]);
|
|
2193
|
-
};
|
|
2194
|
-
const d0 = moved(g[0], 1 - vd);
|
|
2195
|
-
const d3 = moved(g[3], 1 + vd);
|
|
2196
|
-
g.forEach((row, j) => {
|
|
2197
|
-
const t = j / 3;
|
|
2198
|
-
row.forEach((p, i) => {
|
|
2199
|
-
p[0] += d0[i][0] + (d3[i][0] - d0[i][0]) * t;
|
|
2200
|
-
p[1] += d0[i][1] + (d3[i][1] - d0[i][1]) * t;
|
|
2201
|
-
});
|
|
2202
|
-
});
|
|
2203
|
-
}
|
|
2204
|
-
if (hd !== 0) {
|
|
2205
|
-
for (let i = 0; i < 4; i++) {
|
|
2206
|
-
const s = 1 + hd * (2 * i / 3 - 1);
|
|
2207
|
-
const m = [(g[0][i][0] + g[3][i][0]) / 2, (g[0][i][1] + g[3][i][1]) / 2];
|
|
2208
|
-
for (const row of g) row[i] = [m[0] + (row[i][0] - m[0]) * s, m[1] + (row[i][1] - m[1]) * s];
|
|
2209
|
-
}
|
|
2210
|
-
}
|
|
2211
|
-
if (vertical) g = [0, 1, 2, 3].map((j) => [0, 1, 2, 3].map((i) => [g[i][j][1], g[i][j][0]]));
|
|
2212
|
-
return g;
|
|
2213
|
-
}
|
|
2214
|
-
function bernstein(t) {
|
|
2215
|
-
const s = 1 - t;
|
|
2216
|
-
return [s * s * s, 3 * s * s * t, 3 * s * t * t, t * t * t];
|
|
2217
|
-
}
|
|
2218
|
-
var lerp3 = (a, b, t) => ({ x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t });
|
|
2219
|
-
function splitCubic(p, t) {
|
|
2220
|
-
const a = lerp3(p[0], p[1], t);
|
|
2221
|
-
const b = lerp3(p[1], p[2], t);
|
|
2222
|
-
const c = lerp3(p[2], p[3], t);
|
|
2223
|
-
const d = lerp3(a, b, t);
|
|
2224
|
-
const e = lerp3(b, c, t);
|
|
2225
|
-
return [p[0], a, d, lerp3(d, e, t), e, c, p[3]];
|
|
2226
|
-
}
|
|
2227
|
-
var BERN_INV = [
|
|
2228
|
-
[1, 0, 0, 0],
|
|
2229
|
-
[-5 / 6, 3, -1.5, 1 / 3],
|
|
2230
|
-
[1 / 3, -1.5, 3, -5 / 6],
|
|
2231
|
-
[0, 0, 0, 1]
|
|
2232
|
-
];
|
|
2233
|
-
var pct = (v2) => typeof v2 === "number" && Number.isFinite(v2) ? Math.min(1, Math.max(-1, v2 / 100)) : 0;
|
|
2234
|
-
function vectorWarpPresetMesh(preset, bounds) {
|
|
2235
|
-
if (!VECTOR_WARP_STYLES.includes(preset.style)) return null;
|
|
2236
|
-
const { x, y, width: w, height: h } = bounds;
|
|
2237
|
-
if (!(w > 0 && h > 0)) return null;
|
|
2238
|
-
const b = pct(preset.bend);
|
|
2239
|
-
const hd = pct(preset.horizontal);
|
|
2240
|
-
const vd = pct(preset.vertical);
|
|
2241
|
-
if (b === 0 && hd === 0 && vd === 0) return null;
|
|
2242
|
-
const grid = vectorWarpPresetGrid(preset.style, b, hd, vd, preset.orientation === "vertical", h / w);
|
|
2243
|
-
return { us: [0, 1], vs: [0, 1], points: grid.flat().map((p) => ({ x: x + p[0] * w, y: y + p[1] * h })) };
|
|
2244
|
-
}
|
|
2245
|
-
var vectorMeshColumns = (m) => 3 * (m.us.length - 1) + 1;
|
|
2246
|
-
var vectorMeshRows = (m) => 3 * (m.vs.length - 1) + 1;
|
|
2247
|
-
function isValidVectorMesh(m) {
|
|
2248
|
-
if (!m || typeof m !== "object") return false;
|
|
2249
|
-
const { us, vs, points } = m;
|
|
2250
|
-
const knots = (k) => Array.isArray(k) && k.length >= 2 && k.length <= 65 && k[0] === 0 && k[k.length - 1] === 1 && k.every((v2, i) => typeof v2 === "number" && (i === 0 || v2 > k[i - 1]));
|
|
2251
|
-
if (!knots(us) || !knots(vs) || !Array.isArray(points)) return false;
|
|
2252
|
-
return points.length === (3 * (us.length - 1) + 1) * (3 * (vs.length - 1) + 1) && points.every((p) => !!p && Number.isFinite(p.x) && Number.isFinite(p.y));
|
|
2253
|
-
}
|
|
2254
|
-
function fitVectorMesh(f, us, vs) {
|
|
2255
|
-
const pc = us.length - 1;
|
|
2256
|
-
const pr = vs.length - 1;
|
|
2257
|
-
const nx = 3 * pc + 1;
|
|
2258
|
-
const points = new Array((3 * pr + 1) * nx);
|
|
2259
|
-
for (let pj = 0; pj < pr; pj++) {
|
|
2260
|
-
for (let pi = 0; pi < pc; pi++) {
|
|
2261
|
-
const s = [0, 1, 2, 3].map(
|
|
2262
|
-
(j) => [0, 1, 2, 3].map((i) => f(us[pi] + (us[pi + 1] - us[pi]) * i / 3, vs[pj] + (vs[pj + 1] - vs[pj]) * j / 3))
|
|
2263
|
-
);
|
|
2264
|
-
for (let j = 0; j < 4; j++) {
|
|
2265
|
-
for (let i = 0; i < 4; i++) {
|
|
2266
|
-
let x = 0;
|
|
2267
|
-
let y = 0;
|
|
2268
|
-
for (let a = 0; a < 4; a++) {
|
|
2269
|
-
for (let b = 0; b < 4; b++) {
|
|
2270
|
-
const k = BERN_INV[j][a] * BERN_INV[i][b];
|
|
2271
|
-
x += k * s[a][b].x;
|
|
2272
|
-
y += k * s[a][b].y;
|
|
2273
|
-
}
|
|
2274
|
-
}
|
|
2275
|
-
points[(3 * pj + j) * nx + 3 * pi + i] = { x, y };
|
|
2276
|
-
}
|
|
2277
|
-
}
|
|
2278
|
-
}
|
|
2279
|
-
}
|
|
2280
|
-
return { us: us.slice(), vs: vs.slice(), points };
|
|
2281
|
-
}
|
|
2282
|
-
var evenKnots = (n) => Array.from({ length: n + 1 }, (_, i) => i / n);
|
|
2283
|
-
var clampCount = (n) => Math.min(64, Math.max(1, Math.round(Number.isFinite(n) ? n : 1)));
|
|
2284
|
-
function vectorIdentityMesh(bounds, columns = 1, rows = 1) {
|
|
2285
|
-
return fitVectorMesh((s, t) => ({ x: bounds.x + s * bounds.width, y: bounds.y + t * bounds.height }), evenKnots(clampCount(columns)), evenKnots(clampCount(rows)));
|
|
2286
|
-
}
|
|
2287
|
-
function locate(knots, s) {
|
|
2288
|
-
const n = knots.length - 1;
|
|
2289
|
-
let i = 0;
|
|
2290
|
-
while (i + 1 < n && s > knots[i + 1]) i++;
|
|
2291
|
-
const w = knots[i + 1] - knots[i];
|
|
2292
|
-
return [i, w > 0 ? (s - knots[i]) / w : 0];
|
|
2293
|
-
}
|
|
2294
|
-
function evalVectorMesh(m, s, t) {
|
|
2295
|
-
const [pi, a] = locate(m.us, s);
|
|
2296
|
-
const [pj, b] = locate(m.vs, t);
|
|
2297
|
-
const ba = bernstein(a);
|
|
2298
|
-
const bb = bernstein(b);
|
|
2299
|
-
const nx = vectorMeshColumns(m);
|
|
2300
|
-
let x = 0;
|
|
2301
|
-
let y = 0;
|
|
2302
|
-
for (let j = 0; j < 4; j++) {
|
|
2303
|
-
for (let i = 0; i < 4; i++) {
|
|
2304
|
-
const p = m.points[(3 * pj + j) * nx + 3 * pi + i];
|
|
2305
|
-
const k = ba[i] * bb[j];
|
|
2306
|
-
x += p.x * k;
|
|
2307
|
-
y += p.y * k;
|
|
2308
|
-
}
|
|
2309
|
-
}
|
|
2310
|
-
return { x, y };
|
|
2311
|
-
}
|
|
2312
|
-
function transposeMesh(m) {
|
|
2313
|
-
const nx = vectorMeshColumns(m);
|
|
2314
|
-
const ny = vectorMeshRows(m);
|
|
2315
|
-
const points = new Array(nx * ny);
|
|
2316
|
-
for (let j = 0; j < ny; j++) for (let i = 0; i < nx; i++) points[i * ny + j] = m.points[j * nx + i];
|
|
2317
|
-
return { us: m.vs.slice(), vs: m.us.slice(), points };
|
|
2318
|
-
}
|
|
2319
|
-
function splitVectorMeshU(m, s) {
|
|
2320
|
-
const [pi, a] = locate(m.us, s);
|
|
2321
|
-
if (!(a >= 0.01 && a <= 0.99)) return null;
|
|
2322
|
-
const nx = vectorMeshColumns(m);
|
|
2323
|
-
const ny = vectorMeshRows(m);
|
|
2324
|
-
const points = [];
|
|
2325
|
-
for (let j = 0; j < ny; j++) {
|
|
2326
|
-
const row = m.points.slice(j * nx, (j + 1) * nx);
|
|
2327
|
-
points.push(...row.slice(0, 3 * pi), ...splitCubic(row.slice(3 * pi, 3 * pi + 4), a), ...row.slice(3 * pi + 4));
|
|
2328
|
-
}
|
|
2329
|
-
const us = m.us.slice();
|
|
2330
|
-
us.splice(pi + 1, 0, Math.min(1, Math.max(0, s)));
|
|
2331
|
-
return { us, vs: m.vs.slice(), points };
|
|
2332
|
-
}
|
|
2333
|
-
function splitVectorMeshV(m, t) {
|
|
2334
|
-
const out = splitVectorMeshU(transposeMesh(m), t);
|
|
2335
|
-
return out && transposeMesh(out);
|
|
2336
|
-
}
|
|
2337
|
-
function removeVectorMeshSplitU(m, k) {
|
|
2338
|
-
if (k <= 0 || k + 1 >= m.us.length) return null;
|
|
2339
|
-
const a = (m.us[k] - m.us[k - 1]) / (m.us[k + 1] - m.us[k - 1]);
|
|
2340
|
-
const nx = vectorMeshColumns(m);
|
|
2341
|
-
const ny = vectorMeshRows(m);
|
|
2342
|
-
const c0 = 3 * (k - 1);
|
|
2343
|
-
const points = [];
|
|
2344
|
-
for (let j = 0; j < ny; j++) {
|
|
2345
|
-
const row = m.points.slice(j * nx, (j + 1) * nx);
|
|
2346
|
-
const [p0, q1, r2, p3] = [row[c0], row[c0 + 1], row[c0 + 5], row[c0 + 6]];
|
|
2347
|
-
const p1 = { x: (q1.x - (1 - a) * p0.x) / a, y: (q1.y - (1 - a) * p0.y) / a };
|
|
2348
|
-
const p2 = { x: (r2.x - a * p3.x) / (1 - a), y: (r2.y - a * p3.y) / (1 - a) };
|
|
2349
|
-
points.push(...row.slice(0, c0), p0, p1, p2, p3, ...row.slice(c0 + 7));
|
|
2350
|
-
}
|
|
2351
|
-
const us = m.us.slice();
|
|
2352
|
-
us.splice(k, 1);
|
|
2353
|
-
return { us, vs: m.vs.slice(), points };
|
|
2354
|
-
}
|
|
2355
|
-
function removeVectorMeshSplitV(m, k) {
|
|
2356
|
-
const out = removeVectorMeshSplitU(transposeMesh(m), k);
|
|
2357
|
-
return out && transposeMesh(out);
|
|
2358
|
-
}
|
|
2359
|
-
function mapVectorMeshPoints(m, f) {
|
|
2360
|
-
return { us: m.us.slice(), vs: m.vs.slice(), points: m.points.map((p) => f(p)) };
|
|
2361
|
-
}
|
|
2362
|
-
function resizeVectorMesh(m, columns, rows) {
|
|
2363
|
-
const cols = clampCount(columns);
|
|
2364
|
-
const rws = clampCount(rows);
|
|
2365
|
-
if (m.us.length - 1 === cols && m.vs.length - 1 === rws) return m;
|
|
2366
|
-
const us = evenKnots(cols);
|
|
2367
|
-
const vs = evenKnots(rws);
|
|
2368
|
-
const has = (list, v2) => list.some((k) => Math.abs(k - v2) < 1e-12);
|
|
2369
|
-
if (m.us.every((u) => has(us, u)) && m.vs.every((v2) => has(vs, v2))) {
|
|
2370
|
-
let out = m;
|
|
2371
|
-
for (const u of us) if (!has(out.us, u)) out = _nullishCoalesce(splitVectorMeshU(out, u), () => ( out));
|
|
2372
|
-
for (const v2 of vs) if (!has(out.vs, v2)) out = _nullishCoalesce(splitVectorMeshV(out, v2), () => ( out));
|
|
2373
|
-
return out;
|
|
2374
|
-
}
|
|
2375
|
-
return fitVectorMesh((s, t) => evalVectorMesh(m, s, t), us, vs);
|
|
2376
|
-
}
|
|
2377
|
-
function vectorMeshControlBounds(m) {
|
|
2378
|
-
let minX = Infinity;
|
|
2379
|
-
let minY = Infinity;
|
|
2380
|
-
let maxX = -Infinity;
|
|
2381
|
-
let maxY = -Infinity;
|
|
2382
|
-
for (const p of m.points) {
|
|
2383
|
-
minX = Math.min(minX, p.x);
|
|
2384
|
-
minY = Math.min(minY, p.y);
|
|
2385
|
-
maxX = Math.max(maxX, p.x);
|
|
2386
|
-
maxY = Math.max(maxY, p.y);
|
|
2387
|
-
}
|
|
2388
|
-
return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };
|
|
2389
|
-
}
|
|
2390
|
-
function vectorMeshParamAt(m, p) {
|
|
2391
|
-
const n = 48;
|
|
2392
|
-
let best = { s: 0.5, t: 0.5, d: Infinity };
|
|
2393
|
-
for (let j = 0; j <= n; j++) {
|
|
2394
|
-
for (let i = 0; i <= n; i++) {
|
|
2395
|
-
const q2 = evalVectorMesh(m, i / n, j / n);
|
|
2396
|
-
const d = (q2.x - p.x) ** 2 + (q2.y - p.y) ** 2;
|
|
2397
|
-
if (d < best.d) best = { s: i / n, t: j / n, d };
|
|
2398
|
-
}
|
|
2399
|
-
}
|
|
2400
|
-
let { s, t } = best;
|
|
2401
|
-
for (let k = 0; k < 12; k++) {
|
|
2402
|
-
const h = 1e-5;
|
|
2403
|
-
const q2 = evalVectorMesh(m, s, t);
|
|
2404
|
-
const qs = evalVectorMesh(m, s + h, t);
|
|
2405
|
-
const qt = evalVectorMesh(m, s, t + h);
|
|
2406
|
-
const a = (qs.x - q2.x) / h;
|
|
2407
|
-
const b = (qt.x - q2.x) / h;
|
|
2408
|
-
const c = (qs.y - q2.y) / h;
|
|
2409
|
-
const d = (qt.y - q2.y) / h;
|
|
2410
|
-
const det = a * d - b * c;
|
|
2411
|
-
if (Math.abs(det) < 1e-12) break;
|
|
2412
|
-
const ex = p.x - q2.x;
|
|
2413
|
-
const ey = p.y - q2.y;
|
|
2414
|
-
s = Math.min(1, Math.max(0, s + (d * ex - b * ey) / det));
|
|
2415
|
-
t = Math.min(1, Math.max(0, t + (a * ey - c * ex) / det));
|
|
2416
|
-
}
|
|
2417
|
-
const q = evalVectorMesh(m, s, t);
|
|
2418
|
-
return { s, t, distance: Math.hypot(q.x - p.x, q.y - p.y) };
|
|
2419
|
-
}
|
|
2420
|
-
function smoothLines(m, i0, i1, j0, j1) {
|
|
2421
|
-
const nx = vectorMeshColumns(m);
|
|
2422
|
-
i1 = Math.min(i1, nx);
|
|
2423
|
-
j1 = Math.min(j1, vectorMeshRows(m));
|
|
2424
|
-
const triples = [];
|
|
2425
|
-
for (let a = 1; a < m.us.length - 1; a++) {
|
|
2426
|
-
if (3 * a >= i0 && 3 * a < i1)
|
|
2427
|
-
for (let j = j0; j < j1; j++) triples.push([j * nx + 3 * a - 1, j * nx + 3 * a, j * nx + 3 * a + 1, m.us[a] - m.us[a - 1], m.us[a + 1] - m.us[a]]);
|
|
2428
|
-
}
|
|
2429
|
-
for (let b = 1; b < m.vs.length - 1; b++) {
|
|
2430
|
-
if (3 * b >= j0 && 3 * b < j1)
|
|
2431
|
-
for (let i = i0; i < i1; i++) triples.push([(3 * b - 1) * nx + i, 3 * b * nx + i, (3 * b + 1) * nx + i, m.vs[b] - m.vs[b - 1], m.vs[b + 1] - m.vs[b]]);
|
|
2432
|
-
}
|
|
2433
|
-
for (const [l, c, r, hl, hr] of triples) {
|
|
2434
|
-
const pl = m.points[l];
|
|
2435
|
-
const pc = m.points[c];
|
|
2436
|
-
const pr = m.points[r];
|
|
2437
|
-
const tx = ((pc.x - pl.x) / hl + (pr.x - pc.x) / hr) / 2;
|
|
2438
|
-
const ty = ((pc.y - pl.y) / hl + (pr.y - pc.y) / hr) / 2;
|
|
2439
|
-
m.points[l] = { x: pc.x - tx * hl, y: pc.y - ty * hl };
|
|
2440
|
-
m.points[r] = { x: pc.x + tx * hr, y: pc.y + ty * hr };
|
|
2441
|
-
}
|
|
2442
|
-
}
|
|
2443
|
-
function dragVectorMeshPoint(base, index, d) {
|
|
2444
|
-
if (index < 0 || index >= base.points.length || !Number.isFinite(d.x) || !Number.isFinite(d.y)) return base;
|
|
2445
|
-
const out = { us: base.us.slice(), vs: base.vs.slice(), points: base.points.slice() };
|
|
2446
|
-
const nx = vectorMeshColumns(base);
|
|
2447
|
-
const ny = vectorMeshRows(base);
|
|
2448
|
-
const i = index % nx;
|
|
2449
|
-
const j = Math.floor(index / nx);
|
|
2450
|
-
const shift = (ii, jj, v2) => {
|
|
2451
|
-
if (ii < 0 || jj < 0 || ii >= nx || jj >= ny) return;
|
|
2452
|
-
const p = out.points[jj * nx + ii];
|
|
2453
|
-
out.points[jj * nx + ii] = { x: p.x + v2.x, y: p.y + v2.y };
|
|
2454
|
-
};
|
|
2455
|
-
const span = (knots, k) => k > 0 && k + 1 < knots.length ? [knots[k] - knots[k - 1], knots[k + 1] - knots[k]] : null;
|
|
2456
|
-
const ri = i % 3;
|
|
2457
|
-
const rj = j % 3;
|
|
2458
|
-
if (ri === 0 && rj === 0) {
|
|
2459
|
-
for (let dj = -1; dj <= 1; dj++) for (let di = -1; di <= 1; di++) shift(i + di, j + dj, d);
|
|
2460
|
-
} else if (ri === 0) {
|
|
2461
|
-
for (let di = -1; di <= 1; di++) shift(i + di, j, d);
|
|
2462
|
-
const sp = span(base.vs, Math.floor(j / 3) + (rj === 2 ? 1 : 0));
|
|
2463
|
-
if (sp) {
|
|
2464
|
-
const [other, k] = rj === 1 ? [j - 2, sp[0] / sp[1]] : [j + 2, sp[1] / sp[0]];
|
|
2465
|
-
for (let di = -1; di <= 1; di++) shift(i + di, other, { x: -d.x * k, y: -d.y * k });
|
|
2466
|
-
}
|
|
2467
|
-
} else if (rj === 0) {
|
|
2468
|
-
for (let dj = -1; dj <= 1; dj++) shift(i, j + dj, d);
|
|
2469
|
-
const sp = span(base.us, Math.floor(i / 3) + (ri === 2 ? 1 : 0));
|
|
2470
|
-
if (sp) {
|
|
2471
|
-
const [other, k] = ri === 1 ? [i - 2, sp[0] / sp[1]] : [i + 2, sp[1] / sp[0]];
|
|
2472
|
-
for (let dj = -1; dj <= 1; dj++) shift(other, j + dj, { x: -d.x * k, y: -d.y * k });
|
|
2473
|
-
}
|
|
2474
|
-
} else shift(i, j, d);
|
|
2475
|
-
return out;
|
|
2476
|
-
}
|
|
2477
|
-
function pullVectorMesh(base, s, t, d) {
|
|
2478
|
-
const BORDER_ZONE = 0.12;
|
|
2479
|
-
const REACH = 1.8;
|
|
2480
|
-
if (!Number.isFinite(d.x) || !Number.isFinite(d.y)) return base;
|
|
2481
|
-
const m = { us: base.us.slice(), vs: base.vs.slice(), points: base.points.slice() };
|
|
2482
|
-
const cols = m.us.length - 1;
|
|
2483
|
-
const rows = m.vs.length - 1;
|
|
2484
|
-
const [pi, a] = locate(m.us, s);
|
|
2485
|
-
const [pj, b] = locate(m.vs, t);
|
|
2486
|
-
const ba = bernstein(a);
|
|
2487
|
-
const bb = bernstein(b);
|
|
2488
|
-
const nx = vectorMeshColumns(m);
|
|
2489
|
-
const ny = vectorMeshRows(m);
|
|
2490
|
-
const anchor = (ai, aj) => _nullishCoalesce(base.points[3 * aj * nx + 3 * ai], () => ( { x: 0, y: 0 }));
|
|
2491
|
-
const at0 = evalVectorMesh(base, s, t);
|
|
2492
|
-
const target = { x: at0.x + d.x, y: at0.y + d.y };
|
|
2493
|
-
let size = 1;
|
|
2494
|
-
for (const k of ["x", "y"]) {
|
|
2495
|
-
const vals = [anchor(pi, pj)[k], anchor(pi + 1, pj)[k], anchor(pi, pj + 1)[k], anchor(pi + 1, pj + 1)[k]];
|
|
2496
|
-
size = Math.max(size, Math.max(...vals) - Math.min(...vals));
|
|
2497
|
-
}
|
|
2498
|
-
const radius = REACH * size;
|
|
2499
|
-
const innerW = (ba[1] + ba[2]) * (bb[1] + bb[2]);
|
|
2500
|
-
const interior = Math.min(1, Math.max(0, innerW / 0.5625));
|
|
2501
|
-
const toBorder = Math.min(s, 1 - s, t, 1 - t);
|
|
2502
|
-
const nearBorder = Math.min(1, Math.max(0, 1 - toBorder / BORDER_ZONE));
|
|
2503
|
-
const meshCorner = (ai, aj) => (ai === 0 || ai === cols) && (aj === 0 || aj === rows);
|
|
2504
|
-
const onBorder = (ai, aj) => ai === 0 || ai === cols || aj === 0 || aj === rows;
|
|
2505
|
-
const reach = (ai, aj, wa, wb) => meshCorner(ai, aj) ? 0 : wa * wb * (onBorder(ai, aj) ? nearBorder : 1);
|
|
2506
|
-
const corner = [
|
|
2507
|
-
[pi, pj, reach(pi, pj, ba[0] + ba[1], bb[0] + bb[1])],
|
|
2508
|
-
[pi + 1, pj, reach(pi + 1, pj, ba[2] + ba[3], bb[0] + bb[1])],
|
|
2509
|
-
[pi, pj + 1, reach(pi, pj + 1, ba[0] + ba[1], bb[2] + bb[3])],
|
|
2510
|
-
[pi + 1, pj + 1, reach(pi + 1, pj + 1, ba[2] + ba[3], bb[2] + bb[3])]
|
|
2511
|
-
];
|
|
2512
|
-
const share = new Array((cols + 1) * (rows + 1)).fill(0);
|
|
2513
|
-
for (let aj = 0; aj <= rows; aj++) {
|
|
2514
|
-
for (let ai = 0; ai <= cols; ai++) {
|
|
2515
|
-
const p = anchor(ai, aj);
|
|
2516
|
-
const x = Math.min(1, Math.max(0, Math.hypot(p.x - at0.x, p.y - at0.y) / radius));
|
|
2517
|
-
const fall = 0.5 * (1 + Math.cos(Math.PI * x));
|
|
2518
|
-
const edge = meshCorner(ai, aj) ? 0 : onBorder(ai, aj) ? nearBorder : 1;
|
|
2519
|
-
share[aj * (cols + 1) + ai] = fall * edge;
|
|
2520
|
-
}
|
|
2521
|
-
}
|
|
2522
|
-
for (const [ai, aj, w] of corner) share[aj * (cols + 1) + ai] = Math.max(share[aj * (cols + 1) + ai], (1 - interior) * w);
|
|
2523
|
-
const move = (idx, k, v2) => {
|
|
2524
|
-
const p = m.points[idx];
|
|
2525
|
-
m.points[idx] = { x: p.x + v2.x * k, y: p.y + v2.y * k };
|
|
2526
|
-
};
|
|
2527
|
-
for (let j = 0; j < ny; j++) {
|
|
2528
|
-
for (let i = 0; i < nx; i++) {
|
|
2529
|
-
const ai = Math.min(cols, Math.floor((i + 1) / 3));
|
|
2530
|
-
const aj = Math.min(rows, Math.floor((j + 1) / 3));
|
|
2531
|
-
move(j * nx + i, share[aj * (cols + 1) + ai], d);
|
|
2532
|
-
}
|
|
2533
|
-
}
|
|
2534
|
-
let norm = 0;
|
|
2535
|
-
for (const j of [1, 2]) for (const i of [1, 2]) norm += (ba[i] * bb[j]) ** 2;
|
|
2536
|
-
const cornerNorm = corner.reduce((acc, c) => acc + c[2] * c[2], 0);
|
|
2537
|
-
const innerPart = cornerNorm > 1e-12 ? Math.min(1, innerW / 0.15) : 1;
|
|
2538
|
-
const edgeHandles = [];
|
|
2539
|
-
for (const k of [1, 2]) {
|
|
2540
|
-
if (pi === 0) edgeHandles.push([(3 * pj + k) * nx + 3 * pi, ba[0] * bb[k]]);
|
|
2541
|
-
if (pi + 1 === cols) edgeHandles.push([(3 * pj + k) * nx + 3 * pi + 3, ba[3] * bb[k]]);
|
|
2542
|
-
if (pj === 0) edgeHandles.push([3 * pj * nx + 3 * pi + k, ba[k] * bb[0]]);
|
|
2543
|
-
if (pj + 1 === rows) edgeHandles.push([(3 * pj + 3) * nx + 3 * pi + k, ba[k] * bb[3]]);
|
|
2544
|
-
}
|
|
2545
|
-
const edgeNorm = edgeHandles.reduce((acc, e) => acc + e[1] * e[1], 0);
|
|
2546
|
-
const edgePart = edgeNorm > 1e-12 ? nearBorder : 0;
|
|
2547
|
-
const innerShare = (1 - edgePart) * innerPart;
|
|
2548
|
-
const cornerShare = (1 - edgePart) * (1 - innerPart);
|
|
2549
|
-
for (let iter = 0; iter < 60; iter++) {
|
|
2550
|
-
const now = evalVectorMesh(m, s, t);
|
|
2551
|
-
const rem = { x: target.x - now.x, y: target.y - now.y };
|
|
2552
|
-
if (Math.hypot(rem.x, rem.y) < 1e-9) break;
|
|
2553
|
-
if (innerShare > 0 && norm > 0) for (const j of [1, 2]) for (const i of [1, 2]) move((3 * pj + j) * nx + 3 * pi + i, ba[i] * bb[j] / norm * innerShare, rem);
|
|
2554
|
-
if (edgePart > 0) for (const [idx, w] of edgeHandles) move(idx, w / edgeNorm * edgePart, rem);
|
|
2555
|
-
if (cornerShare > 0 && cornerNorm > 0) {
|
|
2556
|
-
for (const [ai, aj, w] of corner) {
|
|
2557
|
-
const k = w / cornerNorm * cornerShare;
|
|
2558
|
-
for (let dj = -1; dj <= 1; dj++) {
|
|
2559
|
-
for (let di = -1; di <= 1; di++) {
|
|
2560
|
-
const i = 3 * ai + di;
|
|
2561
|
-
const j = 3 * aj + dj;
|
|
2562
|
-
if (i >= 0 && j >= 0 && i < nx && j < ny) move(j * nx + i, k, rem);
|
|
2563
|
-
}
|
|
2564
|
-
}
|
|
2565
|
-
}
|
|
2566
|
-
}
|
|
2567
|
-
for (let k = 0; k < 3; k++) smoothLines(m, Math.max(0, 3 * pi - 3), 3 * pi + 7, Math.max(0, 3 * pj - 3), 3 * pj + 7);
|
|
2568
|
-
}
|
|
2569
|
-
return m;
|
|
2570
|
-
}
|
|
2571
2030
|
function polylineAt(pts) {
|
|
2572
2031
|
const acc = [0];
|
|
2573
2032
|
for (let i = 1; i < pts.length; i++) acc.push(acc[i - 1] + Math.hypot(pts[i].x - pts[i - 1].x, pts[i].y - pts[i - 1].y));
|
|
@@ -2578,7 +2037,7 @@ function polylineAt(pts) {
|
|
|
2578
2037
|
let i = 1;
|
|
2579
2038
|
while (i < acc.length - 1 && acc[i] < L) i++;
|
|
2580
2039
|
const seg = acc[i] - acc[i - 1];
|
|
2581
|
-
return
|
|
2040
|
+
return _chunkDWGZUSEScjs.lerpVec2.call(void 0, pts[i - 1], pts[i], seg > 0 ? (L - acc[i - 1]) / seg : 0);
|
|
2582
2041
|
};
|
|
2583
2042
|
}
|
|
2584
2043
|
function sampleSubpath(sp, per = 24) {
|
|
@@ -2590,10 +2049,10 @@ function sampleSubpath(sp, per = 24) {
|
|
|
2590
2049
|
const c = [{ x: a.x, y: a.y }, _nullishCoalesce(a.out, () => ( a)), _nullishCoalesce(b.in, () => ( b)), { x: b.x, y: b.y }];
|
|
2591
2050
|
for (let k = 0; k < per; k++) {
|
|
2592
2051
|
const t = k / per;
|
|
2593
|
-
const ab =
|
|
2594
|
-
const bc =
|
|
2595
|
-
const cd =
|
|
2596
|
-
out.push(
|
|
2052
|
+
const ab = _chunkDWGZUSEScjs.lerpVec2.call(void 0, c[0], c[1], t);
|
|
2053
|
+
const bc = _chunkDWGZUSEScjs.lerpVec2.call(void 0, c[1], c[2], t);
|
|
2054
|
+
const cd = _chunkDWGZUSEScjs.lerpVec2.call(void 0, c[2], c[3], t);
|
|
2055
|
+
out.push(_chunkDWGZUSEScjs.lerpVec2.call(void 0, _chunkDWGZUSEScjs.lerpVec2.call(void 0, ab, bc, t), _chunkDWGZUSEScjs.lerpVec2.call(void 0, bc, cd, t), t));
|
|
2597
2056
|
}
|
|
2598
2057
|
}
|
|
2599
2058
|
return out;
|
|
@@ -2651,11 +2110,11 @@ function vectorMeshFromOutline(sp, columns = 4, rows = 4) {
|
|
|
2651
2110
|
y: (1 - t) * T.y + t * B.y + (1 - s) * L.y + s * R.y - ((1 - s) * (1 - t) * p00.y + s * (1 - t) * p10.y + (1 - s) * t * p01.y + s * t * p11.y)
|
|
2652
2111
|
};
|
|
2653
2112
|
};
|
|
2654
|
-
return
|
|
2113
|
+
return _chunkDWGZUSEScjs.fitWarpMesh.call(void 0, coons, _chunkDWGZUSEScjs.evenKnots.call(void 0, _chunkDWGZUSEScjs.clampMeshCount.call(void 0, columns)), _chunkDWGZUSEScjs.evenKnots.call(void 0, _chunkDWGZUSEScjs.clampMeshCount.call(void 0, rows)));
|
|
2655
2114
|
}
|
|
2656
2115
|
function vectorMeshOutline(m) {
|
|
2657
|
-
const nx =
|
|
2658
|
-
const ny =
|
|
2116
|
+
const nx = _chunkDWGZUSEScjs.warpMeshColumns.call(void 0, m);
|
|
2117
|
+
const ny = _chunkDWGZUSEScjs.warpMeshRows.call(void 0, m);
|
|
2659
2118
|
const pt2 = (i, j) => m.points[j * nx + i];
|
|
2660
2119
|
const runs = [];
|
|
2661
2120
|
for (let i = 0; i + 3 < nx; i += 3) runs.push([pt2(i, 0), pt2(i + 1, 0), pt2(i + 2, 0), pt2(i + 3, 0)]);
|
|
@@ -2668,31 +2127,6 @@ function vectorMeshOutline(m) {
|
|
|
2668
2127
|
});
|
|
2669
2128
|
return { closed: true, anchors };
|
|
2670
2129
|
}
|
|
2671
|
-
function vectorMeshEditPoints(m) {
|
|
2672
|
-
const nx = vectorMeshColumns(m);
|
|
2673
|
-
const ny = vectorMeshRows(m);
|
|
2674
|
-
const anchors = [];
|
|
2675
|
-
const handles = [];
|
|
2676
|
-
for (let j = 0; j < ny; j++) {
|
|
2677
|
-
for (let i = 0; i < nx; i++) {
|
|
2678
|
-
const ri = i % 3;
|
|
2679
|
-
const rj = j % 3;
|
|
2680
|
-
if (ri === 0 && rj === 0) anchors.push(j * nx + i);
|
|
2681
|
-
else if (ri === 0) handles.push({ index: j * nx + i, anchor: (rj === 1 ? j - 1 : j + 1) * nx + i });
|
|
2682
|
-
else if (rj === 0) handles.push({ index: j * nx + i, anchor: j * nx + (ri === 1 ? i - 1 : i + 1) });
|
|
2683
|
-
}
|
|
2684
|
-
}
|
|
2685
|
-
return { anchors, handles };
|
|
2686
|
-
}
|
|
2687
|
-
function vectorMeshGridCurves(m) {
|
|
2688
|
-
const nx = vectorMeshColumns(m);
|
|
2689
|
-
const ny = vectorMeshRows(m);
|
|
2690
|
-
const pt2 = (i, j) => m.points[j * nx + i];
|
|
2691
|
-
const out = [];
|
|
2692
|
-
for (let j = 0; j < ny; j += 3) for (let i = 0; i + 3 < nx; i += 3) out.push([pt2(i, j), pt2(i + 1, j), pt2(i + 2, j), pt2(i + 3, j)]);
|
|
2693
|
-
for (let i = 0; i < nx; i += 3) for (let j = 0; j + 3 < ny; j += 3) out.push([pt2(i, j), pt2(i, j + 1), pt2(i, j + 2), pt2(i, j + 3)]);
|
|
2694
|
-
return out;
|
|
2695
|
-
}
|
|
2696
2130
|
|
|
2697
2131
|
// src/vector/appearance.ts
|
|
2698
2132
|
var VECTOR_EFFECT_DEFAULTS = {
|
|
@@ -2819,7 +2253,7 @@ var VECTOR_EFFECT_PARAM_SPECS = {
|
|
|
2819
2253
|
key: "style",
|
|
2820
2254
|
label: "Warp",
|
|
2821
2255
|
kind: "select",
|
|
2822
|
-
options: [...
|
|
2256
|
+
options: [..._chunkDWGZUSEScjs.WARP_STYLES.map((value) => ({ value, label: _chunkDWGZUSEScjs.WARP_STYLE_LABELS[value] })), { value: "mesh", label: "Mesh" }]
|
|
2823
2257
|
},
|
|
2824
2258
|
{ key: "bend", label: "Bend %", kind: "number", min: -100, max: 100, step: 1, slider: true },
|
|
2825
2259
|
{ key: "horizontal", label: "Horizontal distortion %", kind: "number", min: -100, max: 100, step: 1, slider: true },
|
|
@@ -2839,16 +2273,16 @@ var VECTOR_EFFECT_PARAM_SPECS = {
|
|
|
2839
2273
|
};
|
|
2840
2274
|
var cloneMesh = (m) => ({ us: m.us.slice(), vs: m.vs.slice(), points: m.points.map((p) => ({ x: p.x, y: p.y })) });
|
|
2841
2275
|
function vectorEnvelopeMesh(params, bounds) {
|
|
2842
|
-
if (params.style === "mesh") return _nullishCoalesce(params.mesh, () => (
|
|
2843
|
-
const preset =
|
|
2844
|
-
return preset ?
|
|
2276
|
+
if (params.style === "mesh") return _nullishCoalesce(params.mesh, () => ( _chunkDWGZUSEScjs.identityWarpMesh.call(void 0, bounds, params.columns, params.rows)));
|
|
2277
|
+
const preset = _chunkDWGZUSEScjs.warpPresetMesh.call(void 0, { style: params.style, bend: params.bend, horizontal: params.horizontal, vertical: params.vertical, orientation: params.orientation }, bounds);
|
|
2278
|
+
return preset ? _chunkDWGZUSEScjs.resizeWarpMesh.call(void 0, preset, params.columns, params.rows) : _chunkDWGZUSEScjs.identityWarpMesh.call(void 0, bounds, params.columns, params.rows);
|
|
2845
2279
|
}
|
|
2846
2280
|
function vectorEnvelopeMap(params, bounds) {
|
|
2847
2281
|
if (!bounds || !(bounds.width > 0 && bounds.height > 0)) return null;
|
|
2848
|
-
const mesh = params.style === "mesh" ? params.mesh :
|
|
2282
|
+
const mesh = params.style === "mesh" ? params.mesh : _chunkDWGZUSEScjs.warpPresetMesh.call(void 0, { style: params.style, bend: params.bend, horizontal: params.horizontal, vertical: params.vertical, orientation: params.orientation }, bounds);
|
|
2849
2283
|
if (!mesh) return null;
|
|
2850
2284
|
const { x, y, width, height } = bounds;
|
|
2851
|
-
return (p) =>
|
|
2285
|
+
return (p) => _chunkDWGZUSEScjs.evalWarpMesh.call(void 0, mesh, (p.x - x) / width, (p.y - y) / height);
|
|
2852
2286
|
}
|
|
2853
2287
|
function pathsBounds(paths) {
|
|
2854
2288
|
let minX = Infinity;
|
|
@@ -2890,12 +2324,12 @@ function normalizeVectorEffectParams(type, params, base) {
|
|
|
2890
2324
|
o.rows = Math.round(o.rows);
|
|
2891
2325
|
o.columns = Math.round(o.columns);
|
|
2892
2326
|
const given = _optionalChain([params, 'optionalAccess', _39 => _39.mesh]);
|
|
2893
|
-
let mesh = given !== void 0 ?
|
|
2327
|
+
let mesh = given !== void 0 ? _chunkDWGZUSEScjs.isValidWarpMesh.call(void 0, given) ? cloneMesh(given) : null : o.mesh;
|
|
2894
2328
|
if (o.style !== "mesh") mesh = null;
|
|
2895
2329
|
if (mesh && given !== void 0) {
|
|
2896
2330
|
o.columns = mesh.us.length - 1;
|
|
2897
2331
|
o.rows = mesh.vs.length - 1;
|
|
2898
|
-
} else if (mesh) mesh =
|
|
2332
|
+
} else if (mesh) mesh = _chunkDWGZUSEScjs.resizeWarpMesh.call(void 0, mesh, o.columns, o.rows);
|
|
2899
2333
|
o.mesh = mesh;
|
|
2900
2334
|
}
|
|
2901
2335
|
return out;
|
|
@@ -3109,7 +2543,7 @@ function childShapes(child, index) {
|
|
|
3109
2543
|
const k = _nullishCoalesce(child.opacity, () => ( 1));
|
|
3110
2544
|
return vectorAppearanceShapes(child).map((s) => ({
|
|
3111
2545
|
source: s.source,
|
|
3112
|
-
path: m && !isIdentityMatrix(m) ? _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, s.path, m) : s.path,
|
|
2546
|
+
path: m && !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m) ? _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, s.path, m) : s.path,
|
|
3113
2547
|
opacity: s.opacity * k,
|
|
3114
2548
|
order: [index, ...s.order]
|
|
3115
2549
|
}));
|
|
@@ -3261,11 +2695,11 @@ function transformVectorEffects(effects, m, node) {
|
|
|
3261
2695
|
const axisScale = Math.abs(m[1]) < 1e-12 && Math.abs(m[2]) < 1e-12 && m[0] > 0 && m[3] > 0;
|
|
3262
2696
|
return effects.map((e) => {
|
|
3263
2697
|
if (e.type === "envelope") {
|
|
3264
|
-
if (e.params.style === "mesh") return e.params.mesh ? { ...e, params: { ...e.params, mesh:
|
|
2698
|
+
if (e.params.style === "mesh") return e.params.mesh ? { ...e, params: { ...e.params, mesh: _chunkDWGZUSEScjs.mapWarpMeshPoints.call(void 0, e.params.mesh, full) } } : e;
|
|
3265
2699
|
if (axisScale || !node) return e;
|
|
3266
2700
|
const bounds = vectorEffectInputBounds(node, e.id);
|
|
3267
2701
|
if (!bounds || !vectorEnvelopeMap(e.params, bounds)) return e;
|
|
3268
|
-
return { ...e, params: { ...e.params, style: "mesh", mesh:
|
|
2702
|
+
return { ...e, params: { ...e.params, style: "mesh", mesh: _chunkDWGZUSEScjs.mapWarpMeshPoints.call(void 0, vectorEnvelopeMesh(e.params, bounds), full) } };
|
|
3269
2703
|
}
|
|
3270
2704
|
if (e.type === "twist") return { ...e, params: { ...e.params, center: lin(e.params.center), angle: e.params.angle * mirror } };
|
|
3271
2705
|
if (e.type === "repeater")
|
|
@@ -3461,17 +2895,17 @@ function collectPathNodes(node) {
|
|
|
3461
2895
|
return out;
|
|
3462
2896
|
}
|
|
3463
2897
|
function nodeMatrix(node) {
|
|
3464
|
-
return _nullishCoalesce(node.transform, () => ( IDENTITY_MATRIX));
|
|
2898
|
+
return _nullishCoalesce(node.transform, () => ( _chunkDWGZUSEScjs.IDENTITY_MATRIX));
|
|
3465
2899
|
}
|
|
3466
|
-
function vectorPathWorldBezier(node, parent = IDENTITY_MATRIX, options = {}) {
|
|
3467
|
-
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
2900
|
+
function vectorPathWorldBezier(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX, options = {}) {
|
|
2901
|
+
const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
|
|
3468
2902
|
const path = options.effects === false || !hasOwnVectorAppearance(node) ? subpathsToBezier(node.subpaths) : vectorAppearanceOutline(node);
|
|
3469
|
-
return isIdentityMatrix(m) ? path : _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, path, m);
|
|
2903
|
+
return _chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m) ? path : _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, path, m);
|
|
3470
2904
|
}
|
|
3471
|
-
function vectorNodeBounds(node, parent = IDENTITY_MATRIX) {
|
|
2905
|
+
function vectorNodeBounds(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
|
|
3472
2906
|
node = expandVectorAppearance(node);
|
|
3473
2907
|
if (node.type === "group") {
|
|
3474
|
-
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
2908
|
+
const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
|
|
3475
2909
|
return unionBounds(node.children.map((c) => vectorNodeBounds(c, m)));
|
|
3476
2910
|
}
|
|
3477
2911
|
const b = _chunkXGD3FSNCcjs.bezierPathBounds.call(void 0, vectorPathWorldBezier(node, parent));
|
|
@@ -3499,11 +2933,11 @@ function boundsIntersect(a, b) {
|
|
|
3499
2933
|
function boundsFromPoints(a, b) {
|
|
3500
2934
|
return { x: Math.min(a.x, b.x), y: Math.min(a.y, b.y), width: Math.abs(b.x - a.x), height: Math.abs(b.y - a.y) };
|
|
3501
2935
|
}
|
|
3502
|
-
function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, options = {}) {
|
|
2936
|
+
function hitTestVectorNode(node, p, tolerance = 0, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX, options = {}) {
|
|
3503
2937
|
if (node.visible === false) return false;
|
|
3504
2938
|
if (!(node.type === "group" && (!hasOwnVectorAppearance(node) || _optionalChain([options, 'access', _55 => _55.entered, 'optionalAccess', _56 => _56.has, 'call', _57 => _57(node.id)])))) node = expandVectorAppearance(node);
|
|
3505
2939
|
if (node.type === "group") {
|
|
3506
|
-
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
2940
|
+
const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
|
|
3507
2941
|
return node.children.some((c) => hitTestVectorNode(c, p, tolerance, m, options));
|
|
3508
2942
|
}
|
|
3509
2943
|
const path = vectorPathWorldBezier(node, parent);
|
|
@@ -3513,7 +2947,7 @@ function hitTestVectorNode(node, p, tolerance = 0, parent = IDENTITY_MATRIX, opt
|
|
|
3513
2947
|
if (hasPaint(node.stroke)) return hitTestVectorStroke(path, p, node, tolerance);
|
|
3514
2948
|
return _chunkXGD3FSNCcjs.distanceToBezierPath.call(void 0, path, point) <= tolerance;
|
|
3515
2949
|
}
|
|
3516
|
-
function vectorStrokeOutline(node, parent = IDENTITY_MATRIX) {
|
|
2950
|
+
function vectorStrokeOutline(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
|
|
3517
2951
|
if (!hasPaint(node.stroke) || !((_nullishCoalesce(node.strokeWidth, () => ( 1))) > 0)) return [];
|
|
3518
2952
|
return vectorStrokeOutlinePath(vectorPathWorldBezier(node, parent), node);
|
|
3519
2953
|
}
|
|
@@ -3521,7 +2955,7 @@ function hitTestVectorNodes(nodes, p, tolerance = 0, options = {}) {
|
|
|
3521
2955
|
for (let i = nodes.length - 1; i >= 0; i--) {
|
|
3522
2956
|
const node = nodes[i];
|
|
3523
2957
|
if (node.visible === false || node.locked) continue;
|
|
3524
|
-
if (hitTestVectorNode(node, p, tolerance, IDENTITY_MATRIX, options)) return node;
|
|
2958
|
+
if (hitTestVectorNode(node, p, tolerance, _chunkDWGZUSEScjs.IDENTITY_MATRIX, options)) return node;
|
|
3525
2959
|
}
|
|
3526
2960
|
return null;
|
|
3527
2961
|
}
|
|
@@ -3540,66 +2974,17 @@ function nearestSegment(node, p) {
|
|
|
3540
2974
|
});
|
|
3541
2975
|
return best;
|
|
3542
2976
|
}
|
|
3543
|
-
var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
|
|
3544
|
-
function multiplyMatrices(a, b) {
|
|
3545
|
-
const [a0, a1, a2, a3, a4, a5] = a;
|
|
3546
|
-
const [b0, b1, b2, b3, b4, b5] = b;
|
|
3547
|
-
return [b0 * a0 + b2 * a1, b1 * a0 + b3 * a1, b0 * a2 + b2 * a3, b1 * a2 + b3 * a3, b0 * a4 + b2 * a5 + b4, b1 * a4 + b3 * a5 + b5];
|
|
3548
|
-
}
|
|
3549
|
-
var translateMatrix = (dx, dy) => [1, 0, 0, 1, dx, dy];
|
|
3550
|
-
function scaleMatrix(sx, sy, origin = { x: 0, y: 0 }) {
|
|
3551
|
-
return [sx, 0, 0, sy, origin.x - sx * origin.x, origin.y - sy * origin.y];
|
|
3552
|
-
}
|
|
3553
|
-
function rotateMatrix(degrees, origin = { x: 0, y: 0 }) {
|
|
3554
|
-
const r = degrees * Math.PI / 180;
|
|
3555
|
-
const cos = Math.cos(r);
|
|
3556
|
-
const sin = Math.sin(r);
|
|
3557
|
-
return [cos, sin, -sin, cos, origin.x - cos * origin.x + sin * origin.y, origin.y - sin * origin.x - cos * origin.y];
|
|
3558
|
-
}
|
|
3559
|
-
function applyMatrix(m, p) {
|
|
3560
|
-
return { x: m[0] * p.x + m[2] * p.y + m[4], y: m[1] * p.x + m[3] * p.y + m[5] };
|
|
3561
|
-
}
|
|
3562
|
-
function isIdentityMatrix(m, eps = 1e-12) {
|
|
3563
|
-
return Math.abs(m[0] - 1) < eps && Math.abs(m[1]) < eps && Math.abs(m[2]) < eps && Math.abs(m[3] - 1) < eps && Math.abs(m[4]) < eps && Math.abs(m[5]) < eps;
|
|
3564
|
-
}
|
|
3565
|
-
function invertMatrix(m) {
|
|
3566
|
-
const [a, b, c, d, e, f] = m;
|
|
3567
|
-
const det = a * d - b * c;
|
|
3568
|
-
if (!det || !Number.isFinite(det)) return IDENTITY_MATRIX;
|
|
3569
|
-
return [d / det, -b / det, -c / det, a / det, (c * f - d * e) / det, (b * e - a * f) / det];
|
|
3570
|
-
}
|
|
3571
|
-
function applyMatrixLinear(m, v2) {
|
|
3572
|
-
return { x: m[0] * v2.x + m[2] * v2.y, y: m[1] * v2.x + m[3] * v2.y };
|
|
3573
|
-
}
|
|
3574
|
-
function matrixRotation(m) {
|
|
3575
|
-
const [a, b, c, d] = m;
|
|
3576
|
-
const mirrored = a * d - b * c < 0;
|
|
3577
|
-
const deg = (mirrored ? Math.atan2(-b - c, d - a) : Math.atan2(b - c, a + d)) * 180 / Math.PI;
|
|
3578
|
-
return Math.abs(deg) < 1e-9 ? 0 : deg;
|
|
3579
|
-
}
|
|
3580
|
-
function decomposeRigid(m) {
|
|
3581
|
-
const [a, b, c, d, e, f] = m;
|
|
3582
|
-
const deg = matrixRotation(m);
|
|
3583
|
-
if (deg === 0) return { rigid: IDENTITY_MATRIX, residual: m };
|
|
3584
|
-
const r = deg * Math.PI / 180;
|
|
3585
|
-
const cos = Math.cos(r);
|
|
3586
|
-
const sin = Math.sin(r);
|
|
3587
|
-
return {
|
|
3588
|
-
rigid: [cos, sin, -sin, cos, e, f],
|
|
3589
|
-
residual: [cos * a + sin * b, -sin * a + cos * b, cos * c + sin * d, -sin * c + cos * d, 0, 0]
|
|
3590
|
-
};
|
|
3591
|
-
}
|
|
3592
2977
|
function mapAnchor(a, m) {
|
|
3593
|
-
const p = applyMatrix(m, a);
|
|
2978
|
+
const p = _chunkDWGZUSEScjs.applyMatrix.call(void 0, m, a);
|
|
3594
2979
|
const next = { x: p.x, y: p.y };
|
|
3595
|
-
if (a.in) next.in = applyMatrix(m, a.in);
|
|
3596
|
-
if (a.out) next.out = applyMatrix(m, a.out);
|
|
2980
|
+
if (a.in) next.in = _chunkDWGZUSEScjs.applyMatrix.call(void 0, m, a.in);
|
|
2981
|
+
if (a.out) next.out = _chunkDWGZUSEScjs.applyMatrix.call(void 0, m, a.out);
|
|
3597
2982
|
if (a.type) next.type = a.type;
|
|
3598
2983
|
if (a.corner) next.corner = { ...a.corner };
|
|
3599
2984
|
return next;
|
|
3600
2985
|
}
|
|
3601
2986
|
function bakeIntoGeometry(node, m) {
|
|
3602
|
-
if (isIdentityMatrix(m)) return node;
|
|
2987
|
+
if (_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m)) return node;
|
|
3603
2988
|
if (_optionalChain([node, 'access', _58 => _58.effects, 'optionalAccess', _59 => _59.length])) node = { ...node, effects: transformVectorEffects(node.effects, m, node) };
|
|
3604
2989
|
if (node.type === "group") {
|
|
3605
2990
|
const group = node;
|
|
@@ -3624,19 +3009,19 @@ function bakeIntoGeometry(node, m) {
|
|
|
3624
3009
|
};
|
|
3625
3010
|
}
|
|
3626
3011
|
function transformVectorNode(node, m) {
|
|
3627
|
-
const total = multiplyMatrices(nodeMatrix(node), m);
|
|
3628
|
-
const { rigid, residual } = decomposeRigid(total);
|
|
3012
|
+
const total = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), m);
|
|
3013
|
+
const { rigid, residual } = _chunkDWGZUSEScjs.decomposeRigid.call(void 0, total);
|
|
3629
3014
|
const { transform: _old, ...rest } = node;
|
|
3630
3015
|
const baked = bakeIntoGeometry(rest, residual);
|
|
3631
|
-
return isIdentityMatrix(rigid) ? baked : { ...baked, transform: rigid };
|
|
3016
|
+
return _chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, rigid) ? baked : { ...baked, transform: rigid };
|
|
3632
3017
|
}
|
|
3633
|
-
function vectorNodeRotation(node, parent = IDENTITY_MATRIX) {
|
|
3634
|
-
return matrixRotation(multiplyMatrices(nodeMatrix(node), parent));
|
|
3018
|
+
function vectorNodeRotation(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
|
|
3019
|
+
return _chunkDWGZUSEScjs.matrixRotation.call(void 0, _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent));
|
|
3635
3020
|
}
|
|
3636
3021
|
function vectorWorldMatrix(nodes, id) {
|
|
3637
3022
|
const search = (list, parent) => {
|
|
3638
3023
|
for (const n of list) {
|
|
3639
|
-
const m = multiplyMatrices(nodeMatrix(n), parent);
|
|
3024
|
+
const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(n), parent);
|
|
3640
3025
|
if (n.id === id) return m;
|
|
3641
3026
|
if (n.type === "group") {
|
|
3642
3027
|
const found = search(n.children, m);
|
|
@@ -3645,13 +3030,13 @@ function vectorWorldMatrix(nodes, id) {
|
|
|
3645
3030
|
}
|
|
3646
3031
|
return null;
|
|
3647
3032
|
};
|
|
3648
|
-
return search(nodes, IDENTITY_MATRIX);
|
|
3033
|
+
return search(nodes, _chunkDWGZUSEScjs.IDENTITY_MATRIX);
|
|
3649
3034
|
}
|
|
3650
3035
|
function vectorParentMatrix(nodes, id) {
|
|
3651
3036
|
const node = findVectorNode(nodes, id);
|
|
3652
3037
|
const world = vectorWorldMatrix(nodes, id);
|
|
3653
3038
|
if (!node || !world) return null;
|
|
3654
|
-
return multiplyMatrices(invertMatrix(nodeMatrix(node)), world);
|
|
3039
|
+
return _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, _chunkDWGZUSEScjs.invertMatrix.call(void 0, nodeMatrix(node)), world);
|
|
3655
3040
|
}
|
|
3656
3041
|
function translateAnchor(a, dx, dy) {
|
|
3657
3042
|
const next = cloneAnchor(a);
|
|
@@ -4165,10 +3550,10 @@ function vectorRepeaterCopies(r, pivot) {
|
|
|
4165
3550
|
const out = [];
|
|
4166
3551
|
for (let i = 0; i < n; i++) {
|
|
4167
3552
|
const k = i + offset;
|
|
4168
|
-
let m = translateMatrix(-pivot.x, -pivot.y);
|
|
4169
|
-
m = multiplyMatrices(m, scaleMatrix(Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _69 => _69.scale, 'optionalAccess', _70 => _70.x]), () => ( 100))) / 100, k), Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _71 => _71.scale, 'optionalAccess', _72 => _72.y]), () => ( 100))) / 100, k)));
|
|
4170
|
-
m = multiplyMatrices(m, rotateMatrix((_nullishCoalesce(r.rotation, () => ( 0))) * k));
|
|
4171
|
-
m = multiplyMatrices(m, translateMatrix(pivot.x + (_nullishCoalesce(_optionalChain([r, 'access', _73 => _73.position, 'optionalAccess', _74 => _74.x]), () => ( 0))) * k, pivot.y + (_nullishCoalesce(_optionalChain([r, 'access', _75 => _75.position, 'optionalAccess', _76 => _76.y]), () => ( 0))) * k));
|
|
3553
|
+
let m = _chunkDWGZUSEScjs.translateMatrix.call(void 0, -pivot.x, -pivot.y);
|
|
3554
|
+
m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, m, _chunkDWGZUSEScjs.scaleMatrix.call(void 0, Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _69 => _69.scale, 'optionalAccess', _70 => _70.x]), () => ( 100))) / 100, k), Math.pow((_nullishCoalesce(_optionalChain([r, 'access', _71 => _71.scale, 'optionalAccess', _72 => _72.y]), () => ( 100))) / 100, k)));
|
|
3555
|
+
m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, m, _chunkDWGZUSEScjs.rotateMatrix.call(void 0, (_nullishCoalesce(r.rotation, () => ( 0))) * k));
|
|
3556
|
+
m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, m, _chunkDWGZUSEScjs.translateMatrix.call(void 0, pivot.x + (_nullishCoalesce(_optionalChain([r, 'access', _73 => _73.position, 'optionalAccess', _74 => _74.x]), () => ( 0))) * k, pivot.y + (_nullishCoalesce(_optionalChain([r, 'access', _75 => _75.position, 'optionalAccess', _76 => _76.y]), () => ( 0))) * k));
|
|
4172
3557
|
const t = n > 1 ? i / (n - 1) : 0;
|
|
4173
3558
|
const partial = i + 1 === n && fract > 0 ? fract : 1;
|
|
4174
3559
|
out.push({ index: i, matrix: m, opacity: Math.min(1, Math.max(0, (so + (eo - so) * t) * partial)) });
|
|
@@ -4189,7 +3574,7 @@ var lerpP = (a, b, t) => [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t];
|
|
|
4189
3574
|
var toP = (v2) => [v2.x, v2.y];
|
|
4190
3575
|
var mapP = (m, p) => [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];
|
|
4191
3576
|
var curvesOf = (c) => Math.max(0, (c.pts.length - 1) / 3) | 0;
|
|
4192
|
-
function subpathToMorphContour(sp, m = IDENTITY_MATRIX) {
|
|
3577
|
+
function subpathToMorphContour(sp, m = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
|
|
4193
3578
|
const n = sp.anchors.length;
|
|
4194
3579
|
if (!n) return null;
|
|
4195
3580
|
const first = mapP(m, toP(sp.anchors[0]));
|
|
@@ -4219,8 +3604,8 @@ function isStraight(p0, p1, p2, p3) {
|
|
|
4219
3604
|
const u2 = along2(p2);
|
|
4220
3605
|
return off(p1) < tol && off(p2) < tol && u1 >= -1e-9 && u1 <= 1 + 1e-9 && u2 >= -1e-9 && u2 <= 1 + 1e-9;
|
|
4221
3606
|
}
|
|
4222
|
-
function morphContourToSubpath(c, m = IDENTITY_MATRIX, closed = c.closed) {
|
|
4223
|
-
const pts = isIdentityMatrix(m) ? c.pts : c.pts.map((p) => mapP(m, p));
|
|
3607
|
+
function morphContourToSubpath(c, m = _chunkDWGZUSEScjs.IDENTITY_MATRIX, closed = c.closed) {
|
|
3608
|
+
const pts = _chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m) ? c.pts : c.pts.map((p) => mapP(m, p));
|
|
4224
3609
|
const curves = curvesOf(c);
|
|
4225
3610
|
const dropLast = closed && c.closed && curves > 0;
|
|
4226
3611
|
const count = dropLast ? curves : curves + 1;
|
|
@@ -4782,12 +4167,12 @@ function preparePathMorph(a, b, options, ma = nodeMatrix(a), mb = nodeMatrix(b))
|
|
|
4782
4167
|
const sim = procrustes(corr.a, corr.b);
|
|
4783
4168
|
const styleA = styleOf(a);
|
|
4784
4169
|
const styleB = corr.reversed ? reversedStyle(styleOf(b)) : styleOf(b);
|
|
4785
|
-
const rigid = !isIdentityMatrix(ma) || !isIdentityMatrix(mb);
|
|
4170
|
+
const rigid = !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, ma) || !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, mb);
|
|
4786
4171
|
const id = _nullishCoalesce(options.id, () => ( a.id));
|
|
4787
4172
|
return (t) => {
|
|
4788
4173
|
const contours = interpolateMorphContours(corr.a, corr.b, t, { linear: options.linear, rigidity: options.rigidity, similarity: sim });
|
|
4789
|
-
const m = rigid ? interpolateRigidMatrix(ma, mb, t) : IDENTITY_MATRIX;
|
|
4790
|
-
const back = rigid ? invertMatrix(m) : IDENTITY_MATRIX;
|
|
4174
|
+
const m = rigid ? interpolateRigidMatrix(ma, mb, t) : _chunkDWGZUSEScjs.IDENTITY_MATRIX;
|
|
4175
|
+
const back = rigid ? _chunkDWGZUSEScjs.invertMatrix.call(void 0, m) : _chunkDWGZUSEScjs.IDENTITY_MATRIX;
|
|
4791
4176
|
const subpaths = contours.map((c, k) => {
|
|
4792
4177
|
const closed = t <= 0 ? corr.a[k].closed : t >= 1 ? corr.b[k].closed : corr.a[k].closed && corr.b[k].closed;
|
|
4793
4178
|
return morphContourToSubpath({ closed: corr.a[k].closed && corr.b[k].closed, pts: c.pts }, back, closed);
|
|
@@ -4795,12 +4180,12 @@ function preparePathMorph(a, b, options, ma = nodeMatrix(a), mb = nodeMatrix(b))
|
|
|
4795
4180
|
const node = { id, type: "path", subpaths, ...interpolateVectorStyle(styleA, styleB, t) };
|
|
4796
4181
|
const opacity = lerpN(_nullishCoalesce(a.opacity, () => ( 1)), _nullishCoalesce(b.opacity, () => ( 1)), t);
|
|
4797
4182
|
if (opacity < 1) node.opacity = opacity;
|
|
4798
|
-
if (rigid && !isIdentityMatrix(m)) node.transform = m;
|
|
4183
|
+
if (rigid && !_chunkDWGZUSEScjs.isIdentityMatrix.call(void 0, m)) node.transform = m;
|
|
4799
4184
|
return node;
|
|
4800
4185
|
};
|
|
4801
4186
|
}
|
|
4802
|
-
function flattenPaths(node, parent = IDENTITY_MATRIX) {
|
|
4803
|
-
const m = multiplyMatrices(nodeMatrix(node), parent);
|
|
4187
|
+
function flattenPaths(node, parent = _chunkDWGZUSEScjs.IDENTITY_MATRIX) {
|
|
4188
|
+
const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, nodeMatrix(node), parent);
|
|
4804
4189
|
if (node.type === "path") return [{ path: node, m, opacity: 1 }];
|
|
4805
4190
|
const o = _nullishCoalesce(node.opacity, () => ( 1));
|
|
4806
4191
|
return node.children.filter((c) => c.visible !== false).flatMap((c) => flattenPaths(c, m)).map((e) => ({ ...e, opacity: e.opacity * o }));
|
|
@@ -4836,10 +4221,10 @@ function createVectorMorph(a, b, options = {}) {
|
|
|
4836
4221
|
parts.push(preparePathMorph(x.path, y.path, sub5, x.m, y.m));
|
|
4837
4222
|
opacities.push([x.opacity, y.opacity]);
|
|
4838
4223
|
} else if (x) {
|
|
4839
|
-
parts.push(preparePathMorph(x.path, collapsedPath(x.path, x.m, ba, bb), sub5, x.m, IDENTITY_MATRIX));
|
|
4224
|
+
parts.push(preparePathMorph(x.path, collapsedPath(x.path, x.m, ba, bb), sub5, x.m, _chunkDWGZUSEScjs.IDENTITY_MATRIX));
|
|
4840
4225
|
opacities.push([x.opacity, x.opacity]);
|
|
4841
4226
|
} else if (y) {
|
|
4842
|
-
parts.push(preparePathMorph(collapsedPath(y.path, y.m, bb, ba), y.path, sub5, IDENTITY_MATRIX, y.m));
|
|
4227
|
+
parts.push(preparePathMorph(collapsedPath(y.path, y.m, bb, ba), y.path, sub5, _chunkDWGZUSEScjs.IDENTITY_MATRIX, y.m));
|
|
4843
4228
|
opacities.push([y.opacity, y.opacity]);
|
|
4844
4229
|
}
|
|
4845
4230
|
}
|
|
@@ -5171,7 +4556,7 @@ function blendFromAttribute(value, m) {
|
|
|
5171
4556
|
const spine = r.spine;
|
|
5172
4557
|
if (spine && Array.isArray(spine.anchors) && spine.anchors.every((a) => a && Number.isFinite(a.x) && Number.isFinite(a.y))) {
|
|
5173
4558
|
const sp = { closed: !!spine.closed, anchors: spine.anchors.map((a) => ({ x: a.x, y: a.y, ...a.in ? { in: { x: a.in.x, y: a.in.y } } : {}, ...a.out ? { out: { x: a.out.x, y: a.out.y } } : {} })) };
|
|
5174
|
-
out.spine = m === IDENTITY_MATRIX ? sp : transformVectorNode({ id: "", type: "path", subpaths: [sp] }, m).subpaths[0];
|
|
4559
|
+
out.spine = m === _chunkDWGZUSEScjs.IDENTITY_MATRIX ? sp : transformVectorNode({ id: "", type: "path", subpaths: [sp] }, m).subpaths[0];
|
|
5175
4560
|
}
|
|
5176
4561
|
return out;
|
|
5177
4562
|
}
|
|
@@ -5354,25 +4739,25 @@ var length = (s, fallback = 0) => {
|
|
|
5354
4739
|
return Number.isFinite(n) ? n : fallback;
|
|
5355
4740
|
};
|
|
5356
4741
|
function parseSvgTransform(value) {
|
|
5357
|
-
let m = IDENTITY_MATRIX;
|
|
4742
|
+
let m = _chunkDWGZUSEScjs.IDENTITY_MATRIX;
|
|
5358
4743
|
if (!value) return m;
|
|
5359
4744
|
const re = /(matrix|translate|scale|rotate|skewX|skewY)\s*\(([^)]*)\)/g;
|
|
5360
4745
|
let t;
|
|
5361
4746
|
while (t = re.exec(value)) {
|
|
5362
4747
|
const n = numberList(t[2]);
|
|
5363
|
-
let step = IDENTITY_MATRIX;
|
|
4748
|
+
let step = _chunkDWGZUSEScjs.IDENTITY_MATRIX;
|
|
5364
4749
|
switch (t[1]) {
|
|
5365
4750
|
case "matrix":
|
|
5366
4751
|
if (n.length >= 6) step = [n[0], n[1], n[2], n[3], n[4], n[5]];
|
|
5367
4752
|
break;
|
|
5368
4753
|
case "translate":
|
|
5369
|
-
step = translateMatrix(_nullishCoalesce(n[0], () => ( 0)), _nullishCoalesce(n[1], () => ( 0)));
|
|
4754
|
+
step = _chunkDWGZUSEScjs.translateMatrix.call(void 0, _nullishCoalesce(n[0], () => ( 0)), _nullishCoalesce(n[1], () => ( 0)));
|
|
5370
4755
|
break;
|
|
5371
4756
|
case "scale":
|
|
5372
|
-
step = scaleMatrix(_nullishCoalesce(n[0], () => ( 1)), _nullishCoalesce(_nullishCoalesce(n[1], () => ( n[0])), () => ( 1)));
|
|
4757
|
+
step = _chunkDWGZUSEScjs.scaleMatrix.call(void 0, _nullishCoalesce(n[0], () => ( 1)), _nullishCoalesce(_nullishCoalesce(n[1], () => ( n[0])), () => ( 1)));
|
|
5373
4758
|
break;
|
|
5374
4759
|
case "rotate":
|
|
5375
|
-
step = rotateMatrix(_nullishCoalesce(n[0], () => ( 0)), { x: _nullishCoalesce(n[1], () => ( 0)), y: _nullishCoalesce(n[2], () => ( 0)) });
|
|
4760
|
+
step = _chunkDWGZUSEScjs.rotateMatrix.call(void 0, _nullishCoalesce(n[0], () => ( 0)), { x: _nullishCoalesce(n[1], () => ( 0)), y: _nullishCoalesce(n[2], () => ( 0)) });
|
|
5376
4761
|
break;
|
|
5377
4762
|
case "skewX":
|
|
5378
4763
|
step = [1, 0, Math.tan((_nullishCoalesce(n[0], () => ( 0))) * Math.PI / 180), 1, 0, 0];
|
|
@@ -5381,7 +4766,7 @@ function parseSvgTransform(value) {
|
|
|
5381
4766
|
step = [1, Math.tan((_nullishCoalesce(n[0], () => ( 0))) * Math.PI / 180), 0, 1, 0, 0];
|
|
5382
4767
|
break;
|
|
5383
4768
|
}
|
|
5384
|
-
m = multiplyMatrices(step, m);
|
|
4769
|
+
m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, step, m);
|
|
5385
4770
|
}
|
|
5386
4771
|
return m;
|
|
5387
4772
|
}
|
|
@@ -5456,7 +4841,7 @@ function resolveGradient(id, raw) {
|
|
|
5456
4841
|
if (!stops.length) return null;
|
|
5457
4842
|
const user = attr("gradientUnits") === "userSpaceOnUse";
|
|
5458
4843
|
const t = parseSvgTransform(attr("gradientTransform"));
|
|
5459
|
-
const plain2 = t === IDENTITY_MATRIX || t[0] === 1 && t[1] === 0 && t[2] === 0 && t[3] === 1 && t[4] === 0 && t[5] === 0;
|
|
4844
|
+
const plain2 = t === _chunkDWGZUSEScjs.IDENTITY_MATRIX || t[0] === 1 && t[1] === 0 && t[2] === 0 && t[3] === 1 && t[4] === 0 && t[5] === 0;
|
|
5460
4845
|
const at2 = (name, fallback) => user ? length(attr(name), fallback) : fraction(attr(name), fallback);
|
|
5461
4846
|
const spreadAttr = attr("spreadMethod");
|
|
5462
4847
|
const spread = spreadAttr === "reflect" || spreadAttr === "repeat" ? { spread: spreadAttr } : {};
|
|
@@ -5538,7 +4923,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
5538
4923
|
const viewBox = numberList(root.attrs.viewBox);
|
|
5539
4924
|
const width = viewBox.length === 4 ? viewBox[2] : length(root.attrs.width, 300);
|
|
5540
4925
|
const height = viewBox.length === 4 ? viewBox[3] : length(root.attrs.height, 150);
|
|
5541
|
-
const rootMatrix = viewBox.length === 4 ? translateMatrix(-viewBox[0], -viewBox[1]) : IDENTITY_MATRIX;
|
|
4926
|
+
const rootMatrix = viewBox.length === 4 ? _chunkDWGZUSEScjs.translateMatrix.call(void 0, -viewBox[0], -viewBox[1]) : _chunkDWGZUSEScjs.IDENTITY_MATRIX;
|
|
5542
4927
|
const SKIP = /* @__PURE__ */ new Set(["defs", "clipPath", "mask", "symbol", "style", "title", "desc", "metadata", "pattern", "marker", "filter", "text", "image", "use", "linearGradient", "radialGradient", "script", "foreignObject"]);
|
|
5543
4928
|
const shapeOf = (el) => {
|
|
5544
4929
|
const a = el.attrs;
|
|
@@ -5591,7 +4976,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
5591
4976
|
...s.fillRule === "evenodd" ? { fillRule: "evenodd" } : {}
|
|
5592
4977
|
});
|
|
5593
4978
|
const placed = (node, m) => {
|
|
5594
|
-
if (m === IDENTITY_MATRIX) return node;
|
|
4979
|
+
if (m === _chunkDWGZUSEScjs.IDENTITY_MATRIX) return node;
|
|
5595
4980
|
const next = transformVectorNode(node, m);
|
|
5596
4981
|
const strokeScale = Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2]));
|
|
5597
4982
|
if (hasPaint(next.stroke) && strokeScale > 0 && Math.abs(strokeScale - 1) > 1e-9) next.strokeWidth = (_nullishCoalesce(next.strokeWidth, () => ( 1))) * strokeScale;
|
|
@@ -5658,7 +5043,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
5658
5043
|
if (raw.kind === "path") {
|
|
5659
5044
|
const path = inner.find((n) => n.type === "path");
|
|
5660
5045
|
if (!path) return null;
|
|
5661
|
-
const { residual } = decomposeRigid(m);
|
|
5046
|
+
const { residual } = _chunkDWGZUSEScjs.decomposeRigid.call(void 0, m);
|
|
5662
5047
|
const { visible: _v, ...rest } = path;
|
|
5663
5048
|
return { ...rest, id, ...meta, ...effects.length ? { effects: transformVectorEffects(effects, residual) } : {} };
|
|
5664
5049
|
}
|
|
@@ -5674,7 +5059,7 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
5674
5059
|
const out = [];
|
|
5675
5060
|
for (const child of el.children) {
|
|
5676
5061
|
if (SKIP.has(child.name)) continue;
|
|
5677
|
-
const m = multiplyMatrices(parseSvgTransform(child.attrs.transform), matrix);
|
|
5062
|
+
const m = _chunkDWGZUSEScjs.multiplyMatrices.call(void 0, parseSvgTransform(child.attrs.transform), matrix);
|
|
5678
5063
|
const s = readStyle(child, style);
|
|
5679
5064
|
const opacity = child.attrs.opacity !== void 0 ? parseFloat(child.attrs.opacity) : void 0;
|
|
5680
5065
|
const hidden = child.attrs.display === "none" || child.attrs.visibility === "hidden";
|
|
@@ -5957,38 +5342,5 @@ function parseVectorSvg(svg, options = {}) {
|
|
|
5957
5342
|
|
|
5958
5343
|
|
|
5959
5344
|
|
|
5960
|
-
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
|
|
5967
|
-
|
|
5968
|
-
|
|
5969
|
-
|
|
5970
|
-
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
|
|
5974
|
-
|
|
5975
|
-
|
|
5976
|
-
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
|
|
5980
|
-
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
|
|
5984
|
-
|
|
5985
|
-
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
5989
|
-
|
|
5990
|
-
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
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_SPACINGS = VECTOR_BLEND_SPACINGS; 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.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.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.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; 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.VECTOR_WARP_STYLES = VECTOR_WARP_STYLES; exports.VECTOR_WARP_STYLE_LABELS = VECTOR_WARP_STYLE_LABELS; exports.vectorWarpPresetGrid = vectorWarpPresetGrid; exports.vectorWarpPresetMesh = vectorWarpPresetMesh; exports.vectorMeshColumns = vectorMeshColumns; exports.vectorMeshRows = vectorMeshRows; exports.isValidVectorMesh = isValidVectorMesh; exports.fitVectorMesh = fitVectorMesh; exports.vectorIdentityMesh = vectorIdentityMesh; exports.evalVectorMesh = evalVectorMesh; exports.splitVectorMeshU = splitVectorMeshU; exports.splitVectorMeshV = splitVectorMeshV; exports.removeVectorMeshSplitU = removeVectorMeshSplitU; exports.removeVectorMeshSplitV = removeVectorMeshSplitV; exports.mapVectorMeshPoints = mapVectorMeshPoints; exports.resizeVectorMesh = resizeVectorMesh; exports.vectorMeshControlBounds = vectorMeshControlBounds; exports.vectorMeshParamAt = vectorMeshParamAt; exports.dragVectorMeshPoint = dragVectorMeshPoint; exports.pullVectorMesh = pullVectorMesh; exports.vectorMeshFromOutline = vectorMeshFromOutline; exports.vectorMeshOutline = vectorMeshOutline; exports.vectorMeshEditPoints = vectorMeshEditPoints; exports.vectorMeshGridCurves = vectorMeshGridCurves; 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.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.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.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.IDENTITY_MATRIX = IDENTITY_MATRIX; exports.multiplyMatrices = multiplyMatrices; exports.translateMatrix = translateMatrix; exports.scaleMatrix = scaleMatrix; exports.rotateMatrix = rotateMatrix; exports.applyMatrix = applyMatrix; exports.isIdentityMatrix = isIdentityMatrix; exports.invertMatrix = invertMatrix; exports.applyMatrixLinear = applyMatrixLinear; exports.matrixRotation = matrixRotation; exports.decomposeRigid = decomposeRigid; 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; exports.subpathToMorphContour = subpathToMorphContour; exports.morphContourToSubpath = morphContourToSubpath; exports.refineMorphContour = refineMorphContour; exports.reverseMorphContour = reverseMorphContour; exports.turnMorphContour = turnMorphContour; exports.correspondMorphContours = correspondMorphContours; exports.morphPathsCross = morphPathsCross; exports.interpolateMorphContours = interpolateMorphContours; exports.interpolateRigidMatrix = interpolateRigidMatrix; exports.interpolateVectorColor = interpolateVectorColor; exports.resampleGradientStops = resampleGradientStops; exports.interpolateVectorPaint = interpolateVectorPaint; exports.interpolateWidthProfiles = interpolateWidthProfiles; exports.interpolateVectorStyle = interpolateVectorStyle; exports.createVectorMorph = createVectorMorph; exports.interpolateVectorPaths = interpolateVectorPaths; exports.evaluateVectorPathKeyframes = evaluateVectorPathKeyframes; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg;
|
|
5994
|
-
//# sourceMappingURL=chunk-7MD7C6XQ.cjs.map
|
|
5345
|
+
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_SPACINGS = VECTOR_BLEND_SPACINGS; 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.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.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.effectPathLength = effectPathLength; exports.effectPathVertexCount = effectPathVertexCount; exports.trimIntervals = trimIntervals; exports.trimPaths = trimPaths; exports.trimPathsIndividually = trimPathsIndividually; exports.puckerBloatPaths = puckerBloatPaths; exports.roundCornerPaths = roundCornerPaths; exports.offsetPaths = offsetPaths; 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.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.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.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.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; exports.subpathToMorphContour = subpathToMorphContour; exports.morphContourToSubpath = morphContourToSubpath; exports.refineMorphContour = refineMorphContour; exports.reverseMorphContour = reverseMorphContour; exports.turnMorphContour = turnMorphContour; exports.correspondMorphContours = correspondMorphContours; exports.morphPathsCross = morphPathsCross; exports.interpolateMorphContours = interpolateMorphContours; exports.interpolateRigidMatrix = interpolateRigidMatrix; exports.interpolateVectorColor = interpolateVectorColor; exports.resampleGradientStops = resampleGradientStops; exports.interpolateVectorPaint = interpolateVectorPaint; exports.interpolateWidthProfiles = interpolateWidthProfiles; exports.interpolateVectorStyle = interpolateVectorStyle; exports.createVectorMorph = createVectorMorph; exports.interpolateVectorPaths = interpolateVectorPaths; exports.evaluateVectorPathKeyframes = evaluateVectorPathKeyframes; exports.vectorStrokeGradientDefs = vectorStrokeGradientDefs; exports.vectorCornersAttribute = vectorCornersAttribute; exports.applyVectorCornersAttribute = applyVectorCornersAttribute; exports.vectorPathLocalBounds = vectorPathLocalBounds; exports.vectorPaintToSvg = vectorPaintToSvg; exports.vectorStrokeSvgParts = vectorStrokeSvgParts; exports.widthProfileToAttribute = widthProfileToAttribute; exports.widthProfileFromAttribute = widthProfileFromAttribute; exports.vectorDocumentToSvg = vectorDocumentToSvg; exports.parseSvgTransform = parseSvgTransform; exports.parseVectorSvg = parseVectorSvg;
|
|
5346
|
+
//# sourceMappingURL=chunk-JF5PXN7W.cjs.map
|