pixi-effects 0.45.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +5 -5
  3. package/ai/chat-template.html +3 -3
  4. package/dist/Composition-NSY7A32Y.js +7 -0
  5. package/dist/{Composition-YGBQX3HZ.js.map → Composition-NSY7A32Y.js.map} +1 -1
  6. package/dist/Composition-PME3P5LP.cjs +16 -0
  7. package/dist/{Composition-N6BOROJ2.cjs.map → Composition-PME3P5LP.cjs.map} +1 -1
  8. package/dist/Controller.d.cts +2 -2
  9. package/dist/Controller.d.ts +2 -2
  10. package/dist/{Movie-C-d4zN-N.d.cts → Movie-BqrAWN0g.d.cts} +6 -1
  11. package/dist/{Movie-lMSS9JwX.d.ts → Movie-sV8nJr_f.d.ts} +6 -1
  12. package/dist/{Spans-XTIWYSNO.cjs → Spans-2TZCNREQ.cjs} +9 -9
  13. package/dist/{Spans-XTIWYSNO.cjs.map → Spans-2TZCNREQ.cjs.map} +1 -1
  14. package/dist/{Spans-6L2ZVECX.js → Spans-TESJPQKX.js} +4 -4
  15. package/dist/{Spans-6L2ZVECX.js.map → Spans-TESJPQKX.js.map} +1 -1
  16. package/dist/{chunk-Z6JQO7GX.js → chunk-2E74SP63.js} +47 -13
  17. package/dist/chunk-2E74SP63.js.map +1 -0
  18. package/dist/{chunk-3IO5RWE4.cjs → chunk-7M63Y6MO.cjs} +85 -51
  19. package/dist/chunk-7M63Y6MO.cjs.map +1 -0
  20. package/dist/{chunk-3HZV3UHU.cjs → chunk-DKCMJILW.cjs} +67 -65
  21. package/dist/chunk-DKCMJILW.cjs.map +1 -0
  22. package/dist/{chunk-4QVQ5UJJ.js → chunk-DM2OLQOJ.js} +5 -6
  23. package/dist/chunk-DM2OLQOJ.js.map +1 -0
  24. package/dist/{chunk-ICI6ACHY.js → chunk-FPV3NPYC.js} +8 -6
  25. package/dist/chunk-FPV3NPYC.js.map +1 -0
  26. package/dist/{chunk-X62H3RBG.cjs → chunk-LALEBV63.cjs} +5 -6
  27. package/dist/chunk-LALEBV63.cjs.map +1 -0
  28. package/dist/index.cjs +33 -33
  29. package/dist/index.d.cts +3 -3
  30. package/dist/index.d.ts +3 -3
  31. package/dist/index.js +3 -3
  32. package/dist/loader.css +1 -1
  33. package/dist/present.cjs +3 -3
  34. package/dist/present.d.cts +2 -2
  35. package/dist/present.d.ts +2 -2
  36. package/dist/present.js +3 -3
  37. package/dist/three.cjs +194 -15
  38. package/dist/three.cjs.map +1 -1
  39. package/dist/three.d.cts +75 -4
  40. package/dist/three.d.ts +75 -4
  41. package/dist/three.js +191 -13
  42. package/dist/three.js.map +1 -1
  43. package/dist/{types-C5xo0fzb.d.ts → types-CTSrPvY3.d.cts} +64 -58
  44. package/dist/{types-C5xo0fzb.d.cts → types-CTSrPvY3.d.ts} +64 -58
  45. package/docs/api.md +1 -0
  46. package/docs/dsl.md +24 -0
  47. package/llms-full.txt +61 -2
  48. package/package.json +1 -1
  49. package/skills/pixi-effects/SKILL.md +1 -1
  50. package/skills/pixi-effects/reference/cheatsheet.md +1 -1
  51. package/skills/pixi-effects/reference/recipes.md +34 -0
  52. package/skills/pixi-effects/template.html +6 -6
  53. package/dist/Composition-N6BOROJ2.cjs +0 -16
  54. package/dist/Composition-YGBQX3HZ.js +0 -7
  55. package/dist/chunk-3HZV3UHU.cjs.map +0 -1
  56. package/dist/chunk-3IO5RWE4.cjs.map +0 -1
  57. package/dist/chunk-4QVQ5UJJ.js.map +0 -1
  58. package/dist/chunk-ICI6ACHY.js.map +0 -1
  59. package/dist/chunk-X62H3RBG.cjs.map +0 -1
  60. package/dist/chunk-Z6JQO7GX.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkX62H3RBG_cjs = require('./chunk-X62H3RBG.cjs');
3
+ var chunkLALEBV63_cjs = require('./chunk-LALEBV63.cjs');
4
4
  var chunkJN7JHNZR_cjs = require('./chunk-JN7JHNZR.cjs');
5
5
  var chunk3SAS3ZE5_cjs = require('./chunk-3SAS3ZE5.cjs');
6
6
  var chunkTWZNOUM7_cjs = require('./chunk-TWZNOUM7.cjs');
