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.
Files changed (54) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +5 -5
  3. package/ai/chat-template.html +3 -3
  4. package/dist/Composition-6TXRN65C.js +7 -0
  5. package/dist/{Composition-ZYMQ7ZRC.js.map → Composition-6TXRN65C.js.map} +1 -1
  6. package/dist/Composition-IC274CKO.cjs +16 -0
  7. package/dist/{Composition-X6MCEFRH.cjs.map → Composition-IC274CKO.cjs.map} +1 -1
  8. package/dist/{Spans-LCCZ4PW7.js → Spans-3T6ZEEN4.js} +6 -6
  9. package/dist/{Spans-LCCZ4PW7.js.map → Spans-3T6ZEEN4.js.map} +1 -1
  10. package/dist/{Spans-6HSLKR5Q.cjs → Spans-M5KMHT6K.cjs} +11 -11
  11. package/dist/{Spans-6HSLKR5Q.cjs.map → Spans-M5KMHT6K.cjs.map} +1 -1
  12. package/dist/{blendModes-EMANEHZS.js → blendModes-S72MBYKY.js} +4 -4
  13. package/dist/{blendModes-EMANEHZS.js.map → blendModes-S72MBYKY.js.map} +1 -1
  14. package/dist/{blendModes-JUISKPCA.cjs → blendModes-Y56QAMC4.cjs} +5 -5
  15. package/dist/{blendModes-JUISKPCA.cjs.map → blendModes-Y56QAMC4.cjs.map} +1 -1
  16. package/dist/{chunk-TVVC4GVK.cjs → chunk-33OVRSXF.cjs} +29 -29
  17. package/dist/{chunk-TVVC4GVK.cjs.map → chunk-33OVRSXF.cjs.map} +1 -1
  18. package/dist/{chunk-M5P7TXZ2.js → chunk-6LA7W362.js} +7 -7
  19. package/dist/chunk-6LA7W362.js.map +1 -0
  20. package/dist/{chunk-4RC4GXEM.cjs → chunk-GDY56V74.cjs} +92 -92
  21. package/dist/{chunk-4RC4GXEM.cjs.map → chunk-GDY56V74.cjs.map} +1 -1
  22. package/dist/{chunk-YF4JC2AL.js → chunk-HGKXEPDJ.js} +5 -5
  23. package/dist/{chunk-YF4JC2AL.js.map → chunk-HGKXEPDJ.js.map} +1 -1
  24. package/dist/{chunk-AOQRB6AU.js → chunk-HX73PCVU.js} +5 -5
  25. package/dist/{chunk-AOQRB6AU.js.map → chunk-HX73PCVU.js.map} +1 -1
  26. package/dist/{chunk-P2P7C2KZ.js → chunk-JVO2W77G.js} +3 -3
  27. package/dist/chunk-JVO2W77G.js.map +1 -0
  28. package/dist/{chunk-R43646JP.js → chunk-PC7DFDCV.js} +4 -4
  29. package/dist/{chunk-R43646JP.js.map → chunk-PC7DFDCV.js.map} +1 -1
  30. package/dist/{chunk-DQVUKP5G.cjs → chunk-RU4N3B5B.cjs} +5 -5
  31. package/dist/{chunk-DQVUKP5G.cjs.map → chunk-RU4N3B5B.cjs.map} +1 -1
  32. package/dist/{chunk-UXPTDNNA.cjs → chunk-VTGJRKW4.cjs} +50 -50
  33. package/dist/chunk-VTGJRKW4.cjs.map +1 -0
  34. package/dist/{chunk-2YV7ISX6.cjs → chunk-YSTOH5PC.cjs} +3 -3
  35. package/dist/chunk-YSTOH5PC.cjs.map +1 -0
  36. package/dist/index.cjs +35 -35
  37. package/dist/index.js +5 -5
  38. package/dist/loader.css +1 -1
  39. package/dist/present.cjs +5 -5
  40. package/dist/present.js +5 -5
  41. package/dist/three.cjs +6 -6
  42. package/dist/three.js +2 -2
  43. package/docs/dsl.md +2 -2
  44. package/llms-full.txt +4 -4
  45. package/package.json +1 -1
  46. package/skills/pixi-effects/SKILL.md +1 -1
  47. package/skills/pixi-effects/reference/cheatsheet.md +1 -1
  48. package/skills/pixi-effects/template.html +6 -6
  49. package/dist/Composition-X6MCEFRH.cjs +0 -16
  50. package/dist/Composition-ZYMQ7ZRC.js +0 -7
  51. package/dist/chunk-2YV7ISX6.cjs.map +0 -1
  52. package/dist/chunk-M5P7TXZ2.js.map +0 -1
  53. package/dist/chunk-P2P7C2KZ.js.map +0 -1
  54. package/dist/chunk-UXPTDNNA.cjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunk4RC4GXEM_cjs = require('./chunk-4RC4GXEM.cjs');
