@pixerate/editor 0.250.0 → 0.252.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.cjs +40 -41
- package/dist/agent/index.js +9 -10
- package/dist/animation/index.cjs +6 -7
- package/dist/animation/index.js +5 -6
- package/dist/animation-editor/index.cjs +70 -70
- package/dist/animation-editor/index.js +12 -12
- package/dist/brushes/index.cjs +2087 -0
- package/dist/brushes/index.d.cts +17 -0
- package/dist/brushes/index.d.ts +17 -0
- package/dist/brushes/index.js +2087 -0
- package/dist/brushes/library.d.cts +104 -0
- package/dist/brushes/library.d.ts +104 -0
- package/dist/brushes/migrate.d.cts +17 -0
- package/dist/brushes/migrate.d.ts +17 -0
- package/dist/brushes/normalize.d.cts +15 -0
- package/dist/brushes/normalize.d.ts +15 -0
- package/dist/brushes/presets.d.cts +12 -0
- package/dist/brushes/presets.d.ts +12 -0
- package/dist/brushes/profiles.d.cts +85 -0
- package/dist/brushes/profiles.d.ts +85 -0
- package/dist/brushes/resolve.d.cts +56 -0
- package/dist/brushes/resolve.d.ts +56 -0
- package/dist/brushes/schema.d.cts +29 -0
- package/dist/brushes/schema.d.ts +29 -0
- package/dist/brushes/tools.d.cts +37 -0
- package/dist/brushes/tools.d.ts +37 -0
- package/dist/brushes/types.d.cts +323 -0
- package/dist/brushes/types.d.ts +323 -0
- package/dist/{brushstrokeRender-2FHFLSEG.js → brushstrokeRender-5PYSKZIJ.js} +8 -8
- package/dist/{brushstrokeRender-QGRXOKDA.cjs → brushstrokeRender-7FLLSQEC.cjs} +14 -14
- package/dist/canvas/index.cjs +57 -58
- package/dist/canvas/index.js +31 -32
- package/dist/chart/index.cjs +159 -160
- package/dist/chart/index.js +9 -10
- package/dist/{chunk-NOHJP5TK.js → chunk-2ZJ4DT3M.js} +1 -1
- package/dist/{chunk-XZNU4DUX.cjs → chunk-3NS5C7FB.cjs} +76 -76
- package/dist/{chunk-UTI5IITZ.cjs → chunk-4ZC5QJE2.cjs} +3 -3
- package/dist/{chunk-SMSGP2HQ.js → chunk-5JNA6LLY.js} +1 -1
- package/dist/{chunk-RD7RX52G.cjs → chunk-5UEFBM2M.cjs} +207 -18
- package/dist/{chunk-WA44NKPF.js → chunk-62Z5WLRA.js} +1 -1
- package/dist/{chunk-BVRRIW7F.js → chunk-6GRUVGKU.js} +3 -3
- package/dist/{chunk-QARCM66V.js → chunk-6ZZKRH7R.js} +3 -3
- package/dist/{chunk-BP6KSGVD.js → chunk-7272D3K2.js} +4 -6
- package/dist/{chunk-NTRAVM2I.js → chunk-7P6VF3FG.js} +2 -2
- package/dist/chunk-APX63ILU.js +173 -0
- package/dist/{chunk-W7L4HUT2.cjs → chunk-CJ6TBL2N.cjs} +16 -16
- package/dist/{chunk-7PT4RJL5.cjs → chunk-EUIDTZNQ.cjs} +111 -113
- package/dist/{chunk-CXXXAZ7H.js → chunk-F6R67I3A.js} +1 -1
- package/dist/{chunk-I7NJPHWV.cjs → chunk-FQPUF2W2.cjs} +35 -606
- package/dist/{chunk-D5KGAO4Z.js → chunk-GCVFEPJG.js} +2 -573
- package/dist/{chunk-LEQKZGQI.js → chunk-GOBOCZZI.js} +1 -1
- package/dist/{chunk-KDLBJ6QR.js → chunk-GYMMNCFT.js} +3 -3
- package/dist/{chunk-NUTMINJZ.cjs → chunk-H7ET2ISK.cjs} +52 -52
- package/dist/chunk-HS6QDWDF.cjs +1029 -0
- package/dist/{chunk-T7KQEMAE.cjs → chunk-HUAISCUX.cjs} +18 -18
- package/dist/{chunk-YGQVCQTG.js → chunk-ILP77UD6.js} +1 -1
- package/dist/{chunk-S6OT6CTS.cjs → chunk-IWEVV63O.cjs} +31 -33
- package/dist/{chunk-M2VKFE5L.cjs → chunk-JFHBXNR2.cjs} +88 -88
- package/dist/{chunk-WPUXGDH4.cjs → chunk-JPEHXIB5.cjs} +10 -10
- package/dist/chunk-JSDND7DF.cjs +173 -0
- package/dist/{chunk-36ZTV7WO.js → chunk-L6Y7TSQ4.js} +1 -1
- package/dist/{chunk-YW43M56C.cjs → chunk-LFMKWGFL.cjs} +1 -1
- package/dist/{chunk-V6DT2CDH.js → chunk-M2TPMYJE.js} +1 -1
- package/dist/{chunk-LJZRHVZV.cjs → chunk-M5GLQQWG.cjs} +2 -2
- package/dist/{chunk-JEGJP4OW.js → chunk-MHLU6GRJ.js} +196 -7
- package/dist/{chunk-KMPM5JM5.js → chunk-MONXNVZK.js} +4 -6
- package/dist/chunk-MTKY6K3Q.js +1029 -0
- package/dist/{chunk-MOW3JMNG.cjs → chunk-N76AMOKE.cjs} +42 -42
- package/dist/{chunk-75K3W4D6.cjs → chunk-NKGB64CW.cjs} +16 -16
- package/dist/{chunk-SGPIVHJB.js → chunk-P3K2JCJA.js} +3 -3
- package/dist/chunk-PXDIAYB6.cjs +594 -0
- package/dist/{chunk-3TWOCSCY.js → chunk-QC3OXRE4.js} +9 -9
- package/dist/{chunk-YM6ZBTXG.cjs → chunk-QLSGTCYT.cjs} +23 -23
- package/dist/{chunk-7YW7T5TJ.js → chunk-RHPSE2YR.js} +2 -2
- package/dist/{chunk-44BMJJVA.cjs → chunk-RUONPPMC.cjs} +8 -8
- package/dist/{chunk-ATK6ABN3.cjs → chunk-SABJMH6M.cjs} +145 -12
- package/dist/{chunk-XWOLPNBW.cjs → chunk-SOSBOS5T.cjs} +22 -22
- package/dist/{chunk-PPFJHTW5.cjs → chunk-TFF2GTGN.cjs} +22 -24
- package/dist/{chunk-X7WRL5ZZ.cjs → chunk-TLOGFIIV.cjs} +37 -37
- package/dist/chunk-TXFWZ5ZJ.js +594 -0
- package/dist/{chunk-GXAK6Q5J.js → chunk-UFEDHACQ.js} +2 -2
- package/dist/{chunk-GA4EU4P3.cjs → chunk-UXETV2NC.cjs} +4 -4
- package/dist/{chunk-N4DFDI73.js → chunk-WKMUBATU.js} +1 -1
- package/dist/{chunk-3R5P3DVY.cjs → chunk-WRZ6C4TU.cjs} +6 -6
- package/dist/{chunk-U4NUOKBT.js → chunk-WZOGDKCQ.js} +134 -1
- package/dist/{chunk-6ADHGQ73.js → chunk-YBAPT7NL.js} +2 -4
- package/dist/color/index.cjs +4 -6
- package/dist/color/index.js +7 -9
- package/dist/export/index.cjs +7 -8
- package/dist/export/index.js +6 -7
- package/dist/extensions/index.cjs +10 -11
- package/dist/extensions/index.js +9 -10
- package/dist/gradient/index.cjs +33 -34
- package/dist/gradient/index.js +4 -5
- package/dist/image-editor/index.cjs +845 -844
- package/dist/image-editor/index.js +39 -38
- package/dist/index.cjs +16 -17
- package/dist/index.js +10 -11
- package/dist/paint/index.cjs +6 -4
- package/dist/paint/index.js +21 -19
- package/dist/paint-editor/brushes.d.cts +1 -2
- package/dist/paint-editor/brushes.d.ts +1 -2
- package/dist/paint-editor/index.cjs +2193 -694
- package/dist/paint-editor/index.js +1575 -76
- package/dist/paint-editor/mark-settings.d.cts +104 -0
- package/dist/paint-editor/mark-settings.d.ts +104 -0
- package/dist/paint-editor/procedural.d.cts +2 -75
- package/dist/paint-editor/procedural.d.ts +2 -75
- package/dist/paint-editor/stickers.d.cts +1 -22
- package/dist/paint-editor/stickers.d.ts +1 -22
- package/dist/raster/index.cjs +2 -2
- package/dist/raster/index.js +9 -9
- package/dist/stickers/index.cjs +10 -10
- package/dist/stickers/index.js +9 -9
- package/dist/tokens/index.cjs +3 -4
- package/dist/tokens/index.js +2 -3
- package/dist/tools/skill-evals.d.cts +8 -1
- package/dist/tools/skill-evals.d.ts +8 -1
- package/dist/typography/index.cjs +7 -8
- package/dist/typography/index.js +2 -3
- package/dist/vector/index.cjs +974 -974
- package/dist/vector/index.js +12 -12
- package/dist/video-editor/index.cjs +6 -7
- package/dist/video-editor/index.js +5 -6
- package/package.json +11 -1
- package/skills/README.md +2 -0
- package/skills/pixerate-brushes/SKILL.md +104 -0
- package/skills/pixerate-brushes-design/SKILL.md +88 -0
- package/skills/pixerate-brushes-design/evals/canvas-chalk.json +15 -0
- package/skills/pixerate-brushes-design/evals/pink-highlighter.json +15 -0
- package/skills/pixerate-brushes-design/evals/port-to-vector.json +17 -0
- package/dist/chunk-4JNWA3VT.cjs +0 -302
- package/dist/chunk-7AHBW2CQ.cjs +0 -200
- package/dist/chunk-F67XMVDI.js +0 -200
- package/dist/chunk-GT77U7QG.cjs +0 -2637
- package/dist/chunk-OTEPAQJX.js +0 -2637
- package/dist/chunk-WKH5ZAUA.js +0 -302
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2;
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkHS6QDWDFcjs = require('./chunk-HS6QDWDF.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var _chunkCVFAAZXEcjs = require('./chunk-CVFAAZXE.cjs');
|
|
@@ -47,11 +47,11 @@ var _chunkNM3G4VQTcjs = require('./chunk-NM3G4VQT.cjs');
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
var
|
|
50
|
+
var _chunkPXDIAYB6cjs = require('./chunk-PXDIAYB6.cjs');
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
var
|
|
54
|
+
var _chunk4ZC5QJE2cjs = require('./chunk-4ZC5QJE2.cjs');
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
|
|
@@ -192,7 +192,7 @@ var toGamma = (c) => {
|
|
|
192
192
|
function intoSpace(space, [r, g, b]) {
|
|
193
193
|
if (space === "linear") return [toLinear(r), toLinear(g), toLinear(b)];
|
|
194
194
|
if (space === "oklab") {
|
|
195
|
-
const c =
|
|
195
|
+
const c = _chunk4ZC5QJE2cjs.rgbToOklab.call(void 0, r, g, b);
|
|
196
196
|
return [c.l, c.a, c.b];
|
|
197
197
|
}
|
|
198
198
|
return [r, g, b];
|
|
@@ -200,7 +200,7 @@ function intoSpace(space, [r, g, b]) {
|
|
|
200
200
|
function outOfSpace(space, [x, y, z]) {
|
|
201
201
|
if (space === "linear") return [toGamma(x), toGamma(y), toGamma(z)];
|
|
202
202
|
if (space === "oklab") {
|
|
203
|
-
const c =
|
|
203
|
+
const c = _chunk4ZC5QJE2cjs.oklabToRgb.call(void 0, { l: x, a: y, b: z, alpha: 1 });
|
|
204
204
|
return [c.r, c.g, c.b];
|
|
205
205
|
}
|
|
206
206
|
return [clamp(x, 0, 1), clamp(y, 0, 1), clamp(z, 0, 1)];
|
|
@@ -2527,7 +2527,7 @@ function vectorExtrudeFaces(path, params) {
|
|
|
2527
2527
|
// src/vector/brushstroke.ts
|
|
2528
2528
|
var VECTOR_BRUSHSTROKE_SCALE = 2;
|
|
2529
2529
|
function vectorBrushstrokeBrushes() {
|
|
2530
|
-
return
|
|
2530
|
+
return _chunkHS6QDWDFcjs.BUILTIN_BRUSHES.filter((b) => _chunkPXDIAYB6cjs.isBrushstrokeBrush.call(void 0, b));
|
|
2531
2531
|
}
|
|
2532
2532
|
function vectorBrushstrokeBrush(id) {
|
|
2533
2533
|
return _nullishCoalesce(vectorBrushstrokeBrushes().find((b) => b.id === id), () => ( null));
|
|
@@ -2558,7 +2558,7 @@ function sanitizeVectorBrushstrokePaper(value) {
|
|
|
2558
2558
|
if (!value || typeof value !== "object") return null;
|
|
2559
2559
|
const r = value;
|
|
2560
2560
|
const out = {};
|
|
2561
|
-
if (typeof r.pattern === "string" &&
|
|
2561
|
+
if (typeof r.pattern === "string" && _chunkPXDIAYB6cjs.GRAIN_PATTERNS.includes(r.pattern)) out.pattern = r.pattern;
|
|
2562
2562
|
const seed = sanitizeSeed(r.seed);
|
|
2563
2563
|
if (seed !== void 0) out.seed = seed;
|
|
2564
2564
|
if (finite2(r.scale) && r.scale > 0) out.scale = Math.min(8, Math.max(0.25, r.scale));
|
|
@@ -2573,7 +2573,7 @@ function vectorBrushstrokeCharacterError(brush) {
|
|
|
2573
2573
|
const r = paper;
|
|
2574
2574
|
const extra = Object.keys(r).filter((k) => !["pattern", "seed", "scale", "depth"].includes(k));
|
|
2575
2575
|
if (extra.length) return `paper has unknown field ${extra.map((k) => `"${k}"`).join(", ")}: use pattern, seed, scale, depth.`;
|
|
2576
|
-
if (r.pattern !== void 0 && !
|
|
2576
|
+
if (r.pattern !== void 0 && !_chunkPXDIAYB6cjs.GRAIN_PATTERNS.includes(r.pattern)) return `Unknown paper pattern "${String(r.pattern)}": use one of ${_chunkPXDIAYB6cjs.GRAIN_PATTERNS.join(", ")}.`;
|
|
2577
2577
|
if (r.seed !== void 0 && !(Number.isInteger(r.seed) && r.seed >= 0 && r.seed <= VECTOR_BRUSHSTROKE_MAX_SEED)) return `paper.seed must be an integer from 0 to ${VECTOR_BRUSHSTROKE_MAX_SEED}.`;
|
|
2578
2578
|
if (r.scale !== void 0 && !(finite2(r.scale) && r.scale >= 0.25 && r.scale <= 8)) return "paper.scale must be from 0.25 to 8 (1 is the pattern's natural size).";
|
|
2579
2579
|
if (r.depth !== void 0 && !(finite2(r.depth) && r.depth >= 0 && r.depth <= 1)) return "paper.depth must be from 0 to 1.";
|
|
@@ -2589,7 +2589,7 @@ function vectorBrushstrokeReach(layer) {
|
|
|
2589
2589
|
if (!isVectorBrushstrokeLayer(layer)) return 0;
|
|
2590
2590
|
return (_nullishCoalesce(layer.brush.size, () => ( vectorBrushstrokeBrush(layer.brush.brushId).tip.size))) / 2;
|
|
2591
2591
|
}
|
|
2592
|
-
var cache = new (0,
|
|
2592
|
+
var cache = new (0, _chunkPXDIAYB6cjs.BrushstrokeCache)(256);
|
|
2593
2593
|
var urls = /* @__PURE__ */ new WeakMap();
|
|
2594
2594
|
var layerCache = /* @__PURE__ */ new WeakMap();
|
|
2595
2595
|
function vectorBrushstrokeImages(node, layer) {
|
|
@@ -2614,7 +2614,7 @@ function vectorBrushstrokeImages(node, layer) {
|
|
|
2614
2614
|
const stroke = cache.render({ points: ring.map(([x, y]) => ({ x, y })), ...layer.brush.pressure ? { pressure: layer.brush.pressure } : {} }, brush, { scale: VECTOR_BRUSHSTROKE_SCALE, color: color2, maxPixels: 2048 * 2048, ...character });
|
|
2615
2615
|
if (!stroke.bounds) continue;
|
|
2616
2616
|
let href = urls.get(stroke);
|
|
2617
|
-
if (!href) urls.set(stroke, href =
|
|
2617
|
+
if (!href) urls.set(stroke, href = _chunkPXDIAYB6cjs.brushstrokeDataUrl.call(void 0, stroke));
|
|
2618
2618
|
out.push({ href, ...stroke.bounds });
|
|
2619
2619
|
}
|
|
2620
2620
|
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
|
|
2
|
+
|
|
3
|
+
var _chunkU67EN7GGcjs = require('./chunk-U67EN7GG.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk3K6HWEXZcjs = require('./chunk-3K6HWEXZ.cjs');
|
|
7
|
+
|
|
8
|
+
// src/stickers/stamps.ts
|
|
9
|
+
var STAMP_KINDS = ["dot", "star", "heart", "leaf", "flower", "confetti", "splat", "sparkle", "ring"];
|
|
10
|
+
function stampCoverage(kind, u, v, t) {
|
|
11
|
+
const r = Math.hypot(u, v);
|
|
12
|
+
const a = Math.atan2(v, u);
|
|
13
|
+
const edge = (d) => Math.min(1, Math.max(0, d * 24 + 0.5));
|
|
14
|
+
switch (kind) {
|
|
15
|
+
case "dot":
|
|
16
|
+
return edge(0.95 - r);
|
|
17
|
+
case "ring":
|
|
18
|
+
return edge(Math.min(0.95 - r, r - 0.6));
|
|
19
|
+
case "star": {
|
|
20
|
+
const f = (a + Math.PI / 2) * 5 / (2 * Math.PI) % 1;
|
|
21
|
+
const notch = Math.min(f < 0 ? f + 1 : f, 1 - (f < 0 ? f + 1 : f)) * 2;
|
|
22
|
+
return edge(0.95 - 0.55 * notch - r);
|
|
23
|
+
}
|
|
24
|
+
case "sparkle": {
|
|
25
|
+
const q = Math.pow(Math.abs(u) / 0.95, 0.6) + Math.pow(Math.abs(v) / 0.95, 0.6);
|
|
26
|
+
return edge((1 - q) * 0.4);
|
|
27
|
+
}
|
|
28
|
+
case "heart": {
|
|
29
|
+
const x = u * 1.1;
|
|
30
|
+
const y = -v * 1.1 + 0.15;
|
|
31
|
+
const q = x * x + y * y - 0.55;
|
|
32
|
+
return edge(-(q * q * q - x * x * y * y * y) * 3);
|
|
33
|
+
}
|
|
34
|
+
case "leaf": {
|
|
35
|
+
const w = 0.42 * Math.sqrt(Math.max(0, 1 - u * u));
|
|
36
|
+
const inside = edge(w - Math.abs(v + 0.15 * u * u));
|
|
37
|
+
const rib = Math.abs(v + 0.15 * u * u) < 0.03 && Math.abs(u) < 0.85 ? 0.65 : 1;
|
|
38
|
+
return inside * rib;
|
|
39
|
+
}
|
|
40
|
+
case "flower": {
|
|
41
|
+
const petals = 0.6 + 0.35 * Math.abs(Math.cos(2.5 * a));
|
|
42
|
+
const body = edge(petals - r);
|
|
43
|
+
return r < 0.22 ? Math.max(body, 1) * 0.85 : body;
|
|
44
|
+
}
|
|
45
|
+
case "confetti": {
|
|
46
|
+
return edge(Math.min(0.9 - Math.abs(u), 0.35 - Math.abs(v)));
|
|
47
|
+
}
|
|
48
|
+
case "splat": {
|
|
49
|
+
let rr = 0.55;
|
|
50
|
+
for (let k = 1; k <= 3; k++) rr += 0.08 * Math.sin(a * (k + 2) + _chunk3K6HWEXZcjs.hash2.call(void 0, k, 1, t) * 6.28) / k;
|
|
51
|
+
let c = edge(rr - r);
|
|
52
|
+
for (let k = 0; k < 4; k++) {
|
|
53
|
+
const ang = _chunk3K6HWEXZcjs.hash2.call(void 0, k, 7, t) * Math.PI * 2;
|
|
54
|
+
const dist = 0.72 + 0.2 * _chunk3K6HWEXZcjs.hash2.call(void 0, k, 9, t);
|
|
55
|
+
const dx = u - Math.cos(ang) * dist;
|
|
56
|
+
const dy = v - Math.sin(ang) * dist;
|
|
57
|
+
c = Math.max(c, edge(0.08 + 0.06 * _chunk3K6HWEXZcjs.hash2.call(void 0, k, 11, t) - Math.hypot(dx, dy)));
|
|
58
|
+
}
|
|
59
|
+
return c;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// src/stickers/helpers.ts
|
|
65
|
+
var DEFAULT_STICKER_PAGE = 24;
|
|
66
|
+
var MAX_STICKER_PAGE = 100;
|
|
67
|
+
var EDITOR_STICKERS_ID = "editor";
|
|
68
|
+
function checkStickerSearchOptions(options = {}) {
|
|
69
|
+
if (options.limit !== void 0 && !(Number.isInteger(options.limit) && options.limit >= 1 && options.limit <= MAX_STICKER_PAGE)) {
|
|
70
|
+
throw new (0, _chunkU67EN7GGcjs.StickerError)("invalid_argument", `limit must be a whole number from 1 to ${MAX_STICKER_PAGE}, got ${options.limit}.`);
|
|
71
|
+
}
|
|
72
|
+
if (options.after !== void 0 && !/^\d+$/.test(options.after)) throw new (0, _chunkU67EN7GGcjs.StickerError)("invalid_argument", `after "${options.after}" is not a cursor from this provider; pass the next value of the previous page.`);
|
|
73
|
+
}
|
|
74
|
+
var words = (s) => s.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter(Boolean);
|
|
75
|
+
function stickerPage(items, options = {}, query = "") {
|
|
76
|
+
checkStickerSearchOptions(options);
|
|
77
|
+
const q = words(query);
|
|
78
|
+
const tags = (_nullishCoalesce(options.tags, () => ( []))).map((t) => t.toLowerCase());
|
|
79
|
+
const matches = items.filter((s) => {
|
|
80
|
+
if (options.category && s.category !== options.category) return false;
|
|
81
|
+
if (tags.length && !tags.every((t) => (_nullishCoalesce(s.tags, () => ( []))).some((x) => x.toLowerCase() === t))) return false;
|
|
82
|
+
if (_optionalChain([options, 'access', _2 => _2.licence, 'optionalAccess', _3 => _3.commercial]) === true && !s.licence.commercial) return false;
|
|
83
|
+
if (!q.length) return true;
|
|
84
|
+
const text = new Set(words([s.name, s.category, _nullishCoalesce(s.description, () => ( "")), ..._nullishCoalesce(s.tags, () => ( []))].join(" ")));
|
|
85
|
+
return q.every((w) => [...text].some((t) => t.startsWith(w)));
|
|
86
|
+
});
|
|
87
|
+
const start = options.after ? Number(options.after) : 0;
|
|
88
|
+
const limit = _nullishCoalesce(options.limit, () => ( DEFAULT_STICKER_PAGE));
|
|
89
|
+
const page = matches.slice(start, start + limit);
|
|
90
|
+
return { items: page, total: matches.length, ...start + limit < matches.length ? { next: String(start + limit) } : {} };
|
|
91
|
+
}
|
|
92
|
+
function parseStickerRef(ref) {
|
|
93
|
+
if (typeof ref !== "string" || !ref) throw new (0, _chunkU67EN7GGcjs.StickerError)("invalid_argument", 'A sticker ref is a "provider:id" string, e.g. "editor:star" (find_stickers lists them).');
|
|
94
|
+
const i = ref.indexOf(":");
|
|
95
|
+
if (i === -1) {
|
|
96
|
+
if (STAMP_KINDS.includes(ref)) return { provider: EDITOR_STICKERS_ID, id: ref };
|
|
97
|
+
throw new (0, _chunkU67EN7GGcjs.StickerError)("invalid_argument", `"${ref}" is not a sticker ref; refs are "provider:id" (e.g. "editor:${STAMP_KINDS[1]}"); find_stickers lists them.`);
|
|
98
|
+
}
|
|
99
|
+
if (i === 0 || i === ref.length - 1) throw new (0, _chunkU67EN7GGcjs.StickerError)("invalid_argument", `"${ref}" is not a sticker ref; refs are "provider:id".`);
|
|
100
|
+
return { provider: ref.slice(0, i), id: ref.slice(i + 1) };
|
|
101
|
+
}
|
|
102
|
+
function normalizeStickerRef(ref) {
|
|
103
|
+
const { provider, id } = parseStickerRef(ref);
|
|
104
|
+
return `${provider}:${id}`;
|
|
105
|
+
}
|
|
106
|
+
function editorStampOf(ref) {
|
|
107
|
+
const { provider, id } = parseStickerRef(ref);
|
|
108
|
+
return provider === EDITOR_STICKERS_ID && STAMP_KINDS.includes(id) ? id : null;
|
|
109
|
+
}
|
|
110
|
+
function stickerRefOf(provider, id) {
|
|
111
|
+
return provider.namespaced ? id : `${provider.id}:${id}`;
|
|
112
|
+
}
|
|
113
|
+
function stickerIdFor(provider, ref) {
|
|
114
|
+
const { provider: owner, id } = parseStickerRef(ref);
|
|
115
|
+
if (provider.namespaced) return `${owner}:${id}`;
|
|
116
|
+
return owner === provider.id ? id : null;
|
|
117
|
+
}
|
|
118
|
+
function closestStickerRefs(wanted, candidates, n = 3) {
|
|
119
|
+
const w = wanted.toLowerCase();
|
|
120
|
+
const dist = (a, b) => {
|
|
121
|
+
const d = Array.from({ length: b.length + 1 }, (_, j) => j);
|
|
122
|
+
for (let i = 1; i <= a.length; i++) {
|
|
123
|
+
let prev = d[0];
|
|
124
|
+
d[0] = i;
|
|
125
|
+
for (let j = 1; j <= b.length; j++) {
|
|
126
|
+
const tmp = d[j];
|
|
127
|
+
d[j] = Math.min(d[j] + 1, d[j - 1] + 1, prev + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
128
|
+
prev = tmp;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return d[b.length];
|
|
132
|
+
};
|
|
133
|
+
return [...candidates].sort((a, b) => dist(w, a.toLowerCase()) - dist(w, b.toLowerCase()) || a.localeCompare(b)).slice(0, n);
|
|
134
|
+
}
|
|
135
|
+
var StickersSlot = (_class = class {
|
|
136
|
+
constructor(fallback) {;_class.prototype.__init.call(this);
|
|
137
|
+
this.fallback = fallback;
|
|
138
|
+
this.current = fallback;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
__init() {this.listeners = /* @__PURE__ */ new Set()}
|
|
143
|
+
get provider() {
|
|
144
|
+
return this.current;
|
|
145
|
+
}
|
|
146
|
+
set(provider) {
|
|
147
|
+
const next = _nullishCoalesce(provider, () => ( this.fallback));
|
|
148
|
+
if (next === this.current) return;
|
|
149
|
+
this.current = next;
|
|
150
|
+
for (const l of [...this.listeners]) l(next);
|
|
151
|
+
}
|
|
152
|
+
subscribe(listener) {
|
|
153
|
+
this.listeners.add(listener);
|
|
154
|
+
return () => this.listeners.delete(listener);
|
|
155
|
+
}
|
|
156
|
+
}, _class);
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
exports.STAMP_KINDS = STAMP_KINDS; exports.stampCoverage = stampCoverage; exports.DEFAULT_STICKER_PAGE = DEFAULT_STICKER_PAGE; exports.MAX_STICKER_PAGE = MAX_STICKER_PAGE; exports.EDITOR_STICKERS_ID = EDITOR_STICKERS_ID; exports.checkStickerSearchOptions = checkStickerSearchOptions; exports.stickerPage = stickerPage; exports.parseStickerRef = parseStickerRef; exports.normalizeStickerRef = normalizeStickerRef; exports.editorStampOf = editorStampOf; exports.stickerRefOf = stickerRefOf; exports.stickerIdFor = stickerIdFor; exports.closestStickerRefs = closestStickerRefs; exports.StickersSlot = StickersSlot;
|
|
@@ -74,7 +74,7 @@ function profileAlongPolyline(points, values, count = 32) {
|
|
|
74
74
|
var round3 = (v) => Math.round(v * 1e3) / 1e3;
|
|
75
75
|
var loading = null;
|
|
76
76
|
function loadCanvasBrushstrokeRenderer() {
|
|
77
|
-
loading ??= Promise.resolve().then(() => _interopRequireWildcard(require("./brushstrokeRender-
|
|
77
|
+
loading ??= Promise.resolve().then(() => _interopRequireWildcard(require("./brushstrokeRender-7FLLSQEC.cjs"))).catch((error) => {
|
|
78
78
|
loading = null;
|
|
79
79
|
throw error;
|
|
80
80
|
});
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
var _chunkDWJJI6RTcjs = require('./chunk-DWJJI6RT.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunk4ZC5QJE2cjs = require('./chunk-4ZC5QJE2.cjs');
|
|
8
8
|
|
|
9
9
|
// src/animation/keyframes.ts
|
|
10
10
|
var ANIMATION_TIME_EPSILON = 1e-6;
|
|
@@ -46,7 +46,7 @@ function interpolateAnimationValue(from, to, t, type = "number") {
|
|
|
46
46
|
if (t <= 0) return from;
|
|
47
47
|
if (t >= 1) return to;
|
|
48
48
|
if (type === "color" || typeof from === "string" && typeof to === "string") {
|
|
49
|
-
const mixed =
|
|
49
|
+
const mixed = _chunk4ZC5QJE2cjs.mixColorsOklab.call(void 0, from, to, t);
|
|
50
50
|
if (mixed !== null) return mixed;
|
|
51
51
|
}
|
|
52
52
|
return from;
|
|
@@ -1,11 +1,188 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
2
|
+
D65_XY,
|
|
3
|
+
apply,
|
|
4
|
+
invert,
|
|
5
|
+
mul,
|
|
6
|
+
rgbToXyzMatrix,
|
|
7
|
+
xyToXyz
|
|
8
|
+
} from "./chunk-6ONMQ6WF.js";
|
|
9
|
+
|
|
10
|
+
// src/color/convert.ts
|
|
11
|
+
function srgbToLinear(v) {
|
|
12
|
+
const sign = Math.sign(v);
|
|
13
|
+
const abs = Math.abs(v);
|
|
14
|
+
return sign * (abs <= 0.04045 ? abs / 12.92 : ((abs + 0.055) / 1.055) ** 2.4);
|
|
15
|
+
}
|
|
16
|
+
function linearToSrgb(v) {
|
|
17
|
+
const sign = Math.sign(v);
|
|
18
|
+
const abs = Math.abs(v);
|
|
19
|
+
return sign * (abs <= 31308e-7 ? 12.92 * abs : 1.055 * abs ** (1 / 2.4) - 0.055);
|
|
20
|
+
}
|
|
21
|
+
function rgbToHsl(rgba) {
|
|
22
|
+
const { r, g, b, a } = rgba;
|
|
23
|
+
const max = Math.max(r, g, b);
|
|
24
|
+
const min = Math.min(r, g, b);
|
|
25
|
+
const d = max - min;
|
|
26
|
+
const l = (max + min) / 2;
|
|
27
|
+
let h = 0;
|
|
28
|
+
if (d > 0) {
|
|
29
|
+
if (max === r) h = 60 * ((g - b) / d % 6);
|
|
30
|
+
else if (max === g) h = 60 * ((b - r) / d + 2);
|
|
31
|
+
else h = 60 * ((r - g) / d + 4);
|
|
32
|
+
}
|
|
33
|
+
if (h < 0) h += 360;
|
|
34
|
+
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
35
|
+
return { h, s, l, alpha: a };
|
|
36
|
+
}
|
|
37
|
+
function hslToRgb(hsla) {
|
|
38
|
+
const { h, s, l, alpha } = hsla;
|
|
39
|
+
const hh = (h % 360 + 360) % 360 / 60;
|
|
40
|
+
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
41
|
+
const x = c * (1 - Math.abs(hh % 2 - 1));
|
|
42
|
+
const m = l - c / 2;
|
|
43
|
+
let r = 0;
|
|
44
|
+
let g = 0;
|
|
45
|
+
let b = 0;
|
|
46
|
+
if (hh < 1) {
|
|
47
|
+
r = c;
|
|
48
|
+
g = x;
|
|
49
|
+
b = 0;
|
|
50
|
+
} else if (hh < 2) {
|
|
51
|
+
r = x;
|
|
52
|
+
g = c;
|
|
53
|
+
b = 0;
|
|
54
|
+
} else if (hh < 3) {
|
|
55
|
+
r = 0;
|
|
56
|
+
g = c;
|
|
57
|
+
b = x;
|
|
58
|
+
} else if (hh < 4) {
|
|
59
|
+
r = 0;
|
|
60
|
+
g = x;
|
|
61
|
+
b = c;
|
|
62
|
+
} else if (hh < 5) {
|
|
63
|
+
r = x;
|
|
64
|
+
g = 0;
|
|
65
|
+
b = c;
|
|
66
|
+
} else {
|
|
67
|
+
r = c;
|
|
68
|
+
g = 0;
|
|
69
|
+
b = x;
|
|
70
|
+
}
|
|
71
|
+
return { r: r + m, g: g + m, b: b + m, a: alpha };
|
|
72
|
+
}
|
|
73
|
+
function rgbToHsv(rgba) {
|
|
74
|
+
const { r, g, b, a } = rgba;
|
|
75
|
+
const max = Math.max(r, g, b);
|
|
76
|
+
const min = Math.min(r, g, b);
|
|
77
|
+
const d = max - min;
|
|
78
|
+
let h = 0;
|
|
79
|
+
if (d > 0) {
|
|
80
|
+
if (max === r) h = 60 * ((g - b) / d % 6);
|
|
81
|
+
else if (max === g) h = 60 * ((b - r) / d + 2);
|
|
82
|
+
else h = 60 * ((r - g) / d + 4);
|
|
83
|
+
}
|
|
84
|
+
if (h < 0) h += 360;
|
|
85
|
+
const s = max === 0 ? 0 : d / max;
|
|
86
|
+
return { h, s, v: max, alpha: a };
|
|
87
|
+
}
|
|
88
|
+
function hsvToRgb(hsva) {
|
|
89
|
+
const { h, s, v, alpha } = hsva;
|
|
90
|
+
const hh = (h % 360 + 360) % 360 / 60;
|
|
91
|
+
const c = v * s;
|
|
92
|
+
const x = c * (1 - Math.abs(hh % 2 - 1));
|
|
93
|
+
const m = v - c;
|
|
94
|
+
let r = 0;
|
|
95
|
+
let g = 0;
|
|
96
|
+
let b = 0;
|
|
97
|
+
if (hh < 1) {
|
|
98
|
+
r = c;
|
|
99
|
+
g = x;
|
|
100
|
+
b = 0;
|
|
101
|
+
} else if (hh < 2) {
|
|
102
|
+
r = x;
|
|
103
|
+
g = c;
|
|
104
|
+
b = 0;
|
|
105
|
+
} else if (hh < 3) {
|
|
106
|
+
r = 0;
|
|
107
|
+
g = c;
|
|
108
|
+
b = x;
|
|
109
|
+
} else if (hh < 4) {
|
|
110
|
+
r = 0;
|
|
111
|
+
g = x;
|
|
112
|
+
b = c;
|
|
113
|
+
} else if (hh < 5) {
|
|
114
|
+
r = x;
|
|
115
|
+
g = 0;
|
|
116
|
+
b = c;
|
|
117
|
+
} else {
|
|
118
|
+
r = c;
|
|
119
|
+
g = 0;
|
|
120
|
+
b = x;
|
|
121
|
+
}
|
|
122
|
+
return { r: r + m, g: g + m, b: b + m, a: alpha };
|
|
123
|
+
}
|
|
124
|
+
function rgbToOklab(rgba) {
|
|
125
|
+
const lr = srgbToLinear(rgba.r);
|
|
126
|
+
const lg = srgbToLinear(rgba.g);
|
|
127
|
+
const lb = srgbToLinear(rgba.b);
|
|
128
|
+
const l = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);
|
|
129
|
+
const m = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);
|
|
130
|
+
const s = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);
|
|
131
|
+
return {
|
|
132
|
+
l: 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
|
|
133
|
+
a: 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
|
|
134
|
+
b: 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,
|
|
135
|
+
alpha: rgba.a
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function oklabToRgb(lab) {
|
|
139
|
+
const l_ = lab.l + 0.3963377774 * lab.a + 0.2158037573 * lab.b;
|
|
140
|
+
const m_ = lab.l - 0.1055613458 * lab.a - 0.0638541728 * lab.b;
|
|
141
|
+
const s_ = lab.l - 0.0894841775 * lab.a - 1.291485548 * lab.b;
|
|
142
|
+
const l = l_ ** 3;
|
|
143
|
+
const m = m_ ** 3;
|
|
144
|
+
const s = s_ ** 3;
|
|
145
|
+
return {
|
|
146
|
+
r: linearToSrgb(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),
|
|
147
|
+
g: linearToSrgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),
|
|
148
|
+
b: linearToSrgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),
|
|
149
|
+
a: lab.alpha
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function oklabToOklch(lab) {
|
|
153
|
+
const c = Math.hypot(lab.a, lab.b);
|
|
154
|
+
let h = 0;
|
|
155
|
+
if (c >= 1e-6) {
|
|
156
|
+
h = Math.atan2(lab.b, lab.a) * 180 / Math.PI;
|
|
157
|
+
if (h < 0) h += 360;
|
|
158
|
+
if (h >= 360) h -= 360;
|
|
159
|
+
}
|
|
160
|
+
return { l: lab.l, c, h, alpha: lab.alpha };
|
|
161
|
+
}
|
|
162
|
+
function oklchToOklab(lch) {
|
|
163
|
+
const rad = lch.h * Math.PI / 180;
|
|
164
|
+
return {
|
|
165
|
+
l: lch.l,
|
|
166
|
+
a: lch.c * Math.cos(rad),
|
|
167
|
+
b: lch.c * Math.sin(rad),
|
|
168
|
+
alpha: lch.alpha
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
var D65_XYZ = xyToXyz(D65_XY);
|
|
172
|
+
var SRGB_TO_XYZ = rgbToXyzMatrix([0.64, 0.33], [0.3, 0.6], [0.15, 0.06], D65_XYZ);
|
|
173
|
+
var P3_TO_XYZ = rgbToXyzMatrix([0.68, 0.32], [0.265, 0.69], [0.15, 0.06], D65_XYZ);
|
|
174
|
+
var XYZ_TO_SRGB = invert(SRGB_TO_XYZ);
|
|
175
|
+
var XYZ_TO_P3 = invert(P3_TO_XYZ);
|
|
176
|
+
var P3_TO_SRGB_MAT = mul(XYZ_TO_SRGB, P3_TO_XYZ);
|
|
177
|
+
var SRGB_TO_P3_MAT = mul(XYZ_TO_P3, SRGB_TO_XYZ);
|
|
178
|
+
function linearSrgbToDisplayP3(rgb) {
|
|
179
|
+
const out = apply(SRGB_TO_P3_MAT, [rgb.r, rgb.g, rgb.b]);
|
|
180
|
+
return { r: out[0], g: out[1], b: out[2], a: rgb.a };
|
|
181
|
+
}
|
|
182
|
+
function displayP3ToLinearSrgb(rgb) {
|
|
183
|
+
const out = apply(P3_TO_SRGB_MAT, [rgb.r, rgb.g, rgb.b]);
|
|
184
|
+
return { r: out[0], g: out[1], b: out[2], a: rgb.a };
|
|
185
|
+
}
|
|
9
186
|
|
|
10
187
|
// src/color/named.ts
|
|
11
188
|
var NAMED_COLORS = {
|
|
@@ -433,6 +610,18 @@ function readableTextColor(background, candidates = [BLACK, WHITE]) {
|
|
|
433
610
|
}
|
|
434
611
|
|
|
435
612
|
export {
|
|
613
|
+
srgbToLinear,
|
|
614
|
+
linearToSrgb,
|
|
615
|
+
rgbToHsl,
|
|
616
|
+
hslToRgb,
|
|
617
|
+
rgbToHsv,
|
|
618
|
+
hsvToRgb,
|
|
619
|
+
rgbToOklab,
|
|
620
|
+
oklabToRgb,
|
|
621
|
+
oklabToOklch,
|
|
622
|
+
oklchToOklab,
|
|
623
|
+
linearSrgbToDisplayP3,
|
|
624
|
+
displayP3ToLinearSrgb,
|
|
436
625
|
NAMED_COLORS,
|
|
437
626
|
parseColor,
|
|
438
627
|
isColor,
|
|
@@ -4,20 +4,18 @@ import {
|
|
|
4
4
|
mixColors,
|
|
5
5
|
normalizeDualColor,
|
|
6
6
|
resolveColor
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7272D3K2.js";
|
|
8
8
|
import {
|
|
9
9
|
deltaEOK,
|
|
10
10
|
formatHex,
|
|
11
11
|
inSrgbGamut
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-YBAPT7NL.js";
|
|
13
13
|
import {
|
|
14
14
|
contrastRatio,
|
|
15
|
-
parseColor
|
|
16
|
-
} from "./chunk-JEGJP4OW.js";
|
|
17
|
-
import {
|
|
18
15
|
oklabToRgb,
|
|
16
|
+
parseColor,
|
|
19
17
|
rgbToOklab
|
|
20
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-MHLU6GRJ.js";
|
|
21
19
|
|
|
22
20
|
// src/gradient/model.ts
|
|
23
21
|
function clamp(v, min, max) {
|