@@ -33,10 +33,10 @@ var KIND_ALIASES = {
33
33
  fill: "ambient"
34
34
  };
35
35
  function lightKindProblem(kind) {
36
- if (kind === void 0 || typeof kind === "string" && chunkX62H3RBG_cjs.LIGHT_KINDS.includes(kind)) return null;
37
- const guess = typeof kind === "string" ? KIND_ALIASES[kind.toLowerCase()] ?? chunkTWZNOUM7_cjs.suggestName(kind, chunkX62H3RBG_cjs.LIGHT_KINDS) : null;
36
+ if (kind === void 0 || typeof kind === "string" && chunkLALEBV63_cjs.LIGHT_KINDS.includes(kind)) return null;
37
+ const guess = typeof kind === "string" ? KIND_ALIASES[kind.toLowerCase()] ?? chunkTWZNOUM7_cjs.suggestName(kind, chunkLALEBV63_cjs.LIGHT_KINDS) : null;
38
38
  const shown = typeof kind === "string" ? `"${kind}"` : String(kind);
39
- return `kind ${shown} is not a light kind${guess ? `; did you mean "${guess}"?` : ""} (use ${chunkX62H3RBG_cjs.LIGHT_KINDS.join(", ")}); point is used`;
39
+ return `kind ${shown} is not a light kind${guess ? `; did you mean "${guess}"?` : ""} (use ${chunkLALEBV63_cjs.LIGHT_KINDS.join(", ")}); point is used`;
40
40
  }