4
- var chunkTVVC4GVK_cjs = require('./chunk-TVVC4GVK.cjs');
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 chunkDQVUKP5G_cjs = require('./chunk-DQVUKP5G.cjs');
7
- var chunk2YV7ISX6_cjs = require('./chunk-2YV7ISX6.cjs');
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 ? chunkTVVC4GVK_cjs.timeRemapOf(out) : null;
1249
- const parentDuration = remap ? chunkTVVC4GVK_cjs.contentLength(remap, out.duration) : out.duration ?? Infinity;
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 = chunkTVVC4GVK_cjs.resolveAt(t.at, parentDuration);
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 = chunkTVVC4GVK_cjs.resolveAt(fromSeq.at, parentDuration);
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 = chunkTVVC4GVK_cjs.resolveAt(toSeq.at, parentDuration);
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 && chunk4RC4GXEM_cjs.maskSourceOf(m).kind === "refs";
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 = chunk2YV7ISX6_cjs.describeLayer(seq.spec);
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 chunk4RC4GXEM_cjs.CompositionSequence) walk3(seq);
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 = chunkTVVC4GVK_cjs.parseSpring(kf.ease);
1709
- length = sp ? Math.round(chunkTVVC4GVK_cjs.springDuration(sp) * 1e3) / 1e3 : 0.5;
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 = chunk4RC4GXEM_cjs.maskSourceOf(seq.spec.mask);
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 chunk4RC4GXEM_cjs.CompositionSequence) walk3(seq, prefix + label + "/", insideThreeD || threeD, visible, group, motion, zero, parentAlpha * alpha);
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 chunk4RC4GXEM_cjs.CompositionSequence && !threeD && parentVisible && alpha > 0 && t?.visible === false && (t?.renderable ?? true) && carriers.every((c) => c.target?.renderable ?? true)) hiddenSources.set(seq, path);
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 chunk4RC4GXEM_cjs.CompositionSequence;
1973
+ const isComposition = seq instanceof chunkGDY56V74_cjs.CompositionSequence;
1974
1974
  if (isComposition && !threeD) {
1975
- const gm = seq.maskSequence?.target, gs = chunk4RC4GXEM_cjs.maskSourceOf(seq.spec.mask);
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 = chunk4RC4GXEM_cjs.maskSourceOf(seq.spec.mask);
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 = chunk4RC4GXEM_cjs.maskSourceOf(f.source.spec.mask);
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 chunk4RC4GXEM_cjs.CompositionSequence) walk(seq, visit);
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 = chunkTVVC4GVK_cjs.spansMeta.get(seq.spec)?.preview;
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 + chunkTVVC4GVK_cjs.resolveAt(kf.at, span))).sort((a, b) => a - b).slice(0, MAX_KEYS);
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 chunk4RC4GXEM_cjs.CompositionSequence;
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", ...chunkTVVC4GVK_cjs.EXPRESSION_NAMES];
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 = chunkTVVC4GVK_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
2901
- chunkTVVC4GVK_cjs.lengthen(this.timeline, this.duration);
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 chunkTVVC4GVK_cjs.ensureFilterLibrary(seededComposition);
3001
- if (chunkDQVUKP5G_cjs.usesAdvancedBlend(seededComposition)) await chunkDQVUKP5G_cjs.enableAdvancedBlend(this.app.renderer);
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 chunk4RC4GXEM_cjs.CompositionSequence(rootSeqSpec, null, rootShape);
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 = chunkTVVC4GVK_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
3151
- chunkTVVC4GVK_cjs.lengthen(timeline, this.duration);
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 = chunk4RC4GXEM_cjs.maskSourceOf(mask);
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
- chunkTVVC4GVK_cjs.checkEase(name, "a preset");
4016
- return chunkTVVC4GVK_cjs.parseEase(name);
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 ?? chunkTVVC4GVK_cjs.homeDistance(height, fov ?? chunkTVVC4GVK_cjs.DEFAULT_FOV);
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)) * chunkTVVC4GVK_cjs.DEG;
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 = chunkTVVC4GVK_cjs.homeDistance(height, f);
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 = chunkTVVC4GVK_cjs.random(seed * 1000003 + i * 7919 + 17);
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 ? chunkTVVC4GVK_cjs.noise(0, seed * 1000003 + i) : 0;
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 * (chunkTVVC4GVK_cjs.noise(t * swayFreq, seed * 1000003 + i) - n0) : 0;
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 chunkTVVC4GVK_cjs.flattenSvgPath(d)) {
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 = chunkTVVC4GVK_cjs.flattenSvgPath(d);
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 chunkTVVC4GVK_cjs.trimPolylines(lines, start, end).map((l) => l.closed ? [...l.pts, l.pts[0], l.pts[1]] : l.pts);
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 = chunkTVVC4GVK_cjs.random(seed);
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 = (chunkTVVC4GVK_cjs.rand(seed * 7919 + pi * 104729 + s * 31 + 1) * 2 - 1) * p.amp;
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-UXPTDNNA.cjs.map
5029
- //# sourceMappingURL=chunk-UXPTDNNA.cjs.map
5028
+ //# sourceMappingURL=chunk-VTGJRKW4.cjs.map
5029
+ //# sourceMappingURL=chunk-VTGJRKW4.cjs.map