pixi-effects 0.47.2 → 0.47.3
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/CHANGELOG.md +10 -0
- package/README.md +5 -5
- package/ai/chat-template.html +3 -3
- package/dist/Composition-6TXRN65C.js +7 -0
- package/dist/{Composition-ZYMQ7ZRC.js.map → Composition-6TXRN65C.js.map} +1 -1
- package/dist/Composition-IC274CKO.cjs +16 -0
- package/dist/{Composition-X6MCEFRH.cjs.map → Composition-IC274CKO.cjs.map} +1 -1
- package/dist/{Spans-LCCZ4PW7.js → Spans-3T6ZEEN4.js} +6 -6
- package/dist/{Spans-LCCZ4PW7.js.map → Spans-3T6ZEEN4.js.map} +1 -1
- package/dist/{Spans-6HSLKR5Q.cjs → Spans-M5KMHT6K.cjs} +11 -11
- package/dist/{Spans-6HSLKR5Q.cjs.map → Spans-M5KMHT6K.cjs.map} +1 -1
- package/dist/{blendModes-EMANEHZS.js → blendModes-S72MBYKY.js} +4 -4
- package/dist/{blendModes-EMANEHZS.js.map → blendModes-S72MBYKY.js.map} +1 -1
- package/dist/{blendModes-JUISKPCA.cjs → blendModes-Y56QAMC4.cjs} +5 -5
- package/dist/{blendModes-JUISKPCA.cjs.map → blendModes-Y56QAMC4.cjs.map} +1 -1
- package/dist/{chunk-TVVC4GVK.cjs → chunk-33OVRSXF.cjs} +29 -29
- package/dist/{chunk-TVVC4GVK.cjs.map → chunk-33OVRSXF.cjs.map} +1 -1
- package/dist/{chunk-M5P7TXZ2.js → chunk-6LA7W362.js} +7 -7
- package/dist/chunk-6LA7W362.js.map +1 -0
- package/dist/{chunk-4RC4GXEM.cjs → chunk-GDY56V74.cjs} +92 -92
- package/dist/{chunk-4RC4GXEM.cjs.map → chunk-GDY56V74.cjs.map} +1 -1
- package/dist/{chunk-YF4JC2AL.js → chunk-HGKXEPDJ.js} +5 -5
- package/dist/{chunk-YF4JC2AL.js.map → chunk-HGKXEPDJ.js.map} +1 -1
- package/dist/{chunk-AOQRB6AU.js → chunk-HX73PCVU.js} +5 -5
- package/dist/{chunk-AOQRB6AU.js.map → chunk-HX73PCVU.js.map} +1 -1
- package/dist/{chunk-P2P7C2KZ.js → chunk-JVO2W77G.js} +3 -3
- package/dist/chunk-JVO2W77G.js.map +1 -0
- package/dist/{chunk-R43646JP.js → chunk-PC7DFDCV.js} +4 -4
- package/dist/{chunk-R43646JP.js.map → chunk-PC7DFDCV.js.map} +1 -1
- package/dist/{chunk-DQVUKP5G.cjs → chunk-RU4N3B5B.cjs} +5 -5
- package/dist/{chunk-DQVUKP5G.cjs.map → chunk-RU4N3B5B.cjs.map} +1 -1
- package/dist/{chunk-UXPTDNNA.cjs → chunk-VTGJRKW4.cjs} +50 -50
- package/dist/chunk-VTGJRKW4.cjs.map +1 -0
- package/dist/{chunk-2YV7ISX6.cjs → chunk-YSTOH5PC.cjs} +3 -3
- package/dist/chunk-YSTOH5PC.cjs.map +1 -0
- package/dist/index.cjs +35 -35
- package/dist/index.js +5 -5
- package/dist/loader.css +1 -1
- package/dist/present.cjs +5 -5
- package/dist/present.js +5 -5
- package/dist/three.cjs +6 -6
- package/dist/three.js +2 -2
- package/docs/dsl.md +2 -2
- package/llms-full.txt +4 -4
- package/package.json +1 -1
- package/skills/pixi-effects/SKILL.md +1 -1
- package/skills/pixi-effects/reference/cheatsheet.md +1 -1
- package/skills/pixi-effects/template.html +6 -6
- package/dist/Composition-X6MCEFRH.cjs +0 -16
- package/dist/Composition-ZYMQ7ZRC.js +0 -7
- package/dist/chunk-2YV7ISX6.cjs.map +0 -1
- package/dist/chunk-M5P7TXZ2.js.map +0 -1
- package/dist/chunk-P2P7C2KZ.js.map +0 -1
- package/dist/chunk-UXPTDNNA.cjs.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkGDY56V74_cjs = require('./chunk-GDY56V74.cjs');
|
|
4
|
+
var chunk33OVRSXF_cjs = require('./chunk-33OVRSXF.cjs');
|
|
5
5
|
var chunkZAHCGFGC_cjs = require('./chunk-ZAHCGFGC.cjs');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
6
|
+
var chunkRU4N3B5B_cjs = require('./chunk-RU4N3B5B.cjs');
|
|
7
|
+
var chunkYSTOH5PC_cjs = require('./chunk-YSTOH5PC.cjs');
|
|
8
8
|
var chunkTWZNOUM7_cjs = require('./chunk-TWZNOUM7.cjs');
|
|
9
9
|
var pixi_js = require('pixi.js');
|
|
10
10
|
var mediabunny = require('mediabunny');
|
|
@@ -1245,8 +1245,8 @@ function expandTransitions(spec) {
|
|
|
1245
1245
|
}
|
|
1246
1246
|
const transitions = out.transitions;
|
|
1247
1247
|
const sequences = out.sequences ?? [];
|
|
1248
|
-
const remap = out.duration !== void 0 ?
|
|
1249
|
-
const parentDuration = remap ?
|
|
1248
|
+
const remap = out.duration !== void 0 ? chunk33OVRSXF_cjs.timeRemapOf(out) : null;
|
|
1249
|
+
const parentDuration = remap ? chunk33OVRSXF_cjs.contentLength(remap, out.duration) : out.duration ?? Infinity;
|
|
1250
1250
|
const compW = out.width;
|
|
1251
1251
|
const compH = out.height;
|
|
1252
1252
|
const threeDByName = new Set(sequences.filter((s) => s.name && s.threeD).map((s) => s.name));
|
|
@@ -1314,16 +1314,16 @@ function expandTransitions(spec) {
|
|
|
1314
1314
|
if (toUses > 1) {
|
|
1315
1315
|
throw new Error(`pixi-effects: ${tag} sequence "${t.to}" is used as \`to\` in more than one transition`);
|
|
1316
1316
|
}
|
|
1317
|
-
const tStart =
|
|
1317
|
+
const tStart = chunk33OVRSXF_cjs.resolveAt(t.at, parentDuration);
|
|
1318
1318
|
const tEnd = tStart + t.duration;
|
|
1319
1319
|
const fromSeq = fromEntry.seq;
|
|
1320
|
-
const fromStart =
|
|
1320
|
+
const fromStart = chunk33OVRSXF_cjs.resolveAt(fromSeq.at, parentDuration);
|
|
1321
1321
|
const fromEnd = fromStart + (fromSeq.duration ?? parentDuration);
|
|
1322
1322
|
if (tStart < fromStart - EPS || tEnd > fromEnd + EPS) {
|
|
1323
1323
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`from\` "${t.from}" (lives [${fromStart}, ${fromEnd}], so it ends at ${fromEnd})`);
|
|
1324
1324
|
}
|
|
1325
1325
|
const toSeq = toEntry.seq;
|
|
1326
|
-
const toStart =
|
|
1326
|
+
const toStart = chunk33OVRSXF_cjs.resolveAt(toSeq.at, parentDuration);
|
|
1327
1327
|
const toEnd = toStart + (toSeq.duration ?? parentDuration);
|
|
1328
1328
|
if (tStart < toStart - EPS || tEnd > toEnd + EPS) {
|
|
1329
1329
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`to\` "${t.to}" (lives [${toStart}, ${toEnd}], so it starts at ${toStart})`);
|
|
@@ -1383,7 +1383,7 @@ function wrapAsFullComposition(seq, compW, compH) {
|
|
|
1383
1383
|
delete inner.at;
|
|
1384
1384
|
delete inner.duration;
|
|
1385
1385
|
const m = inner.mask;
|
|
1386
|
-
const carriesMatte = m !== void 0 &&
|
|
1386
|
+
const carriesMatte = m !== void 0 && chunkGDY56V74_cjs.maskSourceOf(m).kind === "refs";
|
|
1387
1387
|
if (carriesMatte) delete inner.mask;
|
|
1388
1388
|
return {
|
|
1389
1389
|
...carriesMatte ? { mask: m } : {},
|
|
@@ -1648,12 +1648,12 @@ function canvasReport(root) {
|
|
|
1648
1648
|
const length = seq.duration ?? 0;
|
|
1649
1649
|
const moments = [0.15, 0.4, 0.65, 0.9].map((f) => Math.round(f * length * 1e3) / 1e3);
|
|
1650
1650
|
const { differs, drawMs, threw } = seq.checkDeterminism(moments);
|
|
1651
|
-
const name =
|
|
1651
|
+
const name = chunkYSTOH5PC_cjs.describeLayer(seq.spec);
|
|
1652
1652
|
const kind = seq.spec.type === "three" ? "three" : "canvas";
|
|
1653
1653
|
const problem = threw.length ? `${name} could not draw at ${threw.map((t) => `${t} s`).join(", ")} (its ${kind === "three" ? "update or render threw" : "draw threw"}, or the layer failed to build): ${kind === "three" ? "the warning above says why" : "it shows a magenta checkerboard there; the warning above says why"}, so the layer cannot be called deterministic` : differs.length ? `${name} does not draw the same picture for the same time (checked at ${differs.map(describeDiff).join(", ")}; drawn in two orders after one draw that was thrown away): ` + (kind === "three" ? "usually its update uses Math.random, Date.now, a clock, or state that builds up from call to call: a mixer advanced with mixer.update(dt) is one (pose a clip with mixer.setTime(t), or threeGltf(url).pose(t)), and so is a value moved by the time since the last call. A skinned model of your own (not loaded by threeGltf) that moves and casts a shadow does it too: three culls a skinned mesh by a bounding sphere that does not follow it, so set mesh.frustumCulled = false. Set every object from t, so playback, a seek and an export agree" : "usually its draw uses Math.random, Date.now or state that outlives the call (a value it keeps from the last call), so playback, a seek and an export would not agree: use info.random() (seeded) and derive everything from t. If it uses none of these, look at the canvases it draws from: make sprites and masks with info.canvas(w, h) (not document.createElement) and draw them into the picture before the strokes that depend on them") : "";
|
|
1654
1654
|
out.push({ name: seq.spec.name ?? name, moments, drawMs, ok: !differs.length && !threw.length, problem, kind });
|
|
1655
1655
|
}
|
|
1656
|
-
if (seq instanceof
|
|
1656
|
+
if (seq instanceof chunkGDY56V74_cjs.CompositionSequence) walk3(seq);
|
|
1657
1657
|
};
|
|
1658
1658
|
const walk3 = (comp) => {
|
|
1659
1659
|
for (const { seq } of comp.layers()) {
|
|
@@ -1705,8 +1705,8 @@ function motionOf(keyframes, local, lives, keys = (k) => GEOMETRY.has(k)) {
|
|
|
1705
1705
|
let length = 0;
|
|
1706
1706
|
if (typeof kf.duration === "number") length = kf.duration;
|
|
1707
1707
|
else if (kf.duration === "auto") {
|
|
1708
|
-
const sp =
|
|
1709
|
-
length = sp ? Math.round(
|
|
1708
|
+
const sp = chunk33OVRSXF_cjs.parseSpring(kf.ease);
|
|
1709
|
+
length = sp ? Math.round(chunk33OVRSXF_cjs.springDuration(sp) * 1e3) / 1e3 : 0.5;
|
|
1710
1710
|
}
|
|
1711
1711
|
if (!(length > 0)) continue;
|
|
1712
1712
|
const kat = kf.at ?? 0;
|
|
@@ -1786,7 +1786,7 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1786
1786
|
if (motion.ever) hasMotion.add(info);
|
|
1787
1787
|
let shown = bounds ? clip(bounds, view) : null;
|
|
1788
1788
|
const maskTarget = seq.maskSequence?.target;
|
|
1789
|
-
const maskSrc =
|
|
1789
|
+
const maskSrc = chunkGDY56V74_cjs.maskSourceOf(seq.spec.mask);
|
|
1790
1790
|
if (shown && maskTarget && !(maskSrc.kind === "inline" && maskSrc.invert)) {
|
|
1791
1791
|
const m = maskTarget.getBounds();
|
|
1792
1792
|
shown = clip(shown, { x: m.x, y: m.y, width: m.width, height: m.height });
|
|
@@ -1795,7 +1795,7 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1795
1795
|
const group = parentScene ?? (name !== void 0 && blending.has(name) ? name : void 0);
|
|
1796
1796
|
if (group) scene.set(info, group);
|
|
1797
1797
|
if (zero || seq.showsNothingYet) scaledToNothing.add(info);
|
|
1798
|
-
if (seq instanceof
|
|
1798
|
+
if (seq instanceof chunkGDY56V74_cjs.CompositionSequence) walk3(seq, prefix + label + "/", insideThreeD || threeD, visible, group, motion, zero, parentAlpha * alpha);
|
|
1799
1799
|
});
|
|
1800
1800
|
};
|
|
1801
1801
|
walk3(root, "", false, true);
|
|
@@ -1967,12 +1967,12 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
1967
1967
|
const alive = (threeD ? d.visible : (t?.renderable ?? true) && t?.visible !== false) && carriers.every((c) => c.target?.renderable ?? true);
|
|
1968
1968
|
const visible = parentVisible && alive && alpha > 0;
|
|
1969
1969
|
if (!visible) {
|
|
1970
|
-
if (seq instanceof
|
|
1970
|
+
if (seq instanceof chunkGDY56V74_cjs.CompositionSequence && !threeD && parentVisible && alpha > 0 && t?.visible === false && (t?.renderable ?? true) && carriers.every((c) => c.target?.renderable ?? true)) hiddenSources.set(seq, path);
|
|
1971
1971
|
return;
|
|
1972
1972
|
}
|
|
1973
|
-
const isComposition = seq instanceof
|
|
1973
|
+
const isComposition = seq instanceof chunkGDY56V74_cjs.CompositionSequence;
|
|
1974
1974
|
if (isComposition && !threeD) {
|
|
1975
|
-
const gm = seq.maskSequence?.target, gs =
|
|
1975
|
+
const gm = seq.maskSequence?.target, gs = chunkGDY56V74_cjs.maskSourceOf(seq.spec.mask);
|
|
1976
1976
|
if (gm && gs.kind === "inline" && !gs.invert && !inMask(gm, at)) return;
|
|
1977
1977
|
walk3(seq, path + "/", visible, at, orderBase, via);
|
|
1978
1978
|
return;
|
|
@@ -2028,7 +2028,7 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
2028
2028
|
}
|
|
2029
2029
|
if (!hit) return;
|
|
2030
2030
|
const maskTarget = seq.maskSequence?.target;
|
|
2031
|
-
const maskSrc =
|
|
2031
|
+
const maskSrc = chunkGDY56V74_cjs.maskSourceOf(seq.spec.mask);
|
|
2032
2032
|
if (maskTarget && !(maskSrc.kind === "inline" && maskSrc.invert) && !(maskSrc.kind === "inline" ? inMask(maskTarget, point) : inside(maskTarget.getBounds(), point))) return;
|
|
2033
2033
|
found.push({ hit: via ? { ...hit, point: { x, y }, via } : hit, order: orderBase ? [...orderBase, ...orderOf(d)] : orderOf(d) });
|
|
2034
2034
|
});
|
|
@@ -2038,7 +2038,7 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
2038
2038
|
const path = hiddenSources.get(f.source);
|
|
2039
2039
|
if (path === void 0) continue;
|
|
2040
2040
|
const g = f.source.target.toGlobal({ x: f.at.x * f.source.intrinsicWidth, y: f.at.y * f.source.intrinsicHeight });
|
|
2041
|
-
const sm = f.source.maskSequence?.target, ss =
|
|
2041
|
+
const sm = f.source.maskSequence?.target, ss = chunkGDY56V74_cjs.maskSourceOf(f.source.spec.mask);
|
|
2042
2042
|
if (sm && ss.kind === "inline" && !ss.invert && !inMask(sm, g)) continue;
|
|
2043
2043
|
walk3(f.source, path + "/", true, g, f.order, f.via);
|
|
2044
2044
|
}
|
|
@@ -2074,7 +2074,7 @@ function walk(root, visit) {
|
|
|
2074
2074
|
visit(seq);
|
|
2075
2075
|
const mask = seq.maskSequence;
|
|
2076
2076
|
if (mask) visit(mask);
|
|
2077
|
-
if (seq instanceof
|
|
2077
|
+
if (seq instanceof chunkGDY56V74_cjs.CompositionSequence) walk(seq, visit);
|
|
2078
2078
|
}
|
|
2079
2079
|
}
|
|
2080
2080
|
function reusePoolOf(old) {
|
|
@@ -2175,7 +2175,7 @@ var round = (n) => Math.round(n * 1e6) / 1e6;
|
|
|
2175
2175
|
var family = (name) => name.replace(/\d+/g, "#");
|
|
2176
2176
|
function detailOf(seq) {
|
|
2177
2177
|
const s = seq.spec;
|
|
2178
|
-
const spans =
|
|
2178
|
+
const spans = chunk33OVRSXF_cjs.spansMeta.get(seq.spec)?.preview;
|
|
2179
2179
|
if (spans) return spans.length > 60 ? spans.slice(0, 57) + "\u2026" : spans;
|
|
2180
2180
|
if (typeof s.text === "string") return s.text.length > 60 ? s.text.slice(0, 57) + "\u2026" : s.text;
|
|
2181
2181
|
if (typeof s.asset === "string") return `asset \u201C${s.asset}\u201D`;
|
|
@@ -2191,10 +2191,10 @@ function walk2(comp, parentStart, parentEnd, depth, prefix, rows, transitions, l
|
|
|
2191
2191
|
const start = parentStart + (seq.at ?? 0);
|
|
2192
2192
|
const end = Math.min(parentEnd, seq.duration !== void 0 ? start + seq.duration : parentEnd);
|
|
2193
2193
|
const span = end - start;
|
|
2194
|
-
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start +
|
|
2194
|
+
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start + chunk33OVRSXF_cjs.resolveAt(kf.at, span))).sort((a, b) => a - b).slice(0, MAX_KEYS);
|
|
2195
2195
|
const row = { path: prefix + name, name, type: seq.spec.type, depth, start: round(start), end: round(end), keys, detail: detailOf(seq), ...local ? { local } : {} };
|
|
2196
2196
|
const inner = [];
|
|
2197
|
-
const isComp = seq instanceof
|
|
2197
|
+
const isComp = seq instanceof chunkGDY56V74_cjs.CompositionSequence;
|
|
2198
2198
|
if (isComp) {
|
|
2199
2199
|
const label = seq.remapLabel();
|
|
2200
2200
|
walk2(seq, label ? 0 : start, label ? seq.contentSpan : end, depth + 1, prefix + name + "/", inner, transitions, label ? `${name} ${label}` : local);
|
|
@@ -2353,7 +2353,7 @@ function sheetLayout(n, columns, cellW, srcW, srcH, labelH) {
|
|
|
2353
2353
|
}
|
|
2354
2354
|
|
|
2355
2355
|
// src/core/vars.ts
|
|
2356
|
-
var RESERVED_NAMES = ["w", "h", "W", "H", "GW", "GH", "t", "d", "T", "contain", "cover", "value", ...
|
|
2356
|
+
var RESERVED_NAMES = ["w", "h", "W", "H", "GW", "GH", "t", "d", "T", "contain", "cover", "value", ...chunk33OVRSXF_cjs.EXPRESSION_NAMES];
|
|
2357
2357
|
var NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
2358
2358
|
var isPlain = (v) => !!v && typeof v === "object" && (Object.getPrototypeOf(v) === Object.prototype || Object.getPrototypeOf(v) === null);
|
|
2359
2359
|
function normalizeVars(raw, where, warn = (m) => console.warn(m)) {
|
|
@@ -2897,8 +2897,8 @@ var Movie = class {
|
|
|
2897
2897
|
this.stops = normalizeStops(applyVars(options.composition, this._vars)?.stops, this.duration, this.frameRate);
|
|
2898
2898
|
this._posterFrame = poster.frame;
|
|
2899
2899
|
this.background = options.background ?? "#000000";
|
|
2900
|
-
this.timeline =
|
|
2901
|
-
|
|
2900
|
+
this.timeline = chunk33OVRSXF_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
|
|
2901
|
+
chunk33OVRSXF_cjs.lengthen(this.timeline, this.duration);
|
|
2902
2902
|
const baseAppOptions = {
|
|
2903
2903
|
width: this.width,
|
|
2904
2904
|
height: this.height,
|
|
@@ -2997,8 +2997,8 @@ var Movie = class {
|
|
|
2997
2997
|
height: sizeWins ? height : spec.height ?? height,
|
|
2998
2998
|
duration: spec.duration ?? this.duration
|
|
2999
2999
|
} : void 0;
|
|
3000
|
-
await
|
|
3001
|
-
if (
|
|
3000
|
+
await chunk33OVRSXF_cjs.ensureFilterLibrary(seededComposition);
|
|
3001
|
+
if (chunkRU4N3B5B_cjs.usesAdvancedBlend(seededComposition)) await chunkRU4N3B5B_cjs.enableAdvancedBlend(this.app.renderer);
|
|
3002
3002
|
const userComposition = seededComposition ? expandTransitions(seededComposition) : void 0;
|
|
3003
3003
|
const rootSeqSpec = {
|
|
3004
3004
|
type: "composition",
|
|
@@ -3008,7 +3008,7 @@ var Movie = class {
|
|
|
3008
3008
|
...userComposition
|
|
3009
3009
|
};
|
|
3010
3010
|
if (userComposition) carryTransitionWindows(userComposition, rootSeqSpec);
|
|
3011
|
-
const sequence = new
|
|
3011
|
+
const sequence = new chunkGDY56V74_cjs.CompositionSequence(rootSeqSpec, null, rootShape);
|
|
3012
3012
|
lp?.begin("build", countLayers(rootSeqSpec));
|
|
3013
3013
|
try {
|
|
3014
3014
|
await sequence.build();
|
|
@@ -3147,8 +3147,8 @@ var Movie = class {
|
|
|
3147
3147
|
if (!changed) return { reason, ms: 0, audio: "none", frame: this.currentFrame, playing: this.isPlaying, unchanged: true };
|
|
3148
3148
|
sequence = await this._construct(composition, vars, width, height, void 0, this._resized || sizeChanged, reusePoolOf(this._rootSequence));
|
|
3149
3149
|
alive();
|
|
3150
|
-
const timeline =
|
|
3151
|
-
|
|
3150
|
+
const timeline = chunk33OVRSXF_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
|
|
3151
|
+
chunk33OVRSXF_cjs.lengthen(timeline, this.duration);
|
|
3152
3152
|
sequence.bindTimeline(timeline);
|
|
3153
3153
|
const hadSound = this.audioBuffer !== null;
|
|
3154
3154
|
const audio = await this._mixSound(sequence, this._ensureAudioContext());
|
|
@@ -3923,7 +3923,7 @@ function countLayers(spec) {
|
|
|
3923
3923
|
n += 1 + countLayers(s);
|
|
3924
3924
|
const spans = s.spans;
|
|
3925
3925
|
if (Array.isArray(spans)) n += spans.length;
|
|
3926
|
-
const src =
|
|
3926
|
+
const src = chunkGDY56V74_cjs.maskSourceOf(mask);
|
|
3927
3927
|
if (src.kind === "inline") n += 1 + countLayers(src.spec);
|
|
3928
3928
|
}
|
|
3929
3929
|
return n;
|
|
@@ -3933,7 +3933,7 @@ var ALIGN = ["left", "center", "right"];
|
|
|
3933
3933
|
var widthOf = (text, style) => pixi_js.CanvasTextMetrics.measureText(text, style).width;
|
|
3934
3934
|
function measureText(text, style = {}) {
|
|
3935
3935
|
const m = pixi_js.CanvasTextMetrics.measureText(text, new pixi_js.TextStyle(style));
|
|
3936
|
-
return { width: m.width, height: m.height, lines: text.split("\n").length };
|
|
3936
|
+
return { width: m.width, height: m.height, lines: m.lines?.length ?? text.split("\n").length };
|
|
3937
3937
|
}
|
|
3938
3938
|
function splitText(text, style = {}, opts = {}) {
|
|
3939
3939
|
chunkTWZNOUM7_cjs.warnUnknownOptions("splitText()", opts, ["by", "x", "y", "align", "vertical"]);
|
|
@@ -4012,8 +4012,8 @@ function splitVertical(text, style, ts, right, top, align, by) {
|
|
|
4012
4012
|
|
|
4013
4013
|
// src/presets/_ease.ts
|
|
4014
4014
|
function parseEase2(name) {
|
|
4015
|
-
|
|
4016
|
-
return
|
|
4015
|
+
chunk33OVRSXF_cjs.checkEase(name, "a preset");
|
|
4016
|
+
return chunk33OVRSXF_cjs.parseEase(name);
|
|
4017
4017
|
}
|
|
4018
4018
|
|
|
4019
4019
|
// src/presets/kenBurns.ts
|
|
@@ -4148,17 +4148,17 @@ function orbit(opts) {
|
|
|
4148
4148
|
throw new Error("pixi-effects: orbit() cannot combine `radius` with `dollyZoom` \u2014 the radius follows the animated fov");
|
|
4149
4149
|
}
|
|
4150
4150
|
const [cx, cy] = opts.center ?? [width / 2, height / 2];
|
|
4151
|
-
const fixedR = opts.radius ??
|
|
4151
|
+
const fixedR = opts.radius ?? chunk33OVRSXF_cjs.homeDistance(height, fov ?? chunk33OVRSXF_cjs.DEFAULT_FOV);
|
|
4152
4152
|
const start = opts.start ?? -degrees / 2;
|
|
4153
4153
|
const steps = Math.max(1, Math.round(duration * stepsPerSecond));
|
|
4154
4154
|
const easeFn = parseEase2(ease);
|
|
4155
4155
|
const dollyEase = dolly ? parseEase2(dolly.ease ?? ease) : null;
|
|
4156
4156
|
const pos = (i) => {
|
|
4157
4157
|
const p = i / steps;
|
|
4158
|
-
const a = (start + degrees * easeFn(p)) *
|
|
4158
|
+
const a = (start + degrees * easeFn(p)) * chunk33OVRSXF_cjs.DEG;
|
|
4159
4159
|
if (!dolly) return { x: cx + fixedR * Math.sin(a), z: fixedR * Math.cos(a) };
|
|
4160
4160
|
const f = dolly.from + (dolly.to - dolly.from) * dollyEase(p);
|
|
4161
|
-
const R =
|
|
4161
|
+
const R = chunk33OVRSXF_cjs.homeDistance(height, f);
|
|
4162
4162
|
return { x: cx + R * Math.sin(a), z: R * Math.cos(a), fov: f };
|
|
4163
4163
|
};
|
|
4164
4164
|
const keyframes = [];
|
|
@@ -4213,7 +4213,7 @@ function particles(opts) {
|
|
|
4213
4213
|
const round2 = (v) => Math.round(v * 1e6) / 1e6;
|
|
4214
4214
|
const out = [];
|
|
4215
4215
|
for (let i = 0; i < count; i++) {
|
|
4216
|
-
const r =
|
|
4216
|
+
const r = chunk33OVRSXF_cjs.random(seed * 1000003 + i * 7919 + 17);
|
|
4217
4217
|
const pick = ([a2, b]) => a2 + r() * (b - a2);
|
|
4218
4218
|
const born = at + r() * emit;
|
|
4219
4219
|
const lifetime = pick(life);
|
|
@@ -4226,7 +4226,7 @@ function particles(opts) {
|
|
|
4226
4226
|
const turn = spin ? pick(spin) : 0;
|
|
4227
4227
|
const startAngle = spin ? r() * 360 : 0;
|
|
4228
4228
|
const swayAmp = sway?.amp ?? 0, swayFreq = sway?.freq ?? 1;
|
|
4229
|
-
const n0 = sway ?
|
|
4229
|
+
const n0 = sway ? chunk33OVRSXF_cjs.noise(0, seed * 1000003 + i) : 0;
|
|
4230
4230
|
const at_ = (t) => {
|
|
4231
4231
|
const axis = (p0, v0, acc) => {
|
|
4232
4232
|
if (drag > 0) {
|
|
@@ -4235,7 +4235,7 @@ function particles(opts) {
|
|
|
4235
4235
|
}
|
|
4236
4236
|
return p0 + v0 * t + 0.5 * acc * t * t;
|
|
4237
4237
|
};
|
|
4238
|
-
const sw = sway ? swayAmp * (
|
|
4238
|
+
const sw = sway ? swayAmp * (chunk33OVRSXF_cjs.noise(t * swayFreq, seed * 1000003 + i) - n0) : 0;
|
|
4239
4239
|
return { x: axis(x0, vx, wind) + sw, y: axis(y0, vy, gravity) };
|
|
4240
4240
|
};
|
|
4241
4241
|
const kfs = [];
|
|
@@ -4297,7 +4297,7 @@ function followPath(opts) {
|
|
|
4297
4297
|
if (steps > MAX_STEPS) throw new Error(`followPath(): ${steps} samples is too many (max ${MAX_STEPS}); lower frameRate or duration`);
|
|
4298
4298
|
const segments = [];
|
|
4299
4299
|
let total = 0;
|
|
4300
|
-
for (const line of
|
|
4300
|
+
for (const line of chunk33OVRSXF_cjs.flattenSvgPath(d)) {
|
|
4301
4301
|
const p = line.closed ? [...line.pts, line.pts[0], line.pts[1]] : line.pts;
|
|
4302
4302
|
for (let i = 2; i < p.length; i += 2) {
|
|
4303
4303
|
const len = Math.hypot(p[i] - p[i - 2], p[i + 1] - p[i - 1]);
|
|
@@ -4350,7 +4350,7 @@ function followPath(opts) {
|
|
|
4350
4350
|
// src/core/pathSample.ts
|
|
4351
4351
|
function samplePath(d) {
|
|
4352
4352
|
if (typeof d !== "string" || d.trim() === "") throw new Error('samplePath(): d must be SVG path data, e.g. "M 40 300 C 200 20 400 20 560 300"');
|
|
4353
|
-
const lines =
|
|
4353
|
+
const lines = chunk33OVRSXF_cjs.flattenSvgPath(d);
|
|
4354
4354
|
const segments = [];
|
|
4355
4355
|
let length = 0;
|
|
4356
4356
|
for (const line of lines) {
|
|
@@ -4381,7 +4381,7 @@ function samplePath(d) {
|
|
|
4381
4381
|
return { x: g.x0 + (g.x1 - g.x0) * t, y: g.y0 + (g.y1 - g.y0) * t, angle: Math.atan2(g.y1 - g.y0, g.x1 - g.x0) };
|
|
4382
4382
|
},
|
|
4383
4383
|
trim(start = 0, end = 1) {
|
|
4384
|
-
return
|
|
4384
|
+
return chunk33OVRSXF_cjs.trimPolylines(lines, start, end).map((l) => l.closed ? [...l.pts, l.pts[0], l.pts[1]] : l.pts);
|
|
4385
4385
|
}
|
|
4386
4386
|
};
|
|
4387
4387
|
}
|
|
@@ -4492,7 +4492,7 @@ function distances(n, from, grid, seed) {
|
|
|
4492
4492
|
if (n === 0) return [];
|
|
4493
4493
|
if (from === "random") {
|
|
4494
4494
|
const order = Array.from({ length: n }, (_, i) => i);
|
|
4495
|
-
const r =
|
|
4495
|
+
const r = chunk33OVRSXF_cjs.random(seed);
|
|
4496
4496
|
for (let i = n - 1; i > 0; i--) {
|
|
4497
4497
|
const j = Math.floor(r() * (i + 1));
|
|
4498
4498
|
[order[i], order[j]] = [order[j], order[i]];
|
|
@@ -4554,7 +4554,7 @@ function wiggle(opts) {
|
|
|
4554
4554
|
to[n] = p.around;
|
|
4555
4555
|
return;
|
|
4556
4556
|
}
|
|
4557
|
-
const off = (
|
|
4557
|
+
const off = (chunk33OVRSXF_cjs.rand(seed * 7919 + pi * 104729 + s * 31 + 1) * 2 - 1) * p.amp;
|
|
4558
4558
|
to[n] = typeof p.around === "number" ? p.around + off : `(${p.around}) ${off < 0 ? "-" : "+"} ${Math.abs(off)}`;
|
|
4559
4559
|
});
|
|
4560
4560
|
out.push({ at: at + s * stepLen, to, duration: stepLen, ease });
|
|
@@ -5025,5 +5025,5 @@ exports.splitText = splitText;
|
|
|
5025
5025
|
exports.stagger = stagger;
|
|
5026
5026
|
exports.wiggle = wiggle;
|
|
5027
5027
|
exports.withFade = withFade;
|
|
5028
|
-
//# sourceMappingURL=chunk-
|
|
5029
|
-
//# sourceMappingURL=chunk-
|
|
5028
|
+
//# sourceMappingURL=chunk-VTGJRKW4.cjs.map
|
|
5029
|
+
//# sourceMappingURL=chunk-VTGJRKW4.cjs.map
|