41
41
  var LIGHT_ALIASES = {
42
42
  pointOfInterest: 'did you mean "lookAtX / lookAtY / lookAtZ"?',
@@ -61,24 +61,24 @@ function lightLayerProblems(spec) {
61
61
  const raw = spec;
62
62
  const kind = lightKindProblem(raw.kind);
63
63
  if (kind) out.push(kind);
64
- if (raw.falloff !== void 0 && !chunkX62H3RBG_cjs.FALLOFFS.includes(raw.falloff)) {
65
- const guess = typeof raw.falloff === "string" ? chunkTWZNOUM7_cjs.suggestName(raw.falloff, chunkX62H3RBG_cjs.FALLOFFS) : null;
66
- out.push(`falloff ${JSON.stringify(raw.falloff)} is not supported${guess ? `; did you mean "${guess}"?` : ""} (use ${chunkX62H3RBG_cjs.FALLOFFS.join(", ")}); none is used`);
64
+ if (raw.falloff !== void 0 && !chunkLALEBV63_cjs.FALLOFFS.includes(raw.falloff)) {
65
+ const guess = typeof raw.falloff === "string" ? chunkTWZNOUM7_cjs.suggestName(raw.falloff, chunkLALEBV63_cjs.FALLOFFS) : null;
66
+ out.push(`falloff ${JSON.stringify(raw.falloff)} is not supported${guess ? `; did you mean "${guess}"?` : ""} (use ${chunkLALEBV63_cjs.FALLOFFS.join(", ")}); none is used`);
67
67
  }
68
68
  for (const k of Object.keys(raw)) {
69
- if (chunkX62H3RBG_cjs.LIGHT_PROPS.includes(k) || k === "intensity" || k === "shadowDarkness" || k === "shadowDiffusion") {
69
+ if (chunkLALEBV63_cjs.LIGHT_PROPS.includes(k) || k === "intensity" || k === "shadowDarkness" || k === "shadowDiffusion") {
70
70
  out.push(`"${k}" must go inside initial / keyframes, not on the light itself`);
71
71
  } else if (LIGHT_ALIASES[k]) out.push(`"${k}" is not a property \u2014 ${LIGHT_ALIASES[k]}`);
72
72
  }
73
73
  const explained = new Set(Object.keys(LIGHT_ALIASES));
74
74
  for (const k of chunk3SAS3ZE5_cjs.collectPropKeys(spec)) {
75
75
  if (LIGHT_ALIASES[k]) out.push(`"${k}" is not a property \u2014 ${LIGHT_ALIASES[k]}`);
76
- else if (!explained.has(k) && !chunkX62H3RBG_cjs.LIGHT_PROPS.includes(k)) out.push(`"${k}" has no effect on a light (use ${chunkX62H3RBG_cjs.LIGHT_PROPS.join(", ")})`);
76
+ else if (!explained.has(k) && !chunkLALEBV63_cjs.LIGHT_PROPS.includes(k)) out.push(`"${k}" has no effect on a light (use ${chunkLALEBV63_cjs.LIGHT_PROPS.join(", ")})`);
77
77
  }
78
78
  if (numbersOf(spec, "coneFeather").some((v) => v > 1 || v < 0)) out.push("coneFeather is 0..1 (the soft part of the cone edge, as a fraction of the half angle); it is clamped");
79
79
  const big = numbersOf(spec, "intensity").find((v) => v > 10);
80
80
  if (big !== void 0) out.push(`intensity ${big} looks like a percentage: it is a multiplier (1 = full, 0.25 = a quarter); did you mean ${big / 100}?`);
81
- const kindNow = typeof raw.kind === "string" && chunkX62H3RBG_cjs.LIGHT_KINDS.includes(raw.kind) ? raw.kind : "point";
81
+ const kindNow = typeof raw.kind === "string" && chunkLALEBV63_cjs.LIGHT_KINDS.includes(raw.kind) ? raw.kind : "point";
82
82
  const has = (...keys) => keys.filter((k) => bagsOf(spec).some((b) => b[k] !== void 0));
83
83
  const falloffOn = raw.falloff === "smooth" || raw.falloff === "inverseSquare";
84
84
  if (kindNow === "ambient" && raw.castsShadows) out.push("an ambient light has no direction, so it makes no shadow: castsShadows is ignored (put it on a point, spot or parallel light)");
@@ -106,18 +106,18 @@ function lightSetProblems(layers) {
106
106
  out.push("there is no ambient light, so what no light reaches is black; add { type: 'light', kind: 'ambient', initial: { intensity: 0.25 } }");
107
107
  }
108
108
  const direct = lights.filter((l) => kindOf(l) !== "ambient");
109
- if (direct.length > chunkX62H3RBG_cjs.MAX_LIGHTS) {
110
- const dropped = direct.slice(chunkX62H3RBG_cjs.MAX_LIGHTS).map((l) => nameOf(l, layers.indexOf(l)));
111
- out.push(`${direct.length} lights, but at most ${chunkX62H3RBG_cjs.MAX_LIGHTS} are used (the first ${chunkX62H3RBG_cjs.MAX_LIGHTS}, in layer order); ${dropped.join(", ")} and later are dropped. Use fewer lights`);
109
+ if (direct.length > chunkLALEBV63_cjs.MAX_LIGHTS) {
110
+ const dropped = direct.slice(chunkLALEBV63_cjs.MAX_LIGHTS).map((l) => nameOf(l, layers.indexOf(l)));
111
+ out.push(`${direct.length} lights, but at most ${chunkLALEBV63_cjs.MAX_LIGHTS} are used (the first ${chunkLALEBV63_cjs.MAX_LIGHTS}, in layer order); ${dropped.join(", ")} and later are dropped. Use fewer lights`);
112
112
  }
113
113
  const lightsCast = lights.some((l) => kindOf(l) !== "ambient" && l.castsShadows);
114
114
  const casters = layers.filter((l) => l.type !== "light" && l.castsShadows && l.threeD);
115
115
  if (casters.length > 0 && !lightsCast) out.push(`${casters.length} layer${casters.length > 1 ? "s have" : " has"} castsShadows but no light has castsShadows: add castsShadows: true to the light that should make the shadows`);
116
116
  const hostsThree = layers.some((l) => l.type === "three" && l.followLights);
117
117
  if (lightsCast && casters.length === 0 && !hostsThree) out.push("a light has castsShadows but no layer has castsShadows: add castsShadows: true to the threeD layers that should cast a shadow");
118
- if (lightsCast && casters.length > chunkX62H3RBG_cjs.MAX_CASTERS) {
119
- const dropped = casters.slice(chunkX62H3RBG_cjs.MAX_CASTERS).map((c) => nameOf(c, layers.indexOf(c)));
120
- out.push(`${casters.length} layers cast shadows, but a layer receives shadows from at most ${chunkX62H3RBG_cjs.MAX_CASTERS} (the first ${chunkX62H3RBG_cjs.MAX_CASTERS}, in layer order); ${dropped.join(", ")} and later cast none`);
118
+ if (lightsCast && casters.length > chunkLALEBV63_cjs.MAX_CASTERS) {
119
+ const dropped = casters.slice(chunkLALEBV63_cjs.MAX_CASTERS).map((c) => nameOf(c, layers.indexOf(c)));
120
+ out.push(`${casters.length} layers cast shadows, but a layer receives shadows from at most ${chunkLALEBV63_cjs.MAX_CASTERS} (the first ${chunkLALEBV63_cjs.MAX_CASTERS}, in layer order); ${dropped.join(", ")} and later cast none`);
121
121
  }
122
122
  const softLights = lights.filter((l) => l.castsShadows && numbersOf(l, "shadowDiffusion").some((v) => v > 0));
123
123
  if (softLights.length >= SOFT_LIGHTS) {
@@ -302,9 +302,9 @@ var roundPixelsBit = {
302
302
  name: "round-pixels-bit",
303
303
  vertex: { header: `fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32> { return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0; }` }
304
304
  };
305
- var ML = chunkX62H3RBG_cjs.MAX_LIGHTS;
306
- var MC = chunkX62H3RBG_cjs.MAX_CASTERS;
307
- var TAPS = chunkX62H3RBG_cjs.SHADOW_TAPS;
305
+ var ML = chunkLALEBV63_cjs.MAX_LIGHTS;
306
+ var MC = chunkLALEBV63_cjs.MAX_CASTERS;
307
+ var TAPS = chunkLALEBV63_cjs.SHADOW_TAPS;
308
308
  var SHADOW_KEYS = Array.from({ length: MC }, (_, j) => `uShadow${j}`);
309
309
  var WGSL_SHADOW_DECLS = SHADOW_KEYS.map((k, j) => ` @group(2) @binding(${4 + j}) var ${k}: texture_2d<f32>;`).join("\n");
310
310
  var WGSL_SHADOW_PICK = SHADOW_KEYS.map((k, j) => (j === 0 ? "" : "else ") + `if (j == ${j}) { a = textureSampleLevel(${k}, uSampler, uv, 0.0).a; }`).join(" ");
@@ -664,8 +664,8 @@ function readLayerTransform(target) {
664
664
  x: c.x,
665
665
  y: c.y,
666
666
  z: c.z ?? 0,
667
- rotationX: (c.rotationX ?? 0) * chunkX62H3RBG_cjs.DEG,
668
- rotationY: (c.rotationY ?? 0) * chunkX62H3RBG_cjs.DEG,
667
+ rotationX: (c.rotationX ?? 0) * chunkLALEBV63_cjs.DEG,
668
+ rotationY: (c.rotationY ?? 0) * chunkLALEBV63_cjs.DEG,
669
669
  rotationZ: c.rotation,
670
670
  scaleX: c.scale.x,
671
671
  scaleY: c.scale.y,
@@ -730,20 +730,20 @@ var Layer3D = class {
730
730
  if (!(needW >= 1 && needH >= 1) || !Number.isFinite(bounds.x) || !Number.isFinite(bounds.y)) return this.hide();
731
731
  const size = this.sizeFor(needW, needH);
732
732
  const frame = { x: bounds.x - pad, y: bounds.y - pad, width: size.w, height: size.h };
733
- const projected = chunkX62H3RBG_cjs.projectLayer(readLayerTransform(target), frame, basis);
733
+ const projected = chunkLALEBV63_cjs.projectLayer(readLayerTransform(target), frame, basis);
734
734
  this.depth = projected.depth;
735
735
  {
736
736
  const lt = readLayerTransform(target);
737
- const o = chunkX62H3RBG_cjs.layerToWorld(lt, frame.x, frame.y);
738
- const pu = chunkX62H3RBG_cjs.layerToWorld(lt, frame.x + frame.width, frame.y);
739
- const pv = chunkX62H3RBG_cjs.layerToWorld(lt, frame.x, frame.y + frame.height);
737
+ const o = chunkLALEBV63_cjs.layerToWorld(lt, frame.x, frame.y);
738
+ const pu = chunkLALEBV63_cjs.layerToWorld(lt, frame.x + frame.width, frame.y);
739
+ const pv = chunkLALEBV63_cjs.layerToWorld(lt, frame.x, frame.y + frame.height);
740
740
  this.world = { o, u: { x: pu.x - o.x, y: pu.y - o.y, z: pu.z - o.z }, v: { x: pv.x - o.x, y: pv.y - o.y, z: pv.z - o.z } };
741
741
  }
742
742
  if (!projected.visible) {
743
743
  if (!this.warnedBehind) {
744
744
  this.warnedBehind = true;
745
745
  if (this.seq.spec.hideBehindCamera) return this.hide();
746
- if (projected.depth > chunkX62H3RBG_cjs.NEAR) {
746
+ if (projected.depth > chunkLALEBV63_cjs.NEAR) {
747
747
  console.warn(
748
748
  `pixi-effects: ${chunk3SAS3ZE5_cjs.describeLayer(this.seq.spec)}: part of it (a corner) reaches the camera plane (z = ${(target.z ?? 0).toFixed(0)}, rotationX ${(target.rotationX ?? 0).toFixed(0)}\xB0, rotationY ${(target.rotationY ?? 0).toFixed(0)}\xB0), and a layer is hidden whole when any corner is at or behind it. Tilt it less (rotationX / rotationY), make it smaller, or keep the camera further away from it (the default camera sits at z = (height/2)/tan(fov/2), about 989 for 720p at fov 40).`
749
749
  );
@@ -775,7 +775,7 @@ var Layer3D = class {
775
775
  */
776
776
  setBlur(radius) {
777
777
  const d = this.display;
778
- const r = radius > chunkX62H3RBG_cjs.MIN_BLUR ? Math.min(radius, chunkX62H3RBG_cjs.MAX_BLUR) : 0;
778
+ const r = radius > chunkLALEBV63_cjs.MIN_BLUR ? Math.min(radius, chunkLALEBV63_cjs.MAX_BLUR) : 0;
779
779
  this.blur = r;
780
780
  if (r === 0) {
781
781
  if (this.blurFilter) {
@@ -962,7 +962,7 @@ function lintSequence(spec, warn = defaultWarn) {
962
962
  function lintFocus(camera, siblings, warn = defaultWarn) {
963
963
  if (camera.type !== "camera") return;
964
964
  const who = chunk3SAS3ZE5_cjs.describeLayer(camera);
965
- for (const p of chunkX62H3RBG_cjs.focusProblems(camera, siblings)) {
965
+ for (const p of chunkLALEBV63_cjs.focusProblems(camera, siblings)) {
966
966
  if (p.kind === "missing") {
967
967
  warn(`pixi-effects: ${who}: focus: no layer named "${p.name}"${p.hint ? `; did you mean "${p.hint}"?` : ""} (the z = 0 plane is used). Write a threeD layer's name or a z number`);
968
968
  } else if (p.kind === "not-threeD") {
@@ -1252,7 +1252,7 @@ var MatteSet = class {
1252
1252
  };
1253
1253
 
1254
1254
  // src/sequences/Composition.ts
1255
- var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1255
+ var CompositionSequence = class extends chunkLALEBV63_cjs.Sequence {
1256
1256
  _innerContainer = null;
1257
1257
  _compositionShape = null;
1258
1258
  _children = [];
@@ -1319,11 +1319,11 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1319
1319
  this.intrinsicWidth = width;
1320
1320
  this.intrinsicHeight = height;
1321
1321
  this._innerContainer = inner;
1322
- const base = chunkX62H3RBG_cjs.timeRemapOf(this.spec);
1323
- const span = base ? chunkX62H3RBG_cjs.contentLength(base, this.duration) : this.duration;
1324
- this._remap = base ? chunkX62H3RBG_cjs.remapOf(this.spec, "time", span) : null;
1322
+ const base = chunkLALEBV63_cjs.timeRemapOf(this.spec);
1323
+ const span = base ? chunkLALEBV63_cjs.contentLength(base, this.duration) : this.duration;
1324
+ this._remap = base ? chunkLALEBV63_cjs.remapOf(this.spec, "time", span) : null;
1325
1325
  this._contentSpan = span;
1326
- this._compositionShape = { width, height, duration: span, spaceAt: (t) => this._spaceAt(t) };
1326
+ this._compositionShape = { width, height, duration: span, spaceAt: (t) => this._spaceAt(t), findLayer: (name) => this._children.find((c) => c.spec.name === name) ?? null, layerNames: () => this._children.map((c) => c.spec.name).filter((n) => !!n) };
1327
1327
  const lateKeyframes = [];
1328
1328
  for (const s of this.spec.sequences ?? []) {
1329
1329
  lintSequence(s);
@@ -1338,10 +1338,12 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1338
1338
  if (crowd >= chunkJN7JHNZR_cjs.MANY_ADVANCED) {
1339
1339
  console.warn(`pixi-effects: ${chunk3SAS3ZE5_cjs.describeLayer(this.spec)}: ${crowd} layers with an advanced blendMode are on screen at once (a composition with one counts each layer inside it, since its children blend one by one); each is a full-frame pass (about 2 ms on WebGL). Put fewer layers in the blend (or draw the glow as one layer), or use add / screen / multiply`);
1340
1340
  }
1341
- this._children = await chunkX62H3RBG_cjs.buildSequenceTree(
1341
+ this._children = [];
1342
+ await chunkLALEBV63_cjs.buildSequenceTree(
1342
1343
  this.spec.sequences ?? [],
1343
1344
  this._compositionShape,
1344
- this.root
1345
+ this.root,
1346
+ this._children
1345
1347
  );
1346
1348
  this._resolveParents();
1347
1349
  const matteNames = /* @__PURE__ */ new Set();
@@ -1349,22 +1351,22 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1349
1351
  if (matteNames.size > 0) {
1350
1352
  this._mattes = new MatteSet(inner, width, height);
1351
1353
  for (const name of matteNames) {
1352
- const source = this._children.find((c) => c.spec.name === name && !(c instanceof chunkX62H3RBG_cjs.CameraSequence));
1354
+ const source = this._children.find((c) => c.spec.name === name && !(c instanceof chunkLALEBV63_cjs.CameraSequence));
1353
1355
  if (!source || !source.target || !canBeMatte(source.spec)) continue;
1354
1356
  const chain = [];
1355
1357
  for (let p = this._parentOf.get(source); p; p = this._parentOf.get(p)) chain.push(p);
1356
1358
  this._mattes.add(name, source, chain);
1357
1359
  }
1358
1360
  }
1359
- if (this._children.some((c) => c instanceof chunkX62H3RBG_cjs.LightSequence)) {
1361
+ if (this._children.some((c) => c instanceof chunkLALEBV63_cjs.LightSequence)) {
1360
1362
  for (const message of lightSetProblems(this.spec.sequences ?? [])) console.warn(`pixi-effects: ${chunk3SAS3ZE5_cjs.describeLayer(this.spec)}: ${message}`);
1361
1363
  }
1362
1364
  const layerNames = new Set(this._children.map((c) => c.spec.name).filter((n) => !!n));
1363
1365
  for (const cam of this._children) {
1364
- if (!(cam instanceof chunkX62H3RBG_cjs.CameraSequence)) continue;
1366
+ if (!(cam instanceof chunkLALEBV63_cjs.CameraSequence)) continue;
1365
1367
  cam.resolveFocusNames((name) => {
1366
1368
  const hit = this._children.find((c) => c.spec.name === name && c.spec.threeD);
1367
- return hit ? chunkX62H3RBG_cjs.layerInitialZ(hit.spec, hit.scope()) : void 0;
1369
+ return hit ? chunkLALEBV63_cjs.layerInitialZ(hit.spec, hit.scope()) : void 0;
1368
1370
  }, layerNames);
1369
1371
  }
1370
1372
  const blendSaid = /* @__PURE__ */ new Map();
@@ -1374,11 +1376,11 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1374
1376
  else blendSaid.set(message, { spec, n: 1 });
1375
1377
  };
1376
1378
  for (const child of this._children) {
1377
- if (child instanceof chunkX62H3RBG_cjs.CameraSequence) {
1379
+ if (child instanceof chunkLALEBV63_cjs.CameraSequence) {
1378
1380
  this._cameras.push(child);
1379
1381
  continue;
1380
1382
  }
1381
- if (child instanceof chunkX62H3RBG_cjs.LightSequence) {
1383
+ if (child instanceof chunkLALEBV63_cjs.LightSequence) {
1382
1384
  this._lights.push(child);
1383
1385
  continue;
1384
1386
  }
@@ -1412,7 +1414,7 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1412
1414
  if (maskSrc.kind === "inline") {
1413
1415
  const maskSpec = maskSrc.spec;
1414
1416
  const lifetime = maskSpec.at === void 0 ? { at: child.at, duration: maskSpec.duration ?? child.duration } : {};
1415
- const built = await chunkX62H3RBG_cjs.buildSequenceTree([{ ...maskSpec, ...lifetime }], this._compositionShape, this.root);
1417
+ const built = await chunkLALEBV63_cjs.buildSequenceTree([{ ...maskSpec, ...lifetime }], this._compositionShape, this.root);
1416
1418
  const maskSeq = built[0];
1417
1419
  if (maskSeq?.target) {
1418
1420
  child.maskSequence = maskSeq;
@@ -1468,9 +1470,9 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1468
1470
  const remap = this._remap;
1469
1471
  const childOffset = remap ? 0 : offset + this.at;
1470
1472
  this._childBase = childOffset;
1471
- const target = remap ? chunkX62H3RBG_cjs.createTimeline({ paused: true, defaults: { ease: "none" } }) : timeline;
1473
+ const target = remap ? chunkLALEBV63_cjs.createTimeline({ paused: true, defaults: { ease: "none" } }) : timeline;
1472
1474
  for (const child of this._children) {
1473
- const own = chunkX62H3RBG_cjs.createTimeline({ defaults: { ease: "none" } });
1475
+ const own = chunkLALEBV63_cjs.createTimeline({ defaults: { ease: "none" } });
1474
1476
  child.bindTimeline(own, childOffset);
1475
1477
  child.maskSequence?.bindTimeline(own, childOffset);
1476
1478
  target.add(own, 0);
@@ -1500,8 +1502,8 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1500
1502
  this._clock = clock;
1501
1503
  const scope = this.scope();
1502
1504
  if (remap.start !== void 0 && remap.timeKfs.length === 0) clock.time = remap.start;
1503
- chunkX62H3RBG_cjs.bindClock(timeline, clock, "time", remap, this.duration, offset + this.at, scope);
1504
- this._warnUnreachable(chunkX62H3RBG_cjs.clockTable(remap, "time", this.duration, offset + this.at, scope, offset + this.at + this.duration), offset + this.at, offset + this.at + this.duration);
1505
+ chunkLALEBV63_cjs.bindClock(timeline, clock, "time", remap, this.duration, offset + this.at, scope);
1506
+ this._warnUnreachable(chunkLALEBV63_cjs.clockTable(remap, "time", this.duration, offset + this.at, scope, offset + this.at + this.duration), offset + this.at, offset + this.at + this.duration);
1505
1507
  }
1506
1508
  /**
1507
1509
  * A child the clock never dwells in is never visible: say so. Its `at` is in THIS composition's local time, so the usual mistake is
@@ -1539,7 +1541,7 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1539
1541
  for (let p = this._parentOf.get(seq); p; p = this._parentOf.get(p)) out.push(p);
1540
1542
  return out;
1541
1543
  };
1542
- return [...this._visual.map((v) => v.seq), ...this._nested].filter((seq) => !(seq instanceof chunkX62H3RBG_cjs.NullSequence)).map((seq) => {
1544
+ return [...this._visual.map((v) => v.seq), ...this._nested].filter((seq) => !(seq instanceof chunkLALEBV63_cjs.NullSequence)).map((seq) => {
1543
1545
  const layer = this._visual.find((v) => v.seq === seq)?.layer ?? null;
1544
1546
  return {
1545
1547
  seq,
@@ -1549,24 +1551,24 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1549
1551
  depthBlur: layer?.blur ?? 0,
1550
1552
  quad: layer && layer.display.visible ? layer.corners : null,
1551
1553
  // how lit it is (threeD layers that receive the lights of the last frame only); computed here, not per frame
1552
- light: layer && this._lighting && layer.world && layer.spec.lit !== false ? chunkX62H3RBG_cjs.lightLevel(layer.world, this._lighting.cam, this._lighting.states) : void 0
1554
+ light: layer && this._lighting && layer.world && layer.spec.lit !== false ? chunkLALEBV63_cjs.lightLevel(layer.world, this._lighting.cam, this._lighting.states) : void 0
1553
1555
  };
1554
1556
  });
1555
1557
  }
1556
1558
  /** Match every `parent: 'name'` to a null layer; anything that cannot work is said out loud and drawn unparented. */
1557
1559
  _resolveParents() {
1558
- const nulls = this._children.filter((c) => c instanceof chunkX62H3RBG_cjs.NullSequence);
1560
+ const nulls = this._children.filter((c) => c instanceof chunkLALEBV63_cjs.NullSequence);
1559
1561
  const nullNames = nulls.map((n) => n.spec.name).filter((n) => !!n);
1560
1562
  const warned = /* @__PURE__ */ new Set();
1561
1563
  for (const child of this._children) {
1562
1564
  const want = child.spec.parent;
1563
1565
  if (want === void 0) continue;
1564
1566
  const who = chunk3SAS3ZE5_cjs.describeLayer(child.spec);
1565
- if (child instanceof chunkX62H3RBG_cjs.CameraSequence) {
1567
+ if (child instanceof chunkLALEBV63_cjs.CameraSequence) {
1566
1568
  console.warn(`pixi-effects: ${who}: a camera cannot have a parent; ignored`);
1567
1569
  continue;
1568
1570
  }
1569
- if (child instanceof chunkX62H3RBG_cjs.LightSequence) {
1571
+ if (child instanceof chunkLALEBV63_cjs.LightSequence) {
1570
1572
  console.warn(`pixi-effects: ${who}: a light cannot have a parent (parent "${want}" ignored: move the light with its own x / y / z keyframes)`);
1571
1573
  continue;
1572
1574
  }
@@ -1580,7 +1582,7 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1580
1582
  console.warn(`pixi-effects: ${who}: parent "${want}": no layer with that name${hint ? `; did you mean "${hint}"?` : ""} (the layer is drawn without a parent)`);
1581
1583
  continue;
1582
1584
  }
1583
- const holder = same.find((c) => c instanceof chunkX62H3RBG_cjs.NullSequence);
1585
+ const holder = same.find((c) => c instanceof chunkLALEBV63_cjs.NullSequence);
1584
1586
  if (!holder) {
1585
1587
  console.warn(`pixi-effects: ${who}: parent "${want}" is a ${same[0].spec.type} layer; only { type: 'null' } layers can be parents (the layer is drawn without a parent)`);
1586
1588
  continue;
@@ -1625,8 +1627,8 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1625
1627
  childT,
1626
1628
  compEnd
1627
1629
  );
1628
- const cam = active ? active.cam.state() : chunkX62H3RBG_cjs.homeCamera(width, height);
1629
- const basis = chunkX62H3RBG_cjs.cameraBasis(cam, width, height);
1630
+ const cam = active ? active.cam.state() : chunkLALEBV63_cjs.homeCamera(width, height);
1631
+ const basis = chunkLALEBV63_cjs.cameraBasis(cam, width, height);
1630
1632
  for (const layer of this._layers3d) layer.update(host, basis);
1631
1633
  this._applyLighting(childT, compEnd, basis, active?.cam ?? null);
1632
1634
  this._applyDepthOfField(cam, basis);
@@ -1649,7 +1651,7 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1649
1651
  const { width, height } = this._compositionShape;
1650
1652
  const compEnd = this._childBase + (this.duration ?? 0);
1651
1653
  const active = pickActiveCamera(this._cameras.map((cam) => ({ cam, ...cam.window() })), t, compEnd);
1652
- return { camera: active ? active.cam.state() : chunkX62H3RBG_cjs.homeCamera(width, height), lights: this._liveLights(t, compEnd).map((l) => l.state()), fog: active?.cam.fogState() ?? null };
1654
+ return { camera: active ? active.cam.state() : chunkLALEBV63_cjs.homeCamera(width, height), lights: this._liveLights(t, compEnd).map((l) => l.state()), fog: active?.cam.fogState() ?? null };
1653
1655
  }
1654
1656
  /**
1655
1657
  * Lights and fog: when the composition has a light layer or the camera writes fog, every threeD layer draws with the lit shader, fed with
@@ -1661,7 +1663,7 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1661
1663
  const fog = cam?.fogState() ?? null;
1662
1664
  if (this._lights.length === 0 && !this._cameras.some((c) => c.fog)) return;
1663
1665
  const states = this._liveLights(t, compEnd).map((l) => l.state());
1664
- const packed = states.length > 0 ? chunkX62H3RBG_cjs.packLights(states) : null;
1666
+ const packed = states.length > 0 ? chunkLALEBV63_cjs.packLights(states) : null;
1665
1667
  this._lighting = states.length > 0 ? { states, cam: { x: basis.cx, y: basis.cy, z: basis.cz } } : null;
1666
1668
  const shadowing = states.some((s) => s.castsShadows);
1667
1669
  const casters = shadowing ? this._layers3d.filter((l) => l.spec.castsShadows && l.display.visible && l.world && l.source) : [];
@@ -1670,7 +1672,7 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1670
1672
  const mat = l.setLit(true);
1671
1673
  if (!mat || !l.world) continue;
1672
1674
  const lit = l.spec.lit !== false;
1673
- const mine = lit ? casters.filter((c) => c !== l).slice(0, chunkX62H3RBG_cjs.MAX_CASTERS).map((c) => ({ frame: c.world, source: c.source })) : [];
1675
+ const mine = lit ? casters.filter((c) => c !== l).slice(0, chunkLALEBV63_cjs.MAX_CASTERS).map((c) => ({ frame: c.world, source: c.source })) : [];
1674
1676
  mat.update(l.world, camInfo, lit ? packed : null, fog, mine);
1675
1677
  }
1676
1678
  }
@@ -1681,8 +1683,8 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1681
1683
  for (const l of this._layers3d) l.setBlur(0);
1682
1684
  return;
1683
1685
  }
1684
- const focusDepth = chunkX62H3RBG_cjs.projectPoint(basis, { x: cam.lookAtX, y: cam.lookAtY, z: cam.focus ?? 0 }).depth;
1685
- if (!(focusDepth > chunkX62H3RBG_cjs.NEAR)) {
1686
+ const focusDepth = chunkLALEBV63_cjs.projectPoint(basis, { x: cam.lookAtX, y: cam.lookAtY, z: cam.focus ?? 0 }).depth;
1687
+ if (!(focusDepth > chunkLALEBV63_cjs.NEAR)) {
1686
1688
  if (!this._dofSaid.behind) {
1687
1689
  this._dofSaid.behind = true;
1688
1690
  console.warn(`pixi-effects: ${chunk3SAS3ZE5_cjs.describeLayer(this.spec)}: the camera's focus (z = ${(cam.focus ?? 0).toFixed(0)}) is at or behind the camera, so nothing is blurred. Put focus in front of the camera (a z below the camera's z)`);
@@ -1692,12 +1694,12 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1692
1694
  }
1693
1695
  let blurred = 0;
1694
1696
  for (const l of this._layers3d) {
1695
- l.setBlur(l.display.visible ? chunkX62H3RBG_cjs.blurRadius(aperture, basis.focal, l.depth, focusDepth) : 0);
1697
+ l.setBlur(l.display.visible ? chunkLALEBV63_cjs.blurRadius(aperture, basis.focal, l.depth, focusDepth) : 0);
1696
1698
  if (l.blur > 0) blurred++;
1697
1699
  }
1698
- if (blurred >= chunkX62H3RBG_cjs.MANY_BLURRED && !this._dofSaid.many) {
1700
+ if (blurred >= chunkLALEBV63_cjs.MANY_BLURRED && !this._dofSaid.many) {
1699
1701
  this._dofSaid.many = true;
1700
- console.warn(`pixi-effects: ${chunk3SAS3ZE5_cjs.describeLayer(this.spec)}: ${blurred} layers are blurred by depth of field at once (it warns from ${chunkX62H3RBG_cjs.MANY_BLURRED}); each costs a filter pass per frame (WebGPU more). Merge the far layers or lower aperture`);
1702
+ console.warn(`pixi-effects: ${chunk3SAS3ZE5_cjs.describeLayer(this.spec)}: ${blurred} layers are blurred by depth of field at once (it warns from ${chunkLALEBV63_cjs.MANY_BLURRED}); each costs a filter pass per frame (WebGPU more). Merge the far layers or lower aperture`);
1701
1703
  }
1702
1704
  }
1703
1705
  collectAudio(out, baseTime) {
@@ -1711,7 +1713,7 @@ var CompositionSequence = class extends chunkX62H3RBG_cjs.Sequence {
1711
1713
  const inner = [];
1712
1714
  for (const child of this._children) child.collectAudio(inner, 0);
1713
1715
  const lo = baseTime + this.at, hi = lo + this.duration;
1714
- const table = chunkX62H3RBG_cjs.clockTable(remap, "time", this.duration, lo, this.scope(), hi);
1716
+ const table = chunkLALEBV63_cjs.clockTable(remap, "time", this.duration, lo, this.scope(), hi);
1715
1717
  for (const d of inner) {
1716
1718
  const prev = d.warp;
1717
1719
  out.push({ ...d, warp: (t) => t < lo || t > hi ? NaN : prev ? prev(table.at(t)) : table.at(t) });
@@ -1741,5 +1743,5 @@ function frameOf(child) {
1741
1743
 
1742
1744
  exports.CompositionSequence = CompositionSequence;
1743
1745
  exports.maskSourceOf = maskSourceOf;
1744
- //# sourceMappingURL=chunk-3HZV3UHU.cjs.map
1745
- //# sourceMappingURL=chunk-3HZV3UHU.cjs.map
1746
+ //# sourceMappingURL=chunk-DKCMJILW.cjs.map
1747
+ //# sourceMappingURL=chunk-DKCMJILW.cjs.map