@pixerate/editor 0.227.0 → 0.227.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation-editor/index.cjs +9 -9
- package/dist/animation-editor/index.js +1 -1
- package/dist/canvas/effects.d.cts +18 -0
- package/dist/canvas/effects.d.ts +18 -0
- package/dist/canvas/index.cjs +27 -8
- package/dist/canvas/index.js +20 -1
- package/dist/{chunk-ABQ2VGUB.cjs → chunk-5MQOBTNP.cjs} +13 -2
- package/dist/{chunk-C6CMQXMI.cjs → chunk-IGPEBXUD.cjs} +7 -7
- package/dist/{chunk-4PA6YS6W.cjs → chunk-K5GXW5TR.cjs} +14 -14
- package/dist/{chunk-56RFHF7O.js → chunk-LPTFDCJO.js} +1 -1
- package/dist/{chunk-4MDWEX44.js → chunk-PB6JV62G.js} +1 -1
- package/dist/{chunk-7DZ55AIE.js → chunk-UGYUGZE2.js} +13 -2
- package/dist/effects/index.cjs +44 -44
- package/dist/effects/index.js +2 -2
- package/dist/image-editor/index.cjs +13 -13
- package/dist/image-editor/index.js +1 -1
- package/dist/paint-editor/index.cjs +7 -7
- package/dist/paint-editor/index.js +2 -2
- package/dist/vector/index.cjs +6 -6
- package/dist/vector/index.js +1 -1
- package/dist/video-editor/index.cjs +309 -309
- package/dist/video-editor/index.js +3 -3
- package/package.json +1 -1
|
@@ -347,13 +347,24 @@ function createEffectToolProvider(host) {
|
|
|
347
347
|
{
|
|
348
348
|
name: "list_applied_effects",
|
|
349
349
|
title: "List applied effects",
|
|
350
|
-
description: `Lists the effects in the document: for each ${host.target.noun} that has any (or the one given), its effects in order with id, effect id, name, role, enabled, opacity and saved values. available is false for an effect the current provider does not have (or when none is registered
|
|
350
|
+
description: `Lists the effects in the document: for each ${host.target.noun} that has any (or the one given), its effects in order with id, effect id, name, role, enabled, opacity and saved values. available is false for an effect the current provider does not have, or that was saved from another provider (reason says which and what to do), or when none is registered: it is kept and drawn as a placeholder, and can still be removed. Works without a provider.`,
|
|
351
351
|
inputSchema: object({ target: { ...TARGET, description: `${host.target.id} Leave out to list every ${host.target.noun} with effects.` } }),
|
|
352
352
|
annotations: { title: "List applied effects", ...ANNOTATIONS.read },
|
|
353
353
|
handler: async (args) => {
|
|
354
354
|
const p = host.provider();
|
|
355
355
|
const known = new Set((p ? await explain(async () => p.list()) : []).map((e) => e.id));
|
|
356
|
-
const
|
|
356
|
+
const unavailable = (e) => {
|
|
357
|
+
if (!p) return null;
|
|
358
|
+
if (e.provider && e.provider !== p.id) return `It comes from the "${e.provider}" provider, but "${p.id}" (${p.name}) is registered: register "${e.provider}" again, or remove it and apply one from search_effects.`;
|
|
359
|
+
return known.has(e.effect) ? null : `${p.name} has no effect "${e.effect}": remove it and apply one from search_effects.`;
|
|
360
|
+
};
|
|
361
|
+
const targets = host.list(args.target).map((t) => ({
|
|
362
|
+
...t,
|
|
363
|
+
effects: t.effects.map((e) => {
|
|
364
|
+
const why = unavailable(e);
|
|
365
|
+
return { ...e, available: !!p && !why, ...why ? { reason: why } : {} };
|
|
366
|
+
})
|
|
367
|
+
}));
|
|
357
368
|
return { provider: p ? { id: p.id, name: p.name } : null, ...p ? {} : { reason: NO_PROVIDER }, targets };
|
|
358
369
|
}
|
|
359
370
|
}
|
package/dist/effects/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _chunk4XSBOGMKcjs = require('../chunk-4XSBOGMK.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkK5GXW5TRcjs = require('../chunk-K5GXW5TR.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
var _chunkPY4GWSE2cjs = require('../chunk-PY4GWSE2.cjs');
|
|
@@ -37,7 +37,7 @@ var _chunkPY4GWSE2cjs = require('../chunk-PY4GWSE2.cjs');
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var _chunk5MQOBTNPcjs = require('../chunk-5MQOBTNP.cjs');
|
|
41
41
|
require('../chunk-WOFXZ3XU.cjs');
|
|
42
42
|
require('../chunk-FJ2MSI43.cjs');
|
|
43
43
|
|
|
@@ -45,7 +45,7 @@ require('../chunk-FJ2MSI43.cjs');
|
|
|
45
45
|
var _chunkDWJJI6RTcjs = require('../chunk-DWJJI6RT.cjs');
|
|
46
46
|
|
|
47
47
|
// src/effects/conformance.ts
|
|
48
|
-
var codeOf = (e) =>
|
|
48
|
+
var codeOf = (e) => _chunk5MQOBTNPcjs.isEffectError.call(void 0, e) ? e.code : e instanceof Error ? `untyped ${e.name}: ${e.message}` : String(e);
|
|
49
49
|
async function rejectsWith(code, run) {
|
|
50
50
|
try {
|
|
51
51
|
await run();
|
|
@@ -59,10 +59,10 @@ function checkSummary(e, issues) {
|
|
|
59
59
|
const at = (message) => issues.push({ effectId: e.id, message });
|
|
60
60
|
if (!e.id || typeof e.id !== "string") at("summary has no id");
|
|
61
61
|
if (!e.name) at("summary has no name");
|
|
62
|
-
if (!
|
|
62
|
+
if (!_chunk5MQOBTNPcjs.EFFECT_KINDS.includes(e.kind)) at(`kind "${e.kind}" is not one of ${_chunk5MQOBTNPcjs.EFFECT_KINDS.join(", ")}`);
|
|
63
63
|
if (!e.category) at("summary has no category");
|
|
64
64
|
if (!Array.isArray(e.uses) || !e.uses.length) at("summary has no uses");
|
|
65
|
-
for (const u of _nullishCoalesce(e.uses, () => ( []))) if (!
|
|
65
|
+
for (const u of _nullishCoalesce(e.uses, () => ( []))) if (!_chunk5MQOBTNPcjs.EFFECT_USES.includes(u)) at(`use "${u}" is not one of ${_chunk5MQOBTNPcjs.EFFECT_USES.join(", ")}`);
|
|
66
66
|
if (typeof e.transparent !== "boolean") at("transparent is not a boolean");
|
|
67
67
|
if (typeof e.loop !== "boolean") at("loop is not a boolean");
|
|
68
68
|
if (e.duration !== void 0 && !(e.duration > 0)) at("duration must be a positive number of ms when present");
|
|
@@ -72,7 +72,7 @@ function checkSummary(e, issues) {
|
|
|
72
72
|
const m = e.camera;
|
|
73
73
|
if (!m) at("a camera effect needs camera: { role, durationMs }");
|
|
74
74
|
else {
|
|
75
|
-
if (!
|
|
75
|
+
if (!_chunk5MQOBTNPcjs.CAMERA_MOVE_ROLES.includes(m.role)) at(`camera.role "${m.role}" is not one of ${_chunk5MQOBTNPcjs.CAMERA_MOVE_ROLES.join(", ")}`);
|
|
76
76
|
if (!(Number.isFinite(m.durationMs) && m.durationMs >= 0)) at("camera.durationMs must be a number of ms \u2265 0");
|
|
77
77
|
if (m.cut !== void 0 && !(m.cut >= 0 && m.cut <= 1)) at("camera.cut must be 0\u20131 when present");
|
|
78
78
|
if (e.duration !== void 0 && e.duration !== m.durationMs) at(`duration ${e.duration} differs from camera.durationMs ${m.durationMs}`);
|
|
@@ -98,8 +98,8 @@ function checkDescription(id, d, issues) {
|
|
|
98
98
|
if (!control) at(`backgroundOpacity "${d.backgroundOpacity}" is not a control`);
|
|
99
99
|
else if (control.type !== "number" || control.minimum !== 0 || control.maximum !== 1) at(`backgroundOpacity "${d.backgroundOpacity}" must be a number control from 0 to 1`);
|
|
100
100
|
}
|
|
101
|
-
for (const e of
|
|
102
|
-
for (const p of _nullishCoalesce(d.presets, () => ( []))) for (const e of
|
|
101
|
+
for (const e of _chunk5MQOBTNPcjs.effectValueErrors.call(void 0, d, d.defaults)) at(`default ${e.path}: ${e.message}`);
|
|
102
|
+
for (const p of _nullishCoalesce(d.presets, () => ( []))) for (const e of _chunk5MQOBTNPcjs.effectValueErrors.call(void 0, d, p.values)) at(`preset "${p.name}" ${e.path}: ${e.message}`);
|
|
103
103
|
for (const input2 of _nullishCoalesce(d.inputs, () => ( []))) {
|
|
104
104
|
if (!input2.name || !input2.description) at("every input needs a name and a description");
|
|
105
105
|
if (input2.kind !== "image" && input2.kind !== "audio") at(`input "${input2.name}" has kind "${input2.kind}"`);
|
|
@@ -110,7 +110,7 @@ function checkDescription(id, d, issues) {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
function grey(size) {
|
|
113
|
-
const p =
|
|
113
|
+
const p = _chunk5MQOBTNPcjs.createEffectPixels.call(void 0, size, size);
|
|
114
114
|
p.data.fill(128);
|
|
115
115
|
return p;
|
|
116
116
|
}
|
|
@@ -127,7 +127,7 @@ async function checkRender(provider, d, size, issues) {
|
|
|
127
127
|
}
|
|
128
128
|
try {
|
|
129
129
|
const out = await renderer.render({ time: 0, inputs });
|
|
130
|
-
if (!
|
|
130
|
+
if (!_chunk5MQOBTNPcjs.isEffectPixels.call(void 0, out)) at("render did not return EffectPixels");
|
|
131
131
|
else if (out.width !== size || out.height !== size || out.data.length !== size * size * 4) at(`render returned ${out.width}\xD7${out.height}, not ${size}\xD7${size}`);
|
|
132
132
|
} catch (e) {
|
|
133
133
|
at(`render failed: ${codeOf(e)}`);
|
|
@@ -157,10 +157,10 @@ async function checkCamera(provider, d, issues) {
|
|
|
157
157
|
at("cameraView must be synchronous; it returned a Promise");
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
|
-
if (!
|
|
160
|
+
if (!_chunk5MQOBTNPcjs.isCameraView.call(void 0, view)) at(`cameraView at u ${u} is not a CameraView (zoom > 0, finite scrollX and scrollY): ${JSON.stringify(view)}`);
|
|
161
161
|
else views.push(view);
|
|
162
162
|
const again = provider.cameraView(d.id, ctx(u));
|
|
163
|
-
if (
|
|
163
|
+
if (_chunk5MQOBTNPcjs.isCameraView.call(void 0, view) && !sameView(view, again)) at(`cameraView is not pure: two calls at u ${u} gave different views`);
|
|
164
164
|
} catch (e) {
|
|
165
165
|
at(`cameraView at u ${u} failed: ${codeOf(e)}`);
|
|
166
166
|
}
|
|
@@ -173,7 +173,7 @@ async function checkCamera(provider, d, issues) {
|
|
|
173
173
|
const keys = _optionalChain([sample, 'optionalAccess', _11 => _11.keys]);
|
|
174
174
|
if (!Array.isArray(keys) || keys.length < 2) at("sampleCameraMove returned fewer than two keys");
|
|
175
175
|
else {
|
|
176
|
-
if (keys.some((k, i) => !
|
|
176
|
+
if (keys.some((k, i) => !_chunk5MQOBTNPcjs.isCameraView.call(void 0, k.view) || !Number.isFinite(k.t) || i > 0 && k.t < keys[i - 1].t)) at("sampleCameraMove keys must be CameraViews in time order");
|
|
177
177
|
if (keys[0].t !== 0 || keys[keys.length - 1].t !== ms) at(`sampleCameraMove keys must run from 0 to ${ms} ms, got ${keys[0].t} to ${keys[keys.length - 1].t}`);
|
|
178
178
|
else if (!near(keys[0].view, views[0]) || !near(keys[keys.length - 1].view, views[4])) at("sampleCameraMove disagrees with cameraView at the start or end of the move");
|
|
179
179
|
if (camera.cut !== void 0 && sample.cut === void 0) at("sampleCameraMove gave no cut for a move that cuts");
|
|
@@ -543,15 +543,15 @@ var smooth = (t) => t * t * (3 - 2 * t);
|
|
|
543
543
|
var clamp01 = (v) => v < 0 ? 0 : v > 1 ? 1 : v;
|
|
544
544
|
function input(request, name, id, width, height) {
|
|
545
545
|
const src = _optionalChain([request, 'access', _24 => _24.inputs, 'optionalAccess', _25 => _25[name]]);
|
|
546
|
-
if (!src) throw new (0,
|
|
547
|
-
if (!
|
|
546
|
+
if (!src) throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`Effect "${id}" needs an input named "${name}".`, id);
|
|
547
|
+
if (!_chunk5MQOBTNPcjs.isEffectPixels.call(void 0, src)) throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`The fake provider only takes EffectPixels inputs ("${name}").`, id);
|
|
548
548
|
if (src.width !== width || src.height !== height) {
|
|
549
|
-
throw new (0,
|
|
549
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`Input "${name}" is ${src.width}\xD7${src.height}; the renderer is ${width}\xD7${height}.`, id);
|
|
550
550
|
}
|
|
551
551
|
return src;
|
|
552
552
|
}
|
|
553
553
|
function renderPixels(d, v, request, width, height) {
|
|
554
|
-
const out =
|
|
554
|
+
const out = _chunk5MQOBTNPcjs.createEffectPixels.call(void 0, width, height);
|
|
555
555
|
const o = out.data;
|
|
556
556
|
switch (d.id) {
|
|
557
557
|
case "fake.invert": {
|
|
@@ -617,7 +617,7 @@ function renderPixels(d, v, request, width, height) {
|
|
|
617
617
|
break;
|
|
618
618
|
}
|
|
619
619
|
default:
|
|
620
|
-
throw new (0,
|
|
620
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${d.id}" is a ${d.kind} effect; use applyVectorEffect.`, d.id);
|
|
621
621
|
}
|
|
622
622
|
return out;
|
|
623
623
|
}
|
|
@@ -647,22 +647,22 @@ function cameraViewOf(d, ctx, v) {
|
|
|
647
647
|
case "fake.drift":
|
|
648
648
|
return viewAt(x0, y0, from.zoom * lerp(1, v.scale, smooth(u)), ctx);
|
|
649
649
|
default:
|
|
650
|
-
throw new (0,
|
|
650
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${d.id}" is a ${d.kind} effect, not a camera move.`, d.id);
|
|
651
651
|
}
|
|
652
652
|
}
|
|
653
653
|
function toFloat(p) {
|
|
654
654
|
const f = new Float32Array(p.data.length);
|
|
655
655
|
for (let i = 0; i < f.length; i += 4) {
|
|
656
|
-
f[i] =
|
|
657
|
-
f[i + 1] =
|
|
658
|
-
f[i + 2] =
|
|
656
|
+
f[i] = _chunk5MQOBTNPcjs.srgbToLinear.call(void 0, p.data[i] / 255);
|
|
657
|
+
f[i + 1] = _chunk5MQOBTNPcjs.srgbToLinear.call(void 0, p.data[i + 1] / 255);
|
|
658
|
+
f[i + 2] = _chunk5MQOBTNPcjs.srgbToLinear.call(void 0, p.data[i + 2] / 255);
|
|
659
659
|
f[i + 3] = p.data[i + 3] / 255;
|
|
660
660
|
}
|
|
661
|
-
return
|
|
661
|
+
return _chunk5MQOBTNPcjs.encodeEffectFloat.call(void 0, { ...p, float: f });
|
|
662
662
|
}
|
|
663
663
|
function maskResult(out, mask, source, id) {
|
|
664
|
-
if (!
|
|
665
|
-
throw new (0,
|
|
664
|
+
if (!_chunk5MQOBTNPcjs.isEffectPixels.call(void 0, mask) || mask.width !== out.width || mask.height !== out.height) {
|
|
665
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)("The mask must be EffectPixels the size of the renderer.", id);
|
|
666
666
|
}
|
|
667
667
|
const o = out.data;
|
|
668
668
|
for (let i = 0; i < o.length; i += 4) {
|
|
@@ -688,32 +688,32 @@ function createFakeEffectProvider(options = {}) {
|
|
|
688
688
|
const byId = new Map(all.map((d) => [d.id, d]));
|
|
689
689
|
const get = (id) => {
|
|
690
690
|
const d = byId.get(id);
|
|
691
|
-
if (!d) throw new (0,
|
|
691
|
+
if (!d) throw new (0, _chunk5MQOBTNPcjs.UnknownEffectError)(id, "the fake provider");
|
|
692
692
|
return d;
|
|
693
693
|
};
|
|
694
694
|
const summaries = all.map(summaryOf);
|
|
695
695
|
const camera = (id, ctx, values) => {
|
|
696
696
|
const d = get(id);
|
|
697
|
-
if (d.kind !== "camera") throw new (0,
|
|
698
|
-
if (!(ctx.u >= 0 && ctx.u <= 1)) throw new (0,
|
|
699
|
-
return cameraViewOf(d, ctx,
|
|
697
|
+
if (d.kind !== "camera") throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${id}" is a ${d.kind} effect, not a camera move.`, id);
|
|
698
|
+
if (!(ctx.u >= 0 && ctx.u <= 1)) throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`u must be 0\u20131 through the move, got ${ctx.u}.`, id);
|
|
699
|
+
return cameraViewOf(d, ctx, _chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, d, values));
|
|
700
700
|
};
|
|
701
701
|
const provider = {
|
|
702
702
|
id: "fake",
|
|
703
703
|
name: "Fake effects",
|
|
704
704
|
version: "1",
|
|
705
705
|
capabilities,
|
|
706
|
-
list: (o) =>
|
|
707
|
-
search: (q, o) =>
|
|
706
|
+
list: (o) => _chunk5MQOBTNPcjs.searchEffectSummaries.call(void 0, summaries, "", o),
|
|
707
|
+
search: (q, o) => _chunk5MQOBTNPcjs.searchEffectSummaries.call(void 0, summaries, q, o),
|
|
708
708
|
describe: (id) => structuredClone(get(id)),
|
|
709
709
|
createRenderer(id, ro) {
|
|
710
710
|
const d = get(id);
|
|
711
|
-
if (d.kind === "camera") throw new (0,
|
|
712
|
-
if (d.kind !== "shader") throw new (0,
|
|
711
|
+
if (d.kind === "camera") throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${id}" is a camera move: it moves a scene's camera and draws no pixels. Use cameraView.`, id);
|
|
712
|
+
if (d.kind !== "shader") throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${id}" is a ${d.kind} effect; use applyVectorEffect.`, id);
|
|
713
713
|
const { width, height } = ro;
|
|
714
714
|
const depth = _nullishCoalesce(ro.depth, () => ( 8));
|
|
715
715
|
if (!(width > 0 && height > 0) || width > capabilities.maxSize || height > capabilities.maxSize) {
|
|
716
|
-
throw new (0,
|
|
716
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`Renderer size ${width}\xD7${height} is outside 1\u2013${capabilities.maxSize}.`, id);
|
|
717
717
|
}
|
|
718
718
|
let disposed = false;
|
|
719
719
|
return {
|
|
@@ -722,15 +722,15 @@ function createFakeEffectProvider(options = {}) {
|
|
|
722
722
|
height,
|
|
723
723
|
depth,
|
|
724
724
|
async render(request) {
|
|
725
|
-
if (disposed) throw new (0,
|
|
725
|
+
if (disposed) throw new (0, _chunk5MQOBTNPcjs.EffectDisposedError)(id);
|
|
726
726
|
if (!Number.isFinite(request.time) || request.time < 0) {
|
|
727
|
-
throw new (0,
|
|
727
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`time must be a finite number of ms \u2265 0, got ${request.time}.`, id);
|
|
728
728
|
}
|
|
729
|
-
const values =
|
|
729
|
+
const values = _chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, d, request.values);
|
|
730
730
|
_optionalChain([options, 'access', _26 => _26.onRender, 'optionalCall', _27 => _27(id, request)]);
|
|
731
731
|
const out = renderPixels(d, values, request, width, height);
|
|
732
732
|
if (request.mask) {
|
|
733
|
-
if (!capabilities.supportsMask) throw new (0,
|
|
733
|
+
if (!capabilities.supportsMask) throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)("This provider does not take masks.", id);
|
|
734
734
|
const source = d.uses.includes("filter") ? _optionalChain([request, 'access', _28 => _28.inputs, 'optionalAccess', _29 => _29.source]) : void 0;
|
|
735
735
|
maskResult(out, request.mask, source, id);
|
|
736
736
|
}
|
|
@@ -743,8 +743,8 @@ function createFakeEffectProvider(options = {}) {
|
|
|
743
743
|
},
|
|
744
744
|
applyVectorEffect(id, target, values) {
|
|
745
745
|
const d = get(id);
|
|
746
|
-
if (d.kind !== "motion" && d.kind !== "vector") throw new (0,
|
|
747
|
-
const v =
|
|
746
|
+
if (d.kind !== "motion" && d.kind !== "vector") throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${id}" is a ${d.kind} effect, not a vector one.`, id);
|
|
747
|
+
const v = _chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, d, values);
|
|
748
748
|
if (d.kind === "vector") {
|
|
749
749
|
return { svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><circle id="badge" cx="50" cy="50" r="40" fill="${v.color}"/></svg>`, animate: [{ id: "badge", ms: v.ms, attrs: { opacity: [0, 1] } }], duration: v.ms, loop: false };
|
|
750
750
|
}
|
|
@@ -764,11 +764,11 @@ function createFakeEffectProvider(options = {}) {
|
|
|
764
764
|
sampleCameraMove: (id, request) => {
|
|
765
765
|
const d = get(id);
|
|
766
766
|
const { from, to, ms, stage, fps, values } = request;
|
|
767
|
-
return
|
|
767
|
+
return _chunk5MQOBTNPcjs.sampleCameraViews.call(void 0, (u) => camera(id, { from, to, u, ms, stage }, values), { ms, fps, cut: _optionalChain([d, 'access', _30 => _30.camera, 'optionalAccess', _31 => _31.cut]) });
|
|
768
768
|
}
|
|
769
769
|
} : {},
|
|
770
770
|
...supportsAuthoring ? {
|
|
771
|
-
openAuthoring: (from) =>
|
|
771
|
+
openAuthoring: (from) => _chunkK5GXW5TRcjs.createEffectAuthoringSession.call(void 0, from, { provider })
|
|
772
772
|
} : {}
|
|
773
773
|
};
|
|
774
774
|
return provider;
|
|
@@ -849,7 +849,7 @@ var effectFieldValue = (field, value) => {
|
|
|
849
849
|
return value === void 0 || value === null || typeof value === "object" && !Array.isArray(value) ? field.default : value;
|
|
850
850
|
};
|
|
851
851
|
function effectSamplePicture(width, height, variant = 0) {
|
|
852
|
-
const p =
|
|
852
|
+
const p = _chunk5MQOBTNPcjs.createEffectPixels.call(void 0, width, height);
|
|
853
853
|
for (let y = 0, i = 0; y < height; y++) {
|
|
854
854
|
for (let x = 0; x < width; x++, i += 4) {
|
|
855
855
|
const u = x / Math.max(1, width - 1);
|
|
@@ -1336,4 +1336,4 @@ function createEffectAuthoringToolProvider(host, options) {
|
|
|
1336
1336
|
|
|
1337
1337
|
|
|
1338
1338
|
|
|
1339
|
-
exports.CAMERA_MOVE_ROLES =
|
|
1339
|
+
exports.CAMERA_MOVE_ROLES = _chunk5MQOBTNPcjs.CAMERA_MOVE_ROLES; exports.EFFECT_ERROR_CODES = _chunk5MQOBTNPcjs.EFFECT_ERROR_CODES; exports.EFFECT_KINDS = _chunk5MQOBTNPcjs.EFFECT_KINDS; exports.EFFECT_USES = _chunk5MQOBTNPcjs.EFFECT_USES; exports.EFFECT_USE_LABELS = EFFECT_USE_LABELS; exports.EffectControlError = _chunk5MQOBTNPcjs.EffectControlError; exports.EffectDisposedError = _chunk5MQOBTNPcjs.EffectDisposedError; exports.EffectError = _chunk5MQOBTNPcjs.EffectError; exports.EffectRendererPool = _chunkPY4GWSE2cjs.EffectRendererPool; exports.EffectUnsupportedError = _chunk5MQOBTNPcjs.EffectUnsupportedError; exports.EffectsSlot = _chunk5MQOBTNPcjs.EffectsSlot; exports.NoEffectsProviderError = _chunk5MQOBTNPcjs.NoEffectsProviderError; exports.UnknownEffectError = _chunk5MQOBTNPcjs.UnknownEffectError; exports.applyEffectMask = _chunk5MQOBTNPcjs.applyEffectMask; exports.checkEffectProvider = checkEffectProvider; exports.countEffectTags = _chunk5MQOBTNPcjs.countEffectTags; exports.createEffectAuthoringSession = _chunkK5GXW5TRcjs.createEffectAuthoringSession; exports.createEffectAuthoringToolProvider = createEffectAuthoringToolProvider; exports.createEffectPixels = _chunk5MQOBTNPcjs.createEffectPixels; exports.createEffectToolProvider = _chunk5MQOBTNPcjs.createEffectToolProvider; exports.createFakeEffectProvider = createFakeEffectProvider; exports.effectControlField = effectControlField; exports.effectFieldValue = effectFieldValue; exports.effectFontFamilies = effectFontFamilies; exports.effectOffered = _chunk5MQOBTNPcjs.effectOffered; exports.effectParameterFields = effectParameterFields; exports.effectSampleInputs = effectSampleInputs; exports.effectSamplePicture = effectSamplePicture; exports.effectValueErrors = _chunk5MQOBTNPcjs.effectValueErrors; exports.encodeEffectFloat = _chunk5MQOBTNPcjs.encodeEffectFloat; exports.groupEffectsByCategory = groupEffectsByCategory; exports.hasEffectTags = _chunk5MQOBTNPcjs.hasEffectTags; exports.isCameraView = _chunk5MQOBTNPcjs.isCameraView; exports.isEffectError = _chunk5MQOBTNPcjs.isEffectError; exports.isEffectFontControl = isEffectFontControl; exports.isEffectPixels = _chunk5MQOBTNPcjs.isEffectPixels; exports.linearToSrgb = _chunk5MQOBTNPcjs.linearToSrgb; exports.normaliseEffectTag = _chunk5MQOBTNPcjs.normaliseEffectTag; exports.renderEffectThumbnail = renderEffectThumbnail; exports.resolveEffectValues = _chunk5MQOBTNPcjs.resolveEffectValues; exports.sampleCameraViews = _chunk5MQOBTNPcjs.sampleCameraViews; exports.sampleEffectCameraMove = _chunk5MQOBTNPcjs.sampleEffectCameraMove; exports.searchEffectSummaries = _chunk5MQOBTNPcjs.searchEffectSummaries; exports.srgbToLinear = _chunk5MQOBTNPcjs.srgbToLinear;
|
package/dist/effects/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "../chunk-N4ZXW3WB.js";
|
|
4
4
|
import {
|
|
5
5
|
createEffectAuthoringSession
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-PB6JV62G.js";
|
|
7
7
|
import {
|
|
8
8
|
EffectRendererPool
|
|
9
9
|
} from "../chunk-EHLOCVWB.js";
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
sampleEffectCameraMove,
|
|
38
38
|
searchEffectSummaries,
|
|
39
39
|
srgbToLinear
|
|
40
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-UGYUGZE2.js";
|
|
41
41
|
import "../chunk-V2ZCJRDM.js";
|
|
42
42
|
import "../chunk-RNSANXPT.js";
|
|
43
43
|
import {
|
|
@@ -743,7 +743,7 @@ require('../chunk-NM3G4VQT.cjs');
|
|
|
743
743
|
|
|
744
744
|
|
|
745
745
|
|
|
746
|
-
var
|
|
746
|
+
var _chunk5MQOBTNPcjs = require('../chunk-5MQOBTNP.cjs');
|
|
747
747
|
require('../chunk-WOFXZ3XU.cjs');
|
|
748
748
|
|
|
749
749
|
|
|
@@ -4831,7 +4831,7 @@ function checkImageEffectPlace(d, place) {
|
|
|
4831
4831
|
const allowed = IMAGE_EFFECT_PLACES[place];
|
|
4832
4832
|
if (d.kind === "motion" || !d.uses.some((u) => allowed.includes(u))) {
|
|
4833
4833
|
const instead = place === "filter" && d.uses.some((u) => IMAGE_EFFECT_PLACES.layer.includes(u)) ? "; add it as an effect layer with add_effect_layer instead" : place === "layer" && d.uses.includes("filter") ? "; apply it to a layer as a smart filter with apply_effect instead" : "";
|
|
4834
|
-
throw new (0,
|
|
4834
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(
|
|
4835
4835
|
`"${d.id}" (${d.name}) is a ${d.uses.join(" / ")} effect, and ${place === "filter" ? "a smart filter takes filter effects" : "an effect layer takes generator, overlay or title effects"}${instead}.`,
|
|
4836
4836
|
d.id
|
|
4837
4837
|
);
|
|
@@ -4855,9 +4855,9 @@ function effectPixelsToSurface(p, depth) {
|
|
|
4855
4855
|
const d = new Uint16Array(f.length);
|
|
4856
4856
|
const code = (v) => v > 0 ? v < 1 ? Math.round(v * 65535) : 65535 : 0;
|
|
4857
4857
|
for (let i = 0; i < f.length; i += 4) {
|
|
4858
|
-
d[i] = code(
|
|
4859
|
-
d[i + 1] = code(
|
|
4860
|
-
d[i + 2] = code(
|
|
4858
|
+
d[i] = code(_chunk5MQOBTNPcjs.linearToSrgb.call(void 0, f[i]));
|
|
4859
|
+
d[i + 1] = code(_chunk5MQOBTNPcjs.linearToSrgb.call(void 0, f[i + 1]));
|
|
4860
|
+
d[i + 2] = code(_chunk5MQOBTNPcjs.linearToSrgb.call(void 0, f[i + 2]));
|
|
4861
4861
|
d[i + 3] = code(f[i + 3]);
|
|
4862
4862
|
}
|
|
4863
4863
|
return _chunkOLNIPTB3cjs.surfaceFromDeepPixels.call(void 0, { width: p.width, height: p.height, data: d }, 4);
|
|
@@ -4874,7 +4874,7 @@ var ImageEffectsEngine = (_class9 = class {
|
|
|
4874
4874
|
__init49() {this.generation = 0}
|
|
4875
4875
|
|
|
4876
4876
|
constructor(options = {}) {;_class9.prototype.__init44.call(this);_class9.prototype.__init45.call(this);_class9.prototype.__init46.call(this);_class9.prototype.__init47.call(this);_class9.prototype.__init48.call(this);_class9.prototype.__init49.call(this);
|
|
4877
|
-
this.slot = _nullishCoalesce(options.slot, () => ( new (0,
|
|
4877
|
+
this.slot = _nullishCoalesce(options.slot, () => ( new (0, _chunk5MQOBTNPcjs.EffectsSlot)()));
|
|
4878
4878
|
this.maxEntries = _nullishCoalesce(options.maxEntries, () => ( 24));
|
|
4879
4879
|
this.pool = new (0, _chunkPY4GWSE2cjs.EffectRendererPool)({ maxRenderers: options.maxRenderers });
|
|
4880
4880
|
this.detach = this.slot.subscribe(() => {
|
|
@@ -4934,7 +4934,7 @@ var ImageEffectsEngine = (_class9 = class {
|
|
|
4934
4934
|
const provider = this.slot.require();
|
|
4935
4935
|
const depth = _nullishCoalesce(size.depth, () => ( 8));
|
|
4936
4936
|
const out = await this.render(provider, effect, size.width, size.height, depth, { time: _nullishCoalesce(size.time, () => ( 0)), values });
|
|
4937
|
-
return out.width === size.width && out.height === size.height ? out :
|
|
4937
|
+
return out.width === size.width && out.height === size.height ? out : _chunk5MQOBTNPcjs.createEffectPixels.call(void 0, size.width, size.height);
|
|
4938
4938
|
}
|
|
4939
4939
|
/** Why the result for `key` failed, if it did. */
|
|
4940
4940
|
failure(key2) {
|
|
@@ -6196,7 +6196,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
6196
6196
|
__init84() {this.selectionWorker = null}
|
|
6197
6197
|
__init85() {this.documentOpener = null}
|
|
6198
6198
|
/** The effects provider slot (see `setEffectsProvider`). */
|
|
6199
|
-
__init86() {this.effects = new (0,
|
|
6199
|
+
__init86() {this.effects = new (0, _chunk5MQOBTNPcjs.EffectsSlot)()}
|
|
6200
6200
|
/** Renders provider effects: effect smart filter results and effect layers. */
|
|
6201
6201
|
__init87() {this.effectsEngine = new ImageEffectsEngine({ slot: this.effects })}
|
|
6202
6202
|
__init88() {this.effectRefresh = "none"}
|
|
@@ -6532,7 +6532,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
6532
6532
|
*/
|
|
6533
6533
|
async applyEffectFilter(layerId, effect, options = {}) {
|
|
6534
6534
|
const d = await this.describeEffect(effect, "filter");
|
|
6535
|
-
const values =
|
|
6535
|
+
const values = _chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, d, options.values);
|
|
6536
6536
|
const found = _chunkB46UQUDCcjs.findLayer.call(void 0, this.state.layers, layerId);
|
|
6537
6537
|
if (!found) throw new (0, _chunkMXJP77K4cjs.LayerOperationError)(`There is no layer "${layerId}"; call list_layers for the layer ids.`);
|
|
6538
6538
|
let layers = this.state.layers;
|
|
@@ -6574,7 +6574,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
6574
6574
|
else if (k in d.controls.properties) base[k] = d.defaults[k];
|
|
6575
6575
|
else throw new (0, _chunkMXJP77K4cjs.LayerOperationError)(`"${k}" is not a control of "${d.id}"; its controls are ${Object.keys(d.controls.properties).join(", ")}.`);
|
|
6576
6576
|
}
|
|
6577
|
-
update.values = { ...base, ...
|
|
6577
|
+
update.values = { ...base, ..._chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, { ...d, defaults: base }, given) };
|
|
6578
6578
|
}
|
|
6579
6579
|
for (const k of ["enabled", "blend", "opacity", "preserveTransparency"]) if (changes[k] !== void 0) update[k] = changes[k];
|
|
6580
6580
|
let res = _chunkMXJP77K4cjs.updateSmartFilter.call(void 0, this.state.layers, layerId, filterId, update, this.canvasSize);
|
|
@@ -6601,7 +6601,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
6601
6601
|
const id = options.id && !ids.has(options.id) ? options.id : _chunkMXJP77K4cjs.newLayerId.call(void 0, );
|
|
6602
6602
|
const placed = _chunkMXJP77K4cjs.placeLayer.call(void 0, this.state.layers, { type: "pixel", id, name: "", visible: true, opacity: 1, blend: "normal", surface: _chunk474IQG74cjs.emptySurface.call(void 0, 4), offset: { x: 0, y: 0 } }, this.newLayerPlacement(options));
|
|
6603
6603
|
if (options.clipped) requireClipBase(placed, id);
|
|
6604
|
-
const values =
|
|
6604
|
+
const values = _chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, d, withBackgroundOpacity(d, options.values, hasLayersBelow(placed, id)));
|
|
6605
6605
|
const { width, height } = this.naturalSize;
|
|
6606
6606
|
const pixels = await this.effectsEngine.renderLayer(d.id, values, { width, height, depth: this.bitDepth, time });
|
|
6607
6607
|
const layer = {
|
|
@@ -6646,7 +6646,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
6646
6646
|
else if (k in d.controls.properties) base[k] = d.defaults[k];
|
|
6647
6647
|
else throw new (0, _chunkMXJP77K4cjs.LayerOperationError)(`"${k}" is not a control of "${d.id}"; its controls are ${Object.keys(d.controls.properties).join(", ")}.`);
|
|
6648
6648
|
}
|
|
6649
|
-
const values = { ...base, ...
|
|
6649
|
+
const values = { ...base, ..._chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, { ...d, defaults: base }, given) };
|
|
6650
6650
|
const time = changes.time === void 0 ? _nullishCoalesce(g.time, () => ( 0)) : checkEffectTime(changes.time);
|
|
6651
6651
|
const animate = changes.animate === void 0 ? g.animate : changes.animate === null ? void 0 : checkEffectAnimation(changes.animate);
|
|
6652
6652
|
const { width, height } = this.naturalSize;
|
|
@@ -21824,7 +21824,7 @@ function createImageEffectsToolProvider(controller, options = {}) {
|
|
|
21824
21824
|
return { target, effect: _nullishCoalesce(effects.find((e) => e.id === instance), () => ( effects[effects.length - 1])), effects, ...extra };
|
|
21825
21825
|
};
|
|
21826
21826
|
const plainValues = (v) => v;
|
|
21827
|
-
return withImagePlayback(
|
|
21827
|
+
return withImagePlayback(_chunk5MQOBTNPcjs.createEffectToolProvider.call(void 0, {
|
|
21828
21828
|
id: _nullishCoalesce(options.id, () => ( "image-effects")),
|
|
21829
21829
|
namespace: options.namespace,
|
|
21830
21830
|
title: "Image effects",
|
|
@@ -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; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12;
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkIGPEBXUDcjs = require('../chunk-IGPEBXUD.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
@@ -137,7 +137,7 @@ require('../chunk-NM3G4VQT.cjs');
|
|
|
137
137
|
|
|
138
138
|
|
|
139
139
|
|
|
140
|
-
var
|
|
140
|
+
var _chunk5MQOBTNPcjs = require('../chunk-5MQOBTNP.cjs');
|
|
141
141
|
require('../chunk-WOFXZ3XU.cjs');
|
|
142
142
|
|
|
143
143
|
|
|
@@ -3213,7 +3213,7 @@ function timeLapseVideo(frameCount, width, height, fps, holdMs, name = "Time-lap
|
|
|
3213
3213
|
}
|
|
3214
3214
|
const video = { version: 1, name, width: w, height: h, fps, background: "#000000", assets, tracks: [{ id: "v1", kind: "video", clips }] };
|
|
3215
3215
|
const durationMs = frameCount ? clips[clips.length - 1].start + clips[clips.length - 1].duration : 0;
|
|
3216
|
-
return { video, ffmpeg:
|
|
3216
|
+
return { video, ffmpeg: _chunkIGPEBXUDcjs.toVideoFfmpeg.call(void 0, video, { output: "timelapse.mp4" }), durationMs };
|
|
3217
3217
|
}
|
|
3218
3218
|
async function buildTimeLapse(source, target, options = {}) {
|
|
3219
3219
|
const maxSide = Math.max(32, Math.min(4096, Math.round(_nullishCoalesce(options.maxSide, () => ( 720)))));
|
|
@@ -3296,7 +3296,7 @@ function checkPaintEffectPlace(d, place) {
|
|
|
3296
3296
|
else if (d.uses.includes("filter") && place !== "light") instead = "; run it on a layer's dried paint with apply_effect instead";
|
|
3297
3297
|
else if (place === "light" && d.uses.some((u) => PAINT_EFFECT_PLACES.layer.includes(u))) instead = "; add it as an effect layer (add_effect_layer) or fill a layer with it (fill_layer_with_effect) instead";
|
|
3298
3298
|
else if (place === "paper" && d.uses.some((u) => u === "overlay" || u === "title")) instead = "; add it as an effect layer with add_effect_layer instead";
|
|
3299
|
-
throw new (0,
|
|
3299
|
+
throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${d.id}" (${d.name}) is a ${d.uses.join(" / ") || d.kind} effect, and ${PLACE_WORDS[place]}${instead}.`, d.id);
|
|
3300
3300
|
}
|
|
3301
3301
|
var PAPER_EFFECT_BLENDS = ["multiply", "normal", "overlay", "soft-light", "screen", "color"];
|
|
3302
3302
|
var paperVersion = 1;
|
|
@@ -3479,7 +3479,7 @@ var PaintEditorController = (_class10 = class _PaintEditorController {
|
|
|
3479
3479
|
/** Set while an operation that changes wet paint runs: the simulation before it (for undo). */
|
|
3480
3480
|
__init106() {this.wetOp = null}
|
|
3481
3481
|
/** The effects provider slot (see `setEffectsProvider`). */
|
|
3482
|
-
__init107() {this.effects = new (0,
|
|
3482
|
+
__init107() {this.effects = new (0, _chunk5MQOBTNPcjs.EffectsSlot)()}
|
|
3483
3483
|
__init108() {this.effectsRenderer = new PaintEffectsRenderer()}
|
|
3484
3484
|
__init109() {this.paperEffectNodeCache = null}
|
|
3485
3485
|
constructor(options = {}) {;_class10.prototype.__init72.call(this);_class10.prototype.__init73.call(this);_class10.prototype.__init74.call(this);_class10.prototype.__init75.call(this);_class10.prototype.__init76.call(this);_class10.prototype.__init77.call(this);_class10.prototype.__init78.call(this);_class10.prototype.__init79.call(this);_class10.prototype.__init80.call(this);_class10.prototype.__init81.call(this);_class10.prototype.__init82.call(this);_class10.prototype.__init83.call(this);_class10.prototype.__init84.call(this);_class10.prototype.__init85.call(this);_class10.prototype.__init86.call(this);_class10.prototype.__init87.call(this);_class10.prototype.__init88.call(this);_class10.prototype.__init89.call(this);_class10.prototype.__init90.call(this);_class10.prototype.__init91.call(this);_class10.prototype.__init92.call(this);_class10.prototype.__init93.call(this);_class10.prototype.__init94.call(this);_class10.prototype.__init95.call(this);_class10.prototype.__init96.call(this);_class10.prototype.__init97.call(this);_class10.prototype.__init98.call(this);_class10.prototype.__init99.call(this);_class10.prototype.__init100.call(this);_class10.prototype.__init101.call(this);_class10.prototype.__init102.call(this);_class10.prototype.__init103.call(this);_class10.prototype.__init104.call(this);_class10.prototype.__init105.call(this);_class10.prototype.__init106.call(this);_class10.prototype.__init107.call(this);_class10.prototype.__init108.call(this);_class10.prototype.__init109.call(this);_class10.prototype.__init110.call(this);_class10.prototype.__init111.call(this);_class10.prototype.__init112.call(this);_class10.prototype.__init113.call(this);
|
|
@@ -4154,7 +4154,7 @@ var PaintEditorController = (_class10 = class _PaintEditorController {
|
|
|
4154
4154
|
if (v === null) merged[k] = d.defaults[k];
|
|
4155
4155
|
else given[k] = v;
|
|
4156
4156
|
}
|
|
4157
|
-
return { ...merged, ...
|
|
4157
|
+
return { ...merged, ..._chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, { ...d, defaults: merged }, given) };
|
|
4158
4158
|
}
|
|
4159
4159
|
/** Renders a generator, overlay or title effect at the canvas size. */
|
|
4160
4160
|
renderEffectCanvas(d, values, time = 0) {
|
|
@@ -8917,7 +8917,7 @@ function createPaintEffectsToolProvider(controller, options = {}) {
|
|
|
8917
8917
|
if (changes.enabled !== void 0) throw new Error("enabled does not apply here: hide an effect layer with update_layer visible false, or remove the effect paper.");
|
|
8918
8918
|
};
|
|
8919
8919
|
const values = (v) => v;
|
|
8920
|
-
return withPaintPlayback(
|
|
8920
|
+
return withPaintPlayback(_chunk5MQOBTNPcjs.createEffectToolProvider.call(void 0, {
|
|
8921
8921
|
id: _nullishCoalesce(options.id, () => ( "paint-effects")),
|
|
8922
8922
|
namespace: options.namespace,
|
|
8923
8923
|
title: "Paint effects",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
toVideoFfmpeg
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-LPTFDCJO.js";
|
|
4
4
|
import {
|
|
5
5
|
deserializeLayers,
|
|
6
6
|
exportPsd,
|
|
@@ -137,7 +137,7 @@ import {
|
|
|
137
137
|
EffectsSlot,
|
|
138
138
|
createEffectToolProvider,
|
|
139
139
|
resolveEffectValues
|
|
140
|
-
} from "../chunk-
|
|
140
|
+
} from "../chunk-UGYUGZE2.js";
|
|
141
141
|
import "../chunk-V2ZCJRDM.js";
|
|
142
142
|
import {
|
|
143
143
|
CoverageMap,
|
package/dist/vector/index.cjs
CHANGED
|
@@ -558,7 +558,7 @@ var _chunkNM3G4VQTcjs = require('../chunk-NM3G4VQT.cjs');
|
|
|
558
558
|
|
|
559
559
|
|
|
560
560
|
|
|
561
|
-
var
|
|
561
|
+
var _chunk5MQOBTNPcjs = require('../chunk-5MQOBTNP.cjs');
|
|
562
562
|
require('../chunk-WOFXZ3XU.cjs');
|
|
563
563
|
|
|
564
564
|
|
|
@@ -7328,7 +7328,7 @@ var VectorEditorController = (_class7 = class _VectorEditorController {
|
|
|
7328
7328
|
}
|
|
7329
7329
|
// --- Provider effects ---
|
|
7330
7330
|
/** The effects provider slot (see `setEffectsProvider`). */
|
|
7331
|
-
__init59() {this.effects = new (0,
|
|
7331
|
+
__init59() {this.effects = new (0, _chunk5MQOBTNPcjs.EffectsSlot)()}
|
|
7332
7332
|
/** The registered effects provider, or `null`. */
|
|
7333
7333
|
get effectsProvider() {
|
|
7334
7334
|
return this.effects.provider;
|
|
@@ -7352,10 +7352,10 @@ var VectorEditorController = (_class7 = class _VectorEditorController {
|
|
|
7352
7352
|
/** The effect's picture as group children, scaled into `box` (an affine fit). */
|
|
7353
7353
|
async vectorEffectPicture(effect, values) {
|
|
7354
7354
|
const provider = this.effects.require();
|
|
7355
|
-
if (!provider.applyVectorEffect) throw new (0,
|
|
7355
|
+
if (!provider.applyVectorEffect) throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`${provider.name} has no vector effects.`);
|
|
7356
7356
|
const d = await provider.describe(effect);
|
|
7357
|
-
if (d.kind !== "vector") throw new (0,
|
|
7358
|
-
const resolved =
|
|
7357
|
+
if (d.kind !== "vector") throw new (0, _chunk5MQOBTNPcjs.EffectUnsupportedError)(`"${d.id}" (${d.name}) is a ${d.kind} effect; the vector editor adds vector effects, which bring their own picture${d.kind === "motion" ? " (apply motion in the animation editor)" : ""}.`, d.id);
|
|
7358
|
+
const resolved = _chunk5MQOBTNPcjs.resolveEffectValues.call(void 0, d, values);
|
|
7359
7359
|
const motion = await provider.applyVectorEffect(d.id, this.toSvg(), resolved);
|
|
7360
7360
|
const parsed = _chunkBQE3Y6ZOcjs.parseVectorSvg.call(void 0, motion.svg);
|
|
7361
7361
|
if (!parsed.nodes.length) throw new Error(`"${d.name}" drew no shapes the editor can read.`);
|
|
@@ -18172,7 +18172,7 @@ function createVectorEffectsToolProvider(controller, options = {}) {
|
|
|
18172
18172
|
const effects = _optionalChain([g, 'optionalAccess', _765 => _765.providerEffect]) ? [info(g)] : [];
|
|
18173
18173
|
return { target: id, effect: _nullishCoalesce(removed, () => ( effects[0])), effects };
|
|
18174
18174
|
};
|
|
18175
|
-
return
|
|
18175
|
+
return _chunk5MQOBTNPcjs.createEffectToolProvider.call(void 0, {
|
|
18176
18176
|
id: _nullishCoalesce(options.id, () => ( "vector-effects")),
|
|
18177
18177
|
namespace: options.namespace,
|
|
18178
18178
|
title: "Vector effects",
|
package/dist/vector/index.js
CHANGED